:root{--red: #ce0000;--red-ink: #a10000;--gold: #e0a526;--gold-soft: #fbefd3;--ok: #167034;--warn: #8a5a00;--warn-soft: #fbf0da;--low: #b4410f;--paper: #fffbf0;--panel: #f6f4ef;--ink: #1b2430;--muted: #556170;--line: #d9d4ca;--focus: #1d4fa3;--font: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--serif: Georgia, "Times New Roman", serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--panel);color:var(--ink);font:16px/1.5 var(--font);-webkit-text-size-adjust:100%;overscroll-behavior:none}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.2;margin:0}.center{min-height:100%;display:grid;place-items:center;gap:12px;padding:16px;text-align:center}.card{max-width:380px;padding:28px 24px;background:var(--paper);border:1.5px solid var(--line);border-top:4px solid var(--red);border-radius:14px;display:grid;gap:12px}.muted{margin:0;font-size:14px;color:var(--muted);overflow-wrap:anywhere}.kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.btn{min-height:44px;padding:0 18px;border:1.5px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}.btn-primary{background:var(--red);border-color:var(--red-ink);color:#fff}.alert{margin:0;padding:10px 12px;border:1.5px solid var(--low);border-radius:10px;background:#fde9df;color:var(--low);font-weight:700}.game{position:fixed;inset:0;overflow:hidden}.scene{position:absolute;inset:0;touch-action:none}.scene canvas{display:block;width:100%;height:100%}.scene-msg{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--muted)}.scene-err{color:var(--low);font-weight:700}.topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:8px;padding:calc(8px + env(safe-area-inset-top)) 12px 8px;background:linear-gradient(#1b2430b8,#1b243000);color:#fff;pointer-events:none}.topbar>*{pointer-events:auto}.who{flex:1 1 auto;min-width:0}.who h1{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.5)}.who p{margin:0;font-size:13px;opacity:.92;text-shadow:0 1px 2px rgba(0,0,0,.5)}.acts{display:flex;gap:6px;flex:0 0 auto}@media(max-width:520px){.topbar{flex-wrap:wrap;row-gap:6px}.who{flex-basis:100%}.acts{flex:1 1 auto;justify-content:flex-start}.acts .chip:last-child{margin-left:auto}}.chip{min-height:44px;padding:0 12px;border:1.5px solid rgba(255,255,255,.7);border-radius:20px;background:#fffbf0eb;color:var(--ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}.chip-primary{background:var(--gold);border-color:#7a5200}.hud-slot{position:absolute;z-index:2}.hud-slot-quests{right:12px;bottom:calc(12px + env(safe-area-inset-bottom))}.hud-slot-genie{left:12px;bottom:calc(12px + env(safe-area-inset-bottom))}.hud-slot-powers{position:static}.sheet{position:absolute;z-index:3;right:0;top:0;bottom:0;width:min(380px,100%);background:var(--paper);border-left:1.5px solid var(--line);box-shadow:-8px 0 24px #0000002e;display:flex;flex-direction:column;animation:sheet-in .18s ease-out}@media(max-width:600px){.sheet{top:auto;left:0;width:100%;max-height:72%;border-left:0;border-top:1.5px solid var(--line);border-radius:16px 16px 0 0;animation-name:sheet-up}}@keyframes sheet-in{0%{transform:translate(24px);opacity:0}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}}@media(prefers-reduced-motion:reduce){.sheet{animation:none}}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:14px 16px 8px;border-bottom:1px solid var(--line)}.sheet-head h2{font-size:22px}.sheet-body{padding:12px 16px calc(16px + env(safe-area-inset-bottom));overflow-y:auto}.icon-btn{min-width:44px;min-height:44px;border:0;background:none;font-size:20px;cursor:pointer;color:var(--muted)}.facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px}.facts div{padding:10px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.facts dt{font-size:12.5px;color:var(--muted);font-weight:700}.facts dd{margin:2px 0 0;font-weight:700}.fogged{margin:0 0 12px;padding:10px 12px;background:#eef0f3;border:1.5px dashed #9aa3ad;border-radius:10px}.pill{display:inline-block;margin:0 0 10px;padding:4px 10px;border-radius:12px;font-size:13px;font-weight:700}.pill-warn{background:var(--warn-soft);color:var(--warn);border:1px solid var(--gold)}.students{margin:0;font-size:16px}.students strong{font-size:22px;font-family:var(--serif)}
