@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Unbounded:wght@600;800&display=swap');

:root{--bg:#080b0a;--panel:#0d1210;--line:#26322c;--text:#d9dfd8;--muted:#78847d;--green:#a8d46f;--lime:#d3ff8b;--red:#d96658;--gold:#d9b463;--blue:#72a7b5;--purple:#ad86c8}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:'IBM Plex Mono',monospace;overflow:hidden}body{padding:14px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:20;background:repeating-linear-gradient(0deg,transparent 0,transparent 3px,rgba(0,0,0,.13) 4px);mix-blend-mode:multiply}.game-shell{height:calc(100vh - 28px);max-width:1600px;margin:auto;border:1px solid var(--line);background:#090d0b;display:flex;flex-direction:column;box-shadow:0 0 80px #000 inset}.topbar{height:52px;display:flex;align-items:center;border-bottom:1px solid var(--line);padding:0 18px;flex:0 0 auto}.brand{font-family:Unbounded,sans-serif;font-size:14px;letter-spacing:1px}.brand>span{color:var(--lime);font-size:20px}.brand small{font:500 10px 'IBM Plex Mono';color:var(--muted);margin-left:8px}.room-indicator{margin-left:auto;font-size:10px;letter-spacing:2px;color:var(--muted)}.room-indicator strong{color:var(--text);font-size:16px}.room-indicator i{display:inline-block;width:34px;border-top:1px solid var(--line);vertical-align:middle;margin:0 8px}.room-indicator span{color:var(--green)}button{font:inherit}.icon-button,.tiny-button{color:var(--muted);border:1px solid var(--line);background:transparent;cursor:pointer}.icon-button{width:27px;height:27px;margin-left:18px}.layout{display:grid;grid-template-columns:minmax(480px,1fr) 345px;min-height:0;flex:1}.viewport-wrap{position:relative;overflow:hidden;border-right:1px solid var(--line);background:radial-gradient(circle,#111a15,#070a08 68%)}canvas{display:block;width:100%;height:100%;image-rendering:pixelated}.sidebar{overflow-y:auto;background:rgba(12,17,14,.96);scrollbar-color:var(--line) transparent}.sidebar section{padding:17px 19px;border-bottom:1px solid var(--line)}.eyebrow{color:var(--green);font-size:9px;letter-spacing:2px}.hero-title{display:flex;justify-content:space-between;align-items:center}.hero-title h2{font:600 17px Unbounded;margin:3px 0 13px}.hero-title>span{color:var(--muted);font-size:10px}.resource{margin:8px 0}.resource label{font-size:9px;color:var(--muted);display:flex;justify-content:space-between}.resource label b{color:var(--text);font-weight:500}.resource>div{height:5px;background:#202722;margin-top:5px}.resource i{height:100%;display:block;width:50%;background:var(--red);transition:.25s}.resource.xp i{background:var(--blue)}.gold-line{margin-top:15px}.gold-line .coin{color:var(--gold)}.gold-line strong{color:var(--gold);margin-left:6px}.gold-line small{font-size:9px;color:var(--muted)}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-head h3{font-size:10px;letter-spacing:2px;margin:0}.section-head>span{font-size:9px;color:var(--green)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:7px}.stat{display:grid;grid-template-columns:25px 1fr 24px;align-items:center;border:1px solid var(--line);padding:7px;gap:7px;cursor:pointer;transition:.15s}.stat:hover{border-color:var(--green);background:#151c17}.stat.locked{opacity:.55;cursor:not-allowed}.stat .glyph{font-size:16px;color:var(--stat-color)}.stat label{font-size:8px;color:var(--muted);display:block}.stat b{font-size:14px}.stat button{border:0;background:none;color:var(--green);font-size:18px;cursor:inherit}.microcopy{font-size:8px;line-height:1.5;color:#59645e;margin:10px 0 0}.equipped{border:1px solid var(--green);padding:10px;display:grid;grid-template-columns:35px 1fr auto;align-items:center;gap:8px;background:#101711}.weapon-glyph{font-size:24px;color:var(--weapon-color)}.weapon-info b{font-size:10px;display:block}.weapon-info small{font-size:8px;color:var(--muted)}.damage{font-size:10px;color:var(--red)}.inventory{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}.weapon{border:1px solid var(--line);background:#0a0e0c;color:var(--text);text-align:left;padding:7px;cursor:pointer;min-width:0}.weapon:hover{border-color:var(--muted)}.weapon:disabled{opacity:.38;cursor:not-allowed}.weapon b{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.weapon small{font-size:7px;color:var(--muted)}#combat-lock{color:var(--red)}.log-section{min-height:130px}.tiny-button{font-size:8px;padding:4px 7px}.log{font-size:8px;color:var(--muted);line-height:1.8;height:83px;overflow:hidden}.log p{margin:0;border-left:1px solid var(--line);padding-left:7px}.log .good{color:var(--green)}.log .bad{color:var(--red)}footer{height:34px;flex:0 0 auto;border-top:1px solid var(--line);display:flex;align-items:center;gap:22px;padding:0 16px;font-size:8px;color:var(--muted)}footer kbd{color:var(--text);border:1px solid var(--line);padding:2px 4px}footer em{margin-left:auto;color:#39433e;letter-spacing:2px}.overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;text-align:center;background:rgba(5,8,6,.88);backdrop-filter:blur(2px);z-index:5}.overlay.visible{display:flex}.overlay .sigil{font:800 80px Unbounded;color:var(--green);text-shadow:0 0 30px rgba(168,212,111,.25)}.overlay h1{font:800 clamp(30px,5vw,64px) Unbounded;line-height:.95;margin:10px 0 20px;letter-spacing:-3px}.overlay p{font-size:11px;color:var(--muted);line-height:1.8}.primary{background:var(--green);border:0;color:#0a0e0b;padding:12px 22px;font-weight:700;margin:20px;cursor:pointer}.primary:hover{background:var(--lime)}.hint{font-size:8px;color:#55615a}.modal .dialog{max-width:520px;border:1px solid var(--line);padding:30px;background:#0c110e}.modal h2{font:600 24px Unbounded;margin:5px}.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0}.shop-item{border:1px solid var(--line);padding:12px 8px;background:#0a0e0c;color:var(--text);cursor:pointer}.shop-item:hover{border-color:var(--gold)}.shop-item:disabled{opacity:.4}.shop-item .weapon-glyph{display:block;font-size:30px}.shop-item b{display:block;font-size:9px;margin:8px 0}.shop-item small{font-size:8px;color:var(--gold)}.float-layer{position:absolute;inset:0;pointer-events:none}.float{position:absolute;font-weight:700;font-size:13px;animation:floatUp .8s ease-out forwards;text-shadow:0 2px #000}@keyframes floatUp{to{transform:translateY(-30px);opacity:0}}@media(max-width:900px){body{padding:0}.game-shell{height:100vh}.layout{grid-template-columns:1fr 290px}.sidebar section{padding:12px}.brand small,footer em{display:none}}@media(max-width:680px){html,body{overflow:auto}.game-shell{height:auto;min-height:100vh}.layout{display:flex;flex-direction:column}.viewport-wrap{height:58vh;border-right:0;border-bottom:1px solid var(--line)}.sidebar{overflow:visible}.topbar{padding:0 8px}.room-indicator{display:none}footer{display:none}.overlay h1{font-size:36px}}
/* La carte conserve le noir profond des roguelikes ASCII classiques. */
.viewport-wrap{background:#050706}
.hero-name{display:block;width:220px;margin:3px 0 13px;padding:0;border:0;border-bottom:1px solid transparent;outline:0;background:transparent;color:var(--text);font:600 17px Unbounded;text-transform:uppercase;transition:.15s}
.hero-name:hover{border-bottom-color:var(--line)}.hero-name:focus{border-bottom-color:var(--green);color:var(--lime)}
.name-prompt{margin-top:14px;color:var(--green);font-size:8px;letter-spacing:2px}.start-name{width:260px;margin:7px 0 0;padding:8px;text-align:center;border:1px solid var(--line);background:#080c09}.start-name:hover,.start-name:focus{border-color:var(--green)}
.language-picker{display:flex;margin-top:7px}.language-picker button{width:130px;padding:7px;border:1px solid var(--line);background:#080c09;color:var(--muted);cursor:pointer;font-size:9px}.language-picker button+button{border-left:0}.language-picker button.active{border-color:var(--green);background:#172016;color:var(--lime)}

/* Theme system: Studio is the default, Classic preserves the original palette. */
:root{--shell:#030914;--surface:#07111e;--glow:rgba(83,217,242,.14);--canvas-bg:#02060d;--canvas-wall:#49677c;--canvas-floor:#173044;--bg:#020711;--panel:#050d18;--line:#183047;--text:#dfedf5;--muted:#70879a;--green:#53d9f2;--lime:#65e6ff;--red:#ff6577;--gold:#f1c75b;--blue:#5ad9ff;--purple:#b995ff}
:root[data-theme="flash"]{--shell:#0d021e;--surface:#1b0934;--glow:rgba(223,69,255,.23);--canvas-bg:#090013;--canvas-wall:#7d3ca0;--canvas-floor:#3d1856;--bg:#090018;--panel:#130627;--line:#53306f;--text:#fff4ff;--muted:#b18bc2;--green:#00f0ff;--lime:#f7ff00;--red:#ff376f;--gold:#ffcb2f;--blue:#00d9ff;--purple:#df45ff}
:root[data-theme="classic"]{--shell:#090d0b;--surface:#101711;--glow:rgba(168,212,111,.12);--canvas-bg:#050706;--canvas-wall:#666d68;--canvas-floor:#373c39;--bg:#080b0a;--panel:#0d1210;--line:#26322c;--text:#d9dfd8;--muted:#78847d;--green:#a8d46f;--lime:#d3ff8b;--red:#d96658;--gold:#d9b463;--blue:#72a7b5;--purple:#ad86c8}
.game-shell{background:var(--shell);box-shadow:0 0 80px #000 inset,0 0 35px var(--glow)}.topbar{position:relative;z-index:30}.viewport-wrap{background:radial-gradient(circle,var(--surface),var(--canvas-bg) 68%)}.sidebar{background:color-mix(in srgb,var(--panel) 96%,transparent)}
.equipped,.guide-grid section{background:var(--surface)}.weapon,.shop-item,.start-name,.language-picker button{background:var(--shell)}.modal .dialog{background:var(--panel)}
.icon-button:hover,.icon-button:focus-visible{color:var(--lime);border-color:var(--green);outline:0;box-shadow:0 0 14px var(--glow)}
.theme-control{position:relative;margin-left:18px}.theme-control .icon-button{margin-left:0}.theme-control+.scores-button{margin-left:6px}.theme-button svg{width:15px;height:15px;fill:currentColor;vertical-align:middle}.theme-button[aria-expanded="true"]{color:var(--lime);border-color:var(--green);background:var(--surface)}
.theme-menu{position:absolute;right:0;top:36px;width:238px;padding:8px;border:1px solid var(--line);background:var(--panel);box-shadow:0 18px 45px #000,0 0 25px var(--glow)}.theme-menu[hidden]{display:none}.theme-menu-title{display:block;padding:7px 8px 10px;color:var(--muted);font-size:8px;letter-spacing:2px;border-bottom:1px solid var(--line)}
.theme-menu button{display:grid;grid-template-columns:30px 1fr auto;align-items:center;width:100%;padding:10px 8px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);text-align:left;cursor:pointer}.theme-menu button:last-child{border-bottom:0}.theme-menu button:hover,.theme-menu button:focus-visible{background:var(--surface);outline:0}.theme-menu button[aria-checked="true"]{color:var(--lime);background:var(--surface)}.theme-menu button[aria-checked="true"]:after{content:"";position:absolute;right:5px;width:2px;height:26px;background:var(--lime);box-shadow:0 0 8px var(--lime)}
.theme-menu button span b{display:block;font-size:9px;letter-spacing:1px}.theme-menu button span small{display:block;margin-top:3px;color:var(--muted);font-size:7px}.theme-menu button em{color:var(--muted);font-size:8px;font-style:normal}.theme-swatch{width:18px;height:18px;border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 0 0 4px #040914}.studio-swatch{background:#53d9f2}.flash-swatch{background:linear-gradient(135deg,#f7ff00 50%,#df45ff 50%)}.classic-swatch{background:#a8d46f}
@media(max-width:680px){.theme-control{margin-left:auto}.theme-menu{position:fixed;right:8px;top:47px}.topbar .scores-button{margin-left:6px}}
.touch-controls{position:absolute;left:16px;bottom:16px;z-index:4;display:none;align-items:flex-end;gap:10px;opacity:.9;transition:opacity .15s;user-select:none;-webkit-user-select:none}.touch-controls:hover,.touch-controls:focus-within{opacity:1}.touch-controls button{border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 88%,transparent);color:var(--text);cursor:pointer;touch-action:manipulation;box-shadow:0 5px 18px rgba(0,0,0,.35)}.touch-controls button:hover,.touch-controls button:focus-visible,.touch-controls button:active{border-color:var(--green);color:var(--lime);background:var(--surface);outline:0;box-shadow:0 0 14px var(--glow)}
.dpad{display:grid;grid-template-columns:repeat(3,38px);grid-template-rows:repeat(3,38px);gap:3px}.dpad button{font-size:17px;font-weight:700;touch-action:none}.dpad button.holding{border-color:var(--lime);color:var(--lime);background:var(--surface);box-shadow:0 0 18px var(--glow),inset 0 0 12px var(--glow);transform:scale(.96)}.dpad-up{grid-column:2;grid-row:1}.dpad-left{grid-column:1;grid-row:2}.dpad-wait{grid-column:2;grid-row:2}.dpad-right{grid-column:3;grid-row:2}.dpad-down{grid-column:2;grid-row:3}.touch-actions{display:flex;gap:5px}.touch-actions button{min-width:64px;height:38px;padding:4px 8px}.touch-actions b,.touch-actions small{display:block}.touch-actions b{font-size:8px}.touch-actions small{margin-top:3px;color:var(--muted);font-size:6px}
@media(pointer:coarse){.touch-controls{display:flex;left:10px;bottom:10px}.dpad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px)}.touch-actions{flex-direction:column}.touch-actions button{height:42px}}
.modal .shop-dialog{position:relative;width:min(900px,96%);max-width:900px;max-height:94%;padding:0;overflow:auto;text-align:left;border-color:var(--gold);background-image:radial-gradient(circle at 50% -20%,color-mix(in srgb,var(--gold) 10%,transparent),transparent 45%);box-shadow:0 24px 80px #000,0 0 35px color-mix(in srgb,var(--gold) 15%,transparent);animation:shopOpen .38s cubic-bezier(.2,.8,.2,1) both}
.shop-header{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:1fr auto 38px;align-items:center;gap:16px;min-height:64px;padding:10px 12px 10px 20px;overflow:hidden;border-bottom:1px solid var(--gold);background:var(--panel)}.shop-header:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 20%,color-mix(in srgb,var(--gold) 14%,transparent) 48%,transparent 72%);pointer-events:none;transform:translateX(-120%);animation:shopSweep 4.5s ease-in-out infinite}.shop-header>*{position:relative;z-index:1}.shop-header span small,.shop-header span b{display:block}.shop-header span small{margin-bottom:5px;color:var(--muted);font-size:7px;letter-spacing:2px}.shop-header span b{font:600 20px Unbounded;color:var(--text);text-shadow:0 0 18px var(--glow)}.shop-header>strong{color:var(--gold);font-size:11px;animation:goldPulse 2.4s ease-in-out infinite}.shop-header>strong i{font-style:normal}.shop-close{width:34px;height:34px;border:1px solid var(--red);background:transparent;color:var(--red);font-size:22px;cursor:pointer;transition:.16s}.shop-close:hover,.shop-close:focus-visible{background:var(--red);color:var(--shell);outline:0;box-shadow:0 0 18px color-mix(in srgb,var(--red) 55%,transparent);transform:rotate(90deg)}
.shop-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(250px,.65fr)}.shop-catalog{border-right:1px solid var(--line)}.shop-layout section,.shop-sell{padding:17px}.shop-layout section+section{border-top:1px solid var(--line)}.shop-layout h3{display:flex;justify-content:space-between;margin:0 0 10px;font-size:11px;letter-spacing:2px}.shop-layout h3 small{color:var(--muted);font-size:7px;font-weight:400}.shop-sell>p{margin:0 0 14px;color:var(--muted);font-size:8px;line-height:1.6}.shop-list{display:grid;gap:5px}
.shop-row{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:9px;width:100%;min-height:46px;padding:6px 9px;border:1px solid var(--line);background:var(--shell);color:var(--text);text-align:left;cursor:pointer;transition:border-color .16s,background .16s,box-shadow .16s,transform .16s;animation:shopRowIn .32s ease-out both}.shop-row:nth-child(2){animation-delay:.04s}.shop-row:nth-child(3){animation-delay:.08s}.shop-row:nth-child(4){animation-delay:.12s}.shop-row:hover,.shop-row:focus-visible{border-color:var(--item-color);background:var(--surface);outline:0;box-shadow:inset 3px 0 var(--item-color),0 0 16px color-mix(in srgb,var(--item-color) 12%,transparent);transform:translateX(3px)}.shop-row:active{transform:translateX(3px) scale(.985)}.shop-row:disabled{opacity:.38;cursor:not-allowed}.shop-row:disabled:hover{border-color:var(--line);box-shadow:none;transform:none}.shop-glyph{color:var(--item-color);font-size:22px;text-align:center;text-shadow:0 0 10px color-mix(in srgb,var(--item-color) 45%,transparent);transition:.18s}.shop-row:hover .shop-glyph,.shop-row:focus-visible .shop-glyph{transform:scale(1.18) rotate(-5deg);text-shadow:0 0 16px var(--item-color)}.shop-row span b,.shop-row span small{display:block}.shop-row span b{overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.shop-row span small{margin-top:4px;color:var(--muted);font-size:7px}.shop-row em{min-width:48px;padding:6px;color:var(--gold);border-left:1px solid var(--line);font-size:8px;font-style:normal;text-align:right}.sell-row em{color:var(--green)}.shop-empty{margin:0;padding:18px;border:1px dashed var(--line);color:var(--muted);font-size:8px;text-align:center}
.merchant-note{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:18px;padding:16px;border:1px solid var(--line);background:var(--shell)}.merchant-note>span{display:grid;width:45px;height:45px;place-items:center;border:1px solid var(--gold);color:var(--gold);font:600 22px Unbounded}.merchant-note p{margin:0;color:var(--muted);font-size:8px;line-height:1.6}.shop-footer{display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:7px 16px;border-top:1px solid var(--line);background:var(--surface)}.shop-footer>span{color:var(--muted);font-size:7px;letter-spacing:1px}.shop-footer .primary{margin:0;padding:10px 15px;font-size:9px}
.shop-toast{position:fixed;left:50%;top:13%;z-index:50;max-width:80%;padding:11px 18px;border:1px solid var(--gold);background:var(--panel);color:var(--gold);font-size:9px;font-weight:700;letter-spacing:1px;box-shadow:0 0 28px color-mix(in srgb,var(--gold) 28%,transparent);pointer-events:none;animation:shopToast 1.25s ease both}.shop-toast.sell{border-color:var(--green);color:var(--green);box-shadow:0 0 28px var(--glow)}
@keyframes shopOpen{from{opacity:0;transform:translateY(18px) scale(.97);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}@keyframes shopRowIn{from{opacity:0;transform:translateX(-9px)}to{opacity:1;transform:none}}@keyframes shopSweep{0%,58%{transform:translateX(-120%)}82%,100%{transform:translateX(120%)}}@keyframes goldPulse{50%{text-shadow:0 0 14px var(--gold)}}@keyframes shopToast{0%{opacity:0;transform:translate(-50%,-12px) scale(.92)}18%,72%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-8px) scale(.98)}}
@media(prefers-reduced-motion:reduce){.shop-dialog,.shop-row,.shop-header:after,.shop-header>strong,.shop-toast{animation:none!important}.shop-row,.shop-glyph,.shop-close{transition:none!important}}
.float-layer{z-index:3}.combat-effect{position:absolute;width:54px;height:54px;pointer-events:none;transform:translate(-50%,-50%);filter:drop-shadow(0 0 7px var(--fx-color))}.combat-effect span{position:absolute;inset:7px}.combat-effect i{position:absolute;left:25px;top:25px;width:3px;height:10px;background:var(--fx-color);transform:rotate(var(--ray)) translateY(-9px);transform-origin:50% 0;animation:combatRay .42s ease-out forwards}.combat-effect.slash span{border-top:5px solid var(--fx-color);border-radius:50%;transform:rotate(-35deg);animation:combatSlash .3s ease-out forwards}.combat-effect.slash i{animation-duration:.3s}.combat-effect.enemy-death span{border:3px solid var(--fx-color);border-radius:50%;animation:deathRing .5s ease-out forwards}.combat-effect.enemy-death i{height:15px;animation:deathRay .5s ease-out forwards}.combat-effect.player-hit span{inset:9px;background:linear-gradient(45deg,transparent 43%,var(--fx-color) 45% 55%,transparent 57%),linear-gradient(-45deg,transparent 43%,var(--fx-color) 45% 55%,transparent 57%);animation:hitCross .3s ease-out forwards}.viewport-wrap.combat-shake{animation:combatShake .22s steps(2)}.viewport-wrap.damage-flash:after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:radial-gradient(circle,transparent 35%,color-mix(in srgb,var(--red) 48%,transparent));animation:damageVignette .28s ease-out forwards}
@keyframes combatSlash{0%{opacity:0;transform:rotate(-35deg) scale(.35)}45%{opacity:1}100%{opacity:0;transform:rotate(-35deg) scale(1.45)}}@keyframes combatRay{to{opacity:0;transform:rotate(var(--ray)) translateY(-27px) scaleY(.35)}}@keyframes deathRing{0%{opacity:1;transform:scale(.2)}100%{opacity:0;transform:scale(1.7)}}@keyframes deathRay{to{opacity:0;transform:rotate(var(--ray)) translateY(-37px) scaleY(.3)}}@keyframes hitCross{0%{opacity:1;transform:scale(.45) rotate(0)}100%{opacity:0;transform:scale(1.35) rotate(18deg)}}@keyframes combatShake{0%,100%{transform:none}25%{transform:translate(-3px,2px)}50%{transform:translate(3px,-2px)}75%{transform:translate(-2px,-1px)}}@keyframes damageVignette{0%{opacity:0}25%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.combat-effect,.combat-effect span,.combat-effect i,.viewport-wrap.combat-shake,.viewport-wrap.damage-flash:after{animation:none!important}.combat-effect{display:none}}
.chest-reward.rare-reward{position:relative;overflow:hidden;border-width:2px;background:radial-gradient(circle at 50% 25%,color-mix(in srgb,var(--reward) 22%,transparent),var(--shell) 68%);box-shadow:0 0 24px color-mix(in srgb,var(--reward) 38%,transparent);animation:reward-in .45s both,rareAura 1.2s .45s ease-in-out infinite alternate}.chest-reward.rare-reward:after{content:"RARE";position:absolute;right:-25px;top:9px;width:82px;padding:3px 0;background:var(--reward);color:#16030a;font-size:6px;font-weight:700;letter-spacing:2px;text-align:center;transform:rotate(40deg)}.rare-reward>span{animation:rareHeart .8s ease-in-out infinite alternate}@keyframes rareAura{to{box-shadow:0 0 42px color-mix(in srgb,var(--reward) 62%,transparent),inset 0 0 20px color-mix(in srgb,var(--reward) 12%,transparent)}}@keyframes rareHeart{to{transform:scale(1.13);text-shadow:0 0 22px var(--reward)}}@media(prefers-reduced-motion:reduce){.chest-reward.rare-reward,.rare-reward>span{animation:none!important}}
@media(max-width:680px){.modal .shop-dialog{width:96%;max-height:96%}.shop-header{grid-template-columns:1fr auto 34px;padding-left:12px}.shop-header span b{font-size:14px}.shop-header span small{letter-spacing:1px}.shop-header>strong{font-size:9px}.shop-layout{display:block}.shop-catalog{border-right:0}.shop-sell{border-top:1px solid var(--line)}.shop-layout section,.shop-sell{padding:12px}.shop-row{min-height:50px}.merchant-note{display:none}.shop-footer{position:sticky;bottom:0;z-index:2}.shop-footer>span{display:none}}
.brand>span,.overlay .sigil{color:var(--lime);text-shadow:0 0 22px color-mix(in srgb,var(--lime) 38%,transparent)}.overlay .sigil{line-height:1;transform:skew(-5deg);transition:color .25s,text-shadow .25s}
.sidebar .side-shop-section{padding:10px 12px}.side-shop-button{display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:9px;width:100%;padding:9px;border:1px solid var(--gold);background:linear-gradient(100deg,color-mix(in srgb,var(--gold) 9%,var(--shell)),var(--shell));color:var(--text);text-align:left;cursor:pointer;transition:.16s}.side-shop-button:hover,.side-shop-button:focus-visible{outline:0;background:color-mix(in srgb,var(--gold) 13%,var(--surface));box-shadow:0 0 18px color-mix(in srgb,var(--gold) 18%,transparent);transform:translateX(2px)}.side-shop-button:disabled{border-color:var(--line);opacity:.42;cursor:not-allowed;filter:saturate(.35);transform:none;box-shadow:none}.side-shop-icon{display:grid;width:34px;height:34px;place-items:center;border:1px solid var(--gold);color:var(--gold);font:600 17px Unbounded}.side-shop-button span b,.side-shop-button span small{display:block}.side-shop-button span b{font-size:9px;letter-spacing:1px}.side-shop-button span small{margin-top:4px;color:var(--muted);font-size:6px}.side-shop-button em{color:var(--gold);font-size:7px;font-style:normal}
.game-tip{position:relative;display:grid;grid-template-columns:auto 1fr 14px;align-items:center;gap:8px;width:100%;margin-bottom:9px;padding:8px;border:1px solid var(--line);background:var(--shell);color:var(--text);text-align:left;cursor:pointer}.game-tip:hover,.game-tip:focus-visible{border-color:var(--green);outline:0;box-shadow:inset 2px 0 var(--green)}.game-tip span{color:var(--green);font-size:7px;letter-spacing:1px}.game-tip p{margin:0;font-size:7px!important;line-height:1.45!important}.game-tip em{color:var(--muted);font-size:12px;font-style:normal;transition:.2s}.game-tip:hover em{color:var(--lime);transform:rotate(180deg)}
.stat label em{color:var(--stat-color);font-size:6px;font-style:normal;white-space:nowrap}.stat:has(label em){border-color:color-mix(in srgb,var(--stat-color) 45%,var(--line))}
.tutorial-overlay{position:fixed;inset:0;z-index:100;pointer-events:none}.tutorial-shade{position:absolute;inset:0;background:rgba(0,4,10,.68);backdrop-filter:blur(1px)}.tutorial-focus{position:relative!important;z-index:102!important;box-shadow:0 0 0 2px var(--lime),0 0 34px color-mix(in srgb,var(--lime) 45%,transparent)!important}.tutorial-card{position:absolute;left:50%;bottom:max(28px,env(safe-area-inset-bottom));z-index:104;width:min(520px,calc(100% - 24px));padding:22px;border:1px solid var(--green);background:var(--panel);box-shadow:0 20px 70px #000,0 0 30px var(--glow);color:var(--text);pointer-events:auto;transform:translateX(-50%);animation:tutorialIn .3s ease-out}.tutorial-card .tutorial-skip{position:absolute;right:10px;top:10px;border:0;background:transparent;color:var(--muted);font-size:8px;cursor:pointer}.tutorial-card h2{margin:7px 0 10px;font:600 20px Unbounded}.tutorial-card>p{margin:0;color:var(--muted);font-size:10px;line-height:1.65}.tutorial-progress{display:flex;gap:5px;margin:16px 0}.tutorial-progress i{width:22px;height:2px;background:var(--line)}.tutorial-progress i.active{background:var(--lime);box-shadow:0 0 8px var(--lime)}.tutorial-actions{display:flex;align-items:center;justify-content:space-between}.tutorial-actions button{padding:8px 11px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:8px;cursor:pointer}.tutorial-actions button:disabled{opacity:.25}.tutorial-actions .primary{margin:0;border:0;background:var(--green);color:var(--shell)}@keyframes tutorialIn{from{opacity:0;transform:translate(-50%,15px) scale(.97)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@media(max-width:680px){.game-tip{min-height:48px;padding:9px}.game-tip p{font-size:8px!important}.tutorial-card{bottom:max(10px,env(safe-area-inset-bottom));padding:18px}.tutorial-card h2{padding-right:36px;font-size:17px}.tutorial-card>p{font-size:9px}.tutorial-progress{margin:13px 0}.tutorial-focus{scroll-margin:120px}}
@media(prefers-reduced-motion:reduce){.tutorial-card{animation:none}.game-tip em{transition:none}}
.tutorial-overlay{z-index:1000}.tutorial-shade{z-index:0}.tutorial-focus{z-index:auto!important}.tutorial-card{z-index:2}
#start-screen{overflow-y:auto;padding:18px}#start-screen .sigil{font-size:clamp(42px,7vh,80px)}#start-screen h1{font-size:clamp(28px,5vh,64px)}
/* Touch layouts: tablet portrait and mobile are intentionally separate. */
@media (max-width:1100px) and (pointer:coarse){
  html,body{overflow:auto;overscroll-behavior:none}body{padding:0}.game-shell{width:100%;height:auto;min-height:100svh;border-left:0;border-right:0}.topbar{height:50px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.layout{display:flex;flex-direction:column}.viewport-wrap{width:100%;height:66svh;min-height:500px;flex:none;border-right:0;border-bottom:1px solid var(--line)}
  .sidebar{display:grid;grid-template-columns:1fr 1fr;overflow:visible}.sidebar section{min-width:0;border-right:1px solid var(--line)}.sidebar .log-section{grid-column:1/-1}.sidebar .side-shop-section{display:flex;align-items:center}.side-shop-button{min-height:58px}.touch-controls{padding-bottom:env(safe-area-inset-bottom)}footer{display:none}
  .stat,.weapon,.side-shop-button,.tiny-button{min-height:44px}.inventory{gap:8px}.modal .dialog{max-height:94%;overflow:auto}.score-list{max-width:100%}
}
@media (max-width:680px){
  .game-shell{min-height:100svh}.topbar{position:sticky;top:0;z-index:40;height:48px;background:color-mix(in srgb,var(--shell) 96%,transparent);backdrop-filter:blur(8px)}.brand{font-size:11px}.brand>span{font-size:17px}.topbar .icon-button{width:32px;height:32px}.theme-control{margin-left:auto}.viewport-wrap{height:68svh;min-height:430px}.sidebar{display:block}.sidebar section{border-right:0}.sidebar section{padding:14px}.hero-title h2{font-size:16px}.stats{gap:8px}.stat{padding:9px}.equipped{min-height:54px}.inventory{grid-template-columns:1fr 1fr}.weapon{padding:10px}.log{height:110px}
  .touch-controls{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));justify-content:space-between;gap:6px}.dpad{grid-template-columns:repeat(3,48px);grid-template-rows:repeat(3,48px);gap:4px}.dpad button{font-size:20px}.touch-actions{gap:6px}.touch-actions button{min-width:72px;height:46px}.touch-actions b{font-size:9px}
  #start-screen{justify-content:flex-start;padding:22px 12px 16px}.overlay .sigil{margin-top:8px}.overlay h1{font-size:clamp(28px,10vw,42px);letter-spacing:-2px}.overlay p{font-size:9px}.start-name{width:min(260px,90%)}.primary{margin:14px;padding:12px 16px}.hint{font-size:7px}
  .modal{padding:6px}.modal .dialog{width:96%;max-width:96%;max-height:96%;padding:18px}.modal h2{font-size:20px}.chest-rewards{width:100%;gap:5px}.chest-reward{width:auto;min-width:0;flex:1;padding:12px 4px}.chest-reward span{font-size:23px}.chest-reward strong{font-size:7px}.chest-reward small{font-size:6px}.score-list{width:100%;min-width:0;overflow-x:auto}.score-row{grid-template-columns:22px minmax(90px,1fr) 55px 48px 58px;gap:4px;font-size:7px}.guide-dialog>h2{font-size:21px}.guide-grid section{padding:12px}.guide-grid p,.guide-grid li{font-size:10px}.symbol-list{grid-template-columns:1fr}
  .modal .shop-dialog{padding:0}.shop-header{grid-template-columns:minmax(0,1fr) auto 34px;gap:7px}.shop-header span small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shop-header>strong{white-space:nowrap}.shop-row{grid-template-columns:32px minmax(0,1fr) auto;padding:8px 7px}.shop-row em{min-width:44px}.shop-footer{padding-bottom:max(7px,env(safe-area-inset-bottom))}
}
@media (max-width:390px){.brand small{display:none}.topbar{padding-left:7px;padding-right:7px}.theme-control{margin-left:auto}.topbar .scores-button,.scores-button+.icon-button{margin-left:4px}.dpad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px)}.touch-actions button{min-width:64px}.sidebar section{padding:12px}.shop-header span b{font-size:12px}.shop-header>strong{font-size:8px}}
@media (max-height:600px) and (orientation:landscape) and (pointer:coarse){html,body{overflow:hidden}.game-shell{height:100svh;min-height:0}.topbar{height:44px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;min-height:0}.viewport-wrap{height:auto;min-height:0;border-right:1px solid var(--line);border-bottom:0}.sidebar{display:block;overflow-y:auto}.sidebar section{padding:10px}.touch-controls{left:7px;right:auto;bottom:7px}.dpad{grid-template-columns:repeat(3,40px);grid-template-rows:repeat(3,40px)}.touch-actions button{min-width:62px;height:38px}.modal .dialog{max-height:94%}}
.scores-button{margin-left:18px}.scores-button+.icon-button{margin-left:6px}
.score-list{margin:20px 0;text-align:left;min-width:420px}.score-row{display:grid;grid-template-columns:28px 1fr 70px 70px 70px;gap:8px;padding:9px 5px;border-bottom:1px solid var(--line);font-size:9px}.score-row.header{color:var(--muted);font-size:8px}.score-row strong{color:var(--lime)}.score-empty{color:var(--muted);padding:20px}
.chest-dialog{border-color:var(--gold)!important;box-shadow:0 0 50px rgba(217,180,99,.12)}.chest-rewards{display:flex;justify-content:center;gap:9px;margin:24px 0}.chest-reward{width:125px;padding:16px 8px;border:1px solid var(--reward);background:#0a0e0c;animation:reward-in .45s both}.chest-reward:nth-child(2){animation-delay:.12s}.chest-reward:nth-child(3){animation-delay:.24s}.chest-reward span{display:block;color:var(--reward);font-size:28px;text-shadow:0 0 12px var(--reward)}.chest-reward strong{display:block;margin:10px 0 5px;font-size:9px}.chest-reward small{color:var(--reward);font-size:8px}@keyframes reward-in{from{transform:translateY(12px) scale(.85);opacity:0}to{transform:none;opacity:1}}
.slot-dialog{box-shadow:0 0 70px rgba(217,180,99,.22)}.chest-reward.spinning{overflow:hidden;animation:slot-pulse .18s infinite alternate}.chest-reward.spinning .slot-symbol{filter:blur(.5px)}.slot-stop{animation:stop-blink .8s infinite}@keyframes slot-pulse{to{border-color:#fff;box-shadow:inset 0 0 18px rgba(217,180,99,.18)}}@keyframes stop-blink{50%{opacity:.55}}
.modal .guide-dialog{width:min(820px,94%);max-width:820px;max-height:92%;overflow-y:auto;text-align:left;padding:28px}.guide-dialog>h2{text-align:center;font-size:27px}.guide-lead{text-align:center!important;margin-bottom:20px;font-size:12px!important}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.guide-grid section{padding:16px;border:1px solid var(--line);background:#090d0b}.guide-grid h3{margin:0 0 12px;color:var(--green);font-size:12px;letter-spacing:2px}.guide-grid p,.guide-grid li{color:var(--muted);font-size:11px;line-height:1.65}.guide-grid ul{margin:0;padding-left:20px}.guide-wide{grid-column:1/-1}.guide-stat{display:grid;grid-template-columns:118px 1fr;gap:10px;margin:10px 0;font-size:11px}.guide-stat span{color:var(--muted);line-height:1.55}.guide-stat.force b{color:var(--red)}.guide-stat.agility b{color:var(--blue)}.guide-stat.magic b{color:var(--purple)}.guide-stat.intellect b{color:var(--gold)}.warning{color:var(--red)!important}.symbol-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:11px}.symbol-list b{display:inline-block;min-width:52px;font-size:15px}.player-symbol{color:var(--lime)}.enemy-symbol{color:#56b864}.potion-symbol{color:#ed3f65}.chest-symbol,.shop-symbol{color:var(--gold)}.exit-symbol{color:var(--green)}.guide-dialog>.primary{display:block;margin:22px auto 0}@media(max-width:680px){.guide-grid{grid-template-columns:1fr}.guide-wide{grid-column:auto}.guide-stat{grid-template-columns:105px 1fr}.modal .guide-dialog{padding:18px}}
