@font-face{font-family:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./lexend-vietnamese-wght-normal-RvljkFvg.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./lexend-latin-ext-wght-normal-B6JQhE1e.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./lexend-latin-wght-normal-ci0D1wrL.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--ground: #f4f8f9;--surface: #ffffff;--sunken: #e8eef0;--ink: #0c0f12;--body: #2b3a3b;--slate: #5b6670;--rule: #d9e2e5;--accent: #08959a;--accent-text: #097a7e;--accent-soft: #d4f7f8;--cursor: #08959a;--on-ink: #ffffff;--shadow-block: 0 1px 0 rgba(12, 15, 18, .06), 0 12px 28px -14px rgba(8, 83, 86, .28);--font: "Lexend Variable", "Lexend", system-ui, -apple-system, "Segoe UI", sans-serif;--fs-small: 14px;--fs-body: 17px;--fs-lead: clamp(19px, .5vw + 16px, 22px);--fs-h3: clamp(20px, .5vw + 17px, 24px);--fs-h2: clamp(36px, 3.6vw + 18px, 68px);--fs-display: clamp(52px, 7.4vw + 16px, 136px);--measure: 62ch;--gutter: 20px;--page-max: 1360px;--bar-h: 104px;--block: 10px;--radius: 14px;--radius-sm: 8px;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}@media(min-width:720px){:root{--gutter: 40px;--bar-h: 76px}}@media(min-width:1200px){:root{--gutter: 64px}}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--ground: #0c0f12;--surface: #131a1e;--sunken: #1a2327;--ink: #e8eef0;--body: #c3cdd1;--slate: #9aa6af;--rule: #24302f;--accent: #2ee6ea;--accent-text: #2ee6ea;--accent-soft: #0b3335;--cursor: #2ee6ea;--on-ink: #0c0f12;--shadow-block: 0 1px 0 rgba(255, 255, 255, .04), 0 16px 32px -16px rgba(0, 0, 0, .7)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-block-start:calc(var(--bar-h) + 24px);background:var(--ground)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;background:var(--ground);color:var(--body);font-family:var(--font);font-size:var(--fs-body);line-height:1.62;font-weight:350;overflow-x:hidden;-webkit-font-smoothing:antialiased;font-optical-sizing:auto}::selection{background:var(--accent-soft);color:var(--ink)}h1,h2,h3,h4{font-family:var(--font);color:var(--ink);margin:0;text-wrap:balance}h2{font-size:var(--fs-h2);font-weight:650;line-height:1;letter-spacing:-.035em}h3{font-size:var(--fs-h3);font-weight:600;line-height:1.25;letter-spacing:-.015em}p{margin:0;max-inline-size:var(--measure);text-wrap:pretty}ul,ol,dl,dd{margin:0;padding:0}a{color:var(--accent-text);text-decoration-thickness:1.5px;text-underline-offset:4px}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}main:focus{outline:none}strong{font-weight:550;color:var(--ink)}.page{inline-size:100%;max-inline-size:var(--page-max);margin-inline:auto;padding-inline:var(--gutter)}.col{max-inline-size:640px}.skip-link{position:absolute;inset-inline-start:var(--gutter);inset-block-start:8px;z-index:100;padding:8px 14px;background:var(--surface);color:var(--accent-text);border:2px solid var(--accent);border-radius:var(--radius-sm);transform:translateY(-200%)}.skip-link:focus{transform:none}.section{--section-pad: clamp(88px, 12vw, 176px);position:relative;padding-block:var(--section-pad);scroll-margin-block-start:calc(16px - var(--section-pad))}.section__title{display:flex;align-items:baseline;gap:.32em}.section__title:before{content:"";flex:none;inline-size:.28em;block-size:.28em;border-radius:.04em;background:var(--cursor);transform:translateY(-.04em)}.block-list{list-style:none}.block-list>li{position:relative;padding-inline-start:22px}.block-list>li+li{margin-block-start:10px}.block-list>li:before{content:"";position:absolute;inset-inline-start:2px;inset-block-start:.68em;inline-size:7px;block-size:7px;border-radius:1.5px;background:var(--accent)}.button{--press: 0px;position:relative;display:inline-flex;align-items:center;gap:12px;min-block-size:52px;padding:12px 22px 12px 20px;background:var(--ink);color:var(--on-ink);border:0;border-radius:var(--radius-sm);font:inherit;font-size:16px;font-weight:550;line-height:1.2;text-decoration:none;cursor:pointer;box-shadow:0 calc(5px - var(--press)) 0 color-mix(in srgb,var(--ink) 55%,var(--accent)),0 calc(14px - var(--press)) 24px -10px #08535673;transform:translateY(var(--press));transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out)}.button:before{content:"";inline-size:10px;block-size:10px;border-radius:2px;background:var(--cursor);transition:transform .3s var(--ease-spring)}.button:hover:before{transform:scale(1.35) rotate(90deg)}.button:active{--press: 4px}.link-action{display:inline-flex;align-items:center;min-block-size:52px;color:var(--ink);font-weight:500;text-decoration:none;background:linear-gradient(var(--accent),var(--accent)) no-repeat 0 calc(100% - 12px) / 100% 2px;transition:background-size .25s var(--ease-out)}.link-action:hover{background-size:100% 6px}.nums{font-variant-numeric:tabular-nums}.icon-btn{position:relative;display:inline-grid;place-items:center;inline-size:44px;block-size:44px;padding:0;background:var(--surface);color:var(--ink);border:0;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px var(--rule),0 2px 0 var(--rule);cursor:pointer;transition:transform .15s var(--ease-out),color .2s,background-color .2s}.icon-btn:hover{color:var(--accent-text)}.icon-btn:active{transform:translateY(2px)}.icon-btn[data-done=true]{background:var(--accent-soft);color:var(--accent-text)}.icon-btn[data-tip]:after{content:attr(data-tip);position:absolute;inset-block-start:calc(100% + 8px);inset-inline-start:50%;translate:-50% 4px;padding:5px 9px;background:var(--ink);color:var(--ground);border-radius:6px;font-size:13px;font-weight:500;line-height:1.2;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s,translate .15s var(--ease-out);z-index:5}.icon-btn.icon-btn--tip-left[data-tip]:after{inset-inline:auto 0;translate:0 4px}.icon-btn.icon-btn--tip-left[data-tip]:hover:after,.icon-btn.icon-btn--tip-left[data-tip]:focus-visible:after{translate:0 0}.icon-btn.icon-btn--tip-end[data-tip]:after{inset-block-start:50%;inset-inline-start:calc(100% + 8px);translate:-4px -50%}.icon-btn.icon-btn--tip-end[data-tip]:hover:after,.icon-btn.icon-btn--tip-end[data-tip]:focus-visible:after,.icon-btn.icon-btn--tip-end[data-done=true]:after{translate:0 -50%}.icon-btn[data-tip]:hover:after,.icon-btn[data-tip]:focus-visible:after,.icon-btn[data-done=true]:after{opacity:1;translate:-50% 0}.visually-hidden{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.brand-cursor,.caret{animation:gp-blink 1.06s steps(1,end) infinite}@keyframes gp-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.brand-cursor,.caret{animation:none}}.topbar{position:sticky;inset-block-start:0;z-index:50;transition:background-color .3s var(--ease-out),box-shadow .3s var(--ease-out)}.topbar[data-scrolled=true]{background:color-mix(in srgb,var(--ground) 78%,transparent);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 1px 0 var(--rule)}.topbar__inner{display:flex;align-items:center;gap:12px 28px;min-block-size:var(--bar-h)}.topbar__mark{display:inline-flex;color:var(--ink);border-radius:6px}.topbar__logo{block-size:30px;inline-size:auto}.topbar__nav{margin-inline-start:auto;min-inline-size:0}.topbar__nav ul{display:flex;gap:4px;list-style:none}.topbar__nav a{position:relative;display:inline-flex;align-items:center;gap:8px;min-block-size:40px;padding-inline:12px;border-radius:var(--radius-sm);color:var(--ink);font-size:15px;font-weight:450;text-decoration:none;white-space:nowrap;transition:background-color .2s var(--ease-out)}.topbar__nav a:before{content:"";inline-size:7px;block-size:7px;border-radius:1.5px;background:var(--cursor);transform:scale(0);margin-inline-end:-15px;transition:transform .35s var(--ease-spring),margin .35s var(--ease-out)}.topbar__nav a:hover{background:var(--sunken)}.topbar__nav a[aria-current=true]{font-weight:550}.topbar__nav a[aria-current=true]:before{transform:scale(1);margin-inline-end:0}.topbar__end{display:flex;align-items:center;gap:4px}.topbar__end .lang-toggle{margin-inline-start:8px}.topbar__social{inline-size:40px;block-size:40px;background:transparent;box-shadow:none}.topbar__social:hover{background:var(--sunken)}.lang-toggle{display:inline-flex;padding:3px;background:var(--sunken);border-radius:10px}.lang-toggle button{min-inline-size:42px;min-block-size:34px;padding:4px 8px;background:transparent;color:var(--slate);border:0;border-radius:7px;font:inherit;font-size:14px;font-weight:550;cursor:pointer;transition:background-color .2s var(--ease-out),color .2s var(--ease-out)}.lang-toggle button:hover{color:var(--ink)}.lang-toggle button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0c0f121f}@media(max-width:719px){.topbar__inner{flex-wrap:wrap;padding-block:10px 6px;gap:6px 12px}.topbar__logo{block-size:26px}.topbar__nav{order:3;flex-basis:100%;margin-inline:-12px 0;overflow-x:auto;scrollbar-width:none}.topbar__end{margin-inline-start:auto}}@media(max-width:389px){.topbar__social{inline-size:36px}.topbar__end .lang-toggle{margin-inline-start:4px}.lang-toggle button{min-inline-size:34px;padding-inline:6px}}.cv-menu{position:relative;display:inline-flex}.cv-menu__chevron{inline-size:12px;block-size:12px;margin-inline-start:-2px;transition:transform .25s var(--ease-out)}.cv-menu[data-open=true] .cv-menu__chevron{transform:rotate(180deg)}.cv-menu__list{position:absolute;inset-block-start:calc(100% + 12px);inset-inline-start:0;z-index:20;min-inline-size:100%;inline-size:max-content;padding:6px;list-style:none;background:var(--surface);border-radius:12px;box-shadow:inset 0 0 0 1px var(--rule),var(--shadow-block);transform-origin:24px 0;animation:cv-menu-in .22s var(--ease-spring)}.cv-menu__list[hidden]{display:none}.cv-menu__list a{display:flex;align-items:center;gap:12px;min-block-size:44px;padding:8px 14px 8px 12px;border-radius:8px;color:var(--ink);font-weight:500;text-decoration:none}.cv-menu__list a:before{content:"";inline-size:8px;block-size:8px;border-radius:2px;background:var(--rule);transition:background-color .15s,transform .25s var(--ease-spring)}.cv-menu__list a:hover,.cv-menu__list a:focus-visible{background:var(--sunken)}.cv-menu__list a:hover:before,.cv-menu__list a:focus-visible:before{background:var(--cursor);transform:scale(1.25)}.cv-menu__meta{margin-inline-start:auto;padding-inline-start:16px;color:var(--slate);font-size:12.5px;font-weight:500}@keyframes cv-menu-in{0%{opacity:0;transform:translateY(-6px) scale(.96)}}.game{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background-color:var(--ground);background-image:radial-gradient(circle,color-mix(in srgb,var(--ink) 9%,transparent) 1.2px,transparent 1.4px);background-size:28px 28px;color:var(--body);overscroll-behavior:contain;touch-action:none;animation:game-in .35s var(--ease-out)}.game:focus{outline:none}@keyframes game-in{0%{opacity:0;transform:scale(1.02)}}.game__scene{position:absolute;inset:0}.game__scene canvas{display:block}.game[data-phase=intro] .game__scene,.game[data-phase=paused] .game__scene,.game[data-phase=levelDone] .game__scene,.game[data-phase=won] .game__scene{filter:saturate(.8);opacity:.55;transition:opacity .3s var(--ease-out)}.hud{position:absolute;inset:16px 16px auto;z-index:2;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;pointer-events:none}.hud>*{pointer-events:auto;display:flex;align-items:center;gap:10px;min-block-size:48px;padding:6px 14px;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:12px;box-shadow:inset 0 0 0 1px var(--rule),0 3px 0 var(--rule)}.hud__label{color:var(--slate);font-size:12.5px;font-weight:500}.hud__name,.hud__count,.hud__clock{color:var(--ink);font-weight:650;letter-spacing:-.01em}.hud__clock{min-inline-size:3.2em}.hud__actions{margin-inline-start:auto;padding:4px!important;gap:4px!important}.icon-button{display:grid;place-items:center;inline-size:40px;block-size:40px;padding:0;background:transparent;color:var(--ink);border:0;border-radius:9px;cursor:pointer;transition:background-color .15s}.icon-button:hover:not(:disabled){background:var(--sunken)}.icon-button:disabled{opacity:.4;cursor:default}.icon-button svg{inline-size:18px;block-size:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.pips-row{display:inline-flex;gap:4px}.pips-row i{inline-size:12px;block-size:12px;border-radius:3px;background:var(--sunken);box-shadow:inset 0 0 0 1.5px var(--rule);transition:background-color .2s,transform .4s var(--ease-spring)}.pips-row i[data-on=true]{background:var(--cursor);box-shadow:inset 0 -2px color-mix(in srgb,var(--ink) 25%,transparent);transform:scale(1.12)}.panel{position:relative;z-index:3;inline-size:min(560px,calc(100vw - 32px));max-block-size:calc(100svh - 32px);overflow:auto;padding:36px 36px 32px;background:var(--surface);border-radius:20px;box-shadow:inset 0 0 0 1px var(--rule),0 8px 0 var(--rule),0 30px 60px -30px #08535673;animation:panel-in .45s var(--ease-spring)}@keyframes panel-in{0%{opacity:0;transform:translateY(16px) scale(.97)}}.panel__kicker{color:var(--accent-text);font-size:var(--fs-small);font-weight:550}.panel__title{color:var(--ink);font-size:clamp(34px,4vw + 14px,56px);font-weight:700;line-height:1;letter-spacing:-.04em}.panel--menu .panel__title,.panel--level .panel__title{font-size:clamp(28px,2vw + 18px,40px)}.panel__lead{margin-block-start:14px;color:var(--slate);font-size:var(--fs-lead)}.panel__best{margin-block-start:20px;color:var(--slate);font-size:var(--fs-small)}.panel__best .nums{color:var(--ink);font-weight:600}.panel__stat{display:flex;align-items:center;gap:10px;margin-block-start:14px;color:var(--ink);font-weight:550}.panel__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;margin-block-start:32px}.panel__actions--quiet{margin-block-start:16px}.panel__stack{display:grid;gap:10px;margin-block-start:24px}.panel__stack .button{justify-content:center}.link-action{background-color:transparent;border:0;padding:0;font:inherit;cursor:pointer}.menu-button{display:inline-flex;align-items:center;justify-content:center;min-block-size:48px;padding:10px 18px;background:var(--surface);color:var(--ink);border:0;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px var(--rule),0 3px 0 var(--rule);font:inherit;font-weight:500;text-decoration:none;cursor:pointer;transition:transform .12s var(--ease-out)}.menu-button:hover{background:var(--sunken)}.menu-button:active{transform:translateY(2px)}.legend{display:grid;gap:12px;margin-block-start:28px;padding:18px 20px;background:var(--sunken);border-radius:14px}.legend>div{display:grid;grid-template-columns:7.5rem 1fr;align-items:center;gap:12px}.legend dt{color:var(--slate);font-size:var(--fs-small);font-weight:500}.legend dd{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.legend__or{color:var(--slate);margin-inline:2px}.legend--touch{display:none}@media(hover:none),(pointer:coarse){.legend:not(.legend--touch){display:none}.legend--touch{display:grid}}.keycap{display:inline-grid;place-items:center;min-inline-size:34px;block-size:34px;padding:0 8px;background:var(--surface);color:var(--ink);border-radius:7px;box-shadow:inset 0 0 0 1px var(--rule),0 3px color-mix(in srgb,var(--ink) 22%,var(--rule));font-family:var(--font);font-size:13.5px;font-weight:600;line-height:1}.keycap[data-wide=true]{min-inline-size:64px}.button .keycap{min-inline-size:24px;block-size:22px;padding:0 5px;margin-inline-start:4px;background:color-mix(in srgb,var(--on-ink) 14%,transparent);color:var(--on-ink);box-shadow:none;font-size:12px}.caret{display:inline-block;inline-size:.2em;block-size:.2em;margin-inline-start:.08em;border-radius:.03em;background:var(--cursor)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-block-start:24px}.stats>div{padding:12px 14px;background:var(--sunken);border-radius:12px}.stats dt{color:var(--slate);font-size:12.5px;font-weight:500}.stats dd{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-block-start:2px;color:var(--ink);font-size:22px;font-weight:650;letter-spacing:-.02em}.badge{padding:2px 7px;background:var(--accent-soft);color:var(--accent-text);border-radius:5px;font-size:11.5px;font-weight:600;letter-spacing:0}.game__toasts{position:absolute;inset-inline-start:16px;inset-block-end:16px;z-index:2;inline-size:min(380px,calc(100vw - 32px))}.toast{display:grid;grid-template-columns:auto 1fr;gap:14px;padding:18px 20px 20px 18px;background:var(--surface);border-radius:16px;box-shadow:inset 0 0 0 1px var(--rule),0 6px 0 var(--rule),0 24px 40px -24px #08535680;animation:toast-in .5s var(--ease-spring)}@keyframes toast-in{0%{opacity:0;transform:translateY(24px) rotate(-1.5deg)}}.toast__block{inline-size:16px;block-size:16px;margin-block-start:3px;border-radius:4px;background:var(--cursor);animation:toast-block .6s var(--ease-spring)}@keyframes toast-block{0%{transform:translateY(-30px) rotate(-180deg) scale(.4)}}.toast__kicker{color:var(--accent-text);font-size:12.5px;font-weight:550}.toast__title{margin-block-start:2px;font-size:20px;font-weight:650;letter-spacing:-.02em}.toast__company{color:var(--accent-text);font-weight:500}.toast__text{margin-block-start:6px;color:var(--slate);font-size:14.5px;line-height:1.5}.toast .tags{margin-block-start:10px}.toast__row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-block-start:8px;font-size:15px}.chip-button{min-block-size:32px;padding:4px 10px;background:var(--sunken);color:var(--ink);border:0;border-radius:7px;font:inherit;font-size:13px;font-weight:500;cursor:pointer}.touch{display:none}@media(hover:none),(pointer:coarse),(max-width:719px){.touch{position:absolute;inset:auto 16px max(16px,env(safe-area-inset-bottom));z-index:2;display:flex;justify-content:space-between;align-items:end;pointer-events:none}.touch__pad{display:flex;gap:12px}.touch__btn{pointer-events:auto;display:grid;place-items:center;inline-size:68px;block-size:68px;padding:0;background:color-mix(in srgb,var(--surface) 82%,transparent);color:var(--ink);border:0;border-radius:18px;box-shadow:inset 0 0 0 1.5px var(--rule),0 5px 0 var(--rule);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.touch__btn:active{transform:translateY(4px);box-shadow:inset 0 0 0 1.5px var(--rule),0 1px 0 var(--rule)}.touch__btn svg{inline-size:26px;block-size:26px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.touch__jump{inline-size:84px;block-size:84px;border-radius:24px;background:var(--ink);color:var(--on-ink);box-shadow:0 6px color-mix(in srgb,var(--ink) 55%,var(--accent))}.touch__jump:active{box-shadow:0 2px color-mix(in srgb,var(--ink) 55%,var(--accent))}.game__toasts{inset-block-end:116px}}.confetti{position:absolute;inset:0 0 auto 50%;pointer-events:none}.confetti i{position:absolute;inset-block-start:20px;inline-size:10px;block-size:10px;border-radius:2px;background:var(--cursor);animation:confetti 1.6s var(--d) cubic-bezier(.2,.6,.4,1) both}.confetti i[data-tone="1"]{background:var(--ink)}.confetti i[data-tone="2"]{background:var(--accent-soft)}@keyframes confetti{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(calc(var(--x) * .6),70vh) rotate(var(--r));opacity:0}}.play-button{display:inline-flex;align-items:center;gap:12px;min-block-size:52px;padding:10px 18px 10px 14px;background:var(--surface);color:var(--ink);border:0;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1.5px var(--ink),0 5px 0 var(--ink);font:inherit;font-size:16px;font-weight:550;cursor:pointer;transform:translateY(0);transition:transform .15s var(--ease-out),box-shadow .15s var(--ease-out)}.play-button:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1.5px var(--ink),0 6px 0 var(--ink)}.play-button:active{transform:translateY(4px);box-shadow:inset 0 0 0 1.5px var(--ink),0 1px 0 var(--ink)}.play-button__pad{display:grid;grid-template-columns:repeat(3,6px);grid-template-rows:repeat(3,6px);gap:1px}.play-button__pad i{border-radius:1.5px;background:var(--ink)}.play-button__pad i:nth-child(1){grid-area:1 / 2;background:var(--cursor)}.play-button__pad i:nth-child(2){grid-area:2 / 1}.play-button__pad i:nth-child(3){grid-area:2 / 3}.play-button__pad i:nth-child(4){grid-area:3 / 2}@media(prefers-reduced-motion:no-preference){.play-button:hover .play-button__pad i:nth-child(1){animation:pad-hop .6s var(--ease-spring) infinite alternate}}@keyframes pad-hop{to{transform:translateY(-3px)}}@media(max-width:559px){.panel{padding:28px 22px 24px}.legend>div{grid-template-columns:1fr;gap:6px}.stats{grid-template-columns:repeat(2,1fr)}.hud{inset:10px 10px auto;flex-wrap:nowrap;gap:6px}.hud>*{min-block-size:42px;padding:4px 10px;white-space:nowrap}.hud__label,.hud .pips-row{display:none}.hud .icon-button{inline-size:34px;block-size:34px}}@media(max-width:359px){.hud{gap:4px}.hud>*{padding:4px 8px}.hud .icon-button{inline-size:30px}}@media(prefers-reduced-motion:reduce){.game,.panel,.toast,.toast__block{animation:none}}.hero{--logo: calc(min(38vw, 74svh)*.9167) ;--logo-x: 74vw;--logo-y: 50svh;position:relative;min-block-size:calc(100svh - var(--bar-h));display:grid;align-items:center}.hero__inner{position:relative;z-index:1;padding-block:48px 96px}.hero__art{position:absolute;inset-inline-start:calc(var(--logo-x) - var(--logo) / 2);inset-block-start:calc(var(--logo-y) - var(--bar-h) - var(--logo) / 2);inline-size:var(--logo);block-size:var(--logo);color:var(--ink);transition:opacity .5s var(--ease-out)}.hero__logo{display:block;inline-size:100%;block-size:100%}.stage-ready .hero__art{opacity:0}.hero__name{font-size:var(--fs-display);font-weight:700;line-height:.98;letter-spacing:-.045em;text-wrap:balance}.caret{display:inline-block;inline-size:.2em;block-size:.2em;margin-inline-start:.08em;border-radius:.03em;background:var(--cursor);vertical-align:baseline}.hero__title{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-block-start:28px;color:var(--ink);font-size:var(--fs-lead);font-weight:500;letter-spacing:-.01em}.hero__sep{inline-size:8px;block-size:8px;border-radius:2px;background:var(--accent)}.hero__tagline{margin-block-start:14px;color:var(--slate);font-size:var(--fs-lead);font-weight:350;max-inline-size:36ch;text-wrap:balance}.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px 20px;margin-block-start:44px}@media(prefers-reduced-motion:no-preference){.hero__text>*{animation:hero-in .9s var(--ease-out) both}.hero__text>:nth-child(2){animation-delay:.08s}.hero__text>:nth-child(3){animation-delay:.16s}.hero__text>:nth-child(4){animation-delay:.24s}.hero__name .caret{animation:gp-blink 1.06s steps(1,end) infinite,none}}@keyframes hero-in{0%{opacity:0;transform:translateY(18px)}}@media(max-width:559px){.hero__title{flex-direction:column;align-items:flex-start}.hero__sep{display:none}}@media(max-width:999px){.hero{--logo: calc(min(64vw, 36svh)*.9167) ;--logo-x: 50vw;--logo-y: 27svh;align-items:start}.hero__inner{padding-block:calc(var(--logo-y) + var(--logo) / 2 - var(--bar-h) + 20px) 72px}.hero__title{margin-block-start:18px}.hero__actions{margin-block-start:28px}}.about__summary{margin-block-start:36px;color:var(--ink);font-size:var(--fs-lead);font-weight:350;line-height:1.55}.about__sub{margin-block:64px 20px;font-size:var(--fs-h3)}.skills{display:grid;gap:18px}.skills__group{display:grid;grid-template-columns:11rem 1fr;gap:8px 24px;align-items:baseline;padding-block-end:18px;border-block-end:1px solid var(--rule)}.skills__group dt{transition:color .2s var(--ease-out)}.skills__group:hover dt{color:var(--accent-text)}.skills__group:last-child{border-block-end:0;padding-block-end:0}.skills dt{color:var(--ink);font-weight:550;font-size:15px}.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none}.tags li{padding:5px 11px;background:var(--surface);border-radius:6px;color:var(--ink);font-size:14.5px;font-weight:400;line-height:1.35;box-shadow:inset 0 0 0 1px var(--rule),0 2px 0 var(--rule)}.facts{display:grid;grid-template-columns:1fr 1fr;gap:24px 40px;margin-block-start:64px}.facts dt{margin-block-end:8px;color:var(--slate);font-size:var(--fs-small);font-weight:450}.facts dd{font-size:16px}@media(max-width:559px){.skills__group,.facts{grid-template-columns:1fr}}.timeline{list-style:none;margin-block-start:56px;--rail: 28px}.role{position:relative;padding-inline-start:var(--rail);padding-block-end:72px}.role:before{content:"";position:absolute;inset-inline-start:4px;inset-block:26px 0;inline-size:3px;background:radial-gradient(circle,var(--rule) 1.5px,transparent 1.6px) 0 0 / 3px 9px repeat-y}.role:last-child{padding-block-end:0}.role:last-child:before{display:none}.role:after{content:"";position:absolute;inset-inline-start:0;inset-block-start:6px;inline-size:11px;block-size:11px;border-radius:2px;background:var(--ink)}.role:first-child:after{background:var(--cursor);box-shadow:0 0 0 5px var(--accent-soft)}.role__dates{color:var(--slate);font-size:var(--fs-small);font-weight:450;letter-spacing:.01em}.role__title{margin-block-start:6px;font-size:clamp(24px,1vw + 18px,30px);letter-spacing:-.025em}.role__company{margin-block-start:4px;color:var(--accent-text);font-weight:500}.role__context{margin-block-start:12px;color:var(--slate);font-size:15.5px}.role__bullets{margin-block-start:22px}.highlight{position:relative;margin-block-start:32px;padding:26px 28px 28px;background:var(--surface);border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--rule),var(--shadow-block)}.highlight:before{content:"";position:absolute;inset-block-start:-7px;inset-inline-end:28px;inline-size:14px;block-size:14px;border-radius:3px;background:var(--cursor)}.highlight__label{margin-block-end:16px;font-size:18px;font-weight:600;letter-spacing:-.01em}.projects{margin-block-start:36px}.projects__label{margin-block-end:12px;font-size:18px;font-weight:600}.projects__row{display:grid;grid-template-columns:10.5rem 1fr;gap:2px 20px;padding-block:14px;border-block-start:1px solid var(--rule)}.projects__row dt{grid-row:span 2;color:var(--ink);font-weight:550}.projects__tech{color:var(--slate);font-size:var(--fs-small)}@media(max-width:559px){.projects__row{grid-template-columns:1fr}.projects__row dt{grid-row:auto}.highlight{padding:22px 20px 24px}}.contact{min-block-size:80svh}.contact__line{margin-block-start:28px;color:var(--slate);font-size:var(--fs-lead)}.contact__email-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-block-start:40px}.contact__email{color:var(--ink);font-size:clamp(24px,2.6vw + 12px,40px);font-weight:600;letter-spacing:-.03em;line-height:1.1;text-decoration:none;overflow-wrap:anywhere;background:linear-gradient(var(--accent),var(--accent)) no-repeat 0 100% / 100% 3px;padding-block-end:6px;transition:background-size .3s var(--ease-out)}.contact__email:hover{background-size:100% 9px}.contact__actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;margin-block-start:48px}.contact__social{display:flex;gap:12px}.footer{color:var(--slate);font-size:var(--fs-small)}.footer__inner{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;padding-block:28px 36px;background:linear-gradient(var(--rule),var(--rule)) no-repeat var(--gutter) 0 / calc(100% - 2 * var(--gutter)) 1px}.footer__mark{inline-size:22px;block-size:22px;color:var(--ink)}.footer__year{margin-inline-start:auto}.stage{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .6s var(--ease-out)}.stage-ready .stage{opacity:1}@media(max-width:999px){.stage-ready .stage{opacity:calc(1 - .82 * var(--stage-behind, 0));transition:none}}#main,.footer{position:relative;z-index:1}.ask-launcher,.ask-panel{--ask-edge: 16px;position:fixed;z-index:60;inset-inline-end:calc(var(--ask-edge) + env(safe-area-inset-right,0px));inset-block-end:calc(var(--ask-edge) + env(safe-area-inset-bottom,0px))}@media(min-width:720px){.ask-launcher,.ask-panel{--ask-edge: 24px}}.ask-launcher{min-block-size:44px;padding:10px 18px 10px 16px;gap:10px;font-size:15px}.ask-launcher[hidden]{display:none}@media(max-width:719px){.ask-launcher{transition:transform .25s var(--ease-out),opacity .25s var(--ease-out),visibility .25s}.ask-launcher[data-tucked=true]{visibility:hidden;opacity:0;transform:translateY(16px)}}.ask-panel{display:flex;flex-direction:column;inline-size:min(400px,calc(100vw - 2 * var(--ask-edge)));block-size:min(600px,calc(100dvh - 2 * var(--ask-edge) - env(safe-area-inset-bottom,0px)));padding:18px 18px 12px;background:var(--surface);color:var(--body);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow-block),0 24px 60px -24px #0c0f1259;font-size:15px;line-height:1.55}@media(prefers-reduced-motion:no-preference){.ask-panel{animation:ask-in .28s var(--ease-out) both}}@keyframes ask-in{0%{opacity:0;transform:translateY(12px)}}.ask-panel__head{display:flex;align-items:center;gap:12px}.ask-panel__title{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:650;letter-spacing:-.015em}.ask-panel__title:before{content:"";inline-size:9px;block-size:9px;border-radius:2px;background:var(--cursor)}.ask-panel__close{display:grid;place-items:center;inline-size:40px;block-size:40px;margin-inline-start:auto;margin-inline-end:-8px;padding:0;background:none;color:var(--slate);border:0;border-radius:var(--radius-sm);cursor:pointer}.ask-panel__close:hover{background:var(--sunken);color:var(--ink)}.ask-panel__intro{margin-block-start:2px;color:var(--slate);font-size:var(--fs-small)}.ask-log{flex:1;min-block-size:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:10px;margin-block:14px 12px;padding-block:2px}.ask-msg{max-inline-size:88%;padding:9px 13px;border-radius:12px;white-space:pre-wrap;overflow-wrap:anywhere}.ask-msg--user{align-self:flex-end;background:var(--ink);color:var(--on-ink);border-end-end-radius:4px}.ask-msg--assistant{align-self:flex-start;background:var(--sunken);color:var(--ink);border-end-start-radius:4px}.ask-msg__pending{color:var(--slate)}@media(prefers-reduced-motion:no-preference){.ask-msg__pending{animation:ask-pulse 1.2s ease-in-out infinite}}@keyframes ask-pulse{50%{opacity:.45}}.ask-msg__note{display:block;color:var(--slate);font-size:13px}.ask-msg__note:not(:first-child){margin-block-start:4px}.ask-suggest{list-style:none;display:grid;gap:8px;margin-block-start:auto}.ask-suggest__item{inline-size:100%;padding:10px 14px;background:var(--surface);color:var(--ink);border:1px solid var(--rule);border-radius:var(--radius-sm);font:inherit;text-align:start;cursor:pointer;transition:border-color .15s var(--ease-out)}.ask-suggest__item:hover{border-color:var(--accent)}.ask-error{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 13px;border-inline-start:3px solid var(--accent);background:var(--sunken);border-radius:4px var(--radius-sm) var(--radius-sm) 4px;color:var(--ink)}.ask-error__retry{padding:4px 0;background:none;border:0;color:var(--accent-text);font:inherit;font-weight:550;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.ask-form{display:flex;gap:8px}.ask-form__input{flex:1;min-inline-size:0;min-block-size:44px;padding:10px 12px;background:var(--ground);color:var(--ink);border:1px solid var(--rule);border-radius:var(--radius-sm);font:inherit;font-size:16px}.ask-form__input::placeholder{color:var(--slate);opacity:1}.ask-form__input:focus-visible{outline-offset:0;border-color:var(--accent)}.ask-form__send{display:inline-flex;align-items:center;gap:8px;min-block-size:44px;padding:0 16px;background:var(--ink);color:var(--on-ink);border:0;border-radius:var(--radius-sm);font:inherit;font-weight:550;cursor:pointer}.ask-form__send:disabled{background:var(--sunken);color:var(--slate);cursor:default}.ask-form__stop{inline-size:9px;block-size:9px;border-radius:2px;background:var(--cursor)}.ask-panel__foot{margin-block-start:8px;color:var(--slate);font-size:12px;text-align:end}@media(max-width:559px){.ask-panel{inset-inline:0;inset-block-end:0;inline-size:100%;block-size:min(600px,86dvh);padding:16px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));border-inline:0;border-block-end:0;border-radius:var(--radius) var(--radius) 0 0}}
