/* Head to head gameshow pages.

   These use the wiki's own tokens, type and card shapes rather than a look of
   their own, so a player who taps through from the site lands somewhere that
   is obviously still the site. Values copied from wiki_style_a.css; if the
   site's palette moves, move these with it.

   Nothing here draws a LEGO piece. The only LEGO on screen is the game's own
   artwork. */
:root{
  --bg:#06080e;
  --bg-2:#0b0e17;
  --bg-3:#121724;
  --bg-card:#161b2a;
  --line:rgba(255,255,255,.07);
  --line-2:rgba(255,255,255,.13);
  --text:#eef0f8;
  --text-dim:#b6bcd2;
  --text-mute:#8a92b0;
  --accent:#ffd429;
  --accent-2:#ffab1f;
  --accent-cool:#56b6f0;
  --accent-ink:#151515;
  --good:#7be58a;
  --bad:#ff6868;
  --ink-good:#c5f5d2;
  --ink-bad:#ff8a8a;
  --field:rgba(0,0,0,.35);
  --radius:14px;
  --radius-sm:10px;
  --shadow-1:0 2px 8px rgba(0,0,0,.35);
  --shadow-2:0 8px 28px rgba(0,0,0,.45);
  --t-fast:.14s;
  --f-display:'Barlow Condensed','Poppins',sans-serif;
  --f-body:'Inter',system-ui,sans-serif;
  /* The one light surface on the page. A silhouette is a black shape, so it
     needs something pale behind it or it is a black rectangle on a black
     card, which is exactly what shipped the first time. */
  --plate:#e9ecf5;
  --plate-2:#cfd5e6;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;min-height:100vh;background:var(--bg);color:var(--text);
  font-family:var(--f-body);font-size:16px;line-height:1.5;
  -webkit-tap-highlight-color:transparent;
}
.wrap{max-width:560px;margin:0 auto;padding:14px 16px calc(100px + env(safe-area-inset-bottom))}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
h1,h2,h3{margin:0;text-wrap:balance}

/* masthead: type only */
.mast{display:flex;align-items:center;gap:12px;padding:6px 0 16px;border-bottom:1px solid var(--line);margin-bottom:16px}
.mast h1{font-family:var(--f-display);font-weight:800;font-size:26px;line-height:1;letter-spacing:.01em;text-transform:uppercase}
.mast small{display:block;font-weight:600;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-mute);margin-top:5px}
.mast .sp{flex:1}
/* v932: there was no way out of a game except the browser's own back button,
   which on a phone, mid room, is not something people reach for. One step
   back from wherever you are: a game returns to the picker, the picker
   returns to the wiki. */
.mast .gsback{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
  font-family:var(--f-display);font-weight:700;font-size:12px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-dim);text-decoration:none;
  background:var(--field);border:1px solid var(--line-2);border-radius:var(--radius-sm);
  padding:8px 11px;transition:color var(--t-fast),border-color var(--t-fast)}
.mast .gsback:hover{color:var(--text);border-color:var(--text-mute)}
.mast .gsback:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:420px){
  .mast .gsback{font-size:0;padding:8px 10px;gap:0}
  .mast .gsback::before{content:'\2190';font-size:15px}
}

.room{font-family:var(--f-display);font-weight:800;font-size:19px;letter-spacing:.18em;color:var(--accent);
  background:var(--field);border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:7px 12px}

/* panels and controls */
.panel{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px;box-shadow:var(--shadow-1)}
.panel h2{font-family:var(--f-display);font-weight:700;font-size:19px;letter-spacing:.01em;text-transform:uppercase;color:var(--text);margin-bottom:12px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.field label{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute)}
.field input,.field select{background:var(--field);border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:13px 14px;width:100%;color:var(--text)}
.field input.code{font-family:var(--f-display);font-weight:800;font-size:30px;letter-spacing:.3em;text-align:center;text-transform:uppercase;color:var(--accent)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.btn{width:100%;border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:14px 16px;font-weight:700;
  background:var(--bg-3);color:var(--text);transition:background var(--t-fast),transform var(--t-fast)}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.4;cursor:not-allowed}
.btn.go{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:800}
.btn.ghost{background:transparent}
.btn.big{font-family:var(--f-display);font-weight:800;font-size:19px;letter-spacing:.02em;text-transform:uppercase;padding:16px}
.btn.row{width:auto;flex:1}
.btnrow{display:flex;gap:10px}
.hint{color:var(--text-mute);font-size:13.5px}
.rules{margin:0;padding-left:18px;color:var(--text-dim);display:grid;gap:6px;font-size:14.5px}
.rules b{color:var(--text)}

