/* =====================================================================
   DEPTHFALL v0.3 UI - "Obsidian & Crimson"
   Clean modern dark UI: solid near-black panels, 1px graphite edges,
   6px radius, one crimson accent for primary actions, focus and danger.
   Font: Outfit (self-hosted in fonts/, SIL OFL), bold caps for titles.
   Layout rules for phone / tablet / desktop are unchanged from v0.2.x.
   ===================================================================== */
@font-face{font-family:'Outfit';src:url(fonts/Outfit-Regular.woff) format('woff');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Outfit';src:url(fonts/Outfit-Bold.woff) format('woff');font-weight:700;font-style:normal;font-display:swap}

:root{
  --bg:#060607;--panel:#0d0d0f;--panel2:#141417;--raised:#18181b;--edge:#27272c;--edge2:#3a3a41;
  --txt:#efefef;--mut:#8f8f97;--faint:#5c5c64;
  --acc:#e5484d;--acc2:#a8282d;--acc-glow:rgba(229,72,77,.35);
  --ink:var(--txt);--dim:var(--mut);--gold:#f0b35a;--gold2:#f3f3f3;
  --r:6px;
  --fd:'Outfit','Segoe UI',system-ui,sans-serif;--fb:var(--fd);
}
*{box-sizing:border-box}
html{color-scheme:dark}
html,body{margin:0;height:100%;background:var(--bg);overflow:hidden;font-family:var(--fb);font-size:16px;color:var(--txt);-webkit-user-select:none;user-select:none;font-synthesis:none;-webkit-font-smoothing:antialiased}
#c{display:block;position:fixed;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;z-index:0}
.hidden{display:none!important}

/* ---------- shared surfaces ---------- */
.panel,.invwrap,.lb,.ccard,#skillPicker,.stats,#tip,#abilityTip,.ioshint{
  background:linear-gradient(180deg,rgba(20,20,23,.96),rgba(11,11,13,.97));border:1px solid var(--edge);border-radius:var(--r);
  box-shadow:0 24px 60px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.04)}
.screen h2,.cstitle,.ptitle,.col h3,.psub{font-family:var(--fd);font-weight:700;text-transform:uppercase;letter-spacing:.16em}

/* ---------- full screen overlays ---------- */
.screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;z-index:5;text-align:center;padding:24px;animation:fadein .4s ease}
@keyframes fadein{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.screen{animation:none}button,.cell,.ccard{transition:none!important}}

/* ---------- title menu ---------- */
#menu{background:
  radial-gradient(ellipse 60% 55% at 50% 42%,rgba(0,0,0,.12),rgba(0,0,0,.72) 70%,rgba(0,0,0,.92)),
  linear-gradient(90deg,rgba(0,0,0,.55),rgba(0,0,0,0) 30%,rgba(0,0,0,0) 70%,rgba(0,0,0,.55));justify-content:center}
.titleblock{margin-bottom:26px}
@media (min-width:900px){
  #menu{align-items:flex-start;padding-left:max(40px,6vw)}
  #menu .titleblock,#menu .menubtns,#menu .deep{width:min(520px,44vw);text-align:center}
  #menu .menubtns{align-items:center}
  #menu h1{font-size:min(5.4vw,84px)}
  #menu{background:linear-gradient(90deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.62) 38%,rgba(0,0,0,.05) 62%,rgba(0,0,0,.25) 100%),radial-gradient(ellipse at 70% 55%,rgba(0,0,0,0),rgba(0,0,0,.6) 75%)}
}
h1{display:inline-block;white-space:nowrap;margin:0;padding:0 0 0 .16em;font-family:var(--fd);font-weight:700;text-transform:uppercase;font-size:clamp(46px,8vw,104px);letter-spacing:.16em;line-height:1.05;color:#f4f4f4;
  text-shadow:0 4px 30px rgba(0,0,0,.7),0 0 46px rgba(229,72,77,.18)}
