/* jw-design.css — the jwatte.com design layer (2026-10-23).
 *
 * One stylesheet, loaded last on every page (the base layout and every tool page), that redefines the existing token
 * names and overrides the components that hard-code colours. Removing its <link> reverts the site.
 *
 * The rules come from our own articles. /blog/design-craft-beyond-github-style-repos/: headings at a light weight with
 * tight leading over open body leading; an off-white ground and charcoal ink instead of #fff and #000; one accent in
 * three shades, with the text shade and the fill shade kept apart; three easing curves; hover gated on a fine pointer;
 * a reduced-motion switch. /blog/retrofitting-design-system-what-broke/: redefine tokens before touching components,
 * out-rank the inline theme blocks once instead of page by page, measure contrast in each theme.
 * /blog/audit-website-craft-emil-kowalski-skills/: press feedback, named transitions, tabular numbers.
 *
 * Deliberately not the recipe that reads as Claude's own site (ivory paper, a serif headline over a sans body, a clay
 * accent; measured in the 2026-10-23 apprised.news audit): the ground is a cool grey, headings use a grotesque, and the
 * accent is brass, the site's existing gold muted to a shade that passes contrast as text.
 *
 * Specificity: tool pages declare tokens on `:root,html[data-theme="dark"]` (0,1,1) in an inline <style>; the token
 * blocks here use `:root[data-theme]` (0,2,0). Component overrides are prefixed with `html:root body`, which out-ranks
 * the inline `html[data-theme="light"] .x` copies (0,2,1) even when those load later in the body, without !important.
 */

