@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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-cyrillic-ext-wght-normal.D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-cyrillic-wght-normal.CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-vietnamese-wght-normal.U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-latin-ext-wght-normal.CXYtwYOx.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-latin-wght-normal.BzFMHfZw.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}:root{--bg:#fff7e8;--bg-rgb:255, 247, 232;--ink:#2b2140;--ink-rgb:43, 33, 64;--red:#ff5a4e;--blue:#2f7bff;--yellow:#ffc93c;--green:#22b573;--orange:#ff9f1c;--pink:#ff7eb6;--dim:rgba(var(--ink-rgb), .74);--faint:rgba(var(--ink-rgb), .5);--line:rgba(var(--ink-rgb), .14);--display:"Fredoka Variable", system-ui, sans-serif;--body:"Nunito Variable", system-ui, sans-serif;--edge:2.5px solid var(--ink);--lift:0 6px 0 var(--ink);--lift-sm:0 4px 0 var(--ink);--col:min(600px, 48vw);--stick:108px;--pad:clamp(16px, 5vw, 80px);--ease:cubic-bezier(.16, 1, .3, 1);--boing:cubic-bezier(.34, 1.56, .64, 1)}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{font-family:var(--body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overflow-x:clip}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}::selection{background:var(--yellow);color:var(--ink)}:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:8px}.skip{z-index:100;border:var(--edge);font-family:var(--display);background:#fff;border-radius:10px;padding:10px 14px;font-weight:600;position:fixed;top:-60px;left:12px}.skip:focus{top:12px}.nav{z-index:40;border:var(--edge);box-shadow:var(--lift-sm);background:#fff;border-radius:18px;justify-content:space-between;align-items:center;gap:6px;width:min(820px,100% - 24px);padding:6px 6px 6px 14px;display:flex;position:fixed;top:14px;left:50%;transform:translate(-50%)}.logo{font-family:var(--display);align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.logo i{background:var(--red);border:2px solid var(--ink);border-radius:5px;width:18px;height:18px;position:relative}.logo i:after{content:"";background:var(--red);border:2px solid var(--ink);border-bottom:0;border-radius:3px 3px 0 0;width:8px;height:4px;position:absolute;top:-6px;left:50%;transform:translate(-50%)}.nav ul{gap:2px;list-style:none;display:flex}.nav ul a{font-family:var(--display);color:var(--dim);border-radius:10px;padding:8px 12px;font-size:15px;font-weight:500;transition:color .2s,background .2s;display:block}.nav ul a:hover,.nav ul a.on{color:var(--ink);background:#fff1cc}.nav .right{align-items:center;gap:6px;display:flex}.snd{cursor:pointer;font-family:var(--display);color:var(--dim);background:0 0;border:0;border-radius:10px;align-items:center;gap:6px;padding:8px 10px;font-size:14px;font-weight:500;display:inline-flex}.snd:hover{color:var(--ink);background:#fff1cc}.snd svg{width:18px;height:18px}.snd .on{display:none}.snd[aria-pressed=true] .on{display:block}.snd[aria-pressed=true] .off,html:not(.js) .needs-js{display:none}.btn{background:var(--red);color:#fff;font-family:var(--display);border:var(--edge);box-shadow:var(--lift-sm);cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:10px 16px;font-size:15px;font-weight:600;transition:transform .12s,box-shadow .12s,background .2s;display:inline-flex}.btn:hover{box-shadow:0 6px 0 var(--ink);transform:translateY(-2px)}.btn:active{box-shadow:0 0 0 var(--ink);transform:translateY(4px)}.btn.big{border-radius:16px;padding:15px 24px;font-size:18px}.btn.alt{color:var(--ink);background:#fff}.btn.blue{background:var(--blue)}.btn.yellow{background:var(--yellow);color:var(--ink)}.btn.green{background:var(--green)}.tag{border:var(--edge);background:var(--c,var(--yellow));color:var(--tc,var(--ink));font-family:var(--display);letter-spacing:.02em;box-shadow:var(--lift-sm);border-radius:10px;align-self:flex-start;align-items:center;gap:8px;padding:6px 12px;font-size:14px;font-weight:600;display:inline-flex}.tag b{min-width:22px;height:22px;color:var(--ink);border:2px solid var(--ink);background:#fff;border-radius:6px;place-items:center;font-size:12px;display:inline-grid}h1,h2{font-family:var(--display);letter-spacing:-.01em;font-weight:700;line-height:.98}h1{margin:26px 0 22px;font-size:clamp(72px,12vw,190px)}h2{margin:22px 0;font-size:clamp(42px,6.2vw,96px)}.hl{background:linear-gradient(transparent 58%, var(--hlc,var(--yellow)) 58%, var(--hlc,var(--yellow)) 90%, transparent 90%)}.lede{color:var(--dim);max-width:31em;font-size:clamp(17px,1.45vw,21px);line-height:1.6}.lede b{color:var(--ink);font-weight:800}.row{flex-wrap:wrap;gap:14px;margin-top:32px;display:flex}.split .ch{will-change:transform, opacity;display:inline-block}.split .w{white-space:nowrap;display:inline-block}.js .reveal{opacity:0;transition:opacity .8s var(--ease), transform .9s var(--boing);transform:translateY(30px)scale(.97)}.js .reveal.in{opacity:1;transform:none}@media (width<=900px){:root{--col:100%}.nav ul{display:none}}@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transition:none;transform:none}}section{min-height:100vh;padding:140px var(--pad) 110px;flex-direction:column;justify-content:center;display:flex;position:relative}.half{width:var(--col)}h1 .ch{color:var(--c);-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;text-shadow:0 7px 0 var(--ink);cursor:default;transition:translate .35s var(--boing), rotate .35s var(--boing)}h1 .ch:hover{translate:0 -14px;rotate:-6deg}.status{color:var(--dim);align-items:center;gap:10px;margin-top:28px;font-size:14px;font-weight:700;display:inline-flex}.status i{background:var(--green);border:2px solid var(--ink);border-radius:50%;width:10px;height:10px;animation:1.6s steps(2,end) infinite blink}@keyframes blink{50%{background:#9ff0c8}}.scrollcue{left:var(--pad);font-family:var(--display);color:var(--faint);align-items:center;gap:12px;font-size:14px;font-weight:500;display:flex;position:absolute;bottom:34px}.scrollcue span{border:2.5px solid var(--faint);border-radius:12px;width:22px;height:34px;position:relative}.scrollcue span:after{content:"";background:var(--faint);width:4px;height:7px;animation:wheel 1.6s var(--ease) infinite;border-radius:2px;margin-left:-2px;position:absolute;top:6px;left:50%}@keyframes wheel{0%{opacity:1;transform:translateY(0)}80%{opacity:0;transform:translateY(10px)}to{opacity:0}}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:520px;margin-top:40px;display:grid}.stat{border:var(--edge);box-shadow:var(--lift-sm);transition:transform .3s var(--boing);background:#fff;border-radius:16px;padding:16px 18px 14px;position:relative;overflow:hidden}.stat:first-child{--c:var(--red)}.stat:nth-child(2){--c:var(--blue)}.stat:nth-child(3){--c:var(--green)}.stat:nth-child(4){--c:var(--orange)}.stat:before{content:"";background:var(--c);border-right:2px solid var(--ink);width:8px;position:absolute;top:0;bottom:0;left:0}.stat:hover{transform:translateY(-4px)rotate(-1deg)}.stat b{font-family:var(--display);color:var(--c);-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;padding-left:6px;font-size:clamp(36px,3.6vw,52px);font-weight:700;line-height:1;display:block}.stat span{color:var(--dim);margin-top:6px;padding-left:6px;font-size:13px;font-weight:700;display:block}#work{grid-template-columns:minmax(0, 1fr) var(--col);align-content:center;align-items:start;column-gap:40px;display:grid}#work .head{top:var(--stick);width:auto;position:sticky}#work .head h2{margin-bottom:0;font-size:clamp(40px,5vw,80px)}#work .timeline{grid-column:2}.timeline{width:var(--col);gap:22px;display:grid}.card{border:var(--edge);box-shadow:var(--lift);background:#fff;border-radius:20px;position:relative;overflow:hidden}.card .meta{background:var(--c,var(--blue));color:#fff;border-bottom:var(--edge);font-family:var(--display);justify-content:space-between;gap:16px;padding:10px 20px;font-size:15px;font-weight:600;display:flex}.card .in{padding:18px 22px 22px}.card h3{font-family:var(--display);font-size:clamp(24px,2.3vw,30px);font-weight:700;line-height:1.1}.card .role{color:var(--dim);margin-top:4px;font-size:15px;font-weight:600}.card ul{gap:8px;margin-top:14px;list-style:none;display:grid}.card li{color:var(--dim);padding-left:22px;font-size:15px;line-height:1.55;position:relative}.card li:before{content:"";background:var(--c,var(--blue));border:2px solid var(--ink);border-radius:3px;width:10px;height:10px;position:absolute;top:.45em;left:2px}.card .nums{border-top:2px dashed var(--line);gap:28px;margin-top:16px;padding-top:14px;display:flex}.card .nums b{font-family:var(--display);font-size:28px;font-weight:700;display:block}.card .nums span{color:var(--faint);font-size:12px;font-weight:700}.chips{flex-wrap:wrap;gap:10px;max-width:540px;margin-top:30px;display:flex}.chip{border:2px solid var(--ink);font-family:var(--display);box-shadow:0 3px 0 var(--ink);transition:transform .3s var(--boing), background .2s;cursor:default;background:#fff;border-radius:999px;padding:7px 13px;font-size:15px;font-weight:500}.chip:nth-child(4n+1):hover{background:#ffd1cd}.chip:nth-child(4n+2):hover{background:#cfe0ff}.chip:nth-child(4n+3):hover{background:#ffeeb8}.chip:nth-child(4n):hover{background:#c7f0dd}.chip:hover{transform:translateY(-5px)rotate(-3deg)}.chip.head{background:var(--ink);color:#fff;box-shadow:none}#projects .list{width:var(--col);gap:22px;margin-top:30px;display:grid}.proj{border:var(--edge);box-shadow:var(--lift);transition:transform .35s var(--boing);background:#fff;border-radius:20px;grid-template-columns:120px 1fr;display:grid;position:relative;overflow:hidden}.proj:hover{transform:translateY(-4px)rotate(-.6deg)}.proj .box{background:var(--c);border-right:var(--edge);font-family:var(--display);color:#fff;-webkit-text-stroke:2.5px var(--ink);paint-order:stroke fill;text-shadow:0 5px 0 var(--ink);background-image:radial-gradient(#ffffff59 2px,#0000 2.5px);background-size:14px 14px;place-items:center;font-size:64px;font-weight:700;display:grid}.proj .in{padding:20px 22px 22px}.proj .name{font-family:var(--display);color:var(--faint);font-size:14px;font-weight:600}.proj h3{font-family:var(--display);margin-top:4px;font-size:clamp(22px,2.1vw,28px);font-weight:700;line-height:1.1}.proj p{color:var(--dim);margin-top:8px;font-size:15px;line-height:1.55}.stickers{flex-wrap:wrap;gap:6px;margin-top:12px;list-style:none;display:flex}.stickers li{font-family:var(--display);border:2px solid var(--ink);background:#fff7e8;border-radius:8px;padding:3px 9px;font-size:12px;font-weight:500}.proj .btn{margin-top:14px;padding:8px 14px;font-size:14px}.minis{grid-template-columns:1fr 1fr;gap:16px;display:grid}.mini{border:var(--edge);box-shadow:var(--lift-sm);background:#fff;border-radius:16px;padding:16px 18px}.mini b{font-family:var(--display);font-size:18px;display:block}.mini span{color:var(--dim);font-size:14px}#contact h2{font-size:clamp(50px,7.6vw,120px)}.freed{font-family:var(--display);color:var(--green);opacity:0;transition:opacity .5s var(--ease), transform .5s var(--boing);margin-top:18px;font-size:18px;font-weight:600;transform:translateY(10px)scale(.9)}.freed.on{opacity:1;transform:none}.links{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.links a{font-family:var(--display);border:2px solid var(--ink);box-shadow:0 3px 0 var(--ink);transition:transform .2s var(--boing);background:#fff;border-radius:10px;padding:7px 13px;font-weight:500}.links a:hover{transform:translateY(-3px)}@media (width<=900px){section{justify-content:flex-end;padding:42vh 16px 90px}#hero{padding-top:38vh}h1{margin:16px 0 14px}h1 .ch{-webkit-text-stroke-width:2px;text-shadow:0 5px 0 var(--ink)}#work{display:flex}#work .head{margin-bottom:26px;position:static}.minis{grid-template-columns:1fr}.proj{grid-template-columns:76px 1fr}.proj .box{font-size:42px}}@media (prefers-reduced-motion:reduce){.status i,.scrollcue span:after{animation:none}}canvas#gl{z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}canvas#gl.point{cursor:pointer}.scrim{z-index:1;pointer-events:none;background:linear-gradient(90deg, rgba(var(--bg-rgb), .6) 0%, rgba(var(--bg-rgb), .3) 30%, rgba(var(--bg-rgb), 0) 48%);position:fixed;inset:0}main{z-index:2;pointer-events:none;position:relative}main a,main button,main .card,main .proj,main .stat,main .chip{pointer-events:auto}.curtain{z-index:60;background:var(--bg);pointer-events:none;place-items:center;display:none;position:fixed;inset:0}.js .curtain{display:grid}.curtain i{background:var(--red);border:var(--edge);width:46px;height:46px;box-shadow:var(--lift-sm);animation:hop .7s var(--boing) infinite alternate;border-radius:12px}@keyframes hop{0%{transform:translateY(0)rotate(0)}to{transform:translateY(-26px)rotate(90deg)}}.labels3d{z-index:3;pointer-events:none;position:fixed;inset:0}.labels3d span{font-family:var(--display);color:var(--ink);border:2px solid var(--ink);box-shadow:0 3px 0 var(--ink);white-space:pre;opacity:0;will-change:transform, opacity;background:#fff;border-radius:10px;padding:4px 11px;font-size:14px;font-weight:600;position:absolute;top:0;left:0;translate:-50%}.labels3d .hint{background:var(--yellow);font-size:13px}.labels3d .bubble{background:#fff;border-radius:16px;padding:8px 14px;font-size:16px;translate:-26px -100%}.labels3d .bubble:after{content:"";border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);background:#fff;width:14px;height:14px;position:absolute;bottom:-9px;left:18px;transform:rotate(45deg)}.road{right:var(--pad);z-index:30;width:170px;height:34px;position:fixed;bottom:26px}html:not(.js) .road{display:none}.road:before{content:"";border:2px solid var(--ink);background:#d9cdb8 linear-gradient(90deg,#fff 50%,#0000 50%) 0/18px 2px repeat-x;border-radius:6px;height:10px;position:absolute;bottom:4px;left:0;right:0}.road .flag{background:var(--ink);width:3px;height:22px;position:absolute;bottom:14px;right:-4px}.road .flag:after{content:"";background:var(--green);border:2px solid var(--ink);width:13px;height:9px;position:absolute;top:0;left:3px}.car{will-change:transform;width:34px;height:18px;position:absolute;bottom:10px;left:0}.car .body{background:var(--red);border:2px solid var(--ink);border-radius:5px 8px 3px 3px;height:11px;position:absolute;bottom:5px;left:0;right:0}.car .body:before{content:"";border:2px solid var(--ink);background:#bfe3ff;border-bottom:0;border-radius:5px 6px 0 0;width:14px;height:8px;position:absolute;top:-8px;left:6px}.car i{background:var(--ink);border-radius:50%;width:10px;height:10px;animation:.5s linear infinite paused spin;position:absolute;bottom:0}.car i:after{content:"";background:#fff;height:2px;position:absolute;top:3px;left:1px;right:1px}.car i:first-of-type{left:4px}.car i:nth-of-type(2){right:4px}.car.go i{animation-play-state:running}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=900px){.road{display:none}.scrim{background:linear-gradient(0deg, rgba(var(--bg-rgb), .96), rgba(var(--bg-rgb), .9) 48%, rgba(var(--bg-rgb), 0) 66%)}.labels3d{z-index:1}.labels3d .hint{display:none}}@media (prefers-reduced-motion:reduce){.curtain i{animation:none}}
