@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-normal.C2je3j2s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-normal.CFCUzsTy.woff)format("woff");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:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-normal.DnYpCC2O.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-normal.BVbkICAY.woff)format("woff");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:#fafafa;--surface:#fff;--surface-2:#f4f4f5;--text:#18181b;--text-muted:#52525b;--border:#e4e4e7;--accent:#0f766e;--accent-hover:#115e59;--accent-soft:#ccfbf1;--on-accent:#fff;--shadow:0 1px 2px #0000000a, 0 4px 16px #0000000a;color-scheme:light;--font-sans:"Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-serif:"Instrument Serif", ui-serif, Georgia, "Times New Roman", serif;--font-mono:"Geist Mono Variable", ui-monospace, "SFMono-Regular", Consolas, monospace;--text-xs:.8125rem;--text-sm:.875rem;--text-base:1rem;--text-lg:clamp(1.0625rem, 1rem + .25vw, 1.1875rem);--text-xl:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--text-2xl:clamp(1.5rem, 1.25rem + 1vw, 2rem);--text-3xl:clamp(2.25rem, 1.75rem + 2.2vw, 3.5rem);--text-4xl:clamp(2.75rem, 2rem + 3.5vw, 5rem);--leading-tight:1.15;--leading-normal:1.65;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--container:72rem;--container-prose:42rem;--gutter:clamp(1rem, 4vw, 2rem);--radius-sm:6px;--radius:12px;--radius-lg:20px;--radius-full:999px;--ease:cubic-bezier(.2, .7, .2, 1);--duration-fast:.15s;--duration:.3s;--duration-slow:.6s}:root[data-theme=dark]{--bg:#0b0c0e;--surface:#141518;--surface-2:#1c1d21;--text:#f4f4f5;--text-muted:#a1a1aa;--border:#26272b;--accent:#2dd4bf;--accent-hover:#5eead4;--accent-soft:#134e4a;--on-accent:#042f2e;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000040;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration:0s;--duration-slow:0s}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--duration) var(--ease), color var(--duration) var(--ease)}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4{line-height:var(--leading-tight);text-wrap:balance;letter-spacing:-.015em;font-weight:600}p{text-wrap:pretty}.display{font-family:var(--font-serif);letter-spacing:-.01em;font-weight:400}a{color:var(--accent);text-underline-offset:.2em;transition:color var(--duration-fast) var(--ease);text-decoration-thickness:1px}a:hover{color:var(--accent-hover)}code,kbd{font-family:var(--font-mono);font-size:.9em}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.prose{max-width:var(--container-prose)}.muted{color:var(--text-muted)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);text-transform:uppercase;letter-spacing:.08em;font-weight:500}.section-title{font-size:var(--text-2xl);margin-bottom:var(--space-5)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-radius:var(--radius-full);font-size:var(--text-sm);transition:background-color var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease), transform var(--duration-fast) var(--ease);border:1px solid #0000;font-weight:500;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-hover);color:var(--on-accent)}.btn-secondary{border-color:var(--border);color:var(--text);background:var(--surface)}.btn-secondary:hover{border-color:var(--text-muted);color:var(--text)}.icon-link{border-radius:var(--radius-full);width:2.75rem;height:2.75rem;color:var(--text-muted);transition:color var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);place-items:center;display:inline-grid}.icon-link:hover{color:var(--accent);background:var(--surface-2)}.tags{gap:var(--space-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.tags li{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);padding:.125rem var(--space-3);border-radius:var(--radius-full)}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.reveal{animation:fade-up var(--duration-slow) var(--ease) both;animation-delay:var(--delay,0s)}@media (prefers-reduced-motion:reduce){.reveal{animation:none}}.skip-link{left:var(--space-4);z-index:100;padding:var(--space-2) var(--space-4);background:var(--accent);color:var(--on-accent);border-radius:var(--radius-sm);text-decoration:none;position:absolute;top:-100px}.skip-link:focus{top:var(--space-4);color:var(--on-accent)}@view-transition{navigation:auto}.site-header{view-transition-name:site-header}::view-transition-old(root){animation:page-out .18s var(--ease) both}::view-transition-new(root){animation:page-in .32s var(--ease) both}@keyframes page-out{to{opacity:0}}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.js :is(.section-title,.card,.entry,.cert,.award,.skill-row,.glance,.content>*,.shots,section.links):not(.is-visible){opacity:0}.js :is(.section-title,.card,.entry,.cert,.award,.skill-row,.glance,.content>*,.shots,section.links).is-visible{animation:fade-up var(--duration-slow) var(--ease) backwards;animation-delay:var(--reveal-delay,0s)}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}.js :is(.section-title,.card,.entry,.cert,.award,.skill-row,.glance,.content>*,.shots,section.links){opacity:1!important;animation:none!important}}:root[data-motion]{--spring:cubic-bezier(.34, 1.56, .64, 1)}[data-motion] .hero{isolation:isolate;position:relative}[data-motion] .hero:before,[data-motion] .hero:after{content:"";z-index:-1;pointer-events:none;position:absolute;inset:0}[data-motion] .hero:before{background:radial-gradient(40% 45% at 20% 30%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 70%), radial-gradient(35% 40% at 75% 60%, #8b5cf62e, transparent 70%), radial-gradient(30% 35% at 50% 90%, #38bdf824, transparent 70%);filter:blur(40px);animation:18s ease-in-out infinite alternate aurora;inset:-10% 0}[data-motion] .hero:after{background:radial-gradient(320px circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--accent) 12%, transparent), transparent 70%);opacity:0;transition:opacity var(--duration) var(--ease)}[data-motion] .hero:hover:after{opacity:1}@keyframes aurora{0%{transform:translate(0,0)scale(1)}50%{transform:translate(4%,-3%)scale(1.08)}to{transform:translate(-3%,2%)scale(1.02)}}[data-motion] .name .char{animation:char-rise .7s var(--spring) both;animation-delay:calc(.12s + var(--i) * 35ms);display:inline-block}[data-motion] .name .word{white-space:nowrap;display:inline-block}@keyframes char-rise{0%{opacity:0;transform:translateY(.45em)rotate(6deg)}to{opacity:1;transform:none}}[data-motion] [data-magnetic]{transform:translate(var(--tx,0px), var(--ty,0px));transition:background-color var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease), transform .4s var(--spring)}[data-motion] [data-tilt]{transform-style:preserve-3d}[data-motion] [data-tilt].is-tilting{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-4px);transition:transform .12s linear, border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease)}[data-motion] [data-tilt]:before{content:"";z-index:1;pointer-events:none;border-radius:inherit;background:radial-gradient(400px circle at var(--gx,50%) var(--gy,50%), #ffffff1f, transparent 60%);opacity:0;transition:opacity var(--duration) var(--ease);position:absolute;inset:0}[data-motion] [data-tilt].is-tilting:before{opacity:1}.scroll-progress{z-index:60;background:linear-gradient(90deg, var(--accent), #8b5cf6);transform-origin:0;height:3px;transform:scaleX(var(--progress,0));pointer-events:none;position:fixed;inset:0 0 auto}[data-motion] .skill-row.is-visible .tags li{animation:chip-pop .5s var(--spring) backwards;animation-delay:calc(var(--reveal-delay,0s) + .15s + var(--i,0) * 40ms);transition:transform var(--duration-fast) var(--spring), color var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease)}[data-motion] .skill-row .tags li:hover{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 50%, var(--border));transform:translateY(-2px)scale(1.06)}@keyframes chip-pop{0%{opacity:0;transform:scale(.6)}}@media (prefers-reduced-motion:reduce){[data-motion] .hero:before,[data-motion] .name .char,[data-motion] .skill-row.is-visible .tags li{animation:none}[data-motion] [data-magnetic],[data-motion] [data-tilt].is-tilting{transform:none}.scroll-progress{display:none}}[data-motion] .hero:before{display:none}.c-constellation{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;mask-image:radial-gradient(#000 55%,#0000 100%)}[data-motion] .name .char:hover{animation:char-jump .5s var(--spring);color:var(--accent)}@keyframes char-jump{40%{transform:translateY(-.18em)rotate(-8deg)}}.c-intro{z-index:200;background:var(--bg);cursor:pointer;clip-path:circle(150%);transition:clip-path .7s cubic-bezier(.7,0,.2,1);position:fixed;inset:0}.c-intro.is-leaving{clip-path:circle(0%);pointer-events:none}.c-intro canvas{width:100%;height:100%;display:block}.c-intro-skip{right:var(--space-5);bottom:var(--space-5);padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-full);background:color-mix(in srgb, var(--surface) 80%, transparent);color:var(--text-muted);font:inherit;font-size:var(--text-sm);cursor:pointer;position:absolute}.c-intro-playing body{overflow:hidden}.c-fabs{right:var(--space-5);bottom:var(--space-5);z-index:40;align-items:flex-end;gap:var(--space-3);flex-direction:column;display:flex;position:fixed}.c-fab{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid color-mix(in srgb, var(--accent) 55%, var(--border));border-radius:var(--radius-full);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-sm);box-shadow:var(--shadow);cursor:pointer;animation:fab-in .6s var(--spring) var(--fab-delay,1.2s) backwards, fab-glow 2.4s ease-in-out calc(var(--fab-delay,1.2s) + .6s) infinite;transition:transform var(--duration-fast) var(--spring), border-color var(--duration-fast) var(--ease);font-weight:500;display:inline-flex}.c-fab+.c-fab{--fab-delay:1.4s}.c-fab:hover{border-color:var(--accent);transform:translateY(-2px)scale(1.04)}.c-fab span{animation:2.4s ease-in-out infinite bug-wiggle;display:inline-block}@keyframes fab-in{0%{opacity:0;transform:translateY(20px)scale(.8)}}@keyframes fab-glow{0%,to{box-shadow:var(--shadow), 0 0 10px 0 color-mix(in srgb, var(--accent) 35%, transparent)}50%{box-shadow:var(--shadow), 0 0 24px 4px color-mix(in srgb, var(--accent) 60%, transparent)}}@keyframes bug-wiggle{0%,80%,to{transform:none}85%{transform:rotate(-18deg)}90%{transform:rotate(14deg)}95%{transform:rotate(-8deg)}}.c-game{width:min(680px,100vw - 2rem);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow);margin:auto}.c-game[open]{animation:game-in .35s var(--spring)}.c-game::backdrop{backdrop-filter:blur(4px);background:#0000008c}@keyframes game-in{0%{opacity:0;transform:translateY(16px)scale(.96)}}.c-game-head{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.c-game-head h2{font-size:var(--text-xl)}.c-game-close{border:1px solid var(--border);border-radius:var(--radius-full);width:2.25rem;height:2.25rem;color:var(--text-muted);cursor:pointer;background:0 0}.c-game-stage{width:min(100%, calc((100dvh - 9rem) * var(--board-ratio,1.6)));margin-inline:auto;position:relative}.c-game canvas{width:100%;height:auto;aspect-ratio:var(--board-ratio,1.6);border:1px solid var(--border);border-radius:var(--radius);background:radial-gradient(circle at 1px 1px, var(--border) 1px, transparent 0) 0 0 / 22px 22px, var(--surface-2);cursor:crosshair;touch-action:none;user-select:none;display:block}.c-game canvas.is-shake{animation:.3s shake}@keyframes shake{25%{transform:translate(-6px)}50%{transform:translate(6px)}75%{transform:translate(-3px)}}.c-game-panel{place-content:center;gap:var(--space-3);padding:var(--space-5);text-align:center;border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 88%, transparent);backdrop-filter:blur(2px);display:grid;position:absolute;inset:0}.c-game [hidden]{display:none}.c-game-panel p{max-width:30rem;margin-inline:auto}.c-game-big{font-size:var(--text-2xl);font-weight:600}.c-game-actions{justify-content:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.c-game-foot{margin-top:var(--space-3);font-size:var(--text-sm);min-height:1.5em}@media (prefers-reduced-motion:reduce){.c-fab,.c-fab span,.c-game[open],.c-game canvas.is-shake,[data-motion] .name .char:hover{animation:none}}@media (width<=600px){.c-game{width:calc(100vw - 1rem);max-width:none;max-height:calc(100dvh - 1rem);padding:var(--space-3)}.c-game-head{margin-bottom:var(--space-3)}.c-game-stage{width:min(100%, calc((100dvh - 7.5rem) * var(--board-ratio,.65)))}.c-game-panel{padding:var(--space-4)}.c-game-foot{margin-top:var(--space-2)}}.c-build{margin-top:var(--space-5)}.c-gate{z-index:150;overscroll-behavior:contain;padding-bottom:var(--space-7);background:radial-gradient(50% 40% at 85% 10%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 70%), radial-gradient(40% 35% at 10% 90%, #8b5cf61f, transparent 70%), var(--bg);animation:fade-up var(--duration-slow) var(--ease);position:fixed;inset:0;overflow-y:auto}.c-gate-open body{overflow:hidden}.c-gate-bar{justify-content:space-between;align-items:center;gap:var(--space-4);padding-block:var(--space-4);display:flex}.c-gate-brand{font-family:var(--font-serif);font-size:var(--text-xl)}.c-gate-skip{cursor:pointer;font-family:inherit}.c-build-title{font-size:var(--text-3xl);margin-block:var(--space-2) var(--space-3)}.c-build-lead{max-width:40rem;margin-bottom:var(--space-6)}.b-grid{gap:var(--space-6);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:radial-gradient(60% 80% at 100% 0%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 70%), var(--surface);align-items:start;display:grid}@media (width>=860px){.b-grid{gap:var(--space-7);padding:var(--space-6);grid-template-columns:1fr auto}}.b-steps{gap:var(--space-2);margin-bottom:var(--space-5);counter-reset:step;padding:0;list-style:none;display:flex}.b-steps li{counter-increment:step;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);padding-top:var(--space-2);border-top:3px solid var(--border);transition:border-color var(--duration) var(--ease), color var(--duration) var(--ease);flex:1}.b-steps li:before{content:counter(step) ". "}.b-steps li.is-done,.b-steps li.is-active{border-color:var(--accent);color:var(--text)}.b-steps li.is-active{font-weight:600}.b-panel{gap:var(--space-4);animation:fade-up var(--duration) var(--ease);display:grid}.b-panel h3{font-size:var(--text-xl)}.b-panel>p.muted{font-size:var(--text-sm);margin-bottom:calc(var(--space-2) * -1)}.b-options{gap:var(--space-3);flex-wrap:wrap;display:flex}.b-option{align-items:center;gap:var(--space-4);width:100%;padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--duration-fast) var(--ease), transform var(--duration-fast) var(--ease);display:flex}.b-option:hover{transform:translate(3px)}.b-option>span:last-child{display:grid}.b-option .muted{font-size:var(--text-sm)}.b-option-icon{font-size:1.75rem}.b-option[aria-checked=true],.b-emoji[aria-checked=true]{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent)}.b-swatch{border-radius:var(--radius-full);border:3px solid var(--surface);background:var(--swatch);width:2.5rem;height:2.5rem;box-shadow:0 0 0 1px var(--border);cursor:pointer;transition:transform var(--duration-fast) var(--ease)}.b-swatch:hover{transform:scale(1.1)}.b-swatch[aria-checked=true]{box-shadow:0 0 0 2px var(--swatch);transform:scale(1.1)}.b-toggle{align-items:center;gap:var(--space-3);color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;justify-self:start;padding:0;display:inline-flex}.b-toggle span{border-radius:var(--radius-full);background:var(--border);width:2.75rem;height:1.5rem;transition:background-color var(--duration-fast) var(--ease);position:relative}.b-toggle span:after{content:"";width:calc(1.5rem - 6px);height:calc(1.5rem - 6px);transition:transform var(--duration-fast) var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.b-toggle[aria-checked=true] span{background:var(--accent)}.b-toggle[aria-checked=true] span:after{transform:translate(1.25rem)}.b-input{padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font:inherit;font-size:var(--text-lg)}.b-input:focus{outline:2px solid var(--accent);outline-offset:1px}.b-emoji{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);cursor:pointer;width:3rem;height:3rem;font-size:1.4rem}.b-nav{gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.b-nav .btn{cursor:pointer;font-family:inherit}.b-meter{border-radius:var(--radius-full);background:var(--surface-2);height:6px;overflow:hidden}.b-meter span{background:var(--accent);width:0;height:100%;transition:width .4s var(--ease);display:block}.b-log{max-height:14rem;padding:var(--space-4);border-radius:var(--radius);color:#d4d4d8;font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre-wrap;background:#0b0c0e;margin:0;line-height:1.7;overflow:auto}.b-log span{animation:fade-up .2s var(--ease)}.b-log .dim{color:#71717a}.b-log .err{color:#fb7185}.b-log .ok{color:#4ade80}.b-quiz{gap:var(--space-2);display:grid}.b-fix{padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font-family:var(--font-mono);font-size:var(--text-sm);text-align:left;cursor:pointer;transition:border-color var(--duration-fast) var(--ease), transform var(--duration-fast) var(--ease)}.b-fix:hover:not(:disabled){border-color:var(--accent);transform:translate(3px)}.b-fix.is-wrong{opacity:.6;cursor:not-allowed;border-color:#f43f5e;animation:.3s shake}.b-bulb{align-items:center;gap:var(--space-3);margin-top:var(--space-1);padding:var(--space-2) var(--space-4) var(--space-2) var(--space-2);border:1px solid color-mix(in srgb, #facc15 40%, var(--border));border-radius:var(--radius-full);background:color-mix(in srgb, #facc15 7%, var(--surface-2));color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:transform var(--duration-fast) var(--spring,ease), border-color var(--duration-fast) var(--ease);justify-self:end;display:flex}.b-bulb:hover:not(:disabled){border-color:#facc15;transform:scale(1.03)}.b-bulb-icon{background:radial-gradient(circle,#facc1573,#facc1514 70%);border-radius:50%;flex:none;place-items:center;width:2.75rem;height:2.75rem;font-size:1.5rem;animation:1.6s ease-in-out infinite bulb-glow;display:grid;box-shadow:0 0 18px 4px #facc1573}.b-bulb-text{display:grid}.b-bulb-text strong{font-size:var(--text-sm)}.b-bulb-text .muted{font-size:var(--text-xs)}.b-bulb.is-used{cursor:default;opacity:.6}.b-bulb.is-used .b-bulb-icon{box-shadow:none;filter:grayscale(.4);animation:none}@keyframes bulb-glow{0%,to{transform:scale(1);box-shadow:0 0 10px 1px #facc1559}50%{transform:scale(1.08);box-shadow:0 0 22px 6px #facc1599}}.b-fix.is-hint{border-color:#facc15;animation:1.2s ease-in-out 3 hint-glow;box-shadow:0 0 0 3px #facc154d}@keyframes hint-glow{50%{box-shadow:0 0 0 7px #facc152e}}.b-tip{margin:calc(var(--space-1) * -1) 0 var(--space-1);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--text-sm);animation:fade-up var(--duration) var(--ease);background:#facc1514;border-left:3px solid #facc15}.b-popup{width:min(22rem,100vw - 2rem);padding:var(--space-6) var(--space-5) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);text-align:center;box-shadow:var(--shadow);margin:auto}.b-popup[open]{justify-items:center;gap:var(--space-3);animation:game-in .35s var(--spring,ease);display:grid}.b-popup::backdrop{backdrop-filter:blur(3px);background:#0000008c}.b-popup-icon{background:#f43f5e26;border-radius:50%;place-items:center;width:4rem;height:4rem;font-size:2rem;animation:.4s .2s shake;display:grid}.b-popup h4{font-size:var(--text-xl)}.b-popup .btn{margin-top:var(--space-2);cursor:pointer;font-family:inherit}.a-phone.is-preview:before{content:"Preview · runs after build";z-index:1;color:#fff;font-family:var(--font-mono);white-space:nowrap;background:#000000b3;border-radius:999px;padding:4px 10px;font-size:11px;position:absolute;bottom:22px;left:50%;translate:-50%}.a-phone.is-preview .a-screen{cursor:not-allowed}.b-fix-note{color:#f43f5e;font-family:var(--font-sans)}.b-stats{gap:var(--space-3);grid-template-columns:repeat(3,1fr);display:grid}.b-stats div{padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.b-stats dt{font-size:var(--text-xs);color:var(--text-muted)}.b-stats dd{font-size:var(--text-xl);margin:0;font-weight:600}.b-rank{font-weight:600}.b-code{padding:var(--space-4);border-radius:var(--radius);color:#e4e4e7;max-height:18rem;font-family:var(--font-mono);font-size:var(--text-xs);background:#0b0c0e;margin:0;line-height:1.6;overflow:auto}.b-stage{justify-self:center;position:relative}.a-phone{--app-bg:#0f1115;--app-surface:#1a1d23;--app-fg:#f5f5f5;--app-muted:#9ca3af;--app-border:#2a2e36;--app-accent:#14b8a6;--app-on-accent:#fff;width:280px;height:560px;box-shadow:0 0 0 2px #2a2b30, 0 30px 60px -20px #00000080, 0 0 80px -10px color-mix(in srgb, var(--app-accent) 35%, transparent);transition:box-shadow var(--duration-slow) var(--ease);background:#050506;border-radius:44px;flex-direction:column;padding:10px;display:flex;position:relative}.a-phone.is-light{--app-bg:#f8fafc;--app-surface:#fff;--app-fg:#0f172a;--app-muted:#64748b;--app-border:#e2e8f0}.a-phone>*{background:var(--app-bg);color:var(--app-fg);transition:background-color var(--duration) var(--ease), color var(--duration) var(--ease)}.a-status{border-radius:34px 34px 0 0;justify-content:space-between;align-items:center;padding:10px 22px 4px;font-size:11px;font-weight:600;display:flex}.a-notch{background:#050506;border-radius:999px;width:80px;height:22px}.a-bar{border-bottom:1px solid var(--app-border);align-items:center;gap:10px;padding:12px 18px;display:flex}.a-icon{background:var(--app-accent);width:32px;height:32px;transition:background-color var(--duration) var(--ease);border-radius:10px;place-items:center;font-size:16px;display:grid}.a-name{font-size:17px;font-weight:700}.a-screen{border-radius:0 0 34px 34px;flex-direction:column;flex:1;gap:12px;padding:16px;font-size:14px;display:flex;overflow:hidden}.a-screen button{font:inherit;cursor:pointer}.a-phone.is-building .a-screen{filter:blur(3px)grayscale(.6);opacity:.5;transition:filter var(--duration) var(--ease), opacity var(--duration) var(--ease)}.a-phone.is-building:after{content:"Building…";text-align:center;color:#fff;font-family:var(--font-mono);font-size:var(--text-sm);animation:1s ease-in-out infinite pulse;position:absolute;inset:50% 0 auto}.a-phone.is-shipped{animation:ship-pop .6s var(--spring,ease)}@keyframes pulse{50%{opacity:.4}}@keyframes ship-pop{40%{transform:scale(1.04)rotate(-1deg)}}.a-meta{color:var(--app-muted);font-size:12px}.a-primary{background:var(--app-accent);color:var(--app-on-accent);border:0;border-radius:999px;padding:10px 18px;font-weight:600!important}.a-ghost{border:1px solid var(--app-border);background:var(--app-surface);color:var(--app-fg);border-radius:999px;padding:10px 18px}.a-primary:active,.a-ghost:active{transform:scale(.95)}.a-row{justify-content:center;gap:10px;display:flex}.a-todo-form{gap:8px;display:flex}.a-todo-form input{border:1px solid var(--app-border);background:var(--app-surface);min-width:0;color:var(--app-fg);font:inherit;border-radius:12px;flex:1;padding:10px 12px}.a-todo-form input:focus{outline:2px solid var(--app-accent)}.a-todo-form button{background:var(--app-accent);width:40px;color:var(--app-on-accent);border:0;border-radius:12px;font-size:20px!important}.a-todo-list{flex:1;align-content:start;gap:8px;padding:0;list-style:none;display:grid;overflow:auto}.a-todo-list li{background:var(--app-surface);border:1px solid var(--app-border);animation:fade-up .25s var(--ease);border-radius:12px;align-items:center;gap:8px;padding:10px 12px;display:flex}.a-todo-list label{cursor:pointer;flex:1;align-items:center;gap:10px;min-width:0;display:flex}.a-todo-list label span{overflow-wrap:anywhere}.a-todo-list input{accent-color:var(--app-accent);width:18px;height:18px}.a-todo-list li.is-done span{color:var(--app-muted);text-decoration:line-through}.a-todo-list .a-empty{color:var(--app-muted);justify-content:center}.a-del{color:var(--app-muted);background:0 0;border:0;font-size:18px!important}.a-chips{justify-content:center;gap:6px;display:flex}.a-chips button{border:1px solid var(--app-border);background:var(--app-surface);color:var(--app-fg);border-radius:999px;padding:6px 10px;font-size:12px!important}.a-chips button[aria-pressed=true]{border-color:var(--app-accent);color:var(--app-accent)}.a-ring-wrap{width:200px;margin:8px auto;position:relative}.a-ring{width:100%;display:block;transform:rotate(-90deg)}.a-ring circle{fill:none;stroke:var(--app-border);stroke-width:10px}.a-ring .a-ring-bar{stroke:var(--app-accent);stroke-linecap:round;transition:stroke-dashoffset 1s linear}.a-time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;place-items:center;font-size:40px;font-weight:600;display:grid;position:absolute;inset:0}.a-screen[data-app=timer] .a-meta{text-align:center}.a-screen[data-app=music]{text-align:center;align-items:center}.a-art{aspect-ratio:1;background:radial-gradient(circle at 30% 30%, #ffffff59, transparent 50%), conic-gradient(from 90deg, var(--app-accent), #8b5cf6, #ec4899, var(--app-accent));width:170px;box-shadow:0 16px 30px -12px var(--app-accent);border-radius:24px;margin-top:6px}.a-art[data-track="1"]{filter:hue-rotate(70deg)}.a-art[data-track="2"]{filter:hue-rotate(160deg)}.a-viz{align-items:flex-end;gap:3px;height:28px;display:flex}.a-viz span{background:var(--app-accent);transform-origin:bottom;border-radius:3px;width:6px;height:100%;transition:transform 80ms linear;transform:scaleY(.08)}.a-track{font-size:17px;font-weight:700}.a-screen[data-app=music] .a-meta{margin-top:-10px}.a-progress{background:var(--app-border);border-radius:2px;width:100%;height:4px;overflow:hidden}.a-progress span{background:var(--app-accent);height:100%;transition:width .12s linear;display:block}.a-round{place-items:center;width:46px;height:46px;padding:0;display:grid}.a-big{width:60px;height:60px;font-size:20px!important}.a-controls{align-items:center}.b-confetti{pointer-events:none;position:absolute;top:40%;left:50%}.b-confetti span{width:8px;height:12px;animation:confetti 1.4s cubic-bezier(.2, .6, .4, 1) var(--d) both;border-radius:2px;position:absolute}@keyframes confetti{0%{opacity:1;transform:translate(0)rotate(0)}60%{transform:translate(var(--x), var(--y)) rotate(var(--r));opacity:1}to{transform:translate(calc(var(--x) * 1.1), calc(var(--y) + 260px)) rotate(var(--r));opacity:0}}@media (width<=400px){.a-phone{width:260px;height:520px}.b-stats dd{font-size:var(--text-lg)}}@media (prefers-reduced-motion:reduce){.b-panel,.b-log span,.b-fix.is-wrong,.b-fix.is-hint,.b-bulb-icon,.b-tip,.b-popup[open],.b-popup-icon,.a-phone.is-shipped,.a-phone.is-building:after,.a-todo-list li{animation:none}}.theme-toggle[data-astro-cid-l6lhmie6]{border:1px solid var(--border);border-radius:var(--radius-full);width:2.5rem;height:2.5rem;color:var(--text-muted);transition:color var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);background:0 0;place-items:center;display:inline-grid}.theme-toggle[data-astro-cid-l6lhmie6]:hover{color:var(--text);background:var(--surface-2)}.theme-toggle[data-astro-cid-l6lhmie6] .icon-sun{display:none}[data-theme=dark] .theme-toggle[data-astro-cid-l6lhmie6] .icon-sun{display:block}[data-theme=dark] .theme-toggle[data-astro-cid-l6lhmie6] .icon-moon{display:none}.site-header[data-astro-cid-nen7h5rs]{z-index:50;background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.4);transition:border-color var(--duration) var(--ease);border-bottom:1px solid #0000;position:sticky;top:0}.site-header[data-astro-cid-nen7h5rs][data-scrolled],.site-header[data-astro-cid-nen7h5rs][data-menu-open]{border-bottom-color:var(--border)}.bar[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;gap:var(--space-5);height:4rem;display:flex}.brand[data-astro-cid-nen7h5rs]{color:var(--text);white-space:nowrap;font-size:1.5rem;text-decoration:none}.brand[data-astro-cid-nen7h5rs]:hover{color:var(--accent)}.actions[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-3);display:flex}.nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:var(--space-1);padding:0;list-style:none;display:flex}.nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-sm);transition:color var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);font-weight:500;text-decoration:none;display:block}.nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--text);background:var(--surface-2)}.nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--accent)}.menu-btn[data-astro-cid-nen7h5rs]{border:1px solid var(--border);border-radius:var(--radius-full);width:2.5rem;height:2.5rem;color:var(--text);background:0 0;place-items:center;display:none}.menu-btn[data-astro-cid-nen7h5rs] .icon-close,.site-header[data-astro-cid-nen7h5rs][data-menu-open] .menu-btn[data-astro-cid-nen7h5rs] .icon-open{display:none}.site-header[data-astro-cid-nen7h5rs][data-menu-open] .menu-btn[data-astro-cid-nen7h5rs] .icon-close{display:block}@media (width<=899px){.menu-btn[data-astro-cid-nen7h5rs]{display:inline-grid}.nav[data-astro-cid-nen7h5rs]{background:var(--bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow);visibility:hidden;opacity:0;transition:opacity var(--duration) var(--ease), transform var(--duration) var(--ease), visibility 0s linear var(--duration);position:absolute;inset:100% 0 auto;transform:translateY(-8px)}.site-header[data-astro-cid-nen7h5rs][data-menu-open] .nav[data-astro-cid-nen7h5rs]{visibility:visible;opacity:1;transition:opacity var(--duration) var(--ease), transform var(--duration) var(--ease);transform:none}.nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{padding:var(--space-3) var(--gutter) var(--space-5);flex-direction:column;gap:0}.nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{padding:var(--space-3) var(--space-4);font-size:var(--text-base);border-radius:var(--radius)}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--border);margin-top:var(--space-9);padding-block:var(--space-6)}.row[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.row[data-astro-cid-jo6i4kqk] p[data-astro-cid-jo6i4kqk]{font-size:var(--text-sm)}.links[data-astro-cid-jo6i4kqk]{gap:var(--space-2);padding:0;list-style:none;display:flex}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{border-radius:var(--radius-full);width:2.5rem;height:2.5rem;color:var(--text-muted);transition:color var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);place-items:center;display:inline-grid}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--accent);background:var(--surface-2)}body{flex-direction:column;display:flex}main[data-astro-cid-z4jru4n3]{flex:1}main[data-astro-cid-z4jru4n3]:focus{outline:none}