@font-face { font-family: "Bricolage Grotesque"; src: url(/css/fonts/bricolage-grotesque-latin-300-400.woff2) format("woff2"); font-weight: 300 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Public Sans"; src: url(/css/fonts/public-sans-latin-var.woff2) format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }

/* ── Tokens ────────────────────────────────────────────────────────────────────────────────────────────── */
:root:not([data-theme="light"]), :root[data-theme="dark"] {
  --jw-paper: #111417; --jw-paper-2: #0c0f11; --jw-paper-3: #22282d; --jw-card: #181c20;
  --jw-rule: #2b3238; --jw-rule-strong: #646f78;
  --jw-ink: #e8ebed; --jw-ink-2: #c5ccd1; --jw-muted: #a0a9b0;
  --jw-accent: #d9b45a; --jw-accent-fill: #c9a54e; --jw-on-accent: #111417; --jw-accent-wash: rgba(217,180,90,.12);
  --jw-ink-fill: #e8ebed; --jw-ink-fill-hover: #ffffff; --jw-on-ink: #111417;
  --jw-ok: #4cc38a; --jw-bad: #f0735f; --jw-warn: #e3a14f; --jw-info: #7fa9ef; --jw-violet: #b9a5f2;
  --jw-ok-bg: rgba(76,195,138,.14); --jw-bad-bg: rgba(240,115,95,.13); --jw-warn-bg: rgba(227,161,79,.14); --jw-info-bg: rgba(127,169,239,.13);
  --jw-code-bg: #0b0d0f; --jw-code-ink: #dfe3e6; --jw-shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.28);
  color-scheme: dark;
}
:root[data-theme="light"] {
  --jw-paper: #f3f5f6; --jw-paper-2: #e9edef; --jw-paper-3: #dde3e6; --jw-card: #fbfcfc;
  --jw-rule: #d3dade; --jw-rule-strong: #7d878e;
  --jw-ink: #15191c; --jw-ink-2: #384046; --jw-muted: #525c62;
  --jw-accent: #7a5c12; --jw-accent-fill: #c9a54e; --jw-on-accent: #15191c; --jw-accent-wash: rgba(201,165,78,.16);
  --jw-ink-fill: #15191c; --jw-ink-fill-hover: #2e363c; --jw-on-ink: #f3f5f6;
  --jw-ok: #1d6b46; --jw-bad: #a8321f; --jw-warn: #8f4f06; --jw-info: #2b5a9e; --jw-violet: #5b3fa0;
  --jw-ok-bg: rgba(29,107,70,.08); --jw-bad-bg: rgba(168,50,31,.07); --jw-warn-bg: rgba(143,79,6,.05); --jw-info-bg: rgba(43,90,158,.07);
  --jw-code-bg: #101315; --jw-code-ink: #dfe3e6; --jw-shadow: 0 1px 2px rgba(21,25,28,.06), 0 8px 24px rgba(21,25,28,.07);
  color-scheme: light;
}
:root {
  --jw-font-display: "Bricolage Grotesque", "Public Sans", system-ui, sans-serif;
  --jw-font-text: "Public Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --jw-font-mono: ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;
  --jw-ease: cubic-bezier(.645,.045,.355,1); --jw-ease-out: cubic-bezier(.23,1,.32,1); --jw-ease-strong: cubic-bezier(.835,0,.19,1);
  --jw-fast: .2s; --jw-base: .3s;
  --jw-radius: 6px;
}

/* Tool-page token names (tool-shell.css and the inline copy in each tool page). */
:root:not([data-theme="light"]), :root[data-theme] {
  --bg: var(--jw-paper); --bg2: var(--jw-paper-2); --bg3: var(--jw-paper-3); --card: var(--jw-card);
  --border: var(--jw-rule); --text: var(--jw-ink); --text-light: var(--jw-muted);
  --gold: var(--jw-accent); --amber: var(--jw-warn); --green: var(--jw-ok); --red: var(--jw-bad); --blue: var(--jw-info); --purple: var(--jw-violet);
  --green-bg: var(--jw-ok-bg); --red-bg: var(--jw-bad-bg); --amber-bg: var(--jw-warn-bg); --blue-bg: var(--jw-info-bg);
  --lime: var(--jw-ok); --orange: var(--jw-warn);
  --font: var(--jw-font-text); --mono: var(--jw-font-mono);
  --hdr-bg: var(--jw-paper); --r: var(--jw-radius);
  /* Main-site token names (style.css). --navy is the header and the always-dark sections. */
  --navy: #0f1214; --navy-light: #1a1f23;
  --bg-alt: var(--jw-paper-2); --card-bg: var(--jw-card);
  --gold-light: var(--jw-accent); --gold-accessible: var(--jw-accent);
  --font-body: var(--jw-font-text); --font-heading: var(--jw-font-display);
  --radius: var(--jw-radius); --transition: var(--jw-fast) var(--jw-ease);
  --shadow: var(--jw-shadow); --shadow-lg: var(--jw-shadow);
  --text-on-dark: #e8ebed; --text-on-dark-muted: #b4bcc2; --text-on-dark-faint: #8e979e;
}
/* Sections that stay dark in both themes (home hero, dark bands, the site footer, cookie bar, the Start Here quiz band)
   keep the dark-theme values. Tool pages' own <footer> blocks are light in the light theme, so only the site footer. */
[data-theme="light"] .hero, [data-theme="light"] .section-dark, [data-theme="light"] .signup-section, [data-theme="light"] .sh-quiz-cta,
[data-theme="light"] footer[role="contentinfo"], [data-theme="light"] .lightbox-overlay, [data-theme="light"] #cookie-consent {
  --gold: #d9b45a; --gold-light: #e2c47a; --gold-accessible: #d9b45a; --text: #e8ebed; --text-light: #b4bcc2;
  --jw-ink: #e8ebed; --jw-muted: #b4bcc2; --jw-accent: #d9b45a; --jw-rule: #2b3238; --jw-rule-strong: #646f78; --jw-card: #181c20;
  --jw-ink-fill: #e8ebed; --jw-ink-fill-hover: #ffffff; --jw-on-ink: #111417;
}
/* The one primary call to action on a dark photo band: the brass fill, dark text (7:1). */
html:root body .hero .btn-primary, html:root body .hero .btn-primary:hover { background: var(--jw-accent-fill); color: var(--jw-on-accent); border-color: var(--jw-accent-fill); }
html:root body .hero .btn-secondary { color: #e8ebed; border-color: rgba(232,235,237,.55); }

/* ── Type ──────────────────────────────────────────────────────────────────────────────────────────────── */
html:root body { font-family: var(--jw-font-text); font-feature-settings: "kern"; text-rendering: optimizeLegibility; }
html:root body h1, html:root body h2 { font-family: var(--jw-font-display); font-weight: 400; letter-spacing: -.01em; }
html:root body h1 { line-height: 1.06; }
html:root body h2 { line-height: 1.14; }
html:root body h3, html:root body h4 { font-family: var(--jw-font-text); font-weight: 600; line-height: 1.25; letter-spacing: 0; }
html:root body code, html:root body pre, html:root body kbd, html:root body samp { font-family: var(--jw-font-mono); }
html:root body table, html:root body .stat, html:root body .score, html:root body [class*="score"], html:root body [class*="count"], html:root body time { font-variant-numeric: tabular-nums; }
html:root body ::selection { background: var(--jw-accent-fill); color: var(--jw-on-accent); }
html:root body :focus-visible { outline: 2px solid var(--jw-accent); outline-offset: 2px; }

/* Main site (base layout). */
html:root body .post-body { font-size: 1.0625rem; line-height: 1.7; }
html:root body .post-body h2 { font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.1rem); margin: 2.4rem 0 .9rem; }
html:root body .post-body h3 { font-size: 1.2rem; margin: 1.8rem 0 .6rem; }
html:root body .section article > header h1, html:root body .container > h1 { font-size: clamp(2.1rem, 1.4rem + 2.6vw, 3.4rem); margin-bottom: 1rem; }
html:root body .hero h1 { font-family: var(--jw-font-display); font-weight: 400; font-size: clamp(2.4rem, 1.5rem + 3.6vw, 4.4rem); line-height: 1.04; letter-spacing: -.015em; }
html:root body .hero h1 .text-gold, html:root body .hero .text-gold { color: var(--gold); }
html:root body .section-header h2 { font-size: clamp(1.9rem, 1.3rem + 1.9vw, 2.75rem); }
html:root body .site-logo { font-family: var(--jw-font-display); font-weight: 400; font-size: 1.3rem; letter-spacing: -.01em; color: var(--jw-accent); }
/* Light theme: the wordmark and the Tools button were burnt orange on white, the clay-on-paper look; ink and a rule now. */
html[data-theme="light"]:root body .site-header .site-logo, html[data-theme="light"]:root body .site-header .site-logo:hover { color: var(--jw-ink); }
html:root body .site-header .nav-dropdown-toggle { background: transparent; border: 1px solid var(--jw-rule-strong); color: var(--jw-ink); font-weight: 600; letter-spacing: .04em; }
html:root body .site-header .nav-list a { font-weight: 500; }
html[data-theme="light"]:root body .site-header .nav-list a { color: var(--jw-ink-2); }
html[data-theme="light"]:root body .site-header .nav-list a:hover, html[data-theme="light"]:root body .site-header .nav-list a[aria-current="page"] { color: var(--jw-ink); }
html:root body .card h3, html:root body .book-card h3 { font-family: var(--jw-font-display); font-weight: 400; font-size: 1.3rem; }
html:root body .site-header { background: var(--jw-paper); border-bottom: 1px solid var(--jw-rule); }
html[data-theme="light"]:root body .site-header { background: var(--jw-card); }
html:root body .nav-dropdown-menu { background: var(--jw-card); border: 1px solid var(--jw-rule); box-shadow: var(--jw-shadow); }
html:root body .card, html:root body .book-card, html:root body .faq-item { background: var(--jw-card); border-color: var(--jw-rule); }
html:root body .section-alt { background: var(--jw-paper-2); }

