/* This file is never linked by name. It is copied to
   assets/style.<sha256[:10]>.css by `verify_site.py --stamp-stylesheet`, and
   that hashed copy is what every page links and what ships. Edit here, restamp,
   and the verifier will fail loudly if you forget the second step.
   ==========================================================================
   TaxWorkBooks — by MB Tax Analytics®
   Broadsheet design system. Newsprint set for the web: Source Serif 4 on a
   paper ground, cyan and magenta used small and deliberately as spot inks.
   Structure comes from the serif scale and negative space — no boxes, no
   dividers between sections. Rules print only as front-page furniture.

   Class names are unchanged from the previous stylesheet, so every page
   restyles without editing its markup.
   ========================================================================== */


/* --------------------------------------------------------------------------
   0. Source Serif 4 — SELF-HOSTED, on purpose
   The design arrived loading this face from fonts.googleapis.com. That is not
   available to this site: the CSP in _headers is `default-src 'none'` with
   `style-src 'self'`, so the remote stylesheet would simply be blocked and
   every page would silently fall back to Georgia. It is also a Law 25 problem
   -- docs/business/legal/privacy-policy.md enumerates every recipient of
   personal information, and Google Fonts is not among them, so loading it
   would send each visitor's IP to an undisclosed third party.
   Subsets: latin + latin-ext only (EN/FR). Variable weight 400-600 plus
   italic. Licence: SIL OFL 1.1 -- see assets/fonts/OFL.txt.
   Adding a face means adding `font-src 'self'` stays true -- no remote URLs.
   -------------------------------------------------------------------------- */
/* latin-ext */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/source-serif-4-latin-ext-italic.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/source-serif-4-latin-italic.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/source-serif-4-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/source-serif-4-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/source-serif-4-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/source-serif-4-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --------------------------------------------------------------------------
   1. Tokens — Broadsheet
   -------------------------------------------------------------------------- */
:root {
  --color-bg: #f7f5ef;
  --color-surface: #eae9e9;
  --color-text: #162b35;
  --color-accent: #14565a;
  --color-accent-2: #d6006c;
  --color-divider: color-mix(in srgb, #201e1d 16%, transparent);

  --color-neutral-100: #f8f4f4;
  --color-neutral-200: #eae7e7;
  --color-neutral-300: #d7d3d3;
  --color-neutral-400: #bab6b6;
  --color-neutral-500: #9b9797;
  --color-neutral-600: #7d7979;
  --color-neutral-700: #605d5d;
  --color-neutral-800: #444141;
  --color-neutral-900: #2d2b2b;

  --color-accent-100: #e9f8ff;
  --color-accent-200: #cbeeff;
  --color-accent-600: #14565a;
  --color-accent-700: #14565a;
  --color-accent-800: #004961;

  --color-accent-2-100: #fff1f4;
  --color-accent-2-700: #aa0b56;
  --color-accent-2-800: #790e3d;

  --font-heading: "Source Serif 4", Georgia, "Times New Roman", serif;
  --font-body: "Source Serif 4", Georgia, "Times New Roman", serif;

  --shadow-sm: 0 1px 2px color-mix(in srgb, #2d2b2b 14%, transparent);
  --shadow-md: 0 3px 10px color-mix(in srgb, #2d2b2b 16%, transparent);
  --shadow-lg: 0 12px 32px color-mix(in srgb, #2d2b2b 22%, transparent);

  --radius: 2px;
  --gutter: 1.25rem;
  --wrap-max: 1240px;
  --measure: 68ch;
  --sec-pad: clamp(3.5rem, 6vw, 6rem);
}

/* --------------------------------------------------------------------------
   2. Reset and base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.018em;
  margin: 0;
  color: var(--color-text);
  text-wrap: pretty;
}

p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0; padding: 0; }

a {
  color: var(--color-accent-700);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
  text-decoration-color: color-mix(in srgb, var(--color-accent-700) 40%, transparent);
  transition: color 140ms ease, text-decoration-color 140ms ease;
}
a:hover { color: var(--color-accent-600); text-decoration-color: currentColor; }

:focus { outline: none; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); }

strong { font-weight: 600; }
:target { scroll-margin-top: 5.5rem; }

.mono { font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; }
.tnum { font-variant-numeric: tabular-nums; }
.nowrap { white-space: nowrap; }

.wrap { width: min(100% - (var(--gutter) * 2), var(--wrap-max)); margin-inline: auto; }

.vh {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

.skip {
  position: absolute; left: -9999px; top: 0; z-index: 60;
  background: var(--color-text); color: var(--color-bg);
  padding: 0.75rem 1rem; text-decoration: none;
}
.skip:focus { left: 0; }

/* --------------------------------------------------------------------------
   3. Masthead — sticky utility bar, brand lockup, hero
   -------------------------------------------------------------------------- */
.masthead { background: var(--color-bg); padding-bottom: clamp(2.5rem, 4.5vw, 4rem); }
.masthead-compact { padding-bottom: clamp(1.75rem, 3vw, 2.75rem); }

/* The bar itself is what stays put. Its one rule is front-page furniture. */
.topbar-fixed {
  position: sticky;
  top: 0;
  z-index: 30;
  background: color-mix(in srgb, var(--color-bg) 94%, transparent);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--color-text);
}

.topbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.875rem 1.75rem;
  padding: 0.75rem 0;
}

.brand {
  display: flex;
  flex-direction: column;
  gap: 2px;
  text-decoration: none;
  color: var(--color-text);
  flex: 0 0 auto;
}
.brand:hover { color: var(--color-text); }
.brand-name {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 1.25rem;
  line-height: 1;
  letter-spacing: -0.02em;
}
/* The colophon: the imprint sits under the title, never competing with it. */
.brand-sub {
  font-size: 0.59rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-neutral-800);
}
.brand-sub .parent { color: var(--color-accent-700); }
.brand-sub .rtm { font-size: 0.47rem; vertical-align: 0.5em; margin-left: 1px; }

.topnav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.375rem;
  list-style: none;
  font-size: 0.9rem;
  min-width: 0;
  flex: 1 1 auto;
}
.topnav a {
  color: var(--color-text);
  text-decoration: none;
  padding-bottom: 2px;
  border-bottom: 2px solid transparent;
}
.topnav a:hover { color: var(--color-accent-600); }
.topnav a.here,
.topnav a[aria-current="page"] {
  color: var(--color-accent-700);
  border-bottom-color: var(--color-accent);
}

.topbar-end {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 1.125rem;
  flex: 0 0 auto;
}

.lang { display: flex; border: 1px solid var(--color-neutral-400); }
.lang > * {
  font-size: 0.72rem;
  letter-spacing: 0.09em;
  padding: 0.3rem 0.6rem;
  text-decoration: none;
  color: var(--color-neutral-700);
  background: transparent;
  border: 0;
  font-family: var(--font-body);
  cursor: pointer;
}
.lang > .here { background: var(--color-text); color: var(--color-bg); cursor: default; }
.lang > a:hover { color: var(--color-accent-600); }

.hero { display: grid; gap: clamp(2rem, 4vw, 4rem); padding-top: clamp(2.75rem, 5vw, 4.5rem); }
.hero-copy h1 {
  font-size: clamp(2.25rem, 1.4rem + 3.4vw, 3.625rem);
  line-height: 1.02;
  letter-spacing: -0.03em;
}
.hero-page .hero-copy h1 { font-size: clamp(2rem, 1.35rem + 2.6vw, 3.25rem); }
.lede {
  margin-top: 1.15rem;
  max-width: 48ch;
  font-size: clamp(1.0625rem, 1rem + 0.4vw, 1.1875rem);
  line-height: 1.6;
  color: var(--color-neutral-800);
}

/* The memo block: a file header, not a feature list. */
.memo { margin: 0; align-self: start; }
.memo-row {
  display: grid;
  grid-template-columns: 8.25rem 1fr;
  gap: 0 1.125rem;
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--color-neutral-300);
}
.memo dt {
  font-size: 0.66rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  padding-top: 0.25em;
}
.memo dd { margin: 0; font-size: 0.9rem; font-variant-numeric: tabular-nums; }

/* --------------------------------------------------------------------------
   4. Credibility strip — paper, not a dark band
   -------------------------------------------------------------------------- */
.credibility { background: var(--color-bg); padding: clamp(2.5rem, 4.5vw, 4rem) 0 0; }
.credential {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.375rem, 1.1rem + 1.2vw, 1.8rem);
  line-height: 1.3;
  letter-spacing: -0.018em;
  max-width: 38ch;
  margin: 0 0 2rem;
}
.badges { display: grid; gap: 1.75rem 2.75rem; list-style: none; }
.badges li { display: block; }
.badge-label {
  display: block;
  font-size: 0.69rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent-700);
  margin-bottom: 0.45rem;
}
.badge-note {
  display: block;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--color-neutral-800);
  max-width: 36ch;
}

/* --------------------------------------------------------------------------
   5. Sections and section heads — separated by whitespace
   -------------------------------------------------------------------------- */
.section { padding: var(--sec-pad) 0; }
.section-alt { background: var(--color-bg); }
.section-legal { padding-bottom: clamp(2.5rem, 4vw, 4rem); }

.sec-head {
  display: grid;
  gap: 0.5rem 1.5rem;
  margin-bottom: clamp(2rem, 3.5vw, 3rem);
}
.sec-num {
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  font-variant-numeric: tabular-nums;
  margin: 0;
  padding-top: 0.5em;
}
.sec-head h2 { font-size: clamp(1.75rem, 1.25rem + 1.9vw, 2.5rem); letter-spacing: -0.025em; }
.sec-sub {
  margin: 0.75rem 0 0;
  max-width: 68ch;
  font-size: 1.03rem;
  line-height: 1.6;
  color: var(--color-neutral-800);
}

/* --------------------------------------------------------------------------
   6. Product listings — a priced index, not a row of boxes
   -------------------------------------------------------------------------- */
.cards { display: grid; gap: 0; }

.card {
  display: flex;
  flex-direction: column;
  background: transparent;
  border: 0;
  border-top: 1px solid var(--color-divider);
  padding: 1.75rem 0;
  width: 100%;
}
.card-flagship { border-top-color: var(--color-accent); }

.card-kicker {
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent-700);
  margin-bottom: 0.5rem;
}
.card-head { margin-bottom: 1.25rem; }
.card-head h3 { font-size: 1.5rem; line-height: 1.15; margin-bottom: 0.65rem; }
.card-summary {
  font-size: 0.94rem;
  line-height: 1.6;
  color: var(--color-neutral-800);
  max-width: 62ch;
}

.shot { margin: 0 0 1.4rem; }
.shot img {
  display: block;
  width: 100%;
  height: auto;
  background: var(--color-surface);
}
.shot figcaption {
  margin-top: 0.5rem;
  font-size: 0.72rem;
  line-height: 1.45;
  color: var(--color-neutral-700);
}

.card-body { flex: 1 1 auto; display: flex; flex-direction: column; margin-bottom: 1.25rem; }

.inside-label {
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  margin-bottom: 0.5rem;
}
.inside { list-style: none; font-size: 0.9rem; line-height: 1.5; }
.inside li {
  position: relative;
  padding: 0.5rem 0 0.5rem 1.1rem;
  border-top: 1px solid var(--color-neutral-300);
  color: var(--color-neutral-800);
}
.inside li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1.1em;
  width: 5px;
  height: 5px;
  background: var(--color-accent-700);
}

/* Progressive disclosure */
.more { margin-top: auto; }
.more > summary {
  list-style: none;
  cursor: pointer;
  padding: 0.85rem 1.5rem 0 0;
  position: relative;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--color-accent-700);
}
.more > summary::-webkit-details-marker { display: none; }
.more > summary::after {
  content: "+";
  position: absolute;
  right: 0;
  top: 0.78rem;
  font-size: 1rem;
  color: var(--color-neutral-600);
}
.more[open] > summary::after { content: "\2013"; }
.more > summary:hover { color: var(--color-accent-600); }
.more-body { padding-top: 0.9rem; }
.more-body h4 {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  margin: 1.25rem 0 0.35rem;
}
.more-body h4:first-child { margin-top: 0; }
.more-body p {
  font-size: 0.94rem;
  line-height: 1.6;
  margin-bottom: 0;
  color: var(--color-neutral-800);
  max-width: 66ch;
}

.card-foot { margin-top: auto; padding-top: 1.25rem; }
.price {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 0.35rem;
  font-variant-numeric: tabular-nums;
}
.price .cur { font-size: 0.66rem; letter-spacing: 0.12em; color: var(--color-neutral-600); }
.price .amt { font-size: 1.75rem; letter-spacing: -0.015em; }
.licence-line {
  font-size: 0.8rem;
  line-height: 1.45;
  color: var(--color-neutral-700);
  margin-bottom: 1rem;
}

