/* ===========================================================
   Hold The Seats — shared styles for the Feedback / moderation /
   stats / privacy pages.  Same "election night" palette as the game,
   but a simpler scrolling document layout (these are ordinary pages,
   not the full-screen game).
   =========================================================== */
:root{
  --bg:#070d18; --bg2:#0b1424; --panel:#0e1a2e; --panel2:#122139;
  --line:#22304a; --line2:#2c3d5c;
  --ink:#eef4ff; --muted:#93a4c2; --dim:#66789a;
  --gold:#ffd66b; --accent:#38b6ff; --accent2:#1f7fd6;
  --good:#39d98a; --bad:#ff5d6c; --warn:#ffb547;
  --radius:12px; --shadow:0 10px 40px rgba(0,0,0,.5);
  --mono:"SF Mono",ui-monospace,"Roboto Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
/* The browser's own [hidden]{display:none} rule and an author rule like
   .btn{display:inline-flex} have EQUAL specificity (one class, one attribute
   selector) — on a tie, whichever rule is later in the cascade wins, and an
   author stylesheet always comes after the UA one. So any element that is
   both class="btn"/"row" (or similar, display-setting classes below) AND
   [hidden] stays visibly displayed no matter what toggles the attribute.
   This one rule reasserts hidden as the real, always-final word. */
[hidden]{display:none!important}
html,body{margin:0}
body{
  background:
    radial-gradient(1200px 600px at 80% -10%, #10213b 0%, transparent 60%),
    radial-gradient(900px 500px at -10% 110%, #12132b 0%, transparent 55%),
    var(--bg);
  color:var(--ink); font-family:var(--sans); min-height:100vh;
  -webkit-font-smoothing:antialiased; line-height:1.5;
}
a{color:var(--accent)}
.wrap{max-width:760px;margin:0 auto;padding:26px 20px 70px}
.wrap.wide{max-width:1000px}

/* header */
.phead{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}
.phead img{width:44px;height:44px;border-radius:10px;box-shadow:var(--shadow)}
.phead h1{font-size:26px;margin:0;font-weight:800;letter-spacing:-.01em}
.phead .craft{color:var(--gold)}
.phead .spacer{flex:1}
.eyebrow{letter-spacing:.14em;text-transform:uppercase;font-size:11px;color:var(--accent);font-weight:700;margin:0}
.crumbs{font-size:13px;color:var(--dim);margin:0 0 20px}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--accent)}

/* cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px;box-shadow:var(--shadow);margin:16px 0}
.card h2{margin:0 0 6px;font-size:19px}
.card h3{margin:0 0 4px;font-size:15px}
.muted{color:var(--muted)} .dim{color:var(--dim)}
.small{font-size:12.5px}

/* buttons (mirrors the game) */
.btn{border:1px solid var(--line2);background:var(--panel2);color:var(--ink);
  padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;
  transition:.14s;line-height:1.1;cursor:pointer;font-family:inherit;
  display:inline-flex;align-items:center;gap:8px}
.btn:hover:not(:disabled){border-color:var(--accent);background:#16233c}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.primary{background:linear-gradient(180deg,var(--accent),var(--accent2));border-color:var(--accent);color:#04121f}
.btn.primary:hover:not(:disabled){filter:brightness(1.08)}
.btn.ghost{background:transparent}
.btn.small{padding:6px 10px;font-size:12.5px;border-radius:8px}
.btn.danger{border-color:#5a2530;color:#ffb3bb}
.btn.danger:hover:not(:disabled){border-color:var(--bad);background:#2a1620}
.btn.good{border-color:#1f5c43;color:#a9f0cf}
.btn.good:hover:not(:disabled){border-color:var(--good);background:#0f2a20}
.btn-google{background:#fff;color:#1f1f1f;border-color:#fff;font-weight:700}
.btn-google:hover:not(:disabled){background:#f2f2f2;border-color:#f2f2f2}

/* forms */
textarea,input[type=text]{
  width:100%;background:var(--panel2);color:var(--ink);border:1px solid var(--line2);
  border-radius:10px;padding:11px 13px;font-size:15px;font-family:inherit;resize:vertical}
textarea:focus,input[type=text]:focus{outline:none;border-color:var(--accent)}
label.fld{display:block;font-size:13px;color:var(--muted);margin:0 0 6px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.charcount{font-size:12px;color:var(--dim);margin-top:6px}

/* who's-signed-in strip */
.whoami{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}
.whoami b{color:var(--ink)}

/* the approved wall + queue lists */
.msg{border:1px solid var(--line);background:var(--panel2);border-radius:11px;padding:14px 16px;margin:12px 0}
.msg .who{font-weight:700;font-size:14px}
.msg .when{color:var(--dim);font-size:12px;font-family:var(--mono)}
.msg .body{margin:8px 0 0;white-space:pre-wrap;word-break:break-word}
.msg .acts{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.flag{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--warn);border:1px solid #5a4a1e;background:#241d0b;border-radius:20px;padding:2px 9px}

/* toast */
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  background:var(--panel2);border:1px solid var(--line2);color:var(--ink);
  padding:11px 18px;border-radius:12px;box-shadow:var(--shadow);font-size:14px;
  opacity:0;pointer-events:none;transition:opacity .2s;z-index:50;max-width:90vw}
.toast.show{opacity:1}
.toast.err{border-color:var(--bad);color:#ffd0d5}

/* stat tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.tile{background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:16px}
.tile .k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.tile .v{font-family:var(--mono);font-size:30px;font-weight:700;margin-top:4px}
.tile .v.accent{color:var(--accent)} .tile .v.gold{color:var(--gold)} .tile .v.good{color:var(--good)}

/* simple bar list */
.bars{margin-top:10px}
.bar-row{display:grid;grid-template-columns:130px 1fr 52px;gap:10px;align-items:center;margin:7px 0;font-size:13.5px}
.bar-track{background:var(--panel2);border-radius:6px;height:16px;overflow:hidden;border:1px solid var(--line)}
.bar-fill{height:100%;background:linear-gradient(90deg,var(--accent2),var(--accent))}
.bar-row .n{font-family:var(--mono);text-align:right;color:var(--muted)}

.empty{color:var(--dim);text-align:center;padding:30px 10px}
.center{text-align:center}
hr.sep{border:none;border-top:1px solid var(--line);margin:26px 0}