/* ── Tool pages: header ────────────────────────────────────────────────────────────────────────────────── */
html:root body .hdr { background: var(--jw-paper); border-bottom: 1px solid var(--jw-rule); color: var(--jw-ink); }
html:root body .hdr h1 {
  font-family: var(--jw-font-display); font-weight: 400; font-size: clamp(1.9rem, 1.3rem + 2.3vw, 3rem); line-height: 1.08; letter-spacing: -.012em;
  background: none; -webkit-background-clip: border-box; background-clip: border-box; -webkit-text-fill-color: currentColor; color: var(--jw-ink);
}
html:root body .hdr p, html[data-theme="light"]:root body .hdr p { color: var(--jw-muted); }
html:root body .hdr a { color: var(--jw-accent); }
/* Left-aligned on the content column (a centred header over a left-aligned tool reads as a template). */
html:root body .hdr { text-align: left; padding-left: max(1.5rem, calc((100% - 1052px) / 2)); padding-right: max(4.5rem, calc((100% - 1052px) / 2)); }
html:root body .hdr p { margin-left: 0; margin-right: 0; max-width: 68ch; }
/* Code and pills written for the old dark header (light text on a translucent white) read 1.1:1 on the light paper. */
html:root body .hdr code { background: var(--jw-paper-3); color: var(--jw-ink); }
/* The "← jwatte.com" link sits absolutely at top:1rem; give it its own line above the title at every width. */
html:root body .hdr { padding-top: 3rem; }
/* Text colours written inline for the old navy header (bright gold, pale slate) fail on the light paper. */
html[data-theme="light"]:root body [style^="color:#fbbf24"], html[data-theme="light"]:root body [style*=";color:#fbbf24"], html[data-theme="light"]:root body [style*=" color:#fbbf24"],
html[data-theme="light"]:root body [style^="color:#f59e0b"], html[data-theme="light"]:root body [style*=";color:#f59e0b"], html[data-theme="light"]:root body [style*=" color:#f59e0b"] { color: var(--jw-accent) !important; }
html[data-theme="light"]:root body .hdr [style*="color:#cbd5e1"], html[data-theme="light"]:root body .hdr [style*="color:#94a3b8"], html[data-theme="light"]:root body .hdr [style*="color:#e2e8f0"] { color: var(--jw-muted) !important; }
html:root body .theme-btn { background: var(--jw-card); border-color: var(--jw-rule); color: var(--jw-ink); }

