.portal-button{--portal-background:#fff;--portal-color:#000;--portal-ring:#1a1a1a;--portal-ring-hover:#dddddc;box-sizing:border-box;border:2px solid var(--portal-ring);background:var(--portal-background);height:44px;color:var(--portal-color);white-space:nowrap;cursor:pointer;touch-action:manipulation;border-radius:22px;align-items:center;gap:10px;padding:0 20px;font:500 15px/1 system-ui,-apple-system,sans-serif;text-decoration:none;transition:border-color .3s,transform .15s;display:inline-flex}.portal-button:has(>.portal-logo,>svg){padding-left:4px}.portal-button>svg{flex:none;width:32px;height:32px}.portal-button .portal-ring{fill:var(--portal-ring);transition:fill .3s}.portal-logo{flex:none;width:32px;height:32px;position:relative}.portal-logo img{object-fit:contain;width:32px;height:32px;transition:opacity .3s;position:absolute;inset:0}.portal-logo-light,.portal-button-light-ring .portal-logo-dark{opacity:0}.portal-button-light-ring .portal-logo-light{opacity:1}.portal-button:is(:hover,:focus-visible){border-color:var(--portal-ring-hover);color:var(--portal-color);outline:none;text-decoration:none}.portal-button:is(:hover,:focus-visible) .portal-logo-dark{opacity:0}.portal-button:is(:hover,:focus-visible) .portal-logo-light,.portal-button-light-ring:is(:hover,:focus-visible) .portal-logo-dark{opacity:1}.portal-button-light-ring:is(:hover,:focus-visible) .portal-logo-light{opacity:0}.portal-button:is(:hover,:focus-visible) .portal-ring{fill:var(--portal-ring-hover)}.portal-button:active{transform:scale(.98)}.portal-button:disabled{cursor:wait;opacity:.6}.portal-button-dark{--portal-background:#000;--portal-color:#fff}.portal-button-light-ring{--portal-ring:#dddddc;--portal-ring-hover:#1a1a1a}@media (prefers-reduced-motion:reduce){.portal-button,.portal-logo img,.portal-button .portal-ring{transition:none}.portal-button:active{transform:none}}@media (forced-colors:active){.portal-button:focus-visible{outline-offset:2px;outline:2px solid highlight}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--ink:#1f2430;--ink-soft:#5b6273;--paper:#fff;--paper-soft:#f5f7fb;--line:#e3e7ef;--accent:#ff8a3d;--accent-ink:#fff;--gold:#ffb800;--radius:20px;--shadow:0 18px 50px #141e3c2e;--glass:color-mix(in oklab, var(--paper) 74%, transparent);--glass-edge:oklab(100% 0 5.96046e-8/.6);--text-xs:12px;--text-sm:14px;--text-md:16px;--text-lg:20px;--text-hero:76px;-webkit-tap-highlight-color:transparent;font-family:Nunito,ui-rounded,SF Pro Rounded,system-ui,-apple-system,PingFang SC,Noto Sans SC,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--ink:#eef1f7;--ink-soft:#a7afc0;--paper:#1d212b;--paper-soft:#262b37;--line:#353b4a}}*{box-sizing:border-box}[hidden]:not(.screen){display:none!important}html,body{background:linear-gradient(to bottom, var(--edge-top,#6cc4ff) 50%, var(--edge-bottom,#d9b27b) 50%) fixed;height:100%;color:var(--ink);overscroll-behavior:none;margin:0;overflow:hidden}button{font:inherit;color:inherit}kbd{font:inherit;border:1.5px solid;border-bottom-width:3px;border-radius:6px;padding:0 .4em}.stage{-webkit-user-select:none;user-select:none;touch-action:manipulation;grid-template:1fr/1fr;height:100dvh;display:grid;position:fixed;inset:0 0 auto;overflow:hidden}.stage>*{grid-area:1/1;position:relative}@media (display-mode:standalone){html,body,.stage{height:min(100lvh, calc(100dvh + env(safe-area-inset-top)))}}.ui{display:contents}.ui>*{grid-area:1/1;position:relative}#game{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.topbar{padding:max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left));pointer-events:none;justify-content:space-between;align-self:start;align-items:center;gap:12px;display:flex}.topbar>*{pointer-events:auto}.icon-button,.chip{color:#1f2430;cursor:pointer;background:#ffffffc7;border:0;border-radius:999px;place-items:center;min-width:44px;height:44px;transition:transform .15s;display:inline-grid;box-shadow:0 4px 14px #0000001a,inset 0 0 0 1px #ffffffb3}:is(.icon-button,.chip) .icon{width:22px;height:22px}:is(.icon-button,.chip):active{transform:scale(.94)}:is(.icon-button,.chip):focus-visible{outline:3px solid var(--accent);outline-offset:2px}.chip{font-size:var(--text-sm);align-items:center;gap:8px;max-width:60vw;padding:4px 14px 4px 4px;font-weight:800;display:inline-flex}.chip img{object-fit:contain;flex:none;width:36px;height:36px}.chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.score{margin-top:calc(max(12px, env(safe-area-inset-top)) + 64px);color:#fff;-webkit-text-stroke:3px #1f2430;paint-order:stroke fill;text-shadow:0 6px #1f243040;pointer-events:none;font-variant-numeric:tabular-nums;place-self:start center;font-size:clamp(56px,12vh,96px);font-weight:900}.score.bump{animation:.18s ease-out bump}@keyframes bump{50%{transform:scale(1.18)}}.screen{text-align:center;pointer-events:none;place-self:center;padding:24px;transition:opacity .25s,transform .25s}.screen button{pointer-events:auto}.screen[hidden]{opacity:0;visibility:hidden;display:block;transform:translateY(12px)}.screen[hidden] *,.screen[hidden] :before,.screen[hidden] :after{animation-play-state:paused}.title-screen{margin-bottom:max(calc(76 / 640 * 100dvh + 4dvh), env(safe-area-inset-bottom));align-self:end}.logo{color:#fff;-webkit-text-stroke:4px #1f2430;paint-order:stroke fill;text-shadow:0 8px #1f243040;letter-spacing:-.02em;margin:0 0 12px;font-size:clamp(44px,11vw,84px);font-weight:900;line-height:.95}.logo .word{display:block}.logo .accent{color:var(--accent)}.logo .letter{animation:2.4s ease-in-out infinite float;animation-delay:calc(var(--i) * -.18s);display:inline-block}@keyframes float{50%{transform:translateY(-7px)rotate(-2deg)}}.hint,.best{-webkit-backdrop-filter:blur(10px);color:#1f2430;font-size:var(--text-sm);background:#ffffffb8;border-radius:999px;margin:18px 4px 0;padding:8px 16px;font-weight:800;display:inline-block}:is(.hint,.best) kbd{font-size:var(--text-xs);margin-right:4px}@media (pointer:coarse){.keyboard-only{display:none}}.best{color:#6b5200;background:#ffe48cd9}.card{background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(1.6);border:1px solid var(--glass-edge);width:min(380px,100vw - 32px);color:var(--ink);box-shadow:var(--shadow), inset 0 1px 0 #fff9;pointer-events:auto;border-radius:28px}.card h2{margin:0 0 12px;font-size:26px}.results{grid-auto-columns:1fr;grid-auto-flow:column;gap:12px;margin:0;display:grid}.results div{background:var(--paper-soft);border-radius:14px;padding:10px}.results dt{color:var(--ink-soft);font-size:13px;font-weight:700}.results dd{font-variant-numeric:tabular-nums;margin:0;font-size:32px;font-weight:900}.sync{min-height:1.4em;color:var(--ink-soft);margin:10px 0 0;font-size:14px}.actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;display:flex}.primary-button,.soft-button{cursor:pointer;border-radius:999px;min-height:46px;padding:0 22px;font-weight:800;transition:transform .15s,filter .15s}:is(.primary-button,.soft-button):active{transform:scale(.97)}:is(.primary-button,.soft-button):focus-visible{outline:3px solid var(--accent);outline-offset:2px}.primary-button{background:linear-gradient(#ff9a52, var(--accent));color:var(--accent-ink);font-size:var(--text-md);border:0;box-shadow:0 4px #d0672a,0 10px 20px #ff8a3d59}.ghost-button{min-height:44px;color:var(--ink-soft);font-size:var(--text-sm);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;gap:6px;font-weight:800;display:inline-flex}.ghost-button .icon{width:18px;height:18px}.ghost-button:hover{color:var(--ink);background:color-mix(in oklab, var(--ink) 6%, transparent)}.ghost-button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.soft-button{border:2px solid var(--line);background:var(--paper);color:var(--ink)}.text-button{color:var(--ink-soft);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:8px;text-decoration:underline}.result{width:min(320px,100vw - 40px);max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));touch-action:pan-y;padding:28px 24px 18px;overflow-y:auto}@media (height<=500px) and (orientation:landscape){.title-screen{padding:16px max(24px, env(safe-area-inset-right));place-self:center end;margin-bottom:0}.logo{font-size:36px}.hint,.best{margin-top:8px}}.result-body{justify-items:center;animation:.5s cubic-bezier(.2,1.3,.4,1) both rise;display:grid}.result-medal{width:104px;height:104px;margin-bottom:10px;position:relative}.result-medal.won:before{content:"";background:radial-gradient(closest-side,#ffd6668c,#0000);border-radius:50%;animation:2.4s ease-in-out infinite halo;position:absolute;inset:-18px}.medal{filter:drop-shadow(0 8px 12px #0000002e);width:100%;height:100%;display:block;position:relative}.medal-none{opacity:.55;filter:none}.won .medal{animation:.7s cubic-bezier(.2,1.5,.4,1) .2s both medal-in}.medal-shine{pointer-events:none;border-radius:50%;position:absolute;inset:0;overflow:hidden}.medal-shine:before{content:"";background:linear-gradient(115deg,#0000 35%,#fffc 50%,#0000 65%);animation:1.4s ease-in-out .9s shine;position:absolute;inset:0;transform:translate(-120%)}.eyebrow{font-size:var(--text-xs);letter-spacing:.12em;color:var(--ink-soft);margin:0;font-weight:800}@property --shown{syntax:"<integer>";inherits:false;initial-value:0}.result-score{font-size:var(--text-hero);letter-spacing:-.03em;font-variant-numeric:tabular-nums;counter-reset:shown var(--shown);font-weight:900;line-height:1;animation:.9s cubic-bezier(.2,.8,.2,1) .15s both count-up}.result-score:after{content:counter(shown)}.result-best{background:color-mix(in oklab, var(--ink) 7%, transparent);color:var(--ink-soft);font-size:var(--text-sm);border-radius:999px;margin:8px 0 0;padding:3px 12px;font-weight:800}.result-best.new{background:var(--gold);color:#3a2a00;animation:.4s ease-out .9s bump}.medal-progress{width:100%;font-size:var(--text-xs);color:var(--ink-soft);gap:6px;margin-top:18px;font-weight:700;display:grid}.medal-progress .bar{background:color-mix(in oklab, var(--ink) 9%, transparent);border-radius:999px;height:6px;overflow:hidden}.medal-progress .bar>span{height:100%;width:calc(var(--ratio) * 100%);border-radius:inherit;background:linear-gradient(90deg, #ffd166, var(--accent));transform-origin:0;animation:.8s cubic-bezier(.2,.8,.2,1) .4s both grow;display:block}.result-actions{gap:4px;margin-top:20px;display:grid}.result-actions .primary-button{width:100%}@keyframes rise{0%{opacity:0;transform:translateY(16px)scale(.96)}}@keyframes medal-in{0%{opacity:0;transform:scale(.2)rotate(-40deg)}}@keyframes shine{to{transform:translate(120%)}}@keyframes halo{50%{opacity:.7;transform:scale(1.08)}}@keyframes grow{0%{transform:scaleX(0)}}@keyframes count-up{0%{--shown:0}to{--shown:var(--target)}}dialog{border-radius:var(--radius);background:var(--paper);width:min(420px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ink);box-shadow:var(--shadow);opacity:1;transition:opacity .2s, transform .2s, overlay .2s allow-discrete, display .2s allow-discrete;border:0;padding:0;transform:none}dialog:not([open]){opacity:0;transform:translateY(16px)scale(.98)}dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#141e3c59}@starting-style{dialog[open]{opacity:0;transform:translateY(16px)scale(.98)}}.dialog-body{text-align:center;gap:12px;padding:24px;display:grid}.dialog-body h2{margin:0;font-size:22px}.dialog-body h3{text-align:left;margin:8px 0 0;font-size:16px}.dialog-body p{color:var(--ink-soft);margin:0}.dialog-body .portal-button{justify-self:center}.check{text-align:left;background:var(--paper-soft);cursor:pointer;border-radius:14px;align-items:flex-start;gap:10px;padding:12px;display:flex}.check input{width:20px;height:20px;accent-color:var(--accent);flex:none;margin:2px 0 0}.check span{font-weight:700}.check small{color:var(--ink-soft);font-weight:500;display:block}.fine-print{font-size:13px}.dialog-body .dev-note{color:#b07a00}.scenes{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.scene-preview{background:radial-gradient(circle at 78% 42%, var(--sun) 0 9px, transparent 10px), radial-gradient(120% 60% at 30% 120%, var(--hill) 0 60%, transparent 61%), linear-gradient(to bottom, var(--sky-top), var(--sky-bottom));border-radius:10px;height:56px}.scene{background:var(--paper-soft);text-align:left;cursor:pointer;border:2px solid #0000;border-radius:16px;gap:8px;padding:8px;display:grid}.scene[aria-checked=true]{border-color:var(--accent)}.scene:disabled{cursor:default}.scene:disabled .scene-preview{filter:grayscale(.85)opacity(.6)}.scene:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.scene strong{display:block}.scene small{color:var(--ink-soft);font-size:12px;line-height:1.4;display:block}.dialog-body .error{color:#e0413b;font-weight:700}.facing-options{grid-template-columns:1fr 1fr;gap:12px;display:grid}.facing-option{border:3px solid var(--line);background:var(--paper-soft);cursor:pointer;border-radius:18px;justify-items:center;gap:8px;padding:16px 8px 12px;font-weight:800;transition:border-color .15s,transform .15s;display:grid}.facing-option img{object-fit:contain;width:120px;height:120px}.facing-option:is(:hover,:focus-visible){border-color:var(--accent);outline:none}.facing-option:active{transform:scale(.97)}.facing-option img.mirrored{transform:scaleX(-1)}.dialog-body .flight-arrow{color:var(--accent);font-size:18px;font-weight:900;animation:1.2s ease-in-out infinite drift}@keyframes drift{50%{transform:translate(10px)}}.profile-head{text-align:left;align-items:center;gap:14px;display:flex}.profile-head img{object-fit:contain;flex:none;width:64px;height:64px}.profile-head h2 a{color:inherit}.achievements{text-align:left;gap:8px;margin:0;padding:0;list-style:none;display:grid}.achievements li{background:var(--paper-soft);border-radius:14px;align-items:center;gap:12px;padding:8px;display:flex}.achievements li[data-locked] :is(strong,small){opacity:.6}.achievements img{flex:none;width:48px;height:48px}.achievements .locked-icon{background:var(--line);border-radius:50%;flex:none;place-items:center;width:48px;height:48px;font-size:22px;display:grid}.achievements strong{display:block}.achievements small{color:var(--ink-soft)}.leaderboard{text-align:left;gap:6px;margin:0;padding:0;list-style:none;display:grid}.leaderboard li{background:var(--paper-soft);border-radius:14px;grid-template-columns:2em 40px 1fr auto;align-items:center;gap:10px;padding:6px 10px;display:grid}.leaderboard li[data-me]{outline:2px solid var(--accent)}.leaderboard .rank{text-align:center;color:var(--ink-soft);font-weight:900}.leaderboard li:nth-child(-n+3) .rank{color:var(--gold)}.leaderboard img{object-fit:contain;width:40px;height:40px}.leaderboard .name{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.leaderboard .value{font-variant-numeric:tabular-nums;font-weight:900}.dev-tools{text-align:left;border:2px dashed var(--line);border-radius:14px;padding:8px 12px}.dev-tools summary{cursor:pointer;color:var(--ink-soft);font-weight:700}.dev-tools .check{margin-top:8px}.toasts{padding-bottom:max(20px, env(safe-area-inset-bottom));pointer-events:none;place-self:end center;gap:8px;display:grid}.toast{background:var(--paper);color:var(--ink);box-shadow:var(--shadow);border-radius:18px;align-items:center;gap:12px;padding:10px 18px 10px 10px;animation:.35s cubic-bezier(.2,1.4,.4,1) toast-in;display:flex}.toast img{width:48px;height:48px}.toast .toast-icon{color:#d17b00;background:#ffd1664d;border-radius:50%;place-items:center;width:40px;height:40px;display:grid}.toast .toast-icon .icon{width:22px;height:22px}.toast small{color:var(--ink-soft);font-weight:600;display:block}.toast strong{display:block}.toast.leaving{opacity:0;transition:all .3s;transform:translateY(10px)}@keyframes toast-in{0%{opacity:0;transform:translateY(20px)scale(.95)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.result-score{--shown:var(--target)}}