/* --------------------------------------------------------------------------
   7. Actions
   -------------------------------------------------------------------------- */
.buy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  background: var(--color-accent);
  color: var(--color-bg);
  border: 1px solid var(--color-accent);
  border-radius: var(--radius);
  padding: 0.7rem 1.25rem;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 0.94rem;
  line-height: 1.2;
  white-space: nowrap;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 140ms ease, border-color 140ms ease;
}
.buy:hover { background: var(--color-accent-600); border-color: var(--color-accent-600); color: var(--color-bg); }
.buy:active { background: var(--color-accent-700); border-color: var(--color-accent-700); }

.buy-secondary {
  width: auto;
  background: transparent;
  color: var(--color-text);
  border-color: var(--color-divider);
}
.buy-secondary:hover {
  background: color-mix(in srgb, var(--color-text) 7%, transparent);
  border-color: var(--color-divider);
  color: var(--color-text);
}
.buy-secondary:active { background: color-mix(in srgb, var(--color-text) 14%, transparent); }

.buy-note { margin-top: 0.55rem; font-size: 0.8rem; color: var(--color-neutral-700); }

/* --------------------------------------------------------------------------
   8. Sample strip
   -------------------------------------------------------------------------- */
.samples { display: grid; gap: 0; list-style: none; }
.samples li {
  background: transparent;
  border: 0;
  border-top: 1px solid var(--color-neutral-300);
  padding: 1rem 0;
}
.sample-name {
  display: block;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 1.0625rem;
  margin-bottom: 0.35rem;
}
.sample-state {
  display: block;
  font-size: 0.66rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--color-accent-2-700);
}
.samples-note { margin-top: 1.15rem; font-size: 0.86rem; color: var(--color-neutral-700); font-style: italic; }

/* --------------------------------------------------------------------------
   9. The internal standard
   -------------------------------------------------------------------------- */
.standard { list-style: none; counter-reset: std; display: grid; gap: 0 4rem; }
.standard li {
  counter-increment: std;
  position: relative;
  padding: 1rem 0 1rem 2.5rem;
  border-top: 1px solid var(--color-neutral-300);
}
.standard li::before {
  content: counter(std, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 1.28em;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  font-variant-numeric: tabular-nums;
  color: var(--color-accent-700);
}
.standard h3 { font-size: 1.03rem; letter-spacing: -0.008em; margin-bottom: 0.3rem; }
.standard p {
  font-size: 0.9rem;
  line-height: 1.58;
  margin: 0;
  max-width: 48ch;
  color: var(--color-neutral-800);
}

/* --------------------------------------------------------------------------
   10. FAQ
   -------------------------------------------------------------------------- */
.faq { border-top: 1px solid var(--color-neutral-300); }
.faq details { border-bottom: 1px solid var(--color-neutral-300); }
.faq summary {
  list-style: none;
  cursor: pointer;
  position: relative;
  padding: 1rem 2.25rem 1rem 0;
  font-family: var(--font-heading);
  font-size: 1.0625rem;
  font-weight: 600;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+";
  position: absolute;
  right: 0.25rem;
  top: 0.9rem;
  font-size: 1.0625rem;
  color: var(--color-neutral-600);
}
.faq details[open] summary { color: var(--color-accent-700); }
.faq details[open] summary::after { content: "\2013"; }
.faq summary:hover { color: var(--color-accent-600); }
.faq-body { padding: 0 2.25rem 1.25rem 0; max-width: var(--measure); }
.faq-body p { font-size: 0.94rem; line-height: 1.68; margin: 0; color: var(--color-neutral-800); }

/* --------------------------------------------------------------------------
   11. Split layout — reading column plus marginalia
   -------------------------------------------------------------------------- */
.split { display: grid; gap: 2.25rem; }
.margin-note {
  padding-top: 0.9rem;
  border-top: 1px solid var(--color-neutral-300);
  font-size: 0.86rem;
  line-height: 1.6;
  color: var(--color-neutral-800);
}
/* Two elements in the marginalia column need a gap above them. This was a
   style="margin-top:…" attribute on each, on both home pages, and it was being
   BLOCKED in production: style-src is 'self' with no 'unsafe-inline', so the
   browser refused all four and the elements shipped flush against what was
   above them. Nothing failed and nothing looked obviously wrong -- it took a
   console on the live custom domain to see it, which is the whole reason
   `marketing/CLAUDE.md` now names style attributes alongside onclick. */
.margin-note-spaced { margin-top: 2rem; }
.signup-spaced { margin-top: 1.25rem; }
.margin-note p { margin: 0; }
.margin-note p + p { margin-top: 0.7rem; }
.margin-label {
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
}
.margin-note .margin-label { margin-bottom: 0.5rem; }

/* --------------------------------------------------------------------------
   12. Forms and signup
   -------------------------------------------------------------------------- */
.signup {
  display: grid;
  gap: 0.85rem;
  align-items: end;
  max-width: 34rem;
  padding: 0;
  background: transparent;
  border: 0;
}
.signup-field { display: block; min-width: 0; }
.signup label,
.form-filter label {
  display: block;
  font-size: 0.75rem;
  color: var(--color-neutral-700);
  margin-bottom: 0.35rem;
}
.signup input,
.form-filter input {
  display: block;
  width: 100%;
  min-height: 36px;
  font-family: var(--font-body);
  font-size: 0.94rem;
  color: var(--color-text);
  caret-color: var(--color-accent);
  background: var(--color-surface);
  border: 1px solid var(--color-divider);
  border-radius: var(--radius);
  padding: 0.5rem 0.65rem;
  -webkit-appearance: none;
  appearance: none;
}
.signup input::placeholder,
.form-filter input::placeholder {
  color: color-mix(in srgb, var(--color-text) 65%, transparent);
  opacity: 1;
  font-style: italic;
}
.signup input:hover,
.form-filter input:hover { border-color: color-mix(in srgb, var(--color-text) 45%, transparent); }
.signup input:focus-visible,
.form-filter input:focus-visible { border-color: var(--color-accent); outline-offset: 0; }

/* --------------------------------------------------------------------------
   13. Legal documents
   -------------------------------------------------------------------------- */
.legal-doc {
  max-width: 74ch;
  font-size: 1rem;
  line-height: 1.68;
  color: var(--color-neutral-800);
  padding-top: 0;
  border-top: 0;
  margin-top: 0;
}
.legal-doc h3 {
  font-size: 1.375rem;
  margin: 2.25rem 0 0.5rem;
  color: var(--color-text);
}
.legal-doc h3:first-of-type { margin-top: 0; }
.legal-doc h4 {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 1.6rem 0 0.4rem;
}
.legal-doc strong { color: var(--color-text); }
.legal-doc ul { list-style: none; margin: 0 0 1em; }
.legal-doc li { position: relative; padding-left: 1.1rem; margin-bottom: 0.4rem; }
.legal-doc li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.75em;
  width: 5px;
  height: 1px;
  background: var(--color-neutral-500);
}
.legal-meta {
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  margin-bottom: 1.75rem;
}
.legal-contact { margin-top: 1.75rem; }

.legal-doc ol { list-style: none; margin: 0 0 1em; counter-reset: legal-step; }
.legal-doc ol li { padding-left: 1.6rem; }
.legal-doc ol li::before {
  counter-increment: legal-step;
  content: counter(legal-step) ".";
  top: 0;
  left: 0;
  width: auto;
  height: auto;
  background: none;
  font-variant-numeric: tabular-nums;
  color: var(--color-neutral-600);
}

.legal-doc table { width: 100%; border-collapse: collapse; margin: 0 0 1.5rem; font-size: 0.88rem; }
.legal-doc thead { display: none; }
.legal-doc tbody tr { display: block; padding: 0.75rem 0; border-bottom: 1px solid var(--color-neutral-300); }
.legal-doc tbody tr:last-child { border-bottom: 0; }
.legal-doc th, .legal-doc td { display: block; text-align: left; font-weight: 400; padding: 0.15rem 0; }
.legal-doc th[scope="row"] { color: var(--color-text); font-weight: 600; }
.legal-doc td { color: var(--color-neutral-800); }

/* --------------------------------------------------------------------------
   14. Footer
   -------------------------------------------------------------------------- */
.sitefoot {
  background: var(--color-bg);
  color: var(--color-neutral-800);
  border-top: 1px solid var(--color-text);
  padding: clamp(2.75rem, 4.5vw, 3.5rem) 0 2.5rem;
  font-size: 0.94rem;
}
.foot-grid { display: grid; gap: 2.25rem 3rem; padding-bottom: 2rem; }
.foot-brand .brand-name { display: block; font-size: 1.375rem; margin-bottom: 0.3rem; }
.foot-brand .brand-sub { display: block; margin-bottom: 0.75rem; font-size: 0.63rem; color: var(--color-neutral-700); }
.foot-tag { color: var(--color-neutral-800); max-width: 30ch; margin-bottom: 0.5rem; }
.foot-domain { font-size: 0.8rem; letter-spacing: 0.05em; color: var(--color-neutral-600); }
.foot-head {
  font-size: 0.66rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  margin-bottom: 0.75rem;
}
.foot-links ul { list-style: none; }
.foot-links li { margin-bottom: 0.4rem; }
.foot-links a { color: var(--color-text); text-decoration: none; }
.foot-links a:hover { color: var(--color-accent-600); }

.disclaimer {
  margin: 1.75rem 0 0;
  max-width: 88ch;
  font-size: 0.86rem;
  line-height: 1.65;
  color: var(--color-neutral-800);
  border-top: 1px solid var(--color-neutral-300);
  padding-top: 1.5rem;
}
.disclaimer strong { color: var(--color-text); }
.copyright { margin-top: 1.25rem; font-size: 0.75rem; letter-spacing: 0.05em; color: var(--color-neutral-600); }
.foot-legal-id {
  margin-top: 1.5rem;
  font-size: 0.78rem;
  line-height: 1.85;
  letter-spacing: 0.03em;
  color: var(--color-neutral-700);
}
.foot-legal-id strong { color: var(--color-neutral-800); font-weight: 400; }

/* ==========================================================================
   15. CRA form index
   ========================================================================== */

/* [hidden] must beat every layout rule in this file, GLOBALLY.

   `hidden` is honoured by a USER-AGENT rule (`[hidden] { display: none }`),
   and any author-level `display` on the same element outranks it. So the
   moment a filterable element is given `display: grid`, `flex` or `block`
   here, setAttribute("hidden", "") stops hiding it -- while every counter and
   aria state that JavaScript maintains keeps saying it is hidden.

   That shipped on 2026-07-28: `.cat-row { display: grid }` meant the home-page
   catalogue read "2 OF 16" above sixteen visible rows. The list below already
   existed for the CRA form index, which hit the same trap first; enumerating
   selectors just meant the next filterable component had to remember to join
   the list, and it did not. One global rule cannot be forgotten.

   Keep this ABOVE the component sections so it is read as a base rule, and
   never remove the !important -- that is the only thing outranking the
   component's own display declaration. */
[hidden] { display: none !important; }

.form-filter {
  display: grid;
  gap: 0.5rem 1.25rem;
  align-items: end;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
  padding-bottom: 1.15rem;
  border-bottom: 1px solid var(--color-text);
}
.filter-status {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  white-space: nowrap;
  padding-bottom: 0.5rem;
}

.form-jump { margin-bottom: clamp(2rem, 4vw, 3rem); }
.form-jump-label {
  margin: 0 0 0.6rem;
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
}
.form-jump ul { display: grid; gap: 0.4rem 2rem; list-style: none; font-size: 0.9rem; }
.jump-n { color: var(--color-neutral-600); font-size: 0.8rem; margin-left: 0.35rem; font-variant-numeric: tabular-nums; }

.entity { margin-bottom: clamp(2.75rem, 5vw, 4rem); }
.entity:last-child { margin-bottom: 0; }
.entity-head {
  font-size: clamp(1.375rem, 1.1rem + 0.9vw, 1.75rem);
  margin-bottom: 0.5rem;
}
.entity-n {
  font-size: 0.8rem;
  font-weight: 400;
  color: var(--color-neutral-600);
  margin-left: 0.5rem;
  vertical-align: 0.15em;
  font-variant-numeric: tabular-nums;
}
.entity-blurb { margin: 0 0 1.75rem; max-width: 66ch; color: var(--color-neutral-800); font-size: 0.97rem; }

.group-row th {
  font-size: 0.72rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent-700);
  text-align: left;
  padding: 1.75rem 0 0.4rem;
  border-bottom: 1px solid var(--color-divider);
}
.group-n { color: var(--color-neutral-600); margin-left: 0.5rem; }