/* Cards, headings inside them, inputs. Input borders meet 3:1 (WCAG 1.4.11). */
html:root body .cd { background: var(--jw-card); border-color: var(--jw-rule); }
html:root body .cd h2 { font-family: var(--jw-font-display); font-weight: 400; font-size: 1.3rem; line-height: 1.2; letter-spacing: -.005em; }
html:root body .cd h3 { color: var(--jw-ink); font-weight: 600; }
html:root body input:not([type=checkbox]):not([type=radio]):not([type=range]), html:root body select, html:root body textarea { border-color: var(--jw-rule-strong); background: var(--jw-card); color: var(--jw-ink); }
html:root body input:focus, html:root body select:focus, html:root body textarea:focus { border-color: var(--jw-accent); box-shadow: 0 0 0 3px var(--jw-accent-wash); }
html:root body input::placeholder, html:root body textarea::placeholder { color: var(--jw-muted); opacity: .8; }
html:root body .code-blk, html:root body .copy-blk, html:root body .patch-code, html:root body .patch-blk { background: var(--jw-code-bg); color: var(--jw-code-ink); border-color: var(--jw-rule); }

/* ── Buttons: ink means "do this"; the accent is for marks, never a button fill behind small text. ─────────── */
html:root body .btn-primary, html:root body button.primary, html:root body .btn, html:root body .gen-btn, html:root body .input-bar button, html:root body .btn-gold, html:root body .btn-install,
html:root body .patch-hd .apply-btn, html:root body .book-promo a, html:root body #resTabs button.result-next, html:root body .prompt-copy, html:root body .copy-btn, html:root body .sg-step-num {
  background: var(--jw-ink-fill); color: var(--jw-on-ink); border: 1px solid var(--jw-ink-fill); border-radius: var(--jw-radius);
  font-family: var(--jw-font-text); font-weight: 600; letter-spacing: 0; box-shadow: none; text-shadow: none;
  transition: background-color var(--jw-fast) var(--jw-ease), border-color var(--jw-fast) var(--jw-ease), transform .14s var(--jw-ease-out);
}
html:root body .btn-secondary { background: transparent; color: var(--jw-ink); border: 1px solid var(--jw-rule-strong); border-radius: var(--jw-radius); font-weight: 600; }
html:root body .btn-primary:disabled, html:root body button.primary:disabled, html:root body .btn:disabled { opacity: .5; cursor: not-allowed; }
/* Selected state of a toggle group: ink, like a pressed key. */
html:root body .tab-btn.active, html:root body .tog button.on, html:root body .tabs button.on, html:root body .filter-btn.active, html:root body .mode-row button.on, html:root body .preset-row button.on,
html:root body .regen-row button.on, html:root body .comp-btn.active, html:root body .niche-btn.active, html:root body .preset-btn.active, html:root body .out-tab.on, html:root body .mode-btn.active,
html:root body .count-btn.on, html:root body .tab-picker button.on, html:root body .level-btn.active,
html:root body .bot-table .directive-group input[type=radio]:checked + span, html:root body .regen-group input[type=radio]:checked + span {
  background: var(--jw-ink-fill); color: var(--jw-on-ink); border-color: var(--jw-ink-fill); box-shadow: none;
}
/* Marks that carry no small text: bars, numerals, bullets. */
html:root body .spark .bar, html:root body .hist .bar, html:root body .run-progress-bar > div, html:root body .source-card .weight-bar span, html:root body .model-row .pc li::before,
html:root body .li-rec::before, html:root body .steps li::before, html:root body .phase li::before, html:root body .prio .num, html:root body .opt-card.selected::after, html:root body .tabs button.ready-flash::after,
html:root body .progress > span {
  background: var(--jw-accent-fill); color: var(--jw-on-accent);
}
html:root body [style*="background:var(--gold)"], html:root body [style*="background: var(--gold)"] { background: var(--jw-accent-fill) !important; color: var(--jw-on-accent) !important; }

