/* ============================================================
   MGS Games — shared deck UI (used by all three games)
   Board layout: level rail (left) · card (center) · history (right)
   Mobile-first: collapses to a single column with toggles.
   ============================================================ */

.game-shell {
  position:relative; z-index:1;
  min-height:100svh;
  display:flex; flex-direction:column;
  max-width:1180px; margin-inline:auto;
  padding:clamp(1rem,4vw,2rem) var(--gutter);
}

/* ---- top bar ---- */
.topbar { display:flex; align-items:center; justify-content:space-between; gap:.75rem; min-height:48px; }
.topbar .top-left, .topbar .top-right { flex:1; display:flex; align-items:center; }
.topbar .top-right { justify-content:flex-end; }
.topbar .top-logo { flex:0 0 auto; display:inline-flex; line-height:0; -webkit-tap-highlight-color:transparent; }
.topbar .brand-logo { height:36px; width:auto; display:block; }
.topbar .back { font-family:var(--font-mono); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--text-soft); text-decoration:none; display:inline-flex; align-items:center; gap:.4rem; padding:.5rem 0; }
.topbar .back:active { opacity:.6; }
@media (max-width:480px) { .topbar .brand-logo { height:28px; } .topbar .back { font-size:0; gap:0; } .topbar .back::before { content:'←'; font-size:1.1rem; } }

/* ---- intro / mode select ---- */
.intro { flex:1; display:flex; flex-direction:column; justify-content:center; text-align:center; padding-block:2rem; max-width:560px; margin-inline:auto; }
.intro .kicker { font-family:var(--font-mono); font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; color:var(--accent-2); margin-bottom:1rem; }
.intro h1 { font-family:var(--font-display); font-weight:400; font-size:clamp(2.2rem,9vw,3.4rem); line-height:1.04; color:var(--game); letter-spacing:-.01em; }
.intro h1 em { font-style:italic; color:var(--game); }
.intro .blurb { color:var(--text-soft); max-width:42ch; margin:1rem auto 0; font-size:1.05rem; }
.intro .rules { margin:1.25rem auto 0; max-width:40ch; background:var(--card-bg); border:1px solid var(--border); border-radius:var(--radius); padding:1rem 1.25rem; font-size:.95rem; color:var(--text-soft); box-shadow:var(--shadow); }

.modes { display:grid; gap:.85rem; margin-top:2rem; }
.mode-btn {
  text-align:left; border:1px solid var(--border);
  border-radius:var(--radius); padding:1.15rem 1.3rem; cursor:pointer;
  box-shadow:var(--shadow); transition:transform .12s ease, border-color .2s ease;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  -webkit-tap-highlight-color:transparent; background:var(--card-bg);
}
.mode-btn:active { transform:scale(.98); }
.mode-btn:hover { border-color:var(--game); }
.mode-btn .m-title { font-family:var(--font-display); font-weight:500; font-size:1.25rem; color:var(--accent-3); }
.mode-btn .m-sub { font-size:.85rem; color:var(--text-soft); margin-top:.15rem; }
.mode-btn .m-arrow { font-size:1.3rem; color:var(--game); flex:none; }

.intro .start-row { margin-top:2rem; display:flex; flex-direction:column; gap:.75rem; align-items:center; }

/* ============================================================
   BOARD (active play)
   ============================================================ */
.board { display:none; flex:1; }
.board.active { display:flex; flex-direction:column; gap:1.25rem; margin-top:1rem; }

@media (min-width:820px) {
  .board.active {
    display:grid;
    grid-template-columns:210px minmax(0,1fr) 290px;
    gap:1.75rem; align-items:start;
  }
  /* games with no level rail (Guilty, Ranker) → card + history only */
  .board.active.no-left { grid-template-columns:minmax(0,1fr) 320px; max-width:920px; margin-inline:auto; }
}

