: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 .more{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}.more{position:relative}.more>summary{list-style:none;display:inline-flex;align-items:center;justify-content:center;min-width:44px;font-size:20px}.more>summary::-webkit-details-marker{display:none}.more-pop{position:absolute;right:0;top:calc(100% + 6px);min-width:180px;max-width:calc(100vw - 24px);padding:10px;display:grid;gap:8px;background:var(--paper);color:var(--ink);border:1.5px solid var(--line);border-radius:12px;box-shadow:0 8px 24px #0003;z-index:5}.more-pop p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inapp{display:grid;gap:10px;text-align:left}.inapp p{margin:0}.inapp a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.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}.link-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;border:0;background:none;color:var(--red-ink);font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}.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)}.story{flex:1 1 100%;background:#fffbf0f2;color:var(--ink);border:1.5px solid var(--gold);border-radius:12px;overflow:hidden}.story-head{display:grid;grid-template-columns:1fr;gap:1px;width:100%;min-height:44px;padding:6px 12px;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.story-ch{font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.story-title{font-family:var(--serif);font-size:17px}.story-main{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.story-open .story-main{white-space:normal}.story-body{padding:0 12px 10px;font-size:14px;max-height:40vh;overflow-y:auto}.story-body p{margin:6px 0 0}.story-intro{font-style:italic}.story-count,.story-next{color:var(--muted)}.story-limited{margin:0;padding:6px 12px 8px;font-size:13px;color:var(--ok)}.topbar:has(.story){flex-wrap:wrap;row-gap:6px}.todo{margin:0 0 12px;padding-left:20px}.todo li{margin:4px 0}.hi-sub{display:block;margin-top:1px;font-size:.82em;font-weight:500;line-height:1.3;opacity:.78}
