/* ============================================================================
   AZTMM — PAPER v1.0  ·  Customizer → Additional CSS  ·  replaces "Complete
   Dark Premium Design v3.0" (2026-03) in full.
   Rollback: /home/claude/design/rollback/additional-css_PANEL_2026-09-08.css

   CASCADE NOTES (measured 8 Sep 2026 on home.html):
     This sheet loads at byte 272000. It BEATS: theme.json global styles,
     Seedlet, Bantry, all 13 WPCode snippets, custom-colors, aztmm-pl-tokens,
     -base, -chrome, -hmm-styles, -page-styles.
     It LOSES ties to: aztmm-orphan-nav-killer, aztmm-pl-late-overrides,
     mailpoet, aztmm-mobile-nav-fix, every page-content <style>, every
     per-post <style id="aztmm-pulse-chrome">, and azp-polish-v1.
     => anything that must beat those carries an `html body` / `html:root`
        prefix. Token (:root) overrides need no prefix: no layer after this
        one declares :root.
     NO @import. Fonts load from the head <link>.
   ============================================================================ */


/* ============================================================================
   1. TOKENS
   ============================================================================ */

:root{
  /* --- Paper primitives (Tokens.dc.html / build3.py) --- */
  --pp-surface:#f4f7fb; --pp-card:#ffffff;  --pp-card2:#eef2f8;
  --pp-line:#d5dae3;    --pp-line-soft:#e4e8ef; --pp-line-strong:#c3cad6;
  --pp-ink:#16233b;     --pp-muted:#47586f;  --pp-faint:#5f6c80;
  --pp-acc:#0a44c8;     --pp-acc2:#062e8a;   --pp-amber:#8a5310;
  --pp-good:#0f7a58;    --pp-warn:#b8860b;   --pp-warnt:#8a6508; --pp-crit:#bf3a1e;
  --pp-sans:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
  /* JetBrains Mono is already loaded by the head <link>; it is the fallback so the
     cutover needs no WPCode edit. Add IBM Plex Mono to that <link> in the follow-up pass. */
  --pp-mono:'IBM Plex Mono','JetBrains Mono',Menlo,ui-monospace,monospace;

  /* --- canonical --az-* set (owned by aztmm-pl-tokens) --- */
  --az-bg:var(--pp-surface); --az-bg-2:var(--pp-card2);
  --az-card:var(--pp-card);  --az-card-2:var(--pp-card2);
  --az-line:var(--pp-line);  --az-line-soft:var(--pp-line-soft); --az-line-bright:var(--pp-line-strong);
  --az-ink:var(--pp-ink);    --az-ink-2:var(--pp-muted); --az-ink-3:var(--pp-faint); --az-ink-4:var(--pp-faint);
  --az-bull:var(--pp-good);  --az-teal:var(--pp-good);
  --az-caution:var(--pp-warn); --az-crisis:var(--pp-crit); --az-stale:var(--pp-crit);
  --az-data:var(--pp-acc);   --az-model:var(--pp-acc2);
  --az-gold:var(--pp-amber); --az-slate:var(--pp-muted);
  --az-grad:linear-gradient(135deg,#0a44c8,#062e8a);
  --az-mono:var(--pp-mono);  --az-disp:var(--pp-sans); --az-sans:var(--pp-sans);

  /* --- tokens that are USED but were NEVER DEFINED (dark fallbacks) --- */
  --az-ink-1:var(--pp-ink);        /* 84 uses — every Pulse post h2/h3, WPCode #15 */
  --az-surface-1:var(--pp-card);   /* 28 uses */
  --az-surface-3:var(--pp-card2);  /* 104 uses */
  --az-card-bg:var(--pp-card);     /* 56 uses */
  --az-hover:var(--pp-card2);      /* 28 uses */

  /* --- surface / text / brand scale (aztmm-pl-tokens) --- */
  --surface-0:var(--pp-surface); --surface-1:var(--pp-card);
  --surface-2:var(--pp-card2);   --surface-3:var(--pp-line-soft);
  --surface-overlay:rgba(255,255,255,0.92);
  --border-subtle:var(--pp-line); --border-muted:var(--pp-line-strong);
  --border-brand:rgba(10,68,200,0.30);
  --text-primary:var(--pp-ink);   --text-secondary:var(--pp-muted);
  --text-muted:var(--pp-muted);   --text-dim:var(--pp-faint); --text-disabled:#8b98aa;
  --brand-primary:var(--pp-acc);  --brand-secondary:var(--pp-acc2); --brand-accent:var(--pp-acc2);
  --regime-bull:var(--pp-good);   --regime-bear:var(--pp-warn);
  --regime-crisis:var(--pp-crit); --regime-neutral:var(--pp-warn);
  --state-success:var(--pp-good); --state-warn:var(--pp-warn);
  --state-danger:var(--pp-crit);  --state-info:var(--pp-acc);
  --font-ui:var(--pp-sans);       --font-mono:var(--pp-mono);
  --shadow-sm:0 1px 2px rgba(22,35,59,.06);
  --shadow-md:0 2px 8px rgba(22,35,59,.08);
  --shadow-lg:0 8px 24px rgba(22,35,59,.10);
  --shadow-glow-brand:none;
  --radius-sm:6px; --radius-md:8px; --radius-lg:10px; --radius-xl:16px; --radius-pill:999px;

  /* --- WPCode #19 "Brand Polish" set: gold -> amber, cyan -> cobalt --- */
  --azt-gold:var(--pp-amber); --azt-gold-light:#a3671f; --azt-gold-dark:#6f420d;
  --azt-text:var(--pp-ink);   --azt-text-soft:var(--pp-muted); --azt-text-faint:var(--pp-faint);
  --az-cyan:var(--pp-acc); --az-cyan-dark:var(--pp-acc2);
  --az-cyan-soft:rgba(10,68,200,0.06); --az-cyan-border:rgba(10,68,200,0.28);
  --az-gold-soft:rgba(138,83,16,0.08);
  --az-ink-mut:var(--pp-muted); --az-ink-dim:var(--pp-faint);
  --az-surface:var(--pp-card);  --az-surface-2:var(--pp-card2);
  --az-up:var(--pp-good);       --az-down:var(--pp-crit);
  --heat-high:rgba(10,68,200,0.85);  --heat-mid-hi:rgba(10,68,200,0.55);
  --heat-mid:rgba(184,134,11,0.45);  --heat-mid-lo:rgba(184,134,11,0.24);
  --heat-low:rgba(184,134,11,0.14);  --heat-zero:rgba(213,218,227,0.60);
  --heat-ink-on-high:#ffffff;        --heat-ink-on-low:var(--pp-muted);

  /* --- WPCode #22 "Design System" set --- */
  --az-bg-card:var(--pp-card); --az-bg-card-alt:var(--pp-card2); --az-border:var(--pp-line);
  --az-accent:var(--pp-acc);  --az-accent-hover:var(--pp-acc2);
  --az-warn:var(--pp-warn);   --az-warn-hover:var(--pp-warnt);
  --az-danger:var(--pp-crit); --az-purple:var(--pp-acc2);
  --az-text:var(--pp-ink);    --az-text-muted:var(--pp-muted); --az-text-dim:var(--pp-muted);
  --az-font-heading:var(--pp-sans); --az-font-body:var(--pp-sans);
  --az-radius:10px; --az-radius-sm:8px;

  /* --- theme.json / Global Styles presets --- */
  --wp--preset--color--background:var(--pp-surface);
  --wp--preset--color--foreground:var(--pp-ink);
  --wp--preset--color--primary:var(--pp-acc);
  --wp--preset--color--secondary:var(--pp-card2);
  --wp--preset--color--tertiary:var(--pp-card2);
}

/* Seedlet's own variable system — WPCode #22 sets these with !important, so we
   must too (we are later in the cascade, so we win the tie). */
:root{
  --global--color-background:var(--pp-surface) !important;
  --global--color-foreground:var(--pp-ink) !important;
  --global--color-foreground-low-contrast:var(--pp-muted) !important;
  --global--color-foreground-high-contrast:#0b1424 !important;
  --global--color-primary:var(--pp-acc) !important;
  --global--color-primary-hover:var(--pp-acc2) !important;
  --global--color-secondary:var(--pp-acc2) !important;
  --global--color-border:var(--pp-line) !important;
  --primary-nav--color-link:var(--pp-acc) !important;
  --primary-nav--color-text:var(--pp-ink) !important;
}


/* ============================================================================
   2. DOCUMENT GROUND
   Must beat aztmm-pl-late-overrides: `html, body { background:#05080f !important }`
   (specificity 0,0,1 — `html body` at 0,0,2 and `html:root` at 0,1,1 both win).
   ============================================================================ */

html:root{ background:var(--pp-surface) !important; color-scheme:light; }

html body,
html body.home, html body.page, html body.single, html body.archive, html body.search{
  background:var(--pp-surface) !important;
  background-color:var(--pp-surface) !important;
  color:var(--pp-ink) !important;
  font-family:var(--pp-sans) !important;
  font-size:16px; line-height:1.5;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  opacity:1 !important; animation:none !important;
}

html body #page, html body .site, html body #content, html body .site-content,
html body #primary, html body .content-area, html body #main, html body .site-main,
html body article, html body .post, html body .page, html body .hentry,
html body .entry-content, html body .entry-footer, html body .post-inner,
html body .wp-site-blocks, html body .wp-block-post-content{
  background:transparent !important;
  color:var(--pp-ink) !important;
}

html body .entry-content p, html body .entry-content li,
html body .entry-content td, html body .entry-content th,
html body .entry-content dt, html body .entry-content dd{ color:var(--pp-ink); }

html body a,
html body .entry-content a, html body .wp-block-post-content a{
  color:var(--pp-acc) !important; text-shadow:none !important;
}
html body a:hover,
html body .entry-content a:hover{ color:var(--pp-acc2) !important; text-shadow:none !important; }

html body h1, html body h2, html body h3,
html body h4, html body h5, html body h6{
  font-family:var(--pp-sans) !important; color:var(--pp-ink) !important;
  letter-spacing:-.012em !important; text-shadow:none !important;
}

::selection{ background:rgba(10,68,200,.14) !important; color:var(--pp-ink) !important; }

html body a:focus-visible, html body button:focus-visible, html body input:focus-visible{
  outline:2px solid var(--pp-acc) !important; outline-offset:2px; border-radius:4px;
}


/* ============================================================================
   3. HEADER / NAV / FOOTER  (plugin-rendered .aztmm-pl-*)
   Most of this is repainted by section 1; only the hard-coded bits are here.
   ============================================================================ */

html body .aztmm-pl-nav{
  background-color:rgba(255,255,255,0.92) !important;
  border-bottom:1px solid var(--pp-line) !important;
  z-index:99990 !important;
}
html body .aztmm-pl-nav-list li a{ color:var(--pp-muted) !important; }
html body .aztmm-pl-nav-list li a:hover{ color:var(--pp-ink) !important;
  background:var(--pp-card2) !important; }
html body .aztmm-pl-nav-list li.is-current a{ color:var(--pp-ink) !important;
  background:transparent !important; border-bottom:2px solid var(--pp-amber) !important;
  border-radius:0 !important; }
html body .aztmm-pl-regime-strip{ opacity:1 !important; }
html body .aztmm-pl-nav-toggle span{ background:var(--pp-ink) !important; }
html body .aztmm-pl-nav-overlay{
  background:linear-gradient(180deg,var(--pp-surface),var(--pp-card)) !important; }
html body .aztmm-pl-nav-overlay-list li a{ color:var(--pp-ink) !important; }
html body .aztmm-pl-nav-overlay-list li a:hover,
html body .aztmm-pl-nav-overlay-list li.is-current a{
  color:var(--pp-acc) !important; border-color:var(--pp-amber) !important; }

html body .aztmm-pl-footer{ background:var(--pp-card) !important;
  border-top:1px solid var(--pp-line) !important; color:var(--pp-muted) !important; }
html body .aztmm-pl-footer-links a{ color:var(--pp-muted) !important; }
html body .aztmm-pl-footer-links a:hover{ color:var(--pp-acc) !important; }
html body .aztmm-pl-footer-copyright{ color:var(--pp-faint) !important;
  font-family:var(--pp-mono) !important; }
/* CAN-SPAM line is injected by JS with element.style.cssText — needs !important */
html body #az-postal-line{ color:var(--pp-muted) !important; }
/* Logo: measured 8 Sep 2026 — a single flat #04A10C green, 3.20:1 on the Paper ground.
   It is legible, but green is reserved for the Bull regime, so the mark is flattened to
   ink rather than left competing with the regime palette. brightness(0) drives any flat
   colour to black; the opacity lands it on the ink value. */
html body .aztmm-pl-brand-logo{ filter:brightness(0) opacity(.88) !important; }


/* ============================================================================
   4. PAGE SCOPES — re-declare the locally-scoped tokens.
   Page-content <style> blocks load AFTER this sheet, so `.hm6{…}` (0,1,0) must
   be beaten by `html body .hm6` (0,1,2). Nine wrappers share one variable
   vocabulary, so one rule covers them all.
   ============================================================================ */

html body .hm6, html body .rs7, html body .tac, html body .tbk, html body .tbk-wrap,
html body .plv2, html body .alv1, html body .sb6, html body .ab6{
  --bg:var(--pp-surface); --bg2:var(--pp-card2);
  --card:var(--pp-card); --card-elev:var(--pp-card2); --paper:var(--pp-card);
  --line:var(--pp-line); --line-soft:var(--pp-line-soft); --line-bright:var(--pp-line-strong);
  --ink:var(--pp-ink); --ink-mid:var(--pp-muted); --ink-mut:var(--pp-faint); --ink-dim:var(--pp-faint);
  --cyan:var(--pp-acc); --accent:var(--pp-acc); --accent-soft:var(--pp-acc2);
  --violet:var(--pp-acc2); --magenta:var(--pp-acc2);
  --amber:var(--pp-warn); --gold:var(--pp-amber);
  --emerald:var(--pp-good); --teal:var(--pp-good);
  --rose:var(--pp-crit); --red:var(--pp-crit); --slate:var(--pp-muted);
  --g1:linear-gradient(135deg,#0a44c8,#062e8a);
  --g2:linear-gradient(135deg,#0f7a58,#0a44c8);
  --sans:var(--pp-sans); --disp:var(--pp-sans); --mono:var(--pp-mono); --serif:var(--pp-sans);
  /* every one of these blocks paints a 2-stop radial "aurora" with hard-coded
     #1a1e3f / #2a1a4f / #181c38 / #231a44 stops — replace the whole shorthand */
  background:var(--pp-surface) !important;
  color:var(--pp-ink) !important;
  font-family:var(--pp-sans) !important;
}
/* kill the animated aurora overlays on .tac and .tbk */
html body .tac::before, html body .tbk::before{ display:none !important; content:none !important; }
html body .tbk{ min-height:0 !important; overflow:visible !important; }

/* methodology uses a different vocabulary */
html body .meth-pg{
  --bg:var(--pp-surface); --panel:var(--pp-card); --panel-2:var(--pp-card2);
  --ink:var(--pp-ink); --ink-dim:var(--pp-muted); --ink-mute:var(--pp-faint);
  --line:var(--pp-line); --line-2:var(--pp-line-strong);
  --cyan:var(--pp-acc); --violet:var(--pp-acc2);
  --emerald:var(--pp-good); --amber:var(--pp-warn); --rose:var(--pp-crit);
  --font-display:var(--pp-sans); --font-body:var(--pp-sans); --font-mono:var(--pp-mono);
  color:var(--pp-ink) !important; background:transparent !important;
}
/* start-here hard-codes its text colour, no tokens at all */
html body .sh-pg{ color:var(--pp-ink) !important; font-family:var(--pp-sans) !important; }
/* daily/weekly landing pages read --text-primary (fixed in section 1) */
html body .azt-arch-hub{ color:var(--pp-ink) !important; font-family:var(--pp-sans) !important; }

/* home-page strips that hard-code their colours */
html body .az-canonical-strip{ background:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important; color:var(--pp-muted) !important;
  font-family:var(--pp-mono) !important; }
html body .az-canonical-strip strong{ color:var(--pp-ink) !important; }
html body .az-canonical-strip .az-dot{ color:var(--pp-good) !important; }
html body .az-tell-pill{ background:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important; color:var(--pp-muted) !important; }
html body .azp-whatsnew{ background:var(--pp-card) !important;
  border-color:var(--pp-line) !important; color:var(--pp-muted) !important; }
html body .azp-whatsnew-kicker{ color:var(--pp-amber) !important; }
html body .azp-whatsnew-body{ color:var(--pp-muted) !important; }
html body .azp-infra{ color:var(--pp-faint) !important; }

/* Inline colour attributes.
   The academy hub alone carries ~1,300 `style="color:#cbd5e1"`; the rest of the
   site carries ~8 per page. Attribute selectors are the only CSS-side fix (the
   real fix is a content edit).

   CRITICAL: these are scoped to the PAGE WRAPPERS and must never be written as
   bare `html body [style*=…]`. Legacy post components live directly inside
   .entry-content and carry the same hexes as *correct, self-contained* values —
   e.g. `<div class="dp-strip" style="…color:#e6e9ff">` with
   `<span style="color:#7f8aa8">` labels and `<strong style="color:#10b981">`
   regime values. An unscoped rule would repaint those dark-on-dark and would
   flatten the regime colour coding. Scoping keeps them out of reach. */
html body .tac [style*="color:#cbd5e1"],  html body .tac [style*="color: #cbd5e1"],
html body .tbk [style*="color:#cbd5e1"],  html body .tbk-wrap [style*="color:#cbd5e1"],
html body .hm6 [style*="color:#cbd5e1"],  html body .rs7 [style*="color:#cbd5e1"],
html body .meth-pg [style*="color:#cbd5e1"], html body .sb6 [style*="color:#cbd5e1"],
html body .ab6 [style*="color:#cbd5e1"],  html body .sh-pg [style*="color:#cbd5e1"],
html body .plv2 [style*="color:#cbd5e1"], html body .alv1 [style*="color:#cbd5e1"],
html body .azt-arch-hub [style*="color:#cbd5e1"]{ color:var(--pp-muted) !important; }

html body .tac [style*="color:#e6e9ff"], html body .tbk [style*="color:#e6e9ff"],
html body .tbk-wrap [style*="color:#e6e9ff"], html body .hm6 [style*="color:#e4e7f5"],
html body .rs7 [style*="color:#e6e9ff"], html body .sb6 [style*="color:#e6e9ff"],
html body .ab6 [style*="color:#e6e9ff"], html body .meth-pg [style*="color:#e6e9f5"],
html body .sh-pg [style*="color:#e6e9f5"], html body .plv2 [style*="color:#e6e9ff"],
html body .alv1 [style*="color:#e6e9ff"]{ color:var(--pp-ink) !important; }

html body .tac [style*="color:#94a3b8"], html body .tbk [style*="color:#94a3b8"],
html body .tbk-wrap [style*="color:#94a3b8"], html body .hm6 [style*="color:#a8aecd"],
html body .rs7 [style*="color:#94a3b8"], html body .plv2 [style*="color:#94a3b8"],
html body .alv1 [style*="color:#94a3b8"], html body .azt-arch-hub [style*="color:#94a3b8"],
html body .tac [style*="color:#64748b"], html body .tbk [style*="color:#64748b"],
html body .tbk-wrap [style*="color:#64748b"]{ color:var(--pp-muted) !important; }

/* the lesson-meta rule from the old sheet, kept and re-pointed */
html body .lesson-duration, html body .lesson-level{ color:var(--pp-muted) !important; }


/* ============================================================================
   5. LEDGER (.alv1)
   ============================================================================ */

html body .alv1-title{
  background:none !important; -webkit-background-clip:border-box !important;
  background-clip:border-box !important; color:var(--pp-ink) !important;
  -webkit-text-fill-color:currentColor !important;
  font-family:var(--pp-sans) !important; font-weight:600 !important; letter-spacing:-.015em !important;
}
html body .alv1-eye{ background:rgba(138,83,16,.08) !important;
  border:1px solid rgba(138,83,16,.32) !important; color:var(--pp-amber) !important;
  font-family:var(--pp-mono) !important; }
html body .alv1 a, html body .alv1 td.mono a, html body .alv1-table td.mono a{
  color:var(--pp-acc) !important; }
html body .alv1 th, html body .alv1-table th{ background:var(--pp-card2) !important;
  color:var(--pp-muted) !important; font-family:var(--pp-mono) !important; }
html body .alv1 td, html body .alv1-table td{ color:var(--pp-ink) !important;
  border-color:var(--pp-line) !important; }


/* ============================================================================
   6. PULSE LAB — beats aztmm-pl-late-overrides (loads after this sheet).
   ============================================================================ */

html body .aztmm-pl-page,
html body .aztmm-pl-page h1, html body .aztmm-pl-page h2,
html body .aztmm-pl-page h3, html body .aztmm-pl-page h4,
html body .aztmm-pl-page-title, html body .aztmm-pl-section-title,
html body .aztmm-pl-mpi-stat-value, html body .aztmm-pl-sc-score,
html body .aztmm-pl-hmm-title{ color:var(--pp-ink) !important; }

html body .aztmm-pl-page-subtitle{ color:var(--pp-acc) !important; }
html body .aztmm-pl-page-date, html body .aztmm-pl-section-caption,
html body .aztmm-pl-mpi-stat-label, html body .aztmm-pl-sc-read,
html body .aztmm-pl-hmm-subtitle, html body .aztmm-pl-signal-table th{
  color:var(--pp-muted) !important; }
html body .aztmm-pl-overview-body, html body .aztmm-pl-overview-body p,
html body .aztmm-pl-overview-body *, html body .aztmm-pl-mpi-hero-lede,
html body .aztmm-pl-sc-name, html body .aztmm-pl-signal-table td,
html body .aztmm-pl-hmm-intro-col p, html body .aztmm-pl-hmm-intro-col *{
  color:var(--pp-muted) !important; }
html body .aztmm-pl-overview-body strong, html body .aztmm-pl-hmm-intro-col strong,
html body .aztmm-pl-signal-table tbody tr td strong,
html body .aztmm-pl-signal-table tfoot td{ color:var(--pp-ink) !important; }
html body .aztmm-pl-hmm-intro-col h4{ color:var(--pp-acc) !important; }

html body .aztmm-pl-hero-top{
  background:linear-gradient(180deg,var(--pp-card),var(--pp-card2)) !important;
  border:1px solid var(--pp-line) !important; }
html body .aztmm-pl-tab{ color:var(--pp-muted) !important; }
html body .aztmm-pl-tab:hover{ color:var(--pp-ink) !important; }
html body .aztmm-pl-tab.is-active, html body .aztmm-pl-tab[aria-selected="true"]{
  color:var(--pp-ink) !important; border-bottom-color:var(--pp-amber) !important; }
html body .aztmm-pl-tab .aztmm-pl-tab-num{ color:var(--pp-faint) !important; }
html body .aztmm-pl-tab.is-active .aztmm-pl-tab-num,
html body .aztmm-pl-tab[aria-selected="true"] .aztmm-pl-tab-num{ color:var(--pp-amber) !important; }
html body .aztmm-pl-signal-scan{ background:var(--pp-acc) !important; color:#ffffff !important;
  border:0 !important; }
html body .aztmm-dw-chart, html body .aztmm-dw-panel{
  background:var(--pp-card) !important; color:var(--pp-ink) !important;
  border:1px solid var(--pp-line) !important; border-radius:8px !important; }
html body .aztmm-dw-chart-title{ color:var(--pp-ink) !important; }
html body .aztmm-dw-chart-sub{ color:var(--pp-muted) !important; }
html body .aztmm-dw-range{ color:var(--pp-muted) !important;
  border:1px solid var(--pp-line) !important; }
html body .aztmm-dw-range.is-active{ color:var(--pp-acc) !important;
  border-color:var(--pp-acc) !important; }

/* plv2.js writes these hexes as fill/stroke ATTRIBUTES into generated SVG.
   Attribute selectors are a stop-gap; schedule a plv2.js palette update. */
html body .plv2 svg [fill="#e6e9ff"], html body .plv2 svg [fill="#e2e8f0"]{ fill:#16233b !important; }
html body .plv2 svg [fill="#7e84b5"], html body .plv2 svg [fill="#4f547a"],
html body .plv2 svg [fill="#94a3b8"]{ fill:#5f6c80 !important; }
html body .plv2 svg [fill="#22d3ee"], html body .plv2 svg [stroke="#22d3ee"]{ fill:#0a44c8 !important; }
html body .plv2 svg [stroke="#22d3ee"]{ stroke:#0a44c8 !important; }
html body .plv2 svg [stroke="#1e2244"], html body .plv2 svg [stroke="#2a3057"]{ stroke:#d5dae3 !important; }
html body .plv2 svg [fill="#10b981"], html body .plv2 svg [stroke="#10b981"]{ fill:#0f7a58 !important; }
html body .plv2 svg [fill="#fb7185"], html body .plv2 svg [fill="#ef4444"]{ fill:#bf3a1e !important; }
html body .plv2 svg [fill="#f59e0b"]{ fill:#b8860b !important; }
html body .plv2 svg [fill="#a78bfa"]{ fill:#062e8a !important; }


/* ============================================================================
   7. ACADEMY LESSONS  (interim: one look across .tbk and .tbk-wrap)
   Replaces the "UIUX 2026-07-08b tbk dark-theme completion" block.
   ============================================================================ */

html body .tbk-toc, html body .tbk-current{
  background:var(--pp-card) !important; border-color:var(--pp-line) !important;
  color:var(--pp-muted) !important; }
html body .tbk-toc a, html body .tbk-current strong{ color:var(--pp-ink) !important; }
html body .tbk-toc a:hover{ color:var(--pp-acc) !important; }
html body .tbk-toc h4, html body .tbk-bcrumb, html body .tbk-eyebrow{
  color:var(--pp-muted) !important; font-family:var(--pp-mono) !important; }
html body .tbk-bcrumb a{ color:var(--pp-acc) !important; }
html body .tbk-pill{ background:rgba(10,68,200,.06) !important;
  border:1px solid rgba(10,68,200,.28) !important; color:var(--pp-acc) !important; }
html body .tbk-callout{ background:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important; border-left:4px solid var(--pp-amber) !important;
  color:var(--pp-ink) !important; }
html body .tbk-callout a{ color:var(--pp-acc) !important; }
html body .tbk-callout strong{ color:var(--pp-ink) !important; }
html body .tbk-pagenav a{ background:var(--pp-card) !important;
  border-color:var(--pp-line) !important; color:var(--pp-acc) !important; }
html body .tbk-pagenav a:hover{ background:var(--pp-card2) !important; }
html body .tbk-table th, html body .tbk-table thead th{
  background:var(--pp-card2) !important; color:var(--pp-muted) !important; }
html body .tbk-table th, html body .tbk-table td{ border-color:var(--pp-line) !important;
  color:var(--pp-ink) !important; }
html body .tbk-topbar{ background:rgba(255,255,255,0.92) !important;
  border-bottom-color:var(--pp-line) !important; color:var(--pp-muted) !important; }
html body .tbk-progress{ background:var(--pp-line-soft) !important; }
html body .tbk-progress-fill{ background:var(--pp-acc) !important; box-shadow:none !important; }
html body .tbk-main h2, html body .tbk-wrap h2{
  color:var(--pp-ink) !important; border-top:0 !important; padding-top:12px !important;
  position:relative !important; }
html body .tbk-main h2::before, html body .tbk-wrap h2::before{
  content:"" !important; position:absolute; top:0; left:0; height:3px; width:32px;
  background:var(--pp-amber) !important; }
html body .tbk-wrap code{ background:var(--pp-card2) !important; color:var(--pp-acc2) !important;
  border:1px solid var(--pp-line) !important; font-family:var(--pp-mono) !important; }


/* ============================================================================
   8. LEGACY POST COMPATIBILITY  ("dark islands on a Paper page")
   ~100 published editions carry <style id="aztmm-pulse-chrome"> v4.3/v4.4 and
   dark inline SVG. Those posts are never revised. Their chrome loads AFTER this
   sheet, so every rule here is `html body …` + !important.

   VERIFIED 8 Sep 2026 on category_daily-pulse.html + category_weekly-pulse.html:
   legacy figure.dpc SVGs carry NO background rect — the only <rect> elements are
   data bars and legend swatches. Callout text is fill="#e6e9ff" (1.12:1 on the
   Paper ground). Therefore the figure gets a dark panel rather than a recolour.

   Every rule excludes the v5.0 names so a category archive can carry both
   generations. Charts published 8 Sep 2026 onward already draw their own
   #0f1730 card; a #0b1020 frame around them reproduces the terminal theme's
   own SURF/CARD relationship, so one rule serves both legacy generations.
   ============================================================================ */

html body figure.dpc:not(.dpc5){
  background:#0b1020 !important; border:1px solid #1c2742 !important;
  border-radius:10px !important; padding:14px 16px 10px !important;
  max-width:860px !important; margin:22px auto !important;
}
html body figure.dpc:not(.dpc5) figcaption{
  color:#e6e9ff !important; font-family:var(--pp-sans) !important; }
html body figure.dpc:not(.dpc5) > div:not([class]){ color:#8b95b3 !important; }
html body figure.dpc:not(.dpc5) svg{ max-width:100% !important; width:100% !important; }

/* The strip is already self-contained: the publisher emits inline
   `color:#e6e9ff` on the div, `color:#7f8aa8` on the labels and the regime hex
   on each <strong>. So DO NOT restyle its children — a blanket
   `strong{color:#fff}` would flatten the regime colour coding. The only change
   is the drop shadow, which was tuned for a black page. */
html body .dp-strip:not(.dp5-strip){
  color:#e6e9ff !important;                       /* belt-and-braces: some older
                                                     editions may omit the inline colour */
  box-shadow:0 1px 3px rgba(22,35,59,.10) !important;
}

html body .dp-fastread:not(.dp5-fastread){
  background:#0b1020 !important; border:1px solid #1c2742 !important;
  border-left:4px solid #0f7a58 !important;
}
html body .dp-fastread:not(.dp5-fastread) p,
html body .dp-fastread:not(.dp5-fastread) li,
html body .dp-fastread:not(.dp5-fastread) strong{ color:#e6e9ff !important; }

html body .dp-tiles:not(.dp5-tiles) .dp-tile{
  background:#0f1730 !important; border-color:#243049 !important; }

/* dateline and headline join the Paper page rather than staying dark */
html body .dp-dateline:not(.dp5-dateline){ color:var(--pp-muted) !important;
  font-family:var(--pp-mono) !important; }
html body .dp-hed:not(.dp5-hed){ color:var(--pp-ink) !important;
  font-family:var(--pp-sans) !important; font-weight:600 !important; }
html body.single-post h1.entry-title, html body.single-post .entry-title{
  color:var(--pp-ink) !important; font-family:var(--pp-sans) !important; font-weight:600 !important; }
html body.single-post .entry-header .posted-on,
html body.single-post .entry-header .entry-date,
html body.single-post .entry-header time,
html body.single-post .entry-header .entry-meta{ color:var(--pp-muted) !important; }

/* Pulse post headings (WPCode #15) now resolve --az-ink-1 to Paper ink; the
   accent dash was a gold gradient — make it the flat amber rule. */
html body article.category-daily-pulse .entry-content h2::before,
html body article.category-weekly-pulse .entry-content h2::before,
html body .post-template-default.category-daily-pulse .entry-content h2::before,
html body .post-template-default.category-weekly-pulse .entry-content h2::before{
  background:var(--pp-amber) !important; height:3px !important; border-radius:0 !important; }


/* ============================================================================
   9. CHART / SVG RULES  — carried over verbatim from the dark sheet.
   The publisher prompt explicitly depends on the font-size floor:
   "label sizes are designed at 11 units or larger because the site enforces
    svg text {font-size:max(11px,.72rem)}".  DO NOT REMOVE.
   ============================================================================ */

svg text{ font-size:max(11px, 0.72rem); }
svg text[font-size="7"]{ display:none !important; }
/* legacy dim axis fill lifted for contrast on the dark legacy panel */
svg text[fill="#4f547a"], svg [fill="#4f547a"]{ fill:#8b93b8 !important; }
/* Paper figures: never stretch beyond the design width */
html body figure.dpc{ max-width:860px; }


/* ============================================================================
  10. BLOCK EDITOR / THEME SURFACES
   ============================================================================ */

html body .wp-block-button__link, html body .wp-element-button,
html body button, html body input[type="submit"], html body .btn, html body .button{
  background:var(--pp-acc) !important; color:#ffffff !important;
  font-family:var(--pp-sans) !important; font-weight:600 !important;
  letter-spacing:0 !important; text-transform:none !important;
  border:0 !important; border-radius:10px !important; box-shadow:none !important;
}
html body .wp-block-button__link:hover, html body .wp-element-button:hover,
html body button:hover, html body input[type="submit"]:hover{
  background:var(--pp-acc2) !important; box-shadow:none !important; transform:none !important; }
html body .wp-block-button.is-style-outline .wp-block-button__link{
  background:transparent !important; border:1px solid var(--pp-acc) !important;
  color:var(--pp-acc) !important; }

html body .wp-block-group.has-background, html body .wp-block-cover{
  background-color:var(--pp-card) !important; border:1px solid var(--pp-line) !important; }
html body blockquote{ border-left:3px solid var(--pp-amber) !important;
  background:var(--pp-card) !important; color:var(--pp-ink) !important; }
html body code, html body pre{ background:var(--pp-card2) !important;
  color:var(--pp-acc2) !important; border:1px solid var(--pp-line) !important;
  font-family:var(--pp-mono) !important; }
html body hr, html body .wp-block-separator{ border-color:var(--pp-line) !important; }

html body input, html body textarea, html body select{
  background:var(--pp-card) !important; color:var(--pp-ink) !important;
  border:1px solid var(--pp-line) !important; font-family:var(--pp-sans) !important; }
html body ::placeholder{ color:var(--pp-faint) !important; }

/* MailPoet (loads after this sheet) */
html body .mailpoet_form{ background:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important; font-family:var(--pp-sans) !important; }
html body .mailpoet_form .mailpoet_paragraph,
html body .mailpoet_form .mailpoet_form_paragraph{ color:var(--pp-muted) !important; }
html body .mailpoet_form label{ color:var(--pp-ink) !important; }
html body .mailpoet_hp_email_label{ display:none !important;
  position:absolute !important; left:-9999px !important; }

html body ::-webkit-scrollbar-track{ background:var(--pp-card2); }
html body ::-webkit-scrollbar-thumb{ background:var(--pp-line-strong); border-radius:8px; }


/* ============================================================================
  11. CARRIED-OVER FIXES (unchanged behaviour, re-stated once instead of 3×)
   ============================================================================ */

a[href$='/squeeze-watch/'], a[href$='/insider-activity/'],
li.menu-item a[href*='/squeeze-watch'], li.menu-item a[href*='/insider-activity']{ display:none !important; }

.mailpoet_hp_email_label{ display:none !important; position:absolute !important; left:-9999px !important; }
#wpd-post-rating, #wpdiscuz, #comments, .wpd-rating-wrap{ display:none !important; }
.jetpack-likes-widget-wrapper, div[id^="like-post-wrapper"], .sd-like{ display:none !important; }
#jp-relatedposts{ display:none !important; }

@media (max-width: 640px){
  html body .entry-content figure.wp-block-table{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
  html body .entry-content figure.wp-block-table table{ min-width:560px; font-size:.85rem; }
  html body .alv1-table td, html body .alv1-table th{ padding:8px; font-size:.85rem; }
  html body .alv1-table td:first-child, html body .alv1-table th:first-child{
    white-space:nowrap; font-size:.78rem; }
}
@media (max-width: 1080px){
  html body .aztmm-pl-nav-list li a{ padding:11px 12px !important; font-size:13px !important; }
  html body .aztmm-pl-nav-list{ gap:6px !important; }
}
@media (max-width: 782px){
  html body #masthead{ padding-top:44px !important; padding-bottom:14px !important; }
}
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; }
}

/* post readability bridge — kept, retuned to the Paper reading column */
html body.single-post .entry-content{ padding-inline:clamp(16px,4vw,40px) !important; overflow-x:clip; }
html body.single-post .entry-content > *{ max-width:66ch; margin-left:auto; margin-right:auto; }
html body.single-post .entry-content > table,
html body.single-post .entry-content > figure,
html body.single-post .entry-content > .wp-block-table,
html body.single-post .entry-content > .dp-strip,
html body.single-post .entry-content > .dp5-strip,
html body.single-post .entry-content > .wp-block-html{ max-width:min(860px,100%); }
html body.single-post .entry-content > .dp-fastread,
html body.single-post .entry-content > .dp5-fastread{ max-width:66ch; }
html body.single-post .entry-content figure.wp-block-table{ overflow-x:auto; }
html body.single-post .entry-content > table{ display:block; overflow-x:auto; }

/* END AZTMM PAPER v1.0 */

/* ============================================================================
  12. PAPER v1.1 — measured corrections, 9 September 2026
   Every item below was measured on the live site after the v1.0 cutover, and
   each one was confirmed in a screenshot before it was written. Nothing here is
   speculative.

   The mechanism behind 12.1 is worth stating once, because it is not obvious:
   `aztmm-pl-late-overrides` carries `.entry-content div{ color:inherit }` at
   specificity (0,1,1). That OUTRANKS the per-post chrome's own `.dp-tile-h`
   (0,1,0), so every <div> inside a published edition takes its colour by
   inheritance rather than from the chrome. While the page was dark that
   inherited value was the dark page's light ink and nothing showed. On Paper it
   inherits --pp-ink, so light-on-dark components render dark-on-dark. The rules
   below re-assert the chrome's own values at a specificity that wins, scoped so
   they can only ever reach legacy (non-v5) components.
   ============================================================================ */

/* --- 12.1 legacy dark islands: restore the chrome's own text colours -------- */

html body .dp-tiles:not(.dp5-tiles) .dp-tile,
html body .dp-tiles:not(.dp5-tiles) .dp-tile div{
  color:#9aa6c4 !important;                       /* 5.9:1 on the #0f1730 tile */
}
html body .dp-tiles:not(.dp5-tiles) .dp-tile .dp-tile-h{
  color:#e6e9ff !important;                       /* the headline value stays bright */
}

html body .dp-fastread:not(.dp5-fastread) div{ color:#e6e9ff !important; }

html body figure.dpc:not(.dpc5) div{ color:#8b95b3 !important; }
html body figure.dpc:not(.dpc5) figcaption,
html body figure.dpc:not(.dpc5) figcaption div{ color:#e6e9ff !important; }

html body .dp-strip:not(.dp5-strip) div{ color:#e6e9ff !important; }


/* --- 12.2 share bar (post chrome, sits on the Paper ground) ----------------- */

html body .az-share2 button{
  color:var(--pp-muted) !important;
  border-color:var(--pp-line) !important;
  background:var(--pp-card) !important;
}
html body .az-share2 button:hover{ color:var(--pp-ink) !important;
  background:var(--pp-card2) !important; }
html body .az-share2 a{ border-color:var(--pp-line) !important;
  background:var(--pp-card) !important; }
html body .az-share2-lbl{ color:var(--pp-muted) !important; }


/* --- 12.3 read-time chip (translucent #0f172a, invisible on Paper) ---------- */

html body .az-readtime-chip{
  background:var(--pp-card2) !important;
  border:1px solid var(--pp-line) !important;
}
html body .az-readtime-text{ color:var(--pp-muted) !important; }
html body .az-readtime-n{ color:var(--pp-acc) !important; }
html body .az-readtime-chip svg{ color:var(--pp-muted) !important; }


/* --- 12.4 academy hub: four full-bleed bands paint a translucent dark
       overlay over the Paper ground and read as mid-grey ---------------------- */

html body .tac-hero{
  background:none !important; background-color:transparent !important;
}
html body .tac-toc, html body .tac-modindex, html body .tac-foot{
  background:var(--pp-card) !important;
  border-top:1px solid var(--pp-line) !important;
}


/* --- 12.5 methodology hero (dark radial + cyan hairline) -------------------- */

html body .meth-pg .meth-hero{
  background:var(--pp-card) !important;
  border-color:var(--pp-line) !important;
}
html body .meth-pg .meth-hero::after{
  background:var(--pp-line) !important; opacity:1 !important;
}
html body .meth-pg .meth-hero span{
  background:var(--pp-card2) !important; border-color:var(--pp-line) !important;
}


/* --- 12.6 the 404 template: a self-contained --az-* scope, same shape as the
       page wrappers in section 4 ----------------------------------------------- */

html body .az-404{
  --az-bg:var(--pp-surface); --az-card:var(--pp-card); --az-card-elev:var(--pp-card2);
  --az-line:var(--pp-line);  --az-line-soft:var(--pp-line-soft); --az-line-bright:var(--pp-line-strong);
  --az-ink:var(--pp-ink);    --az-ink-mid:var(--pp-muted); --az-ink-dim:var(--pp-faint);
  --az-cyan:var(--pp-acc);   --az-cyan-dark:var(--pp-acc2); --az-violet:var(--pp-acc2);
  --az-mono:var(--pp-mono);  --az-disp:var(--pp-sans);
  background:var(--pp-surface) !important;
  background-image:none !important;
  color:var(--pp-ink) !important;
}
html body .az-404::before{ display:none !important; content:none !important; }
html body .az-404 .links a{ background:var(--pp-card) !important;
  border-color:var(--pp-line) !important; color:var(--pp-acc) !important; }
html body .az-404 .links a:hover{ border-color:var(--pp-acc) !important; }


/* --- 12.7 module landing pages (/trading-academy/module-XX-…/)
       The page carries no classes at all below its root: every colour is an
       inline style attribute, and the root declares its own token block inline.
       Both are beaten with !important; the descendants need attribute selectors,
       exactly as in section 4. All of it is scoped to .aztmm-module-landing, so
       it can never reach a published edition. ------------------------------------ */

html body .aztmm-module-landing{
  --bg:var(--pp-surface); --panel:var(--pp-card); --ink:var(--pp-ink); --mute:var(--pp-muted);
  --cyan:var(--pp-acc); --violet:var(--pp-acc2); --amber:var(--pp-warnt);
  --green:var(--pp-good); --border:var(--pp-line);
  background:var(--pp-surface) !important;
  color:var(--pp-ink) !important;
}
html body .aztmm-module-landing [style*="background:#0d1028"],
html body .aztmm-module-landing [style*="background: #0d1028"]{
  background:var(--pp-card) !important; border-color:var(--pp-line) !important; }
html body .aztmm-module-landing [style*="color:#e6e9ff"],
html body .aztmm-module-landing [style*="color: #e6e9ff"]{ color:var(--pp-ink) !important; }
html body .aztmm-module-landing [style*="color:#9aa0c7"],
html body .aztmm-module-landing [style*="color: #9aa0c7"]{ color:var(--pp-muted) !important; }
html body .aztmm-module-landing [style*="color:#22d3ee"],
html body .aztmm-module-landing [style*="color: #22d3ee"]{ color:var(--pp-acc) !important; }
html body .aztmm-module-landing [style*="color:#10b981"],
html body .aztmm-module-landing [style*="color: #10b981"]{ color:var(--pp-good) !important; }
html body .aztmm-module-landing [style*="color:#a78bfa"],
html body .aztmm-module-landing [style*="color: #a78bfa"]{ color:var(--pp-acc2) !important; }
html body .aztmm-module-landing [style*="color:#f59e0b"],
html body .aztmm-module-landing [style*="color: #f59e0b"]{ color:var(--pp-warnt) !important; }
html body .aztmm-module-landing [style*="rgba(16,185,129,.15)"]{
  background:rgba(15,122,88,.10) !important; }
html body .aztmm-module-landing [style*="rgba(167,139,250,.18)"]{
  border-color:var(--pp-line) !important; }


/* --- 12.8 home-page sparkline: the generated SVG still carries the terminal
       cyan -> violet ramp, which measures 1.9:1 on white --------------------- */

html body linearGradient[id^="azspark"] stop[stop-color="#22d3ee"]{ stop-color:#0a44c8 !important; }
html body linearGradient[id^="azspark"] stop[stop-color="#a78bfa"]{ stop-color:#062e8a !important; }
html body .hm-tk svg [fill="#22d3ee"], html body .hm-tk svg [stroke="#22d3ee"]{ fill:#0a44c8 !important; }
html body .hm6 svg [fill="#22d3ee"]{ fill:#0a44c8 !important; }

/* END AZTMM PAPER v1.1 */


/* ============================================================================
  13. PAPER v1.2 — three more dark panels found by walking the rest of the site
   Each one is a page-content block that paints itself dark and takes its text
   colour by inheritance, so on Paper it renders ink-on-ink. Same shape as 12.1,
   different owners. All three were confirmed in a screenshot first.
   ============================================================================ */

/* /start-here/ — five .sh-pg .card blocks at #111525 with Paper ink inside. This
   is the onboarding page, so it is the worst of the three. */
html body .sh-pg .card{
  background:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important;
  color:var(--pp-ink) !important;
}
html body .sh-pg .card h3{ color:var(--pp-ink) !important; }

/* academy lessons — .tbk-formula at #0d1028; one per lesson that carries a formula */
html body .tbk-formula{
  background:var(--pp-card2) !important;
  border:1px solid var(--pp-line) !important;
  color:var(--pp-ink) !important;
}

/* /about-aztmm/ — a translucent rgba(0,0,0,.2) panel that reads as grey on Paper */
html body .tbk-author-panel{
  background:var(--pp-card) !important;
  border-color:var(--pp-line) !important;
}
html body .tbk-author-card{
  background:var(--pp-card2) !important;
  border-color:var(--pp-line) !important;
}
html body .tbk-author-role{ color:var(--pp-muted) !important; }

/* END AZTMM PAPER v1.2 */


/* ============================================================================
  14. PAPER v1.3 — text that sets its own colour inside a Paper wrapper
   Section 4 re-points each page wrapper's tokens and sets the wrapper's own
   colour, but a descendant that declares `color` on itself beats inheritance,
   so those elements kept their dark-theme values. Everything below was found by
   walking the live pages, measuring the effective contrast, and confirming each
   one in a screenshot. Ratios are against the surface each element sits on.
   ============================================================================ */

/* --- 14.1 the home page's latest-edition card ------------------------------
   Built entirely from inline styles inside .hm6. Measured on Paper: the
   headline "Read today's read" was #fff (invisible), the summary #bcc4cf at
   1.64:1, the dateline #22d3ee at 1.68:1, the MPI value #94a3b8 at 2.39:1.
   This is the home page's main call to action, so it is the worst of the set.

   The regime word carried #c9a961 — gold, which the house rule reserves away
   from regime entirely (green Bull / yellow Neutral / red Crisis). Painting it
   green from CSS would assert a regime this sheet cannot verify, so it is set
   in plain ink: the word itself carries the meaning, exactly as the OI verdict
   cells do. The right fix is a content edit to the home block. */
html body .hm6 [style*="color:#fff"], html body .hm6 [style*="color: #fff"],
html body .hm6 [style*="color:#e6e9ff"], html body .hm6 [style*="color: #e6e9ff"]{
  color:var(--pp-ink) !important; }
html body .hm6 [style*="color:#bcc4cf"], html body .hm6 [style*="color:#94a3b8"]{
  color:var(--pp-muted) !important; }
html body .hm6 [style*="color:#22d3ee"], html body .hm6 [style*="color: #22d3ee"]{
  color:var(--pp-acc) !important; }
html body .hm6 [style*="color:#c9a961"], html body .hm6 [style*="color:#c89a4a"]{
  color:var(--pp-ink) !important; }
html body .hm6 a[style*="rgba(34,211,238,0.04)"]{
  background:var(--pp-card) !important; border-color:var(--pp-line) !important; }

/* --- 14.2 /start-here/ -----------------------------------------------------
   Measured: .sh-pg strong 1.13:1, .lede 2.06:1, .steps li 2.06:1,
   .disclaim 2.27:1 — 24 failing elements on the onboarding page. */
html body .sh-pg strong{ color:var(--pp-ink) !important; }
html body .sh-pg .lede,
html body .sh-pg .steps li,
html body .sh-pg .disclaim{ color:var(--pp-muted) !important; }

/* --- 14.3 /about-aztmm/ — the two panel labels at 1.07:1 ------------------- */
html body .tbk-author-philosophy strong,
html body .tbk-author-contact strong{ color:var(--pp-ink) !important; }

/* END AZTMM PAPER v1.3 */


/* ============================================================================
  15. PAPER v1.4 — legacy editions converted to Paper (owner decision, 9 Sep)
   The dark-island strategy is retired. Every published Daily and Weekly Pulse
   now renders in the Paper palette, from the stylesheet alone: no post is
   revised, so the research record is untouched and all ~100 editions change at
   once.

   Two facts make this safe, and both were measured rather than assumed:
     1. The legacy component palette is a CLOSED SET. Across the archive the
        strip and fast read use exactly six inline values (#e6e9ff, #7f8aa8,
        #10b981, #fbbf24, #fb7185, background #0b1020) with no drift.
     2. The legacy chart palette is a closed set of sixteen hexes across both
        generations (A, pre-8 Sep, no background rect; B, 8 Sep, its own
        #0f1730 card). Every one is emitted as a fill/stroke/stop-color
        ATTRIBUTE, so an attribute selector reaches all of them.
   Targets are gen2's own "paper" theme, so a converted 2026 edition and a
   freshly published one carry the same colours.
   ============================================================================ */

/* --- 15.1 the pinned first column, which is why mobile looked broken --------
   A WPCode mobile snippet pins column one with `background: rgba(17,17,24,.95)`
   at (0,1,2) !important. Paper turned the text to ink and left that black
   block behind it, so every ticker and row label in every edition went
   invisible on a phone. This is the single worst defect of the cutover. */
html body .entry-content table td:first-child{
  background:var(--pp-card) !important; color:var(--pp-ink) !important; }
html body .entry-content table th:first-child{
  background:var(--pp-card2) !important; color:var(--pp-muted) !important; }
html body .alv1-tablewrap .alv1-table td:first-child{
  background:var(--pp-card) !important; box-shadow:1px 0 0 var(--pp-line) !important; }
html body .alv1-tablewrap .alv1-table th:first-child{
  background:var(--pp-card2) !important; box-shadow:1px 0 0 var(--pp-line) !important; }

/* --- 15.2 the desk strip ---------------------------------------------------
   Overrides sections 8 and 12.1, which held it dark. The regime and signed
   values keep their family coding at Paper-legible values. */
html body .dp-strip:not(.dp5-strip){
  background:var(--pp-card) !important; background-image:none !important;
  border:1px solid var(--pp-line) !important;
  color:var(--pp-ink) !important; box-shadow:none !important; }
html body .dp-strip:not(.dp5-strip)::before{ background:var(--pp-amber) !important; }
html body .dp-strip:not(.dp5-strip) div,
html body .dp-strip:not(.dp5-strip) span,
html body .dp-strip:not(.dp5-strip) strong{ color:var(--pp-ink) !important; }
html body .dp-strip:not(.dp5-strip) [style*="color:#7f8aa8"],
html body .dp-strip:not(.dp5-strip) [style*="color:#94a3b8"]{ color:var(--pp-muted) !important; }
html body .dp-strip:not(.dp5-strip) [style*="color:#10b981"]{ color:#0f7a58 !important; }
html body .dp-strip:not(.dp5-strip) [style*="color:#fbbf24"],
html body .dp-strip:not(.dp5-strip) [style*="color:#f59e0b"]{ color:#8a6508 !important; }
html body .dp-strip:not(.dp5-strip) [style*="color:#fb7185"],
html body .dp-strip:not(.dp5-strip) [style*="color:#ef4444"]{ color:#bf3a1e !important; }

/* --- 15.3 the fast read ---------------------------------------------------- */
html body .dp-fastread:not(.dp5-fastread){
  background:var(--pp-card) !important; border:1px solid var(--pp-line) !important;
  border-left:4px solid #0f7a58 !important; color:var(--pp-ink) !important; }
html body .dp-fastread:not(.dp5-fastread) p,
html body .dp-fastread:not(.dp5-fastread) li,
html body .dp-fastread:not(.dp5-fastread) strong,
html body .dp-fastread:not(.dp5-fastread) div{ color:var(--pp-ink) !important; }

/* --- 15.4 the tile row ----------------------------------------------------- */
html body .dp-tiles:not(.dp5-tiles) .dp-tile{
  background:linear-gradient(180deg,var(--pp-card),var(--pp-card2)) !important;
  border-color:var(--pp-line) !important;
  border-left-color:var(--pp-acc) !important; }
html body .dp-tiles:not(.dp5-tiles) .dp-tile,
html body .dp-tiles:not(.dp5-tiles) .dp-tile div{ color:var(--pp-muted) !important; }
html body .dp-tiles:not(.dp5-tiles) .dp-tile .dp-tile-h{ color:var(--pp-ink) !important; }

/* --- 15.5 the figure frame -------------------------------------------------
   Generation A (pre-8 Sep) draws no card of its own, so the figure element
   supplies one. Generation B already draws a #0f1730 rect that 15.6 turns
   white, so it takes no frame or the two would nest. */
html body figure.dpc:not(.dpc5){
  background:var(--pp-card) !important; border:1px solid var(--pp-line) !important;
  border-radius:10px !important; padding:14px 16px 10px !important;
  max-width:860px !important; margin:22px auto !important; }
html body figure.dpc:not(.dpc5):has(svg rect[fill="#0f1730"]){
  background:none !important; border:0 !important; padding:0 !important; }
html body figure.dpc:not(.dpc5) figcaption,
html body figure.dpc:not(.dpc5) figcaption div{
  color:var(--pp-ink) !important; font-family:var(--pp-sans) !important; }
html body figure.dpc:not(.dpc5) div,
html body figure.dpc:not(.dpc5) > div:not([class]){ color:var(--pp-muted) !important; }

/* --- 15.6 the figure palette ----------------------------------------------
   Ink, muted and faint. */
html body figure.dpc:not(.dpc5) svg [fill="#e6e9ff"],
html body figure.dpc:not(.dpc5) svg [fill="#eaf2ff"]{ fill:#16233b !important; }
html body figure.dpc:not(.dpc5) svg [fill="#7f8aa8"],
html body figure.dpc:not(.dpc5) svg [fill="#8b95b3"],
html body figure.dpc:not(.dpc5) svg [fill="#4f547a"]{ fill:#47586f !important; }
html body figure.dpc:not(.dpc5) svg [fill="#5a6480"]{ fill:#6b7a91 !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#5a6480"]{ stroke:#6b7a91 !important; }
/*   Surfaces: the card, the outer ground, and the halo ring that separates a
     marker or a label from the line behind it. All become the card colour. */
html body figure.dpc:not(.dpc5) svg [fill="#0f1730"],
html body figure.dpc:not(.dpc5) svg [fill="#0b1020"],
html body figure.dpc:not(.dpc5) svg [fill="#06121e"]{ fill:#ffffff !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#0b1020"]{ stroke:#ffffff !important; }
/*   Rules and gridlines. */
html body figure.dpc:not(.dpc5) svg [stroke="#243049"],
html body figure.dpc:not(.dpc5) svg [stroke="#1c2742"],
html body figure.dpc:not(.dpc5) svg [stroke="#2a3057"]{ stroke:#d5dae3 !important; }
/*   Series, mapped onto gen2's own paper values so a converted edition and a
     newly published one carry the same colours. */
html body figure.dpc:not(.dpc5) svg [fill="#1baf7a"]{ fill:#12805c !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#1baf7a"]{ stroke:#12805c !important; }
html body figure.dpc:not(.dpc5) svg stop[stop-color="#1baf7a"]{ stop-color:#12805c !important; }
html body figure.dpc:not(.dpc5) svg [fill="#d95926"]{ fill:#bf3a1e !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#d95926"]{ stroke:#bf3a1e !important; }
html body figure.dpc:not(.dpc5) svg stop[stop-color="#d95926"]{ stop-color:#bf3a1e !important; }
html body figure.dpc:not(.dpc5) svg [fill="#fab219"]{ fill:#b8860b !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#fab219"]{ stroke:#b8860b !important; }
html body figure.dpc:not(.dpc5) svg [fill="#8ec5ff"]{ fill:#0a44c8 !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#8ec5ff"]{ stroke:#0a44c8 !important; }
html body figure.dpc:not(.dpc5) svg [fill="#2a6ab4"]{ fill:#062e8a !important; }
html body figure.dpc:not(.dpc5) svg [stroke="#2a6ab4"]{ stroke:#062e8a !important; }
/*   Text that sits ON a filled bar or pill. The legacy generator wrote one dark
     value for all of them because every legacy series colour was bright. The
     Paper series are darker, so a label on one takes white — except on amber,
     which stays light enough to need ink. The DEFAULT is ink, so a label that
     sits on the card rather than on a shape can never go white-on-white; the
     `rect + text` rules then name every dark bar explicitly. That combinator is
     exact: the generator emits each label immediately after the shape it
     labels. The `:not([width="10"])` guard is load-bearing: a legend entry is
     also a rect followed by a text, but its swatch is always 10x10 and its
     label sits on the CARD, not on the swatch. Without the guard every legend
     label rendered white on white. */
html body figure.dpc:not(.dpc5) svg text[fill="#06121e"],
html body figure.dpc:not(.dpc5) svg text[fill="#0b1020"],
html body figure.dpc:not(.dpc5) svg text[fill="#e6e9ff"]{ fill:#16233b !important; }
html body figure.dpc:not(.dpc5) svg rect[fill="#1baf7a"]:not([width="10"]) + text,
html body figure.dpc:not(.dpc5) svg rect[fill="#d95926"]:not([width="10"]) + text,
html body figure.dpc:not(.dpc5) svg rect[fill="#2a6ab4"]:not([width="10"]) + text,
html body figure.dpc:not(.dpc5) svg rect[fill="#8ec5ff"]:not([width="10"]) + text{ fill:#ffffff !important; }
html body figure.dpc:not(.dpc5) svg rect[fill="#fab219"]:not([width="10"]) + text{ fill:#16233b !important; }
/*   Section 9 lifted this dim axis fill for the dark panel it no longer has. */
html body figure.dpc:not(.dpc5) svg text[fill="#4f547a"]{ fill:#47586f !important; }


/* ============================================================================
  16. PAPER v1.6 — the pages that were NOT audited before v1.5 shipped
   v1.1–v1.5 were verified against the Daily and Weekly Pulse editions and the
   category archives, and those are correct. They were never swept across the
   twenty non-edition pages. A full offline sweep of all twenty against the live
   v1.5 sheet returned 254 failing elements in 35 distinct rules. Every fix
   below was measured on that sweep and confirmed in a screenshot; nothing here
   is speculative.

   Four root causes account for almost all of it:
     1. `html body a{ color:var(--pp-acc) !important }` (section 2) overrides a
        filled button's OWN text colour. The worst case is cobalt-on-cobalt at
        1.0:1 — the primary call to action on three pages was invisible.
     2. `.azt-pulse`, the published Weekly Pulse body component, is entirely
        token-driven and was never added to the remap list, so a whole archive
        page rendered in near-white text on white.
     3. `.meth-pg` hard-codes `#ffffff` on six selectors that section 12.5
        did not reach.
     4. `/contact/` is one self-contained inline-styled block written for the
        dark theme, so every line of it is light-on-light.
   ============================================================================ */

/* --- 16.1 a filled link keeps its own text colour --------------------------
   Section 2 has to force the accent on links because the legacy sheets set a
   dozen different link colours. The cost is that any anchor styled as a filled
   button loses the white it declared for itself. These re-assert it. The glow
   is a leftover dark-theme box-shadow that reads as a smudge on Paper. */
html body a.primary,
html body a.azt-arch-link.primary,
html body .azt-arch-link.primary,
html body a.hm-sub-cta,
html body a.aztmm-btt{
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff !important;
}
html body a.primary, html body .azt-arch-link.primary{
  box-shadow:none !important; filter:none !important; }
/*   Back-to-top still carried the terminal teal, which is off-palette and only
     4.11:1 under the forced accent. Cobalt with white is 7.85:1. */
html body .aztmm-btt{
  background:var(--pp-acc) !important; background-image:none !important;
  border-color:var(--pp-acc) !important; box-shadow:none !important; }
html body .aztmm-btt:hover{ background:var(--pp-acc2) !important; }
/*   The appendix button's gradient reads var(--accent) to var(--info); once
     16.2 and 16.4 remap those it runs #8a6508 to #0a44c8, so it takes white
     (5.32:1 at the amber end, 7.85:1 at the cobalt end). Ink was measured at
     2.95:1 against the amber end and rejected. */
html body .azt-pulse .appendix-cta a{
  color:#ffffff !important; -webkit-text-fill-color:#ffffff !important; }
html body .azt-arch-ed-meta .new{ color:#ffffff !important; }

/* --- 16.2 amber is a fill value, not a text value --------------------------
   `--amber` resolved to --pp-warn #b8860b, which is 3.25:1 on white. Every use
   of it as TEXT therefore failed. The measured split across all twenty pages is
   seven text uses and three fills, and none of the three fills carries text
   that is not already being set to white here, so the token moves to the
   text-grade value and the fills simply deepen. */
html body .hm6, html body .rs7, html body .tac, html body .tbk, html body .tbk-wrap,
html body .plv2, html body .alv1, html body .sb6, html body .ab6,
html body .meth-pg{ --amber:var(--pp-warnt); }

/* --- 16.3 the methodology page's hard-coded white --------------------------
   Section 12.5 repainted the hero. These six selectors are the body copy, and
   every one of them was #ffffff on #ffffff. */
html body .meth-pg strong,
html body .meth-pg ul li strong,
html body .meth-pg .stat .v,
html body .meth-pg .meth-archive .arc-t,
html body .meth-pg .meth-roadmap strong{ color:var(--pp-ink) !important; }
/*   The h1 paints white-to-grey through background-clip:text. */
html body .meth-pg h1{
  background-image:none !important; background-color:transparent !important;
  -webkit-text-fill-color:var(--pp-ink) !important; color:var(--pp-ink) !important; }
html body .meth-pg .callout strong{ color:var(--pp-acc2) !important; }
html body .meth-pg .disclose strong{ color:var(--pp-crit) !important; }

/* --- 16.4 .azt-pulse: the published Weekly Pulse body ----------------------
   A complete token vocabulary of its own, mapped here for the first time. The
   regime family rule is preserved exactly: --bull to the Paper green, --bear to
   the Paper red, the amber accent to the text-grade amber. */
html body .azt-pulse{
  --bg:var(--pp-surface); --surface:var(--pp-card); --surface-2:var(--pp-card2);
  --border:var(--pp-line); --border-strong:var(--pp-line-strong);
  --text:var(--pp-ink); --text-soft:var(--pp-muted);
  --text-mute:var(--pp-faint); --text-faint:var(--pp-faint);
  --bull:var(--pp-good); --bear:var(--pp-crit); --info:var(--pp-acc);
  --accent:var(--pp-warnt); --accent-2:var(--pp-acc2);
  --brand:var(--pp-warnt); --amber:var(--pp-warnt);
  color:var(--pp-ink) !important;
}
/*   Three surfaces inside it are painted dark directly rather than through a
     token, so they need naming. */
html body .azt-pulse .hero{
  background-image:none !important; background-color:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important; }
html body .azt-pulse .tbl th{
  background-color:var(--pp-card2) !important; background-image:none !important; }
html body .azt-pulse .regime-bar{
  background-color:var(--pp-card) !important; background-image:none !important;
  border-bottom:1px solid var(--pp-line) !important; }
html body .azt-pulse .method,
html body .azt-pulse .stat,
html body .azt-pulse .terms-grid .term{ background-color:var(--pp-card2) !important; }

/* --- 16.5 the 404 template's remaining hard-coded ink ---------------------- */
html body .az-404 .foot,
html body .az-404 .links a small{ color:var(--pp-muted) !important; }

/* --- 16.6 the live badge was 4.35:1, just under AA ------------------------- */
html body .tac-badge.live{ background:#e8f5f2 !important; color:var(--pp-good) !important; }

/* --- 16.7 inline colours written for the dark theme ------------------------
   /contact/ is one self-contained block of inline styles, and a handful of
   published editions carry the same values in paragraphs outside the strip.
   Published posts are never revised, so this is done from the stylesheet.
   The mapping preserves the family rule everywhere it applies:
     #34d399 green  -> Bull family    -> --pp-good
     #fbbf24 yellow -> Neutral family -> --pp-warnt
     #fb7185 red    -> Crisis family  -> --pp-crit
   The v5 Paper editions already emit Paper values inline, so none of these
   selectors can match a post published after the cutover. */
html body .entry-content [style*="color:#e2e8f0"],
html body .entry-content [style*="color: #e2e8f0"],
html body .entry-content [style*="color:#f1f5f9"],
html body .entry-content [style*="color: #f1f5f9"]{ color:var(--pp-ink) !important; }
html body .entry-content [style*="color:#cbd5e1"],
html body .entry-content [style*="color: #cbd5e1"],
html body .entry-content [style*="color:#94a3b8"],
html body .entry-content [style*="color: #94a3b8"],
html body .entry-content [style*="color:#64748b"],
html body .entry-content [style*="color: #64748b"]{ color:var(--pp-muted) !important; }
html body .entry-content [style*="color:#34d399"],
html body .entry-content [style*="color: #34d399"],
html body .entry-content [style*="color:#10b981"],
html body .entry-content [style*="color: #10b981"]{ color:var(--pp-good) !important; }
/*   The old terminal accent, still inline on the one published email address. */
html body .entry-content [style*="color:#00d4aa"],
html body .entry-content [style*="color: #00d4aa"],
html body .entry-content [style*="color:#2ed4b2"],
html body .entry-content [style*="color: #2ed4b2"]{ color:var(--pp-acc) !important; }
html body .entry-content [style*="color:#fbbf24"],
html body .entry-content [style*="color: #fbbf24"],
html body .entry-content [style*="color:#f59e0b"],
html body .entry-content [style*="color: #f59e0b"]{ color:var(--pp-warnt) !important; }
html body .entry-content [style*="color:#fb7185"],
html body .entry-content [style*="color: #fb7185"]{ color:var(--pp-crit) !important; }
/*   The one anchor on /contact/ that carries its own amber. */
html body .entry-content a[style*="color:#fbbf24"],
html body .entry-content a[style*="color: #fbbf24"]{ color:var(--pp-acc) !important; }

/*   One inline dark box survives, on /contact/: a classless div that hard-codes
     background:#0a0e1a. 16.7 turns its text to ink, so the box itself has to
     become paper or the fix would make it worse, not better. The :not([class])
     guard keeps this away from every classed component. */
html body .entry-content [style*="background:#0a0e1a"]:not([class]),
html body .entry-content [style*="background: #0a0e1a"]:not([class]){
  background:var(--pp-card2) !important;
  border-color:var(--pp-line) !important; }

/* --- 16.8 the wpDiscuz notification bubble --------------------------------
   A floating #1DB99A bubble the comment plugin shows when a reply lands. Its
   own text is dark; section 2's forced accent turned the Reply link cobalt on
   teal (3.16:1). Ink measures 6.32:1 against that teal, and the bubble is the
   plugin's own chrome, so the fill stays as the plugin ships it. */
html body #wpd-bubble-notification,
html body #wpd-bubble-notification a,
html body #wpd-bubble-comment-reply-link a{
  color:var(--pp-ink) !important; -webkit-text-fill-color:var(--pp-ink) !important; }

/* END AZTMM PAPER v1.6 */


/* ============================================================================
  17. PAPER v1.7 — the v5.0 desk strip had no card at all
   Reported by the owner on the first Paper edition: the dateline and the strip
   sat naked on the page ground while everything below them — tiles, figures,
   tables — is carded, so the top of the edition read as unstructured. Measured:
   `.dp5-strip` computed `display:block`, background `rgba(0,0,0,0)`, border 0,
   padding 0, radius 0. The v5.0 chrome never styled it. Its fourteen children
   are all bare inline spans and strongs at 16px, including the source note,
   which therefore ran straight on from "+6.7%" with nothing separating it.

   The wrap fault behind it, measured at six widths before and after: with flat
   inline markup a line can break at the space BETWEEN a label and its value.
   At 360px it broke "SPY / 762.40" and at 560px "QQQ / 716.31" — the label
   stranded at the end of one line, its number starting the next.

   Below 880px each label therefore forces its own line break, so a label always
   STARTS a line and its value sits beside it: five clean key-value rows on a
   phone, zero orphans at 360 / 430 / 560 / 700. Above 880 it stays one row.
   The proper fix is markup — the publisher should wrap each pair in a
   `.dp5-kv` span so the group is atomic — and that goes in the PAPER MARKUP
   CONTRACT. This rule keeps working either way.
   ============================================================================ */

html body .dp5-dateline{ margin-bottom:14px !important; }

html body .dp5-strip{
  display:block !important;
  background:var(--pp-card) !important;
  border:1px solid var(--pp-line) !important;
  border-left:3px solid var(--pp-amber) !important;
  border-radius:10px !important;
  padding:14px 18px 13px !important;
  margin:0 0 26px !important;
  line-height:2.0 !important;
}
html body .dp5-strip > span{ margin-left:22px !important; }
html body .dp5-strip > span:first-child{ margin-left:0 !important; }
html body .dp5-strip > strong{ white-space:nowrap !important; }
/*   the trailing source note is a 12px span; give it its own line */
html body .dp5-strip > span:last-child{
  display:block !important; margin:9px 0 0 !important;
  color:var(--pp-faint) !important; line-height:1.55 !important;
}

@media (max-width:880px){
  html body .dp5-strip > span:not(:first-child):not(:last-child)::before{
    content:"\A"; white-space:pre;
  }
  html body .dp5-strip > span{ margin-left:0 !important; }
  html body .dp5-strip{ line-height:1.85 !important; }
}

/* END AZTMM PAPER v1.7 */
