/* ============================================================
   Solid Drill — shared styles (design tokens ตาม spec\01 ภาคผนวก)
   ============================================================ */
:root{
  --bg:#121212; --surface:#1E1E1E; --line:#333333; --line2:#2C2C2C;
  --txt:#EDEDED; --mut:#8A8A8A;
  --gold:#E3B23C; --amber:#FBC02D; --grad:linear-gradient(90deg,#C4972F,#FBC02D);
  --ok:#4CAF50; --bad:#E4575F;
  /* ไพ่: พื้นสีตาม suit ตัวอักษรขาว (สไตล์ GTO Wizard — ห้าม fork palette) */
  --suit-s:#3A4149; --suit-h:#B03A3A; --suit-d:#2D6DA8; --suit-c:#2E7D4F;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--txt);
  font:16px/1.6 'Segoe UI',system-ui,sans-serif;
  font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;
  min-height:100svh}
a{color:var(--gold);text-decoration:none}
button{font:inherit;cursor:pointer}

/* ---------- layout ---------- */
.page{max-width:720px;margin:0 auto;padding:16px 16px 76px}
.header{display:flex;align-items:center;justify-content:space-between;margin:2px 0 14px}
.header .brand{font-size:17px;font-weight:700;letter-spacing:.05em;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.header .gear{color:var(--mut);font-size:20px;padding:6px;border:0;background:none}
h1.pagetitle{font-size:20px;margin:2px 0 14px}

/* ---------- surface / cards ---------- */
.panel{background:var(--surface);border:1px solid var(--line2);border-radius:16px;padding:18px}
.panel + .panel{margin-top:12px}
.section-title{font-size:15px;color:var(--mut);margin:18px 0 8px;font-weight:600}

/* ---------- ปุ่ม ---------- */
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  min-height:48px;border:0;border-radius:10px;padding:11px 16px;font-weight:700;color:var(--txt)}
.btn.primary{background:var(--grad);color:#121212;min-height:52px}
.btn.outline{background:none;border:1px solid #3A3A3A;font-weight:400}
.btn.danger{background:none;border:1px solid rgba(228,87,95,.5);color:var(--bad);font-weight:400}
.btn:disabled{opacity:.55;cursor:default}

/* ---------- bottom nav (56px · ซ่อนใน /session/*) ---------- */
.bottomnav{position:fixed;left:0;right:0;bottom:0;height:56px;z-index:40;
  background:rgba(18,18,18,.97);border-top:1px solid var(--line2);
  display:flex;align-items:stretch;justify-content:space-around;
  padding-bottom:env(safe-area-inset-bottom)}
.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:1px;font-size:11px;color:var(--mut)}
.bottomnav a .ic{font-size:19px;line-height:1}
.bottomnav a.on{color:var(--gold)}
@media (min-width:561px){
  .bottomnav{top:0;bottom:auto;height:52px;border-top:0;border-bottom:1px solid var(--line2);
    justify-content:flex-end;gap:6px;padding:0 18vw}
  .bottomnav a{flex:0 0 auto;flex-direction:row;gap:7px;font-size:14px;padding:0 14px}
  .page{padding-top:68px}
}

/* ---------- msg / toast ---------- */
.msg{border-radius:10px;padding:10px 13px;font-size:13.5px;margin-top:12px}
.msg.bad{background:rgba(228,87,95,.1);border:1px solid rgba(228,87,95,.45);color:var(--bad)}
.msg.ok{background:rgba(76,175,80,.1);border:1px solid rgba(76,175,80,.4);color:var(--ok)}
.msg.warn{background:rgba(251,192,45,.08);border:1px solid rgba(251,192,45,.4);color:var(--amber)}
#spd-toast{position:fixed;left:50%;bottom:76px;transform:translateX(-50%);z-index:70;
  background:#2A2A2A;border:1px solid var(--line);color:var(--txt);
  padding:10px 16px;border-radius:12px;font-size:13.5px;white-space:nowrap;
  opacity:0;pointer-events:none;transition:opacity .2s}
#spd-toast.on{opacity:1}

/* ---------- modal (re-login ฯลฯ) ---------- */
.modal-wrap{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.6);
  display:flex;align-items:center;justify-content:center;padding:20px}
.modal{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line2);
  border-radius:16px;padding:22px}