.rule{display:block;width:min(260px,60vw);height:2px;margin:14px auto 0;background:linear-gradient(90deg,transparent,var(--acc),transparent);border-radius:2px}
.rule span,.rule i{display:none}
.sub{color:var(--mut);font-size:clamp(15px,1.6vw,19px);text-shadow:0 2px 8px #000}
.menubtns{display:flex;flex-direction:column;gap:10px;align-items:center}
.menubtns button{width:300px;max-width:84vw;min-width:0}
.deep{font-size:15px;margin-top:22px;color:var(--mut);text-shadow:0 2px 6px #000}
.deep::first-line{color:var(--mut)}
.foot{position:absolute;bottom:14px;font-size:13px;color:var(--faint);letter-spacing:.04em}

/* ---------- buttons ---------- */
button{font-family:var(--fd);font-weight:700;font-size:15.5px;letter-spacing:.06em;color:var(--txt);cursor:pointer;min-width:240px;padding:13px 22px;
  background:var(--raised);border:1px solid var(--edge);border-radius:var(--r);box-shadow:0 6px 16px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.04);
  transition:border-color .15s,background .15s,box-shadow .15s,transform .1s}
button:hover{border-color:var(--edge2);background:#1f1f23}
button:focus-visible{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-glow)}
button:active{transform:translateY(1px)}
button.primary{color:#fff;border-color:transparent;background:linear-gradient(180deg,var(--acc),var(--acc2));box-shadow:0 8px 24px rgba(229,72,77,.32),inset 0 1px 0 rgba(255,255,255,.18)}
button.primary:hover{background:linear-gradient(180deg,#f0575c,#b52f34);box-shadow:0 10px 28px rgba(229,72,77,.45),inset 0 1px 0 rgba(255,255,255,.22)}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}

/* ---------- modals (help, settings) ---------- */
.modal{background:rgba(0,0,0,.72);z-index:8;backdrop-filter:blur(3px)}
.panel{width:min(680px,94vw);max-height:90vh;overflow:auto;padding:22px 26px 20px;text-align:left;scrollbar-width:thin;scrollbar-color:#3a3a41 transparent}
.panel h2{margin:0 0 16px;font-size:18px;color:var(--txt);text-align:center}
.panel h2::after{content:"";display:block;width:36px;height:2px;margin:10px auto 0;background:var(--acc);border-radius:2px}
.lead{color:#cfcfd4;line-height:1.6;font-size:16px;margin:0 0 16px;max-width:64ch}
.keys{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;margin-bottom:18px}
.keys div{display:flex;align-items:center;gap:12px;font-size:15px;color:#d9d9de}
kbd{font-family:var(--fd);font-weight:700;font-size:12.5px;min-width:46px;text-align:center;padding:4px 8px;border-radius:4px;color:var(--txt);background:#1d1d21;border:1px solid var(--edge2);box-shadow:0 2px 0 #000}
.back{display:block;margin:6px auto 0;min-width:200px}
.opt{display:grid;grid-template-columns:1fr 200px 56px;align-items:center;gap:14px;padding:11px 2px;border-bottom:1px solid var(--edge);font-size:16px}
.opt.chk{grid-template-columns:1fr auto}
.opt b{font-weight:700;color:var(--txt);text-align:right;font-variant-numeric:tabular-nums}
.opt input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:22px;background:transparent;touch-action:none;cursor:pointer}
.opt input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--acc2),var(--acc));box-shadow:0 0 0 1px rgba(0,0,0,.6)}
.opt input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:#2a2a30}
.opt input[type=range]::-moz-range-progress{height:4px;border-radius:2px;background:var(--acc)}
.opt input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;margin-top:-6px;border-radius:50%;background:#f4f4f4;border:0;box-shadow:0 0 0 3px #0d0d0f,0 2px 6px rgba(0,0,0,.6)}
.opt input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#f4f4f4;border:0}
.opt input[type=range]:focus-visible{outline:none}
.opt input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px #0d0d0f,0 0 0 6px var(--acc-glow)}
html.mobile .opt input[type=range]{min-height:32px}
/* toggle switch */
.opt input[type=checkbox]{-webkit-appearance:none;appearance:none;position:relative;width:42px;height:24px;margin:0;cursor:pointer;border-radius:12px;background:#26262b;border:1px solid var(--edge2);transition:background .15s,border-color .15s}
.opt input[type=checkbox]::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#bdbdc4;transition:transform .15s,background .15s}
.opt input[type=checkbox]:checked{background:var(--acc2);border-color:var(--acc)}
.opt input[type=checkbox]:checked::after{transform:translateX(18px);background:#fff}
.opt input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--acc-glow)}
.panel .row{margin:18px 0 2px}
@media (max-width:620px){.keys{grid-template-columns:1fr}.opt{grid-template-columns:1fr 120px 46px}}

/* ---------- pause / death / leaderboard ---------- */
#pause{background:rgba(0,0,0,.72);z-index:7;backdrop-filter:blur(3px)}
.ptitle{margin:0 0 22px;font-size:clamp(34px,5.4vw,58px);color:var(--txt)}
.ptitle::after{content:"";display:block;width:44px;height:2px;margin:14px auto 0;background:var(--acc);border-radius:2px}
#dead{background:radial-gradient(ellipse at center,rgba(120,10,14,.38),rgba(0,0,0,.9) 75%)}
#dead h2{margin:0;font-size:clamp(34px,6.4vw,74px);color:#ff5b60;text-shadow:0 0 40px rgba(229,72,77,.45)}
#dead .sub{margin-bottom:18px}
.stats{display:grid;grid-template-columns:auto auto;gap:8px 48px;text-align:left;margin-bottom:22px;font-size:17px;padding:16px 24px}
.stats span:nth-child(odd){color:var(--mut)}
.stats span:nth-child(even){text-align:right;color:var(--txt);font-weight:700;font-variant-numeric:tabular-nums}
#leaderboard{background:radial-gradient(ellipse at center,rgba(30,30,36,.55),rgba(0,0,0,.94) 75%)}
#leaderboard h2{margin:0;font-size:clamp(28px,4.6vw,52px);color:var(--txt)}
.lb{width:min(720px,92vw);margin:14px 0 22px;overflow:hidden;padding:0}
.lbhead,.lbrow{display:grid;grid-template-columns:56px 2fr 1fr 1fr 1fr;gap:12px;padding:11px 18px;text-align:left}
.lbhead{color:var(--mut);border-bottom:1px solid var(--edge);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.lbrow{border-bottom:1px solid rgba(39,39,44,.7);font-size:16px;font-variant-numeric:tabular-nums}.lbrow:last-child{border-bottom:0}
.lbrow:nth-child(1){color:#ffc86a}.lbrow:nth-child(2){color:#e6e6ee}.lbrow:nth-child(3){color:#e0a07a}
.lbrow span:nth-child(4),.lbrow span:nth-child(5),.lbhead span:nth-child(4),.lbhead span:nth-child(5){text-align:right}
.lbname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.lbrow.me{background:linear-gradient(90deg,rgba(229,72,77,.16),rgba(229,72,77,0));box-shadow:inset 3px 0 0 var(--acc)}
.lbempty{padding:24px;color:var(--mut)}

/* ---------- inventory button (desktop) ---------- */
#btnInv{position:fixed;right:22px;bottom:26px;z-index:3;min-width:0;width:68px;height:68px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 35%,#212126,#0c0c0e);border:1px solid var(--edge2);box-shadow:0 8px 20px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.06)}
#btnInv:hover{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-glow),0 8px 20px rgba(0,0,0,.6)}
#btnInv span{position:absolute;right:-6px;bottom:-6px;font-weight:700;font-size:12px;letter-spacing:0;background:#0d0d0f;border:1px solid var(--edge2);border-radius:4px;padding:1px 6px;color:var(--txt)}

/* ---------- inventory ---------- */
#inv{position:fixed;inset:0;z-index:6;background:rgba(0,0,0,.72);display:flex;align-items:flex-start;justify-content:center;padding:28px 12px 12px;overflow:auto;backdrop-filter:blur(2px)}
.invwrap{display:flex;gap:22px;justify-content:center;align-items:flex-start;width:1040px;max-width:calc(100vw - 24px);padding:22px 22px}
.col h3{margin:0 0 16px;font-size:15px;color:var(--txt);display:flex;justify-content:space-between;align-items:baseline;gap:20px}
.col h3 small{color:var(--mut);font-size:14px;letter-spacing:.02em;font-weight:400;text-transform:none;font-variant-numeric:tabular-nums}
.equipcol{width:480px;flex:0 0 480px}
.bagcol{width:490px;flex:0 0 490px}
.equipcol>h3{width:340px;margin-left:auto;margin-right:auto;justify-content:center}
.equipstage{display:grid;grid-template-columns:76px 76px;justify-content:space-between;width:340px;margin:0 auto}
.eqside{display:flex;flex-direction:column;gap:8px}
.eqside .cell{width:76px;height:76px}
.grid{display:grid;gap:8px}
#bagGrid{grid-template-columns:repeat(6,74px)}
/* slots: recessed tiles; the inline border-color carries item rarity */
.cell{width:100%;aspect-ratio:1;background:radial-gradient(circle at 50% 40%,#1b1b1f,#0a0a0b 80%);border:1px solid var(--edge);border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:hidden;
  box-shadow:inset 0 2px 8px rgba(0,0,0,.7);transition:transform .1s,box-shadow .15s}
.cell:hover{transform:translateY(-1px);box-shadow:inset 0 2px 8px rgba(0,0,0,.5),0 0 0 2px rgba(255,255,255,.12),0 8px 18px rgba(0,0,0,.5)}
.cell .ph{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#4c4c54;text-align:center;line-height:1.15}
.cell img.ico{width:100%;height:100%;display:block;object-fit:contain;pointer-events:none}
.cell.cannot-equip::after{content:"";position:absolute;inset:0;background:rgba(229,72,77,.2);box-shadow:inset 0 0 14px rgba(229,72,77,.25);border-radius:5px;pointer-events:none}

.statbox{width:340px;margin:18px auto 0;font-size:15.5px;line-height:1.75}
.statbox div{display:flex;justify-content:space-between;gap:16px}
.statbox span:first-child{color:var(--mut)}
.statbox span:last-child{font-weight:700;color:var(--txt);font-variant-numeric:tabular-nums}
.statbox hr{border:0;border-top:1px solid var(--edge);margin:8px 0}
.statbox .statrow{cursor:help;border-radius:4px;padding:0 6px}
.statbox .statrow:hover{background:rgba(255,255,255,.05)}
.pw{display:block!important;color:#ffa24a;font-size:14.5px;line-height:1.45;margin-top:8px;overflow-wrap:anywhere}
.hint{margin-top:14px;font-size:14px;color:var(--mut);line-height:1.55}
.closebtn{margin-top:16px;min-width:0;padding:10px 22px;font-size:14.5px}
@media (max-width:1080px){
  .invwrap{flex-wrap:wrap;width:auto}
  .equipcol,.bagcol{flex:1 1 100%;width:100%}
  #bagGrid{grid-template-columns:repeat(6,minmax(0,1fr))}
}

/* ---------- tooltips ---------- */
#tip,#abilityTip{position:fixed;z-index:10;pointer-events:none;padding:12px 14px;font-size:15px;line-height:1.5;box-shadow:0 18px 44px rgba(0,0,0,.7)}
#tip{width:320px;overflow:hidden}
/* rarity header band (rarity class sits on .nm) */
#tip .nm{font-weight:700;font-size:17px;line-height:1.3;margin:-12px -14px 8px;padding:11px 14px 10px;border-bottom:1px solid var(--edge);background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0))}
#tip .nm.r1{background:linear-gradient(180deg,rgba(88,219,99,.2),rgba(88,219,99,0));border-color:rgba(88,219,99,.4)}
#tip .nm.r2{background:linear-gradient(180deg,rgba(90,155,255,.22),rgba(90,155,255,0));border-color:rgba(90,155,255,.42)}
#tip .nm.r3{background:linear-gradient(180deg,rgba(187,108,255,.24),rgba(187,108,255,0));border-color:rgba(187,108,255,.45)}
#tip .nm.r4{background:linear-gradient(180deg,rgba(255,154,42,.26),rgba(255,154,42,0));border-color:rgba(255,154,42,.5)}
#tip[data-r="1"]{border-color:rgba(88,219,99,.35)}#tip[data-r="2"]{border-color:rgba(90,155,255,.38)}#tip[data-r="3"]{border-color:rgba(187,108,255,.42)}#tip[data-r="4"]{border-color:rgba(255,154,42,.5)}
#tip .sl{color:var(--mut);font-size:13.5px;margin-bottom:2px}
#tip .rng{color:#6c6c74;font-size:13px}
#tip .pwr{color:#ffa24a;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,154,42,.25)}
#tip .cmp{margin-top:9px;border-top:1px solid var(--edge);padding-top:8px;font-size:14px}
#tip .up{color:#6ee27f}#tip .dn{color:#ff6b6b}
#tip .tipico{float:right;width:56px;height:56px;margin:0 0 4px 10px;border:1px solid var(--edge2);border-radius:6px}
#tip .muted{color:var(--mut)}
#tip b{color:var(--txt)}
.ilvl{color:var(--mut);font-size:13.5px;margin:1px 0 7px}
.weapondmg{color:var(--txt);font-size:16px;font-weight:700;margin:2px 0 7px}
.r0{color:#eaeaea}.r1{color:#58db63}.r2{color:#5a9bff}.r3{color:#bb6cff}.r4{color:#ff9a2a}
#abilityTip{width:330px;color:#dedee3}
#abilityTip .abname{font-weight:700;font-size:17px;color:var(--txt);margin:-12px -14px 8px;padding:11px 14px 10px;border-bottom:1px solid rgba(229,72,77,.35);background:linear-gradient(180deg,rgba(229,72,77,.18),rgba(229,72,77,0))}
#abilityTip .abname span{float:right;color:var(--mut);font-size:13px;font-weight:700;margin-top:2px}
#abilityTip .abdesc{color:#cfcfd4;margin-bottom:7px}
.abdmg{color:#ffd98a;margin:5px 0}.abdmg small{display:block;color:#8a8a92;margin-top:2px}
.abheal{color:#6ee27f;margin:5px 0}.abdef{color:#ffd98a;margin:5px 0}
.abextra{color:#8f8f97;margin-top:5px}
.abcd{border-top:1px solid var(--edge);margin-top:8px;padding-top:6px;color:#b5b5bc}

/* ---------- name entry after a run ---------- */
.namefield{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0 0 22px;font-size:14px;color:var(--mut)}
.namefield input{font-family:var(--fd);font-weight:700;font-size:18px;letter-spacing:.04em;text-align:center;color:var(--txt);width:min(320px,80vw);padding:11px 14px;border-radius:var(--r);
  background:#0b0b0d;border:1px solid var(--edge2);outline:none;user-select:text;-webkit-user-select:text}
.namefield input:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-glow)}
.namefield input::placeholder{color:#55555c}
#leaderboard .namefield{margin:12px 0 0}
.rankline{min-height:22px;font-weight:700;color:var(--gold);font-size:15px;letter-spacing:.04em;margin:-8px 0 12px}
#leaderboard .rankline{margin:8px 0 0}
.lbtabs{display:flex;gap:6px;margin-top:16px;padding:4px;border-radius:8px;background:#0d0d0f;border:1px solid var(--edge)}
.lbtabs button{min-width:0;padding:7px 16px;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;border-color:transparent;background:transparent;box-shadow:none;color:var(--mut)}
.lbtabs button.on{background:var(--raised);border-color:var(--edge2);color:var(--txt)}

/* ---------- controls / key bindings ---------- */
.psub{margin:22px 0 8px;font-size:13px;color:var(--mut)}
.bindlist{display:grid;grid-template-columns:1fr 1fr;gap:4px 22px}
.bindrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 2px;border-bottom:1px solid var(--edge);font-size:15px}
.bindrow.fixed span{color:var(--mut)}
.bindbtn{min-width:96px;padding:6px 12px;font-size:13px;letter-spacing:.04em;box-shadow:none}
.bindbtn.wait{border-color:var(--acc);color:#fff;animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 4px var(--acc-glow)}}
.bindmsg{min-height:20px;margin-top:8px;color:var(--gold);font-size:14px}
.note{color:var(--mut);font-size:14px;margin:8px 0 0}
@media (max-width:620px){.bindlist{grid-template-columns:1fr}}
#skillPicker{position:fixed;z-index:11;width:300px;padding:10px}
.pkhead{font-size:13.5px;color:var(--mut);margin:2px 4px 8px}
.pkhead b{color:var(--txt)}
.pkopt{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:10px;width:100%;min-width:0;margin:0 0 4px;padding:5px 10px 5px 5px;text-align:left;font-size:15px;letter-spacing:.01em;box-shadow:none}
.pkopt img{width:40px;height:40px;border-radius:6px}
.pkopt .pkslot{font-size:12px;color:var(--mut);font-weight:700}
.pkopt.cur{border-color:var(--acc)}
.pkfoot{font-size:12.5px;color:#76767e;margin:6px 4px 2px;line-height:1.45}

/* ---------- class select ---------- */
#classSel{background:radial-gradient(ellipse at 50% 50%,rgba(0,0,0,.72),rgba(0,0,0,.94) 75%);gap:18px}
#classSel h2.cstitle{color:var(--txt);font-size:clamp(20px,2.4vw,30px);margin:0}
.classcards{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;max-width:94vw}
.ccard{all:unset;box-sizing:border-box;cursor:pointer;width:min(340px,86vw);padding:14px 18px 18px;display:flex;flex-direction:column;align-items:center;gap:6px;
  background:linear-gradient(180deg,rgba(20,20,23,.96),rgba(11,11,13,.97));border:1px solid var(--edge);border-radius:10px;box-shadow:0 18px 40px rgba(0,0,0,.55);transition:transform .15s,border-color .15s,box-shadow .15s}
.ccard:hover{transform:translateY(-3px);border-color:var(--edge2)}
.ccard.sel{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),0 0 34px rgba(229,72,77,.25),0 18px 40px rgba(0,0,0,.55)}
.ccard:focus-visible{outline:none;box-shadow:0 0 0 3px var(--acc-glow)}
.ccard canvas{display:block;position:static;width:220px;height:200px;max-width:100%;cursor:pointer;border-radius:8px;background:radial-gradient(ellipse at 50% 65%,rgba(255,255,255,.05),rgba(0,0,0,0) 65%)}
.ccard b{font-weight:700;font-size:20px;letter-spacing:.18em;text-transform:uppercase;color:var(--txt)}
.ccard .role{font-size:13.5px;color:var(--acc);letter-spacing:.04em}
.ccard p{margin:4px 0 8px;font-size:15px;line-height:1.5;color:#c9c9cf;text-align:center;min-height:4.5em}
.ccard .cabils{display:flex;gap:6px}
.ccard .cabils img{width:40px;height:40px;border-radius:6px;border:1px solid var(--edge2)}
.ccard .cabils img.mv{margin-left:12px;border-color:#55555e}
@media (max-height:720px){.ccard canvas{height:150px;width:165px}.ccard p{min-height:0}}

.statbox .dimrow span{opacity:.45}
.statbox .statsub{display:block;font-size:12px;font-weight:700;letter-spacing:.14em;color:var(--mut);text-transform:uppercase;margin:4px 0 2px 6px}

/* ---------- touch / mobile (layout rules unchanged from v0.2.x) ---------- */
.mobonly{display:none!important}
html.mobile .mobonly{display:grid!important}
html.mobile .hint.mobonly{display:block!important}
html.mobile .deskonly,html.mobile #bindList,html.mobile #bindMsg{display:none!important}
#mobTop{position:fixed;z-index:6;display:flex;gap:6px;left:244px;top:20px}
#mobTop.hidden{display:none}
#mobTop button{min-width:0;width:auto;padding:8px 13px;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;opacity:.95}
html.mobile #btnInv{display:none!important}
#rotateHint{display:none}
@media (orientation:portrait){html.mobile #rotateHint{display:flex;position:fixed;inset:0;z-index:100000;background:#060607;color:var(--txt);align-items:center;justify-content:center;text-align:center;font-family:var(--fd);font-size:20px;padding:30px}
  html.mobile #rotateHint b{display:block;font-size:60px;margin-bottom:12px;color:var(--acc)}}
html.mobile #tip{max-width:min(320px,70vw);font-size:14px}
@media (max-height:520px){
  html.mobile .screen{padding:10px;gap:6px}
  html.mobile h1{font-size:40px!important}
  html.mobile .menubtns{gap:6px}
  html.mobile .menubtns button{padding-top:9px;padding-bottom:9px}
  html.mobile #classSel{gap:8px}
  html.mobile #classSel h2.cstitle{font-size:18px}
  html.mobile .ccard{width:min(300px,44vw);padding:8px 12px 10px;gap:3px}
  html.mobile .ccard canvas{width:130px;height:118px}
  html.mobile .ccard b{font-size:16px}
  html.mobile .ccard p{font-size:12.5px;min-height:0;margin:2px 0}
  html.mobile .ccard .role{font-size:12px}
  html.mobile .ccard .cabils img{width:30px;height:30px}
  html.mobile .panel{max-height:94vh;padding:12px 18px}
  html.mobile .panel .row{margin:10px 0 2px}
  html.mobile .opt{padding:7px 2px}
  html.mobile .panel h2{margin-bottom:8px}
  html.mobile .panel h2::after{margin-top:6px}
  html.mobile #dead h2,html.mobile #leaderboard h2{font-size:26px;margin:0}
  html.mobile .ptitle{margin-bottom:12px}
  html.mobile .lb{max-height:44vh;overflow:auto}
  html.mobile .screen{justify-content:safe center;overflow-y:auto}
  html.mobile #dead .sub{margin-bottom:6px;font-size:13.5px}
  html.mobile #dead .stats{font-size:14px;padding:8px 18px;gap:2px 36px;margin-bottom:8px}
  html.mobile #dead .rankline{margin:0 0 4px;min-height:0}
  html.mobile .namefield{margin:0 0 8px;gap:4px;font-size:12.5px}
  html.mobile .namefield input{font-size:15px;padding:7px 12px}
  html.mobile #dead .row button{padding-top:9px;padding-bottom:9px}
}
html.mobile #menu{background:radial-gradient(ellipse at center,rgba(0,0,0,.45),rgba(0,0,0,.82) 75%)}
html.mobile #leaderboard{background:rgba(0,0,0,.9)}

html.mobile #inv{align-items:flex-start;justify-content:flex-start;padding:6px calc(6px + env(safe-area-inset-right)) 6px calc(6px + env(safe-area-inset-left))}
html.mobile #inv .invwrap{margin:auto}
html.mobile .invwrap{flex-wrap:nowrap!important;width:1040px!important;max-width:none!important}
html.mobile .equipcol{flex:0 0 480px!important;width:480px!important}
html.mobile .bagcol{flex:0 0 490px!important;width:490px!important}
html.mobile #bagGrid{grid-template-columns:repeat(6,74px)!important}
html.mobile #statBox{display:none}
html.mobile #inv.showstats #statBox{display:grid;grid-template-columns:1fr 1fr;column-gap:22px;row-gap:0;width:100%;margin:4px 0 0;font-size:15px;line-height:1.6}
html.mobile #inv.showstats #statBox hr,html.mobile #inv.showstats #statBox .statsub,html.mobile #inv.showstats #statBox .pw{grid-column:1/-1}
html.mobile #inv.showstats #bagGrid,html.mobile #inv.showstats .bagcol .hint{display:none!important}
html.mobile #inv.showstats #bagCount{visibility:hidden}
html.mobile .statsbtn{margin:14px auto 0;min-width:0;width:200px;padding:10px;font-size:13.5px;letter-spacing:.08em;text-transform:uppercase;place-items:center}

.fsbtn{margin-top:4px;min-width:0;width:300px;max-width:84vw;font-size:14px}
html.mobile .fsbtn.hidden{display:none!important}
.ioshint{max-width:340px;font-size:13.5px;line-height:1.45;color:#c9c9cf;padding:8px 12px;text-align:center}
.ioshint.hidden{display:none}
html,body{overscroll-behavior:none}
html.mobile body{position:fixed;inset:0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html.mobile #mobTop{left:calc(244px + env(safe-area-inset-left))}

html.mobile #tip{max-height:86vh;overflow:auto;max-width:min(300px,46vw);font-size:13.5px;line-height:1.4}
html.mobile #tip .tipico{width:44px;height:44px}
html.mobile .statbox{font-size:15px;line-height:1.6}

@media (max-height:420px){
  html.mobile #menu{justify-content:center;gap:4px;padding-top:6px;padding-bottom:6px}
  html.mobile #menu h1{font-size:32px!important;margin:0}
  html.mobile #menu .rule{margin:6px auto 2px}
  html.mobile #menu .menubtns{gap:5px}
  html.mobile #menu .menubtns button,html.mobile .fsbtn{padding-top:7px;padding-bottom:7px;font-size:13.5px;width:260px}
  html.mobile #menu .deep{font-size:13px;margin:0}
  html.mobile #menu .foot{display:none}
  html.mobile .ioshint{font-size:12.5px;padding:5px 10px}
}

#mobTop button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
html.mobile button{touch-action:manipulation}

/* hero-select skill tooltip */
#cardTip{position:fixed;z-index:60;max-width:240px;padding:8px 11px;border-radius:var(--r);background:linear-gradient(180deg,#18181b,#0d0d0f);border:1px solid var(--edge2);box-shadow:0 8px 24px rgba(0,0,0,.6);pointer-events:none;text-align:left;display:flex;flex-direction:column;gap:3px}
#cardTip.hidden{display:none}
#cardTip b{font-family:var(--fd);font-weight:700;font-size:14px;color:var(--txt)}
#cardTip span{font-size:13px;line-height:1.4;color:var(--mut)}
.ccard .cabils img{cursor:help}
html.mobile #cardTip{max-width:220px}

/* mobile stats view: same footprint as the item grid, stats scroll inside it */
html.mobile #inv.showstats .bagcol{display:flex;flex-direction:column}
html.mobile #inv.showstats #statBox{flex:1 1 auto;min-height:0;overflow-y:auto;align-content:start;font-size:14px;line-height:1.55;padding-right:6px;margin:0}
html.mobile #inv.showstats .bagcol .closebtn{flex:0 0 auto;margin-top:12px;align-self:flex-start}

/* "Early Alpha" tag under the main title */
#menu .alpha{margin-top:6px;font-family:var(--fd);font-weight:700;font-size:clamp(12px,1.1vw,15px);letter-spacing:.42em;text-transform:uppercase;color:var(--acc);padding-left:.42em;text-shadow:0 0 14px rgba(229,72,77,.45)}
@media (max-height:420px){html.mobile #menu .alpha{margin-top:2px;font-size:11px}}