.forms-wrap { margin: 0; }
.forms { width: 100%; border-collapse: collapse; }
.forms thead { display: none; }
.forms tbody, .forms tr, .forms td { display: block; }
.forms tr {
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr);
  gap: 0 0.85rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--color-neutral-300);
}
.forms tr:last-child { border-bottom: 0; }
.group-row { grid-template-columns: minmax(0, 1fr); padding: 0; border-bottom: 0; }
.group-row th { display: block; grid-column: 1 / -1; }

.f-code { font-size: 0.82rem; padding-top: 0.15em; font-variant-numeric: tabular-nums; }
.f-code a { text-decoration: none; border-bottom: 1px solid var(--color-neutral-400); }
.f-code a:hover { border-bottom-color: var(--color-accent); }
.f-title { color: var(--color-text); font-size: 0.94rem; line-height: 1.45; }
.f-date { grid-column: 2; font-size: 0.78rem; color: var(--color-neutral-600); margin-top: 0.15rem; font-variant-numeric: tabular-nums; }

.f-wp {
  display: inline-block;
  margin-left: 0.5rem;
  font-size: 0.6rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--color-accent-800);
  background: var(--color-accent-100);
  border-radius: var(--radius);
  padding: 0.1rem 0.4rem;
  text-decoration: none;
  vertical-align: 0.1em;
}
.f-wp:hover { background: var(--color-accent); color: var(--color-bg); }

.f-also {
  display: inline-block;
  margin-left: 0.5rem;
  font-size: 0.6rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--color-neutral-700);
  border: 1px solid var(--color-neutral-400);
  border-radius: var(--radius);
  padding: 0.08rem 0.38rem;
  vertical-align: 0.1em;
}

.no-match {
  margin: 1.5rem 0 0;
  padding: 0 0 0 1rem;
  border-left: 2px solid var(--color-accent);
  font-size: 0.97rem;
  color: var(--color-neutral-800);
}

/* Entity switch — a segmented pair, the current one inked in */
.entity-switch {
  display: flex;
  flex-wrap: wrap;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
  border: 1px solid var(--color-neutral-400);
  border-radius: var(--radius);
  overflow: hidden;
  width: fit-content;
  max-width: 100%;
}
.es-item {
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.5rem 1rem;
  text-decoration: none;
  color: var(--color-neutral-800);
  background: transparent;
  border-right: 1px solid var(--color-neutral-300);
  white-space: nowrap;
}
.es-item:last-child { border-right: 0; }
.es-item:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); color: var(--color-accent-700); }
.es-here { background: var(--color-text); color: var(--color-bg); cursor: default; }
.es-here:hover { background: var(--color-text); color: var(--color-bg); }
.es-n { opacity: 0.7; margin-left: 0.4rem; font-variant-numeric: tabular-nums; }

/* Hub cards — genuinely discrete listings, so a boxed edge is earned */
.hub-cards { display: grid; gap: 3rem; }
.hub-card {
  display: block;
  padding: 1rem 0 0;
  border: 0;
  border-top: 3px solid var(--color-text);
  background: transparent;
  text-decoration: none;
  color: inherit;
}
.hub-card:hover { border-top-color: var(--color-accent); }
.hub-card h3 { font-size: 1.625rem; margin: 0.15rem 0 0.75rem; }
.hub-n {
  margin: 0 0 0.4rem;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(2.5rem, 1.8rem + 2.4vw, 3.5rem);
  line-height: 0.9;
  letter-spacing: -0.03em;
}
.hub-n-note {
  font-size: 0.66rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  vertical-align: 0.7em;
  margin-left: 0.35rem;
}
.hub-sub { margin: 0 0 1.25rem; font-size: 0.94rem; color: var(--color-neutral-800); }
.hub-groups-label {
  margin: 0 0 0.5rem;
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  padding-top: 0.9rem;
  border-top: 1px solid var(--color-neutral-300);
}
.hub-groups { list-style: none; margin: 0 0 1.35rem; font-size: 0.94rem; color: var(--color-neutral-800); }
.hub-groups li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.3rem 0;
  border-bottom: 1px solid var(--color-neutral-300);
}
.hub-groups li:last-child { border-bottom: 0; }
.hub-groups .tnum { color: var(--color-neutral-600); font-size: 0.82rem; }
.hub-go {
  display: inline-block;
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent-700);
  border-bottom: 1px solid var(--color-accent);
  padding-bottom: 2px;
}
.hub-card:hover .hub-go { color: var(--color-accent-600); }

/* ==========================================================================
   16. Home page — catalogue and workbook preview
   ========================================================================== */
.hero-index { display: grid; gap: clamp(1.5rem, 3vw, 3.5rem); align-items: end; padding-top: clamp(2.75rem, 5vw, 4.5rem); }
.hero-index .lede { max-width: none; margin-top: 0; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 0.625rem; margin-top: 1.25rem; }
.hero-actions .buy { width: auto; font-size: 0.97rem; padding: 0.7rem 1.25rem; }

.cat-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 1rem 1.75rem;
  padding-bottom: 1.125rem;
  border-bottom: 1px solid var(--color-text);
  scroll-margin-top: 5.5rem;
}
.cat-bar .signup-field { flex: 1 1 20rem; }
.cat-count {
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  padding-bottom: 0.55rem;
  margin: 0;
}

.seg-label { display: block; font-size: 0.75rem; color: var(--color-neutral-700); margin-bottom: 0.35rem; }
.seg { display: flex; border: 1px solid var(--color-neutral-400); border-radius: var(--radius); overflow: hidden; }
.seg button {
  border: 0;
  border-left: 1px solid var(--color-neutral-300);
  background: transparent;
  color: var(--color-neutral-800);
  font-family: var(--font-body);
  font-size: 0.82rem;
  padding: 0.5rem 0.9rem;
  cursor: pointer;
  white-space: nowrap;
}
.seg button:first-child { border-left: 0; }
.seg button:hover { color: var(--color-accent-600); }
.seg button[aria-pressed="true"] { background: var(--color-text); color: var(--color-bg); }

.cat-layout { display: grid; gap: 2.5rem; padding-top: 1.75rem; align-items: start; }
.cat-list { display: flex; flex-direction: column; min-width: 0; }
.cat-group-label {
  font-size: 0.66rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-neutral-600);
  padding: 0 0 0.6rem;
  margin: 0;
}
.cat-list .cat-group-label + * { margin-top: 0; }
.cat-group-label.spaced { padding-top: 1.875rem; }

.cat-row {
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr) 4.5rem;
  gap: 1rem;
  align-items: baseline;
  width: 100%;
  text-align: left;
  border: 0;
  border-bottom: 1px solid var(--color-neutral-300);
  border-left: 3px solid transparent;
  background: transparent;
  font-family: var(--font-body);
  padding: 0.8rem 0.75rem;
  cursor: pointer;
}
.cat-row:hover { background: var(--color-accent-100); }
.cat-row[aria-pressed="true"] { background: var(--color-accent-100); border-left-color: var(--color-accent); }
.cat-code { font-size: 0.94rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--color-text); }
.cat-row[aria-pressed="true"] .cat-code { color: var(--color-accent-800); }
.cat-row.pkg .cat-code { font-size: 1.1875rem; letter-spacing: -0.015em; }
.cat-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cat-title { font-size: 0.94rem; color: var(--color-text); }
.cat-meta { font-size: 0.69rem; letter-spacing: 0.09em; text-transform: uppercase; color: var(--color-neutral-600); }
.cat-price { font-size: 0.94rem; text-align: right; font-variant-numeric: tabular-nums; }
.cat-empty { margin: 1.5rem 0 0; font-size: 0.94rem; color: var(--color-neutral-700); font-style: italic; }

.cat-pane { display: flex; flex-direction: column; gap: 0.875rem; min-width: 0; }
.pane-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.875rem; }
.pane-kicker { font-size: 0.69rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-accent-700); }
.pane-title { font-family: var(--font-heading); font-weight: 600; font-size: 1.1875rem; }
.pane-blurb { margin: 0; font-size: 0.9rem; line-height: 1.6; color: var(--color-neutral-800); }
.pane-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.pane-actions .buy { width: auto; }
.pane-note { font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-neutral-600); margin: 0; }

/* The workbook itself, on screen: an Excel file in the serif */
.wb {
  display: flex;
  flex-direction: column;
  background: var(--color-bg);
  border: 1px solid color-mix(in srgb, var(--color-text) 22%, transparent);
  box-shadow: var(--shadow-md);
  overflow: hidden;
}
.wb-chrome {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
  padding: 0.5rem 0.875rem;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-divider);
}
.wb-file { font-size: 0.75rem; font-weight: 600; letter-spacing: -0.01em; }
.wb-chrome-meta { font-size: 0.63rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-neutral-700); }
.wb-version { margin-left: auto; font-size: 0.63rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-neutral-700); }

.wb-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 1.25rem;
  padding: 0.45rem 0.875rem;
  border-bottom: 1px solid var(--color-neutral-300);
}
.wb-key { display: flex; align-items: center; gap: 0.375rem; font-size: 0.69rem; color: var(--color-neutral-800); }
.wb-key i { width: 9px; height: 9px; display: block; }
.wb-key.in i { background: var(--color-accent-700); }
.wb-key.fx i { background: var(--color-text); }
.wb-key.tab i { background: var(--color-accent-2-700); }
.wb-caption { margin-left: auto; font-size: 0.69rem; color: var(--color-neutral-700); font-style: italic; }

.wb-sheet { background: var(--color-neutral-100); overflow-x: auto; }
.wb-sheet table { width: 100%; border-collapse: collapse; font-size: 0.82rem; font-variant-numeric: tabular-nums; }
.wb-sheet th {
  padding: 0.3rem 0.625rem;
  font-size: 0.56rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  font-weight: 400;
  text-align: left;
  color: var(--color-neutral-700);
  background: var(--color-surface);
  border-bottom: 1px solid color-mix(in srgb, var(--color-text) 20%, transparent);
}
.wb-sheet th.c-row { width: 34px; text-align: right; padding-inline: 0.375rem; border-right: 1px solid var(--color-neutral-300); }
.wb-sheet th.c-amt { width: 7rem; text-align: right; }
.wb-sheet th.c-ref { width: 6.5rem; color: var(--color-accent-700); border-left: 1px solid var(--color-neutral-300); }
.wb-sheet td { padding: 0.25rem 0.625rem; border-bottom: 1px solid color-mix(in srgb, var(--color-text) 6%, transparent); }
.wb-sheet td.g {
  width: 34px;
  text-align: right;
  padding-inline: 0.375rem;
  font-size: 0.63rem;
  color: var(--color-neutral-700);
  background: var(--color-surface);
  border-right: 1px solid var(--color-neutral-300);
}
.wb-sheet td.l { padding-left: 1.25rem; }
.wb-sheet td.a { text-align: right; }
.wb-sheet td.r { font-size: 0.69rem; color: var(--color-accent-700); border-left: 1px solid var(--color-neutral-300); }
.wb-sheet tr:hover td.l, .wb-sheet tr:hover td.a { background: var(--color-accent-100); }

.wb-sheet tr.k-h td.l { padding-left: 0.625rem; font-size: 0.6rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-neutral-700); }
.wb-sheet tr.k-h td.a { color: var(--color-neutral-700); }
.wb-sheet tr.k-i td.a { color: var(--color-accent-700); }
.wb-sheet tr.k-t td.a { color: var(--color-accent-2-700); }
.wb-sheet tr.k-x td.l { font-style: italic; color: var(--color-neutral-800); }
.wb-sheet tr.k-x td.a { color: var(--color-neutral-700); }
.wb-sheet tr.k-s td.l, .wb-sheet tr.k-s td.a { font-weight: 600; }
.wb-sheet tr.k-s td.a { border-top: 1px solid var(--color-neutral-400); }
.wb-sheet tr.k-S td.l, .wb-sheet tr.k-S td.a { font-weight: 600; }
.wb-sheet tr.k-S td.a { border-top: 3px double var(--color-text); }

.wb-check {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.625rem;
  padding: 0.5rem 0.875rem;
  background: var(--color-accent-100);
  border-top: 1px solid var(--color-divider);
}
.wb-flag {
  font-size: 0.56rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent-700);
  border: 1px solid var(--color-accent-700);
  padding: 0.125rem 0.375rem;
}
.wb-check span:last-child { font-size: 0.75rem; color: var(--color-neutral-800); }

.wb-tabs {
  display: flex;
  gap: 1px;
  padding: 0 0.5rem;
  background: var(--color-neutral-200);
  border-top: 1px solid var(--color-divider);
  overflow-x: auto;
}
.wb-tabs button {
  border: 0;
  border-top: 2px solid transparent;
  background: transparent;
  color: var(--color-neutral-800);
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.02em;
  padding: 0.5rem 0.75rem 0.45rem;
  white-space: nowrap;
  cursor: pointer;
}
.wb-tabs button:hover { color: var(--color-accent-600); }
.wb-tabs button[aria-pressed="true"] {
  background: var(--color-neutral-100);
  color: var(--color-text);
  font-weight: 600;
  border-top-color: var(--color-accent);
}