.modal h3{margin:0 0 6px;font-size:17px}
.modal .note{color:var(--mut);font-size:13.5px;margin:0 0 10px}
.modal input{width:100%;background:#171717;border:1px solid #333;border-radius:10px;
  color:var(--txt);font:inherit;padding:11px 13px;outline:none;margin-top:8px}
.modal input:focus{border-color:var(--gold)}

/* ---------- ไพ่ (HTML/CSS ล้วน) ----------
   บอร์ด 44×60 · hero 54×74 · chip ประวัติ 20×28 · มุม 6px */
.pcard{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  width:44px;height:60px;border-radius:6px;color:#FFF;line-height:1;
  font-weight:700;user-select:none;flex:none}
.pcard .r{font-size:20px}
.pcard .s{font-size:13px;margin-top:1px}
.pcard.hero{width:54px;height:74px}
.pcard.hero .r{font-size:26px}
.pcard.hero .s{font-size:15px}
.pcard.mini{width:20px;height:28px;border-radius:4px;flex-direction:row;gap:0}
.pcard.mini .r{font-size:12px}
.pcard.mini .s{font-size:9px;margin:2px 0 0}
.pcard.blank{background:none;border:1.5px dashed #3A3A3A}
.pcard.s-s{background:var(--suit-s)} .pcard.s-h{background:var(--suit-h)}
.pcard.s-d{background:var(--suit-d)} .pcard.s-c{background:var(--suit-c)}
@media (min-width:561px){ /* desktop ใหญ่ขึ้น ~15% */
  .pcard{width:50px;height:69px} .pcard .r{font-size:23px}
  .pcard.hero{width:62px;height:85px} .pcard.hero .r{font-size:30px}
}

/* ---------- แถบ action (reveal) ---------- */
.actrow{display:grid;grid-template-columns:minmax(92px,auto) 1fr auto;gap:10px;
  align-items:center;font-size:13.5px;margin:6px 0}
.actrow .lbl{white-space:nowrap}
.actrow .bar{height:10px;border-radius:5px;background:#2A2A2A;overflow:hidden}
.actrow .bar > i{display:block;height:100%;border-radius:5px}
.actrow .num{color:var(--mut);white-space:nowrap;font-size:12.5px}
.herobar{display:flex;height:26px;border-radius:8px;overflow:hidden;margin:6px 0 2px}
.herobar > i{display:flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);
  overflow:hidden;white-space:nowrap}

/* ---------- grid 13×13 ---------- */
.grid169{display:grid;grid-template-columns:repeat(13,1fr);gap:1.5px;width:100%;
  touch-action:manipulation}
.grid169 .cell{position:relative;aspect-ratio:1;border-radius:2px;background:#242424;
  overflow:hidden;display:flex}
.grid169 .cell > i{flex:none;height:100%}
.grid169 .cell.herocell{outline:2px solid var(--amber);outline-offset:-1px;z-index:1}
.grid169 .cell .cl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:9px;color:rgba(255,255,255,.85);text-shadow:0 1px 1px rgba(0,0,0,.6);display:none}
@media (min-width:561px){.grid169 .cell .cl{display:flex}}
.gridtip{margin-top:8px;font-size:13px;color:var(--txt);background:#242424;
  border:1px solid var(--line2);border-radius:8px;padding:7px 10px;min-height:20px}

/* ---------- accordion ---------- */
.acc-head{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:14px;
  padding:9px 0;cursor:pointer;user-select:none;background:none;border:0;width:100%;text-align:left}
.acc-head .tri{transition:transform .15s;font-size:11px}
.acc.open .acc-head .tri{transform:rotate(90deg)}
.acc-body{display:none}
.acc.open .acc-body{display:block}

/* ---------- stat tiles ---------- */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tile{background:var(--surface);border:1px solid var(--line2);border-radius:14px;padding:14px}
.tile .k{font-size:12.5px;color:var(--mut)}
.tile .v{font-size:24px;font-weight:700;margin-top:2px}
.tile .v .gold{color:var(--gold)}

/* ---------- progress bar บางๆ ---------- */
.pbar{height:4px;border-radius:2px;background:#2A2A2A;overflow:hidden}
.pbar > i{display:block;height:100%;background:var(--grad);border-radius:2px}
