/* Self-hosted web fonts (latin subset, from Google Fonts, SIL Open Font License; rebuilt from site.json
   fonts_css_google). Same origin: no extra connections before text paints. */
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/ibm-plex-mono-bc87d8e0.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/ibm-plex-mono-a80b2cab.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/ibm-plex-mono-2137a53a.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Public Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/public-sans-cd00287f.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Public Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/public-sans-cd00287f.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Public Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/public-sans-cd00287f.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Public Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/public-sans-cd00287f.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Public Sans"; font-style: normal; font-weight: 800; font-display: swap; src: url("../fonts/public-sans-cd00287f.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; }
/* end self-hosted fonts */
/* Metric-matched local fallbacks (measured against the web fonts in Chrome, 2026-10-26) so text does not
   reflow when the web font swaps in: keeps CLS near zero on slow connections. */
@font-face { font-family: "Public Sans Fallback"; src: local("Arial"), local("ArialMT"), local("Arimo"), local("Liberation Sans"); font-weight: 100 500; size-adjust: 104.08%; ascent-override: 91.27%; descent-override: 22.10%; line-gap-override: 0%; }
@font-face { font-family: "Public Sans Fallback"; src: local("Arial"), local("ArialMT"), local("Arimo"), local("Liberation Sans"); font-weight: 501 650; size-adjust: 106.10%; ascent-override: 89.54%; descent-override: 21.68%; line-gap-override: 0%; }
@font-face { font-family: "Public Sans Fallback"; src: local("Arial Bold"), local("Arial-BoldMT"), local("Arimo Bold"), local("Liberation Sans Bold"); font-weight: 651 1000; size-adjust: 98.51%; ascent-override: 96.43%; descent-override: 23.35%; line-gap-override: 0%; }

/* ERRCSCheck design system: civic code reference.
   White paper, navy ink, one hard red rule (fire code red) used sparingly, blue links,
   Public Sans for text, IBM Plex Mono for citations and section numbers.
   Sections are numbered like a code book. Light theme only. */
:root {
  --bg: #ffffff;
  --panel: #f4f6f9;
  --card: #ffffff;
  --ink: #0d1b2e;
  --ink-2: #4a5568;
  --line: #d9dee6;
  --line-strong: #9aa5b5;
  --link: #1546a0;
  --focus: #1546a0;
  --accent: #0d1b2e;          /* primary buttons are navy */
  --accent-on: #ffffff;
  --accent-hover: #1f3354;
  --accent-ink: #b42318;      /* eyebrows and rule lines in code red */
  --rule: #c8102e;
  --ok: #1b6e3a;
  --warn: #b25e00;
  --warn-ink: #8a4800;
  --bad: #b42318;
  --font-body: "Public Sans", "Public Sans Fallback", "Helvetica Neue", Arial, sans-serif;
  --font-head: "Public Sans", "Public Sans Fallback", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  --fw-head: 800;
  --ls-head: -0.02em;
  --radius: 4px;
  --radius-sm: 3px;
  --radius-btn: 3px;
  --maxw: 1280px;
  --fs-h1: clamp(2.1rem, 5vw, 3.4rem);
}

/* notice strip: neutral, never looks like a government seal */
.notice-strip { background: var(--panel); border-bottom: 1px solid var(--line); font-size: .8rem; color: var(--ink-2); padding: .4rem 0; }
/* phones: one line; the second sentence stays readable to screen readers */
@media (max-width: 599px) { .notice-strip { font-size: .75rem; padding: .3rem 0; white-space: nowrap; } .notice-strip .ns-more { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } }

