:root{--ink: #1d1c22;--ink-2: #5c5964;--paper: #f6f3ee;--glass: rgba(250, 248, 244, .82);--line: rgba(29, 28, 34, .12);--noire: #17171b;--bleue: #2a56c6;--gold: #c99a2e;--visiteur: #e6dfd1;--accent: #b5462f;--font: "Avenir Next", "Segoe UI Variable Text", "Segoe UI", "Helvetica Neue", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#e9e5de;color:var(--ink);font-family:var(--font)}#app{position:fixed;top:0;right:0;bottom:0;left:0}#app canvas{display:block;width:100%;height:100%;outline:none;cursor:grab;touch-action:none}#app canvas:active{cursor:grabbing}.hidden{display:none!important}kbd{font-family:var(--mono);font-size:.72em;padding:2px 6px;border-radius:6px;background:#1d1c2214;border:1px solid var(--line);color:var(--ink)}.glass{background:var(--glass);border:1px solid rgba(255,255,255,.7);box-shadow:0 10px 30px #2820141f;backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2)}.kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}.screen{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:30;padding:24px}#loader{background:radial-gradient(120% 90% at 50% 30%,#fbf9f5,#e6e0d6)}.loader-card{text-align:center;display:grid;gap:14px;justify-items:center}.loader-title{font-size:clamp(4rem,12vw,8rem);font-weight:700;letter-spacing:-.04em;line-height:.9}.bar{width:min(320px,70vw);height:4px;border-radius:4px;background:#1d1c221a;overflow:hidden}.bar i{display:block;height:100%;width:0;background:var(--ink);transition:width .3s}.loader-step{font-size:.85rem;color:var(--ink-2)}#welcome{overflow-y:auto;place-items:safe center;background:#e9e5de59}.welcome-card{width:min(520px,100%);border-radius:22px;padding:28px 30px;display:grid;gap:14px}.welcome-card h1{margin:0;font-size:1.9rem;letter-spacing:-.02em;line-height:1.1;text-wrap:balance}.welcome-card .lead{margin:0;color:var(--ink-2);line-height:1.5}.avatar-pick{display:grid;gap:8px}.avatar-pick .opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.avatar-pick button{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:14px;border:1.5px solid var(--line);background:#ffffffb3;color:var(--ink);font-weight:600;font-size:1rem}.avatar-pick button svg{width:34px;height:46px;flex:none}.avatar-pick button:hover{background:#fff}.avatar-pick button.on{border-color:var(--ink);background:#fff;box-shadow:0 0 0 2px var(--ink) inset}.primary:disabled{opacity:.45;cursor:not-allowed}.badge-preview{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:14px;background:#ffffffb3;border:1px solid var(--line)}.badge-preview .swatch{width:44px;height:58px;border-radius:8px;flex:none;display:grid;place-items:center;font-family:var(--mono);font-size:.8rem;color:#fff;box-shadow:inset 0 0 0 1px #ffffff40}.badge-preview b{display:block;font-size:1.05rem}.badge-preview span{color:var(--ink-2);font-size:.85rem}button{font:inherit;cursor:pointer}.primary{border:0;border-radius:12px;padding:13px 18px;background:var(--ink);color:#fff;font-weight:600;font-size:1rem}.primary:hover{background:#33313a}.ghost{border:1px solid var(--line);background:#fff9;border-radius:10px;padding:7px 12px;color:var(--ink)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.keys-hint{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem;color:var(--ink-2)}.primary.door{--pass: #f3e7cf;display:flex;align-items:center;justify-content:center;gap:12px;padding:18px 22px;border-radius:14px;font-size:1.15rem;letter-spacing:.02em;box-shadow:inset 0 0 0 2px var(--pass),0 10px 26px #14121a38;transition:transform .15s,box-shadow .15s}.primary.door svg{width:26px;height:26px;flex:none;color:var(--pass);transition:transform .6s}.primary.door:not(:disabled):hover{transform:translateY(-1px);box-shadow:inset 0 0 0 2px var(--pass),0 14px 32px #14121a4d}.primary.door:not(:disabled):hover svg{transform:rotate(-40deg)}.demo-note{font-size:.78rem;color:var(--accent);display:grid;gap:8px}.demo-note p{margin:0}.preview-row{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--ink-2)}.preview-row label{display:grid;gap:3px;font-size:.72rem}.preview-row select{font:inherit;font-size:.82rem;padding:5px 8px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink)}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}#hud>*{pointer-events:auto}#hud>.bubbles,#hud>.toasts,#hud>.zone-label{pointer-events:none}.badge-chip{position:absolute;left:18px;top:18px;display:flex;align-items:center;gap:12px;border-radius:14px;padding:10px 14px 10px 10px}.badge-chip i{width:26px;height:34px;border-radius:5px;background:var(--noire)}.badge-chip b{display:block;font-family:var(--mono);font-size:.95rem}.badge-chip span{font-size:.75rem;color:var(--ink-2)}.counter-slot{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;max-width:calc(100vw - 24px)}.countdown{border-radius:999px;padding:4px 12px;font-family:var(--mono);font-size:.7rem;white-space:nowrap;opacity:.85;pointer-events:none}#hud:has(#talk:not(.hidden)) .counter-slot{display:none}#pday-counter{display:flex;max-width:100%}#pday-counter:empty{display:none}#pday-counter .pday-c:not(.red):not(.blue):not(.full){background:var(--glass);border-color:#ffffff24}#pday-counter .pday-c{max-width:100%}.zone-label{position:absolute;left:50%;top:104px;transform:translate(-50%);font-weight:600;font-size:1.05rem;letter-spacing:.02em;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.45);opacity:0;transition:opacity .6s;pointer-events:none;white-space:nowrap}.zone-label.on{opacity:1}.hud-right{position:absolute;right:18px;top:18px;display:grid;gap:10px;justify-items:end}.minimap{border-radius:16px;padding:6px}.minimap canvas{display:block;width:180px;height:150px;border-radius:11px}.chip-btn{border-radius:999px;padding:7px 14px;border:1px solid rgba(255,255,255,.7);color:var(--ink);font-weight:600;font-size:.85rem}.goal{position:absolute;left:18px;top:80px;border-radius:12px;padding:9px 13px;font-size:.85rem;max-width:300px;line-height:1.35}.prompt{position:absolute;left:50%;bottom:112px;transform:translate(-50%);display:flex;align-items:center;gap:14px;border-radius:14px;padding:10px 12px 10px 16px}.p-sub{font-size:.72rem;color:var(--ink-2);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase}.p-label{font-weight:600}.p-key{font-size:.95rem;padding:6px 11px;background:var(--ink);color:#fff;border:0}.ver{position:fixed;left:20px;bottom:3px;z-index:30;font-size:.62rem;letter-spacing:.02em;color:var(--ink-2);opacity:.75;pointer-events:none}.help{position:absolute;left:18px;bottom:18px;border-radius:14px;padding:10px 14px;font-size:.8rem;line-height:1.7;color:var(--ink-2);transition:opacity .8s,transform .8s}.help.faded,.goal.faded{opacity:0;transform:translateY(6px);pointer-events:none}.goal{transition:opacity .8s,transform .8s}.chip-btn.icon{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 9px}.chip-btn.icon svg{width:20px;height:20px}.chip-btn.icon .x,.chip-btn.icon.off .w{display:none}.chip-btn.icon.off .x{display:inline}.chip-btn.icon.off svg{opacity:.55}.chip-btn.murmur.off{opacity:.6;text-decoration:line-through;text-decoration-thickness:1px}.hud-buttons{display:flex;gap:8px}.pa{position:absolute;left:50%;top:18px;transform:translate(-50%,-14px);max-width:min(620px,70vw);border-radius:14px;padding:9px 16px 10px;text-align:center;opacity:0;transition:opacity .6s,transform .6s;pointer-events:none}.pa.on{opacity:1;transform:translate(-50%)}.pa small{display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-bottom:3px}.pa span{font-size:.92rem;line-height:1.35}.toasts{position:absolute;left:50%;top:104px;transform:translate(-50%);display:grid;gap:8px;justify-items:center;pointer-events:none}.toast{background:var(--ink);color:#fff;border-radius:12px;padding:9px 14px;font-size:.88rem;box-shadow:0 8px 24px #0003;animation:toast .35s ease-out;max-width:80vw;text-align:center}@keyframes toast{0%{opacity:0;transform:translateY(-6px)}}.bubbles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.bubble{position:absolute;transform:translate(-50%,-100%);max-width:240px;background:#fff;color:var(--ink);border-radius:14px;padding:8px 12px;font-size:.84rem;line-height:1.35;box-shadow:0 6px 18px #00000029;transition:opacity .4s;text-align:left}.bubble:after{content:"";position:absolute;left:50%;bottom:-6px;width:12px;height:12px;background:#fff;transform:translate(-50%) rotate(45deg)}.bubble.hint{box-shadow:0 0 0 2px var(--gold),0 6px 18px #00000029}@media(min-width:700px){.fallback .fb-card{left:50%;right:auto;width:560px;transform:translate(-50%)}}.slow-note{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:#b5462f14;border:1px solid rgba(181,70,47,.25)}.slow-note p{margin:0;font-size:.86rem;line-height:1.4;flex:1}.slow-note button{flex:none}.slow-chip{position:absolute;right:18px;bottom:58px;display:flex;align-items:center;gap:12px;border-radius:14px;padding:8px 8px 8px 14px;font-size:.86rem;max-width:min(420px,80vw)}.slow-chip .primary{padding:8px 12px;font-size:.86rem;white-space:nowrap}.demo-chip{position:absolute;right:18px;bottom:18px;background:var(--accent);color:#fff;border-radius:999px;padding:6px 12px;font-size:.75rem;font-weight:600}.trial-chip{background:#1d1c22db;font-variant-numeric:tabular-nums}.map-layer,.panel-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:#1d1c2247;padding:24px}.map-card{position:relative;border-radius:22px;padding:18px 20px 14px;width:min-content;max-width:100%}.map-card canvas{display:block;width:auto;height:min(calc(100vh - 190px),calc((92vw - 40px)*1.1));border-radius:14px}.map-head{padding:0 44px 10px 2px}.map-head .kicker{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}.map-line{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.map-head h2{margin:2px 0 0;font-size:1.5rem}.map-head p{margin:0;color:var(--ink-2);font-size:.95rem}.map-head p.on{color:#d2560c;font-weight:600}.map-legend{padding:10px 2px 0;font-size:.8rem;color:var(--ink-2)}.route-chip{position:absolute;left:50%;top:18px;transform:translate(-50%);border-radius:999px;padding:5px 5px 5px 14px;display:flex;align-items:center;gap:10px;font-size:.9rem;font-weight:600;white-space:nowrap;animation:toast .3s ease-out}.route-chip i{width:9px;height:9px;border-radius:50%;background:#ff6a13;box-shadow:0 0 0 4px #ff6a1338}.route-chip button{border:0;border-radius:999px;padding:5px 12px;background:#ffffffbf;color:var(--ink);font-size:.82rem;cursor:pointer}.panel{position:relative;width:min(560px,100%);border-radius:20px;padding:24px 26px;max-height:86vh;overflow:auto}.panel h2{margin:6px 0 10px;font-size:1.4rem;letter-spacing:-.01em;text-wrap:balance}.panel p{margin:0 0 10px;line-height:1.55;color:#36343c}.panel .tip{margin-top:14px;padding:12px 14px;border-radius:12px;background:#c99a2e24;border:1px solid rgba(201,154,46,.35)}.panel .tip b{display:block;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#8a6a1c;margin-bottom:4px}.panel .news{border-left:3px solid rgba(29,47,87,.25);padding:6px 0 6px 14px;margin:10px 0}.panel .news.latest{border-left-color:#1d2f57}.panel .news .k{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#6b6874}.panel .news .k b{margin-left:6px;padding:1px 7px;border-radius:99px;background:#1d2f57;color:#fff;font-weight:600}.panel .news p{margin:4px 0 0}.panel .slide{border-radius:14px;background:#1d1c22;color:#f6f3ee;padding:22px;margin:8px 0}.panel .slide .k{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#c9a25a}.panel .slide h3{margin:8px 0 6px;font-size:1.25rem}.panel .slide p{color:#d7d3cc;margin:0}.panel ol.article{margin:12px 0 4px;padding:4px 0 4px 34px;border-left:4px solid var(--stand)}.panel ol.article li{margin:6px 0}.panel a.primary{display:inline-block;text-decoration:none}.panel .row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.close{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:#ffffffb3;color:var(--ink)}.cine{position:fixed;top:0;right:0;bottom:0;left:0;z-index:24;pointer-events:none}.cine:before,.cine:after{content:"";position:absolute;left:0;right:0;height:7vh;background:#000;transition:transform .8s ease}.cine:before{top:0}.cine:after{bottom:0}.cine.hidden{display:block;visibility:hidden}.cine.hidden:before{transform:translateY(-100%)}.cine.hidden:after{transform:translateY(100%)}.cine-frame{position:absolute;background:#000;overflow:hidden;opacity:0;transition:opacity .5s;pointer-events:auto}.cine-frame.on{opacity:1}.cine-frame iframe,.cine-frame video{width:100%;height:100%;border:0;display:block;object-fit:cover}.cine-hint{position:absolute;left:22px;bottom:calc(7vh + 16px);max-width:min(440px,80vw);padding:12px 18px;border-radius:16px;text-align:center;pointer-events:auto;color:var(--ink);opacity:0;transition:opacity .4s}.cine-hint.on{opacity:1}.cine-hint p{margin:4px 0}.cine-hint b{display:block;margin-bottom:2px}.cine-hint .primary{display:inline-block;margin-top:8px;text-decoration:none}.cine-skip{position:absolute;right:22px;bottom:calc(7vh + 16px);z-index:2;pointer-events:auto;border:0;border-radius:999px;padding:8px 10px 8px 16px;font:600 .9rem/1 inherit;cursor:pointer;color:var(--ink)}body.cine-on #hud,body.fly-on #hud{visibility:hidden}.fly-cap{position:absolute;left:0;right:0;bottom:calc(7vh + 34px);text-align:center;color:#fff;font-size:clamp(1.2rem,2.3vw,1.9rem);font-weight:600;letter-spacing:.01em;text-shadow:0 2px 18px rgba(0,0,0,.55);opacity:0;transform:translateY(8px);transition:opacity .9s,transform .9s;padding:0 24px}.fly-cap.on{opacity:1;transform:none}.vignette{display:flex;gap:14px;align-items:center;width:100%;padding:10px;margin:4px 0 14px;border:1px solid rgba(0,0,0,.08);border-radius:14px;background:#fff9;cursor:pointer;text-align:left;font:inherit;color:inherit}.vignette:hover{background:#fff}.vignette .thumb{position:relative;flex:none;width:128px;aspect-ratio:16 / 9;border-radius:9px;overflow:hidden;background:#111 center / cover}.vignette .thumb video{width:100%;height:100%;object-fit:cover;display:block}.vignette .thumb i{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:34px;height:34px;border-radius:50%;background:#ffffffeb}.vignette .thumb i:after{content:"";position:absolute;left:13px;top:10px;border:7px solid transparent;border-left:11px solid #111}.vignette b{display:block;font-size:1rem}.vignette small{display:block;opacity:.7;margin-top:3px}.player-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;background:#0a0a0cd1;display:grid;place-items:center;padding:24px;gap:12px;align-content:center}.player-frame{width:min(1100px,92vw);aspect-ratio:16 / 9;background:#000;border-radius:14px;overflow:hidden}.player-frame iframe{width:100%;height:100%;border:0}.player-bar{display:flex;align-items:center;gap:14px;border-radius:12px;padding:8px 10px 8px 16px}.fallback{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#f3efe8;overflow:auto}.fallback .fb-scene{position:fixed;top:0;right:0;bottom:0;left:0}.fallback .fb-card{position:fixed;left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));border-radius:18px;padding:18px;display:grid;gap:10px}.fallback h1{margin:0;font-size:1.25rem;line-height:1.2}.fallback p{margin:0;color:var(--ink-2);font-size:.92rem;line-height:1.45}.fallback .seatline{font-family:var(--mono);font-size:.85rem}.fallback .fb-top{position:fixed;top:calc(14px + env(safe-area-inset-top));left:16px;right:16px;text-align:center}@media(max-width:900px){.minimap canvas{width:140px;height:117px}.help{display:none}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.joy{position:fixed;z-index:15;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;background:#ffffff47;border:2px solid rgba(255,255,255,.7);pointer-events:none}.joy i{position:absolute;left:35px;top:35px;width:50px;height:50px;border-radius:50%;background:#ffffffe6;box-shadow:0 4px 12px #0003}.touch .help{display:none}.touch .prompt{bottom:100px;padding:14px 16px 14px 20px}.prompt{cursor:pointer}#barSay{min-height:4.5em;line-height:1.5}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.chip{border:1px solid var(--line);background:#fff9;border-radius:999px;padding:7px 13px;color:var(--ink);font-size:.88rem;cursor:pointer}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.mark{display:inline-grid;place-items:center;width:1.5em;height:1.5em;margin-left:8px;border-radius:50%;border:2px solid var(--ink);font-family:var(--font);letter-spacing:0}.mark-tip{background:#e2b33c}.mark-rumour{background:#f6f3ee}.talk{position:absolute;left:50%;bottom:18px;transform:translate(-50%);max-width:calc(100vw - 24px);border-radius:999px;padding:5px;display:flex;align-items:center;gap:4px;animation:toast .3s ease-out}.talk-choices{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}.talk-choices button,.talk-x{display:flex;align-items:center;gap:7px;border:0;background:transparent;border-radius:999px;padding:6px 12px 6px 6px;color:var(--ink);font-size:.86rem;white-space:nowrap;cursor:pointer}.talk-choices button:hover,.talk-choices button.on{background:#fff}.talk-choices button.asked,.talk-choices button.bye{color:var(--ink-2)}.talk-choices kbd,.talk-x kbd{flex:none}.talk-choices .mark{width:1.35em;height:1.35em;font-size:.75rem}.talk-x{padding:6px;color:var(--ink-2)}.talk-bubble{position:absolute;transform:translate(-50%,-100%);width:max-content;max-width:min(320px,80vw);background:#fff;color:var(--ink);border-radius:16px;padding:9px 14px 11px;font-size:.95rem;line-height:1.4;box-shadow:0 8px 24px #0003;pointer-events:auto;cursor:pointer;z-index:3}.talk-bubble:after{content:"";position:absolute;left:50%;bottom:-7px;width:14px;height:14px;background:#fff;transform:translate(-50%) rotate(45deg)}.talk-bubble small{display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin-bottom:3px}.talk-bubble.tip{box-shadow:0 0 0 2px var(--gold),0 8px 24px #0003}@media(max-width:600px){.talk{border-radius:18px}.talk-choices button span{white-space:normal;text-align:left}}#hud,#panel,#mapLayer,#cine,#fly,#playerLayer{--ink: #f4f1ea;--ink-2: rgba(244, 241, 234, .66);--line: rgba(255, 255, 255, .16);--glass: rgba(14, 17, 30, .6);--on-ink: #14172a;color:var(--ink)}:is(#hud,#panel,#mapLayer,#cine,#fly,#playerLayer) .glass{border-color:#ffffff24;box-shadow:0 8px 30px #0000002e}:is(#hud,#panel,#mapLayer,#cine,#fly,#playerLayer) kbd{background:#ffffff14;border-color:#ffffff3d;color:var(--ink)}:is(#hud,#panel,#mapLayer,#cine,#fly,#playerLayer) .primary{background:var(--ink);color:var(--on-ink)}:is(#hud,#panel,#mapLayer,#cine,#fly,#playerLayer) .primary:hover{background:#fff}:is(#hud,#panel,#mapLayer,#cine,#fly,#playerLayer) :is(.ghost,.close,.chip,.vignette){background:#ffffff14;border-color:var(--line);color:var(--ink)}:is(#hud,#panel,#mapLayer,#cine,#fly,#playerLayer) :is(.ghost,.close,.chip,.vignette):hover{background:#ffffff29}:is(#panel,#hud) .chip.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.panel p{color:#f4f1eadb}.panel .tip{background:#e0b04a1f;border-color:#e0b04a59}.panel .tip b{color:#e0b04a}.panel .news{border-left-color:#ffffff2e}.panel .news.latest{border-left-color:#e0b04a}.panel .news .k{color:var(--ink-2)}.panel .news .k b{background:#e0b04a;color:var(--on-ink)}.panel .slide{background:#ffffff0f;border:1px solid var(--line)}.mark{border-color:var(--ink);color:var(--on-ink)}.p-key{background:var(--ink);color:var(--on-ink)}.toast{background:#0e111eb8;color:var(--ink);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.route-chip button{background:#ffffff1f;color:var(--ink)}.talk-choices button:hover,.talk-choices button.on{background:#ffffff1f}.bubble,.talk-bubble{color:#1d1c22}.talk-bubble small{color:#5c5964}.map-layer,.panel-wrap{background:#0a0c144d}.menu-btn{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;padding:0;color:var(--ink)}.menu-btn svg{width:24px;height:24px}.menu-btn[aria-expanded=true]{background:#0e111ed1}.menu{width:268px;border-radius:20px;padding:8px;display:grid;gap:2px}.m-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;border:0;background:transparent;color:var(--ink);border-radius:12px;padding:10px 12px;font-size:.92rem;text-align:left}.m-row:hover,.m-row.on{background:#ffffff1a}.m-row .r{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:.82rem}.m-sep{height:1px;background:#ffffff1a;margin:4px 8px}.m-sub{display:grid;gap:2px;padding:0 0 4px 12px}.m-sub .m-row{font-size:.85rem;padding:8px 12px;color:var(--ink-2)}.m-sub .m-row.on{color:var(--ink)}.m-sub .m-row.on:after{content:"✓"}.tog{position:relative;width:32px;height:19px;border-radius:99px;background:#e0b04a;transition:background .2s}.tog:after{content:"";position:absolute;top:2px;left:15px;width:15px;height:15px;border-radius:50%;background:#fff;transition:left .2s}.m-row.off .tog{background:#fff3}.m-row.off .tog:after{left:2px}.badge-chip{position:static;display:flex;padding:8px 10px 12px;margin-bottom:4px;border-bottom:1px solid rgba(255,255,255,.1);border-radius:0}.badge-chip span{color:var(--ink-2)}.help{left:18px;top:18px;bottom:auto;padding:14px 18px;border-radius:18px;line-height:1.95;color:var(--ink)}.help .kicker{margin-bottom:4px}.help-line{position:absolute;left:50%;bottom:104px;transform:translate(-50%);display:flex;gap:16px;align-items:center;white-space:nowrap;border-radius:999px;padding:9px 18px;font-size:.85rem;transition:opacity .8s;pointer-events:none}.help-line span{display:flex;align-items:center;gap:6px}.help-line .more{color:var(--ink-2)}.help-line svg{width:16px;height:16px}.help-line.faded{opacity:0}#hud:has(#prompt:not(.hidden)) .help-line{opacity:0}.goal{left:50%;top:74px;transform:translate(-50%);max-width:min(560px,80vw);border-radius:999px;padding:8px 16px;text-align:center}.goal.faded{transform:translate(-50%) translateY(-6px)}.toasts,.zone-label{top:124px}.countdown{padding:5px 14px;opacity:1;color:var(--ink-2)}@media(max-width:900px){.help-line{display:none}}.onb{position:absolute;left:44px;top:50%;transform:translateY(-50%);width:min(470px,38vw);max-height:80vh;overflow:auto;border-radius:24px;padding:24px 24px 20px;pointer-events:auto;color:var(--ink);opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s}.onb.on{opacity:1;visibility:visible}.onb h2{margin:6px 0 16px;font-size:1.5rem;letter-spacing:-.01em;text-wrap:balance}.onb p{margin:0 0 12px;font-size:.92rem;line-height:1.5;color:#f4f1eadb}.onb .row{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.onb .timer{display:inline-block;margin-bottom:14px;padding:6px 12px;border-radius:999px;background:#ffffff14;border:1px solid var(--line);font:600 .9rem var(--mono)}.onb .info{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:18px 0 14px;font-size:.92rem}.onb .info dt{color:#f4f1ea99}.onb .info dd{margin:0}.onb .ok{display:flex;align-items:center;gap:10px;font-size:.9rem;color:#cfe8c8}.onb .ok i{flex:none;width:18px;height:18px;border-radius:50%;background:#4caf6e;display:grid;place-items:center;font-style:normal;font-size:11px;color:#fff}.pcard{position:relative;width:100%;aspect-ratio:1083 / 710;border-radius:14px;overflow:hidden;container-type:inline-size;box-shadow:0 18px 40px #0000008c,0 0 0 1px #ffffff14;transform:perspective(1200px) rotateY(-8deg) rotateX(3deg)}.pcard.faint{opacity:.35;filter:grayscale(.4)}.pcard.black{background:radial-gradient(70% 90% at 28% 18%,#242424,#0d0d0d)}.pcard.blue{background:linear-gradient(170deg,#173553,#0b1b2e)}.pcard.gold{background:linear-gradient(135deg,#f3dc95,#c99a2e 38%,#8a6418 62%,#e9cf7d)}.pcard.nacre{background:linear-gradient(125deg,#fbfaf6,#ece6f3 25%,#e5f1f0,#f6efe1,#eae6f4 85%,#fbfaf6)}.pcard .f717{position:absolute;left:17.5%;right:17.5%;top:50%;transform:translateY(-62%);display:flex;align-items:center;justify-content:space-between;font:400 15.5cqw/1 Courier Prime,Courier New,monospace}.pcard .f717 b{font-weight:400;color:#f7b500}.pcard .f717 span{color:#e8e4d9}.pcard .f717 i{width:2.5cqw;height:2.7cqw;border-radius:.7cqw;background:#e8e4d9}.pcard.gold .f717 b,.pcard.gold .f717 span{color:#2a1f08}.pcard.gold .f717 i{background:#2a1f08}.pcard.nacre .f717 b{color:#b9a36a}.pcard.nacre .f717 span{color:#6f6a7a}.pcard.nacre .f717 i{background:#6f6a7a}.pcard .story{position:absolute;left:0;right:0;top:44%;transform:translateY(-50%);text-align:center;font:italic 500 5.7cqw/1 Cormorant Garamond,Georgia,serif;color:#f4f1ea}.pcard .no{position:absolute;left:8%;bottom:9%;font:400 3.3cqw Courier Prime,Courier New,monospace;letter-spacing:.3em;color:#e8e4d9}.pcard .no b{font-weight:400;color:#f7b500}.pcard.gold .no,.pcard.gold .no b{color:#2a1f08}.pcard.nacre .no{color:#6f6a7a}.pcard.nacre .no b{color:#9a8450}.pcard .kind{position:absolute;right:8%;bottom:9%;font:400 2.6cqw Courier Prime,Courier New,monospace;letter-spacing:.35em;color:#8f8b82}.pcard.gold .kind{color:#3d2e0c}.pcard.nacre .kind{color:#8b8698}.pcard .shine{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.18) 45%,transparent 60%)}.cine.onboard:before{background:linear-gradient(90deg,#080a128c,#080a1200 55%);height:100%;transform:none}.cine.onboard:after{display:none}.cine.onboard .cine-hint{left:auto;right:24px;bottom:76px}.cine-skip.hidden{display:none}@media(max-aspect-ratio:23/20){.onb{left:16px;right:16px;width:auto;top:auto;bottom:16px;transform:none;max-height:55vh}}.photo-flash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#fff;opacity:0;pointer-events:none}.photo-flash.on{animation:photo-flash .55s ease-out}@keyframes photo-flash{0%{opacity:.9}to{opacity:0}}body.photo-on #hud{visibility:hidden}.photo-layer{--ink: #f4f1ea;--ink-2: rgba(244, 241, 234, .66);--line: rgba(255, 255, 255, .16);--glass: rgba(14, 17, 30, .82);--on-ink: #14172a;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;display:grid;place-items:center;padding:18px;background:#05070c8c;color:var(--ink)}.photo-card{position:relative;display:flex;gap:22px;max-width:min(1060px,100%);max-height:calc(100vh - 36px);border-radius:22px;padding:18px;border-color:#ffffff24}.photo-card .close{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#ffffff14;color:var(--ink);z-index:2}.photo-view{position:relative;flex:none;height:min(calc(100vh - 72px),780px);aspect-ratio:1080 / 1350;border-radius:12px;overflow:hidden;background:#05070c}.photo-view.story{aspect-ratio:1080 / 1920}.photo-view img{display:block;width:100%;height:100%;object-fit:contain}.photo-wait{position:absolute;top:0;right:0;bottom:0;left:0;display:none;place-items:center}.photo-wait:after{content:"";width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:#e0b04a;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.photo-layer.busy .photo-wait{display:grid}.photo-side{display:flex;flex-direction:column;gap:12px;width:300px;min-width:0;overflow:auto;padding-top:4px}.photo-side .primary{background:var(--ink);color:var(--on-ink)}.photo-side .primary:hover{background:#fff}.photo-side .row{display:flex;gap:8px}.photo-side .ghost{flex:1;background:#ffffff14;border-color:var(--line);color:var(--ink);padding:9px 10px}.photo-side .ghost:hover{background:#ffffff29}.seg{display:flex;padding:3px;border-radius:12px;background:#ffffff12;border:1px solid var(--line)}.seg button{flex:1;border:0;background:transparent;color:var(--ink-2);border-radius:9px;padding:8px 6px;font-size:.86rem}.seg button.on{background:#ffffff29;color:var(--ink)}.photo-text{margin:0;font-size:.8rem;line-height:1.45;color:var(--ink-2);word-break:break-word}.photo-ok{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:12px;cursor:pointer}.photo-ok input{margin:3px 0 0;accent-color:#e0b04a;width:16px;height:16px;flex:none}.photo-ok span{display:flex;flex-direction:column;gap:3px}.photo-ok b{font-size:.82rem;font-weight:600}.photo-ok small{font-size:.74rem;line-height:1.4;color:var(--ink-2)}.photo-ok.err{border-color:#e5372a}.photo-ok.hidden{display:none}.photo-album-head{display:flex;justify-content:space-between;align-items:baseline;margin-top:6px;padding-top:12px;border-top:1px solid var(--line);font-size:.9rem}.photo-album-head span{font-family:var(--mono);font-size:.75rem;color:var(--ink-2)}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.photo-grid p{grid-column:1 / -1;margin:0;font-size:.82rem;color:var(--ink-2)}.photo-thumb{position:relative;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;aspect-ratio:4 / 5;background:#05070c}.photo-thumb img{display:block;width:100%;height:100%;object-fit:cover}.photo-thumb.on{outline:2px solid #e0b04a;outline-offset:1px}.photo-thumb.shared:after{content:"◉";position:absolute;left:4px;bottom:2px;font-size:10px;color:#e0b04a;text-shadow:0 0 4px #000}.photo-thumb i{position:absolute;right:4px;top:4px;width:8px;height:8px;border-radius:50%;background:#e0b04a;box-shadow:0 0 6px #e0b04a}.photo-del{align-self:flex-start;border:0;background:none;color:var(--ink-2);font-size:.8rem;padding:2px 0;text-decoration:underline}@media(max-width:760px){.photo-card{flex-direction:column;overflow:auto;padding:14px}.photo-view{height:auto;width:100%}.photo-side{width:auto;overflow:visible}}.pcard.author .enso0{position:absolute;left:50%;top:46%;width:30cqw;transform:translate(-50%,-50%);color:#e0b04a;filter:drop-shadow(0 0 2cqw rgba(224,176,74,.45))}.pcard.author .enso0 svg{display:block;width:100%}.trace-note{position:fixed;left:50%;top:50%;z-index:60;transform:translate(-50%,-50%) scale(.92);padding:18px 30px;border-radius:18px;background:#14120ed1;border:2px solid rgba(255,255,255,.25);color:#f4efe3;font:700 22px/1.3 Inter,system-ui,sans-serif;text-align:center;pointer-events:none;opacity:0;transition:opacity .25s,transform .25s}.trace-note.ok{border-color:#e0b04a;color:#f3dc95;box-shadow:0 0 30px #e0b04a59}.trace-note.on{opacity:1;transform:translate(-50%,-50%) scale(1)}.chal-goal{position:absolute;left:50%;top:132px;transform:translate(-50%);border-radius:12px;padding:8px 14px;font-size:.92rem;max-width:min(560px,calc(100vw - 32px));text-align:center;border-color:#f7b50080!important}.chal-result{display:none}.chal-cine{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;justify-content:flex-end;padding:0 70px 54px;background:linear-gradient(180deg,#06070a33,#06070a8c 45%,#06070af0);color:#f4f1e8;animation:chalIn .6s ease-out}.chal-cine .in{max-width:1100px}.chal-cine .kick{font:700 13px var(--mono);letter-spacing:.3em;color:var(--chal, #f7b500);text-transform:uppercase}.chal-cine h2{margin:10px 0 0;font-size:clamp(34px,5.4vw,64px);line-height:1.02;letter-spacing:-.03em;font-weight:800;max-width:900px}.chal-cine h2 span{color:var(--chal, #f7b500)}.chal-cine .sub{margin:14px 0 0;font-size:clamp(16px,1.6vw,21px);color:#a9a499;max-width:760px;line-height:1.4}.chal-cine .cbar{display:flex;align-items:center;flex-wrap:wrap;gap:14px 34px;margin-top:30px;padding-top:22px;border-top:1px solid rgba(255,255,255,.14)}.chal-cine .n{font-variant-numeric:tabular-nums}.chal-cine .n b{font-size:clamp(22px,2.6vw,34px);font-weight:800}.chal-cine .n span{margin-left:8px;color:#a9a499;font-size:13px;letter-spacing:.1em;text-transform:uppercase}.chal-cine .acts{margin-left:auto;display:flex;align-items:center;gap:22px;flex-wrap:wrap}.chal-cine .link{border:0;background:none;color:#a9a499;font:600 15px inherit;font-family:inherit;cursor:pointer;padding:6px 0}.chal-cine .link:hover{color:#f4f1e8}.chal-cine .go{border:0;border-radius:16px;padding:18px 28px;background:var(--chal, #f7b500);color:var(--chal-ink, #17140a);font:800 19px inherit;font-family:inherit;cursor:pointer;box-shadow:0 0 40px color-mix(in srgb,var(--chal, #f7b500) 45%,transparent);white-space:nowrap}.chal-cine .go i{font-style:normal;margin-left:8px}.chal-cine.ask{animation:none}.chal-cine.ask .cbar{border-top:0;padding-top:0;margin-top:34px}.chal-cine.ask .acts{margin-left:0;gap:16px}.chal-cine.ask .go{min-width:240px;text-align:left}.chal-cine .go.alt{background:#ffffff0f;color:#f4f1e8;box-shadow:inset 0 0 0 2px #ffffff52}.chal-cine .go.alt:hover{box-shadow:inset 0 0 0 2px #f4f1e8}.chal-cine .go kbd{display:inline-block;margin-right:14px;padding:1px 7px;border-radius:6px;box-shadow:inset 0 0 0 1px currentColor;font:700 12px var(--mono);opacity:.6;vertical-align:3px}.chal-cine .tag{position:absolute;right:70px;top:28px;font:600 12px var(--mono);letter-spacing:.2em;color:#fff6;font-style:normal}@keyframes chalIn{0%{opacity:0}to{opacity:1}}@media(max-width:720px){.chal-cine{padding:0 18px 28px}.chal-cine .acts{margin-left:0;width:100%}.chal-cine .go{margin-left:auto;padding:14px 20px;font-size:16px}.chal-cine .tag{right:18px}.chal-cine.ask .go{min-width:0;flex:1 1 100%;margin-left:0}.chal-cine .go kbd{display:none}}.chrono{position:absolute;bottom:26px;width:190px;display:grid;justify-items:center;gap:8px;pointer-events:none}.chrono.c1{left:22px}.chrono.c2{right:22px}.chrono canvas{width:100%;height:auto;border-radius:50%;box-shadow:0 10px 30px #00000073}.chrono button{pointer-events:auto;border:0;border-radius:999px;padding:5px 14px;background:#0f1216b8;color:var(--ink);font-size:.8rem;cursor:pointer}.chrono:not(.live) button{visibility:hidden}.touch .chrono{bottom:auto;top:84px;width:116px;gap:6px}.touch .chrono.c1{left:12px}.touch .chrono.c2{right:12px}.touch .chal-goal{top:238px}body.chal-on .goal{display:none}.chal-count{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);font-size:clamp(3rem,14vw,7rem);font-weight:700;color:var(--chal, #f7b500);text-shadow:0 0 40px color-mix(in srgb,var(--chal, #f7b500) 55%,transparent),0 6px 30px rgba(0,0,0,.6);pointer-events:none;letter-spacing:.02em}.chal-count.pop{animation:chalPop .9s ease-out both}@keyframes chalPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:.15;transform:translate(-50%,-50%) scale(1.25)}}@media(max-height:560px){.chrono{width:140px;bottom:16px}.touch .chrono{width:96px;top:70px}.touch .chal-goal{top:196px}}body.chal-card-on .chrono{display:none}body:has(#chalCard:not(.hidden)) #prompt,body:has(#chalCard:not(.hidden)) #bubbles,body:has(#chalCard:not(.hidden)) .talk-bubble{visibility:hidden}