@media (hover: hover) and (pointer: fine) {
  html:root body .btn-primary:hover:not(:disabled), html:root body button.primary:hover:not(:disabled), html:root body .btn:hover:not(:disabled), html:root body .gen-btn:hover,
  html:root body .input-bar button:hover:not(:disabled), html:root body .copy-btn:hover, html:root body .prompt-copy:hover, html:root body .book-promo a:hover {
    background: var(--jw-ink-fill-hover); border-color: var(--jw-ink-fill-hover); color: var(--jw-on-ink);
  }
  html:root body .btn-secondary:hover { background: var(--jw-paper-3); }
  html:root body .theme-btn:hover, html:root body .copy-prompt-btn:hover, html:root body .sg-copy-btn:hover { background: var(--jw-paper-3); color: var(--jw-ink); }
}
html:root body .btn-primary:active:not(:disabled), html:root body button.primary:active:not(:disabled), html:root body .btn:active:not(:disabled), html:root body .btn-secondary:active { transform: scale(.97); }

/* ── Tool nav strip and the All Tools panel (generated by rebuild-nav.mjs with hard-coded navy). ────────── */
html:root body .tool-nav { background: var(--jw-card); border-bottom: 1px solid var(--jw-rule); }
html:root body .tool-nav .tn-menu-btn { background: transparent; border: 1px solid var(--jw-rule-strong); color: var(--jw-ink); font-weight: 600; }
html:root body .tool-nav .tn-menu-btn[aria-expanded="true"] { background: var(--jw-paper-3); border-color: var(--jw-ink); }
html:root body .tool-nav .tn-current { color: var(--jw-ink-2); background: transparent; border-color: var(--jw-rule); }
html:root body .tool-nav .tn-quick { color: var(--jw-muted); font-weight: 600; }
html:root body .tool-nav .tn-quick.active { color: var(--jw-on-ink); background: var(--jw-ink-fill); border-color: var(--jw-ink-fill); box-shadow: none; font-weight: 600; }
html:root body .tool-nav .tn-quick.tn-hub { color: var(--jw-accent); font-weight: 600; }
html:root body .tool-nav .tn-panel { background: var(--jw-paper); border-color: var(--jw-rule); box-shadow: var(--jw-shadow); }
html:root body .tool-nav .tn-panel-head { background: var(--jw-card); border-color: var(--jw-rule); }
html:root body .tool-nav .tn-search { background: var(--jw-card); border-color: var(--jw-rule-strong); color: var(--jw-ink); }
html:root body .tool-nav .tn-search:focus { border-color: var(--jw-accent); box-shadow: 0 0 0 3px var(--jw-accent-wash); }
html:root body .tool-nav .tn-search::placeholder, html:root body .tool-nav .tn-search-icon, html:root body .tool-nav .tn-close, html:root body .tool-nav .tn-empty { color: var(--jw-muted); }
html:root body .tool-nav .tn-hint, html:root body .tool-nav .tn-group-count { color: var(--jw-muted); background: transparent; border-color: var(--jw-rule); }
html:root body .tool-nav .tn-group-header, html:root body .tool-nav .tn-group[data-group] .tn-group-header { color: var(--jw-ink); border-color: var(--jw-rule); font-weight: 600; letter-spacing: .08em; }
html:root body .tool-nav .tn-item, html:root body .tool-nav .tn-group[data-group] .tn-item { background: var(--jw-card); border: 1px solid var(--jw-rule); border-top-width: 1px; border-radius: var(--jw-radius); color: var(--jw-ink); box-shadow: none; transition: border-color var(--jw-fast) var(--jw-ease), background-color var(--jw-fast) var(--jw-ease); }
html:root body .tool-nav .tn-item[data-featured="true"] { background: var(--jw-card); border-left: 1px solid var(--jw-rule); box-shadow: inset 0 2px 0 var(--jw-accent-fill); }
html:root body .tool-nav .tn-item[data-featured="true"]::after { color: var(--jw-accent); }
html:root body .tool-nav .tn-item.active { background: var(--jw-paper-3); border-color: var(--jw-ink); box-shadow: none; }
html:root body .tool-nav .tn-item-title { color: var(--jw-ink); font-weight: 600; }
html:root body .tool-nav .tn-item-desc, html:root body .tool-nav .tn-item:hover .tn-item-desc { color: var(--jw-muted); }
html:root body .tool-nav .tn-panel-body::-webkit-scrollbar-track { background: var(--jw-paper); }
html:root body .tool-nav .tn-panel-body::-webkit-scrollbar-thumb { background: var(--jw-rule-strong); border-color: var(--jw-paper); }
@media (hover: hover) and (pointer: fine) {
  html:root body .tool-nav .tn-quick:hover { color: var(--jw-ink); background: var(--jw-paper-3); }
  html:root body .tool-nav .tn-item:hover { background: var(--jw-paper-3); border-color: var(--jw-rule-strong); transform: none; box-shadow: none; color: var(--jw-ink); }
  html:root body .tool-nav .tn-menu-btn:hover { background: var(--jw-paper-3); }
}
@media (hover: none) { html:root body .tool-nav .tn-item:hover { transform: none; } }

