:root{--ink:#fff7ec;--muted:#fff0e1b8;--amber:#ffb04a;--red:#ff5a3c;--glass:#180e0a52}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);background:#1a1210;margin:0;font-family:Inter,system-ui,sans-serif;overflow:hidden}#view{width:100%;height:100%;display:block;position:fixed;inset:0}#hud{pointer-events:none;text-shadow:0 1px 8px #00000073;position:fixed;inset:0}.top{width:min(720px,100% - 32px);position:absolute;top:18px;left:50%;transform:translate(-50%)}.route{height:26px;position:relative}.route .seg{background:#fff0e159;border-left:2px solid #fff0e1bf;height:3px;position:absolute;top:12px}.route .seg span{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:10px;position:absolute;top:-16px;left:6px}.route .marker{background:var(--amber);width:14px;height:14px;box-shadow:0 0 12px var(--amber);border-radius:50% 0 50% 50%;margin-left:-7px;transition:left .1s linear;position:absolute;top:6px;transform:rotate(-45deg)}.clock{position:absolute;top:18px;left:24px}.clock .time{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font:700 34px/1 Inter,sans-serif}.clock .best{color:var(--muted);letter-spacing:.08em;margin-top:4px;font-size:12px}.status{flex-direction:column;gap:8px;display:flex;position:absolute;bottom:26px;left:24px}.leafbar{background:#ffffff2e;border-radius:3px;width:180px;height:6px;overflow:hidden}.leafbar .fill{background:linear-gradient(90deg,#c4532a,#f0b443);height:100%;transition:width .15s}.leafbar.low .fill{background:var(--red);animation:.6s infinite alternate pulse}.layer{letter-spacing:.16em;color:var(--muted);font-size:12px;font-weight:700}.layer[data-layer=subway]{color:#7dffb0}.layer[data-layer=rooftop],.layer[data-layer=sky]{color:#ffd38a}.card{text-align:center;opacity:0;transition:opacity .8s,transform .8s;position:absolute;top:22%;left:0;right:0;transform:translateY(8px)}.card.show{opacity:1;transform:none}.card .name{letter-spacing:-.02em;font:800 clamp(40px,7vw,84px)/1 Fraunces,Georgia,serif}.card .sub{letter-spacing:.24em;text-transform:uppercase;color:var(--muted);margin-top:8px;font-size:14px}.screen{text-align:center;opacity:0;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:16px;transition:opacity .5s;display:flex;position:absolute;inset:0}.screen.show{opacity:1}.screen.dead{background:radial-gradient(#28080426,#1e06038c)}.screen.won{background:radial-gradient(#ffc8781f,#3c1e0573)}.screen.start{background:linear-gradient(#0000 50%,#190c068c);justify-content:flex-end;padding-bottom:14vh}.screen .title{letter-spacing:-.03em;font:800 clamp(44px,8vw,104px)/.95 Fraunces,Georgia,serif}.screen .title.small{font-size:clamp(30px,5vw,60px)}.screen .sub{max-width:560px;color:var(--muted);font-size:16px;line-height:1.55}.screen .cta{letter-spacing:.3em;text-transform:uppercase;color:var(--amber);margin-top:10px;font-size:13px;animation:1.4s infinite alternate pulse}.keys{letter-spacing:.08em;color:#fff0e180;text-align:right;max-width:46vw;font-size:11px;position:absolute;bottom:26px;right:24px}.lil-gui{pointer-events:auto}@keyframes pulse{0%{opacity:1}to{opacity:.45}}@media (width<=640px){.keys{display:none}.clock .time{font-size:26px}}.loading{color:var(--muted);place-items:center;font:600 22px Fraunces,Georgia,serif;display:grid;position:absolute;inset:0}.fps{color:#fffc;text-shadow:0 1px 3px #000;font:12px/1.4 Inter,sans-serif;position:absolute;bottom:10px;left:12px}.callout{text-align:center;letter-spacing:.12em;text-transform:uppercase;color:#ffd38a;opacity:0;font:700 22px/1 Inter,sans-serif;transition:opacity .25s,transform .25s;position:absolute;top:34%;left:0;right:0;transform:scale(.9)}.callout b{color:#fff}.callout.show{opacity:1;transform:scale(1)}.toast{backdrop-filter:blur(6px);opacity:0;text-align:center;background:#140e0a8c;border-radius:12px;max-width:calc(100% - 32px);padding:10px 18px;font-size:14px;transition:opacity .4s,transform .4s;position:absolute;top:64px;left:50%;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}.credit{color:#ffffff59;font-size:10px;position:absolute;bottom:8px;right:12px}.clock{text-align:right;left:auto;right:24px}.tutorial{backdrop-filter:blur(8px);opacity:0;text-align:center;background:#120c0999;border:1px solid #ffdcaa2e;border-radius:14px;width:min(640px,100% - 32px);padding:14px 18px 12px;transition:opacity .4s,transform .4s;position:absolute;bottom:9vh;left:50%;transform:translate(-50%,10px)}.tutorial.show{opacity:1;transform:translate(-50%)}.tutorial .step{letter-spacing:.2em;color:var(--muted);margin-bottom:6px;font-size:10px}.tutorial .text{font-size:16px;line-height:1.55}.tutorial .skip{color:var(--muted);margin-top:8px;font-size:11px}.tutorial b.gold{color:#ffc65a}.tutorial b.blue{color:#8ab8ff}.tutorial b.green{color:#7dffb0}.key{text-align:center;background:#ffffff14;border:1px solid #fff0e180;border-radius:5px;min-width:22px;margin:0 1px;padding:1px 6px;font:700 12px/18px Inter,sans-serif;display:inline-block}.keys{color:#fff0e18c;font-size:11px;line-height:1.8;position:absolute;bottom:50px;left:24px}.intro{z-index:20;pointer-events:auto;background:#0b0a0c;place-items:center;transition:opacity .7s;display:grid;position:fixed;inset:0}.intro.leaving{opacity:0}.intro video{object-fit:contain;width:100%;height:100%;image-rendering:pixelated}.intro-gate{background:linear-gradient(#0000 40%,#0a0806bf);flex-direction:column;justify-content:flex-end;align-items:center;gap:12px;padding-bottom:14vh;display:flex;position:absolute;inset:0}.intro.playing .intro-gate{display:none}.intro-gate .title{color:#fff7ec;text-shadow:0 2px 20px #0009;font:800 clamp(40px,7vw,96px)/1 Fraunces,Georgia,serif}.intro-gate .cta{letter-spacing:.3em;text-transform:uppercase;color:#ffb04a;font-size:13px;animation:1.4s infinite alternate pulse}.intro-skip{letter-spacing:.2em;text-transform:uppercase;color:#ffffff73;font-size:11px;display:none;position:absolute;bottom:18px;right:22px}.intro.playing .intro-skip{display:block}.leafmeter{pointer-events:none;width:132px;height:132px;position:absolute;bottom:74px;left:14px}.leafmeter canvas{filter:drop-shadow(0 4px 10px #00000059);width:132px;height:132px;display:block}.leafmeter-label{text-align:center;letter-spacing:.06em;color:#fff3e6;text-shadow:0 1px 4px #000000b3;font:800 15px/1 Inter,sans-serif;position:absolute;bottom:-4px;left:0;right:0}.leafmeter-label.low{color:#ff7a5a;animation:.5s infinite alternate pulse}.status{bottom:24px!important}.keys{bottom:50px;left:160px}.board{backdrop-filter:blur(6px);pointer-events:auto;opacity:0;z-index:5;background:#140a049e;border-radius:10px;min-width:300px;max-width:calc(100vw - 32px);padding:14px 18px;transition:opacity .5s;position:absolute;top:66%;left:50%;transform:translate(-50%)}.board.show{opacity:1}.board .h,.board-mini .h{color:var(--amber);margin-bottom:8px;font:700 15px Fraunces,Georgia,serif}.board .line{gap:8px;display:flex}.board input{color:#fff3e6;background:#00000059;border:1px solid #ffdcb459;border-radius:6px;outline:none;flex:1;min-width:0;padding:9px 10px;font:15px system-ui,sans-serif}.board input:focus{border-color:var(--amber)}.board button{background:var(--amber);color:#2a1406;cursor:pointer;white-space:nowrap;border:0;border-radius:6px;padding:9px 14px;font:700 14px system-ui,sans-serif}.board button:disabled{opacity:.5;cursor:default}.board .err{color:#ff9a80;min-height:1.2em;margin-top:6px;font-size:13px}.board .note{color:var(--muted);font-size:14px}.board .row,.board-mini .row{font-variant-numeric:tabular-nums;justify-content:space-between;gap:24px;font:14px/1.7 system-ui,sans-serif;display:flex}.board .row.me{color:var(--amber);font-weight:700}.board-mini{opacity:0;pointer-events:none;background:#140a0473;border-radius:8px;min-width:200px;padding:10px 14px;transition:opacity .5s;position:absolute;top:96px;right:24px}.board-mini.show{opacity:1}@media (width<=640px){.board-mini{display:none}.board{top:58%}}.subway-pointer{color:#fff;letter-spacing:.06em;opacity:0;pointer-events:none;white-space:nowrap;background:#0c5a30d9;border-radius:999px;align-items:center;gap:8px;padding:6px 12px 6px 8px;font:700 13px/1 Inter,system-ui,sans-serif;transition:opacity .4s;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 2px 12px #00000059}.subway-pointer.show{opacity:1}.subway-pointer .arrow{font-size:16px;display:inline-block}.subway-pointer b{color:#b8ffd0;margin-left:4px;font-weight:800}body.is-touch,body.is-touch #view{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body.is-touch .keys{display:none}.touch{z-index:4;pointer-events:none;position:fixed;inset:0}.touch-stick-zone{pointer-events:auto;touch-action:none;width:50%;height:70%;position:absolute;bottom:0;left:0}.touch-stick{opacity:0;pointer-events:none;background:#140a0440;border:2px solid #fff0e159;border-radius:50%;width:128px;height:128px;margin:-64px 0 0 -64px;transition:opacity .15s;position:absolute}.touch-stick.on{opacity:1}.touch-knob{background:#ffb04ad9;border-radius:50%;width:56px;height:56px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 10px #0006}.touch-buttons{right:calc(14px + env(safe-area-inset-right));bottom:calc(18px + env(safe-area-inset-bottom));pointer-events:auto;grid-template-rows:58px 72px;grid-template-columns:repeat(3,58px);gap:10px;display:grid;position:absolute}.touch-buttons .big{grid-row:2;height:72px;font-size:13px}.touch-buttons [data-hold=spread]{grid-column:2/span 2}.touch-buttons [data-hold=curl]{grid-column:1}.touch button{color:#fff3e6;letter-spacing:.04em;touch-action:none;-webkit-tap-highlight-color:transparent;background:#140a0473;border:1px solid #fff0e14d;border-radius:16px;font:800 18px Inter,system-ui,sans-serif}.touch button.down{color:#2a1406;background:#ffb04abf}.touch-restart{right:calc(14px + env(safe-area-inset-right));top:calc(70px + env(safe-area-inset-top));pointer-events:auto;width:48px;height:48px;position:absolute;font-size:22px!important}.touch.hidden .touch-stick-zone,.touch.hidden .touch-buttons,.touch.hidden .touch-stick{display:none}@media (orientation:portrait){.touch-buttons{grid-template-rows:50px 64px;grid-template-columns:repeat(3,50px)}}.screen .intro-again{color:var(--ink);letter-spacing:.06em;cursor:pointer;pointer-events:auto;background:#140a0473;border:1px solid #fff0e159;border-radius:999px;margin-top:6px;padding:8px 16px;font:600 13px Inter,system-ui,sans-serif}.screen .intro-again:hover{background:#ffb04a40}.leafmeter{transition:opacity .4s}.leafmeter.away{opacity:0}.minimap{pointer-events:none;filter:drop-shadow(0 3px 10px #00000073);width:190px;height:190px;transition:opacity .4s;position:absolute;bottom:58px;right:20px}.minimap canvas{width:190px;height:190px;display:block}.minimap.away{opacity:0}.minimap-label{text-align:center;letter-spacing:.1em;text-transform:uppercase;color:#fff0e1cc;text-shadow:0 1px 4px #000000b3;font:700 11px Inter,system-ui,sans-serif;position:absolute;bottom:-18px;left:0;right:0}body.is-touch .minimap{right:auto;left:calc(10px + env(safe-area-inset-left));bottom:auto;top:calc(48px + env(safe-area-inset-top));width:130px;height:130px}body.is-touch .minimap canvas{width:130px;height:130px}@media (width<=640px){.minimap,.minimap canvas{width:130px;height:130px}}.route{height:40px}.route .seg{top:18px}.route .seg span{top:-16px;left:4px}.route .seg:nth-of-type(2n) span{top:7px}.route .marker{top:12px}body.is-touch *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}body.is-touch .board input{-webkit-user-select:text;user-select:text}body.is-touch .tutorial{top:calc(54px + env(safe-area-inset-top));bottom:auto;left:auto;right:calc(10px + env(safe-area-inset-right));background:#120c0973;width:min(300px,46vw);padding:8px 10px;font-size:12px;line-height:1.35;transform:none}body.is-touch .tutorial .key{padding:1px 5px;font-size:10px}body.is-touch .card{top:14%}body.is-touch .card .name{font-size:clamp(26px,6vw,44px)}body.is-touch .card .sub{letter-spacing:.18em;font-size:10px}body.is-touch .callout{font-size:15px;top:24%}body.is-touch .toast{padding:7px 12px;font-size:12px;top:50px}body.is-touch .subway-pointer{padding:4px 9px 4px 6px;font-size:11px}body.is-touch .screen .title{font-size:clamp(30px,8vw,56px)}body.is-touch .screen .sub{font-size:13px}body.is-touch .touch button{opacity:.55;transition:opacity .2s}body.is-touch .touch button.down{opacity:1}body.is-touch .route .seg span{letter-spacing:.08em;font-size:8px}@media (orientation:portrait){body.is-touch .tutorial{width:auto;left:10px;right:10px;top:calc(186px + env(safe-area-inset-top))}}body.is-touch .screen .intro-again{margin-top:14px;padding:14px 26px;font-size:15px}.touch.title .touch-restart{display:none}.subway-pointer.exit{background:#961e18e0}.subway-pointer.exit b{color:#ffd0c8}body.is-touch .tutorial{pointer-events:auto;z-index:6}body.is-touch .tutorial .skip{color:var(--amber);margin-top:4px;font-size:11px;text-decoration:underline}body.is-touch .touch-stick-zone{width:auto;height:42%;bottom:0;left:0;right:230px}body.is-touch .touch-stick{opacity:.35}body.is-touch .touch-stick.on{opacity:1}body.is-touch .minimap{top:calc(70px + env(safe-area-inset-top))}@media (orientation:portrait){body.is-touch .touch-stick-zone{height:22%;bottom:22%;right:0}body.is-touch .tutorial{top:calc(208px + env(safe-area-inset-top))}}