.site-header { border-bottom: 0; box-shadow: inset 0 -3px 0 var(--rule); }
.wordmark { display: inline-flex; align-items: baseline; gap: 0; text-decoration: none; color: var(--ink); font-size: 1.3rem; margin: 0; }
.wordmark__code { font-family: var(--font-mono); font-weight: 600; background: var(--ink); color: #fff; padding: .1rem .4rem; border-radius: 2px; letter-spacing: .02em; }
.wordmark__word { font-weight: 800; padding-left: .35rem; letter-spacing: -0.02em; }
.wordmark--footer { font-size: 1.1rem; margin-bottom: .75rem; }
.btn--sm { min-height: 40px; padding: .45rem .9rem; font-size: .92rem; }
.site-nav .btn { color: var(--accent-on); padding: .45rem .9rem; }

/* code-book section numbering on every split heading */
main { counter-reset: sec; }
.split:not(.split--lead) { counter-increment: sec; }
.split:not(.split--lead) .split__head h2::before {
  content: counter(sec, decimal-leading-zero);
  display: block; font: 600 .8rem/1 var(--font-mono); color: var(--accent-ink); letter-spacing: .1em; margin-bottom: .6rem;
}
.split { border-top-color: var(--line); }
.split__head h2 { font-size: clamp(1.3rem, 2.4vw, 1.75rem); }

.page-head { background: linear-gradient(var(--panel), var(--panel)) no-repeat 0 0 / 100% 100%; }
.page-head h1 { max-width: 13.7em; }
.eyebrow { color: var(--accent-ink); }

/* home hero */
.hero { padding: clamp(2.5rem, 6vw, 4.5rem) 0; border-bottom: 1px solid var(--line); }
.hero__grid { display: grid; gap: 2rem 4rem; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 960px) { .hero__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }
.hero h1 { font-size: clamp(2.3rem, 5.5vw, 3.8rem); max-width: 11.2em; }
.hero .lede { margin-bottom: 1.5rem; max-width: 52ch; }
.hero__panel { border: 1px solid var(--line); border-top: 4px solid var(--rule); padding: 1.25rem 1.5rem; background: var(--bg); }
.hero__def { font-size: 1.05rem; }

/* jurisdiction pages */
.page-head--j .page-head__grid { align-items: start; }
.ahj-card { border-top: 4px solid var(--ink); }
.ahj-card .btn-row { margin-top: 1rem; }
.effect { display: inline-block; font: 600 .72rem/1.2 var(--font-mono); text-transform: uppercase; letter-spacing: .05em; padding: .25rem .4rem; border: 1px solid currentColor; border-radius: 2px; white-space: nowrap; }
.effect--exempt { color: var(--ok); }
.effect--required { color: var(--bad); }
.effect--may_require { color: var(--warn-ink); }
.effect--info { color: var(--ink-2); }
.steps { counter-reset: none; }
.steps li { padding-left: .25rem; }

/* checker */
.checker fieldset { display: grid; gap: .75rem; }
.yn__opts { display: flex; flex-wrap: wrap; gap: 0 1.25rem; }
.checker-result:focus { outline: none; }
.checker-result .verdict h2 { font-size: 1.35rem; margin-top: .25rem; }
.rule-list { list-style: none; padding: 0; }
.rule-list li { border-top: 1px solid var(--line); padding: .75rem 0; }
@media (min-width: 960px) { .checker-result { position: sticky; top: 1.5rem; align-self: start; } }

.form-card { border-top: 4px solid var(--ink); }
.site-footer { background: var(--panel); }
.site-footer__legal { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--line); }

/* ---------- media, hero and motion (structure in shared motion.css; this is the civic look) ----------
   Calm and authoritative: slow easing, small distances. */
:root { --mo-dist: 14px; --mo-dur: 800ms; --mo-wipe-dur: 900ms; --mag-max: 6px; --parallax-max: 40px; --tilt-max: 4deg; --progress: var(--rule); }
.hero--media { padding-bottom: clamp(2rem, 5vw, 3.5rem); }
.hero--media h1, .page-head--split h1 { font-size: clamp(2.1rem, 3.8vw, 3.1rem); max-width: 10.6em; }
.hero--media .lede, .page-head--split .lede { max-width: 46ch; }
.hero-media__frame { border-top: 4px solid var(--rule); }
.hero-media--split .hero-media__frame { border-radius: 2px 0 0 2px; }
.def-band { background: var(--bg); border-bottom: 1px solid var(--line); }
.def-strip .hero__def { font-size: 1.1rem; }
.page-head--split .hero__grid--split { margin-top: .5rem; }
.page-head--strip { border-bottom: 0; }
.jfacts { border-top: 4px solid var(--ink); }
.pcards { border-bottom: 1px solid var(--line); }
.pcard { border-top: 4px solid var(--ink); }
.pcard:hover { border-top-color: var(--rule); }
.pcard h3 { font-size: 1.1rem; }
.cta-band { background: var(--bg); border-top: 4px solid var(--rule); }
.media figcaption, .diagram figcaption, .hero-media__cap { border-left: 2px solid var(--rule); padding-left: .6rem; }
.nav-quiet { color: var(--ink-2) !important; font-weight: 500; }
.photo-note { margin: 1.25rem 0 0; }

/* hero fact strip (templates/tools/fact-strip.html): sourced dates and figures under the hero buttons */
.hero-facts { padding: 0; margin: 1.75rem 0 0; }
.hero-facts__kicker { font: 600 .75rem/1.2 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--accent-ink); margin: 0 0 .6rem; }
.hero-facts__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .hero-facts__list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem 1rem; } }
.hero-facts__list li + li { margin: 0; }
.hf { display: grid; gap: .15rem; padding: .65rem .8rem .7rem; background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--accent-ink); border-radius: var(--radius-sm, 4px); }
.hf__label { font-size: .8rem; color: var(--ink-2); }
.hf__value { font: 700 1.2rem/1.15 var(--font-head); color: var(--ink); }
.hf__flag { display: inline-block; vertical-align: .15em; font: 700 .68rem/1 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--bad); border: 1px solid currentColor; padding: .18rem .35rem; border-radius: 3px; }
.hf__detail { font-size: .88rem; color: var(--ink); line-height: 1.4; }
.hf__cite { font-size: .75rem; }

@media print {
  html:not(.wl-print-brief):not(.wl-print-tw) main::before { content: "For a one-page summary to hand the board, use the Board Brief: errcscheck.com/board-brief/"; display: block; margin: 0 0 12pt; padding: 6pt 8pt; border: 1px solid #000; font: 600 10pt/1.3 var(--font-body); }
}
