:root{
  --brand:#ef4444;--brand-2:#f87171;--brand-fill:linear-gradient(180deg,#f05252,#dc2626);--brand-glow:rgba(239,68,68,.38);--brand-ink:#fff;
  --gold:#fbbf24;--gold-2:#fde68a;--gold-fill:linear-gradient(180deg,#fde68a,#f59e0b);--gold-glow:rgba(251,191,36,.35);--gold-ink:#2a1602;
  --dirty:#a8925a;--dirty-glow:rgba(168,146,90,.25);
  --bg:#181211;--bg-deep:#100c0b;--bg-soft:#1f1816;--panel:rgba(255,255,255,.03);
  --panel-2:linear-gradient(160deg,rgba(64,44,40,.55),rgba(32,22,20,.55));
  --border:rgba(255,255,255,.09);--border-strong:rgba(255,255,255,.16);
  --text:#f3edeb;--muted:#b4a8a4;--ok:#34d399;--warn:#fb923c;--bad:#f87171;--live:#38bdf8;
  --radius:18px;--radius-ctl:12px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  color:var(--text);
  background:
    radial-gradient(1100px 600px at 50% -10%,#3a1613 0%,transparent 60%),
    radial-gradient(900px 500px at 85% 6%,rgba(251,191,36,.05),transparent 55%),
    var(--bg);
  min-height:100vh;
}
h1,h2,h3{font-weight:800;line-height:1.15;margin:0 0 .5em}
h1{font-size:2.4rem}h2{font-size:1.5rem}h3{font-size:1.1rem}
p{line-height:1.6;color:var(--text)}
.tnum{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.empty{color:var(--muted);font-style:italic}
.row-sub{color:var(--muted);font-size:.78rem;margin-top:2px}
.subhead{margin-top:32px}

/* ---- Link color law: gold is reserved for money. Generic links get plain
   text color + underline; UI chrome (nav/buttons/tabs/tables) overrides below. ---- */
a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:2px}
a:hover{color:var(--brand-2);text-decoration-color:currentColor}

/* ---- Section kickers: small-caps letter-spaced label above every h2 ---- */
.kicker{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 .5em}

/* ---- Nav ---- */
.nav{position:sticky;top:0;z-index:10;background:var(--bg-deep);border-bottom:1px solid var(--border)}
.nav-inner,.footer-inner{max-width:1120px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;gap:24px}
.wordmark{font-weight:800;font-size:1.3rem;color:var(--text);text-decoration:none}
.wordmark span{color:var(--brand)}
.wordmark.small{font-size:1rem}
.nav-links{display:flex;gap:20px;margin-right:auto;margin-left:24px}
.nav-links a{color:var(--muted);font-weight:600;text-decoration:none}
.nav-links a:hover{color:var(--text)}
.nav-links a.active{color:var(--text)}

/* ---- StreetTicker ---- */
.ticker{background:var(--panel);border-bottom:1px solid var(--border);padding:8px 24px;display:flex;gap:10px;align-items:center;font-size:.9rem}
.ticker-tag{background:var(--brand-fill);color:var(--brand-ink);font-weight:800;font-size:.7rem;padding:2px 8px;border-radius:999px;animation:sl-pulse-dot 1.8s infinite}
.ticker-text{color:var(--muted)}
@keyframes sl-pulse-dot{
  0%{box-shadow:0 0 0 0 var(--brand-glow)}
  70%{box-shadow:0 0 0 8px rgba(239,68,68,0)}
  100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}
}

/* ---- Buttons ---- */
.btn{display:inline-block;padding:10px 18px;border-radius:var(--radius-ctl);font-weight:700;border:1px solid var(--border-strong);color:var(--text);text-decoration:none}
.btn:hover{text-decoration:none;filter:brightness(1.1)}
.btn-brand{background:var(--brand-fill);color:var(--brand-ink);border:none;box-shadow:0 4px 20px var(--brand-glow)}
.btn-ghost{background:transparent}
.btn-lg{padding:14px 26px;font-size:1.05rem}

main{max-width:1120px;margin:0 auto;padding:0 24px 60px}
.section{margin-top:56px}
.section-alt{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:40px 32px}
.anchor-offset{scroll-margin-top:84px}

