:root{--void: #06070a;--stone: #2a2724;--stone-hi: #3c3833;--iron: #5c636d;--text: #e9e4da;--muted: #a39b8e;--gold: #e8b04a;--gold-dim: #8a6a2c;--warden: #cfe8ff;--hostile: #ff5a3c;--danger: #ff3b2f;--good: #8fe0b0;--glass: rgba(207, 232, 255, .08);--glass-line: rgba(207, 232, 255, .22);--display: "Marcellus SC", "Cinzel", Georgia, serif;--body: "Alegreya Sans", "Segoe UI", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:var(--void);color:var(--text);font-family:var(--body);overflow:hidden}body{-webkit-font-smoothing:antialiased;touch-action:none;user-select:none;-webkit-user-select:none}button{font:inherit;color:inherit;cursor:pointer}kbd{font-family:var(--mono);font-size:.78em;padding:.1em .45em;border:1px solid var(--glass-line);border-bottom-width:2px;border-radius:4px;background:#00000059}.app{position:fixed;inset:0}.stage{position:absolute;inset:0;width:100%;height:100%;display:block;outline:none}.btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;min-height:46px;padding:10px 16px;border-radius:6px;background:linear-gradient(180deg,#3c3833bf,#24211ed9);border:1px solid rgba(207,232,255,.16);border-top-color:#cfe8ff52;font-family:var(--display);font-size:17px;letter-spacing:.04em;transition:border-color .15s,transform .08s,background .15s}.btn .sub{font-family:var(--body);font-size:13px;letter-spacing:0;color:var(--muted)}.btn:hover:not(:disabled),.btn:focus-visible{border-color:var(--warden);outline:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn.gold{background:linear-gradient(180deg,#e8b04a47,#8a6a2c38);border-color:#e8b04a8c;color:#fff3da}.btn.gold:hover:not(:disabled),.btn.gold:focus-visible{border-color:var(--gold);box-shadow:0 0 22px -8px var(--gold)}a.btn{text-decoration:none;color:var(--text)}.btn.ghost{background:transparent;border-color:#cfe8ff1f;font-size:15px;align-items:center;text-align:center}.stack{display:grid;gap:10px}.row{display:flex;gap:10px;flex-wrap:wrap}.row>.btn{flex:1 1 0}.row.end{justify-content:flex-end;margin-top:18px}.row.end>.btn{flex:0 0 auto;width:auto;min-width:140px;align-items:center}.eyebrow{margin:0 0 6px;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--warden);opacity:.8}h1,h2{font-family:var(--display);font-weight:400;margin:0 0 10px;text-wrap:balance}h2{font-size:30px;letter-spacing:.03em}.muted{color:var(--muted);line-height:1.5;margin:0 0 14px;max-width:60ch}.fine{color:var(--muted);font-size:13px;line-height:1.45;margin:12px 0 0;max-width:62ch}.flag{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:99px;font:600 11px var(--mono);letter-spacing:.04em;color:#1a1205;background:var(--gold);vertical-align:middle}.modal-scrim{position:absolute;inset:0;display:grid;place-items:center;padding:max(16px,var(--safe-t)) max(16px,var(--safe-r)) max(16px,var(--safe-b)) max(16px,var(--safe-l));background:radial-gradient(ellipse at center,#06070a8c,#06070adb);backdrop-filter:blur(3px);z-index:30;overflow-y:auto}.modal-scrim.solid{background:radial-gradient(ellipse at 50% 40%,#281c18bf,#06070af5)}.panel{width:min(420px,100%);padding:26px 26px 22px;border-radius:10px;position:relative;background:linear-gradient(180deg,#2a2724eb,#141312f2);border:1px solid rgba(207,232,255,.14);box-shadow:0 30px 80px -30px #000,inset 0 1px #cfe8ff1f}.panel:before{content:"";position:absolute;inset:6px;border:1px solid rgba(207,232,255,.06);border-radius:7px;pointer-events:none}.panel.wide{width:min(640px,100%)}.panel.refuge{border-color:#e8b04a59;box-shadow:0 0 80px -30px #e8b04a73,0 30px 80px -30px #000}.panel.refuge .eyebrow{color:var(--gold)}.panel.over h2{font-size:46px}.ledger{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 18px}.ledger div{padding:10px 12px;border-radius:6px;background:#00000040;border:1px solid rgba(207,232,255,.08)}.ledger dt{font-size:12px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}.ledger dd{margin:2px 0 0;font:600 22px var(--mono);font-variant-numeric:tabular-nums}.ledger.compact{grid-template-columns:repeat(3,minmax(0,1fr));margin:22px 0 0}.ledger.compact dd{font-size:17px}details summary{cursor:pointer;color:var(--muted);font-size:14px;padding:6px 0}details[open] summary{color:var(--text)}.seed-row{display:grid;gap:6px}.seed-row label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}input,select{font:15px var(--mono);color:var(--text);background:#00000059;border:1px solid rgba(207,232,255,.18);border-radius:5px;padding:9px 10px;width:100%;min-height:42px}input:focus-visible,select:focus-visible{outline:2px solid var(--warden);outline-offset:1px}input[type=range]{padding:0;min-height:30px;accent-color:var(--gold)}input[type=checkbox],input[type=radio]{width:18px;min-height:18px;accent-color:var(--gold)}.presenter{margin-top:16px;border-top:1px solid rgba(207,232,255,.08);padding-top:8px}.presenter .btn{margin-top:8px;font-size:14px}fieldset.choice{border:1px solid rgba(207,232,255,.14);border-radius:8px;padding:12px 14px 14px;margin:6px 0 16px;display:grid;gap:8px}fieldset.choice legend{padding:0 6px;font-family:var(--display);font-size:17px}fieldset.choice label{display:grid;grid-template-columns:22px 70px minmax(0,1fr);gap:8px;align-items:start;padding:10px;border-radius:6px;border:1px solid transparent;cursor:pointer}fieldset.choice label.on{border-color:#cfe8ff4d;background:var(--glass)}fieldset.choice label span{color:var(--muted);font-size:14px;line-height:1.4}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.field{display:grid;gap:6px;font-size:14px;color:var(--muted)}.field.check{display:flex;align-items:center;gap:10px;color:var(--text)}.table-wrap{overflow-x:auto}table.controls{width:100%;border-collapse:collapse;font-size:14px}table.controls th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em;padding:6px 8px;border-bottom:1px solid rgba(207,232,255,.12)}table.controls td{padding:7px 8px;border-bottom:1px solid rgba(207,232,255,.06)}.truth{margin:0;padding-left:18px;display:grid;gap:8px;line-height:1.45;color:var(--muted);max-width:66ch}.truth b{color:var(--text)}.title-screen{position:absolute;inset:0;display:grid;place-items:center;padding:16px;overflow-y:auto;background:radial-gradient(ellipse 60% 50% at 50% 38%,rgba(207,232,255,.08),transparent 70%),radial-gradient(ellipse 40% 30% at 50% 82%,rgba(232,176,74,.1),transparent 70%),repeating-linear-gradient(60deg,rgba(207,232,255,.025) 0 1px,transparent 1px 46px),repeating-linear-gradient(-60deg,rgba(207,232,255,.025) 0 1px,transparent 1px 46px),var(--void)}.title-card{width:min(440px,100%);text-align:center}.title-card .stack{text-align:left;margin-top:22px}.logo{font-size:clamp(76px,18vw,128px);line-height:.9;letter-spacing:.08em;margin:6px 0 12px;background:linear-gradient(180deg,#ffffff 0%,var(--warden) 45%,rgba(207,232,255,.35) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(207,232,255,.25))}.logo span{background:linear-gradient(180deg,#fff3da,var(--gold));-webkit-background-clip:text;background-clip:text}.tagline{color:var(--muted);font-size:18px;line-height:1.45;margin:0}.hud{position:absolute;inset:0;pointer-events:none;z-index:10}.hud button,.hud .touch,.hud a{pointer-events:auto}.hud-top{position:absolute;top:max(12px,var(--safe-t));left:max(12px,var(--safe-l));right:max(12px,var(--safe-r));display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:start}.vitals{display:grid;gap:8px;max-width:280px}.bar{position:relative;height:22px;border-radius:4px;background:#0000008c;border:1px solid rgba(207,232,255,.2);overflow:hidden}.bar i{position:absolute;inset:0 auto 0 0;background:linear-gradient(180deg,#e9e4da,#a39b8e);transition:width .15s}.bar.hp i{background:linear-gradient(180deg,#d9e8f2,#7f97ab)}.bar.hp i.low{background:linear-gradient(180deg,#ff8a72,var(--danger));animation:pulse .9s infinite}.bar span{position:relative;display:block;text-align:right;padding:0 8px;font:600 13px/22px var(--mono);font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 1px 2px #000,0 0 6px #000}.bar span small{opacity:.7;font-weight:400}.dodge{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.pip{width:26px;height:8px;border-radius:2px;background:linear-gradient(90deg,rgba(207,232,255,.6) var(--fill, 0%),rgba(0,0,0,.5) var(--fill, 0%));border:1px solid rgba(207,232,255,.3)}.pip.full{background:var(--warden);box-shadow:0 0 10px -2px var(--warden)}.dodge em{font-style:normal}.where{text-align:center;display:grid;justify-items:center;gap:4px}.floor{display:flex;align-items:baseline;gap:8px;font-family:var(--display)}.floor span{font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.floor b{font-size:34px;font-weight:400;line-height:1;color:var(--warden);text-shadow:0 0 18px rgba(207,232,255,.35)}.room-line{font-size:14px;color:var(--text);display:flex;gap:6px;align-items:center}.chip{font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.06em;padding:1px 7px;border-radius:99px;border:1px solid}.enc-aware{color:#ffd27a;border-color:#ffd27a80}.enc-engaged,.enc-chase{color:var(--hostile);border-color:#ff5a3c99}.enc-climax{color:#fff;background:var(--danger);border-color:var(--danger)}.enc-resolved{color:var(--good);border-color:#8fe0b080}.enc-disengaged{color:var(--muted);border-color:#a39b8e66}.laws{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.law,.tier{font-size:12px;padding:2px 8px;border-radius:3px;background:#00000073;border:1px solid rgba(207,232,255,.14);color:var(--muted)}.law{color:var(--warden)}.purse{justify-self:end;display:grid;justify-items:end;gap:4px}.purse>div:not(.buttons){display:flex;gap:8px;align-items:baseline;font-size:13px;color:var(--muted)}.purse b{font:600 18px var(--mono);color:var(--gold);font-variant-numeric:tabular-nums}.purse .secured b{color:#fff3da}.purse .buttons{display:flex;gap:6px;margin-top:4px}.icon{width:44px;height:44px;border-radius:6px;background:#141312bf;border:1px solid rgba(207,232,255,.18);font-size:17px;line-height:1}.icon:hover,.icon:focus-visible{border-color:var(--warden);outline:none}.director{position:absolute;top:calc(max(12px,var(--safe-t)) + 116px);left:max(12px,var(--safe-l));display:flex;align-items:center;gap:7px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.director .dot{width:9px;height:9px;border-radius:50%;background:var(--iron)}.d-buildup .dot{background:#ffd27a}.d-sustained .dot{background:#ff8a5c}.d-peak .dot{background:var(--danger);box-shadow:0 0 10px var(--danger)}.d-cool-down .dot{background:var(--warden)}.boss{position:absolute;left:50%;transform:translate(-50%);bottom:calc(max(18px,var(--safe-b)) + 10px);width:min(620px,calc(100% - 32px));text-align:center}.boss-name{font-family:var(--display);font-size:22px;letter-spacing:.12em;margin-bottom:6px;text-shadow:0 0 18px rgba(0,0,0,.9)}.boss-name small{font-family:var(--body);font-size:13px;letter-spacing:0;color:var(--muted)}.boss-bar{height:14px}.boss-bar i{background:linear-gradient(180deg,#ffd27a,#b8742a)}.boss-bar .mark{position:absolute;top:0;bottom:0;width:2px;background:#000000b3}.ward{margin-top:6px;font-size:14px}.ward.up{color:var(--warden)}.ward.down{color:var(--gold);font-weight:700;animation:pulse .6s infinite}.collapse-panel{position:absolute;top:calc(max(12px,var(--safe-t)) + 104px);left:50%;transform:translate(-50%);width:min(420px,calc(100% - 32px));text-align:center;padding:10px 16px 12px;border-radius:8px;background:#1e0806b8;border:1px solid rgba(255,90,60,.45);box-shadow:0 0 40px -12px var(--danger)}.collapse-panel .phase{font-family:var(--display);letter-spacing:.3em;color:var(--hostile);font-size:15px}.collapse-panel .timer{font:600 42px/1 var(--mono);font-variant-numeric:tabular-nums;margin:2px 0}.collapse-panel .timer small{font-size:18px;opacity:.6}.collapse-panel p{margin:0 0 8px;color:#f3d6cf;font-size:14px}.momentum{position:relative;height:10px;border-radius:99px;background:#0009;border:1px solid rgba(207,232,255,.25);overflow:visible}.momentum i{position:absolute;inset:0 auto 0 0;border-radius:99px;background:#7a8ea0;transition:width .1s}.momentum i.mid{background:var(--warden)}.momentum i.hi{background:#fff;box-shadow:0 0 12px #fff}.momentum .gate{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--gold)}.momentum span{position:absolute;right:-36px;top:-5px;font:600 12px var(--mono)}.gates{display:flex;justify-content:center;gap:12px;margin-top:6px;font:12px var(--mono);color:var(--muted);flex-wrap:wrap}.gates .met{color:#fff}.gates .ready{color:var(--gold);animation:pulse .8s infinite}.vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 160px 30px #780a0059;animation:breathe 2s infinite}.collapse-total .vignette{box-shadow:inset 0 0 220px 80px #960a008c}.stair-arrow{position:absolute;left:50%;top:50%;width:0;height:0}.stair-arrow span{position:absolute;left:-12px;top:calc(-1*min(42vh,330px));width:24px;text-align:center;color:var(--warden);font-size:22px;text-shadow:0 0 12px var(--warden)}.stair-arrow em{position:absolute;left:-40px;top:calc(-1*min(42vh,330px) + 24px);width:80px;text-align:center;font:12px var(--mono);font-style:normal;color:var(--warden)}.prompt{position:absolute;left:50%;bottom:calc(max(18px,var(--safe-b)) + 96px);transform:translate(-50%);display:flex;gap:10px;align-items:center;padding:8px 14px;border-radius:6px;background:#141312d9;border:1px solid rgba(232,176,74,.5);font-size:15px;white-space:nowrap}.toasts{position:absolute;top:36%;left:50%;transform:translate(-50%);list-style:none;margin:0;padding:0;display:grid;gap:6px;justify-items:center;width:min(520px,calc(100% - 32px))}.toast{padding:6px 14px;border-radius:4px;font-family:var(--display);letter-spacing:.08em;font-size:17px;text-align:center;background:#06070a99;animation:rise 2.6s forwards}.toast.gold{color:var(--gold)}.toast.good{color:var(--good)}.toast.warn{color:#ffd27a}.toast.danger{color:var(--hostile)}.toast.info{color:var(--warden)}.paused-tag{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--display);font-size:28px;letter-spacing:.3em;opacity:.7}.debug{position:absolute;right:max(12px,var(--safe-r));bottom:max(12px,var(--safe-b));width:300px;padding:10px 12px;border-radius:6px;background:#000000b8;border:1px solid rgba(207,232,255,.2);font:12px var(--mono);display:grid;gap:2px}.debug div{display:flex;justify-content:space-between;gap:10px}.debug span{color:var(--muted)}.debug code{color:var(--warden);text-align:right;overflow-wrap:anywhere}.panel.map{width:min(720px,100%)}.map-wrap{aspect-ratio:4 / 3;max-height:60vh;width:100%;border-radius:8px;background:#00000059;border:1px solid rgba(207,232,255,.1)}.map-wrap svg{width:100%;height:100%;display:block}.room{fill:#cfe8ff08;stroke:#cfe8ff59;stroke-width:.35}.room.ready{fill:#cfe8ff1c}.room.t-stair{stroke:var(--warden);stroke-width:.7}.room.t-sanctum{stroke:var(--gold);fill:#e8b04a1f}.room.t-organ{stroke:var(--hostile);stroke-width:.7}.room.rubble{fill:#961e0a59;stroke:#ff5a3c80}.room-label{fill:var(--muted);font:3.4px var(--body);text-anchor:middle}.stair-dot{fill:var(--warden)}.player-dot{fill:var(--gold);stroke:#000;stroke-width:.4}.legend{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--muted)}.legend .sw{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:6px;vertical-align:-2px;border:1px solid rgba(207,232,255,.4)}.sw-ready{background:#cfe8ff33}.sw-stair{background:var(--warden);border-radius:50%!important}.sw-you{background:var(--gold);border-radius:50%!important}.sw-boss{border-color:var(--hostile)!important}.sw-refuge{border-color:var(--gold)!important;background:#e8b04a33}.sw-sealed{height:3px!important;border:0!important;background:var(--gold);vertical-align:3px!important}.link{stroke:#cfe8ff59;stroke-width:2.4;stroke-linecap:round}.link.d-sealed,.link.d-prism{stroke:var(--gold);stroke-dasharray:2 2}.link.d-oneway{stroke-dasharray:5 2}.touch{position:absolute;inset:auto 0 0;height:0;z-index:20}.stick{position:absolute;left:max(22px,var(--safe-l));bottom:max(22px,var(--safe-b));width:132px;height:132px;border-radius:50%;background:radial-gradient(circle,#cfe8ff0f,#cfe8ff05);border:1px solid rgba(207,232,255,.22);touch-action:none}.knob{position:absolute;left:50%;top:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:50%;background:#cfe8ff38;border:1px solid rgba(207,232,255,.5)}.actions{position:absolute;right:max(16px,var(--safe-r));bottom:max(16px,var(--safe-b));width:196px;height:196px}.act{position:absolute;width:64px;height:64px;border-radius:50%;border:1px solid rgba(207,232,255,.35);background:#141312b3;font-size:12px;letter-spacing:.04em;touch-action:none}.act.light{right:0;bottom:0;width:84px;height:84px;font-size:15px;border-color:var(--warden)}.act.heavy{right:92px;bottom:6px}.act.parry{right:4px;bottom:92px}.act.dodge{right:80px;bottom:80px;border-color:#8fe0b099}.act.use{right:0;bottom:168px;border-color:var(--gold);color:var(--gold)}.act.slide{right:72px;bottom:156px;border-color:#fff}@keyframes pulse{50%{opacity:.55}}@keyframes breathe{50%{opacity:.65}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}10%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(-10px)}}@media (max-width: 640px){.hud-top{grid-template-columns:minmax(0,1fr) auto}.where{grid-column:1 / -1;grid-row:2;justify-items:start;text-align:left}.where .floor b{font-size:26px}.purse{grid-row:1;grid-column:2}.director{top:calc(max(12px,var(--safe-t)) + 206px)}.collapse-panel{top:auto;bottom:calc(max(18px,var(--safe-b)) + 220px)}.toasts{top:30%}.stair-arrow span{top:-30vh}.stair-arrow em{top:calc(-30vh + 24px)}.ledger{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}fieldset.choice label{grid-template-columns:22px minmax(0,1fr)}fieldset.choice label span{grid-column:2}.debug{width:calc(100% - 24px);bottom:240px}.boss{bottom:calc(max(18px,var(--safe-b)) + 210px)}.prompt{bottom:calc(max(18px,var(--safe-b)) + 200px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
