:root{color-scheme:dark;--bg:#101615;--panel:#19201e;--line:#303a34;--text:#e5e8df;--muted:#9ba79b;--amber:#e9ad57;--green:#94b79a;--danger:#de7865;font-family:Segoe UI,Arial,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 0,#202a23 0,transparent 55%),var(--bg);color:var(--text);min-width:320px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;transition:background .15s,border-color .15s,transform .12s}button:focus-visible,a:focus-visible{outline:2px solid var(--amber);outline-offset:4px}button:disabled{cursor:default}button:active:not(:disabled){transform:translateY(1px)}button{touch-action:manipulation}button[hidden],[hidden]{display:none!important}.topline{height:4px;background:repeating-linear-gradient(135deg,#ba8c48 0 12px,#242a23 12px 24px);opacity:.75}.app{max-width:1480px;margin:auto;padding:0 40px}.header{height:99px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{color:inherit;text-decoration:none;display:flex;gap:16px;align-items:center}.brand-mark{height:43px;width:43px;border:1px solid #847347;display:grid;place-items:center;color:var(--amber);font-size:32px;font-weight:400}.brand strong{display:block;font-size:21px;letter-spacing:4px;font-weight:800}.brand small{display:block;font-size:9px;letter-spacing:2.8px;color:var(--muted);margin-top:5px}.header-right{display:flex;align-items:center;gap:18px}.build{font:10px Consolas,monospace;letter-spacing:1.5px;color:var(--muted);display:flex;align-items:center;gap:8px}.build i,.live-dot{width:6px;height:6px;background:var(--green);display:inline-block;border-radius:50%;box-shadow:0 0 9px #94b79a44}.icon-button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:10px 12px;font:10px Consolas,monospace;letter-spacing:1px}.icon-button:hover{color:var(--text);border-color:#6c7568}.help{width:34px;font-size:15px;padding:7px}.overview{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:34px 0 30px}.eyebrow{color:var(--amber);font:10px Consolas,monospace;letter-spacing:2px}h1{font-size:32px;letter-spacing:-.8px;margin:10px 0 8px;font-weight:600}.heading p{color:var(--muted);font-size:12px;margin:0}.resources{display:flex;border-left:1px solid var(--line)}.resource{padding:0 28px;min-width:145px}.resource:last-child{padding-right:0}.resource+.resource{border-left:1px solid var(--line)}.resource-label{display:block;font:10px Consolas,monospace;letter-spacing:1.3px;color:var(--muted);white-space:nowrap}.resource strong{font:32px Consolas,monospace;display:block;margin:9px 0 4px;color:var(--amber)}.resource em{font-size:16px;font-style:normal;color:var(--muted)}.resource small{color:var(--muted);font-size:10px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:24px}.main-column{min-width:0}.game-panel{border:1px solid var(--line);background:var(--panel)}.panel-bar{height:46px;display:flex;justify-content:space-between;align-items:center;padding:0 20px;font:9px Consolas,monospace;letter-spacing:1px;gap:10px}.panel-bar>span{display:flex;align-items:center;gap:9px}.panel-bar b{font-weight:400}.muted{color:var(--muted)}.separator{padding:0 4px}.text-button{background:none;border:none;padding:6px 0;color:var(--muted);font-size:11px;white-space:nowrap}.text-button:hover{color:var(--amber)}.text-button:disabled{opacity:.35}.viewport{position:relative;background:#0b0e0d;overflow:hidden;isolation:isolate}.viewport canvas{display:block;width:100%;height:auto;aspect-ratio:1200/650;touch-action:manipulation}.scene-top,.scene-bottom{position:absolute;left:22px;right:22px;display:flex;justify-content:space-between;pointer-events:none}.scene-top{top:20px;align-items:center}.scene-tag{color:#d9c49b;background:#0b100fbb;border:1px solid #8f86544d;padding:7px 9px;font:9px Consolas,monospace;letter-spacing:1.2px}.scene-tag.combat{color:#f6ac93;border-color:#9f523d;background:#301713d9}.scene-coordinate{font:10px Consolas,monospace;color:#a8ae9b;text-shadow:0 1px 3px #000}.scene-bottom{bottom:20px;font:10px Consolas,monospace;color:#d7d7bf;align-items:center;gap:10px;text-shadow:0 1px 3px #000}.camera-label{letter-spacing:2px;white-space:nowrap;color:#aaa98f}.camera-label i{display:inline-block;background:#a86e52;width:5px;height:5px;border-radius:50%;margin-left:4px}.overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:40px 6%;background:linear-gradient(90deg,#0a100ff0,#0a100fbd 48%,#0a100f38);z-index:3}.overlay-kicker{font:9px Consolas,monospace;letter-spacing:2px;color:var(--amber)}.overlay h2{font-size:clamp(25px,3vw,44px);line-height:1.12;letter-spacing:-1px;font-weight:600;margin:18px 0}.overlay p{font-size:13px;line-height:1.7;color:#b8c1b4;margin:0 0 24px}.primary{background:var(--amber);border:1px solid var(--amber);color:#171b14;padding:14px 26px;font-size:12px;letter-spacing:.5px;font-weight:700}.primary:hover{background:#f3bd71}.primary:disabled{opacity:.5}.overlay small{font:9px Consolas,monospace;color:#99a38f;margin-top:15px}.controls{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:22px;border-top:1px solid var(--line);align-items:center}.health-label{display:flex;justify-content:space-between;font:10px Consolas,monospace;letter-spacing:1px;margin-bottom:10px}.health-label span{color:var(--muted)}.health-label b{font-weight:400}.meter{height:5px;background:#303a31;overflow:hidden}.meter span{display:block;height:100%;width:100%;background:var(--green);transition:width .15s linear,background .2s}.health small{display:block;color:var(--muted);font-size:9px;margin-top:8px}.attack-button{border:1px solid #4a5449;background:#252f27;color:#bac5b5;min-height:64px;padding:12px 10px}.attack-button span{display:block;font:11px Consolas,monospace;letter-spacing:.8px}.attack-button small{font-size:10px;display:block;margin-top:6px;opacity:.7}.attack-button:disabled{opacity:.6}.attack-button.active{border-color:var(--amber);background:var(--amber);color:#181b14;box-shadow:0 0 20px #e9ad5716}.attack-button.active:hover{background:#f2c27c}.enemy-hud{position:absolute;top:28%;left:56%;width:29%;font:10px Consolas,monospace;color:#eed4bb;pointer-events:none;text-shadow:0 1px 5px #000}.enemy-hud>div:first-child{display:flex;justify-content:space-between;gap:5px;margin-bottom:7px}.enemy-hud b{font-weight:400}.meter.enemy{background:#251d1b;height:5px}.meter.enemy span{background:var(--danger)}.enemy-hud small{font-size:8px;display:block;text-align:right;margin-top:8px;letter-spacing:1px}.hit-flash{position:absolute;inset:0;background:#c33e231f;pointer-events:none;opacity:0;box-shadow:inset 0 0 65px #d7574933}.hit-flash.flash{animation:flash .25s ease-out}@keyframes flash{0%{opacity:1}100%{opacity:0}}.route{border-top:1px solid var(--line);padding:19px 22px 20px}.route-title{display:flex;align-items:center;justify-content:space-between;font:9px Consolas,monospace;letter-spacing:1.2px;color:var(--muted)}.route-title strong{font-size:13px;font-weight:400;color:var(--text)}.door-track{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin:14px 0}.door-node{height:7px;background:#303b32;border:1px solid #495344}.door-node.hostile{border-color:#7b6250;background:#342b25}.door-node.done{background:var(--green);border-color:var(--green)}.door-node.current{border-color:var(--amber);box-shadow:0 0 8px #e9ad5744}.route-note{display:flex;gap:18px;color:var(--muted);font:9px Consolas,monospace}.upgrades-panel{border:1px solid var(--line);padding:22px;background:linear-gradient(135deg,#202820,#19201e)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-heading h2{font-weight:500;font-size:16px;margin:0}.section-heading>span{color:#80917e;font:12px Consolas,monospace}.aside-intro{font-size:11px;color:var(--muted);margin:9px 0 22px}.upgrade{border-top:1px solid var(--line);padding:19px 0 21px}.upgrade-top{display:flex;justify-content:space-between;align-items:center}.upgrade-icon{font-size:31px;line-height:1;color:#c8b781}.level{font:9px Consolas,monospace;color:var(--muted);border:1px solid #3c473a;padding:4px 6px}.upgrade h3{font-size:14px;font-weight:500;margin:10px 0 6px}.upgrade p{font-size:10px;color:var(--muted);margin:0;line-height:1.5}.upgrade-effect{font:10px Consolas,monospace;color:#b5c4aa;margin:13px 0}.buy-button{background:#293329;border:1px solid #526048;color:var(--text);display:flex;justify-content:space-between;width:100%;padding:11px 12px;font-size:11px}.buy-button b{font:12px Consolas,monospace;color:var(--amber)}.buy-button:disabled{opacity:.4;border-color:#394436}.buy-button:hover:not(:disabled){background:#3a4835;border-color:var(--amber)}.field-note{border:1px dashed #434b3b;padding:13px;margin-top:3px}.field-note>span{font:8px Consolas,monospace;letter-spacing:.5px;color:var(--amber)}.field-note p{font-size:10px;color:var(--muted);line-height:1.8;margin:8px 0 0}.lower-panels{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.floor-panel,.log-panel{padding:20px;border:1px solid var(--line);background:#151d19;min-height:160px}.floor-list .empty{color:var(--muted);font-size:11px;line-height:1.8;margin-top:22px}.floor-item{display:flex;justify-content:space-between;border-top:1px solid #2c382f;padding:10px 0;font:10px Consolas,monospace}.floor-item:first-child{margin-top:15px}.floor-item span:last-child{color:var(--green)}#log{list-style:none;padding:0;margin:16px 0 0;display:flex;flex-direction:column;gap:10px}#log li{display:flex;gap:12px;font-size:10px;line-height:1.5}#log time{color:#71826e;font:9px Consolas,monospace;padding-top:2px}#log li>span{color:#b7c2af}.signal{letter-spacing:2px}footer{display:flex;justify-content:space-between;align-items:center;padding:22px 0 30px;gap:15px;font:9px Consolas,monospace;color:#85937e}footer .text-button{font-size:9px}dialog{background:#1a231e;color:var(--text);border:1px solid #52604b;padding:36px;max-width:540px;width:calc(100% - 32px);box-shadow:0 30px 100px #0008}dialog::backdrop{background:#020805c9;backdrop-filter:blur(5px)}dialog h2{font-size:25px;font-weight:500;line-height:1.3}dialog p{font-size:13px;line-height:1.8}dialog .primary{margin-top:10px}.dialog-close{position:absolute;right:14px;top:9px;border:none;color:var(--muted);font-size:26px;background:transparent}.dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:15px}.dialog-actions .primary{margin:0}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,15px);background:#d1b279;color:#131b14;box-shadow:0 5px 30px #0005;padding:12px 22px;font-size:12px;z-index:20;opacity:0;pointer-events:none;transition:.2s;max-width:90%;text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1500px){.app{padding:0 50px}.game-layout{grid-template-columns:minmax(0,1fr) 310px}.viewport canvas{aspect-ratio:1200/650}}
@media(max-width:1100px){.app{padding:0 24px}.game-layout{gap:18px;grid-template-columns:minmax(0,1fr) 250px}.upgrades-panel{padding:18px}.resource{padding:0 16px;min-width:120px}.overview{gap:20px}h1{font-size:28px}.scene-top{left:14px;right:14px;top:14px}.scene-bottom{left:14px;right:14px;bottom:12px}.panel-bar{padding:0 14px;letter-spacing:0}.controls{padding:16px;gap:16px}.overlay{padding:30px 6%}.overlay h2{font-size:29px;margin:12px 0}.overlay p{font-size:11px;margin-bottom:15px}.overlay-kicker{font-size:8px;letter-spacing:1px}.overlay .primary{padding:12px 20px}.overlay small{font-size:8px}.route{padding:16px}.route-note{font-size:8px;gap:8px}.lower-panels{gap:15px}.floor-panel,.log-panel{padding:16px}.build{display:none}}
@media(max-width:850px){.game-layout{grid-template-columns:1fr}.upgrades-panel{display:grid;grid-template-columns:repeat(3,1fr);gap:0 20px}.upgrades-panel>.section-heading,.aside-intro,.field-note{grid-column:1/-1}.aside-intro{margin-bottom:6px}.upgrade{border-top:0;padding:14px 0}.field-note{display:none}.overview{align-items:flex-start}.heading p{max-width:200px;line-height:1.5}.resources{border-left:0}.resource{min-width:100px;padding:0 12px}.resource strong{font-size:27px}.resource-label{font-size:8px}.viewport canvas{aspect-ratio:1200/650}.overlay h2{font-size:36px}.overlay p{font-size:13px}.overlay-kicker{font-size:9px}.overlay .primary{padding:14px 24px}.overlay small{font-size:9px}.scene-bottom{bottom:18px}.panel-bar{font-size:10px}.attack-button span{font-size:12px}}
@media(max-width:600px){.app{padding:0 14px}.header{height:78px;gap:8px}.brand{gap:10px}.brand-mark{height:34px;width:34px;font-size:25px}.brand strong{font-size:16px;letter-spacing:2px}.brand small{font-size:7px;letter-spacing:1.6px}.header-right{gap:8px}#sound{font-size:8px;padding:8px}.help{font-size:13px;width:28px;padding:5px}.overview{display:block;padding:23px 0 22px}.heading h1{font-size:27px;margin:8px 0}.heading p{max-width:none;font-size:11px}.eyebrow{font-size:8px}.resources{margin-top:24px;justify-content:space-between}.resource{flex:1;min-width:0;padding:0 12px}.resource:first-child{padding-left:0}.resource strong{font-size:27px}.resource small{font-size:9px}.resource-label{font-size:8px;letter-spacing:.6px}.panel-bar{font-size:8px;padding:0 11px;height:40px}.panel-bar>span{gap:5px}.panel-bar .separator,.panel-bar .separator+.muted{display:none}.viewport canvas{aspect-ratio:1.3;object-fit:cover;object-position:center}.scene-top{top:10px;left:10px;right:10px}.scene-tag{font-size:7px;letter-spacing:.6px;padding:5px 7px}.scene-coordinate{font-size:8px}.scene-bottom{bottom:11px;left:11px;right:11px;font-size:8px}.camera-label{display:none}.overlay{padding:35px 7%;background:linear-gradient(90deg,#0a100fed,#0a100fa1)}.overlay h2{font-size:29px;margin:14px 0}.overlay p{font-size:11px;margin-bottom:18px}.overlay-kicker{font-size:7px;letter-spacing:1px}.overlay .primary{padding:12px 20px;font-size:11px}.overlay small{font-size:8px}.controls{padding:16px 12px;grid-template-columns:1fr;gap:15px}.health-label{font-size:9px}.health small{font-size:8px}.attack-button{min-height:58px}.attack-button span{font-size:11px}.attack-button small{font-size:9px}.health{position:relative}.health #regen{position:absolute;right:0;top:30px}.route{padding:16px 12px}.route-note{flex-wrap:wrap;gap:5px 14px;font-size:8px}.door-track{gap:4px}.enemy-hud{top:29%;left:57%;width:34%;font-size:8px}.enemy-hud small{font-size:7px}.lower-panels{grid-template-columns:1fr;gap:14px;margin-top:14px}.floor-panel,.log-panel{min-height:130px}.upgrades-panel{grid-template-columns:1fr;padding:18px;gap:0}.upgrade{border-top:1px solid var(--line);padding:17px 0;display:grid;grid-template-columns:1fr 135px;column-gap:12px}.upgrade-top{grid-column:1/-1}.upgrade h3{font-size:13px;grid-column:1;white-space:nowrap}.upgrade p{grid-column:1;font-size:9px}.upgrade-effect{grid-column:1;margin:11px 0 0;font-size:9px}.buy-button{grid-column:2;grid-row:3/5;align-self:center;padding:12px 9px;font-size:10px}.upgrade-icon{font-size:24px}.aside-intro{margin-bottom:15px}.game-layout{gap:14px}footer{flex-wrap:wrap;justify-content:flex-start;gap:12px;font-size:8px;padding:20px 0}footer .text-button{margin-left:auto}.enemy-hud>div:first-child{flex-wrap:wrap}dialog{padding:26px}dialog h2{font-size:23px}dialog p{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Residential horror palette and a full, uncropped view of the doorway on phones. */
:root{--amber:#c8ad7d;--bg:#111512;--panel:#1c231d;--line:#384034}.topline{background:#786b4c}.brand strong{letter-spacing:3px}.brand small{letter-spacing:1.6px}.enemy-hud{left:66%;width:25%}.scene-coordinate{font-size:9px}.overlay-kicker{color:#b8aa8c}
@media(max-width:600px){.viewport canvas{aspect-ratio:1200/650;object-fit:fill}.overlay{padding:22px 6%}.overlay h2{font-size:23px;margin:9px 0}.overlay p{font-size:10px;line-height:1.45;margin-bottom:12px}.overlay-kicker,.overlay small{display:none}.overlay .primary{padding:10px 15px}.scene-coordinate{display:none}.scene-bottom{font-size:7px;bottom:8px}.scene-tag{font-size:6px}.enemy-hud{top:25%;left:66%;width:26%;font-size:7px}.enemy-hud small{font-size:6px}.brand strong{font-size:15px;letter-spacing:2px}.brand small{font-size:6px;letter-spacing:1px}}

/* Cleared-floor workshops. */
.workshop-picker{display:block;font:9px Consolas,monospace;letter-spacing:1px;color:var(--muted);margin:0 0 14px;grid-column:1/-1}.workshop-picker select{display:block;width:100%;min-width:0;margin-top:8px;padding:10px 7px;background:#101a14;color:var(--text);border:1px solid #56614a;font:11px Segoe UI,sans-serif}.workshop-picker select:disabled{opacity:.55}.upgrade-availability{display:block;font:9px Segoe UI,sans-serif;line-height:1.5;color:var(--muted);margin-top:9px;grid-column:1/-1}.buy-button{gap:8px}.buy-button span{font-size:10px}.workshop-card{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;background:#1c281e;border:1px solid #3c4939;color:#c2c8b4;margin-top:10px;padding:12px;font:11px Consolas,monospace}.workshop-card small{display:block;font-size:8px;color:var(--muted);margin-top:5px}.workshop-card.selected{border-color:var(--amber);background:#333429}.workshop-card:disabled{opacity:.6}.visit-panel{padding:19px 22px;border-top:1px solid var(--line);background:#242c21}.visit-heading{display:flex;justify-content:space-between;gap:12px;font-size:12px}.visit-heading>span{color:var(--amber);white-space:nowrap;font:12px Consolas,monospace}.visit-steps{display:flex;justify-content:space-between;gap:8px;font:8px Consolas,monospace;color:var(--muted);margin:15px 0 12px}.visit-steps .current{color:var(--amber)}.visit-panel .meter span{background:var(--amber);transition:none}.visit-panel p{font:10px Consolas,monospace;color:var(--muted);margin:10px 0 0}.aside-intro{line-height:1.6}.workshop-card:focus-visible,select:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
@media(max-width:600px){.visit-panel{padding:16px 12px}.visit-heading{font-size:11px}.visit-steps{font-size:7px}.upgrade{grid-template-columns:minmax(0,1fr) 145px}.buy-button span{font-size:9px}.upgrade-availability{margin-top:12px}.workshop-picker select{font-size:12px}}

/* One permanent base and passive rooms on the other cleared floors. */
.base-status{grid-column:1/-1;border:1px solid var(--line);padding:12px;margin:0 0 12px;font:10px Consolas,monospace;color:var(--muted);line-height:1.5}.base-status.unlocked{border-color:#738267;color:#bfceaa;background:#263026}.floor-list{max-height:400px;overflow:auto;padding-right:4px}.room-card{margin-top:10px;padding:12px;border:1px solid #3c4939;background:#1a241d}.room-top{display:flex;justify-content:space-between;gap:8px;font:9px Consolas,monospace;color:var(--muted)}.room-card strong{display:block;margin-top:8px;font-size:12px;color:var(--text)}.room-card p{margin:7px 0 0;font-size:10px;line-height:1.5;color:#bac5ac}.room-card.rare{border-color:#8c7951;background:#2b2b20}.room-card.rare .room-top{color:#cfb477}.room-card.base{border-color:#7a8c65;background:#263026}.room-card.base strong{color:#c2d6a5}#show-floors{margin-top:15px;font-size:11px}.buff-panel{margin-top:20px;padding:22px;background:var(--panel);border:1px solid var(--line)}.buff-panel ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.buff-panel li{padding:12px 0;border-top:1px solid var(--line);font-size:11px}.buff-panel li span{display:block;color:var(--muted);margin-bottom:6px}.buff-panel li strong{font-size:11px;font-weight:500;color:#c9d3bc}.buff-panel p{font-size:11px;color:var(--muted);line-height:1.6}.buff-panel .buff-note{font-size:10px;border-top:1px solid var(--line);padding-top:14px;margin-bottom:0}.room-card,.buff-panel li{overflow-wrap:anywhere}
@media(max-width:600px){.buff-panel{padding:18px;margin-top:14px}.buff-panel ul{grid-template-columns:1fr}.room-top{font-size:8px}.room-card strong{font-size:12px}.base-status{font-size:10px}.health #regen{position:static;display:block;margin-top:7px}.floor-list{max-height:360px}}