/* ---- Hero ---- */
.hero{padding:70px 24px 20px;text-align:center}
.hero-page{padding:56px 24px 24px}
.hero-inner{max-width:760px;margin:0 auto}
.hero .kicker{text-align:center}
.lead{color:var(--muted);font-size:1.15rem}
.cta-row{display:flex;gap:14px;justify-content:center;margin:26px 0}
.image-slot{display:flex;align-items:center;justify-content:center;background:var(--panel-2);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted);font-weight:800;letter-spacing:.1em}
.hero-slot{height:220px;margin-top:20px}
.icon-slot{height:44px;width:44px;border-radius:12px;margin-bottom:12px}

/* ---- Live stats strip ---- */
.stats-strip{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-top:34px}
.stat{flex:1;min-width:130px;text-align:center}
.stat-v{display:block;font-size:1.6rem;font-weight:800;color:var(--gold-2)}
.stat-l{font-size:.8rem;color:var(--muted)}

/* ---- Feature grid: the marquee-adjacent card style (brand accent + lift) ---- */
.feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.panel-tight{padding:16px}
.feature-card{background:var(--panel);border:1px solid var(--border);border-left:2px solid var(--brand);border-radius:var(--radius);padding:20px;transition:transform .18s ease,opacity .18s ease}
.feature-card:hover{transform:translateY(-4px)}
.steps-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.step{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.step-n{display:inline-block;width:28px;height:28px;line-height:28px;text-align:center;border-radius:50%;background:var(--gold-fill);color:var(--gold-ink);font-weight:800;margin-bottom:10px}

/* ---- Generic info grid (game/city detail sections) ---- */
.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:20px 0}
.info-grid-2{grid-template-columns:repeat(2,1fr)}
.plain-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}

/* ---- Path teaser cards ---- */
.path-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.path-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.path-pitch{color:var(--brand-2);font-style:italic;font-weight:700}

/* ---- Tables (rankings, hall of fame, crime ladder, mini boards) ---- */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-size:.92rem}
th{color:var(--muted);font-weight:700;font-size:.78rem;text-transform:uppercase}
table a,.mini-table a{text-decoration:none;color:var(--text)}
table a:hover,.mini-table a:hover{color:var(--brand-2);text-decoration:underline}
.link-more{display:inline-block;margin-top:12px;font-weight:700;text-decoration:none}
.link-more:hover{text-decoration:underline}
.cta-inline{margin-top:24px}

/* The crime ladder is the marquee table on /game: zebra rows + a gold-ink
   tier badge + heat/risk chips read at a glance. */
.crime-ladder tbody tr:nth-child(odd){background:rgba(255,255,255,.025)}
.tier-badge{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--gold-fill);color:var(--gold-ink);font-weight:800;flex-shrink:0}

/* ---- Chips: badges/tags used across herald, rankings, game, city ---- */
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.chip-note{opacity:.75;font-weight:600;text-transform:none;letter-spacing:0}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.chip-tag{background:var(--panel);color:var(--text);border:1px solid var(--border-strong);text-transform:none;letter-spacing:0;font-size:.76rem}
.chip-dirty{background:rgba(168,146,90,.16);color:var(--dirty);border:1px solid rgba(168,146,90,.4)}
/* Herald/ticker kind chips — mapped server-side from a safelist (server.js chipClassForKind) */
.chip-war{background:rgba(248,113,113,.16);color:var(--bad);border:1px solid rgba(248,113,113,.35)}
.chip-money{background:rgba(251,191,36,.16);color:var(--gold-2);border:1px solid rgba(251,191,36,.35)}
.chip-death{background:rgba(180,168,164,.14);color:var(--muted);border:1px solid var(--border-strong)}
.chip-flip{background:rgba(56,189,248,.16);color:var(--live);border:1px solid rgba(56,189,248,.35)}
.chip-event{background:rgba(168,146,90,.16);color:var(--dirty);border:1px solid rgba(168,146,90,.35)}
.chip-muted{background:var(--panel);color:var(--muted);border:1px solid var(--border)}
/* Heat/risk chips (crime ladder + heat thresholds) — ok -> warn -> bad -> brand scale */
.chip-heat-low,.chip-risk-low{background:rgba(52,211,153,.14);color:var(--ok);border:1px solid rgba(52,211,153,.3)}
.chip-heat-mod,.chip-risk-mod{background:rgba(251,146,60,.14);color:var(--warn);border:1px solid rgba(251,146,60,.3)}
.chip-heat-high,.chip-risk-high{background:rgba(248,113,113,.16);color:var(--bad);border:1px solid rgba(248,113,113,.35)}
.chip-heat-severe{background:rgba(248,113,113,.24);color:var(--bad);border:1px solid rgba(248,113,113,.5)}
.chip-heat-extreme,.chip-risk-extreme{background:var(--brand-fill);color:var(--brand-ink);border:none}
.chip-heat-tag{background:var(--panel-2);color:var(--text);border:1px solid var(--border-strong);text-transform:none;letter-spacing:0;font-size:.78rem;margin-bottom:8px;display:inline-block}

