/* ─────────────────────────────────────────────────────────────
   chrome.css — the one header, on every page

   Six pages had six different headers. This is the one, and it keeps the
   language the home page already spoke: raised pixel buttons with a hard
   offset shadow, the arcade face for anything that acts like a control.

   Three things it has to get right, because the first attempt got them wrong:

   1. It is the same width everywhere. Pages have content columns from 860 to
      1180, and an earlier version made the header follow each one — which made
      the header itself change between pages: one line here, two lines there,
      the mark landing somewhere new each time. The header is chrome, not
      content. One width, one shape, one place for the mark, on all six.
   2. It keeps the status line. "The mine is open" is the one thing a first
      visitor wants to know, and it belongs beside the mark, not in a footer.
   3. It has a primary. Every destination as an identical text link is a list,
      not navigation: THE MINE is where the game is, so it is the filled
      button and everything else is raised-but-quiet.

   Only --ember, --line, --panel, --ink and --dim exist on every page, so
   everything else carries a literal fallback.
   ───────────────────────────────────────────────────────────── */

header.sm-head{
  /* Pages carry their own `header { display:flex; padding-bottom:16px }` from
     before this file existed, and a bare element selector still lands on this
     element. Those properties are reset by name rather than by deleting rules
     from six files, so the header is laid out by exactly one stylesheet. */
  display:block;padding:0;gap:0;flex-wrap:nowrap;
  align-items:stretch;justify-content:flex-start;
  border:0;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg, rgba(255,255,255,.022), transparent);
  margin:0 0 24px;
}
header.sm-head .sm-head-in{
  max-width:1180px;
  margin:0 auto;padding:15px 18px 14px;
  display:flex;align-items:center;gap:14px 22px;flex-wrap:wrap;
}

/* ── the mark ── */
header.sm-head .sm-mark{
  display:flex;align-items:center;gap:11px;text-decoration:none;flex:0 0 auto;
  font-family:"Press Start 2P",monospace;font-size:13px;line-height:1;
  color:var(--ember);white-space:nowrap;
}
header.sm-head .sm-mark img{
  width:36px;height:36px;display:block;image-rendering:pixelated;
  filter:drop-shadow(2px 2px 0 rgba(0,0,0,.6));
}
header.sm-head .sm-mark:hover{color:#FFA85C}

/* ── the status line: the one fact a stranger needs first ── */
header.sm-head .sm-status{
  /* Basis 0, not auto. With `auto` the status claims its full text width when
     the browser decides what fits on the first line, so it is the item that
     decides whether the nav wraps — and a sixth nav button was enough to push
     the whole nav onto a second row and double the header. With basis 0 the
     status claims nothing up front, takes whatever is left, and gives way
     itself instead of moving anything else. */
  flex:1 1 0;min-width:0;
  font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--dim);
  display:flex;align-items:center;gap:9px;
}
header.sm-head .sm-status i{
  width:7px;height:7px;flex:0 0 auto;background:#5BD08A;display:block;
  box-shadow:0 0 9px rgba(91,208,138,.85);
}
header.sm-head .sm-status b{color:var(--ink);font-weight:400}
/* Which chain this is matters to somebody arriving for the first time, and it
   is the half of this line that can go when the row is tight: "the mine is
   open" is the fact, and the chain is named again in every page footer.

   Hidden whenever the three sit on one row, not below some viewport width.
   The container is fixed at 1180 however wide the window is, so the row has
   1144px to divide however large the screen: mark 203 + nav 698 + gaps 44
   leaves 199, and the full line needs 353. A viewport-based threshold looked
   right and was wrong, because past 1180 the extra pixels go to the margins
   and never to this row. Below 1140 the status takes its own full-width row
   and the prefix comes back with it. */
header.sm-head .sm-status .chain{display:none}

/* ── the controls ── */
header.sm-head .sm-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:0 0 auto}
/* Pages style their own `nav a` — one of them adds margin-left:14px, which
   silently made this header 28px wider there than here and pushed it onto a
   second line. Every property a page might set on a nav link is set here, so
   the header measures the same on all six. */