/* ── Colours written inline by older pages and scripts. One remap instead of editing hundreds of pages: slate greys
   become the theme's muted text, and the saturated amber, green and violet used for text become the shades that pass
   on this theme's ground. The ^= / ;color: forms skip background-color and border-color. ─────────────────────────── */
html:root body [style^="color:#64748b"], html:root body [style*=";color:#64748b"], html:root body [style*="; color:#64748b"],
html:root body [style^="color:#94a3b8"], html:root body [style*=";color:#94a3b8"], html:root body [style*="; color:#94a3b8"],
html:root body [style^="color:#475569"], html:root body [style*=";color:#475569"], html:root body [style*="; color:#475569"],
html:root body [style^="color:#6b7280"], html:root body [style*=";color:#6b7280"], html:root body [style*="; color:#6b7280"] { color: var(--jw-muted) !important; }
html:root body [style^="color:#7c3aed"], html:root body [style*=";color:#7c3aed"], html:root body [style*="; color:#7c3aed"],
html:root body [style^="color:#8b5cf6"], html:root body [style*=";color:#8b5cf6"], html:root body [style*="; color:#8b5cf6"] { color: var(--jw-violet) !important; }
html[data-theme="light"]:root body [style^="color:#d97706"], html[data-theme="light"]:root body [style*=";color:#d97706"], html[data-theme="light"]:root body [style*="; color:#d97706"] { color: var(--jw-accent) !important; }
html[data-theme="light"]:root body [style^="color:#059669"], html[data-theme="light"]:root body [style*=";color:#059669"], html[data-theme="light"]:root body [style*="; color:#059669"],
html[data-theme="light"]:root body [style^="color:#10b981"], html[data-theme="light"]:root body [style*=";color:#10b981"], html[data-theme="light"]:root body [style*="; color:#10b981"] { color: var(--jw-ok) !important; }