/* ---- Tabs (rankings board + window toggle) ---- */
.tabs{display:flex;gap:8px;margin:14px 0 24px;flex-wrap:wrap}
.tab{padding:8px 16px;border-radius:999px;border:1px solid var(--border-strong);color:var(--muted);font-weight:700;text-decoration:none}
.tab-active{background:var(--brand-fill);color:var(--brand-ink);border-color:transparent}

/* ---- Herald: compact home strip + full archive page ---- */
.herald-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.herald-list li{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-ctl);padding:12px 16px}
.herald-archive{list-style:none;margin:24px 0;padding:0;display:flex;flex-direction:column;gap:16px}
.herald-entry{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}
.herald-entry-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:10px;flex-wrap:wrap}
.herald-headline{font-size:1.05rem;margin:0 0 6px}

/* ---- CTA band (bottom of home/game/city/herald) ---- */
.cta-band{margin-top:64px;padding:56px 24px;text-align:center;background:var(--brand-fill);border-radius:var(--radius);color:var(--brand-ink)}
.cta-band-inner{max-width:640px;margin:0 auto}
.cta-band h2{color:var(--brand-ink)}
.cta-band p{color:rgba(255,255,255,.85);margin-bottom:20px}
.cta-band .btn{background:var(--bg-deep);color:var(--text);border:none;box-shadow:none}

/* ---- Static prose pages (rules/privacy/terms/news) ---- */
.prose-page,.prose{max-width:760px}
.prose-page h2{margin-top:1.6em}
.prose a{text-decoration:underline}

/* ---- Profile ---- */
.profile-card{max-width:520px;margin:0 auto;text-align:center}
.memoriam-tag{color:var(--bad);font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:.8rem}
.memoriam-block{margin-top:16px;padding:12px 16px}
.profile-stats{display:flex;justify-content:center;gap:28px;margin:18px 0;flex-wrap:wrap}
.profile-stats dt{color:var(--muted);font-size:.75rem;text-transform:uppercase}
.profile-stats dd{margin:0;font-weight:800;font-size:1.1rem}
.badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:16px 0}
.badge{background:var(--gold-fill);color:var(--gold-ink);padding:4px 10px;border-radius:999px;font-weight:700;font-size:.78rem}
.empty-state{text-align:center;padding:60px 20px}

/* ---- Hall of fame ---- */
.hof-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.hof-cat{margin-top:20px;margin-bottom:6px;font-size:.95rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}

.news-list{display:flex;flex-direction:column;gap:16px}

/* ---- Footer ---- */
.site-footer{border-top:1px solid var(--border);margin-top:80px;background:var(--bg-deep)}
.footer-links{display:flex;gap:18px;margin-left:auto;flex-wrap:wrap}
.footer-links a{color:var(--muted);text-decoration:none}
.footer-links a:hover{color:var(--text)}
.footer-copy{width:100%;color:var(--muted);font-size:.8rem;margin-top:8px}

/* ---- Responsive ---- */
@media (max-width:1024px){
  .feature-grid,.steps-strip,.path-grid{grid-template-columns:repeat(2,1fr)}
  .info-grid-2{grid-template-columns:1fr}
}
@media (max-width:720px){
  .nav-links{display:none}
}
@media (max-width:600px){
  .feature-grid,.steps-strip,.path-grid,.two-col,.hof-grid{grid-template-columns:1fr}
  .info-grid{grid-template-columns:1fr}
  .stats-strip{flex-direction:column}
  h1{font-size:1.9rem}
}

/* ---- Motion ---- */
@media (prefers-reduced-motion: reduce){
  *{animation:none !important;transition:none !important}
}