/* who is in the room */
.seats{display:grid;gap:8px;margin-bottom:14px}
.seat{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:11px 13px;
  border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line)}
.seat .pip{width:9px;height:9px;border-radius:50%;background:var(--text-mute)}
.seat.s1 .pip{background:#ff6868}
.seat.s2 .pip{background:#56b6f0}
.seat.s3 .pip{background:var(--accent)}
.seat.s4 .pip{background:var(--good)}
.seat .nm{font-weight:700;overflow-wrap:anywhere}
.seat .nm em{font-style:normal;font-weight:500;font-size:12px;color:var(--text-mute);display:block}
.seat .sc{font-family:var(--f-display);font-weight:800;font-size:21px;color:var(--accent);font-variant-numeric:tabular-nums}
.seat.me{border-color:var(--accent)}
.seat.waiting .sc{font-family:var(--f-body);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute)}
.seat.ready .sc{font-family:var(--f-body);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--good)}
.seat.out{opacity:.45}

/* the thing on screen this round */
.stage{border-radius:var(--radius);overflow:hidden;background:var(--bg-card);border:1px solid var(--line);margin-bottom:14px;box-shadow:var(--shadow-1)}
/* The pale ground lives on .plate, never on the <img>. A CSS filter applies
   to everything the element paints, its own background included, so
   brightness(0) on the image would blacken the ground with it and the whole
   card turns into a black rectangle. That is exactly what shipped first. */
.stage .plate{position:relative;width:100%;aspect-ratio:1/1;
  background:radial-gradient(circle at 50% 42%,var(--plate),var(--plate-2) 78%)}
.stage .shot{display:block;width:100%;height:100%;object-fit:contain;padding:18px;background:none}
.stage .cap{padding:12px 14px;border-top:1px solid var(--line);display:grid;gap:4px}
.stage .cap .nm{font-family:var(--f-display);font-weight:800;font-size:21px;line-height:1.15;text-transform:uppercase;overflow-wrap:anywhere}
.stage .cap .sub{color:var(--text-mute);font-size:13px}
.clue{display:block;text-align:center;font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent);background:rgba(255,212,41,.1);border-top:1px solid var(--line);padding:10px 12px}
.stats{display:flex;gap:6px;flex-wrap:wrap;padding:12px 14px 0}
.stat{display:inline-flex;gap:6px;align-items:baseline;padding:4px 10px;border-radius:8px;background:var(--bg-3);font-size:13px}
.stat b{font-weight:700;font-variant-numeric:tabular-nums}
.stat span{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-mute)}