/* Amber tints written inline (target banners, label pills, call-to-action cards; 1,300+ across the tool pages and
   shared scripts) read as cream on the light paper, the Claude-site palette. They become the neutral surface with a
   rule; text that was gold keeps the brass accent. */
html:root body [style*="background:rgba(245,158,11"], html:root body [style*="background: rgba(245,158,11"] { background: var(--jw-paper-3) !important; }
html:root body [style*="background:linear-gradient(135deg,rgba(245,158,11"], html:root body [style*="background:linear-gradient(180deg,rgba(245,158,11"] { background: var(--jw-card) !important; }
html:root body [style*="border:1px solid rgba(245,158,11"], html:root body [style*="border:1.5px solid rgba(245,158,11"], html:root body [style*="border:2px solid rgba(245,158,11"] { border-color: var(--jw-rule-strong) !important; }

/* Skip link: ink, not the accent (dark text on the dark brass was 3:1). */
html:root body .skip-link { background: var(--jw-ink-fill); color: var(--jw-on-ink); }
/* Tools hub quick actions and level switch. */
html:root body .qa-input button { background: var(--jw-ink-fill); color: var(--jw-on-ink); border: 1px solid var(--jw-ink-fill); }
html:root body .lvl-btn.active { background: var(--jw-ink-fill); color: var(--jw-on-ink); border-color: var(--jw-ink-fill); }
html:root body .qa h3 { color: var(--jw-ink); }
html:root body .qa-btns button, html:root body .tdir-pill[aria-pressed="true"] { background: var(--jw-ink-fill); color: var(--jw-on-ink); border-color: var(--jw-ink-fill); box-shadow: none; }
/* Hub directory cards: one surface, a rule, no tinted gradients or coloured side stripes. */
html:root body .tdir-card, html:root body .tdir-card.featured { background: var(--jw-card); border-color: var(--jw-rule); }
html:root body .tdir-card h4 { font-weight: 600; }
html:root body .tdir-card.featured h4 { padding-right: 1.1rem; }
html:root body .tdir-kickstart, html:root body .tdir-kickstart-next { background: var(--jw-card) !important; border: 1px solid var(--jw-rule) !important; box-shadow: none !important; }
@media (hover: hover) and (pointer: fine) {
  html:root body .tdir-card:hover { transform: none; box-shadow: none; border-color: var(--jw-rule-strong); }
  html:root body .tdir-kickstart:hover, html:root body .tdir-kickstart-next:hover { transform: none; box-shadow: none !important; border-color: var(--jw-rule-strong) !important; }
}
/* Blog code blocks: the near-black code ground, not the old navy. */
html:root body .post-body pre { background: var(--jw-code-bg); border-color: var(--jw-rule); color: var(--jw-code-ink); }
/* The hub still carries the older (v1) tool nav. */
html:root body .tool-nav-link { color: var(--jw-ink-2); }
html:root body .tool-nav-link.featured { color: var(--jw-accent); font-weight: 600; }
html:root body .tool-nav-link.active { color: var(--jw-on-ink) !important; background: var(--jw-ink-fill); border-color: var(--jw-ink-fill); box-shadow: none; }
html:root body .tool-nav-group-label { color: var(--jw-muted); }
html:root body .tool-nav-active-chip { color: var(--jw-ink); background: transparent; border-color: transparent; }
html:root body .tool-nav-mobile-btn { background: var(--jw-card); border: 1px solid var(--jw-rule-strong); color: var(--jw-ink); font-weight: 600; }
html:root body .tool-nav-menu, html:root body .tool-nav-group { border-color: var(--jw-rule); }
@media (hover: hover) and (pointer: fine) { html:root body .tool-nav-link:hover { color: var(--jw-ink); background: var(--jw-paper-3); } }

/* ── Motion: the switch the reference sites did not all ship. ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  html:root body *, html:root body *::before, html:root body *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* 2026-10-23: privacy notice beside each form that collects contact details. Inherits its block's text colour. */
html:root body .form-privacy{font-size:.82rem;line-height:1.5;margin:.75rem 0 0;color:inherit;text-align:center}
html:root body .form-privacy a{color:inherit;text-decoration:underline;text-underline-offset:2px}
