/* FLUKE app — THE SHERWOOD SKIN, matched to site/board.html.
   Reskinned 2026-08-27: this file was the last thing in the shipped site still
   wearing the retired flat palette (field green #216240, Space Grotesk, gold trim)
   — the exact diagnosis decisions.log 2026-08-22 made of the tech page before it
   was reskinned ("a visitor going WALK -> TECH fell straight out of Sherwood").
   The receipt is the page a win links to, so it must not look like a different
   project. Values are the board's tokens; the variable NAMES are kept because the
   classes below are load-bearing — fluke.js generates HTML that uses them. Gold
   still appears only where it means luck: an in-play pot, a win, a verified seal.
   The board's rule that panels stay OPAQUE is kept here too. */
:root {
  --green: #6edea5; --cream: #f1f6ef; --shadow: #b3c5b8; --muzzle: #f1f6ef;
  --ink: #082017; --gold: #eec25c; --gold-deep: #c79a3c;
  --night: #09120e; --panel: #17261e;
  --mut: #b3c5b8; --mut2: #8aa295; --line: #243d30;
  --bg: var(--night); --fg: var(--cream);
  --disp: 'Cinzel', Georgia, serif;
  --body: 'Alegreya Sans', 'Gill Sans', system-ui, sans-serif;
  --monof: 'IBM Plex Mono', ui-monospace, Menlo, monospace;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--fg);
  font: 15px/1.55 var(--body); -webkit-font-smoothing: antialiased; }
a { color: var(--muzzle); text-decoration: none; }
a:hover { text-decoration: underline; }
.mono { font-family: var(--monof); font-variant-numeric: tabular-nums; font-size: 12.5px; }
.wrap { max-width: 1120px; margin: 0 auto; padding: 0 24px 90px; }

/* ---- nav ---- */
nav { display: flex; align-items: center; gap: 20px; padding: 15px 0;
  border-bottom: 1px solid var(--line); flex-wrap: wrap;
  position: sticky; top: 0; z-index: 40; background: rgba(9, 18, 14, .92);
  backdrop-filter: blur(12px); }
@media (max-width: 760px) { nav { position: static; gap: 12px; } }
nav .brand { display: flex; align-items: center; gap: 10px; font-family: var(--disp);
  font-weight: 700; letter-spacing: .02em; color: var(--muzzle); }
nav .brand img { width: 26px; height: 26px; border-radius: 50%; display: block; }
nav .brand .wordmark { display: inline-flex; align-items: flex-end; font-family: var(--disp);
  font-weight: 700; letter-spacing: -.045em; color: var(--muzzle); line-height: 1;
  white-space: nowrap; font-size: 19px; }
nav .brand .wordmark .flick { flex: none; width: .44em; height: .44em; margin-left: .05em;
  margin-bottom: .04em; }
nav .brand .wordmark .flick svg { display: block; width: 100%; height: 100%; overflow: visible; }
nav .brand .wordmark .flick path { fill: none; stroke: var(--gold); stroke-width: 9;
  stroke-linecap: round; }
nav .brand .pg { font-family: var(--monof); font-size: 10px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--mut); font-weight: 500; margin-left: 2px; }
nav a { color: var(--mut); font-size: 13.5px; font-weight: 500; }
nav a:hover { color: var(--cream); text-decoration: none; }
nav .spacer { flex: 1; }

.chip { font-family: var(--monof); font-size: 10.5px; letter-spacing: .08em;
  padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; color: var(--mut);
  background: transparent; }
button.chip { font: 10.5px var(--monof); letter-spacing: .08em; }
button.chip:hover { background: rgba(241, 246, 239, .06); }
.chip.on { background: rgba(241, 246, 239, .1); border-color: rgba(241, 246, 239, .45);
  color: var(--muzzle); }
.chip.dead { background: rgba(138, 162, 149, .22); border-color: var(--mut2); color: var(--mut); }

h1 { font-family: var(--disp); font-size: clamp(28px, 3.6vw, 40px); line-height: 1.08;
  letter-spacing: -.025em; font-weight: 700; color: var(--muzzle); margin: 40px 0 8px; }
h2 { font-family: var(--monof); font-size: 10.5px; letter-spacing: .28em;
  text-transform: uppercase; margin: 56px 0 14px; color: var(--shadow); font-weight: 500; }
.sub { color: var(--mut); margin: 0 0 10px; max-width: 72ch; }
.sub.small { font-size: 13px; }