header.sm-head .sm-nav a{margin:0;letter-spacing:normal;text-decoration:none}
header.sm-head .sm-btn{
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;cursor:pointer;
  font-family:"Press Start 2P",monospace;font-size:8px;text-transform:uppercase;
  letter-spacing:.02em;line-height:1;padding:10px 10px;margin:0;   /* 10, not 12: the eighth button (League) fits without squeezing the status */
  border:2px solid var(--sunk,#0A0E17);
  background:var(--panel);color:var(--ink);
  box-shadow:0 3px 0 var(--sunk,#0A0E17);
  transition:transform .1s ease, box-shadow .1s ease, background .15s ease, color .15s ease;
}
header.sm-head .sm-btn:hover{background:var(--line);color:#fff}
/* Pressed, not just tinted: the shadow is the affordance, so it collapses. */
header.sm-head .sm-btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--sunk,#0A0E17)}

header.sm-head .sm-btn.sm-primary{
  background:var(--ember);color:#160A03;box-shadow:0 3px 0 #A8431A;
  border-color:var(--sunk,#0A0E17);
}
header.sm-head .sm-btn.sm-primary:hover{background:#FF9257;color:#160A03}
header.sm-head .sm-btn.sm-primary:active{box-shadow:0 1px 0 #A8431A}

/* The Foundry. As loud as the mine because it is the other half of the
   project, and amber rather than ember because two identical fills sitting
   side by side stop telling you which one is the main thing. It is also off
   site, so it opens in its own tab. */
header.sm-head .sm-btn.sm-foundry{
  /* Literal, not var(--amber). Three pages never declare it, and there the
     background resolved to nothing while the text stayed near-black: an
     invisible button. The note at the top of this file says which variables
     exist everywhere, and amber is not one of them. */
  background:var(--amber,#FFC24A);color:#1A1000;box-shadow:0 3px 0 #8A5F10;
  border-color:var(--sunk,#0A0E17);
}
header.sm-head .sm-btn.sm-foundry:hover{background:#FFD679;color:#1A1000}
header.sm-head .sm-btn.sm-foundry:active{box-shadow:0 1px 0 #8A5F10}

/* The League. A third loud button, in the site's own terminal cyan so it does not read as a copy of the mine's
   ember or the Foundry's amber. Literal colours, for the reason the Foundry note gives. */
header.sm-head .sm-btn.sm-league{
  background:#67D5E8;color:#04161A;box-shadow:0 3px 0 #2A7A88;
  border-color:var(--sunk,#0A0E17);
}
header.sm-head .sm-btn.sm-league:hover{background:#8FE3F0;color:#04161A}
header.sm-head .sm-btn.sm-league:active{box-shadow:0 1px 0 #2A7A88}
header.sm-head .sm-btn.sm-league[aria-current="page"]{background:#67D5E8;color:#04161A;border-color:#E2E9F4;box-shadow:0 3px 0 #2A7A88}

/* ── the announcement bar ─────────────────────────────────────
   One thing at a time, and only while that thing is news. It sits directly
   under the header on the pages a first visitor lands on, so it wears the
   header's own width and the amber the Foundry button wears.

   Literal colours for the same reason the Foundry button uses them: --ore
   exists only on the home page and --amber only on some of the others, and a
   bar whose background resolves to nothing under near-black text is an
   invisible announcement. Everything here either has a fallback or is a
   constant. */
.newsbar{border-bottom:3px solid var(--amber,#FFC24A);background:#1A1206}
.newsbar .newsbar-in{
  max-width:1180px;margin:0 auto;padding:11px 18px;
  display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;
}
.newsbar b{
  font-family:"Press Start 2P",monospace;font-size:9px;letter-spacing:.06em;
  color:#1A1000;background:var(--amber,#FFC24A);padding:5px 8px;white-space:nowrap;
  font-weight:400;
}
/* The sentence shares the row with the badge and the button when there is
   room. Left at its default basis it asks for its own max-content width,
   takes the whole line at any width, and pushes the button onto a third row
   even on a wide desktop. */
.newsbar span{
  flex:1 1 420px;min-width:0;
  font-family:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  font-size:13px;line-height:1.6;color:var(--ink,#E2E9F4);
}
.newsbar em{font-style:normal;color:var(--dim,#7F8EA6)}
.newsbar a{
  font-family:"Press Start 2P",monospace;font-size:8px;letter-spacing:.06em;
  text-transform:uppercase;color:#1A1000;background:var(--amber,#FFC24A);
  padding:6px 9px;text-decoration:none;white-space:nowrap;
}
.newsbar a:hover{background:#FFD679;color:#1A1000}

/* A destination that is not open yet. It is still a link, because the page it
   goes to exists and explains itself, but the dot says the thing behind it has
   not started. Quieter than the word SOON, which at this size would cost more
   width than the whole button. */
header.sm-head .sm-btn.sm-soon::after{
  content:"";width:5px;height:5px;flex:0 0 auto;display:block;
  background:var(--amber,#FFC24A);box-shadow:0 0 7px rgba(255,194,74,.7);
}
header.sm-head .sm-btn.sm-soon{color:var(--dim)}
header.sm-head .sm-btn.sm-soon:hover{color:var(--ink)}
header.sm-head .sm-btn.sm-soon[aria-current="page"]{
  color:var(--amber,#FFC24A);border-color:var(--amber,#FFC24A)}

/* The page you are on is a state, not a destination — it stops looking
   clickable and starts looking selected. */
header.sm-head .sm-btn[aria-current="page"]{
  color:var(--ember);border-color:var(--ember);
  box-shadow:0 3px 0 rgba(255,122,52,.28);
}
header.sm-head .sm-btn.sm-primary[aria-current="page"]{
  color:#160A03;border-color:#FFC24A;box-shadow:0 3px 0 #A8431A;
}

/* Off-site links are not destinations in this map, so they read as marks
   rather than buttons and sit behind a divider. */
header.sm-head .sm-out{
  display:flex;align-items:center;gap:8px;
  margin-left:5px;padding-left:13px;border-left:1px solid var(--line);
}
header.sm-head .sm-out a{
  color:var(--dim);text-decoration:none;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;display:inline-flex;align-items:center;gap:6px;
  padding:6px 4px;margin:0;transition:color .15s ease;
}
header.sm-head .sm-out a:hover{color:var(--ink)}
header.sm-head .sm-out svg{flex:0 0 auto}

/* The point where the mark, the status and the nav stop fitting on one line.
   960 with five buttons, 1080 with six, 1140 with seven, 1164 with eight (League
   added 2026-09-23, buttons 2px narrower and 1px closer to make room; measured).
   Below this the status takes its own row and gets its full text back. */
@media(max-width:1164px){
  header.sm-head .sm-status{flex:1 1 100%;order:3;font-size:11px}
  header.sm-head .sm-nav{flex:1 1 100%;order:2}
  header.sm-head .sm-status .chain{display:inline}
}
@media(max-width:560px){
  header.sm-head{margin-bottom:18px}
  header.sm-head .sm-head-in{padding:12px 14px 12px;gap:11px 14px}
  header.sm-head .sm-mark{font-size:11px;gap:9px}
  header.sm-head .sm-mark img{width:30px;height:30px}
  /* Fingers, not cursors: the controls grow rather than shrink. A 34px button
     is comfortable with a mouse and a miss with a thumb, so the padding is set
     to clear the 44px target rather than to look tidy. */
  /* Horizontal padding only. The 44px target comes from min-height below, so
     tightening the sides costs nothing to a thumb and buys a row back: with
     seven buttons at 12px the off-site marks were pushed onto a line of their
     own and the header stood at 240px, against 190px at 8px. */
  header.sm-head .sm-btn{padding:16px 8px;font-size:7.5px;min-height:44px}
  /* The two off-site marks were the last controls in this header under the
     44px target — 42px and 37px, the icon being the smaller. Sized by their
     own box rather than by padding alone, since the icon link has no text to
     set its height. */
  header.sm-head .sm-out a{padding:12px 8px;min-height:44px;min-width:44px;
    justify-content:center}
  header.sm-head .sm-out{margin-left:0;padding-left:10px}
}

/* ─────────────────────────────────────────────────────────────
   Reading, and the pixel voice

   Silkscreen has no lowercase. Set as the body face it turns every paragraph
   into a wall of capitals, which is the one thing a reader's eye has nothing
   to hold on to — and this site asks people to read real explanations about
   money. So prose moves to a mono that was drawn to be read at small sizes,
   and the pixel faces keep the jobs they are good at:

     Press Start 2P — headings, numbers, buttons. The voice.
     Silkscreen     — small uppercase labels. Short by nature, so the missing
                      lowercase costs nothing and the texture stays.
     JetBrains Mono — anything that is a sentence.

   Loaded after each page's own <style>, so this wins on equal specificity
   without any page having to be rewritten.
   ───────────────────────────────────────────────────────────── */
:root{ --read:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace; }

html,body{ font-family:var(--read); font-size:15.5px; line-height:1.68;
  letter-spacing:0; -webkit-font-smoothing:antialiased; }

/* Sentences. Anything that is prose gets the readable face and normal case. */
p, li, dd, blockquote, figcaption, td, .lede, .note, .hint, .sub, .facts-note,
.status, .warn, .firsttime, .fuelnote, .bulk p, .tr, .rung, .task .d, .task .t{
  font-family:var(--read); text-transform:none;
}
p, li, .lede, .note, .hint, .sub{ letter-spacing:.005em; }

/* The voice keeps the pixels. */
h1,h2,h3,h4,.mark,.sm-mark,.sm-btn,.btn,button,.readout b,.strip b,.facts-grid b,
.lvname,.rank,th{ font-family:"Press Start 2P",monospace; }

/* Labels are short and shouty on purpose — Silkscreen still reads fine there. */
.lbl,.facts-grid span,.readout span,.strip span,.flag,.sw,.sm-status,
.sm-out a,.aucbar-tag,.state,.lvchip{ font-family:"Silkscreen",monospace; }

/* Two faces at one size look like two sizes, so the pixel labels are nudged
   up to sit on the same optical line as the prose beside them. */
.facts-grid span,.readout span,.strip span{ font-size:12.5px;letter-spacing:.08em }
