/* ===== THE SHELL — tokens + the shared chrome for every dark page.
   Extracted verbatim from docket.tpl.html on 2026-07-25, when the site moved from
   per-page inline <style> to external, content-hashed stylesheets.

   WHY THIS FILE EXISTS. Until now every page inlined its whole stylesheet, so a CSS
   fix only ever reached pages that were rebuilt after it. Market pages are rebuilt
   only while they are on the live board; the ~3,000 that have rolled off are frozen
   on disk with whatever CSS shipped that day, and nginx still serves them. One CSS
   change therefore stranded thousands of live pages, permanently. build_site.py now
   concatenates this file + _docket.css into /assets/docket-<hash>.css and links it,
   so one edit reaches every page that references the sheet.

   THE TOKEN BLOCK BELOW IS LAW. It is duplicated byte-for-byte in _board.css, and
   build_site.py hashes the :root block out of both sheets and REFUSES TO BUILD if the
   two hashes differ. Change it here first, then copy it there verbatim.

   Do not write a literal fill() marker in this file — fill() would see it in the
   output and abort the build. ===== */

/* ===== TOKENS — the banker's-lamp system (2026-07-25 redesign).
   The board is dark ledger cloth; the ink is warm paper-white; brass carries every
   action; paper appears only as exhibit slips pinned to the board.
   DUPLICATED in index.tpl.html — keep the two blocks byte-identical. ===== */
:root{
--bg:#10150f;--board2:#1a2017;--panel:#1a211a;--panel2:#131813;
--ink:#f1eee2;--sealink:#dab654;--muted:#a9b1a1;--faint:#79826f;
--inkmuted:#5d5b4a;--paperdim:#4a4a3f;--losslight:#9c3128;--gaindim:#5d9a75;
--rule:#2b332a;--rule2:#3d473c;
--paper:#efe9d6;--paper2:#151b15;--paperink:#191c14;
--accent:#cfab55;--brass:#c9a54e;--gain:#7ec893;--loss:#e8896e;--oxblood:#7a1f1c;
--serif-display:'Libre Caslon Text',Georgia,'Times New Roman',serif;
--serif-body:'Public Sans',-apple-system,'Segoe UI','Helvetica Neue',sans-serif;
--mono:'IBM Plex Mono',ui-monospace,'SF Mono',SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);background:radial-gradient(110% 70% at 50% -8%,var(--board2) 0%,var(--bg) 62%);
color:var(--ink);font-family:var(--serif-body);font-size:16px;line-height:1.66;-webkit-font-smoothing:antialiased}
.mono,.num,.v,.n,td,th{font-variant-numeric:tabular-nums lining-nums}
.mono{font-family:var(--mono)}
.n{font-family:var(--mono);font-size:.94em;font-weight:600;font-variant-numeric:tabular-nums lining-nums}
a{color:var(--accent)}
img,svg{max-width:100%}
.pos{color:var(--gain)}
.neg{color:var(--loss)}
::selection{background:var(--brass);color:#17190f}

/* ===== THE COLUMN ===== */
.sheet{position:relative;max-width:960px;margin:0 auto;padding:clamp(20px,5vw,56px);padding-top:0}

/* ===== MASTHEAD ===== */
.mast{border-bottom:1px solid var(--rule2)}
.wm{display:flex;justify-content:space-between;align-items:baseline;gap:6px 16px;flex-wrap:wrap;padding:22px 0 13px}
.wm .name{font-family:var(--serif-display);font-size:23px;font-weight:700;letter-spacing:.01em;
color:var(--ink);text-decoration:none;line-height:1.1}
.wm .name em{font-style:italic;font-weight:400;color:var(--brass)}
.wm .sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.secnav{display:flex;align-items:center;flex-wrap:wrap;padding:9px 0;border-top:1px solid var(--rule);
font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase}
.secnav a{position:relative;padding:5px 13px;color:var(--muted);text-decoration:none;white-space:nowrap}
.secnav a:first-child{padding-left:0}
.secnav a+a::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
width:1px;height:11px;background:var(--rule)}
.secnav a:hover,.secnav a.here{color:var(--ink)}
.secnav .chip{margin-left:auto;background:var(--brass);color:#17190f;font-weight:700;
padding:6px 11px;border-radius:2px;letter-spacing:.1em}
.secnav .chip::before{display:none}
.secnav .chip:hover{background:var(--sealink);color:#17190f}

/* ===== SECTION RHYTHM ===== */
section{margin-top:clamp(34px,5.5vw,52px)}
section:first-of-type{margin-top:0}
h2.sec{position:relative;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.22em;
text-transform:uppercase;color:var(--brass);border-bottom:1px solid var(--brass);padding-bottom:9px;margin:0 0 22px}
h2.sec::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1px;background:var(--rule)}
h2.sec em{font-style:normal;color:var(--faint);font-weight:400;letter-spacing:.14em}
.figcap{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
color:var(--faint);line-height:1.7;margin-bottom:12px}
.prose{max-width:66ch;font-size:16px;line-height:1.66}
.prose p+p{margin-top:12px}
.prose b{color:var(--ink)}

