:root{--bg:#07080b;--panel:#0e1118;--panel2:#141826;--line:#232a3a;--text:#d7dcea;--dim:#7a8399;--hp:#38e05a;--mana:#4aa3ff;--xp:#f5c542;--warn:#ff3b3b;--ai:#9ef1ff;--donut:#ff7ad9;--bronze:#cd7f32;--silver:silver;--gold:gold;--platinum:#e5e4e2;--legendary:#ff8c00;--celestial:#b57edc;--cell:30px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;font-family:Inter,system-ui,sans-serif;font-size:14px;overflow-x:hidden}body.floor-1{--accent:#6ee7a0}body.floor-2{--accent:#ff9d6e}body.floor-3{--accent:#9ef1ff}h1,h2,.title-h1,.trans-name,.death-h1{letter-spacing:.08em;font-family:Bebas Neue,Inter,sans-serif}button{font-family:inherit}.btn{background:var(--panel2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:8px 14px;font-family:IBM Plex Mono,monospace;font-size:12px}.btn.primary{border-color:var(--hp);color:var(--hp);background:#173a2a}.btn.warn{border-color:var(--warn);color:var(--warn);background:#3a1717}.btn.small{padding:4px 8px}.btn.tiny{padding:2px 8px;font-size:11px}.btn:disabled{opacity:.4;cursor:not-allowed}.footer-line{text-align:center;color:var(--dim);pointer-events:none;font-size:10px;position:fixed;bottom:4px;left:0;right:0}.dim{color:var(--dim);font-size:12px}.warn-line{color:var(--warn);margin-bottom:8px;font-size:12px}.title-screen,.intro-screen,.death-screen,.ending-screen,.transition-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:100vh;padding:24px;display:flex}.title-glyph{color:var(--ai);text-shadow:0 0 24px var(--ai);font-size:64px}.title-h1{color:var(--ai);margin:0;font-size:44px}.title-sub{color:var(--donut);letter-spacing:.3em;font-family:IBM Plex Mono,monospace}.title-flavor{max-width:420px;color:var(--dim)}.title-screen{position:relative;overflow:hidden}.title-ticker{color:var(--warn);font-family:IBM Plex Mono,monospace;font-size:12px}.title-new{gap:8px;display:flex}.name-input{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:8px 10px;font-family:IBM Plex Mono,monospace}.intro-crawlnum{color:var(--ai);font-family:IBM Plex Mono,monospace;font-size:20px}.intro-crawlname{color:var(--donut);font-size:18px}.intro-bubble{text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:10px;max-width:440px;padding:16px}.intro-bubble.ai{border-color:var(--ai)}.intro-bubble.donut{border-color:var(--donut)}.intro-speaker{letter-spacing:.2em;font-family:IBM Plex Mono,monospace;font-size:11px}.intro-bubble.ai .intro-speaker{color:var(--ai)}.intro-bubble.donut .intro-speaker{color:var(--donut)}.game-screen{height:100dvh;padding:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));flex-direction:column;display:flex;position:relative;overflow:hidden}.game-head{flex-shrink:0}.game-main{flex-direction:column;flex:1;min-height:0;display:flex}.col-center{flex-direction:column;flex:1;align-items:center;min-width:0;min-height:0;display:flex}.map-box{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;overflow:hidden}.stat-mini{display:none}.mini-log{border-top:1px solid var(--line);cursor:pointer;min-height:48px;padding:4px 2px;overflow:hidden}.mini-log-line{color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.mini-log-line.ai{color:var(--ai)}.mini-log-line.donut{color:var(--donut)}.mini-log-line.combat{color:#ffb36a}.mini-log-line.warn{color:var(--warn)}.mini-log-line.ach{color:var(--xp)}.kb-hint{display:none}.bottom-zone{flex-shrink:0;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;padding-top:4px;display:grid}.bz-left{flex-direction:column;gap:6px;min-width:0;display:flex}.bz-right{align-items:flex-end;display:flex}.mobile-actions{gap:8px;display:flex}.mobile-actions .btn{flex:1;padding:10px 14px}.hud-menu-pill{background:var(--panel);border:1px solid var(--line);color:var(--ai);cursor:pointer;border-radius:999px;padding:4px 12px;font-family:IBM Plex Mono,monospace;font-size:10px}.feed{display:none}.target-banner{border:1px solid var(--legendary);color:var(--legendary);background:#2a1708;border-radius:6px;justify-content:center;align-items:center;gap:8px;margin-bottom:4px;padding:6px;font-family:IBM Plex Mono,monospace;font-size:11px;display:flex}@media (width>=960px){.game-screen.desktop{grid-template-rows:auto minmax(0,1fr) auto;padding:10px;display:grid}.game-screen.desktop .game-main{grid-template-columns:280px minmax(0,1fr) 320px;gap:12px;min-height:0;display:grid}.col-left{flex-direction:column;min-height:0;display:flex;overflow-y:auto}.col-left .party-bar{flex-direction:column;margin-top:0}.stat-mini{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:2px;margin-top:8px;padding:8px;display:flex}.stat-mini-row{justify-content:space-between;font-family:IBM Plex Mono,monospace;font-size:12px;display:flex}.stat-mini-row span{color:var(--dim)}.stat-mini-row b{color:var(--ai)}.col-right{flex-direction:column;gap:10px;min-height:0;display:flex}.minimap-lg{flex-shrink:0;width:280px}.feed{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;flex:1;min-height:0;display:flex}.feed-title{color:var(--ai);letter-spacing:.3em;border-bottom:1px solid var(--line);padding:8px;font-family:IBM Plex Mono,monospace;font-size:10px}.feed-lines{flex:1;padding:8px;overflow-y:auto}.kb-hint{text-align:center;color:var(--dim);padding-top:6px;font-family:IBM Plex Mono,monospace;font-size:11px;display:block}}.game-screen.shake{animation:.15s shake}.game-screen.lowhp:before{content:"";pointer-events:none;z-index:15;animation:1.2s infinite pulse;position:fixed;inset:0;box-shadow:inset 0 0 120px #ff282873}.game-screen.flash-level:after{content:"";pointer-events:none;z-index:15;background:#9ef1ff26;animation:.4s forwards flashFade;position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:30;mix-blend-mode:overlay;background:repeating-linear-gradient(0deg,#ffffff05 0 1px,#0000 1px 3px);position:fixed;inset:0}.toast-stack{z-index:40;flex-direction:column;gap:6px;width:min(480px,92vw);display:flex;position:fixed;top:8px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--gold);color:var(--gold);background:#1a1405;border-radius:8px;padding:8px 12px;font-family:IBM Plex Mono,monospace;font-size:12px;animation:.25s ease-out toastIn;box-shadow:0 0 18px #f5c54240}.toast-levelup{border-color:var(--ai);color:var(--ai);background:#051a1a}.toast-warn{border-color:var(--warn);color:var(--warn);background:#1a0505}.hud-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.hud-floor-name{color:var(--accent,var(--ai));font-family:Bebas Neue;font-size:20px}.hud-floor-sub{color:var(--dim);font-size:10px}.hud-countdown{color:var(--xp);font-family:IBM Plex Mono,monospace;font-size:16px}.hud-countdown.low{color:var(--warn);animation:1s infinite pulse}.hud-bell{cursor:pointer;background:0 0;border:none;font-size:18px;position:relative}.hud-badge{background:var(--warn);color:#fff;border-radius:50%;min-width:14px;height:14px;font-size:9px;line-height:14px;position:absolute;top:-4px;right:-6px}.hud-ticker{color:var(--warn);text-align:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:2px 0;font-family:IBM Plex Mono,monospace;font-size:10px}.party-bar{flex-shrink:0;grid-template-columns:1fr 1fr;gap:6px;margin:4px 0;display:grid}.party-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex:1;padding:6px}.party-card.donut{border-color:var(--donut)}.party-name{font-family:IBM Plex Mono,monospace;font-size:11px}.party-lvl{color:var(--xp)}.bar{background:#1a1f2e;border-radius:3px;height:6px;margin-top:3px;overflow:hidden}.bar-fill{height:100%;transition:width .2s}.bar.hp .bar-fill{background:var(--hp)}.bar.mana .bar-fill{background:var(--mana)}.bar.xp .bar-fill{background:var(--xp)}.hotlist{justify-content:center;gap:4px;margin-top:6px;display:flex}.hotlist-slot{background:var(--panel);border:1px solid var(--line);width:34px;height:44px;color:var(--dim);cursor:pointer;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;font-size:10px;display:flex}.hotlist-slot.bound{border-color:var(--ai)}.hotlist-icon{font-size:14px}.hotlist-key{color:var(--xp);font-size:8px}.hotlist-label{font-size:7px}.hud-actions{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:8px;display:flex}.dpad{opacity:.9;grid-template-rows:repeat(3,48px);grid-template-columns:repeat(3,48px);gap:2px;display:grid}.dpad-btn{background:var(--panel2);border:1px solid var(--line);color:var(--ai);border-radius:8px;font-size:16px}.dpad-btn.up{grid-area:1/2}.dpad-btn.left{grid-area:2/1}.dpad-btn.mid{grid-area:2/2}.dpad-btn.right{grid-area:2/3}.dpad-btn.down{grid-area:3/2}.talk{flex-direction:column;gap:8px;min-height:220px;display:flex}.talk-speakers{gap:6px;display:flex}.talk-log{border:1px solid var(--line);background:#07090f;border-radius:8px;flex-direction:column;flex:1;gap:6px;min-height:140px;max-height:40dvh;padding:8px;display:flex;overflow-y:auto}.talk-msg{font-size:12px;line-height:1.35}.talk-msg .talk-who{color:var(--dim);letter-spacing:.15em;font-family:IBM Plex Mono,monospace;font-size:9px;display:block}.talk-msg.player{text-align:right;color:var(--ai)}.talk-msg.npc{color:var(--text)}.talk-msg.typing{color:var(--dim);font-style:italic;animation:1s infinite pulse}.talk-empty{text-align:center;padding:12px;font-size:12px}.talk-input{gap:6px;display:flex}.talk-field{background:var(--panel);border:1px solid var(--line);min-height:44px;color:var(--text);border-radius:8px;flex:1;padding:8px 10px;font-size:14px}.saferoom-tabs{align-items:center;gap:6px;display:flex}.eulogy{color:var(--ai)}.eulogy-shimmer{color:var(--dim);font-style:italic;animation:1.1s infinite pulse}.map-wrap{justify-content:center;align-items:flex-start;gap:8px;margin-top:6px;display:flex}.map{border:1px solid var(--line);touch-action:none;-webkit-user-select:none;user-select:none;background:#000;border-radius:8px;gap:1px;padding:4px;display:grid}.cell{width:var(--cell);height:var(--cell);cursor:pointer;background:#05060a;border-radius:2px;justify-content:center;align-items:center;font-family:IBM Plex Mono,monospace;font-size:15px;display:flex}@media (width<=380px){:root{--cell:32px}}@media (width>=381px){:root{--cell:30px}}.tile-wall{background:var(--tile-wall,#1b2030);box-shadow:inset 1px 1px #ffffff0d,inset -2px -2px 4px #0009}.tile-floor,.tile-corridor{background:var(--tile-floor,#0c0f16);background-image:linear-gradient(135deg,#ffffff05,#00000014)}.tile-lichen{background:var(--tile-lichen,#0c1a10);color:#4a7a55}.tile-door,.tile-bossDoor{color:#a08444;background:#262012}.tile-safeRoomDoor{background:#0f2a18}.tile-bathroomDoor{background:#241a2a}.tile-stairsDown{color:var(--ai);text-shadow:0 0 8px var(--ai);background:#072a33}.tile-water{color:var(--mana);background:#07202e}.tile-chest{color:var(--gold);background:#1f1607}.tile-torch{box-shadow:0 0 14px 2px color-mix(in srgb, var(--tile-torch,#ff9d4a) 55%, transparent);z-index:1;background:#221708}.cell.unseen{color:#0000;box-shadow:none;background:#000}.cell.dim{filter:brightness(.35)saturate(.4)}.cell.path{outline:1px dashed #9ef1ff80}.cell.in-range{cursor:crosshair;background-image:linear-gradient(#ff8c001a,#ff8c001a);outline:1px solid #ff8c00b3}.cell.out-range{opacity:.55}.cell.carl{color:var(--hp);text-shadow:0 0 6px var(--hp);font-weight:700}.cell.mob{color:#ff9b6a}.cell.mob.smoked{opacity:.5;filter:blur(.5px)}.cell.mob-boss{color:var(--warn);text-shadow:0 0 6px var(--warn);animation:1.4s infinite bossPulse}.mob-pip{background:#000;border-radius:2px;height:3px;position:absolute;bottom:1px;left:12%;right:12%;overflow:hidden}.mob-pip-fill{background:var(--hp);height:100%;display:block}.fx{pointer-events:none;z-index:3;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;animation:.65s ease-out forwards fxRise;position:absolute;top:-6px;left:50%;transform:translate(-50%)}.fx-dmg{color:#ffd166;text-shadow:0 0 4px #000}.fx-boom{color:#ff6a3a;text-shadow:0 0 6px #ff3b3b;font-size:13px}.fx-crit{color:var(--warn);font-size:14px}.fx-heal{color:var(--hp)}.trap-hint{color:var(--warn);font-size:8px;position:absolute}.cell{position:relative}.minimap{border:1px solid var(--line);background:#000;border-radius:6px;overflow:hidden}.minimap.upgraded{border-color:var(--xp)}.minimap-grid{display:grid;position:relative}.minimap-dot{background:var(--hp);border-radius:50%;position:absolute}.minimap-dot.donut{background:var(--donut)}.notif-overlay,.sheet-overlay,.saferoom-overlay{z-index:20;background:#0009;justify-content:flex-end;display:flex;position:fixed;inset:0}.notif-panel{background:var(--panel);border-left:1px solid var(--ai);flex-direction:column;width:min(360px,90vw);height:100%;animation:.15s ease-out slideIn;display:flex}.notif-header{border-bottom:1px solid var(--line);color:var(--ai);justify-content:space-between;align-items:center;padding:10px;font-family:IBM Plex Mono,monospace;display:flex}.notif-list{flex:1;padding:10px;overflow-y:auto}.notif-empty{color:var(--dim)}.notif-line{border-bottom:1px solid #151a26;padding:4px 0;font-size:12px}.notif-turn{color:var(--dim);font-size:10px}.notif-line.ai{color:var(--ai)}.notif-line.ach{color:var(--xp)}.notif-line.warn{color:var(--warn)}.notif-line.donut{color:var(--donut)}.notif-line.sys{color:var(--text)}.sheet-overlay{justify-content:center;align-items:flex-end}.sheet{background:var(--panel);border:1px solid var(--line);border-radius:14px 14px 0 0;flex-direction:column;width:min(560px,100vw);max-height:82vh;animation:.15s ease-out slideUp;display:flex}.sheet-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px;display:flex}.sheet-tabs{flex-wrap:wrap;gap:4px;display:flex}.tab{border:1px solid var(--line);color:var(--dim);cursor:pointer;background:0 0;border-radius:4px;padding:4px 8px;font-family:IBM Plex Mono,monospace;font-size:10px}.tab.on{color:var(--ai);border-color:var(--ai)}.sheet-body{padding:10px;overflow-y:auto}.inv-tabs{gap:6px;margin-bottom:8px;display:flex}.inv-list{flex-direction:column;gap:4px;display:flex}.inv-gold{color:var(--gold);font-family:IBM Plex Mono,monospace}.inv-row{background:var(--panel2);border-radius:4px;justify-content:space-between;gap:8px;padding:4px;font-size:12px;display:flex}.inv-name{font-family:IBM Plex Mono,monospace}.inv-desc{color:var(--dim);text-align:right;flex:1;font-size:10px}.equip-box{flex-direction:column;gap:3px;margin-top:10px;display:flex}.equip-row{color:var(--dim);font-size:11px}.box-row{background:var(--panel2);border-radius:4px;padding:6px;font-family:IBM Plex Mono,monospace;font-size:11px}.tier-bronze .box-tier,.box-open.tier-bronze .box-open-head{color:var(--bronze)}.tier-silver .box-tier,.box-open.tier-silver .box-open-head{color:var(--silver)}.tier-gold .box-tier,.box-open.tier-gold .box-open-head{color:var(--gold)}.tier-platinum .box-tier,.box-open.tier-platinum .box-open-head{color:var(--platinum)}.tier-legendary .box-tier,.box-open.tier-legendary .box-open-head{color:var(--legendary)}.tier-celestial .box-tier,.box-open.tier-celestial .box-open-head{color:var(--celestial)}.ach-mini{margin-top:8px}.stat-block{margin-bottom:12px}.stat-name{color:var(--ai);margin-bottom:4px;font-family:IBM Plex Mono,monospace;font-size:11px}.stat-row{align-items:center;gap:10px;padding:2px 0;display:flex}.stat-label{width:36px;color:var(--dim);font-size:12px}.stat-val{width:24px;font-family:IBM Plex Mono,monospace}.xp-line{color:var(--xp);font-size:11px}.ach-list{flex-direction:column;gap:4px;display:flex}.ach-row{background:var(--panel2);border-radius:4px;flex-direction:column;padding:5px;display:flex}.ach-row .ach-name{color:var(--dim);font-family:IBM Plex Mono,monospace;font-size:11px}.ach-row.got .ach-name{color:var(--xp)}.ach-desc{color:var(--dim);font-size:10px}.quest-row{background:var(--panel2);border-radius:6px;margin-bottom:6px;padding:6px}.quest-row.done{opacity:.6}.quest-name{color:var(--ai);font-size:12px}.quest-desc{color:var(--dim);font-size:11px}.quest-prog{color:var(--xp);font-family:IBM Plex Mono,monospace;font-size:10px}.set-row{align-items:center;gap:8px;padding:8px 0;display:flex}.rules p{font-size:12px;line-height:1.5}.saferoom-overlay{justify-content:center;align-items:center}.saferoom{background:var(--panel);border:1px solid var(--hp);border-radius:12px;width:min(520px,96vw);max-height:92vh;padding:12px;overflow-y:auto}.saferoom-head{justify-content:space-between;align-items:center;display:flex}.saferoom-title{color:var(--hp);font-family:Bebas Neue;font-size:20px}.saferoom-tvs{gap:6px;margin:10px 0;display:flex}.tv{border:1px solid var(--line);text-align:center;background:#020608;border-radius:6px;flex:1;padding:8px}.tv-label{color:var(--dim);letter-spacing:.2em;font-size:8px}.tv-num{color:var(--ai);font-family:IBM Plex Mono,monospace;font-size:18px}.bopca{background:var(--panel2);border-radius:8px;align-items:center;gap:10px;padding:8px;display:flex}.bopca-face{font-size:32px}.bopca-line{color:var(--text);font-size:12px;font-style:italic}.saferoom-actions{gap:8px;margin:10px 0;display:flex}.box-opening{flex-direction:column;gap:6px;margin:8px 0;display:flex}.box-open{border:1px solid var(--line);background:#05060a;border-radius:8px;padding:8px;animation:.4s ease-out puff}.box-open-head{margin-bottom:4px;font-family:IBM Plex Mono,monospace;font-size:12px}.box-item{color:var(--text);padding-left:8px;font-size:12px}.shop{margin-top:10px}.shop-row{align-items:center;gap:8px;padding:4px 0;font-size:12px;display:flex}.shop-desc{color:var(--dim);flex:1;font-size:10px}.saferoom-tip{color:var(--dim);margin-top:10px;font-size:10px;font-style:italic}.transition-screen{gap:10px}.trans-ann{color:var(--ai);max-width:440px;font-style:italic}.trans-name{color:var(--warn);margin:0;font-size:40px}.trans-sub{color:var(--dim)}.pick-block{flex-direction:column;gap:14px;width:min(560px,94vw);display:flex}.pick-title{color:var(--xp);letter-spacing:.2em;margin-bottom:6px;font-family:IBM Plex Mono,monospace;font-size:12px}.pick-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.pick-card{background:var(--panel);border:1px solid var(--line);text-align:left;color:var(--text);cursor:pointer;border-radius:8px;padding:10px}.pick-card:hover{border-color:var(--ai)}.pick-card:disabled{opacity:.5}.pick-card.picked{border-color:var(--hp)}.pick-card.wide{width:100%}.pick-name{color:var(--ai);font-family:Bebas Neue;font-size:16px}.pick-desc{color:var(--dim);font-size:11px}.pick-locked{color:var(--warn);margin-top:4px;font-size:10px}.death-h1{color:var(--warn);margin:0;font-size:52px}.death-reason{color:var(--text)}.death-line{color:var(--ai);max-width:420px;font-style:italic}.death-stats{color:var(--dim);font-family:IBM Plex Mono,monospace;font-size:12px}.ending-glyph{font-size:60px}.ending-sub{color:var(--donut)}.set-sub{color:var(--dim);margin-left:22px;font-size:10px}@keyframes slideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes puff{0%{opacity:0;filter:blur(4px);transform:scale(.6)}60%{opacity:1;filter:blur();transform:scale(1.08)}to{transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shake{0%{transform:translate(0)}25%{transform:translate(2px,-1px)}50%{transform:translate(-2px,1px)}75%{transform:translate(1px,1px)}to{transform:translate(0)}}@keyframes fxRise{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-22px)}}@keyframes bossPulse{0%,to{box-shadow:0 0 #ff3b3b99}50%{box-shadow:0 0 0 4px #ff3b3b00}}@keyframes toastIn{0%{opacity:0;transform:translateY(-18px)}to{opacity:1;transform:translateY(0)}}@keyframes flashFade{0%{opacity:1}to{opacity:0}}@keyframes descendScroll{0%{transform:translateY(-50%)}to{transform:translateY(0)}}.descend-bg{pointer-events:none;opacity:.55;justify-content:space-around;gap:24px;display:flex;position:absolute;inset:-50% 0 0;overflow:hidden}.descend-col{writing-mode:vertical-lr;color:#9ef1ff1a;white-space:nowrap;letter-spacing:10px;font-family:IBM Plex Mono,monospace;font-size:18px;animation:40s linear infinite descendScroll}.descend-col:nth-child(2n){color:#ff7ad914;animation-duration:65s}.descend-col:nth-child(3n){color:#f5c54212;animation-duration:52s}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
