::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:9999}.theme-transitioning::view-transition-new(root){animation:ripple-reveal .6s cubic-bezier(.4,0,.2,1)}.theme-transitioning::view-transition-old(root){animation:none}@keyframes ripple-reveal{0%{clip-path:circle(0% at var(--ripple-x, 95%) var(--ripple-y, 5%))}to{clip-path:circle(150% at var(--ripple-x, 95%) var(--ripple-y, 5%))}}body.theme-transitioning-fallback *{transition:background-color .4s ease,color .4s ease,border-color .4s ease!important}header[data-astro-cid-3ef6ksr2]{position:sticky;top:0;z-index:100;background:var(--color-background);padding-bottom:8px}body[data-theme=dark] header[data-astro-cid-3ef6ksr2]{background:var(--color-background-dark)}.header-top[data-astro-cid-3ef6ksr2]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.title[data-astro-cid-3ef6ksr2]{text-decoration:none}.name[data-astro-cid-3ef6ksr2]{margin:0;font-size:clamp(1.4rem,4vw,1.8rem)}.theme-toggle[data-astro-cid-3ef6ksr2]{background:transparent;border:none;border-radius:8px;padding:8px 12px;cursor:pointer;color:var(--color-primary-text);transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:200}.theme-toggle[data-astro-cid-3ef6ksr2]:hover{background-color:var(--color-link);color:#fff}.theme-toggle[data-astro-cid-3ef6ksr2]:hover svg[data-astro-cid-3ef6ksr2]{stroke:#fff}.theme-toggle[data-astro-cid-3ef6ksr2]:focus{outline:2px solid var(--color-link);outline-offset:2px}.theme-icon[data-astro-cid-3ef6ksr2]{display:block;line-height:1}.theme-icon[data-astro-cid-3ef6ksr2] svg[data-astro-cid-3ef6ksr2]{display:block;transition:transform .4s cubic-bezier(.68,-.55,.265,1.55)}body[data-theme=dark] .theme-toggle[data-astro-cid-3ef6ksr2]{color:var(--color-text-dark)}body[data-theme=dark] .theme-toggle[data-astro-cid-3ef6ksr2]:hover{background-color:var(--color-link-dark)}nav[data-astro-cid-3ef6ksr2]{display:flex;justify-content:flex-start}.nav-items[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{padding:6px 12px;border-radius:6px;text-decoration:none;color:var(--color-primary-text);font-size:.95rem;transition:all .2s ease}.nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover,.nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2].active{background:color-mix(in srgb,var(--color-link) 15%,transparent);color:var(--color-link)}body[data-theme=dark] .nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{color:var(--color-text-dark)}body[data-theme=dark] .nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover,body[data-theme=dark] .nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2].active{background:color-mix(in srgb,var(--color-link-dark) 15%,transparent);color:var(--color-link-dark)}.nav-coming-soon[data-astro-cid-3ef6ksr2]{display:inline-flex;align-items:center;gap:4px;opacity:.6;cursor:not-allowed;padding:6px 12px;font-size:.95rem}.coming-soon-badge[data-astro-cid-3ef6ksr2]{font-size:.6rem;padding:2px 5px;border-radius:4px;background:color-mix(in srgb,var(--color-link) 20%,transparent);color:var(--color-link);font-weight:600;text-transform:uppercase;letter-spacing:.5px}body[data-theme=dark] .coming-soon-badge[data-astro-cid-3ef6ksr2]{background:color-mix(in srgb,var(--color-link-dark) 20%,transparent);color:var(--color-link-dark)}@media(max-width:480px){.nav-items[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2],.nav-coming-soon[data-astro-cid-3ef6ksr2]{padding:5px 8px;font-size:.85rem}.coming-soon-badge[data-astro-cid-3ef6ksr2]{font-size:.55rem;padding:1px 4px}}.footer-content[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;align-items:center;gap:16px}.copyright[data-astro-cid-sz7xmlte]{margin:0;opacity:.8;font-size:.9rem}.social-links[data-astro-cid-sz7xmlte]{display:flex;gap:8px;align-items:center;justify-content:center}.social-icon[data-astro-cid-sz7xmlte]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:var(--color-primary-text);background:color-mix(in srgb,var(--color-primary-text) 8%,transparent);border:1px solid color-mix(in srgb,var(--color-primary-text) 15%,transparent);transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.social-icon[data-astro-cid-sz7xmlte]:before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--color-link);opacity:0;transform:scale(.85);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:0}.social-icon[data-astro-cid-sz7xmlte] svg[data-astro-cid-sz7xmlte]{position:relative;z-index:1;display:block;transition:transform .3s cubic-bezier(.4,0,.2,1)}.social-icon[data-astro-cid-sz7xmlte]:hover{color:#fff;transform:translateY(-2px);border-color:transparent;background:transparent}.social-icon[data-astro-cid-sz7xmlte]:hover:before{opacity:1;transform:scale(1)}.social-icon[data-astro-cid-sz7xmlte]:hover svg[data-astro-cid-sz7xmlte]{transform:scale(1.1)}body[data-theme=dark] .social-icon[data-astro-cid-sz7xmlte]:before{background:var(--color-link-dark)}:root{--font-primary: "IBM Plex Sans", Verdana, sans-serif;--color-primary-text: #444;--color-background: #fff;--color-headline: #222;--color-link: #3273dc;--color-link-hover: #3273dc;--color-selection: #FDD9B5;--color-selection-text: #333;--color-tag-bg: #FFE4C7;--color-tag-border: #FFCBA4;--color-tag-text: #D35400;--color-tag-hover: #FFD9B0;--color-background-dark: #333;--color-text-dark: #ddd;--color-headline-dark: #eee;--color-link-dark: #8cc2dd;--color-code-bg-dark: #777;--color-blockquote-dark: #ccc;--color-input-bg-dark: #252525;--color-helptext-dark: #aaa;--color-blogpost-visited: #8b6fcb}body{font-family:var(--font-primary);font-size:16px;margin:auto;padding:20px;max-width:1200px;text-align:left;background-color:var(--color-background);word-wrap:break-word;overflow-wrap:break-word;line-height:1.6;color:var(--color-primary-text)}h1,h2,h3,h4,h5,h6,strong,b{color:var(--color-headline);font-weight:700;line-height:2.25rem}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-link-hover)}::selection{background-color:var(--color-selection);color:var(--color-selection-text)}::-moz-selection{background-color:var(--color-selection);color:var(--color-selection-text)}.title{text-decoration:none;border:0}.title span{font-weight:400}nav{display:flex;justify-content:space-between;align-items:center}nav a{margin-right:10px}textarea{width:100%;font-size:1rem}input{font-size:1rem}main,article{line-height:1.6}table{width:100%}img{max-width:100%}code{background-color:#f4f4f4;color:#333;padding:2px 5px;border-radius:4px}pre code{font-family:IBM Plex Mono,monospace;display:block;padding:20px;white-space:pre-wrap;font-size:.875rem;overflow-x:auto}pre[class^=language-],code[class^=language-]{background-color:inherit;color:inherit;border-radius:inherit}blockquote{border-left:1px solid #999;color:#222;padding-left:20px;font-style:italic}footer{padding:25px;text-align:center}.home-container{display:flex;align-items:start}.home-image{flex:1;max-width:280px;margin-left:20px;display:flex;align-items:center;justify-content:center}.img-rounded{aspect-ratio:1/1;width:220px;height:220px;border-radius:50%;object-fit:cover;border:5px solid var(--color-background);box-shadow:0 8px 24px #0000001f,0 4px 8px #00000014;transition:transform .4s cubic-bezier(.175,.885,.32,1.275),box-shadow .4s ease,border-color .4s ease}.img-rounded:hover{transform:scale(1.08);box-shadow:0 12px 32px #0000002e,0 6px 12px #0000001f;border-color:var(--color-link)}body[data-theme=dark] .img-rounded{border-color:var(--color-background-dark);box-shadow:0 8px 24px #00000040,0 4px 8px #0000002e}body[data-theme=dark] .img-rounded:hover{box-shadow:0 12px 32px #00000059,0 6px 12px #00000040;border-color:var(--color-link-dark)}.home-content{flex:2}.admonition{border-left:4px solid #eee;padding:1em;margin:2em 0;background-color:#f7f7f7}.admonition .admonition-header{display:block;font-weight:700;margin-bottom:.5em}.admonition.note{background-color:#e7f2fa;border-color:#55a9d6}.admonition.warning{background-color:#fff2e7;border-color:#d65f5f}.admonition.info{background-color:#e7f3fa;border-color:#5fa9d6}.admonition.tip{background-color:#f2fae7;border-color:#5fd64a}ul.blog-posts{list-style-type:none;padding:unset}ul.blog-posts li{display:flex;margin-bottom:1rem}ul.blog-posts li span{flex:0 0 130px}ul.blog-posts li a:visited{color:var(--color-blogpost-visited)}.zola-anchor{font-size:1.25rem;margin-right:.75rem;text-decoration:none;border-bottom-color:#0000;cursor:pointer}.post-date,.reading-time{font-size:.85rem}.meta{display:flex;justify-content:space-between;align-items:center;border-bottom:1px dashed #6b7280}.tags>a{background-color:var(--color-tag-bg);color:var(--color-tag-text);padding:5px 12px;border-radius:12px;border:1px solid var(--color-tag-border);text-decoration:none;margin-right:8px;font-size:.85rem;display:inline-block;vertical-align:middle}.tags>a:hover{opacity:.85;transform:translateY(-2px);transition:opacity .2s ease,transform .2s ease}.tags>a[href*=mobile],.tags>a[href*=flutter],.tags>a[href*=app]{background:#e8f4f8;color:#1a1a1a;border-color:#d6d6f8}.tags>a[href*=iot],.tags>a[href*=hardware],.tags>a[href*=firebase]{background:#fef3c7;color:#1a1a1a;border-color:#fde8b8}.tags>a[href*=frontend],.tags>a[href*=web],.tags>a[href*=html],.tags>a[href*=css],.tags>a[href*=javascript]{background:#fee2e2;color:#1a1a1a;border-color:#fdd9d9}.tags>a[href*=game],.tags>a[href*=learning]{background:#fce7f3;color:#1a1a1a;border-color:#f8d9e0}.tags>a[href*=college],.tags>a[href*=supabase],.tags>a[href*=database]{background:#dbeafe;color:#1a1a1a;border-color:#c8dcf8}.tags>a{background:#e5e7eb;color:#1a1a1a;border-color:#d4d8e4}.name{font-size:clamp(1.8rem,5vw,2.4rem);margin-bottom:1rem}figure{display:inline-block;background-color:#f5f5f5;border-radius:5px;padding:10px;box-shadow:0 4px 8px #0000001a;margin:15px auto;max-width:100%;transition:transform .3s ease;overflow:hidden}figure img{display:block;width:100%;height:auto;border-radius:4px;transition:opacity .3s ease}figure img:hover{opacity:.8}figcaption{text-align:center;padding-top:8px;font-style:italic;font-size:.9em;color:#555}figure:hover{transform:scale(1.02)}.youtube-embed iframe{display:block;margin:0 auto;max-width:100%}.social-links{margin:10px}.social-icon{margin-right:15px}.social-icon:last-child{margin-right:0}.projects-section{display:flex;flex-direction:column;align-items:center;width:100%}.projects-list{padding:0;margin:0;width:100%;list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px}.proj{border:1px solid #eee;padding:1.5rem;position:relative;background-color:#f9f9f9;border-radius:12px;transition:background-color .2s ease,box-shadow .2s ease,transform .2s ease;overflow:hidden;display:flex;flex-direction:column;min-height:200px}.proj .name{font-weight:700;font-size:1.2rem;margin-bottom:.5rem}.proj .desc{margin-bottom:1rem}.proj .links a{color:var(--color-link);text-decoration:none;margin-left:.5rem;transition:color .3s ease}.proj .links a:hover{color:var(--color-link-hover);text-decoration:underline}.proj .links{margin-top:auto;padding-top:1rem;display:flex;gap:12px;justify-content:flex-end}.proj:hover{background-color:#f5f5f5;box-shadow:0 4px 12px #0000001a}.section-header{border-bottom:1px dashed #6b7280}.theme-toggle{background:none;border:none;cursor:pointer;padding:0;margin:0;display:flex;align-items:center;justify-content:center;color:#002855}.theme-toggle svg{width:24px;height:24px;display:block}body[data-theme=dark] .theme-toggle{color:gold}.theme-transition{transition:background-color .3s ease,color .3s ease}body[data-theme=dark]{background-color:var(--color-background-dark);color:var(--color-text-dark)}body[data-theme=dark] h1,body[data-theme=dark] h2,body[data-theme=dark] h3,body[data-theme=dark] h4,body[data-theme=dark] h5,body[data-theme=dark] h6,body[data-theme=dark] strong,body[data-theme=dark] b{color:var(--color-headline-dark)}body[data-theme=dark] a{color:var(--color-link-dark)}body[data-theme=dark] .tags>a{color:var(--color-tag-text)}body[data-theme=dark] code{color:var(--color-text-dark);background-color:var(--color-code-bg-dark)}body[data-theme=dark] code[class^=language-]{background-color:inherit}body[data-theme=dark] blockquote{color:var(--color-blockquote-dark)}body[data-theme=dark] textarea,body[data-theme=dark] input{background-color:var(--color-input-bg-dark);color:var(--color-text-dark)}body[data-theme=dark] .helptext{color:var(--color-helptext-dark)}body[data-theme=dark] .admonition{border-left:4px solid #777;background-color:#444;color:var(--color-text-dark)}body[data-theme=dark] .admonition .admonition-header{color:var(--color-headline-dark)}body[data-theme=dark] .admonition.note{background-color:#368;border-color:#48a}body[data-theme=dark] .admonition.warning{background-color:#843;border-color:#a65}body[data-theme=dark] .admonition.info{background-color:#356;border-color:#48a}body[data-theme=dark] .admonition.tip{background-color:#384;border-color:#5a7}body[data-theme=dark] .proj{border:1px solid #777;background-color:#444;color:var(--color-text-dark)}body[data-theme=dark] .proj:hover{background-color:#555;box-shadow:0 4px 12px #00000040}body[data-theme=dark] .proj .name{color:var(--color-headline-dark)}body[data-theme=dark] .proj .desc{color:var(--color-helptext-dark)}body[data-theme=dark] .proj .links a{color:var(--color-link-dark)}body[data-theme=dark] .proj .links a:hover{color:#a6d3ea}@media screen and (max-width:768px){body{font-size:17px;padding:15px}.name{font-size:2rem}figure,img{margin:10px auto}nav a{margin-right:8px;font-size:.95rem}.tags>a{padding:4px 10px;font-size:.8rem}ul.blog-posts li{flex-direction:column;align-items:start}ul.blog-posts li span{flex:none;margin-bottom:.5rem}.home-container{flex-direction:column;align-items:center;padding:10px}.home-image{margin-left:0;margin-bottom:20px;max-width:100%}.home-image img{max-width:200px;display:block;margin:0 auto}}@media screen and (max-width:480px){.nav-items a{margin-right:6px;font-size:.85rem}.theme-toggle{margin-left:5px}.proj .links{position:static;text-align:right}.proj{padding:.8rem}.proj .links a{margin-left:.4rem}}.tech-stack-icons{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tech-icon{width:24px;height:24px;transition:transform .2s ease}.tech-icon:hover{transform:scale(1.2)}.youtube-section{margin:2rem 0}.youtube-list{list-style:none;padding:0;margin:0}.youtube-card{border:1px solid #eee;padding:1rem;margin-bottom:1rem;display:flex;gap:1rem;background-color:#f9f9f9;transition:background-color .2s ease}.youtube-card:hover{background-color:#f5f5f5}.youtube-thumbnail{flex:0 0 150px}.youtube-thumbnail img{width:100%;border-radius:8px;object-fit:cover}.youtube-content{flex:1}.youtube-title{margin:0 0 .5rem;font-size:1.2rem}.youtube-title a{color:var(--color-link)}.youtube-title a:hover{text-decoration:underline}.youtube-category{display:inline-block;background-color:var(--color-tag-bg);color:var(--color-tag-text);padding:3px 8px;border-radius:12px;border:1px solid var(--color-tag-border);font-size:.75rem;margin-right:8px}.youtube-subscribers{display:inline-block;font-size:.75rem;color:#666}.youtube-description{margin:.5rem 0 0;color:#555}.featured-projects{margin-top:2rem}.featured-projects h2{margin-bottom:1rem}body[data-theme=dark] .youtube-card{border-color:#777;background-color:#444}body[data-theme=dark] .youtube-card:hover{background-color:#555}body[data-theme=dark] .youtube-description{color:var(--color-text-dark)}@media screen and (max-width:768px){.youtube-card{flex-direction:column}.youtube-thumbnail{flex:none;width:100%}}@media screen and (max-width:640px){.projects-list{grid-template-columns:1fr;gap:16px}}html{margin:0;padding:0}