/* ===== CASEHEAD + HERO ===== */
.casehead{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding-top:26px}
.ck{flex:1 1 auto;min-width:0;font-family:var(--mono);font-size:11px;letter-spacing:.24em;
text-transform:uppercase;color:var(--faint);line-height:1.9}
.ck .nb{white-space:nowrap;color:var(--muted)}
.seal{flex:0 0 auto;width:66px;height:66px;opacity:.9;transform:rotate(-4deg)}
.seal circle{stroke:var(--brass)}
.seal text{font-family:var(--mono);fill:var(--brass)}
.seal .mg{font-family:var(--serif-display);font-weight:700;fill:var(--ink)}
h1{font-family:var(--serif-display);font-size:clamp(31px,5.6vw,48px);font-weight:700;line-height:1.06;
letter-spacing:-.005em;margin:16px 0 12px}
.deck{font-family:var(--serif-display);font-style:italic;font-size:clamp(19px,2.8vw,22px);font-weight:400;
line-height:1.4;color:var(--muted);margin-bottom:16px;max-width:56ch}
.lede{font-size:clamp(16px,2.2vw,17.5px);line-height:1.68;max-width:66ch;margin-bottom:22px;color:var(--muted)}
.lede b{color:var(--ink);font-weight:600}
.lede i{color:var(--ink)}
.micro{font-family:var(--mono);font-size:12px;line-height:1.8;color:var(--faint);margin-top:8px}
.micro b{color:var(--ink)}
.micro a{color:var(--accent)}

/* ===== BUTTONS / FORMS (same rules as the homepage) ===== */
.btn{display:block;width:100%;background:var(--brass);color:#17190f;
border:1px solid var(--brass);border-radius:2px;cursor:pointer;text-align:center;
font-family:var(--mono);font-weight:700;font-size:13.5px;letter-spacing:.1em;text-transform:uppercase;
padding:15px 22px;min-height:52px;line-height:1.35}
.btn:hover{background:var(--sealink);border-color:var(--sealink)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.submit{border:1px solid var(--rule2);background:var(--panel);padding:clamp(16px,3vw,22px);border-radius:2px}
.submit .sk{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.24em;
text-transform:uppercase;color:var(--brass);margin-bottom:12px}
.row{display:flex;flex-wrap:wrap;gap:10px}
.row input{flex:1 1 100%;min-width:0;font-family:var(--mono);font-size:16px;min-height:48px;
padding:12px 13px;background:var(--panel2);border:1px solid var(--rule2);border-radius:2px;color:var(--ink)}
.row input::placeholder{color:var(--faint)}
.row input:focus{outline:none;border-color:var(--brass);box-shadow:0 0 0 3px rgba(201,165,78,.22)}
@media(min-width:560px){.row input{flex:1 1 220px}}
@media(min-width:721px){.row .btn{flex:0 0 auto;width:auto}}

/* ===== FOOTER ===== */
.foot{border-top:1px solid var(--rule2);margin-top:clamp(38px,6vw,56px);padding:18px 0 8px;
font-family:var(--mono);font-size:11.5px;line-height:1.85;color:var(--faint)}
.foot b{color:var(--muted)}
.foot a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--rule2)}
.foot a:hover{color:var(--ink)}
.foot .tl{display:block;margin-top:8px}
.aeo{margin-top:14px;font-family:var(--mono);font-size:11px;line-height:1.8;color:var(--faint)}
.aeo summary{cursor:pointer;letter-spacing:.12em;text-transform:uppercase}
.aeo a{color:var(--muted)}