/* ---- cards & grids ---- */
.grid { display: grid; gap: 14px; }
.grid > * { min-width: 0; }
.grid.pots { grid-template-columns: 1fr 1fr 1.3fr; }
.grid.stats { grid-template-columns: repeat(3, 1fr); }
.grid.two { grid-template-columns: 1fr 1fr; }
@media (max-width: 800px) { .grid.pots, .grid.stats, .grid.two { grid-template-columns: 1fr !important; } }
.card { background: var(--panel); border: 1px solid var(--line); border-radius: 16px;
  padding: 18px 20px; }
.card.inplay { border-color: rgba(238, 194, 92, .6);
  box-shadow: 0 0 30px rgba(238, 194, 92, .10), inset 0 0 46px rgba(238, 194, 92, .04); }
.card .label { font-family: var(--monof); font-size: 9.5px; letter-spacing: .18em;
  text-transform: uppercase; color: var(--mut); }
.card .value { font-family: var(--disp); font-size: 26px; font-weight: 700;
  letter-spacing: -.02em; margin: 6px 0; color: var(--cream);
  font-variant-numeric: tabular-nums; }
.card.inplay .value { color: var(--gold); }
.card .value.big { font-size: 33px; }
.card .row { display: flex; justify-content: space-between; gap: 12px; font-size: 12.5px;
  padding: 5px 0; border-top: 1px solid var(--line); color: var(--mut); }
.card .row:first-of-type { border-top: 0; }
.card .row .mono { color: var(--cream); }

.bar { height: 5px; background: rgba(241, 246, 239, .1); border-radius: 99px;
  margin: 10px 0 6px; position: relative; }
.bar > i { display: block; height: 100%; background: var(--green); border-radius: 99px;
  box-shadow: 0 0 9px rgba(110, 222, 165, .5); }
.bar > i.gold { background: var(--gold); box-shadow: 0 0 11px rgba(238, 194, 92, .6); }
.mark { position: absolute; top: -3px; width: 2px; height: 11px; background: var(--shadow); }