/* Author block */
.author { display: grid; gap: 2.5rem; align-items: start; }
.author-figure { margin: 0; }
.author-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 5;
  background: var(--color-surface);
  overflow: hidden;
  filter: grayscale(0.35) contrast(1.15);
}
.author-frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* The newsprint dot screen, for the photograph as printed */
.author-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: radial-gradient(circle, rgba(0,0,0,0.22) 30%, transparent 32%);
  background-size: 3px 3px;
  mix-blend-mode: multiply;
}
/* An unfilled slot reads as a slot, not a hole: no 4:5 void a thousand pixels tall. */
.author-frame.is-empty { filter: none; aspect-ratio: auto; min-height: 11rem; display: grid; place-items: center; }
.author-frame.is-empty::after { content: none; }
.author-placeholder {
  font-size: 0.82rem;
  color: var(--color-neutral-700);
  text-align: center;
  padding: 1.5rem;
  border: 1px dashed var(--color-neutral-400);
  margin: 1rem;
}
.author-figure figcaption { margin-top: 0.5rem; font-size: 0.72rem; color: var(--color-neutral-700); }
.author-label { font-size: 0.69rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-neutral-600); margin: 0 0 1.125rem; }
.author-lead {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.375rem, 1.1rem + 1.1vw, 1.8125rem);
  line-height: 1.28;
  letter-spacing: -0.018em;
  margin: 0 0 1.125rem;
}
.author-body { margin: 0 0 1.75rem; font-size: 1rem; line-height: 1.65; color: var(--color-neutral-800); max-width: 62ch; }

/* --------------------------------------------------------------------------
   17. Product pages — one template, fifteen workbooks

   Every rule here replaces an inline style= attribute in the approved
   prototype. That is not a tidiness preference: script-src carries a sha256 and
   style-src is 'self', with no 'unsafe-inline' anywhere, so a style attribute is
   dropped by the browser exactly the way an onclick would be — and the page
   still serves 200 with all of its text, which is the failure mode this whole
   stylesheet's neighbours exist to prevent.

   Anything the product page could borrow, it borrows: .sec-head, .memo, .wb and
   its whole preview subtree, .buy, .margin-note, .samples, .badge-note. What is
   left below is only the shapes that had no class at all.
   -------------------------------------------------------------------------- */

/* The topbar workbook picker. Ships hidden — it navigates, so it is inert
   without JavaScript — and the script unhides it. */
.wb-pick { display: flex; align-items: center; gap: 0.6rem; }
.wb-pick[hidden] { display: none; }
.wb-pick-label {
  font-size: 0.59rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-neutral-700);
  white-space: nowrap;
}
.wb-pick-field { position: relative; display: inline-flex; align-items: center; }
.wb-pick-sel {
  appearance: none;
  -webkit-appearance: none;
  font-family: var(--font-heading);
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--color-text);
  background: transparent;
  border: 0;
  border-bottom: 2px solid var(--color-accent);
  border-radius: 0;
  padding: 0.32rem 1.5rem 0.26rem 0.1rem;
  max-width: min(56vw, 21rem);
  text-overflow: ellipsis;
  cursor: pointer;
}
.wb-pick-sel:hover { border-bottom-color: var(--color-accent-600); }
.wb-pick-sel:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
.wb-pick-arrow {
  position: absolute;
  right: 0.3rem;
  font-size: 0.6rem;
  line-height: 1;
  color: var(--color-accent-700);
  pointer-events: none;
}

/* Hero. The preview column is tall; top-align it against the copy rather than
   letting the grid centre a short memo block against a long table. */
.hero-product { align-items: start; }
.hero-copy .sec-num { padding-top: 0; }
.prod-code { font-variant-numeric: tabular-nums; }
.hero-product .lede { max-width: 34ch; }
.prod-benefit {
  margin: 1rem 0 0;
  max-width: 50ch;
  font-size: 1rem;
  line-height: 1.62;
  color: var(--color-neutral-800);
}
.hero-product .memo { margin-top: clamp(1.75rem, 3vw, 2.5rem); }
.prod-preview-kicker {
  margin: 0 0 0.6rem;
  font-size: 0.69rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent-700);
}
.prod-preview-note {
  margin: 0.6rem 0 0;
  font-size: 0.75rem;
  color: var(--color-neutral-700);
  font-style: italic;
}

/* 01 — one card per tab. */
.tabgrid {
  display: grid;
  gap: 2.25rem 3rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}
.tabcard-num {
  margin: 0 0 0.5rem;
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  color: var(--color-accent-700);
  font-variant-numeric: tabular-nums;
}
.tabcard h3 { font-size: 1.125rem; margin-bottom: 0.4rem; }
.tabcard-caption {
  margin: 0 0 0.5rem;
  font-size: 0.86rem;
  line-height: 1.5;
  color: var(--color-neutral-700);
  font-style: italic;
}
.tabcard-note {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.58;
  color: var(--color-neutral-800);
  max-width: 36ch;
}

/* 02 and 03 — three points, same shape in both. */
.pointgrid {
  display: grid;
  gap: 2rem 3.5rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}
.point h3 { font-size: 1.03rem; margin-bottom: 0.4rem; }
.point p {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.58;
  color: var(--color-neutral-800);
  max-width: 36ch;
}

/* The .xlsx screenshot. Ships commented out in the markup until a capture
   exists; these rules are here so uncommenting is the whole job. */
.asset-figure {
  margin: clamp(2.5rem, 4vw, 3.5rem) 0 0;
  display: grid;
  gap: 2rem 3rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  align-items: start;
}
.asset-frame {
  position: relative;
  aspect-ratio: 16 / 10;
  background: var(--color-surface);
  border: 1px solid var(--color-divider);
}
.asset-frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
.asset-cap {
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--color-neutral-800);
  max-width: 44ch;
}
.asset-kicker {
  display: block;
  font-size: 0.69rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent-700);
  margin-bottom: 0.5rem;
}

/* 04 — price, licence, warranty. */
.licence-grid {
  display: grid;
  gap: 2.5rem 3.5rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
  align-items: start;
}
.tier { padding: 1.1rem 0; border-top: 1px solid var(--color-neutral-300); }
.tier-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
}
.tier-head h3 { font-size: 1.03rem; margin: 0; }
.tier-price {
  font-family: var(--font-heading);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.015em;
  font-size: 0.94rem;
  color: var(--color-neutral-700);
}
.tier-price-lead { font-size: 1.5rem; color: var(--color-text); }
.tier-note {
  margin: 0.35rem 0 0;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--color-neutral-800);
  max-width: 40ch;
}
.tier-actions {
  border-top: 1px solid var(--color-neutral-300);
  padding-top: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
}

/* The accuracy warranty. Given the second accent because it is the only
   contractual sentence on the page. */
.warranty { border-top: 3px solid var(--color-accent-2-700); padding-top: 1.25rem; max-width: 46ch; }
.warranty-kicker {
  margin: 0 0 0.6rem;
  font-size: 0.69rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent-2-700);
}
.warranty-lead {
  margin: 0;
  font-size: 1.0625rem;
  line-height: 1.45;
  font-weight: 600;
  letter-spacing: -0.012em;
}
.warranty-body { margin: 0.85rem 0 0; font-size: 0.88rem; line-height: 1.6; color: var(--color-neutral-800); }
.licence-grid .margin-note { margin-top: 2rem; }

/* 05 — related workbooks. Reuses .samples for its ruled rows, then overrides
   the three-up breakpoint below: these rows run name / note / price ACROSS,
   rather than three cards side by side. */
.related-list { grid-template-columns: 1fr; }
.related-row {
  display: grid;
  gap: 0.35rem 1.5rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  align-items: baseline;
}
.related-row .badge-note { margin: 0; }
.related-row .sample-state { text-align: right; font-variant-numeric: tabular-nums; }
.related-back { margin: 1.75rem 0 0; }

/* --------------------------------------------------------------------------
   18. Breakpoints
   -------------------------------------------------------------------------- */
@media (min-width: 35rem) {
  .signup { grid-template-columns: 1fr auto; gap: 0.75rem; }
  .signup .buy { font-size: 0.97rem; padding: 0.6rem 1.4rem; }
  .form-filter { grid-template-columns: minmax(0, 1fr) auto; }
}

@media (min-width: 43.75rem) {
  :root { --gutter: 2rem; }
  .badges { grid-template-columns: repeat(3, 1fr); }
  .samples { grid-template-columns: repeat(3, 1fr); column-gap: 2.5rem; }
  /* Related workbooks opt out: those rows read across, not three abreast.
     Declared here rather than earlier so it outranks the line above. */
  .related-list { grid-template-columns: 1fr; column-gap: 0; }
  .sec-head { grid-template-columns: 4rem 1fr; }
  .foot-grid { grid-template-columns: 1.5fr 1fr 1fr; }
  .form-jump ul { grid-template-columns: repeat(3, 1fr); }

  .legal-doc thead { display: table-header-group; }
  .legal-doc thead tr, .legal-doc tbody tr { display: table-row; padding: 0; border-bottom: 0; }
  .legal-doc th, .legal-doc td {
    display: table-cell;
    padding: 0.5rem 0.75rem;
    vertical-align: top;
    border-bottom: 1px solid var(--color-neutral-300);
  }
  .legal-doc th[scope="col"] {
    font-size: 0.66rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-neutral-600);
    border-bottom: 1px solid var(--color-divider);
  }
  .legal-doc tbody tr:last-child th, .legal-doc tbody tr:last-child td { border-bottom: 0; }

  .forms { display: table; }
  .forms thead { display: table-header-group; }
  .forms tbody { display: table-row-group; }
  .forms tr { display: table-row; padding: 0; }
  .forms th, .forms td {
    display: table-cell;
    padding: 0.45rem 0.85rem 0.45rem 0;
    border-bottom: 1px solid var(--color-neutral-300);
    vertical-align: baseline;
  }
  .forms th {
    font-size: 0.6rem;
    font-weight: 400;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-neutral-600);
    text-align: left;
    border-bottom: 1px solid var(--color-divider);
    white-space: nowrap;
  }
  .forms tr:last-child td { border-bottom: 0; }
  .f-code { width: 7.5rem; white-space: nowrap; }
  .f-date { width: 7rem; padding-right: 0; margin-top: 0; white-space: nowrap; }
  .group-row th {
    display: table-cell;
    font-size: 0.72rem;
    color: var(--color-accent-700);
    padding: 1.75rem 0 0.4rem;
    border-bottom: 1px solid var(--color-divider);
    white-space: normal;
  }
  .forms tbody:first-of-type .group-row th { padding-top: 0.9rem; }
}

@media (min-width: 60rem) {
  .hero { grid-template-columns: 1.35fr 1fr; align-items: start; column-gap: clamp(2.5rem, 5vw, 4.5rem); }
  .hero-index { grid-template-columns: 1.3fr 1fr; align-items: end; }
  .credential { max-width: 42ch; }
  .sec-head { grid-template-columns: 5rem 1fr; }
  .cards { grid-template-columns: 1fr; }
  .standard { grid-template-columns: 1fr 1fr; }
  .split { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 3.5rem; align-items: start; }
  .signup { max-width: 42rem; }
  .cat-layout { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 3rem; }
  .cat-pane { position: sticky; top: 5rem; }
  .author { grid-template-columns: 0.8fr 1.2fr; gap: 3.5rem; }
  /* No photograph yet — the bio and badges take the full measure on their own. */
  .author-solo { grid-template-columns: 1fr; }
  .hub-cards { grid-template-columns: repeat(2, 1fr); }
}

/* --------------------------------------------------------------------------
   19. Motion — one restrained reveal, above the fold only
   -------------------------------------------------------------------------- */
