@font-face{font-family:Nunito;src:url(../fonts/nunito-vietnamese.woff2) format("woff2");font-style:normal;font-weight:400 800;font-display:swap;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:Nunito;src:url(../fonts/nunito-latin.woff2) format("woff2");font-style:normal;font-weight:400 800;font-display:swap;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;--cream-50: #faf7ef;--cream-100: #fff9e9;--brown-900: #44382f;--brown-600: #706351;--mint-100: #d9ebe0;--mint-200: #c6ddcb;--mint-300: #b7d1bc;--mint-700: #37634c;--coral-600: #b84e38;--coral-700: #a7402e;--line-warm: #ded9ca;--page: var(--cream-50);--surface: var(--cream-100);--text: var(--brown-900);--text-muted: var(--brown-600);--scene: var(--mint-100);--action: var(--coral-600);--action-hover: var(--coral-700);--focus: #264f74;--live: var(--mint-700);--border: var(--line-warm);--text-small: .875rem;--text-body: 1rem;--text-emphasis: 1.25rem;--text-title: 1.75rem;--text-display: 3rem;--text-hero: 4.5rem;font-family:Nunito,ui-rounded,Segoe UI,sans-serif;color:var(--text);background:var(--page);font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:280px;line-height:1.5;font-size:var(--text-body)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}button:focus-visible,a:focus-visible,.game-overlay:focus-visible,.game-viewport:focus-visible{outline:3px solid var(--focus);outline-offset:5px}button:disabled{cursor:wait}button:disabled:active{transform:none}button{border:0}::selection{background:#f1d6b1;color:var(--text)}.header,main,.footer{width:min(1160px,calc(100% - 64px));margin-inline:auto}.header{min-height:100px;display:flex;justify-content:space-between;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:var(--text-emphasis);font-weight:800;white-space:nowrap}.brand-amp{color:var(--text-muted)}.header-actions{display:flex;gap:28px;align-items:center}.lane{color:var(--text-muted);font-size:var(--text-small)}.utility{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 0;background:transparent;min-height:44px;font-weight:600}.icon{flex-shrink:0;vertical-align:middle}.stage{position:relative;background:var(--scene);border-radius:24px;isolation:isolate;overflow:hidden}.landscape{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}.stage-top{position:relative;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:23px 30px 0;min-height:55px;font-size:var(--text-small)}.best{display:flex;align-items:center;gap:8px;color:#564a37}.best .icon{width:21px;height:21px}.best strong{font-size:var(--text-emphasis);font-weight:800;margin-inline-start:6px;font-variant-numeric:tabular-nums}.connection{display:flex;align-items:center;gap:7px;font-weight:600;color:#65583e}.connection.connected{color:var(--live)}.status-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.welcome{display:grid;grid-template-columns:1fr 1fr;align-items:center;min-height:445px;padding:26px 60px 40px;gap:4px}.welcome-copy{padding-bottom:16px;position:relative;z-index:1}h1{font-size:var(--text-hero);font-weight:800;line-height:1.02;letter-spacing:-.055em;margin:0 0 20px;text-wrap:balance}h1 span{display:block;color:#53664c}.intro{font-size:var(--text-emphasis);line-height:1.5;margin:0 0 30px}.start-action{max-width:290px}.primary{display:flex;align-items:center;justify-content:center;gap:12px;min-height:56px;width:100%;border-radius:12px;background:var(--action);color:#fff9e9;font-size:var(--text-body);font-weight:800;padding:14px 20px;box-shadow:0 4px #883d2c;transition:transform .15s}.primary .icon:first-child{width:20px}.primary .icon:last-child{width:20px;margin-inline-start:auto}.primary .icon:only-child{margin-inline-start:0}.primary:disabled{background:#b8c8b8;color:#465445;box-shadow:0 3px #a0b39f}.control-hint{font-size:var(--text-small);margin:16px 0 0;text-align:center;white-space:normal;text-wrap:balance}kbd{font:inherit;font-size:var(--text-small);display:inline-block;line-height:1.35;padding:2px 7px;border:1px solid #9fae98;border-bottom-width:2px;border-radius:5px;background:#edf2e2}.portrait{position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center}.portrait canvas{position:relative;width:122%;max-width:none;flex-shrink:0;pointer-events:none}.flight-doodle{position:absolute;width:112%;height:100%;inset-inline-start:-6%;inset-block-start:0;pointer-events:none}.live-strip{display:flex;align-items:center;justify-content:space-between;gap:24px;position:relative;margin:0 28px 24px;padding:14px 24px;background:var(--surface);border-radius:14px;min-height:80px}.live-source{display:flex;align-items:center;gap:14px;min-width:0}.wheel{flex-shrink:0}.live-source>div{display:flex;flex-direction:column;gap:2px}.source-title{font-weight:800;font-size:var(--text-body)}.source-state{font-size:var(--text-small);color:var(--text-muted);line-height:1.4}.telemetry{display:flex;align-items:center;gap:24px;flex-shrink:0;font-variant-numeric:tabular-nums}.telemetry>div{display:flex;align-items:baseline;gap:7px;white-space:nowrap}.telemetry strong{font-size:var(--text-title);font-weight:800;line-height:1.25;min-width:2ch;text-align:end}.telemetry span{font-size:var(--text-small);color:var(--text-muted)}.metric-divider{height:30px;width:1px;background:var(--border)}.wind-value .icon{align-self:center;color:#6b795c;margin-inline-end:4px}.under-stage{display:flex;gap:34px;align-items:center;justify-content:center;padding:24px 0;font-size:var(--text-small);color:var(--text-muted)}.under-stage>span{display:flex;align-items:center;gap:8px}.under-stage .icon{width:20px;height:20px;color:#94783c}.under-stage strong{font-weight:800;color:var(--text)}.gate-symbol{width:14px;height:22px;background:linear-gradient(to bottom,#95714e 0 6px,transparent 6px 15px,#95714e 15px 22px);border-inline:2px solid #795b40;border-radius:2px}.footer{display:flex;justify-content:space-between;gap:16px;padding:20px 0 28px;border-top:1px solid var(--border);font-size:var(--text-small);color:var(--text-muted)}.footer a{min-height:24px}.game-layout{position:relative;display:flex;justify-content:center;align-items:center;gap:40px;padding:16px 24px 20px}.game-layout.has-panel{min-height:min(460px,calc(100svh - 84px))}.game-viewport{position:relative;width:min(100%,calc((100svh - 280px)*.75),405px);aspect-ratio:3/4;border-radius:12px;overflow:hidden;flex-shrink:0;background:var(--scene);outline-offset:4px}.game-viewport>canvas{width:100%;height:100%;display:block;user-select:none}.game-viewport.is-active>canvas{touch-action:none;cursor:pointer}.game-hud{position:absolute;z-index:1;inset-block-start:10px;inset-inline:16px;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:12px;text-align:center;pointer-events:none}.score{grid-column:2;font-size:var(--text-display);font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--text);display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:44px;padding:6px 12px;border-radius:12px;background:var(--surface)}.pause-button{grid-column:3;grid-row:1;justify-self:end;pointer-events:auto;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--surface)}.game-overlay{position:absolute;z-index:2;inset:0;display:flex;align-items:center;justify-content:flex-start;flex-direction:column;padding:20px;background:#d9ebe0e8;text-align:center;overflow-y:auto;overscroll-behavior:contain}.game-overlay>.pause-card,.game-overlay>.result{flex-shrink:0;margin-block:auto}.game-overlay:focus-visible{outline-offset:-5px}.pause-card{width:100%;max-width:300px}.pause-card>.icon{width:32px;height:32px;color:var(--text-muted);margin-bottom:12px}h2{font-size:var(--text-title);line-height:1.2;letter-spacing:-.02em;font-weight:800;margin:0 0 16px;text-wrap:balance}.pause-card p{font-size:var(--text-body);margin:0 0 24px;text-wrap:pretty}.countdown-overlay{justify-content:center;background:#d9ebe0b0;pointer-events:none}.countdown{font-size:var(--text-hero);font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.countdown-overlay p{font-weight:600;font-size:var(--text-body)}.flight-notes{font-size:var(--text-emphasis);line-height:1.6;color:#50694f;flex:1;max-width:210px;transform:rotate(-5deg)}.flight-notes p{margin:16px 0 0}.note-line{display:block;width:35px;height:3px;border-radius:3px;background:#90ad8c;transform:rotate(-10deg)}.right-note{transform:rotate(5deg);padding-inline-start:20px}.right-note>.icon{width:35px;height:35px;color:#937139}.over-overlay{background:#f9f4e7ed;padding:24px}.result{width:100%;max-width:320px}.result-icon{display:inline-grid;place-items:center;width:56px;height:56px;background:#e8d8ab;border-radius:50%;margin-bottom:16px;color:#755a32}.result-icon .icon{width:32px;height:32px}.result h2{margin-bottom:8px}.result>p{margin:0;font-size:var(--text-small)}.result-numbers{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:26px 0 8px;font-variant-numeric:tabular-nums}.result-numbers>div{display:flex;flex-direction:column;gap:8px}.result-numbers span{font-size:var(--text-small);color:var(--text-muted)}.result-numbers strong{font-size:var(--text-display);line-height:1;font-weight:800}.result .score-detail{margin:16px 0 24px;color:var(--text-muted)}.result .local-note{margin-top:16px;font-size:var(--text-small);color:var(--text-muted)}.help-dialog{color:var(--text);border:0;border-radius:20px;background:var(--page);padding:0;width:min(480px,calc(100% - 32px));max-height:calc(100svh - 32px);overscroll-behavior:contain;box-shadow:0 15px 60px #2e3f3430}.help-dialog::backdrop{background:#354b3c80}.help-content{padding:36px 32px;position:relative}.dialog-close{position:absolute;inset-block-start:8px;inset-inline-end:12px;width:44px}.help-content h2{padding-inline-end:20px}.help-content ol{padding-inline-start:22px;margin:24px 0}.help-content li{padding-inline-start:6px;margin:16px 0;line-height:1.6}.help-content li::marker{font-weight:800;color:#8f6942}.help-content strong{font-weight:800}.help-content>p{color:var(--text-muted);font-size:var(--text-small);margin-bottom:24px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(hover:hover){.primary:not(:disabled):hover{background:var(--action-hover)}.utility:hover,.footer a:hover{color:var(--action)}.pause-button:hover{background:#f2e7c5}}@media(prefers-reduced-motion:no-preference){.primary:not(:disabled):active,.utility:active,.pause-button:active{transform:scale(.96)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}.flight-notes{transform:none}}@media(max-width:1000px){.welcome{padding-inline:40px}.welcome h1{font-size:var(--text-display)}.intro{font-size:var(--text-body)}.lane{display:none}.flight-notes{font-size:var(--text-body);max-width:150px}.game-layout{gap:20px}.right-note{padding-inline-start:0}}@media(max-width:650px){.header,main,.footer{width:calc(100% - 28px)}.header{min-height:72px;gap:12px;flex-wrap:wrap;padding-block:12px}.brand{font-size:var(--text-body);gap:8px;white-space:normal;max-width:100%}.brand svg{width:32px;height:32px}.header-actions{gap:0;margin-inline-start:auto}.utility{font-size:var(--text-small);gap:6px}.utility .icon{width:20px;height:20px}.stage{border-radius:20px}.stage-top{padding:14px 18px 0;min-height:40px;gap:10px;flex-wrap:wrap}.best .icon{width:18px;height:18px}.best strong{font-size:var(--text-body)}.welcome{display:flex;flex-direction:column;gap:8px;padding:20px 20px 24px;min-height:0;text-align:center}.welcome-copy{display:contents}.welcome h1{order:1;font-size:var(--text-display);line-height:1.02;letter-spacing:-.05em;margin:0}.welcome h1 span{display:block}.intro{order:2;font-size:var(--text-body);margin:4px 0 0}.portrait{order:3;align-self:center;width:280px;height:176px;flex:none;margin:0}.portrait canvas{width:100%;height:auto}.flight-doodle{width:100%;inset-inline-start:0}.start-action{order:4;width:100%;max-width:300px;margin-top:10px}.primary{min-height:52px}.control-hint{margin-top:12px}.live-strip{margin:0 14px 14px;padding:14px;gap:12px;align-items:center;flex-wrap:wrap;border-radius:12px;min-height:0}.live-source{gap:10px;flex:1}.wheel{width:34px;height:40px}.source-title,.source-state{font-size:var(--text-small)}.telemetry{gap:12px;width:100%;justify-content:center;padding-top:10px;border-top:1px solid var(--border)}.telemetry strong{font-size:var(--text-emphasis)}.telemetry>div{gap:6px}.metric-divider{height:20px}.wind-value .icon{width:20px;height:20px}.under-stage{gap:20px;padding:18px 4px;flex-wrap:wrap;font-size:var(--text-small)}.under-stage .control-legend{width:100%;justify-content:center;margin-bottom:-8px}.under-stage .icon{width:18px;height:18px}.footer{font-size:var(--text-small);padding:18px 0 24px;gap:12px;flex-wrap:wrap}.game-layout{padding:14px 12px;gap:0}.flight-notes{display:none}.game-viewport{width:min(100%,calc((100svh - 270px)*.75),405px);border-radius:10px}.is-game .stage-top{padding-top:10px}.is-game .live-strip{padding:10px 12px}.is-game .telemetry{padding-top:8px}.game-overlay{padding:16px}.pause-card h2{font-size:var(--text-emphasis)}.pause-card p{font-size:var(--text-small)}.game-hud{inset-block-start:14px}.score{font-size:var(--text-title)}.result-icon{width:40px;height:40px;margin-bottom:10px}.result-icon .icon{width:24px;height:24px}.result-numbers{margin-top:20px}.result-numbers strong,.result h2{font-size:var(--text-title)}.result .score-detail{margin:12px 0 18px}.result .local-note{margin-top:12px}.help-content{padding:36px 24px 28px}.help-content h2{font-size:var(--text-title)}}@media(max-height:700px)and (max-width:650px){.header{min-height:60px}.welcome{gap:4px;padding-block:12px 20px}.welcome h1{font-size:var(--text-title)}.welcome h1 span{display:inline}.portrait{height:134px;width:226px}.intro{font-size:var(--text-small)}.start-action{margin-top:0}.stage-top{padding-top:10px}.live-strip{padding:10px 12px}.game-viewport{width:min(100%,calc((100svh - 230px)*.75))}.result-icon{display:none}.result h2{font-size:var(--text-emphasis)}.result-numbers{margin:14px 0 0;gap:8px}.result-numbers>div{gap:4px}.result .score-detail{margin:8px 0 12px}.result .local-note{font-size:var(--text-small);line-height:1.3}.over-overlay{padding:12px}.is-game .under-stage{padding:10px}}@media(orientation:landscape)and (max-height:600px){.game-viewport{width:min(100%,calc((100svh - 170px)*.75))}.is-game .stage-top{display:none}.is-game .live-strip{min-height:50px;margin-bottom:12px;padding:8px 18px;flex-wrap:wrap;row-gap:4px}.is-game .live-source{flex:1 1 auto;min-width:min-content}.is-game .telemetry{flex:1 0 auto;justify-content:flex-end;width:auto;border:0;padding:0}.is-game .live-strip .wheel{height:34px;width:32px}.is-game .game-layout{padding-block:8px}.header{min-height:60px}.is-game .source-title{display:none}.game-overlay{padding:10px}.result-icon,.result>p:not(.score-detail,.is-warning){display:none}.result .local-note.is-warning{margin:8px 0 0;font-size:var(--text-small);line-height:1.3}.result h2{font-size:var(--text-emphasis)}.result-numbers{margin:10px 0}.result-numbers strong{font-size:var(--text-title)}.result-numbers span{font-size:var(--text-small)}.result .score-detail{margin:8px 0}.result .primary{min-height:44px;padding:10px}.pause-card p{margin-bottom:12px;font-size:var(--text-small)}.pause-card>.icon{display:none}.pause-card h2{font-size:var(--text-emphasis)}}@media(forced-colors:active){button{border:1px solid ButtonText}.status-dot{background:CanvasText}button:focus-visible,a:focus-visible,.game-overlay:focus-visible,.game-viewport:focus-visible{outline-color:Highlight}}:root{--gold-surface: #f9e5a3;--gold-ink: #624318;--gold-ring: #936717}.wheel{width:52px;height:56px;flex-shrink:0}.sleeping-hamster{transform-box:fill-box;transform-origin:center bottom}.hamster-paws{transform-box:fill-box;transform-origin:center}@media(prefers-reduced-motion:no-preference){.is-resting .sleeping-hamster{animation:breathe 3s ease-in-out infinite}.is-moving .hamster-paws{animation:scamper .18s ease-in-out infinite alternate}}@keyframes breathe{50%{transform:scale(1.025,1.07)}}@keyframes scamper{to{transform:translate(2px) scaleX(.8)}}.is-game .stage-top .connection{margin-inline-start:auto}.score-stack{grid-column:2;display:flex;flex-direction:column;align-items:center;gap:4px}.score-cluster{display:flex;align-items:center;justify-content:center;gap:8px}.run-best{font-size:var(--text-small);background:var(--surface);border-radius:6px;padding:2px 6px;font-variant-numeric:tabular-nums}.double-badge{position:relative;display:grid;grid-template-columns:36px auto;align-items:center;gap:3px;padding:3px 7px 3px 3px;border-radius:12px;color:var(--gold-ink);background:var(--gold-surface);font-size:var(--text-small);font-variant-numeric:tabular-nums;white-space:nowrap}.double-badge svg{width:36px;height:36px;grid-column:1;grid-row:1;fill:none;stroke-width:2.5}.double-badge strong{grid-column:1;grid-row:1;font-weight:800}.double-badge>span{grid-column:2}.timer-track{stroke:#d6bd7b}.timer-ring{stroke:var(--gold-ring)}.result-numbers{align-items:center;margin-bottom:24px}.result-numbers>div:last-child strong{font-size:var(--text-emphasis)}.result-numbers>div:last-child{gap:4px}@media(max-width:650px){.wheel{width:46px;height:50px}.run-best .device-label{display:none}.run-best{max-width:100%}}@media(orientation:landscape)and (max-height:600px){.score-stack{gap:2px}.score{font-size:var(--text-title)}.run-best{padding-block:0}.result-numbers{margin-bottom:12px}.is-game .live-strip .wheel{width:38px;height:40px}}@media(orientation:landscape)and (max-height:600px){.is-game .live-source.has-reading .source-title{display:block}.is-game .live-source.has-reading .source-state{display:none}}@media(orientation:landscape)and (max-height:600px){.game-hud{grid-template-columns:1fr auto}.score-stack{grid-column:1;justify-self:start}.pause-button{grid-column:2}}