@media(max-width:680px){
.secnav{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
.secnav .chip{margin-left:8px;position:sticky;right:0;flex:0 0 auto;
box-shadow:-14px 0 14px -6px rgba(16,21,15,.92)}
}
@media(max-width:480px){.seal{width:56px;height:56px}.deck{font-size:19px}}
@media print{body{background:#fff;color:#111}.submit,.btn{display:none}.sheet{max-width:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ===== SC 1.4.11 — the field boundary (2026-07-25, mobile-2026 playbook item 8) =====
   --rule2 is 1.70–1.91:1 against the surfaces it sits on. On a decorative hairline that
   is fine: 1.4.11 governs boundaries REQUIRED to identify a component. A text field's
   border is the only thing that says where the field is, so it is in scope and it fails.
   --fieldline is 3.35:1 at worst (on --panel) and 3.76:1 on --bg. Only inputs, selects
   and textareas move; card, table and rule hairlines keep --rule2 deliberately.
   The focus ring is restated after, or this rule would outrank it at equal specificity
   and the brass focus border would silently stop appearing. */
:root{--fieldline:#697462}
.row input,.capr input,.submit input,.cap input,.fld input,.fld select,
input:not([type=hidden]),select,textarea{border-color:var(--fieldline)}
.row input:focus,.capr input:focus,.submit input:focus,.cap input:focus,
.fld input:focus,.fld select:focus,input:focus,select:focus,textarea:focus{border-color:var(--brass)}
/* Self-hosted webfonts. Generated by /root/tools/fetch-fonts.py — do not
   hand-edit; re-run the script instead. No third-party font requests. */

@font-face {
  font-family: 'Libre Caslon Text';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/libre-caslon-text-400-italic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Libre Caslon Text';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/libre-caslon-text-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Libre Caslon Text';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/libre-caslon-text-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Self-hosted webfonts. Generated by /root/tools/fetch-fonts.py — do not
   hand-edit; re-run the script instead. No third-party font requests. */

@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/public-sans-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/public-sans-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Self-hosted webfonts. Generated by /root/tools/fetch-fonts.py — do not
   hand-edit; re-run the script instead. No third-party font requests. */

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/ibm-plex-mono-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/ibm-plex-mono-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Self-hosted webfonts. Generated by /root/tools/fetch-fonts.py — do not
   hand-edit; re-run the script instead. No third-party font requests. */

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/ibm-plex-mono-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* ===== THE DOCKET — shared components. build_site.py injects this file into BOTH
   index.tpl.html and docket.tpl.html (at their DOCKETCSS marker) so the two shells
   can never drift apart. Do not write a literal marker in this file — fill() would
   see it in the output and abort the build.
   COLOR LAW HOLDS: --loss colours dollars lost and nothing else; --gain/--gain-dk colours
   dollars kept; --accent is links only. Call status is NEVER colour-coded — a miss must
   read with exactly the weight of a hit. ===== */
:root{--gain-dk:#5d9a75}

/* --- the record plate: the headline numbers, printed like an evidence label --- */
.record{position:relative;border:1px solid var(--rule2);background:var(--panel);box-shadow:0 0 0 4px var(--panel2),0 0 0 5px var(--rule2),0 26px 60px -30px rgba(0,0,0,.6)}.record::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(90% 60% at 50% 0%,rgba(201,165,78,.10),transparent 70%)}
.record .rh{display:flex;justify-content:space-between;align-items:baseline;gap:6px 14px;flex-wrap:wrap;
background:var(--paper);color:var(--paperink);padding:9px 14px;position:relative;
font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.record .rh .asof{color:var(--inkmuted)}
.rgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr))}
.rcell{padding:14px 12px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.rcell:last-child{border-right:0}
.rcell .v{font-family:var(--mono);font-size:clamp(26px,6vw,34px);font-weight:700;line-height:1.05}
.rcell .l{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
color:var(--muted);margin-top:5px;line-height:1.5}
.rcell.wide{grid-column:1/-1;border-right:0}
.rfoot{padding:11px 14px;font-family:var(--mono);font-size:11.5px;line-height:1.7;color:var(--muted)}
.rfoot b{color:var(--ink)}
.rfoot a{color:var(--accent)}

/* --- a call: the atom of the ledger. HIT and MISS share every rule below. --- */
.call{border:1px solid var(--rule2);background:var(--panel);margin-bottom:12px}
.call .ch{display:flex;justify-content:space-between;align-items:baseline;gap:6px 12px;flex-wrap:wrap;
padding:9px 14px;border-bottom:1px solid var(--rule)}
.call .st{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.16em;
text-transform:uppercase;color:var(--ink);border:1.5px solid var(--ink);padding:3px 8px;white-space:nowrap}
.call .when{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.call .cb{padding:13px 14px}
.call .q{font-family:var(--serif-display);font-size:19px;font-weight:400;line-height:1.3;margin-bottom:9px}
.call .q a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--rule2)}
.call .q a:hover{border-bottom-color:var(--ink)}
.facts{display:flex;flex-wrap:wrap;gap:3px 18px;font-family:var(--mono);font-size:12px;line-height:1.8;color:var(--muted)}
.facts b{color:var(--ink);font-weight:700}
.call .cf{border-top:1px dashed var(--rule);margin-top:11px;padding-top:9px;
font-family:var(--mono);font-size:11.5px;line-height:1.65;color:var(--muted);overflow-wrap:anywhere}
.call .cf a{color:var(--accent)}
.roi{font-family:var(--mono);font-size:19px;font-weight:700;white-space:nowrap}
.roi.pos{color:var(--gain)}
.roi.neg{color:var(--loss)}
.roi.nil{color:var(--muted)}

/* --- empty state: the thin record, printed proudly --- */
.thin{border:2px dashed var(--rule2);background:var(--panel);padding:clamp(18px,4vw,26px)}
.thin .k{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.22em;
text-transform:uppercase;color:var(--muted);margin-bottom:9px}
.thin h3{font-family:var(--serif-display);font-size:clamp(21px,4vw,26px);font-weight:400;line-height:1.2;margin-bottom:9px}
.thin p{font-size:15.5px;line-height:1.6;max-width:62ch}
.thin p+p{margin-top:9px}

/* --- price cards --- */
.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:14px}
.tier{display:flex;flex-direction:column;border:1px solid var(--brass);background:var(--panel)}
.tier.free{border-color:var(--rule2)}
.tier .th{background:var(--paper);color:var(--paperink);padding:10px 16px;
font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase}
.tier.free .th{background:var(--paper2);color:var(--muted);border-bottom:1px solid var(--rule2)}
.tier .tb{padding:16px}
.price{font-family:var(--mono);font-size:clamp(30px,7vw,40px);font-weight:700;line-height:1.05}
.price .per{font-size:15px;font-weight:400;color:var(--muted)}
.perday{font-family:var(--mono);font-size:12.5px;line-height:1.7;color:var(--muted);margin-top:6px}
.perday b{color:var(--ink)}
.alt{border-top:1px dashed var(--rule);margin-top:12px;padding-top:12px}
.tier ul{list-style:none;margin:14px 0 0;font-size:15px;line-height:1.5}
.tier li{position:relative;padding:0 0 9px 20px}
.tier li::before{content:"\2014";position:absolute;left:0;color:var(--rule2)}
.tier .tf{margin-top:auto;padding:14px 16px;border-top:1px solid var(--rule2)}
.pend{display:block;text-align:center;background:var(--paper2);border:1.5px dashed var(--rule2);
color:var(--muted);font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.08em;
text-transform:uppercase;padding:14px;line-height:1.5}
.pendnote{font-family:var(--mono);font-size:11.5px;line-height:1.7;color:var(--muted);margin-top:9px}

/* --- FAQ / objection block --- */
.faq{border-top:1px solid var(--brass);padding-top:6px}
.qa{border-bottom:1px solid var(--rule);padding:14px 0}
.qa h3{font-family:var(--serif-display);font-size:19px;font-weight:400;line-height:1.3;margin-bottom:7px}
.qa p{font-size:15.5px;line-height:1.6;max-width:66ch}
.qa p+p{margin-top:8px}
.qa .no{font-weight:700;color:var(--ink)}

/* --- disclaimer, printed inside the proof, never in the footer --- */
.results{border-left:3px solid var(--rule2);padding:2px 0 2px 14px;margin-top:16px;
font-size:14px;line-height:1.6;color:var(--muted);max-width:66ch}
.results b{color:var(--ink);text-transform:uppercase;font-family:var(--mono);font-size:11px;letter-spacing:.14em;
display:block;margin-bottom:5px}

/* --- plain tables (methodology, partner math) --- */
.dtable{width:100%;border-collapse:collapse;font-size:15px}
.dtable th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
color:var(--muted);border-bottom:1px solid var(--brass);padding:8px 10px 7px}
.dtable td{border-bottom:1px solid var(--rule);padding:9px 10px;vertical-align:top;line-height:1.5}
.dtable td:first-child,.dtable th:first-child{padding-left:0}
.dtable .num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* Phone: a 4-column money table is unreadable at 390px and pushes the last column out of
   sight. Stack each row into a labelled block instead — every figure stays on screen. */
@media(max-width:600px){
.dtable,.dtable tbody,.dtable tr,.dtable td{display:block;width:100%}
.dtable thead{display:none}
.dtable tr{border-bottom:1.5px solid var(--rule2);padding:12px 0}
.dtable tr:last-child{border-bottom:0}
.dtable td{border:0;padding:1px 0}
.dtable td[data-l]::before{content:attr(data-l) " ";font-family:var(--mono);font-size:10.5px;
letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.dtable td.lead{font-family:var(--serif-display);font-size:18px;line-height:1.25;margin-bottom:5px}
.dtable .num{font-size:16px;font-weight:700}
}

/* --- code / endpoint blocks --- */
.endp{background:var(--panel);border:1px solid var(--rule2);padding:12px 14px;
font-family:var(--mono);font-size:12.5px;line-height:1.9;overflow-x:auto;-webkit-overflow-scrolling:touch}
.endp code{display:block;white-space:pre;color:var(--ink)}
.endp .c{color:var(--muted)}
blockquote.rule{border-left:3px solid var(--brass);background:var(--panel);padding:14px 16px;
font-size:16px;line-height:1.6;max-width:66ch}
blockquote.rule .v{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
color:var(--muted);display:block;margin-bottom:8px}

/* --- good/bad post examples --- */
.exs{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:14px}
.ex{border:1px solid var(--rule2);background:var(--panel);padding:14px 16px;font-size:15px;line-height:1.55}
.ex .lab{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
margin-bottom:8px;color:var(--ink);border-bottom:1px solid var(--rule);padding-bottom:6px}
.ex.bad{background:var(--paper2)}
.ex .why{font-family:var(--mono);font-size:11.5px;line-height:1.65;color:var(--muted);margin-top:9px;
border-top:1px dashed var(--rule);padding-top:8px}

/* --- responsible-gambling / compliance footer block --- */
.rg{border-top:1px solid var(--rule);margin-top:14px;padding-top:12px;
font-family:var(--mono);font-size:11.5px;line-height:1.85;color:var(--muted)}
.rg b{color:var(--ink)}

/* --- inline CTA strip --- */
.strip{border:1px solid var(--brass);background:var(--panel);padding:clamp(16px,3.5vw,22px)}
.strip .k{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
color:var(--muted);margin-bottom:8px}
.strip h3{font-family:var(--serif-display);font-size:clamp(22px,4.4vw,28px);font-weight:400;line-height:1.18;margin-bottom:9px}
.strip p{font-size:15.5px;line-height:1.6;max-width:64ch}
.strip .btn{margin-top:14px}
a.btn{display:block;text-decoration:none}
@media(min-width:721px){a.btn{display:inline-block;width:auto}}

/* --- AA CONTRAST FIX (2026-07-25, design-consistency lane) ------------------
   --faint (#79826f) is 4.63:1 against --bg but only 4.15:1 against --board2 — and
   --board2 is where the body's radial gradient actually is at the top of every page,
   which is exactly where the masthead sub-line, the case-file kicker and the figure
   captions sit. On --panel2 (the form fields) it is 4.45:1. All three are under the
   4.5:1 AA floor for text this size, measured in the browser, not estimated.

   This is deliberately an OVERRIDE rather than an edit to the token block or to the
   shells: the :root block is law and stays byte-identical in all four places that
   carry it, and docket.tpl.html/index.tpl.html keep the look Adam signed off on. Only
   the body-copy uses of --faint move to --muted (#a9b1a1 = 7.46:1 on --board2). --faint
   still carries hairlines and decoration, where contrast rules do not apply. This block
   is last in the file, so it wins on order at equal specificity.
   Same fix is baked directly into templates/_board.css and ox_learn.TOOLSCSS. --- */
.wm .sub,.ck,.figcap,.micro,.foot,.foot .tl,.aeo,.reassure,h2.sec em{color:var(--muted)}
input::placeholder,.row input::placeholder{color:var(--muted)}

/* ===== MOBILE 2026 PASS (coordinator, 2026-07-25 — from ox-research/mobile-2026-playbook.md) ===== */
html{color-scheme:dark}
@view-transition{navigation:auto}
.sheet{padding-left:max(clamp(20px,5vw,56px),env(safe-area-inset-left));
padding-right:max(clamp(20px,5vw,56px),env(safe-area-inset-right))}
@media(max-width:680px){
.secnav::after{content:"";flex:0 0 76px}  /* lets the last link scroll clear of the sticky JOIN chip */
}
.herobuy{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin:2px 0 26px}
.herobuy .btn{flex:0 1 auto;width:auto;display:inline-block;text-decoration:none}
.herobuy .hp{font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--muted)}
.herobuy .hp b{color:var(--ink);font-size:15px}
@media(max-width:560px){.herobuy .btn{flex:1 1 100%;width:100%}}