@keyframes rise {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: no-preference) {
  .hero-copy, .hero-index > * { animation: rise 420ms cubic-bezier(0.22, 0.61, 0.36, 1) both; }
  .hero-index > *:nth-child(2) { animation-delay: 70ms; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* --------------------------------------------------------------------------
   20. Print — the page should print like the documents it sells
   -------------------------------------------------------------------------- */
@media print {
  body { font-size: 10.5pt; color: #000; background: #fff; }
  .topbar-fixed, .topnav, .buy, .signup, .skip, .lang, .seg, .cat-bar, .wb-tabs, .wb-pick, .form-filter, .form-jump, .no-match { display: none; }
  .section, .masthead { padding: 0.75rem 0; }
  .card, .samples li, .hub-card, .forms tr, .form-group { break-inside: avoid; }
  a { color: #000; text-decoration: underline; }
  .cat-layout, .author, .split, .hero, .hero-index { display: block; }
  .cat-pane { position: static; }
}
/* Product experience — 2026-09. Static discovery, bilingual details. */
.product-experience { --font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-family: var(--font-body); font-size: 17px; line-height: 1.65; }
.product-experience h1, .product-experience h2, .product-experience h3 { font-family: var(--font-heading); }
.topnav, .lang, .topbar-end { font-family: system-ui, -apple-system, "Segoe UI", sans-serif; }
.product-experience .section { padding-block: clamp(2.75rem, 5vw, 4.75rem); }
.product-experience h2 { font-size: clamp(1.85rem, 3vw, 2.7rem); letter-spacing: -.025em; line-height: 1.16; margin-bottom: 1.1rem; }
.product-experience h3 { line-height: 1.25; }
.product-experience .buy { background: #006786; border-color: #006786; color: #fff; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .6rem; padding: .7rem 1.1rem; font-family: var(--font-body); font-size: .92rem; text-align: center; line-height: 1.4; }
.product-experience .buy:hover { background: #004961; border-color: #004961; color: #fff; }
.product-experience .buy-secondary { background: transparent; color: #004961; border-color: #a8b4b9; }
.product-experience .buy-secondary:hover { background: #e2eef2; color: #004961; }
.eyebrow { font-size: .8rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; color: #52616a; margin: 0 0 1rem; line-height: 1.5; }
.small-copy { font-size: .84rem; color: #52616a; line-height: 1.6; }
.measure { max-width: 70ch; }
.section-intro { max-width: 760px; margin-bottom: 2rem; }
.section-intro p:last-child { margin-bottom: 0; }
.home-hero { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(260px,.8fr); align-items: center; gap: 5rem; padding-block: 4rem 3.5rem; }
.home-hero h1 { font-size: clamp(2.4rem,4.3vw,4.1rem); line-height: 1.08; letter-spacing: -.035em; max-width: 16ch; margin-bottom: 1.5rem; }
.home-intro { max-width: 60ch; font-size: 1.1rem; color: #444141; }
.hero-note { padding: 2.2rem; background: #183f4b; color: #e7f1f3; border-top: 4px solid #0088b0; }
.hero-note .eyebrow { color: #c6e2ea; }
.hero-note p:last-child { font-size: .9rem; margin-bottom: 0; }
.hero-note-title { font-family: var(--font-heading); font-size: clamp(1.85rem,2.6vw,2.7rem); line-height: 1.18; margin: 1.5rem 0; color: #fff; }
.product-section { border-top: 1px solid #cdd1d2; }
.product-card-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
.product-card { background: #fff; border: 1px solid #d4d9da; border-top: 3px solid #006786; padding: 2rem; display: flex; flex-direction: column; }
.product-card h3 { font-size: 2.7rem; margin-bottom: .35rem; }
.product-card h3 a { text-decoration: none; color: #201e1d; display: flex; align-items: center; justify-content: space-between; }
.product-card h3 a span { font-family: var(--font-body); font-size: 1.5rem; color: #006786; }
.card-counterpart { color: #006786; font-weight: 600; font-size: .9rem; margin-bottom: 1.25rem; }
.card-purpose { max-width: 46ch; }
.benefit-list { list-style: none; padding: 0; margin: 1rem 0 1.5rem; }
.benefit-list li { padding-left: 1.5rem; position: relative; margin-bottom: .65rem; }
.benefit-list li::before { content: "✓"; position: absolute; left: 0; color: #006786; font-weight: 700; }
.card-bottom { border-top: 1px solid #dce1e3; margin-top: auto; padding-top: 1.3rem; }
.card-bottom p:first-child { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: space-between; margin-bottom: .3rem; font-size: .9rem; }
.card-bottom strong { font-size: 1.1rem; }
.card-bottom .buy { width: 100%; }
.text-link { display: inline-block; margin-top: .75rem; font-size: .9rem; }
.workflow-overview { list-style: none; display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 1.4rem; padding: 0; }
.workflow-overview li { border-top: 1px solid #b4c4cb; padding-top: 1rem; }
.step-number { color: #006786; font-weight: 600; font-variant-numeric: tabular-nums; font-size: .85rem; display: block; margin-bottom: 1rem; }
.workflow-overview h3 { font-size: 1.3rem; margin-bottom: .7rem; }
.workflow-overview p { font-size: .93rem; }
.section-link { margin-top: 1.75rem; display: flex; flex-wrap: wrap; gap: .8rem 1.5rem; }
.sample-cards { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
.sample-cards article { background: #e7edef; padding: 1.75rem; }
.sample-cards h3 { font-size: 1.5rem; }
.sample-cards a { display: block; margin-top: .6rem; }
.about-layout, .release-layout { display: grid; grid-template-columns: .8fr 1.2fr; gap: 4rem; }
.about-lead { font-family: var(--font-heading); font-size: 1.55rem; line-height: 1.4; }
.quality-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 2rem; margin-top: 2rem; }
.quality-grid h3 { font-size: 1.3rem; margin-bottom: .8rem; }
.quality-grid p { font-size: .95rem; }
.quality-detail { border-top: 1px solid #cdd1d2; margin-top: 1.5rem; padding-top: 1rem; max-width: 75ch; }
.quality-detail summary { cursor: pointer; font-weight: 600; }
.quality-detail p { margin-top: 1rem; font-size: .95rem; }
.product-faq { max-width: 880px; margin-top: 1.5rem; }
.product-experience .faq summary { font-family: var(--font-body); font-size: 1rem; padding-block: 1.2rem; }
.product-experience .faq-body p { font-size: 1rem; }
.product-hero { display: grid; grid-template-columns: minmax(0,1.4fr) minmax(280px,.8fr); gap: 4rem; padding-block: 3.5rem; align-items: start; }
.product-hero h1 { font-size: clamp(2.4rem,4vw,3.7rem); margin-bottom: 1.4rem; line-height: 1.15; }
.product-hero h1 span { display: block; font-size: .43em; color: #52616a; margin-top: .5rem; }
.product-purpose { font-size: 1.2rem; max-width: 53ch; }
.product-facts { background: #e7edef; border-top: 3px solid #006786; padding: 1.65rem; font-size: .93rem; }
.product-facts strong { display: block; font-size: 1.5rem; color: #183f4b; }
.edition-number { font-family: var(--font-heading); font-size: 2rem; margin-bottom: 1rem; }
.edition-number span { font-family: var(--font-body); font-size: .85rem; color: #52616a; }
.product-contents { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; border-top: 1px solid #cdd1d2; border-bottom: 1px solid #cdd1d2; padding-block: .6rem; }
.product-contents a { padding-block: .5rem; font-size: .9rem; }
.preview-layout { display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.25fr); gap: 3rem; align-items: center; }
.preview-layout > div { min-width: 0; }
.product-experience .wb { min-width: 0; }
.product-experience .wb-sheet { overflow-x: auto; }
.product-experience .wb-sheet table { min-width: 450px; font-size: .85rem; }
.product-experience .wb-sheet td.l { white-space: normal; }
.product-experience .wb-tabs { flex-wrap: wrap; }
.product-experience .wb-tabs[hidden] { display: none; }
.product-experience .wb-tabs button { min-height: 44px; font-size: .82rem; }
.product-experience .wb-legend { gap: .5rem; }
.product-experience .wb-key, .product-experience .wb-caption, .product-experience .wb-chrome-meta, .product-experience .wb-version { font-size: .78rem; letter-spacing: 0; }
.product-experience .wb-sheet th { font-size: .72rem; letter-spacing: .05em; }
.product-experience .wb-sheet td.r { font-size: .78rem; }
.workflow-steps { list-style: none; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem 3rem; padding: 0; }
.workflow-steps li { display: grid; grid-template-columns: 2rem 1fr; gap: .7rem; border-top: 1px solid #cdd1d2; padding-top: 1.2rem; }
.workflow-steps h3 { font-size: 1.45rem; margin-bottom: .75rem; }
.workflow-steps p { font-size: .97rem; }
.tab-reference { font-size: .82rem !important; color: #52616a; padding-top: .25rem; }
.coverage-layout { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 4rem; }
.scope-note { border-left: 3px solid #9f285f; padding-left: 1.25rem; margin-top: 2rem; }
.scope-note h3 { font-size: 1.2rem; margin-bottom: .65rem; }
.scope-note p { font-size: .93rem; }
.coverage-group { border-top: 1px solid #bdc7cb; padding-block: 1rem; }
.coverage-group summary { cursor: pointer; font-weight: 600; padding-block: .3rem; }
.coverage-group summary span { float: right; font-size: .8rem; color: #52616a; font-weight: 400; }
.sheet-inventory { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 1.1rem 0 .3rem; padding: 0; }
.sheet-inventory li { padding: .3rem .6rem; background: #e7edef; font-size: .83rem; }
.demo-gallery { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2rem; margin-top: 2.5rem; }
.demo-figure { margin: 0; min-width: 0; }
.demo-figure img { width: 100%; height: auto; display: block; border: 1px solid #cdd1d2; background: #fff; }
.demo-figure a { display: block; }
.demo-figure figcaption { margin-top: .85rem; font-size: .94rem; }
.demo-figure figcaption span { display: block; color: #52616a; margin-top: .3rem; font-size: .83rem; }
.release-files { padding-left: 1.2rem; font-size: .8rem; overflow-wrap: anywhere; }
.licence-cards { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.2rem; }
.licence-cards article { border: 1px solid #cdd1d2; background: #fff; padding: 1.5rem; display: flex; flex-direction: column; align-items: start; }
.licence-cards h3 { font-size: 1.45rem; }
.licence-cards .buy { margin-top: auto; font-size: .85rem; }
.tier-amount { font-size: 1.4rem; font-weight: 600; color: #183f4b; margin-top: .75rem; }
.related-band .wrap { display: flex; gap: 1rem 2rem; flex-wrap: wrap; align-items: center; }
.related-band h2 { margin: 0 auto 0 0; }
#image-dialog { width: min(96vw,1400px); max-width: 96vw; max-height: 95dvh; border: 0; padding: 1rem; background: #fff; color: #201e1d; }
#image-dialog::backdrop { background: #102b38dd; }
.dialog-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; position: sticky; top: -1rem; padding-block: .5rem; background: #fff; }
.dialog-toolbar h2 { font-size: 1.1rem; margin: 0; }
#image-close { min-height: 44px; padding: .5rem 1rem; font: inherit; cursor: pointer; background: #e7edef; border: 1px solid #a8b4b9; }
#image-full { width: 100%; height: auto; display: block; }
@media (max-width: 959px) {
 .home-hero, .product-hero { gap: 2rem; }
 .home-hero { grid-template-columns: 1.4fr 1fr; }
 .workflow-overview { grid-template-columns: repeat(3,minmax(0,1fr)); }
 .coverage-layout, .preview-layout { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
 .licence-cards { grid-template-columns: 1fr; }
 .about-layout, .release-layout { gap: 2rem; }
}
@media (max-width: 699px) {
 .topbar-fixed { position: static; }
 .topbar { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .5rem; padding-block: .7rem; }
 .topbar .brand { grid-column: 1; }
 .topbar .topbar-end { grid-column: 2; grid-row: 1; }
 .topbar .topnav { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0 .5rem; font-size: .82rem; }
 .topbar .topnav a { min-height: 44px; display: flex; align-items: center; padding-block: .3rem; }
 .topbar .lang a, .topbar .lang .here { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
 .topbar .topbar-end > .buy { display: none; }
 .topbar .brand-sub { font-size: .55rem; }
 .product-experience { font-size: 16px; }
 .home-hero, .product-hero { grid-template-columns: 1fr; padding-block: 2.25rem; }
 .home-hero h1 { max-width: 19ch; }
 .hero-note { padding: 1.5rem; }
 .hero-note-title { font-size: 1.65rem; }
 .hero-note .eyebrow { margin-bottom: .7rem; }
 .hero-note-title { margin: .5rem 0; }
 .product-card-grid, .sample-cards, .about-layout, .release-layout, .quality-grid, .workflow-steps, .demo-gallery { grid-template-columns: 1fr; }
 .product-card { padding: 1.5rem; }
 .workflow-overview { grid-template-columns: 1fr; gap: .3rem; }
 .workflow-overview li { display: grid; grid-template-columns: 2rem 1fr; gap: 0 .5rem; padding-top: 1rem; }
 .workflow-overview p { grid-column: 2; }
 .workflow-overview .step-number { grid-row: 1 / 3; }
 .product-contents { gap: .1rem 1rem; }
 .product-experience .hero-actions { align-items: stretch; }
 .product-experience .hero-actions .buy { flex: 1 1 140px; }
 .product-experience .section { scroll-margin-top: 1rem; }
 .product-experience .wb-sheet table { min-width: 470px; }
}
@media print {
 .product-experience { font-size: 10pt; }
 .hero-note, .product-contents, #image-dialog { display: none; }
 .home-hero, .product-hero, .coverage-layout, .preview-layout { display: block; }
 .demo-figure, .product-card, .workflow-steps li { break-inside: avoid; }
}
/* Editorial product presentation: real worksheets and compact reference sections. */
.hero-extract { margin: 0; min-width: 0; align-self: center; }
.hero-extract a { display: block; background: #fff; border: 1px solid #d7dcde; padding: 12px; }
.hero-extract img { display: block; width: 100%; height: auto; }
.hero-extract figcaption { padding-top: 14px; font-size: 13px; line-height: 1.6; }
.hero-extract figcaption strong, .hero-extract figcaption span { display: block; }
.provision-section { background: #e9eeee; }
.provision-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.provision-layout h2 { max-width: 24ch; }
.provision-details { margin: 0 0 24px; }
.provision-details > div { border-top: 1px solid #bfcaca; padding: 16px 0; }
.provision-details dt { font-weight: 600; margin-bottom: 5px; }
.provision-details dd { margin: 0; }
.edition-label { font-size: 13px; margin: 24px 0 16px; }
.product-experience .home-hero { grid-template-columns: 1.15fr 1fr; gap: 56px; }
.launch-note p { font-size: 13px; color: #435555; padding-top: 14px; }
.hero-extract a:hover { border-color: #006b7d; }
.author-expertise { border-top: 1px solid #cbd1d1; margin-top: 24px; padding-top: 20px; }
.compact-preview summary { cursor: pointer; padding: 16px 0; }
.compact-preview .preview-layout { padding: 24px 0; }
@media (max-width: 760px) { .provision-layout, .product-experience .home-hero { grid-template-columns: 1fr; gap: 28px; } }

/* Discreet, readable author independence footnote. */
.product-experience .author-footnote { font-size: 12px; line-height: 1.65; color: #555f63; margin-top: 24px; }

/* Three equal product choices; stack before the text becomes cramped. */
.product-experience .product-card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.product-experience .product-card h3 { font-size: clamp(24px, 2.3vw, 34px); }
.product-experience .product-card .card-bottom > p { flex-wrap: wrap; gap: 8px; }
@media (max-width: 1000px) { .product-experience .product-card-grid { grid-template-columns: 1fr; } }

.product-experience .hero-credentials { font-size: 14px; line-height: 1.65; max-width: 60ch; margin: 20px 0 24px; }
.product-experience .hero-launch { font-size: 12px; line-height: 1.6; color: #555f63; margin: 16px 0 0; }

/* Workflow illustrations: local assets with a readable mobile text flow. */
.workbook-flowchart { margin-top: 3rem; }
.workbook-flowchart > h3 { font-size: 1.6rem; }
.flowchart-image { margin: 1.5rem auto; max-width: 1000px; }
.flowchart-image img { display:block; width:100%; height:auto; }
.flowchart-text ol { list-style:none; padding:0; max-width:44rem; margin:1.5rem auto; }
.flowchart-text li { position:relative; padding:1.2rem; margin:0 0 2.6rem; border:1px solid #0088b0; background:#fff; scroll-margin-top:6rem; }
.flowchart-text li:not(:last-child)::after { content:'↓'; position:absolute; bottom:-2.3rem; left:50%; color:#006882; font-size:1.5rem; }
.flowchart-text .flow-excel { background:#e8f4f7; }
.flowchart-text .flow-decision { background:#fbeaf2; border-color:#d6006c; }
.flowchart-text h4 { font-size:1.15rem; margin:.5rem 0; }
.flowchart-text p { font-size:1rem; white-space:pre-line; }
.flow-connections a { color:#006882; }
@media (max-width:700px) {
 .flowchart-image { display:none; }
 .workbook-flowchart { overflow-wrap:anywhere; }
 .flowchart-text summary { display:none; }
}

/* Approved September editorial direction. Product tables retain their own styles. */
:root { --editorial-paper:#f7f5ef; --editorial-ink:#162b35; --editorial-teal:#14565a; --editorial-rule:#b6c4c2; --font-ui:Arial, Helvetica, sans-serif; }
.topbar-fixed { position:static; background:var(--editorial-paper); border-bottom:0; backdrop-filter:none; }
.topbar { flex-wrap:nowrap; padding:1.7rem 0; gap:1.5rem; }
.topbar .brand { flex-shrink:0; }
.topbar .brand-name { font-family:var(--font-heading); font-size:2.45rem; font-weight:500; letter-spacing:-.05em; }
.brand-tagline { display:block; max-width:25rem; margin-top:.4rem; font-family:var(--font-ui); font-size:.62rem; line-height:1.65; letter-spacing:.15em; text-transform:uppercase; white-space:normal; color:#475860; }
.topbar .topnav { margin-left:auto; font-family:var(--font-ui); font-size:.86rem; gap:1.7rem; }
.topbar .topnav a { color:var(--editorial-ink); white-space:nowrap; padding:.6rem 0; }
.topbar .topbar-end { margin-left:0; }
.topbar .lang { font-family:var(--font-ui); font-size:.8rem; }
.author-link { text-decoration:underline; text-underline-offset:.2em; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline:3px solid var(--editorial-teal); outline-offset:4px; }
.buy:focus-visible { outline-offset:5px; }
.sr-only { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.editorial-home, .template-library { font-family:var(--font-ui); }
.editorial-home .wrap, .template-library .wrap { max-width:1240px; }
.editorial-home h1, .editorial-home h2, .editorial-home h3, .template-library h1, .template-library h2, .template-library h3 { font-weight:400; }
.editorial-home .home-hero { grid-template-columns:minmax(0,1fr) minmax(0,1.04fr); gap:4rem; padding:4.5rem 0 3.5rem; }
.editorial-home .home-hero h1 { font-size:clamp(2.8rem,4.5vw,4.2rem); line-height:1.08; letter-spacing:-.055em; max-width:17ch; margin:.9rem 0 1.5rem; }
.editorial-home .eyebrow { font-family:var(--font-ui); color:#475d64; font-size:.69rem; letter-spacing:.17em; }
.editorial-home .home-intro { font-size:clamp(1.15rem,1.7vw,1.45rem); line-height:1.55; max-width:37ch; color:#475860; margin-bottom:1.8rem; }
.editorial-home .hero-actions { gap:1rem; }
.product-experience .buy, .template-library .buy { background:var(--editorial-teal); color:#fff; border:1px solid var(--editorial-teal); padding:.85rem 1.4rem; border-radius:2px; font-family:var(--font-heading); font-size:1rem; box-shadow:none; }
.product-experience .buy-secondary, .template-library .buy-secondary { background:transparent; color:var(--editorial-ink); }
.product-experience .buy:hover, .template-library .buy:hover { background:#103f43; color:#fff; }
.editorial-home .hero-credentials { font-family:var(--font-heading); font-size:.95rem; margin:2.6rem 0 .6rem; }
.editorial-home .hero-credentials::before { content:''; display:block; width:2rem; border-top:1px solid #789c9c; margin-bottom:.85rem; }
.editorial-home .hero-launch { font-size:.73rem; margin:0; color:#536269; }
.editorial-home .hero-extract { transform:rotate(-1deg); }
.workpaper-label { display:flex; justify-content:space-between; padding:.7rem 1rem; border:1px solid #d6dfda; border-bottom:0; border-radius:6px 6px 0 0; background:#edf0eb; color:#435657; font-family:var(--font-ui); font-size:.68rem; }
.editorial-home .hero-extract a { padding:0; border:1px solid #d6dfda; box-shadow:0 12px 35px #21383418; }
.editorial-home .hero-extract figcaption { text-align:right; font-size:.8rem; line-height:1.65; padding-top:1rem; }
.editorial-home .hero-extract figcaption strong { font-family:var(--font-heading); font-style:italic; font-weight:400; font-size:.95rem; }
.editorial-home .hero-extract figcaption span { font-size:.7rem; color:#52616a; }
.expertise-band { padding:2.5rem 0; border-bottom:1px solid var(--editorial-rule); }
.expertise-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2rem; }
.expertise-grid article { display:grid; grid-template-columns:2.8rem minmax(0,1fr); gap:1.3rem; padding-right:1.6rem; border-right:1px solid #d3dcd6; }
.expertise-grid article:last-child { border-right:0; padding-right:0; }
.expertise-grid svg { width:2.7rem; height:2.7rem; fill:none; stroke:var(--editorial-teal); stroke-width:1.35; stroke-linecap:round; stroke-linejoin:round; }
.editorial-home .expertise-grid h2 { font-size:1.35rem; line-height:1.2; letter-spacing:-.025em; margin:0 0 .7rem; }
.expertise-grid p { font-size:.9rem; line-height:1.55; color:#52616a; }
.editorial-home .section { padding:3.5rem 0; }
.editorial-home .category-section { padding:2.5rem 0; }
.category-heading { display:flex; align-items:center; justify-content:space-between; gap:2rem; margin-bottom:1.4rem; }
.category-heading h2 { font-size:2.1rem; letter-spacing:-.04em; }
.category-heading .text-link { font-size:.85rem; white-space:nowrap; }
.category-index { border-bottom:1px solid var(--editorial-rule); }
.category-row { display:grid; grid-template-columns:2.5rem minmax(0,1fr) 12rem 1.5rem; align-items:center; gap:1.5rem; padding:1.3rem 0; border-top:1px solid var(--editorial-rule); color:var(--editorial-ink); text-decoration:none; }
.category-row:hover { background:#eef1ea; color:var(--editorial-teal); }
.category-icon { width:2.2rem; height:2.2rem; fill:none; stroke:var(--editorial-teal); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.category-copy strong { display:block; font-family:var(--font-heading); font-size:1.4rem; font-weight:400; letter-spacing:-.025em; line-height:1.3; }
.category-copy > span { display:block; font-size:.88rem; color:#52616a; margin-top:.3rem; }
.category-meta { display:flex; flex-direction:column; align-items:flex-start; gap:.35rem; }
.category-code { font-size:.86rem; color:#43575e; }
.category-status, .entry-status { font-size:.7rem; border-radius:3px; padding:.18rem .5rem; background:#e3eae5; color:#30534f; display:inline-block; }
.category-arrow { font-size:1.4rem; }
.editorial-home .section-intro { margin-bottom:1.7rem; }
.editorial-home .section-intro h2 { font-size:2.1rem; }
.editorial-home .section-intro p { font-size:.9rem; color:#52616a; }
.editorial-home .sample-cards { gap:2.5rem; }
.editorial-home .sample-cards article { border:0; border-top:1px solid var(--editorial-rule); padding:1.2rem 0 0; background:transparent; }
.editorial-home .sample-cards h3 { font-size:1.4rem; margin-bottom:.6rem; }
.editorial-home .sample-cards p, .editorial-home .sample-cards a { font-size:.88rem; }
.editorial-home #samples { background:#f0f1eb; }
.editorial-home .about-layout { grid-template-columns:minmax(0,1fr) minmax(0,1.5fr); gap:4rem; }
.editorial-home .about-layout h2 { font-size:2rem; }
.editorial-home .about-layout p { font-size:.9rem; line-height:1.7; }
.editorial-home .about-layout .about-lead { font-size:1rem; }
.editorial-home .author-footnote { font-size:.75rem; }
.contact-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:6rem; border-top:1px solid var(--editorial-rule); padding-top:2.5rem; }
.editorial-home .contact-layout h2 { font-size:2.7rem; max-width:18ch; letter-spacing:-.05em; }
.contact-layout h3 { font-family:var(--font-ui); font-size:1rem; margin-bottom:.7rem; }
.contact-layout p { max-width:43ch; font-size:.9rem; color:#52616a; }
.contact-email { display:block; width:max-content; margin-top:1rem; font-size:.85rem; }
.editorial-home #faq { padding-top:1rem; }
.editorial-home .faq { max-width:100%; }
.editorial-home .faq summary { font-size:.95rem; }
.editorial-home .faq-body p { font-size:.9rem; }
.sitefoot { background:var(--editorial-paper); border-top:1px solid var(--editorial-rule); }
.sitefoot .foot-grid { gap:3rem; }
.sitefoot .brand-name { font-size:1.8rem; }
.sitefoot p, .sitefoot a { font-size:.8rem; }
.sitefoot .business-identity { font-size:.72rem; }
.template-library .library-hero { padding:3.5rem 0 2.2rem; }
.library-hero h1 { font-size:clamp(2.6rem,4.5vw,4rem); letter-spacing:-.045em; margin-bottom:1rem; }
.library-hero p { color:#52616a; max-width:60ch; }
.library-contents { display:flex; flex-wrap:wrap; gap:.6rem 1.6rem; padding-block:1.2rem; border-block:1px solid var(--editorial-rule); font-size:.88rem; }
.library-contents a { padding:.5rem 0; }
.library-sections { padding-block:2rem 4rem; }
.library-category { padding-block:2rem; scroll-margin-top:2rem; }
.library-category-heading { display:flex; gap:1.25rem; align-items:center; margin-bottom:1.3rem; }
.library-category-heading h2 { font-size:2rem; margin-bottom:.5rem; }
.library-category-heading p { color:#52616a; font-size:.9rem; }
.library-entries { padding-left:3.45rem; }
.library-entry { display:flex; justify-content:space-between; gap:2rem; border-top:1px solid var(--editorial-rule); padding:1.5rem 0; }
.library-entry-copy { max-width:60ch; }
.library-entry h3 { font-size:1.5rem; margin-bottom:.7rem; }
.library-entry p { font-size:.9rem; color:#52616a; }
.library-entry-actions { flex-shrink:0; align-self:center; font-size:.88rem; }
.library-entry .entry-status { margin-bottom:.7rem; }
.category-back { display:block; font-size:.85rem; margin-top:1.5rem; }
@media (max-width:1050px) {
 .topbar { flex-wrap:wrap; gap:.7rem 1.5rem; }
 .topbar .topnav { gap:1.3rem; }
 .editorial-home .home-hero { gap:2rem; }
 .expertise-grid { gap:1.2rem; }
 .expertise-grid article { gap:.8rem; padding-right:1rem; grid-template-columns:2rem minmax(0,1fr); }
 .expertise-grid svg { width:2rem; }
 .category-row { grid-template-columns:2.5rem minmax(0,1fr) 10rem 1rem; gap:1rem; }
}
@media (max-width:760px) {
 .topbar { display:flex; flex-wrap:wrap; padding:1.3rem 0; }
 .topbar .brand { max-width:100%; flex-shrink:1; }
 .topbar .brand-name { font-size:2rem; }
 .brand-tagline { max-width:22rem; font-size:.59rem; letter-spacing:.1em; }
 .topbar .topnav { display:flex; flex-wrap:wrap; order:3; width:100%; margin-left:0; gap:.1rem 1.3rem; font-size:.8rem; }
 .topbar .topnav a { min-height:44px; }
 .topbar .topbar-end { margin-left:auto; }
 .editorial-home .home-hero { grid-template-columns:1fr; padding:2rem 0; gap:2rem; }
 .editorial-home .home-hero h1 { font-size:clamp(2.8rem,7vw,3.7rem); max-width:19ch; }
 .editorial-home .hero-extract { transform:none; max-width:35rem; }
 .editorial-home .hero-credentials { margin-top:1.8rem; }
 .expertise-grid { grid-template-columns:1fr; gap:1.5rem; }
 .expertise-grid article { border-right:0; padding:0; grid-template-columns:2.5rem minmax(0,1fr); }
 .expertise-grid svg { width:2.4rem; }
 .expertise-grid h2 { max-width:none; }
 .category-heading { display:block; }
 .category-heading h2 { margin-bottom:1rem; font-size:1.9rem; }
 .category-row { grid-template-columns:2rem minmax(0,1fr) 1rem; gap:.5rem 1rem; padding:1.2rem 0; }
 .category-row .category-icon { width:2rem; grid-column:1; grid-row:1; }
 .category-copy { grid-column:2; }
 .category-copy strong { font-size:1.3rem; }
 .category-meta { grid-column:2; flex-direction:row; flex-wrap:wrap; gap:.5rem; }
 .category-arrow { grid-column:3; grid-row:1; }
 .editorial-home .about-layout, .contact-layout { grid-template-columns:1fr; gap:1.6rem; }
 .editorial-home .contact-layout h2 { font-size:2.3rem; }
 .editorial-home .section { padding:2.5rem 0; }
 .library-entries { padding-left:0; }
 .library-entry { flex-direction:column; gap:1rem; }
 .library-entry-actions { align-self:flex-start; }
 .sitefoot .foot-grid { gap:2rem; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } * { transition:none !important; } }

/* Approved editorial A: fine serif lettering, maple leaf, persistent template navigation. */
:root { --font-heading:"Times New Roman", Times, "Source Serif 4", serif; }
.brand-lockup { display:inline-flex; align-items:center; gap:.85rem; }
.brand-leaf { flex:none; width:1.65rem; height:1.9rem; object-fit:contain; }
.topbar .brand-name { font-weight:400; letter-spacing:-.055em; }
.brand-tagline { font-family:"Source Serif 4", Georgia, serif; letter-spacing:.2em; }
.sitefoot .brand-lockup .brand-name { margin:0; font-family:var(--font-heading); font-weight:400; }
.editorial-home h1, .editorial-home h2, .template-library h1, .template-library h2,
.product-experience h1, .product-experience h2, .product-experience h3 { font-family:var(--font-heading); font-weight:400; letter-spacing:-.035em; }
.product-experience { font-family:var(--font-ui); }
.product-topbar { position:sticky; top:0; z-index:30; border-bottom:1px solid var(--editorial-rule); box-shadow:0 3px 12px #162b3508; }
.product-topbar .topbar { flex-wrap:nowrap; padding:.75rem 0; gap:1.5rem; }
.product-topbar .brand-name { font-size:2rem; }
.product-topbar .brand-tagline { display:none; }
.product-topbar .topnav { width:auto; order:initial; flex-wrap:nowrap; gap:1.5rem; }
.workbook-switch-desktop { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--editorial-rule); font: .85rem var(--font-ui); }
.workbook-switch-desktop nav { display:flex; gap:1.25rem; }
.workbook-switch-link { display:flex; align-items:center; min-height:48px; padding:.65rem .15rem; color:#42565b; text-decoration:none; }
.workbook-switch-desktop .workbook-switch-link { border-bottom:3px solid transparent; }
.workbook-switch-desktop .workbook-switch-link[aria-current="page"] { color:var(--editorial-teal); border-color:var(--editorial-teal); font-weight:700; }
.workbook-switch-link:hover { color:var(--editorial-teal); background:#14565a0a; }
.workbook-switch-all { display:flex; align-items:center; gap:.5rem; min-height:48px; text-decoration:none; }
.workbook-switch-mobile { display:none; }
.workbook-switch-placeholder { gap:.4rem; }
.switch-planned { padding:.15rem .35rem; border:1px solid var(--editorial-rule); border-radius:3px; font-size:.62rem; line-height:1.2; color:#475860; font-weight:400; }
body :target, .library-category,
.editorial-home :target, .editorial-home .section,
.product-experience :target, .product-experience .section { scroll-margin-top:9rem; }
@media (max-width:900px) {
 .product-topbar .topbar { gap:.75rem; }
 .product-topbar .topnav { gap:.85rem; font-size:.8rem; }
 .product-topbar .brand-name { font-size:1.7rem; }
}
@media (max-width:1100px) {
 .product-topbar .topbar { padding:.6rem 0; }
 .product-topbar .topnav { display:none; }
 .product-topbar .brand-name { font-size:1.8rem; }
 .product-topbar .brand-leaf { width:1.3rem; height:1.5rem; }
 .workbook-switch-desktop { display:none; }
 .workbook-switch-mobile { display:block; position:relative; border-top:1px solid var(--editorial-rule); font:.8rem var(--font-ui); }
 .workbook-switch-mobile summary { min-height:48px; display:flex; align-items:center; gap:.75rem; cursor:pointer; list-style:none; color:var(--editorial-teal); font-weight:700; }
 .workbook-switch-mobile summary::-webkit-details-marker { display:none; }
 .workbook-switch-mobile summary::after { content:'⌄'; font-size:1.2rem; }
 .workbook-switch-mobile[open] summary::after { content:'⌃'; }
 .switch-hint { margin-left:auto; font-size:.7rem; font-weight:400; }
 .workbook-switch-mobile nav { position:absolute; left:0; right:0; top:100%; padding:.4rem .8rem; background:var(--editorial-paper); border:1px solid var(--editorial-rule); box-shadow:0 12px 24px #162b3520; max-height:60vh; overflow:auto; }
 .workbook-switch-mobile nav a { display:flex; align-items:center; min-height:48px; padding:.65rem; text-decoration:none; }
 .workbook-switch-mobile a[aria-current="page"] { background:#14565a12; color:var(--editorial-teal); font-weight:700; }
 body :target, .library-category,
 .editorial-home :target, .editorial-home .section,
 .product-experience :target, .product-experience .section { scroll-margin-top:8rem; }
}
@media print { .product-topbar { display:none; } }

/* Compact forms chooser. Scoped so product and legal pages keep their layout. */
.forms-compact { padding-top: 28px; padding-bottom: 24px; }
.forms-compact h1 { font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.15; margin: 0 0 8px; max-width: none; }
.forms-intro { margin: 0 0 20px; font: 1rem/1.5 Arial, sans-serif; }
.forms-indexes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.forms-index { display: grid; grid-template-rows: auto 1fr auto auto; padding: 16px; border: 1px solid #a9b9b8; border-top: 3px solid #155e63; text-decoration: none; color: inherit; gap: 8px; }
.forms-index:hover { background: #e8efed; }
.forms-index:focus-visible { outline: 3px solid #155e63; outline-offset: 3px; }
.forms-index h2 { font-size: 1.35rem; line-height: 1.25; margin: 0; }
.forms-index p { font: .9rem/1.45 Arial, sans-serif; margin: 0; }
.forms-index-count { font: .85rem/1.4 Arial, sans-serif; color: #495858; }
.forms-index-open { font: 600 .9rem/1.5 Arial, sans-serif; color: #155e63; }
.forms-source { margin: 16px 0 0; font: .8rem/1.5 Arial, sans-serif; color: #495858; }
.forms-hub-dense footer { padding-top: 24px; padding-bottom: 20px; }
.forms-hub-dense footer .disclaimer { margin-top: 16px; }
@media (max-width: 640px) {
  .forms-compact { padding-top: 20px; }
  .forms-indexes { grid-template-columns: 1fr; gap: 10px; }
  .forms-index { grid-template-columns: 1fr auto; grid-template-rows: auto auto auto; gap: 5px 12px; padding: 12px; }
  .forms-index h2, .forms-index p { grid-column: 1 / -1; }
}

/* Compact searchable form indexes. */
.forms-list-dense #forms { padding-top: 20px; padding-bottom: 24px; }
.forms-list-title { font-size: clamp(1.5rem, 3vw, 2rem); line-height: 1.15; margin: 0 0 14px; }
.forms-list-dense .entity-switch { margin-bottom: 12px; }
.forms-list-dense .es-item { padding: 6px 10px; font-size: 12px; letter-spacing: 0; text-transform: none; }
.forms-list-dense .form-filter { margin-bottom: 0; padding-bottom: 10px; gap: 6px 16px; }
.forms-list-dense .form-filter input { padding: 9px 12px; }
.forms-list-dense .group-row th { padding-top: 12px; }
@media (max-width: 640px) {
  .forms-list-dense #forms { padding-top: 16px; }
  .forms-list-dense .form-filter { grid-template-columns: minmax(0, 1fr) auto; }
  .forms-list-dense .filter-status { font-size: 10px; letter-spacing: 0; }
  .forms-list-dense .es-item { padding: 6px 8px; }
}
/* Compact practitioner workspace: tools first, supporting detail on demand. */
.resource-main { padding-top: 16px; padding-bottom: 18px; }
.resource-nav { display: flex; flex-wrap: wrap; gap: 6px 20px; font-size: 13px; padding: 0 0 10px; border-bottom: 1px solid #cbd4c9; }
.resource-nav a { padding: 5px 0; }
.resource-nav a[aria-current] { color: #254534; font-weight: 700; text-decoration-thickness: 2px; }
.resource-hero h1 { font: 400 clamp(27px, 3vw, 38px)/1.15 "Times New Roman", Times, serif; letter-spacing: -.02em; margin: 16px 0; }
.resource-cards { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; }
.resource-cards article { padding: 16px; border: 1px solid #bdc7bf; }
.resource-cards h2 { font: 24px/1.2 "Times New Roman", Times, serif; margin: 0 0 8px; }
.resource-cards h2 a { color: inherit; text-decoration: none; }
.resource-cards p { font-size: 14px; line-height: 1.5; margin: 0; }
.resource-workspace { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.resource-panel { padding: 16px 20px; border: 1px solid #bdc7bf; background: #fffdf7; }
.resource-panel h2 { font: 26px/1.15 "Times New Roman", Times, serif; margin: 0 0 12px; }
.resource-panel p { font-size: 13px; line-height: 1.5; margin: 8px 0; }
.resource-panel label { display: block; font-weight: 600; font-size: 14px; margin: 14px 0 6px; }
.resource-panel input, .resource-panel select { display: block; width: 100%; min-height: 42px; padding: 8px; border: 1px solid #889b8e; border-radius: 2px; background: white; color: #233f32; font: inherit; font-size: 14px; }
.resource-panel button { margin-top: 14px; }
.resource-result { background: #eaf0e9; }
.resource-result dt { font-size: 12px; margin-top: 16px; }
.resource-result dd { margin: 4px 0; font: 24px/1.2 "Times New Roman", Times, serif; }
.resource-notice { border-left: 3px solid #a47c37; background: #f1ecde; padding: 9px 12px; font-size: 13px; line-height: 1.5; }
.resource-details { border-top: 1px solid #cbd4c9; padding: 10px 0; margin-top: 8px; font-size: 14px; }
.resource-details summary { cursor: pointer; font-weight: 600; padding: 5px 0; }
.resource-details p, .resource-details li { line-height: 1.6; max-width: 900px; }
.resource-details h2 { font-size: 23px; margin: 18px 0 8px; }
.resource-foot { border-top: 1px solid #cbd4c9; padding-block: 14px; display: flex; flex-wrap: wrap; gap: 12px 28px; font-size: 12px; }
.resource-foot nav { display: flex; flex-wrap: wrap; gap: 16px; }
.resource-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; border-block: 1px solid #bdc7bf; padding: 9px 0; margin-bottom: 10px; font-size: 13px; }
.resource-toolbar p { margin: 0; }
.resource-toolbar > div { display: flex; gap: 16px; align-items: center; }
#t2-checklist { columns: 2; column-gap: 30px; }
.checklist-group { margin: 16px 0; break-inside: avoid; }
.checklist-group h2 { font: 23px "Times New Roman", Times, serif; margin: 0 0 7px; }
.checklist-group h2 span { color: #768c80; padding-right: 8px; }
.checklist-item { display: flex; align-items: flex-start; gap: 10px; padding: 8px 0; border-bottom: 1px solid #d9dfd7; cursor: pointer; font-size: 13px; line-height: 1.5; }
.checklist-item input { width: 18px; height: 18px; flex-shrink: 0; margin-top: 2px; accent-color: #284d3a; }
.checklist-item:has(input:checked) { background: #eaf0e9; }
.rate-baseline { background: #eaf0e9; padding: 8px 12px; font-size: 14px; margin: 10px 0; }
.rate-scope, .rate-short-disclosure { font-size: 12px; line-height: 1.5; margin: 8px 0; }
.rate-scroll { overflow-x: auto; }
.rate-table { border-collapse: collapse; width: 100%; min-width: 690px; font-size: 13px; }
.rate-table caption { text-align: left; font-size: 11px; padding: 0 0 8px; }
.rate-table th, .rate-table td { text-align: right; padding: 8px 10px; border-bottom: 1px solid #cbd4c9; vertical-align: top; font-variant-numeric: tabular-nums; }
.rate-table th:first-child { text-align: left; width: 38%; }
.rate-table thead { background: #254534; color: #fffdf7; }
.rate-table tbody tr:nth-child(even) { background: #edf1e9; }
.rate-note { display: block; font-size: 11px; font-weight: 400; line-height: 1.4; margin-top: 3px; }
.rate-verification { display: flex; flex-wrap: wrap; gap: 4px 20px; font-size: 11px; color: #42584a; }
.rate-verification p:empty { display: none; }
.rate-verification p { margin: 0; flex-basis: 100%; }
.resource-page :focus-visible { outline: 3px solid #94671f; outline-offset: 3px; }
#deadline-error { color: #8f291e; }
/* Existing marketing pages: retain substance, reduce repeated framing. */
html[lang="en-CA"] .editorial-home .home-hero { padding: 22px 0; gap: 24px; grid-template-columns: 1.5fr 1fr; align-items: center; }
html[lang="en-CA"] .editorial-home .home-hero h1 { font-size: clamp(32px, 3.3vw, 44px); max-width: 24ch; }
html[lang="en-CA"] .editorial-home .home-intro { font-size: 16px; margin: 10px 0; }
html[lang="en-CA"] .editorial-home .hero-credentials { margin-top: 12px; }
html[lang="en-CA"] .editorial-home .hero-extract { transform: none; }
html[lang="en-CA"] .editorial-home .hero-extract img { max-height: 170px; object-fit: contain; }
html[lang="en-CA"] .editorial-home .hero-extract figcaption { font-size: 11px; padding: 8px; }
html[lang="en-CA"] .product-experience .section { padding: 22px 0; }
html[lang="en-CA"] .product-experience .section-intro { margin-bottom: 14px; }
html[lang="en-CA"] .product-experience .section h2 { font-size: 28px; margin-bottom: 12px; }
html[lang="en-CA"] .product-hero { padding-block: 20px; gap: 24px; }
html[lang="en-CA"] .product-hero h1 { font-size: 40px; }
html[lang="en-CA"] .product-purpose { font-size: 17px; margin: 12px 0; }
html[lang="en-CA"] .product-facts { padding: 18px; }
html[lang="en-CA"] .product-facts .edition-number { font-size: 32px; }
html[lang="en-CA"] .category-return { margin-block: 14px 0; }
html[lang="en-CA"] .product-contents { padding-block: 12px; }
html[lang="en-CA"] .category-row { padding-block: 13px; }
html[lang="en-CA"] .demo-gallery { gap: 14px; }
html[lang="en-CA"] .demo-gallery img { height: 145px; object-fit: contain; object-position: top; }
html[lang="en-CA"] .demo-figure figcaption { padding: 8px; font-size: 12px; }
html[lang="en-CA"] .sample-card { padding: 16px; }
html[lang="en-CA"] .licence-cards article { padding: 18px; }
html[lang="en-CA"] .library-hero { padding-block: 24px 12px; }
html[lang="en-CA"] .library-hero h1 { font-size: 38px; }
html[lang="en-CA"] .library-hero .home-intro { font-size: 16px; }
html[lang="en-CA"] .sitefoot { padding-block: 24px; }
.home-quick-tools .wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 28px; }
.home-quick-tools nav { display: flex; flex-wrap: wrap; gap: 10px 26px; }
.home-quick-tools h2 { margin: 0 !important; }
.optional-section details > summary { cursor: pointer; font-size: 19px; padding: 8px 0; }
.optional-section details > .wrap { width: 100%; margin-top: 14px; }
.optional-section .workbook-flowchart { margin-top: 16px; }
.compact-contact { display: flex; flex-wrap: wrap; align-items: baseline; gap: 14px 24px; font-size: 14px; }
.compact-contact h2 { margin: 0; }
@media (max-width:760px) {
 .resource-main { padding-top: 12px; }
 .resource-nav { gap: 4px 13px; font-size: 12px; }
 .resource-cards, .resource-workspace { grid-template-columns: 1fr; }
 .resource-panel { padding: 12px 14px; }
 #t2-checklist { columns: 1; }
 .resource-hero h1 { margin: 12px 0; }
 html[lang="en-CA"] .editorial-home .home-hero { grid-template-columns: 1fr; padding-block: 18px; gap: 12px; }
 html[lang="en-CA"] .editorial-home .hero-extract { max-width: none; }
 html[lang="en-CA"] .editorial-home .hero-extract img { max-height: 100px; }
 html[lang="en-CA"] .editorial-home .home-hero h1 { font-size: 32px; }
 html[lang="en-CA"] .product-hero h1 { font-size: 32px; }
 html[lang="en-CA"] .product-experience .section { padding: 16px 0; }
 html[lang="en-CA"] .demo-gallery { grid-template-columns: repeat(2,minmax(0,1fr)); }
 html[lang="en-CA"] .demo-gallery img { height: 100px; }
}
@media print {
 .resource-page .topbar-fixed, .resource-page button, .resource-nav, .resource-foot { display:none !important; }
 .resource-main { padding:0; width:100%; max-width:none; }
 .resource-workspace { display:block; }
 .resource-panel { margin-bottom:12px; }
 .rate-table { min-width:0; font-size:9pt; }
 .rate-scroll { overflow:visible; }
 #t2-checklist { columns:1; }
 .resource-page { color:#000; background:white; }
}

/* Fine-outline navigation: matching boxes with quieter resource text. */
html[lang="en-CA"] .workbook-switch-desktop, .resource-switch { display:flex; align-items:center; gap:12px; padding:7px 0; font:13px/20px var(--font-ui); }
html[lang="en-CA"] .workbook-switch-desktop { border-top:1px solid var(--editorial-rule); }
.resource-switch { padding-top:0; }
.navigation-row-label { flex:0 0 94px; color:var(--editorial-ink); font-size:13px; font-weight:700; }
html[lang="en-CA"] .workbook-switch-desktop nav, .resource-switch > div { display:flex; align-items:center; gap:8px; overflow-x:auto; min-width:0; padding:2px; }
html[lang="en-CA"] .workbook-switch-desktop .workbook-switch-link, .resource-switch > div > a { display:inline-flex; align-items:center; justify-content:center; gap:7px; flex-shrink:0; min-height:34px; padding:6px 12px; border:1px solid #bac8c4; border-radius:3px; font:13px/20px var(--font-ui); color:#294c4e; text-decoration:none; white-space:nowrap; }
.resource-switch > div > a { color:#617270; }
html[lang="en-CA"] .workbook-switch-desktop .workbook-switch-link:hover, .resource-switch > div > a:hover { background:#e4eeea; border-color:#356665; color:#294c4e; }
html[lang="en-CA"] .workbook-switch-desktop .workbook-switch-link[aria-current="page"], .resource-switch > div > a[aria-current="page"] { color:#294c4e; border-color:#356665; background:#e4eeea; font-weight:700; }
html[lang="en-CA"] .workbook-switch-desktop .switch-planned { border:0; padding:0; font-size:10px; }
html[lang="en-CA"] .workbook-switch-all, .resource-switch-all { display:flex; align-items:center; gap:8px; margin-left:auto; min-height:34px; padding:6px 0; flex-shrink:0; font:13px/20px var(--font-ui); text-decoration:none; white-space:nowrap; color:#294c4e; }
.resource-switch-all { color:#617270; }
.resource-switch a:focus-visible, html[lang="en-CA"] .workbook-switch-desktop a:focus-visible { outline:2px solid #174e50; outline-offset:2px; }
@media (max-width:760px) {
 html[lang="en-CA"] .workbook-switch-mobile { display:none; }
 html[lang="en-CA"] .workbook-switch-desktop, .resource-switch { gap:6px; }
 .navigation-row-label { flex-basis:78px; font-size:12px; }
 html[lang="en-CA"] .workbook-switch-desktop nav, .resource-switch > div { flex:1; }
 html[lang="en-CA"] .workbook-switch-desktop .workbook-switch-link, .resource-switch > div > a { min-height:40px; }
 html[lang="en-CA"] .workbook-switch-all, .resource-switch-all { display:none; }
}
/* IFRS reporting checklist */
.reporting-meta { display:grid; grid-template-columns:2fr 1fr 1fr 1fr 1fr; gap:12px; margin:16px 0; }
.reporting-meta label { font-size:12px; font-weight:600; }
.reporting-meta input, .reporting-meta select, .report-status, .report-notes textarea { display:block; width:100%; font:13px/1.4 var(--font-ui); color:#294c4e; background:#fffdf7; border:1px solid #bac8c4; border-radius:3px; padding:7px; }
.reporting-meta input, .reporting-meta select { margin-top:5px; min-height:36px; }
.report-actions { flex-wrap:wrap; gap:8px !important; }
.report-actions button, .report-load { border:1px solid #bac8c4; border-radius:3px; padding:6px 10px; background:transparent; color:#294c4e; cursor:pointer; font:12px/20px var(--font-ui); }
.report-load input { max-width:160px; font-size:11px; }
.reporting-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:start; }
.report-group { border:1px solid #cbd4c9; padding:12px; border-radius:3px; }
.report-group[hidden] { display:none; }
.report-group > summary { font-weight:700; cursor:pointer; font-size:15px; }
.group-progress { float:right; font-size:12px; font-weight:400; color:#617270; }
.report-item { border-top:1px solid #d9dfd7; margin-top:10px; padding-top:10px; font-size:13px; }
.report-task { display:block; line-height:1.5; }
.report-item-controls { display:flex; align-items:center; gap:12px; margin-top:7px; }
.report-status { width:85px; }
.report-source { font-size:11px; color:#617270; }
.report-notes summary { cursor:pointer; color:#617270; font-size:11px; margin:6px 0; }
.report-notes textarea { resize:vertical; }
.report-notes textarea[aria-invalid="true"] { border-color:#9a5d27; }
.report-print-notes { display:none; }
@media(max-width:760px) { .reporting-meta { grid-template-columns:1fr 1fr; } .reporting-grid { grid-template-columns:1fr; } }
@media print { .report-actions { display:none !important; } .reporting-grid { display:block; } .report-group { break-inside:auto; margin-bottom:12px; } .report-item { break-inside:avoid; } .report-notes textarea { display:none; } .report-print-notes { display:block; white-space:pre-wrap; overflow-wrap:anywhere; } }