/* ---- tables ---- */
table { width: 100%; border-collapse: collapse; font-size: 13px;
  border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
@media (max-width: 700px) {
  table { display: block; overflow-x: auto; white-space: nowrap; } }
thead { background: var(--panel); }
th { text-align: left; font-family: var(--monof); font-weight: 500; font-size: 9px;
  letter-spacing: .2em; text-transform: uppercase; color: var(--mut2);
  padding: 11px 14px; border-bottom: 1px solid var(--line); }
td { padding: 10px 14px; border-bottom: 1px solid rgba(241, 246, 239, .05);
  vertical-align: top; color: var(--mut); }
tr:last-child td { border-bottom: 0; }
td.win { color: var(--gold); font-weight: 600; }
td .mono, td.mono { color: var(--cream); }

/* ---- controls ---- */
input[type=text] { font: 15px/1.4 var(--body); padding: 10px 14px;
  border: 1px solid rgba(241, 246, 239, .22); border-radius: 10px;
  background: rgba(241, 246, 239, .05); color: var(--cream); width: 100%; max-width: 480px; }
input[type=text]::placeholder { color: var(--mut2); }
input[type=text]:focus { outline: none; border-color: rgba(238, 194, 92, .55); }
button { font: 600 14px var(--disp); padding: 10px 20px; border: 0; border-radius: 10px;
  background: var(--muzzle); color: var(--ink); cursor: pointer; }
button:hover { background: #f3d07a; }
button.ghost { background: transparent; color: var(--cream);
  border: 1px solid rgba(241, 246, 239, .25); font-weight: 500; }
button.ghost:hover { border-color: rgba(241, 246, 239, .5); background: transparent; }

.muted { color: var(--mut); }
.small { font-size: 12px; }
.notice { border: 1px solid rgba(238, 194, 92, .4); border-radius: 12px; padding: 11px 16px;
  background: rgba(238, 194, 92, .07); color: var(--shadow); margin: 14px 0; font-size: 13.5px; }
footer { margin-top: 72px; padding-top: 20px; border-top: 1px solid var(--line);
  font-family: var(--monof); font-size: 10.5px; line-height: 2; color: var(--mut2);
  letter-spacing: .04em; }
.dog { width: 44px; height: 44px; }

/* ---- receipt (verify page) ---- */
.receipt { background: var(--panel); border: 1px solid var(--line); border-radius: 16px;
  padding: 20px 22px; }
.step { padding: 14px 0; border-bottom: 1px solid var(--line); color: var(--mut);
  font-size: 13.5px; }
.step b { color: var(--cream); }
.step:last-child { border-bottom: 0; }
.step .n { display: inline-block; width: 22px; height: 22px; text-align: center;
  line-height: 22px; border: 1px solid rgba(241, 246, 239, .4); border-radius: 50%;
  font-family: var(--monof); font-size: 11px; color: var(--muzzle); margin-right: 9px; }
.ok { color: var(--gold); font-weight: 700; }
.bad { color: #df8360; font-weight: 700; }
code { font-family: var(--monof); font-size: 12px; word-break: break-all;
  color: var(--shadow); background: rgba(241, 246, 239, .06); padding: 1px 5px;
  border-radius: 4px; }
pre.mono { color: var(--shadow); }
.seal { display: inline-block; padding: 4px 12px; border-radius: 6px;
  background: var(--gold); color: #082017; font-family: var(--disp); font-weight: 700; }

/* ---- designed states ---- */
.ghost { opacity: .6; }
.ghost .value { color: var(--mut); }
.empty { display: flex; align-items: center; gap: 12px; color: var(--mut); }
.empty img { width: 30px; height: 30px; border-radius: 50%; opacity: .8; }
.demobar { border: 1px solid rgba(238, 194, 92, .4); border-radius: 12px; padding: 11px 16px;
  background: rgba(238, 194, 92, .07); color: var(--shadow); margin: 14px 0; font-size: 13px;
  font-family: var(--monof); letter-spacing: .04em; }
.demobar b { color: var(--mut); }
pre.mono { overflow-x: auto; font-size: 11.5px; line-height: 1.9; }
.footrow { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.footrow img { width: 24px; height: 24px; border-radius: 50%; }
.footrow .links { margin-left: auto; display: flex; gap: 18px; }
.footrow a { color: var(--mut); }
.footrow a:hover { color: var(--cream); }

/* ---- interaction polish ---- */
a:focus-visible, button:focus-visible, input:focus-visible {
  outline: 2px solid var(--gold); outline-offset: 3px; border-radius: 6px; }
tbody tr { transition: background .15s ease; }
tbody tr:hover { background: rgba(241, 246, 239, .035); }
@media (prefers-reduced-motion: reduce) {
  *, *:before, *:after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }
.flash { animation: goldflash 1.2s ease; }
@keyframes goldflash { 0% { color: var(--gold); } 100% { } }
.updated { font-family: var(--monof); font-size: 10px; letter-spacing: .1em; color: var(--mut2); }
.popover { position: absolute; right: 24px; top: 56px; z-index: 50; max-width: 380px;
  background: #17261e; border: 1px solid rgba(238, 194, 92, .4); border-radius: 14px;
  padding: 16px 18px; font-size: 13px; color: var(--mut); line-height: 1.6;
  box-shadow: 0 18px 50px rgba(0, 0, 0, .45); }
.popover b { color: var(--cream); }
.popover .g { color: var(--gold); }
nav { position: sticky; }
.verdict { display: flex; align-items: baseline; gap: 10px 14px; flex-wrap: wrap; border-radius: 14px;
  padding: 16px 20px; margin-bottom: 16px; font-family: var(--disp); font-weight: 700;
  font-size: 22px; letter-spacing: -.01em; border: 1px solid var(--line);
  background: var(--panel); color: var(--cream); }
.verdict.won { border-color: rgba(238, 194, 92, .55); background: rgba(238, 194, 92, .08);
  color: var(--gold); }
.verdict .sub2 { font-family: var(--monof); font-size: 11px; font-weight: 500;
  letter-spacing: .08em; color: var(--mut); }
.verdict .act { margin-left: auto; }
button.mini { font: 500 11.5px var(--monof); letter-spacing: .06em; padding: 7px 13px;
  background: transparent; color: var(--mut); border: 1px solid rgba(241, 246, 239, .25); }
button.mini:hover { color: var(--cream); border-color: rgba(241, 246, 239, .5); background: transparent; }
.filterrow { display: flex; gap: 10px; align-items: center; margin: 0 0 10px; flex-wrap: wrap; }

/* Σp oversubscription note on the steak card (game-theory F4): gold-deep, not a red —
   it is a governance heads-up, not an error state */
.row .warn { color: var(--muzzle); }
