@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/fredoka-hebrew-wght-normal.DdnsCkLr.woff2)format("woff2-variations");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/fredoka-latin-ext-wght-normal.CYrqKuxd.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/fredoka-latin-wght-normal.DM6njrJ3.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/m-plus-rounded-1c-latin-400-normal.GF9lDfTs.woff2)format("woff2"),url(/_astro/m-plus-rounded-1c-latin-400-normal.cOmgXqvf.woff)format("woff")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/m-plus-rounded-1c-latin-500-normal.D4L1U0OF.woff2)format("woff2"),url(/_astro/m-plus-rounded-1c-latin-500-normal.udtNJXmd.woff)format("woff")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/m-plus-rounded-1c-latin-700-normal.BYs1YzuX.woff2)format("woff2"),url(/_astro/m-plus-rounded-1c-latin-700-normal.DpYetMpZ.woff)format("woff")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/m-plus-rounded-1c-latin-800-normal.941enk6N.woff2)format("woff2"),url(/_astro/m-plus-rounded-1c-latin-800-normal.B5F1WBCU.woff)format("woff")}:root{color-scheme:light;--page:#fbf8ff;--footer:#3a2f55;--on-footer:#f7f2ff;--surface:#fff;--surface-soft:#f7f4ff;--ink:#3a2f55;--muted:#5e5477;--faint:#ece6f7;--line:#d9d0ee;--action:#c8336c;--action-deep:#a82558;--action-soft:#ffe1ec;--on-action:#fff;--focus:#7a5cff;--peach:#ffe0cc;--peach-ink:#a4461d;--butter:#fff0b3;--butter-ink:#85590a;--peri:#d6deff;--peri-ink:#3f49b8;--lilac:#e8dcff;--lilac-ink:#6a3fc0;--blush:#ffdbe7;--blush-ink:#b0325f;--mint:#c8f0e0;--mint-ink:#1d7559;--sky:#d4efff;--sky-ink:#1f6a96;--aqua:#c6f1f4;--aqua-ink:#17707a;--cloud:#fff;--shadow-soft:0 12px 32px -14px #4a347852, 0 2px 6px -2px #4a34781a;--shadow-pop:0 24px 48px -20px #4a34786b, 0 4px 12px -4px #4a347824;--radius-control:14px;--radius-field:16px;--radius-card:16px;--radius-window:26px;--spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--display:"Fredoka Variable", "Fredoka", "M PLUS Rounded 1c", system-ui, sans-serif;--body:"M PLUS Rounded 1c", "Fredoka Variable", system-ui, sans-serif;--paper:var(--surface-soft);--blue:var(--action);--blue-deep:var(--action-deep);--blue-soft:var(--action-soft);--on-blue:var(--on-action);--green:var(--mint-ink);--shadow:var(--shadow-soft);font-family:var(--body)}:root[data-theme=dark]{color-scheme:dark;--page:#1d1938;--footer:#120e26;--on-footer:#e9e2fb;--surface:#29234a;--surface-soft:#221d40;--ink:#f7f2ff;--muted:#cdc3e6;--faint:#352d5c;--line:#4d4380;--action:#ff8ab4;--action-deep:#ffb0cc;--action-soft:#4a2852;--on-action:#2a1030;--focus:#b7a4ff;--peach:#4d3442;--peach-ink:#ffc29f;--butter:#4a4032;--butter-ink:#ffe08a;--peri:#343a6e;--peri-ink:#b9c4ff;--lilac:#3d3070;--lilac-ink:#d6c2ff;--blush:#4c2a4f;--blush-ink:#ffadc9;--mint:#24484a;--mint-ink:#9aeccb;--sky:#24395f;--sky-ink:#a8dcff;--aqua:#34407a;--aqua-ink:#a9e8ff;--cloud:#5d4f8f;--shadow-soft:0 14px 34px -14px #050214b3, 0 2px 6px -2px #05021466;--shadow-pop:0 26px 52px -20px #050214cc, 0 4px 12px -4px #05021480}*{box-sizing:border-box}[hidden]{display:none!important}.visually-hidden{clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}html{scroll-behavior:smooth;background:var(--page);overflow-x:clip}body{min-height:100vh;color:var(--ink);font-kerning:normal;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;caret-color:var(--action);margin:0;font-size:16px;line-height:1.7;position:relative;overflow-x:clip}::selection{color:var(--ink);background:var(--blush)}a{color:inherit;text-decoration-thickness:1.5px;text-decoration-color:color-mix(in srgb, currentColor 40%, transparent);text-underline-offset:.28em}a:hover{text-decoration-color:currentColor}button,input,textarea{font:inherit}button{color:inherit}img{max-width:100%;display:block}svg{display:block}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:10px}html{scrollbar-color:var(--line) transparent}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line);background-clip:padding-box;border:3px solid #0000;border-radius:99px}.icon{flex:none;width:1.25em;height:1.25em}.icon .duo{fill:currentColor;fill-opacity:.22;stroke:none}@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root),::view-transition-old(site-header),::view-transition-new(site-header){animation:none}::view-transition-old(page-content){animation:.18s ease-in both content-out}::view-transition-new(page-content){animation:content-in .45s var(--ease-out) both}html.theme-changing::view-transition-old(root){z-index:1;animation:.6s both theme-out}html.theme-changing::view-transition-new(root){animation:theme-in .7s var(--ease-out) both;z-index:2}@keyframes content-out{to{opacity:0;transform:translateY(-6px)}}@keyframes content-in{0%{opacity:0;transform:translateY(14px)scale(.99)}}@keyframes theme-out{to{opacity:.4}}@keyframes theme-in{0%{clip-path:circle(0 at var(--toggle-x,90%) var(--toggle-y,40px))}to{clip-path:circle(150% at var(--toggle-x,90%) var(--toggle-y,40px))}}.skip-link{z-index:100;background:var(--ink);color:var(--surface);border-radius:99px;padding:.7rem 1.1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:none}.site-header,main,.footer-inner{width:min(1180px,100% - 40px);margin-inline:auto}.site-header{z-index:50;background:var(--surface);min-height:64px;box-shadow:var(--shadow-soft);view-transition-name:site-header;border-radius:20px;justify-content:space-between;align-items:center;gap:1rem;margin-top:.75rem;padding:.45rem .5rem .45rem .6rem;display:flex;position:sticky;top:.75rem}main{view-transition-name:page-content}html.theme-changing .site-header,html.theme-changing main{view-transition-name:none}.brand{font:600 1.18rem/1 var(--display);letter-spacing:-.01em;align-items:center;gap:.6rem;padding-right:.4rem;text-decoration:none;display:inline-flex}.brand-mark{width:40px;height:40px;color:var(--surface);background:var(--ink);font:700 1.15rem/1 var(--display);transition:transform .35s var(--spring);border-radius:13px;place-items:center;display:grid}.brand:hover .brand-mark{transform:rotate(-8deg)scale(1.06)}.site-header nav{align-items:center;gap:.5rem;display:flex}.desktop-nav{background:var(--surface-soft);border-radius:14px;align-items:center;gap:.15rem;padding:.25rem;display:flex}.desktop-nav a{min-height:40px;color:var(--muted);transition:color .2s, background .2s, transform .3s var(--spring);border-radius:11px;align-items:center;padding:0 .9rem;font-size:.86rem;font-weight:700;text-decoration:none;display:inline-flex}.desktop-nav a:hover{color:var(--ink);background:var(--surface);transform:translateY(-1px)}.desktop-nav a[aria-current=page]{color:var(--ink);background:var(--surface);box-shadow:0 4px 12px -6px #4a347866}.local-time{min-height:40px;color:var(--muted);background:var(--surface-soft);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:12px;align-items:center;gap:.35rem;padding:0 .75rem;font-size:.76rem;font-weight:700;display:inline-flex}.local-time strong{color:var(--ink)}.header-cta,.button{border-radius:var(--radius-control);background:var(--action);min-height:44px;color:var(--on-action);font:600 .95rem/1 var(--display);letter-spacing:.01em;cursor:pointer;transition:transform .35s var(--spring), background .2s, box-shadow .25s;border:0;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1.2rem;text-decoration:none;display:inline-flex}.header-cta:hover,.button:hover{background:var(--action-deep);transform:translateY(-2px)scale(1.03)}.header-cta:active,.button:active{transition-duration:.1s;transform:scale(.95)}.button .icon{transition:transform .3s var(--spring)}.button:hover .icon{transform:translate(3px)}.button.secondary{color:var(--ink);background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--line)}.button.secondary:hover{background:var(--surface-soft)}.icon-button{background:var(--surface-soft);width:44px;height:44px;color:var(--ink);cursor:pointer;transition:transform .35s var(--spring), background .2s;border:0;border-radius:50%;flex:0 0 44px;place-items:center;display:grid}.icon-button:hover{background:var(--butter);transform:rotate(-14deg)scale(1.06)}.icon-button .icon{width:21px;height:21px}.theme-toggle .icon-moon,:root[data-theme=dark] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-moon{display:block}.mobile-nav{z-index:10;display:none;position:relative}.mobile-nav summary{background:var(--surface-soft);cursor:pointer;width:44px;height:44px;transition:transform .3s var(--spring);border-radius:50%;place-items:center;list-style:none;display:grid}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav[open] summary{background:var(--blush);transform:rotate(90deg)}.mobile-nav>div{z-index:20;background:var(--surface);box-shadow:var(--shadow-pop);transform-origin:100% 0;animation:sheet-in .4s var(--ease-out);border-radius:24px;grid-template-columns:repeat(3,84px);gap:.6rem .3rem;padding:1rem .7rem;display:grid;position:absolute;top:56px;right:0}.mobile-nav a{border-radius:14px;justify-items:center;gap:.35rem;padding:.2rem;font-size:.74rem;font-weight:700;text-decoration:none;display:grid}.mobile-nav a[aria-current=page]{color:var(--action)}.mobile-nav a[aria-current=page] .app-icon{box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--action)}@keyframes sheet-in{0%{opacity:0;transform:scale(.85)translateY(-8px)}}.site-footer{color:var(--on-footer);background:var(--footer);margin-top:7rem;padding:2.4rem 0 2.2rem;font-size:.86rem}.footer-inner{justify-content:space-between;align-items:center;gap:2rem;display:flex}.site-footer p{margin:0}.site-footer div div{gap:.4rem;display:flex}.site-footer a{border-radius:12px;align-items:center;min-height:44px;padding:0 .8rem;font-weight:700;text-decoration:none;transition:background .2s;display:inline-flex}.site-footer a:hover{background:color-mix(in srgb, var(--on-footer) 14%, transparent)}.site-footer :focus-visible{outline-color:var(--on-footer)}.app-icon{--size:56px;width:var(--size);height:var(--size);border-radius:calc(var(--size) * .3);color:var(--app-ink);background:var(--app-bg);box-shadow:inset 0 -3px 0 color-mix(in srgb, var(--app-ink) 16%, transparent), 0 8px 16px -10px color-mix(in srgb, var(--app-ink) 70%, transparent);transition:transform .4s var(--spring);flex:none;place-items:center;display:grid}.app-icon .icon{stroke-width:2.1px;width:46%;height:46%}.app-icon-sm{--size:40px}.app-icon-lg{--size:72px}.app-home{--app-bg:var(--sky);--app-ink:var(--sky-ink)}.app-about{--app-bg:var(--peach);--app-ink:var(--peach-ink)}.app-experience{--app-bg:var(--butter);--app-ink:var(--butter-ink)}.app-projects{--app-bg:var(--peri);--app-ink:var(--peri-ink)}.app-writing{--app-bg:var(--lilac);--app-ink:var(--lilac-ink)}.app-games{--app-bg:var(--blush);--app-ink:var(--blush-ink)}.app-contact{--app-bg:var(--mint);--app-ink:var(--mint-ink)}.app-island{--app-bg:var(--aqua);--app-ink:var(--aqua-ink)}a:hover>.app-icon,a:focus-visible>.app-icon{transform:translateY(-3px)rotate(-4deg)scale(1.06)}a:active>.app-icon{transition-duration:.12s;transform:scale(.9)}.page{padding-top:clamp(3rem,7vw,5.5rem)}.page:has(>.page-head){padding-top:0}.page-head{isolation:isolate;gap:1.1rem;margin-bottom:1rem;padding:clamp(3rem,7vw,5rem) 0 clamp(2.6rem,5vw,3.8rem);display:grid;position:relative}.page-head:before{content:"";z-index:-1;background:var(--head-band,var(--sky));position:absolute;inset:-110px calc(50% - 50vw) 0}html[data-page=about] .page-head{--head-band:var(--peach)}html[data-page=experience] .page-head{--head-band:var(--butter)}html[data-page=projects] .page-head{--head-band:var(--peri)}html[data-page=blog] .page-head{--head-band:var(--lilac)}html[data-page=games] .page-head{--head-band:var(--blush)}.page-head h1,.page-head p{max-width:900px}.page-head h1{font-size:clamp(2.5rem,6vw,4.2rem)}h1,h2,h3{font-family:var(--display);letter-spacing:-.015em;text-wrap:balance;font-weight:600;line-height:1.08}h1{letter-spacing:-.025em;margin:0;font-size:clamp(3rem,7.5vw,5.4rem);font-weight:600}h2{margin:0;font-size:clamp(1.9rem,4vw,2.8rem)}h3{margin:0;font-size:1.3rem}p{text-wrap:pretty}.page-head p,.lead{max-width:64ch;color:var(--muted);margin:0;font-size:clamp(1.02rem,2vw,1.16rem)}.section{margin-top:clamp(4.5rem,9vw,8rem)}.section-heading{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:1.6rem;display:flex}.section-heading>a{min-height:44px;color:var(--ink);text-underline-offset:.3em;align-items:center;font-size:.92rem;font-weight:800;text-decoration:underline 2px;display:inline-flex}.section-heading>a:hover{text-decoration-color:var(--action);text-decoration-thickness:3px}.window{border-radius:var(--radius-window);background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--faint)}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tag{min-height:28px;color:var(--muted);background:var(--surface-soft);border-radius:99px;align-items:center;padding:.15rem .7rem;font-size:.74rem;font-weight:700;display:inline-flex}@keyframes icon-pop{0%{opacity:0;transform:scale(.4)rotate(-20deg)}}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.3rem;display:grid}.project-card{background:var(--surface);min-width:0;box-shadow:inset 0 0 0 1.5px var(--faint);transition:transform .5s var(--ease-out), box-shadow .3s;border-radius:22px;flex-direction:column;display:flex;overflow:hidden}.project-card:hover{box-shadow:inset 0 0 0 1.5px var(--line), var(--shadow-pop);transform:translateY(-6px)}.project-card figure{aspect-ratio:16/9;background:var(--peri);border-radius:16px;margin:.55rem .55rem 0;overflow:hidden}.project-card img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease-out)}.project-card:hover img{transform:scale(1.05)}.project-card-body{flex-direction:column;flex:1;padding:1rem 1.2rem 1.2rem;display:flex}.project-card h3{margin-bottom:.2rem}.project-card p{color:var(--muted);font-size:.9rem}.project-card-link{color:var(--action);align-items:center;gap:.3rem;margin-top:auto;padding-top:1rem;font-size:.86rem;font-weight:800;text-decoration:none;display:inline-flex}.project-card-link:hover{text-decoration:underline}.filter-bar{flex-wrap:wrap;gap:.45rem;margin:2.2rem 0;display:flex}.filter-button{min-height:44px;color:var(--muted);background:var(--surface);cursor:pointer;box-shadow:inset 0 0 0 1.5px var(--line);transition:transform .35s var(--spring), background .2s, color .2s;border:0;border-radius:99px;padding:.5rem 1rem;font-size:.84rem;font-weight:700}.filter-button:hover{color:var(--ink);transform:translateY(-2px)}.filter-button[aria-pressed=true]{color:var(--on-action);background:var(--action);box-shadow:none}.empty-state{text-align:center;color:var(--muted);padding:4rem 1rem}.view-status{color:var(--muted);background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--faint);border-radius:16px;margin:1rem 0;padding:.9rem 1.2rem;font-size:.88rem}.back{background:var(--surface);min-height:40px;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line);transition:transform .35s var(--spring);border-radius:12px;align-items:center;gap:.4rem;margin-bottom:1.6rem;padding:0 1rem 0 .75rem;font-size:.86rem;font-weight:700;text-decoration:none;display:inline-flex}.back:hover{transform:translate(-3px)}.article-shell{width:min(800px,100%);margin-inline:auto}.article-meta{color:var(--muted);flex-wrap:wrap;gap:.5rem;margin-top:1.2rem;font-size:.84rem;font-weight:700;display:flex}.article-meta span{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--faint);border-radius:99px;padding:.2rem .75rem}.prose{border-radius:var(--radius-window);background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--faint);padding:clamp(1.4rem,5vw,3.2rem);font-size:1.03rem;line-height:1.85}.prose>:first-child{margin-top:0}.prose h2{margin:3.4rem 0 1rem;font-size:1.9rem}.prose h3{margin:2.4rem 0 .7rem}.prose a{color:var(--action);font-weight:700}.prose img{border-radius:16px;margin:2rem auto}.prose pre{color:#efe9ff;background:#2b2347;border-radius:16px;padding:1.2rem 1.3rem;font-size:.9rem;overflow-x:auto}.prose code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em}.prose :not(pre)>code{color:var(--lilac-ink);background:var(--lilac);border-radius:6px;padding:.12em .4em}.prose blockquote{color:var(--ink);background:var(--butter);border-radius:16px;margin-inline:0;padding:.8rem 1.2rem}.prose blockquote p{margin:0}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.prose th,.prose td{border-bottom:1px solid var(--faint);text-align:left;padding:.7rem}.prose th{color:var(--muted);font-size:.84rem}html[data-page=projects] .page-head h1{animation:page-skid .8s var(--ease-out) both}html[data-page=projects] .project-card{animation:page-deal .7s var(--ease-out) both}html[data-page=projects] .project-card:nth-child(2){animation-delay:60ms}html[data-page=projects] .project-card:nth-child(3){animation-delay:.12s}html[data-page=projects] .project-card:nth-child(n+4){animation-delay:.18s}html[data-page=experience] .page-head h1{animation:page-from-left .8s var(--ease-out) both}html[data-page=about] .page-head h1{animation:page-squash .8s var(--ease-out) both}html[data-page=blog] .page-head h1{animation:page-write .9s var(--ease-out) both}html[data-page=blog] .article-list article{animation:page-unfold .6s var(--ease-out) both;transform-origin:50% 0}html[data-page=blog] .article-list article:nth-child(2){animation-delay:80ms}html[data-page=blog] .article-list article:nth-child(n+3){animation-delay:.16s}html[data-page=games] .page-head h1{animation:page-ready .7s var(--ease-out) both}html[data-page=games] .game-card{animation:page-drop .7s var(--ease-out) both}html[data-page=games] .game-card:nth-child(3n+2){animation-delay:70ms}html[data-page=games] .game-card:nth-child(3n){animation-delay:.14s}@keyframes page-skid{0%{opacity:0;transform:translate(80px)skew(-12deg)}}@keyframes page-deal{0%{opacity:0;transform:translateY(60px)rotate(-4deg)}}@keyframes page-from-left{0%{opacity:0;transform:translate(-70px)}}@keyframes page-squash{0%{opacity:0;transform-origin:0 100%;transform:scaleY(.3)}60%{opacity:1;transform-origin:0 100%;transform:scaleY(1.08)}}@keyframes page-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes page-unfold{0%{opacity:0;transform:perspective(700px)rotateX(-70deg)}}@keyframes page-ready{0%{opacity:0;transform:scale(1.8)}60%{opacity:1;transform:scale(.96)}}@keyframes page-drop{0%{opacity:0;transform:translateY(-80px)}}@media (width<=1100px){.local-time{display:none}}@media (width<=900px){.desktop-nav,.header-cta{display:none}.mobile-nav{display:block}.project-grid{grid-template-columns:1fr 1fr}}@media (width<=560px){.site-header,main,.footer-inner{width:min(100% - 24px,1180px)}.site-header{min-height:58px;margin-top:.5rem;top:.5rem}.project-grid{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:flex-start;gap:.8rem}.footer-inner{flex-direction:column;align-items:flex-start;gap:.6rem}.site-footer div div{flex-wrap:wrap;margin-left:-.8rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.w-full{width:100%}.h-full{height:100%}.max-w-full{max-width:100%}.max-h-full{max-height:100%}.flex{display:flex}.items-center{align-items:center}.justify-center{justify-content:center}.bg-black,.bg-gray-900,.bg-slate-950,.bg-emerald-950,[class*="bg-[#"]{background:#020713}.game-loading{color:#c9d8f5}