.timer{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.timer .bar{flex:1;height:8px;border-radius:4px;background:var(--bg-3);overflow:hidden}
.timer .bar i{display:block;height:100%;background:var(--accent);transition:width .9s linear}
.timer .n{font-family:var(--f-display);font-weight:800;font-size:21px;color:var(--accent);font-variant-numeric:tabular-nums;min-width:2.2em;text-align:right}
.timer.low .bar i{background:var(--bad)}
.timer.low .n{color:var(--bad)}

/* the bottom bar is where every action lives, under the thumb */
.dock{position:fixed;left:0;right:0;bottom:0;background:var(--bg-2);border-top:1px solid var(--line-2);
  padding:12px 16px calc(12px + env(safe-area-inset-bottom));z-index:40;box-shadow:0 -8px 28px rgba(0,0,0,.45)}
.dock .in{max-width:560px;margin:0 auto;display:grid;gap:10px}
.buzz{width:100%;border:0;border-radius:var(--radius);padding:24px 16px;font-family:var(--f-display);font-weight:800;
  font-size:30px;letter-spacing:.08em;text-transform:uppercase;background:var(--bad);color:#fff}
.buzz:active{transform:translateY(2px)}
.buzz[disabled]{background:var(--bg-3);color:var(--text-mute);cursor:not-allowed}
.say{text-align:center;font-weight:600;font-size:14px;color:var(--text-mute);padding:6px 0}
.say b{color:var(--text)}
.say.hot{color:var(--accent)}

/* bidding stepper */
.steps{display:grid;grid-template-columns:62px 1fr 62px;gap:10px;align-items:center}
.steps button{height:60px;border:1px solid var(--line-2);border-radius:var(--radius-sm);font-family:var(--f-display);
  font-weight:800;font-size:26px;background:var(--bg-3);color:var(--text)}
.steps output{font-family:var(--f-display);font-weight:800;font-size:42px;text-align:center;font-variant-numeric:tabular-nums;color:var(--accent)}
.quick{display:flex;gap:6px}
.quick button{flex:1;border:1px solid var(--line);border-radius:8px;padding:9px 4px;font-weight:700;font-size:13px;background:var(--bg-3);color:var(--text-dim)}
.purse{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--text-mute);font-weight:600}
.purse b{font-family:var(--f-display);font-weight:800;font-size:22px;color:var(--accent)}

/* tier buttons: the same six colours the site's own tier lists use */
.tiers{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.tiers button{border:0;border-radius:var(--radius-sm);padding:17px 0;font-family:var(--f-display);font-weight:800;font-size:23px;color:#151515}
.tiers button[data-t="S"]{background:#ff6868}
.tiers button[data-t="A"]{background:#ffab1f}
.tiers button[data-t="B"]{background:#ffd429}
.tiers button[data-t="C"]{background:#7be58a}
.tiers button[data-t="D"]{background:#56b6f0}
.tiers button[data-t="F"]{background:#b6bcd2}
.tiers button[disabled]{opacity:.28;cursor:not-allowed}

/* boards and rosters */
.board{display:grid;gap:7px;margin-bottom:14px}
.trow{display:grid;grid-template-columns:44px 1fr;gap:8px;align-items:stretch}
.trow .lab{border-radius:8px;display:grid;place-items:center;font-family:var(--f-display);font-weight:800;font-size:20px;color:#151515}
.trow[data-t="S"] .lab{background:#ff6868}
.trow[data-t="A"] .lab{background:#ffab1f}
.trow[data-t="B"] .lab{background:#ffd429}
.trow[data-t="C"] .lab{background:#7be58a}
.trow[data-t="D"] .lab{background:#56b6f0}
.trow[data-t="F"] .lab{background:#b6bcd2}
.trow .cells{display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-height:52px;padding:4px;border-radius:8px;background:var(--bg-2);border:1px solid var(--line)}
.trow .cells img{width:42px;height:42px;border-radius:6px;object-fit:contain;background:var(--plate)}
.trow .cells .none{color:var(--text-mute);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:0 6px}
.roster{display:grid;gap:7px}
.rrow{display:grid;grid-template-columns:44px 1fr auto;gap:10px;align-items:center;padding:5px 12px 5px 5px;
  border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line)}
.rrow img{width:44px;height:44px;border-radius:6px;object-fit:contain;background:var(--plate)}
.rrow .nm{font-weight:700;font-size:14px;line-height:1.2;overflow-wrap:anywhere}
.rrow .pr{font-family:var(--f-display);font-weight:800;font-size:17px;color:var(--accent);font-variant-numeric:tabular-nums}
.rrow.slot{background:transparent;border:1px dashed var(--line-2);grid-template-columns:1fr;place-items:center;
  min-height:54px;color:var(--text-mute);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}

/* verdict strip after a round */
.verdict{border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:14px;font-weight:600;font-size:14px;
  background:rgba(255,212,41,.1);border:1px solid rgba(255,212,41,.35);color:var(--text-dim)}
.verdict.win{background:rgba(123,229,138,.1);border-color:rgba(123,229,138,.35)}
.verdict.lose{background:rgba(255,104,104,.1);border-color:rgba(255,104,104,.35)}
.verdict .big{display:block;font-family:var(--f-display);font-weight:800;font-size:21px;text-transform:uppercase;margin-bottom:3px;color:var(--text)}
.verdict.win .big{color:var(--ink-good)}
.verdict.lose .big{color:var(--ink-bad)}
.calls{display:grid;gap:6px;margin-bottom:14px}
.call{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px 13px;
  border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line);font-weight:600;font-size:14px}
.call .pip{width:9px;height:9px;border-radius:50%}
.call.s1 .pip{background:#ff6868}
.call.s2 .pip{background:#56b6f0}
.call.s3 .pip{background:var(--accent)}
.call.s4 .pip{background:var(--good)}
.call .v{font-family:var(--f-display);font-weight:800;font-size:18px;color:var(--accent)}

.gs-toast{position:fixed;left:50%;transform:translate(-50%,24px);bottom:calc(112px + env(safe-area-inset-bottom));
  max-width:min(92vw,520px);background:var(--bg-3);border:1px solid var(--line-2);border-radius:var(--radius-sm);
  padding:11px 15px;font-weight:600;font-size:14px;opacity:0;pointer-events:none;
  transition:opacity var(--t-fast) ease,transform var(--t-fast) ease;z-index:60;box-shadow:var(--shadow-2)}
.gs-toast.show{opacity:1;transform:translate(-50%,0)}
.gs-toast.bad{border-color:rgba(255,104,104,.5);color:var(--ink-bad)}

@media (min-width:720px){
  .wrap{max-width:720px}
  .dock .in{max-width:720px}
  .mast h1{font-size:30px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}
