:root {
  --bg:#0d0c0b;
  --panel:#171410;
  --line:#453829;
  --text:#efe4c8;
  --muted:#bea986;
  --gold:#d8b96e;
  --red:#b95858;
  --blue:#7294c8;
  --green:#8bbf77;
}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(circle at top,#1a1713 0%,var(--bg) 60%);color:var(--text);font-family:Georgia,serif}
.shell{max-width:1040px;margin:0 auto;padding:28px 18px 42px}
.hidden{display:none !important}
.splash-screen{min-height:70vh;display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.splash-card{width:min(720px,100%);text-align:center;background:linear-gradient(180deg,#181410,#100d0b);border:1px solid var(--line);border-radius:18px;padding:32px 26px;box-shadow:0 16px 40px rgba(0,0,0,.32)}
.splash-art{width:180px;height:180px;image-rendering:pixelated;border:1px solid #5c4d38;border-radius:10px;background:#1a1614;padding:8px;margin:0 auto 18px;display:block}
.class-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}.class-card{background:#171410;border:1px solid var(--line);border-radius:14px;padding:16px;text-align:left}.class-card h3{margin:0 0 8px}.class-card .sprite-img{width:96px;height:96px;display:block;margin:0 auto 12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 10px 28px rgba(0,0,0,.24)}
.eyebrow{color:var(--gold);letter-spacing:.18em;font-size:.8rem;margin:0 0 8px}.sub,#status,.muted{color:var(--muted)}
.topbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
label{display:grid;gap:6px;color:var(--muted)}
input,button{border-radius:10px;border:1px solid var(--line);padding:10px 12px}
input{background:#111;color:var(--text)}button{background:#27221d;color:var(--text);cursor:pointer}button:hover{border-color:var(--gold)}button.primary{background:linear-gradient(180deg,#6b3532,#47211f)}
.actions{display:flex;gap:10px;flex-wrap:wrap}.log{padding-left:20px}.log li{margin-bottom:8px}
.stat{display:grid;grid-template-columns:120px 1fr;gap:6px;margin-bottom:6px}.small{font-size:.9rem}.center{text-align:center}
.encounter{display:grid;grid-template-columns:1fr 120px 1fr;gap:16px;align-items:center;border-radius:12px;padding:16px;background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.encounter.field{background-image:radial-gradient(circle at top,rgba(120,96,62,.18),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.encounter.ruins{background-image:radial-gradient(circle at top,rgba(130,112,88,.18),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.encounter.merchant{background-image:radial-gradient(circle at top,rgba(111,91,54,.18),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.encounter.grace{background-image:radial-gradient(circle at top,rgba(216,185,110,.20),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.encounter.catacomb{background-image:radial-gradient(circle at top,rgba(90,90,90,.18),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.encounter.boss{background-image:radial-gradient(circle at top,rgba(155,78,78,.22),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.16))}
.actor{text-align:center}.actor-name{font-weight:700;margin-top:8px}.actor.boss .actor-name{color:#ffb5b5}.encounter-middle{text-align:center}.floor{color:var(--gold);margin-bottom:8px}.versus{font-size:1.5rem}.room-kind{text-transform:capitalize;color:var(--muted)}
.sprite-img{width:132px;height:132px;image-rendering:pixelated;border:1px solid #5c4d38;border-radius:8px;background:#1a1614;padding:6px;box-shadow:inset 0 0 24px rgba(0,0,0,.28),0 8px 18px rgba(0,0,0,.22)}
.hero-sprite-wrap{position:relative;width:132px;height:132px;margin:0 auto}.hero-sprite-wrap .sprite-img{width:132px;height:132px}
.weapon-overlay{position:absolute;right:-8px;bottom:8px;background:#1a1614;border:1px solid #5c4d38;border-radius:8px;padding:4px;box-shadow:0 6px 14px rgba(0,0,0,.22)}
.weapon-overlay .item-icon{width:34px;height:34px}
.hero-sprite-wrap.weapon-staff .weapon-overlay{right:-10px;bottom:2px}
.hero-sprite-wrap.weapon-katana .weapon-overlay{right:-4px;bottom:0}
.hero-sprite-wrap.weapon-greatsword .weapon-overlay{right:-10px;bottom:6px}
.hero-sprite-wrap.weapon-spear .weapon-overlay{right:-12px;bottom:10px}
.bar{width:100%;height:10px;background:#2b2622;border:1px solid #433a32;border-radius:999px;overflow:hidden;margin:8px 0}.fill{display:block;height:100%}.hp{background:linear-gradient(90deg,var(--red),#de7c7c)}.mana{background:linear-gradient(90deg,var(--blue),#9dbdff)}.enemyhp{background:linear-gradient(90deg,#985454,#efacac)}
.entry-list{display:grid;gap:10px}.entry{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#14110f}.entry.equipped{border-color:var(--gold)}
.entry-main{display:flex;gap:10px;align-items:flex-start}.item-icon{width:28px;height:28px;image-rendering:pixelated;flex:0 0 28px}.item-icon.placeholder{display:inline-block;background:#2a241f;border:1px solid #4b4036;border-radius:6px}
.chip{display:inline-block;padding:6px 9px;border-radius:999px;background:#211c18;border:1px solid #4c4032;margin:2px 4px 2px 0}.rune{color:var(--gold)}.win{color:var(--green)}.loss{color:#e29d9d}
.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.72);z-index:1000}.overlay.hidden{display:none}
.overlay-card{width:min(420px,calc(100vw - 32px));padding:28px;border-radius:16px;border:1px solid #6f3030;background:linear-gradient(180deg,#261316,#140d10);box-shadow:0 20px 50px rgba(0,0,0,.45);text-align:center}
.timer-bar{width:100%;height:10px;margin-top:16px;background:#2d2227;border-radius:999px;overflow:hidden;border:1px solid #5a3a3f}.timer-bar span{display:block;width:100%;height:100%;background:linear-gradient(90deg,#d36f6f,#d8b96e)}
.large{min-width:160px;font-size:1.1rem;padding:14px 20px}
@media (max-width:760px){.grid{grid-template-columns:1fr}.encounter{grid-template-columns:1fr}.encounter-middle{order:-1}}