/* ---- left rail: level / mode switcher ---- */
.rail-left { display:flex; flex-direction:column; gap:.6rem; }
.rail-left .rail-h { font-family:var(--font-mono); font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--text-soft); margin-bottom:.1rem; }
.lvl-btn {
  font-family:var(--font-body); font-weight:500; font-size:.95rem;
  background:var(--card-bg); border:1.5px solid var(--border); color:var(--text);
  border-radius:var(--radius); padding:.85rem 1rem; cursor:pointer; text-align:left;
  transition:transform .12s ease, border-color .2s ease, background .2s ease;
  -webkit-tap-highlight-color:transparent; white-space:nowrap;
}
.lvl-btn:active { transform:scale(.97); }
.lvl-btn:hover { border-color:var(--game); }
.lvl-btn.on { background:var(--game); border-color:var(--game); color:#fff; }
.lvl-btn small { display:block; font-family:var(--font-mono); font-size:.62rem; letter-spacing:.06em; opacity:.7; font-weight:400; margin-top:.15rem; }

/* mobile: level switcher becomes horizontal scrolling pills */
@media (max-width:819px) {
  .rail-left { flex-direction:row; gap:.5rem; overflow-x:auto; padding-bottom:.25rem; -webkit-overflow-scrolling:touch; }
  .rail-left .rail-h { display:none; }
  .lvl-btn { flex:none; border-radius:var(--radius-pill); padding:.55rem 1rem; font-size:.85rem; }
  .lvl-btn small { display:none; }
}

/* ---- center column ---- */
.stage-col { display:flex; flex-direction:column; min-width:0; }

.progress { display:flex; align-items:center; gap:.75rem; }
.progress .bar { flex:1; height:4px; background:var(--border); border-radius:999px; overflow:hidden; }
.progress .bar > i { display:block; height:100%; background:var(--game); border-radius:999px; transition:width .35s cubic-bezier(.4,0,.2,1); }
.progress .count { font-family:var(--font-mono); font-size:.72rem; color:var(--text-soft); letter-spacing:.08em; flex:none; }

.lang-row { display:flex; justify-content:center; margin-top:.85rem; }
.lang-toggle { display:inline-flex; border:1.5px solid var(--border); border-radius:999px; overflow:hidden; font-family:var(--font-mono); font-size:.72rem; }
.lang-toggle button { background:transparent; border:0; padding:.45rem .85rem; cursor:pointer; color:var(--text-soft); letter-spacing:.08em; -webkit-tap-highlight-color:transparent; }
.lang-toggle button.on { background:var(--game); color:#fff; }

/* card */
.card-stage { flex:1; display:flex; align-items:center; justify-content:center; padding-block:clamp(1rem,3vh,2rem); }
.card {
  position:relative; width:100%;
  border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg); padding:clamp(1.75rem,6vw,3rem); background:var(--card-bg);
  min-height:min(56svh,440px); display:flex; flex-direction:column;
  cursor:pointer; -webkit-tap-highlight-color:transparent; user-select:none; overflow:hidden;
}
.card::before { content:""; position:absolute; inset:0 0 auto 0; height:5px; background:var(--game); opacity:.9; }
.card .c-tag { font-family:var(--font-mono); font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--game); }
.card .c-body { flex:1; display:flex; flex-direction:column; justify-content:center; gap:.9rem; text-align:center; }
.card .c-primary { font-family:var(--font-display); font-weight:400; font-size:clamp(1.55rem,5.6vw,2.3rem); line-height:1.18; color:var(--text); }
.card .c-secondary { font-size:clamp(1rem,3.6vw,1.15rem); color:var(--text-soft); line-height:1.4; }
.card .c-hint { font-family:var(--font-mono); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--text-soft); opacity:.7; text-align:center; margin-top:1rem; }

.card .c-vs { display:flex; flex-direction:column; gap:.6rem; align-items:center; }
.card .c-vs .opt { font-family:var(--font-display); font-size:clamp(1.4rem,5.2vw,2rem); color:var(--text); line-height:1.15; }
.card .c-vs .vs { font-family:var(--font-mono); font-size:.8rem; letter-spacing:.16em; text-transform:uppercase; color:var(--game); padding:.1rem .6rem; border:1px solid var(--game); border-radius:999px; }

.verdict { display:flex; gap:.7rem; margin-top:1.25rem; }
.verdict .btn { flex:1; }

.card.swap-out { animation:swapOut .18s ease forwards; }
.card.swap-in  { animation:swapIn .26s cubic-bezier(.2,.7,.3,1); }
@keyframes swapOut { to { opacity:0; transform:translateY(-10px) scale(.98); } }
@keyframes swapIn  { from { opacity:0; transform:translateY(14px) scale(.98); } }
@media (prefers-reduced-motion:reduce) { .card.swap-out,.card.swap-in { animation:none; } }

/* controls */
.controls { display:flex; align-items:center; gap:.7rem; }
.controls .btn-next { flex:1; }
.iconbtn {
  flex:none; width:52px; height:52px; border-radius:50%; border:1.5px solid var(--border);
  background:var(--surface); color:var(--text); font-size:1.1rem; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  -webkit-tap-highlight-color:transparent; transition:transform .12s ease, border-color .2s ease;
}
.iconbtn:active { transform:scale(.92); }
.iconbtn:disabled { opacity:.35; cursor:default; }
.iconbtn:hover:not(:disabled) { border-color:var(--game); }

.endcard .c-primary { color:var(--game); }

/* ---- right rail: previous cards ---- */
.rail-right { display:flex; flex-direction:column; min-width:0; }
.rail-right .rail-h { font-family:var(--font-mono); font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--text-soft); margin-bottom:.75rem; display:flex; align-items:center; justify-content:space-between; }
.hist-list { display:flex; flex-direction:column; gap:.6rem; overflow-y:auto; padding-right:.25rem; }
@media (min-width:820px) { .hist-list { max-height:62svh; } }
.hist-card {
  background:var(--card-bg); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:.8rem .9rem; box-shadow:var(--shadow);
  font-size:.85rem; color:var(--text-soft); line-height:1.35;
}
.hist-card b { display:block; font-family:var(--font-mono); font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; color:var(--game); font-weight:500; margin-bottom:.25rem; }
.hist-empty { font-size:.82rem; color:var(--text-soft); opacity:.7; font-style:italic; padding:.5rem 0; }

/* mobile: history hidden behind a toggle */
.hist-toggle {
  display:none; width:100%; justify-content:center; gap:.4rem;
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  background:transparent; border:1.5px solid var(--border); border-radius:var(--radius-pill);
  padding:.7rem 1rem; cursor:pointer; color:var(--text-soft); -webkit-tap-highlight-color:transparent;
}
@media (max-width:819px) {
  .hist-toggle { display:inline-flex; margin-top:.5rem; }
  .rail-right { order:5; }
  .rail-right .rail-inner { display:none; }
  .board.show-hist .rail-right .rail-inner { display:flex; flex-direction:column; }
  .rail-right .rail-h { margin-top:.75rem; }
}
@media (min-width:820px) { .rail-right .rail-inner { display:flex; flex-direction:column; min-height:0; } }
