/* ============================================================================
   MyNotaryBook — Reference Site Theme
   Single source of color/typography tokens. Light is default; dark matches app.
   Toggle by setting  <html data-theme="dark">  (see theme-toggle script).
   ----------------------------------------------------------------------------
   App-sourced values (from mynotarybook.com):
     gold        #FFC618   bg #171E22   slate/muted #708090   text #FFFFFF
   Status colors are brand-independent and tuned per theme for contrast.
   ========================================================================== */

/* ---- LIGHT (default) ------------------------------------------------------ */
:root {
  /* surfaces */
  --mnb-bg:            #FBFAF7;   /* warm paper */
  --mnb-surface:       #FFFFFF;   /* cards / tables */
  --mnb-surface-2:     #F4F2EC;   /* zebra rows, inset panels */
  --mnb-border:        #E7E2D8;

  /* text */
  --mnb-text:          #171E22;   /* app charcoal — shared by both themes */
  --mnb-muted:         #708090;   /* citations, verified stamp, footer */
  --mnb-strong:        #171E22;

  /* brand gold — light uses a darker gold so gold text/links stay legible with no shadow */
  --mnb-gold:          #FFCC00;
  --mnb-gold-on:       #171E22;   /* text/icon placed ON a gold fill */
  --mnb-gold-text:     #FFCC00;
  --mnb-gold-shadow:   none;

  /* links */
  /* LIGHT-MODE LINKS (2026-08-05). Gold on the light background measured
     1.45:1 -- effectively invisible, and far under the 4.5:1 body text needs.
     #C8102E is the flag red trialled on the hero: 5.64:1 here, and it reads as
     a link rather than as an alarm now that it is not set at 64px. Dark mode
     keeps gold, which is 11:1 on charcoal and is what makes links obvious
     there. The gold text-shadow goes with it -- it exists to lift gold off a
     dark surface and only muddies a dark colour on a light one. */
  --mnb-link:          #C8102E;
  --mnb-link-shadow:   none;

  /* status — accepted / conditional / not-accepted (light) */
  --mnb-ok:            #1E7A52;
  --mnb-ok-bg:         #E4F1EA;
  --mnb-cond:          #C2691F;   /* orange, kept distinct from gold */
  --mnb-cond-bg:       #FBEBDD;
  --mnb-no:            #B23A3A;
  --mnb-no-bg:         #F6E3E3;

  /* elevation */
  --mnb-shadow:        0 1px 2px rgba(23,30,34,.05), 0 2px 6px rgba(23,30,34,.07);
  --mnb-shadow-header: 0 1px 0 var(--mnb-border);

  /* shape & motion */
  --mnb-radius:        10px;
  --mnb-radius-sm:     6px;
  --mnb-maxw:          1120px;

  /* ambient page texture (fine grain + center glow) — light defaults */
  --mnb-tex-blend:     multiply;   /* darken paper slightly */
  --mnb-vignette:      rgba(229, 229, 229, 0.8);   /* #e5e5e5 @ 80% edge */
  --mnb-vignette-0:    rgba(229, 229, 229, 0);      /* transparent center, same hue */
  /* coarser, stronger grain in light so it reads against the pale background */
  --mnb-grain:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.55' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.62'/%3E%3C/svg%3E");
  --mnb-grain-size:    230px;
  --mnb-ease:          180ms ease;

  /* typography — Feross (owned) for display; system stack for body + fallback */
  --mnb-font-display:  "Feross", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --mnb-font-impact:   "Anton", "Impact", "Haettenschweiler", "Franklin Gothic Bold", "Arial Narrow", sans-serif;
}/* ---- DARK (matches the app) ---------------------------------------------- */
[data-theme="dark"] {
  --mnb-bg:            #171E22;   /* app background */

  /* ambient texture — dark: light speckle that lightens, faint center glow */
  --mnb-tex-blend:     screen;
  --mnb-vignette:      rgba(0, 0, 0, 0.55);  /* corner vignette (dark) */
  --mnb-vignette-0:    rgba(0, 0, 0, 0);
  --mnb-grain:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");
  --mnb-grain-size:    200px;

  --mnb-surface:       #1E262B;   /* one notch up — app is flat, tables need cards */
  --mnb-surface-2:     #232C32;
  --mnb-border:        rgba(112,128,144,.30);   /* app slate @30% */

  --mnb-text:          #FFFFFF;
  --mnb-muted:         #708090;
  --mnb-strong:        #FFFFFF;

  --mnb-gold:          #FFCC00;
  --mnb-gold-on:       #171E22;
  --mnb-gold-text:     #FFCC00;
  --mnb-gold-shadow:   none;

  --mnb-link:          var(--mnb-gold-text);
  --mnb-link-shadow:   none;

  --mnb-ok:            #3DBA86;
  --mnb-ok-bg:         rgba(61,186,134,.14);
  --mnb-cond:          #E0883D;
  --mnb-cond-bg:       rgba(224,136,61,.14);
  --mnb-no:            #E06666;
  --mnb-no-bg:         rgba(224,102,102,.14);

  --mnb-shadow:        0 1px 2px rgba(0,0,0,.40), 0 2px 8px rgba(0,0,0,.35);
  --mnb-shadow-header: 0 0.5px 0 var(--mnb-border);
}/* ============================================================================
   FONTS — Feross (owned by Jordan), subset to display glyphs, hash-named.
   Files live at /assets/f/ behind the folder .htaccess gate. Paths are
   ABSOLUTE from the web root (public_html), so this works no matter where the
   CSS file itself sits. Regular 400 only; >400 is browser-synthesized bold.
   swap = show fallback instantly, swap in Feross when ready.
   ========================================================================== */
/* Feross @font-face moved to includes/header.php (2026-07-22): the header
   inlines it with a filemtime() version stamp so every font-file update
   busts caches automatically — no manual ?v= bump. Files renamed to the
   official /assets/f/Feross.woff2 + Feross.woff. */
@font-face {
  font-family: "Anton";
  src: url("/assets/f/anton-400.woff2") format("woff2"),
       url("/assets/f/anton-400.woff")  format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}@font-face {
  font-family: "Varela Round";
  src: url("/assets/f/varela-round-400.woff2") format("woff2"),
       url("/assets/f/varela-round-400.woff")  format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}/* ============================================================================
   BASE
   ========================================================================== */
* { box-sizing: border-box; margin: 0; padding: 0; }html {
  -webkit-text-size-adjust: 100%;
  background-color: var(--mnb-bg);
  transition: background-color var(--mnb-ease);
  /* Smooth in-page navigation. Applied on the root rather than per-link so it
     covers menu clicks, keyboard activation, and a page opened WITH a hash --
     a JS handler would only catch the clicks. */
  scroll-behavior: smooth;
}body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  background-color: transparent;
  color: var(--mnb-text);
  line-height: 1.6;
  min-height: 100vh;
  overflow-x: clip;   /* contain the off-screen mobile menu (clip won't break sticky) */
  transition: background-color var(--mnb-ease), color var(--mnb-ease);
}/* Ambient texture as a position:fixed layer — stays put on scroll, including iOS
   Safari (which ignores background-attachment:fixed). No mix-blend-mode (that was
   the Safari stacking bug); grain blends via background-blend-mode against its own
   opaque base color, so z-index:-1 keeps it safely behind all content. */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-color: var(--mnb-bg);
  background-image:
    radial-gradient(circle at 50% 50%, var(--mnb-vignette-0) min(324px, 28vw), var(--mnb-vignette) min(600px, 64vw)),
    var(--mnb-grain);
  background-repeat: no-repeat, repeat;
  background-size: cover, var(--mnb-grain-size);
  background-blend-mode: normal, var(--mnb-tex-blend);
}/* lock background scroll while the full-screen mobile menu is open */
html.mnb-nav-open { overflow: hidden; }a {
  color: var(--mnb-link);
  text-shadow: var(--mnb-link-shadow);
  text-decoration: none;
}a:hover { text-decoration: underline; }:focus-visible {
  outline: 2px solid var(--mnb-gold);
  outline-offset: 2px;
  border-radius: var(--mnb-radius-sm);
}/* ============================================================================
   HEADER + PRIMARY NAV  (logo left, nav, Login button, theme toggle)
   ========================================================================== */
.mnb-header {
  position: sticky;
  top: 0;
  z-index: 100;
  padding: 20px 0;
}/* frosted bar on a separate layer — keeps backdrop-filter OFF the header element
   itself, so the fixed mobile nav can still escape to the full viewport */
.mnb-header::before {
  content: "";
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0;
  margin: 0 auto;
  max-width: calc(var(--mnb-maxw) - 40px);
  z-index: -1;
  background-color: rgba(110, 124, 131, 0.8);   /* slate brand bar @ 80% */
  -webkit-backdrop-filter: blur(10px) saturate(1.05);
  backdrop-filter: blur(10px) saturate(1.05);
  border-radius: 0 0 var(--mnb-radius) var(--mnb-radius);
}.mnb-header__inner {
  display: flex;
  align-items: center;
  gap: 8px;
  max-width: calc(var(--mnb-maxw) - 40px);
  margin: 0 auto;
  padding: 0 28px;
}[data-theme="dark"] .mnb-header::before { background-color: rgba(30, 38, 43, 0.8); }/* dark charcoal bar */
.mnb-header__brand { display: flex; align-items: center; margin-right: auto; }.mnb-header__brand img { height: 50px; width: auto; display: block; }.mnb-header__brand .mnb-logo--dark { display: none; }/* light mode shows logo-lt.png */
[data-theme="dark"] .mnb-header__brand .mnb-logo--light { display: none; }/* dark mode shows logo.png */
[data-theme="dark"] .mnb-header__brand .mnb-logo--dark { display: block; }.mnb-header__actions { display: flex; align-items: center; gap: 6px; }/* nav links */
.mnb-nav__list { list-style: none; display: flex; align-items: center; gap: 2px; margin: 0; padding: 0; }.mnb-nav__list a {
  display: inline-flex;
  align-items: center;
  padding: 8px 10px;
  border-radius: var(--mnb-radius-sm);
  font-family: var(--mnb-font-impact);
  font-size: 1.1rem;
  font-weight: 400;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .4);
  /* Never break a label across two lines. "Notary Rules" wrapping is what threw
     the whole bar out of alignment: a two-line item is taller than its
     neighbours, so the flex row centres everything against it. */
  white-space: nowrap;
}/* THE SQUEEZE BAND. Between the full-width layout and the burger at 860px the
   seven labels no longer fit at 1.1rem. Two steps down rather than one so the
   change is never abrupt, and both stop above 860px where the burger takes
   over and the sizing stops mattering. Padding tightens with the type, since
   at these widths the gaps cost as much room as the letters. */
@media (max-width: 1100px) and (min-width: 861px) {
  .mnb-nav__list a { font-size: 1rem; padding: 8px 8px; letter-spacing: .02em; }
  .mnb-nav__list   { gap: 0; }
}@media (max-width: 980px) and (min-width: 861px) {
  .mnb-nav__list a { font-size: .9rem; padding: 8px 6px; letter-spacing: .01em; }
}/* dot separators between primary items (Web.psd) */
.mnb-nav__list li + li::before {
  content: "\00B7";
  align-self: center;
  margin: 0 2px;
  color: rgba(255, 255, 255, .5);
  font-weight: 700;
}.mnb-nav__list li.mnb-nav__login-li::before { content: none; }/* inactive nav links = the Texas-title color, even if the <ul> ever loses its
   class (keeps the global gold `a` rule from leaking in). Hover / active /
   Login rules below still override to gold. */
.mnb-nav a { color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, .4); }.mnb-nav__list a:hover { color: var(--mnb-gold-text); background: none; text-decoration: none; text-shadow: none; }.mnb-nav__list a[aria-current="page"] {
  color: var(--mnb-gold-text);
  box-shadow: none;   /* comp shows active link as solid gold, no underline */
}/* Login = distinct pill button (specificity beats the generic link rule, no !important) */
.mnb-nav__list a.mnb-login {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 0;
  width: 32px;
  height: 40px;
  padding: 0;
  border: none;
  background: none;
  box-shadow: none;
  color: #fff;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .4));
  transition: color var(--mnb-ease), filter var(--mnb-ease);
}.mnb-nav__list a.mnb-login:hover { color: var(--mnb-gold-text); filter: none; }.mnb-login__text { display: none; }/* desktop = icon only; mobile shows the word */

/* theme toggle */
.mnb-toggle {
  display: inline-flex;
  align-items: center;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
}/* sliding sun/moon switch */
.mnb-toggle__track {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
  width: 58px;
  height: 28px;
  padding: 0 7px;
  border-radius: 999px;
  background: #e2e2e2;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, .18);
  transition: background var(--mnb-ease);
}.mnb-toggle__ico { position: relative; z-index: 2; width: 14px; height: 14px; filter: drop-shadow(0 1px 1.5px rgba(0, 0, 0, .45)); }.mnb-toggle__sun  { color: #fff; }/* sits on the gold knob (light) */
.mnb-toggle__moon { color: rgba(0, 0, 0, .42); }/* dim on the track (light) */
.mnb-toggle__knob {
  position: absolute; top: 3px; left: 3px; z-index: 1;
  width: 22px; height: 22px; border-radius: 50%;
  background: radial-gradient(circle at 50% 32%, #FFE08A, var(--mnb-gold));
  box-shadow:
    0 1px 3px rgba(0, 0, 0, .35),                /* drop */
    inset 0 2px 2px rgba(255, 255, 255, .55),    /* top highlight */
    inset 0 -3px 5px rgba(0, 0, 0, .25);         /* bottom shade */
  overflow: hidden;
  transition: transform var(--mnb-ease), background var(--mnb-ease);
}.mnb-toggle__knob::before {
  content: "";
  position: absolute;
  top: 6%; left: 10%; right: 10%;
  height: 42%;
  border-radius: 50%;
  background: linear-gradient(to bottom, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0));
  pointer-events: none;
}[data-theme="dark"] .mnb-toggle__track { background: #2c343a; box-shadow: inset 0 1px 2px rgba(0, 0, 0, .5); }[data-theme="dark"] .mnb-toggle__sun  { color: rgba(255, 255, 255, .4); }[data-theme="dark"] .mnb-toggle__moon { color: #fff; }[data-theme="dark"] .mnb-toggle__knob { transform: translateX(30px); background: radial-gradient(circle at 50% 32%, #B0BAC0, #6F7A80); }/* hamburger — hidden on desktop, shown when nav collapses */
.mnb-burger {
  display: none;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  cursor: pointer;
}/* header controls sit on the slate bar -> white in both themes */
.mnb-header .mnb-burger { color: #fff; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .4)); }.mnb-header .mnb-burger:hover { color: var(--mnb-gold-text); filter: none; }/* menu close button — only inside the mobile full-screen overlay */
.mnb-nav__close { display: none; }/* ---- nav becomes a full-screen panel that slides in right-to-left (<= 860px) ---- */
@media (max-width: 860px) {
  .mnb-burger { display: inline-flex; }

  /* mobile: header icons white in light, gold in dark (no hover needed on touch) */
  .mnb-header .mnb-toggle,
  .mnb-header .mnb-burger { color: #fff; }
  [data-theme="dark"] .mnb-header .mnb-toggle,
  [data-theme="dark"] .mnb-header .mnb-burger { color: var(--mnb-gold-text); }

  /* mobile view: solid full-width header bar (no inset, no rounded corners, no translucency/blur) */
  .mnb-header::before { background-color: #6E7C83; -webkit-backdrop-filter: none; backdrop-filter: none; max-width: none; border-radius: 0; }
  [data-theme="dark"] .mnb-header::before { background-color: #1E262B; }
  .mnb-header__inner { max-width: none; padding: 0 18px; }

  .mnb-nav {
    position: fixed;
    inset: 0;                 /* whole page */
    z-index: 200;
    display: flex;
    flex-direction: column;
    padding: 72px 22px 32px;  /* clear space for the close button up top */
    background: #6E7C83;      /* match the header bar (light) */
    overflow-y: auto;
    transform: translateX(100%);                 /* parked off-screen to the right */
    transition: transform .28s ease, visibility 0s linear .28s;
    visibility: hidden;
  }
  [data-theme="dark"] .mnb-nav { background: #1E262B; }   /* match the dark header bar */
  .mnb-nav.is-open {
    transform: translateX(0);                    /* slides leftward into view */
    visibility: visible;
    transition: transform .28s ease;             /* no visibility delay when opening */
  }

  .mnb-nav__close {
    position: absolute;
    top: 16px;
    right: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    font-size: 1.6rem;
    line-height: 1;
    color: #fff;
    background: none;
    border: none;
    cursor: pointer;
  }
  .mnb-nav__close:hover { color: var(--mnb-gold-text); }

  .mnb-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  /* full-screen menu: white text on the slate/charcoal panel, uppercase, large, tight */
  .mnb-nav a, .mnb-nav__list a {
    color: #fff;
    text-shadow: none;
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0;
    line-height: 1;
    font-size: 3rem;
  }
  .mnb-nav__list li + li::before { content: none; }
  .mnb-nav__list a { width: 100%; min-height: 0; padding: 3px 14px; }
  .mnb-nav__list a[aria-current="page"] { color: var(--mnb-gold-text); }   /* highlight = gold text, no bar */
  /* Login becomes a plain text link (icon hidden) */
  .mnb-nav__list a.mnb-login {
    width: 100%;
    height: auto;
    margin: 0;
    padding: 3px 14px;
    justify-content: flex-start;
    color: #fff;
    filter: none;
  }
  .mnb-login__icon { display: none; }
  .mnb-login__text { display: inline; }
}/* ============================================================================
   LAYOUT
   ========================================================================== */
.mnb-main { max-width: var(--mnb-maxw); margin: 0 auto; padding: 32px 20px 72px; }.mnb-page-title { font-family: var(--mnb-font-impact); font-size: 3rem; line-height: 1; font-weight: 400; letter-spacing: .01em; text-transform: uppercase; color: #525252; position: relative; }.mnb-page-title--home { margin-bottom: 30px; }/* room for the reflection (home has no breadcrumb/sub below) */
.mnb-page-title::after {
  content: attr(data-text);
  position: absolute;
  left: 0;
  top: calc(100% - 0.1875em);   /* scales with font-size (was 9px @ 3rem) */
  width: 100%;
  transform: scaleY(-1);
  pointer-events: none;
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.15), transparent 80%);
          mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.15), transparent 80%);
}[data-theme="dark"] .mnb-page-title { color: #e6e9eb; }[data-theme="dark"] .mnb-page-title::after {
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
          mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
}.mnb-page-sub   { color: var(--mnb-muted); font-size: .9rem; margin-top: 4px; }/* section card — one per content domain */
.mnb-section {
  background: rgba(255, 255, 255, 0.72);   /* tinted glass — light. lower alpha = more texture */
  -webkit-backdrop-filter: blur(14px) saturate(1.08);
  backdrop-filter: blur(14px) saturate(1.08);   /* samples the fixed texture behind -> real frosted glass */
  border: 1px solid var(--mnb-border);
  border-radius: var(--mnb-radius);
  box-shadow: var(--mnb-shadow);
  padding: 22px 22px 18px;
  margin-top: 22px;
}[data-theme="dark"] .mnb-section {
  background: rgba(10, 14, 18, 0.55);   /* tinted glass — dark. lower alpha = more texture */
  border-color: rgba(112, 128, 144, 0.45);   /* stronger than the .30 default */
}/* dark: zebra rows at 50% so the card's frosted texture reads through */
[data-theme="dark"] .mnb-rules tbody tr:nth-child(even),
[data-theme="dark"] .mnb-kv dt:nth-of-type(even),
[data-theme="dark"] .mnb-kv dd:nth-of-type(even) { background: rgba(35, 44, 50, 0.5); }/* gold section heading — mirrors the app's gold h2; shadow keeps it legible on light */
.mnb-section__title {
  font-family: var(--mnb-font-impact);   /* Anton (Impact look) */
  font-size: 1.0825rem;       /* ~17.3px (+1px) */
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: .01em;
  text-align: center;
  color: var(--mnb-gold-text);
  text-shadow: var(--mnb-gold-shadow);
  margin-bottom: 4px;
}/* card title lifted ABOVE the card (Web.psd): centered, large, charcoal */
.mnb-section__title--above {
  font-size: 2rem;
  line-height: 1;
  color: #525252;
  text-shadow: none;
  margin: 50px 0 2px;
  position: relative;
}.mnb-section__title--above::after {
  content: attr(data-text);
  position: absolute;
  left: 0;
  top: calc(100% - 0.156em);   /* scales with font-size (was 5px @ 2rem) */
  width: 100%;
  transform: scaleY(-1);
  pointer-events: none;
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.15), transparent 80%);
          mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.15), transparent 80%);
}[data-theme="dark"] .mnb-section__title--above { color: #d3dade; }[data-theme="dark"] .mnb-section__title--above::after {
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
          mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
}/* the bottom "Last verified" stamp sits at the card's bottom-right */
.mnb-section > .mnb-cite:last-child { justify-content: flex-end; margin-top: 16px; }/* citation + last-verified stamp */
.mnb-cite {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px 14px;
  font-size: .8rem;
  color: var(--mnb-muted);
  margin-bottom: 14px;
}.mnb-cite a { font-size: inherit; }.mnb-verified::before { content: "✓ "; color: var(--mnb-ok); }/* ============================================================================
   RULE TABLE  (left = label, right = status)  — ID types, journal gating, acts
   ========================================================================== */
.mnb-rules { width: 100%; border-collapse: collapse; }.mnb-rules th,
.mnb-rules td {
  text-align: left;
  padding: 10px 8px;
  border-bottom: 1px solid var(--mnb-border);
  font-size: .92rem;
  vertical-align: top;
}.mnb-rules tr:last-child td { border-bottom: none; }.mnb-rules tbody tr:nth-child(even) { background: #F3F3F3; }.mnb-rules td.mnb-rules__status { width: 8rem; white-space: nowrap; text-align: center; }.mnb-rules__note { display: block; font-family: var(--mnb-font-display); font-size: .85rem; line-height: 1.4; color: rgba(23, 30, 34, 0.85); text-transform: uppercase; text-align: center; margin-top: 16px; }[data-theme="dark"] .mnb-rules__note { color: rgba(255, 255, 255, 0.85); }/* status badges + glyphs */
.mnb-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 600;
  line-height: 1.5;
}.is-ok   { color: var(--mnb-ok);   background: var(--mnb-ok-bg); }.is-cond { color: var(--mnb-cond); background: var(--mnb-cond-bg); }.is-no   { color: var(--mnb-no);   background: var(--mnb-no-bg); }.mnb-glyph { font-weight: 700; }.mnb-glyph.is-ok   { color: var(--mnb-ok); background: none; }.mnb-glyph.is-no   { color: var(--mnb-no); background: none; }.mnb-glyph.is-cond { color: var(--mnb-cond); background: none; }/* key/value list for journal-gating flags */
.mnb-kv { display: grid; grid-template-columns: 1fr 8rem; }.mnb-kv dt, .mnb-kv dd { display: flex; align-items: center; padding: 10px 8px; }.mnb-kv dt { color: var(--mnb-text); font-size: .92rem; }.mnb-kv dd { justify-content: center; text-align: center; }/* plain-text values (statute status, identity model, retention trigger, money)
   were inheriting the full body size — match them to the badge pills */
.mnb-kv dd span:not([class]) { font-size: .78rem; line-height: 1.45; }/* alternating row shading, like the ID table (stripes the 2nd & 4th pairs) */
.mnb-kv dt:nth-of-type(even),
.mnb-kv dd:nth-of-type(even) { background: #F3F3F3; }/* folder-style tab that sticks out the top of the ID card (Traditional shown; RON/IPEN structural, hidden now) */
.mnb-tabs { display: flex; justify-content: center; gap: 4px; margin: 14px 0 -1px; position: relative; z-index: 1; }/* if only the Traditional tab is rendered (RON/IPEN hidden), hide the whole strip */
.mnb-tabs:not(:has(.mnb-tab:not([hidden]) ~ .mnb-tab:not([hidden]))) { display: none; }.mnb-tabs + .mnb-section { margin-top: 0; }/* tab sits flush on the card top */
.mnb-cite + .mnb-section { margin-top: 0; }/* the source citation sits flush on the card */
.mnb-section__title--above + .mnb-section { margin-top: 34px; }/* no citation -> match the citation cards' gap + clear the reflection */
.mnb-tab {
  padding: 14px 20px 9px;
  font-family: var(--mnb-font-display);
  font-size: .9rem;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: rgba(23, 30, 34, 0.85);
  background: rgba(255, 255, 255, 0.72);
  -webkit-backdrop-filter: blur(14px) saturate(1.08);
  backdrop-filter: blur(14px) saturate(1.08);
  border: 1px solid var(--mnb-border);
  border-bottom: none;
  border-radius: var(--mnb-radius) var(--mnb-radius) 0 0;
  box-shadow: 0 -2px 6px rgba(23, 30, 34, 0.05);
  cursor: pointer;
}.mnb-tab[aria-selected="true"] { color: rgba(23, 30, 34, 0.85); }.mnb-tab[hidden] { display: none; }.mnb-tab__short { display: none; }/* desktop shows the full label */
[data-theme="dark"] .mnb-tab {
  color: var(--mnb-gold-text);
  background: rgba(10, 14, 18, 0.55);
  border-color: rgba(112, 128, 144, 0.45);
}[data-theme="dark"] .mnb-tab[aria-selected="true"] { color: var(--mnb-gold-text); }/* inline statute excerpt */
.mnb-excerpt {
  border-left: 3px solid var(--mnb-gold);
  background: var(--mnb-surface-2);
  border-radius: 0 var(--mnb-radius-sm) var(--mnb-radius-sm) 0;
  padding: 12px 14px;
  margin-top: 12px;
  font-size: .9rem;
}.mnb-excerpt__head { font-size: .78rem; color: var(--mnb-muted); margin-bottom: 6px; }/* download links (full statute / SoS handbook) */
.mnb-doc-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border: 1px solid var(--mnb-border);
  border-radius: var(--mnb-radius-sm);
  background: var(--mnb-surface);
  color: var(--mnb-text);
  text-shadow: none;
  margin: 6px 8px 0 0;
}.mnb-doc-link:hover { border-color: var(--mnb-gold); text-decoration: none; }/* app CTA — end of page only, never mid-content */
.mnb-cta {
  margin-top: 28px;
  padding: 20px 22px;
  border: 1px solid var(--mnb-border);
  border-radius: var(--mnb-radius);
  background: var(--mnb-surface);
}.mnb-cta__btn {
  display: inline-block;
  margin-top: 10px;
  padding: 10px 18px;
  border-radius: var(--mnb-radius-sm);
  background: var(--mnb-gold);
  color: var(--mnb-gold-on);
  text-shadow: none;
  font-weight: 600;
}.mnb-cta__btn:hover { text-decoration: none; filter: brightness(.96); }/* ============================================================================
   FOOTER + disclaimer
   ========================================================================== */
.mnb-footer {
  max-width: var(--mnb-maxw);
  margin: 0 auto;
  padding: 28px 20px 48px;
  border-top: 1px solid var(--mnb-border);
  color: var(--mnb-muted);
  font-size: .82rem;
}.mnb-disclaimer { line-height: 1.6; text-align: center; }[data-theme="dark"] .mnb-disclaimer { color: #fff; }.mnb-footer__nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 20px; margin: 0 0 18px; }.mnb-footer__nav a { color: var(--mnb-text); text-decoration: none; font-size: .85rem; }[data-theme="dark"] .mnb-footer__nav a { color: #fff; }.mnb-footer__nav a:hover { color: var(--mnb-muted); }   /* charcoal at rest, slate on hover */[data-theme="dark"] .mnb-footer__nav a:hover { color: var(--mnb-gold-text); }/* Size, weight and tracking live here so light and dark are identical -- only
   the COLOUR differs between themes. When they were set inside the dark rules
   the line changed size as well as colour on every toggle, which read as a
   glitch rather than a theme change. */
.mnb-footer__copy { text-align: center; margin: 16px 0 0; font-size: .65rem; font-weight: 600; letter-spacing: .01em; }
/* Gold in dark mode. It inherits the footer's --mnb-muted otherwise, which in
   dark resolves to a grey that all but disappears against the charcoal. Both
   theme paths, so the toggle and the OS preference agree. */
/* The colour was never the problem -- this is the same #FFCC00 used elsewhere.
   Every other gold element on the site is Anton: condensed, heavy, plenty of
   ink. This line is a system font at .78rem weight 400, the thinnest text on
   the page, and a saturated yellow needs stroke to read as saturated. Weight
   and the weight gives it that; the hex is untouched. NOTE the size is now
   .65rem, SMALLER than the .78rem it started at, so the weight is doing all
   the work. If it reads pale again, raise the weight to 700 rather than the
   size.
   -webkit-font-smoothing is deliberately NOT set: on dark backgrounds it
   thins light text further, which is the opposite of what is wanted here. */
[data-theme="dark"] .mnb-footer__copy { color: var(--mnb-gold-text); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-footer__copy { color: var(--mnb-gold-text); }
}.mnb-footer__legal { text-align: center; margin: 16px 0 0; font-size: .82rem; }.mnb-footer__legal a { color: var(--mnb-text); text-decoration: none; }[data-theme="dark"] .mnb-footer__legal a { color: #fff; }.mnb-footer__legal a:hover { color: var(--mnb-muted); }[data-theme="dark"] .mnb-footer__legal a:hover { color: var(--mnb-gold-text); }/* Contact page details */
.mnb-contact { margin: 4px 0 18px; }.mnb-contact dt { font-family: var(--mnb-font-display); text-transform: uppercase; font-size: .8rem; letter-spacing: .03em; color: var(--mnb-muted); margin: 16px 0 2px; }.mnb-contact dt:first-child { margin-top: 0; }.mnb-contact dd { margin: 0; font-size: 1.25rem; }.mnb-contact dd a { color: var(--mnb-text); text-decoration: none; }.mnb-contact dd a:hover { color: var(--mnb-muted); }[data-theme="dark"] .mnb-contact dd a:hover { color: var(--mnb-gold-text); }/* Contact form */
.mnb-form { margin: 4px 0 16px; }.mnb-field { margin: 0 0 14px; }.mnb-field label { display: block; font-family: var(--mnb-font-display); text-transform: uppercase; font-size: .8rem; letter-spacing: .03em; color: var(--mnb-muted); margin: 0 0 5px; }.mnb-field input, .mnb-field select, .mnb-field textarea { width: 100%; box-sizing: border-box; padding: 10px 12px; font: inherit; color: var(--mnb-text); background: var(--mnb-surface-2); border: 1px solid var(--mnb-border); border-radius: 8px; }.mnb-field textarea { resize: vertical; min-height: 110px; }.mnb-field input:focus, .mnb-field select:focus, .mnb-field textarea:focus { outline: none; border-color: var(--mnb-gold); }.mnb-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }.mnb-form__ok { color: #1C7A3A; font-weight: 600; }[data-theme="dark"] .mnb-form__ok { color: #7ED957; }.mnb-form__err { color: #C0393D; font-weight: 600; }[data-theme="dark"] .mnb-form__err { color: #EE6065; }.mnb-contact__alt { margin-top: 6px; }.mnb-contact__alt a { color: var(--mnb-text); }.mnb-contact__alt a:hover { color: var(--mnb-gold-text); }/* ===== Contact page: two columns, Anton type, statute-style fields (theme-aware) ===== */
.mnb-contact-grid { display: grid; grid-template-columns: 1.25fr 1fr; gap: 22px; align-items: start; margin: 4px 0 8px; }@media (max-width: 760px) { .mnb-contact-grid { grid-template-columns: 1fr; } }/* Anton for every bit of text in the contact cards; color follows the theme */
.mnb-contact-grid, .mnb-contact-grid * { font-family: var(--mnb-font-impact); }.mnb-contact-grid .mnb-section { margin-top: 22px; }.mnb-contact-grid .mnb-form { margin: 0; }.mnb-contact-lead { text-transform: uppercase; letter-spacing: .02em; font-size: 1.05rem; color: var(--mnb-text); margin: 0 0 16px; }.mnb-contact-info h3 { text-transform: uppercase; letter-spacing: .02em; font-size: 1.15rem; color: var(--mnb-text); margin: 0 0 14px; }.mnb-contact-info { text-align: center; }.mnb-contact-info p.mnb-contact-info__label { font-family: var(--mnb-font-impact); text-transform: uppercase; letter-spacing: .02em; font-size: .92rem; color: var(--mnb-text); margin: 22px 0 4px; line-height: 1.3; }.mnb-contact-info p.mnb-contact-info__label:first-child { margin-top: 0; }.mnb-contact-info p { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.9; color: var(--mnb-text); margin: 0; }.mnb-contact-info a { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: var(--mnb-text); text-decoration: none; font-weight: 700; }.mnb-contact-info .mnb-reveal-btn { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; font-size: inherit; color: var(--mnb-text); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: none; font-weight: 700; }.mnb-contact-info .mnb-reveal-btn:hover { color: var(--mnb-text); }.mnb-contact-info a:hover { color: var(--mnb-text); }/* labels */
.mnb-contact-grid .mnb-field label { font-family: var(--mnb-font-impact); color: var(--mnb-text); text-transform: uppercase; font-size: .92rem; letter-spacing: .02em; }/* fields — light: statute blue; matched heights for input & select */
.mnb-contact-grid .mnb-field input,
.mnb-contact-grid .mnb-field select,
.mnb-contact-grid .mnb-field textarea {
  background: #D6E3EA;
  border: 2px solid #9AA7AE;
  box-shadow: none;
  color: var(--mnb-text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  border-radius: 10px;
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
}.mnb-contact-grid .mnb-field input,
.mnb-contact-grid .mnb-field select { height: 50px; padding: 0 14px; line-height: normal; }.mnb-contact-grid .mnb-field textarea { padding: 12px 14px; min-height: 140px; line-height: 1.3; resize: vertical; overflow-x: hidden; overflow-y: auto; }.mnb-contact-grid .mnb-field select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23171E22' stroke-width='2'/></svg>");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 40px;
}.mnb-contact-grid .mnb-field input::placeholder,
.mnb-contact-grid .mnb-field textarea::placeholder { color: var(--mnb-muted); }.mnb-contact-grid .mnb-field input:focus,
.mnb-contact-grid .mnb-field select:focus,
.mnb-contact-grid .mnb-field textarea:focus { outline: none; border-color: var(--mnb-gold); }/* fields — dark: match the dark statute treatment */
[data-theme="dark"] .mnb-contact-grid .mnb-field input,
[data-theme="dark"] .mnb-contact-grid .mnb-field select,
[data-theme="dark"] .mnb-contact-grid .mnb-field textarea {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: var(--mnb-border);
  box-shadow: none;
}[data-theme="dark"] .mnb-contact-grid .mnb-field select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23FFFFFF' stroke-width='2'/></svg>");
}/* invalid state */
.mnb-contact-grid .mnb-field.is-invalid input,
.mnb-contact-grid .mnb-field.is-invalid select,
.mnb-contact-grid .mnb-field.is-invalid textarea { border-color: #C0393D; }.mnb-field__hint { display: none; color: #C0393D; font-size: .8rem; margin-top: 4px; text-transform: uppercase; letter-spacing: .02em; }[data-theme="dark"] .mnb-field__hint { color: #EE6065; }.mnb-contact-grid .mnb-field.is-invalid .mnb-field__hint { display: block; }/* button row: reset left of submit, both right-aligned */
.mnb-form__actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 14px; }.mnb-form__actions .mnb-btn { font-family: var(--mnb-font-impact); text-transform: uppercase; letter-spacing: .03em; }.mnb-btn--reset { background: transparent; }/* ===== App Features page: alternating text / screenshot rows ===== */
.mnb-features { display: flex; flex-direction: column; gap: 60px; margin: 10px 0 8px; }.mnb-feature { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }.mnb-feature--rev .mnb-feature__copy { order: 2; }.mnb-feature--rev .mnb-feature__media { order: 1; }.mnb-feature__title { font-family: var(--mnb-font-impact); font-weight: 400; font-size: 1.7rem; line-height: 1.05; text-transform: uppercase; letter-spacing: .01em; color: var(--mnb-text); display: flex; align-items: center; gap: 12px; margin: 0 0 18px; }.mnb-feature__icon { display: inline-flex; flex: 0 0 auto; width: 34px; height: 34px; color: var(--mnb-muted); }.mnb-feature__icon svg { width: 100%; height: 100%; }.mnb-feature__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }.mnb-feature__list li { position: relative; padding-left: 28px; line-height: 1.45; color: var(--mnb-text); }.mnb-feature__list li::before { content: "\2713"; position: absolute; left: 0; top: 0; color: var(--mnb-muted); font-weight: 700; }[data-theme="dark"] .mnb-feature__icon,
[data-theme="dark"] .mnb-feature__list li::before { color: var(--mnb-gold-text); }.mnb-feature__media { display: flex; justify-content: center; }.mnb-feature__shot { position: relative; width: 100%; max-width: 290px; aspect-ratio: 760 / 1648; border-radius: 30px; overflow: hidden; box-shadow: 0 18px 44px rgba(0, 0, 0, .25); background: var(--mnb-surface-2); }.mnb-feature__shot img { width: 100%; height: 100%; object-fit: cover; display: block; }.mnb-feature__shot--ph { display: flex; align-items: center; justify-content: center; border: 2px dashed var(--mnb-border); box-shadow: none; }.mnb-feature__shot--ph span { font-family: var(--mnb-font-impact); text-transform: uppercase; letter-spacing: .05em; font-size: .9rem; color: var(--mnb-muted); }@media (max-width: 760px) {
  .mnb-features { gap: 40px; }
  .mnb-feature { grid-template-columns: 1fr; gap: 22px; }
  .mnb-feature--rev .mnb-feature__copy,
  .mnb-feature--rev .mnb-feature__media { order: 0; }   /* mobile: always text first, then screenshot */
  .mnb-feature__title { font-size: 1.4rem; }
  .mnb-feature__shot { max-width: 240px; }
}.mnb-appband { background: rgba(110, 124, 131, 0.8); -webkit-backdrop-filter: blur(12px) saturate(1.06); backdrop-filter: blur(12px) saturate(1.06); overflow: hidden; }[data-theme="dark"] .mnb-appband { background: rgba(10, 14, 18, 0.55); }.mnb-appband__inner { max-width: var(--mnb-maxw); margin: 0 auto; padding: 0 20px; display: flex; align-items: center; gap: 44px; }.mnb-appband__copy { flex: 1 1 auto; padding: 44px 0; }
/* SLIDES STACKED IN ONE GRID CELL. All four occupy the same area, so the band
   takes the height of the TALLEST and never jumps as the copy changes -- which
   is what absolute positioning or display:none would both cause. Only opacity
   and pointer-events change, so there is no reflow at all during a transition. */
.mnb-appband__slides { display: grid; }
.mnb-appband__slides > .mnb-appband__slide { grid-area: 1 / 1; }
.mnb-appband__slide {
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .6s ease, transform .6s ease, visibility 0s linear .6s;
}
.mnb-appband__slide.is-active {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity .6s ease, transform .6s ease, visibility 0s;
}/* Anton, matching the title and button beneath it -- the band is now all one
   face. Tracking at 0 by choice: at this size the condensed caps hold together
   without it. */
.mnb-appband__kicker { font-family: var(--mnb-font-impact); text-transform: uppercase; letter-spacing: 0; font-size: 1.3125rem; color: #000; margin: 0 0 8px; }
@media (max-width: 760px) {
  .mnb-appband__kicker { font-size: 1.617rem; }   /* +40% on 1.155 */
}[data-theme="dark"] .mnb-appband__kicker { color: var(--mnb-gold-text); }.mnb-appband__title { font-family: var(--mnb-font-impact); font-weight: 400; font-size: 2.1rem; line-height: 1.05; margin: 0 0 12px; color: #fff; }.mnb-appband__sub { color: rgba(255, 255, 255, .72); margin: 0 0 22px; max-width: 44ch; line-height: 1.5; }.mnb-appband__btn { display: inline-block; background: var(--mnb-gold); color: var(--mnb-gold-on); font-family: var(--mnb-font-impact); font-size: 1.05rem; letter-spacing: .03em; text-transform: uppercase; padding: 13px 26px; border-radius: 12px; text-decoration: none; box-shadow: 0 5px 14px rgba(0, 0, 0, .28); transition: box-shadow .15s ease, background .15s ease, color .15s ease; }/* Stars on the trial button. Deliberately NOT .mnb-star -- that class carries
   gold plus the inner-glow filter, which on a gold button would be invisible.
   These simply inherit the button's own text colour, so they stay legible in
   both the resting and hover states. Slightly smaller and raised, because a
   full-size star out-weighs the caps it punctuates. */
.mnb-appband__star {
  font-size: .82em;
  /* Raised to the optical middle of the caps. U+2605 is drawn centred on its
     own em box, which sits lower than the middle of Anton's cap height, so it
     reads as dropped without this. */
  vertical-align: .22em;
  /* Black, no shadow. On the gold button this carries 13.9:1 on its own, so
     nothing has to prop it up -- the shadow only existed because white sat at
     1.5:1 here. On hover the button flips to black, so the stars inherit that
     state's gold text instead. */
  color: #000;
}
.mnb-appband__btn:hover { background: #000; color: var(--mnb-gold-text); text-decoration: none; box-shadow: none; }
.mnb-appband__btn:hover .mnb-appband__star { color: inherit; }   /* gold on the black hover, or the stars disappear */[data-theme="dark"] .mnb-appband__btn:hover { background: #fff; color: #000; }.mnb-appband__btn--stacked { display: none; align-self: center; }/* 10% larger with the TOP held still. The container is align-self: flex-end,
   so it grows upward by default -- pinning the top instead means absorbing the
   whole 36px of extra height at the bottom. -36 - 36 = -72px, which lets the
   phone hang further past the band and clips the lower tenth, leaving the top
   90% visible. */
.mnb-appband__shot { flex: 0 0 auto; align-self: flex-end; position: relative; height: 396px; aspect-ratio: 760 / 1648; margin-bottom: -72px; }.mnb-appband__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; border-radius: 20px; box-shadow: 0 18px 44px rgba(0, 0, 0, .45); opacity: 0; transition: opacity .7s ease; }.mnb-appband__img.is-active { opacity: 1; }@media (max-width: 760px) {
  .mnb-appband__inner { flex-direction: column; gap: 22px; text-align: center; padding: 36px 20px; }
  .mnb-appband__copy { padding: 0; }
  .mnb-appband__sub { max-width: none; }
  .mnb-appband__shot { align-self: center; height: 300px; margin-bottom: 0; }
  .mnb-appband__btn--inline { display: none; }
  .mnb-appband__btn--stacked { display: inline-block; }
}/* Contained variant for the in-content (top) placement */
.mnb-appband--inset { border-radius: var(--mnb-radius); margin: 4px 0 30px; }.mnb-appband--inset .mnb-appband__inner { padding: 30px; }/* Inset variant: 300 -> 330px. align-self moves from center to flex-end so the
   growth cannot push the top up, and the extra 30px is taken off the bottom. */
.mnb-appband--inset .mnb-appband__shot { align-self: flex-end; height: 330px; margin-bottom: -30px; }
/* CORNER RADIUS, sized from the RENDERED width rather than a round number.
   At 396px tall the image is ~183px wide, and Apple's device corner is roughly
   a ninth of the short edge -- about 20px here. The old 30px was 16% of the
   width, closer to an iPod than an iPhone. The inset band renders the phone at
   152px, where the same 20px would read rounder, so it takes 17px. */
.mnb-appband--inset .mnb-appband__img { border-radius: 17px; }@media (max-width: 760px) {
  .mnb-appband--inset { display: none; }   /* top band hidden on mobile; bottom band still carries the CTA */
  .mnb-appband--inset.mnb-appband--home { display: block; }   /* ...except the homepage keeps its top band */

  /* The inset variant needs its own mobile reset. Its desktop rule sets
     align-self: flex-end to pin the phone's TOP while it grew 10% -- but once
     the band stacks into a column, align-self controls the HORIZONTAL axis, so
     flex-end threw the phone against the right edge and over the CTA. The
     generic .mnb-appband__shot mobile rule could not correct it: (0,1,0) loses
     to the variant's (0,2,0), so the override has to match that weight. */
  .mnb-appband--inset .mnb-appband__shot {
    align-self: center;
    height: 300px;
    margin-bottom: 0;
  }
}/* ============================================================================
   HOMEPAGE / STATE-PAGE PIECES
   ========================================================================== */
/* breadcrumb trail */
.mnb-breadcrumb {
  /* Above the page title in hit-testing. .mnb-page-title is position:relative
     (it needs that for its mirror ::after) with no z-index, and a positioned
     element wins clicks over a non-positioned sibling. With line-height:1 the
     title's BOX runs ~10px below its visible glyphs -- Anton sits high in the
     em box -- so it was covering the top half of these links and swallowing
     the clicks. The reflection itself was never the problem; it already has
     pointer-events: none. */
  position: relative;
  z-index: 1;
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  font-family: var(--mnb-font-display);   /* Feross, per Web.psd */
  font-size: 1.2rem;
  line-height: 1;
  text-transform: uppercase;
  color: #97a2a9; margin: 5px 0 14px;
}.mnb-breadcrumb a { color: var(--mnb-text); text-shadow: none; position: relative; }/* light: inactive links charcoal */
/* INVISIBLE hit area, 4px above and below. An overlay pseudo-element rather
   than padding: padding grows the box and pushes the line taller, whereas this
   is absolutely positioned so it occupies no layout space at all. It belongs
   to the <a>, so clicking it activates the link. */
.mnb-breadcrumb a::after {
  content: "";
  position: absolute;
  left: 0; right: 0; top: -4px; bottom: -4px;
}.mnb-breadcrumb a:hover { color: var(--mnb-muted); text-decoration: none; }/* light: hover slate (not gold) */
[data-theme="dark"] .mnb-breadcrumb a { color: #97a2a9; }/* dark: keep slate */
[data-theme="dark"] .mnb-breadcrumb a:hover { color: var(--mnb-gold-text); }/* dark: keep gold hover */
.mnb-breadcrumb [aria-current="page"] { color: var(--mnb-text); }[data-theme="dark"] .mnb-breadcrumb [aria-current="page"] { color: var(--mnb-gold-text); }.mnb-breadcrumb__sep { color: #97a2a9; }/* ---------------------------------------------------------------------------
   STATE MAP ICONS. One sprite at /assets/state-maps.svg, 51 <symbol>s keyed
   s-XX on the two-letter code, referenced with <use>. A sprite rather than
   inline paths: the set is 66 KB, which would be added to the directory AND to
   every state page if inlined, but as one cached file it is fetched once.

   The paths carry no fill of their own, so fill: currentColor makes each icon
   take the colour of the text beside it -- charcoal in light, white in dark,
   gold on a hover row -- with no per-theme rules needed.

   Sized in em so the icon tracks whatever type it sits next to.
   --------------------------------------------------------------------------- */
.mnb-state-map {
  width: 1.25em;
  height: 1.25em;
  /* Gold in both themes now, with a drop shadow in light -- gold measures
     ~1.5:1 on the light background, so the shadow is what gives the outline an
     edge to read against rather than being decoration. Explicit fill rather
     than currentColor: the icon should NOT follow the link text through its
     hover colour change; the map is a fixed marker, the name is the thing that
     responds. */
  fill: var(--mnb-gold);
  /* Drop shadow translated from Jordan's Photoshop panel: Normal, black, 100%
     opacity, Angle 124 deg, Distance 1px, Spread 0, Size 1px.
     Photoshop's Angle is where the LIGHT comes from, so the shadow falls at
     124+180 = 304 deg, i.e. right and down. Blur is ZERO on purpose: that
     makes the shadow a solid offset copy of the shape rather than a soft
     halo, which is the crisp result. These are SVG paths, so drop-shadow is
     the tool; the matrix tick is a text glyph and uses text-shadow for the
     same effect. */
  filter: drop-shadow(1px 1px 0 rgba(0, 0, 0, 1));
  vertical-align: -.22em;    /* optical centring against the cap height */
  margin-right: .45em;
  flex: none;                /* never squashed inside a flex row */
  opacity: .85;              /* a shade back from the text, so it reads as an
                                icon rather than competing with the name */
}a:hover > .mnb-state-map,
.mnb-state-grid a:hover .mnb-state-map { opacity: 1; }[data-theme="dark"] .mnb-state-map { fill: var(--mnb-gold); }@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-state-map { fill: var(--mnb-gold); }
}/* jurisdiction directory grid */
.mnb-state-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-flow: column;
  grid-template-rows: repeat(13, auto);   /* 51 items / 4 cols -> 13 rows */
  gap: 2px 12px;
}@media (max-width: 760px) {
  .mnb-state-grid { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(17, auto); }
}@media (max-width: 520px) {
  .mnb-state-grid { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(26, auto); }
}@media (max-width: 360px) {
  .mnb-state-grid { grid-template-columns: 1fr; grid-template-rows: auto; grid-auto-flow: row; }
}.mnb-state-grid a {
  /* padding-left trimmed 10px -> 4px now that a map icon leads the row. The
     10px was balanced for text starting at the edge; with the icon in front,
     the same value plus the icon's own width pushed each jurisdiction visibly
     inward. Vertical padding and the right side are unchanged, so the hover
     target keeps its height. */
  display: block; padding: 8px 10px 8px 4px; border-radius: var(--mnb-radius-sm);
  color: var(--mnb-text); text-shadow: none; font-size: .95rem;
}/* Slate on hover in light mode, not gold (Jordan 2026-08-05). Gold reads at
   1.5:1 on the light background -- it looked like the link was fading out
   rather than responding. Dark keeps gold, where it has 11:1 and is the
   established affordance. The top menu is deliberately NOT included: it sits
   on its own slate bar, where gold is the only thing that shows. */
.mnb-state-grid a:hover { color: var(--mnb-muted); text-decoration: none; }[data-theme="dark"] .mnb-state-grid a:hover { color: var(--mnb-gold-text); }@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-state-grid a:hover { color: var(--mnb-gold-text); }
}/* give an intro paragraph room above a following grid/list/table */
.mnb-section > .mnb-page-sub { margin-bottom: 12px; }/* ID-section intro paragraphs (general_id_text_*) */
/* statute callout box — gold border + leading warning triangle.
   light: odd-row gray bg, charcoal text; dark: 20% black bg, white text */
.mnb-statute {
  background: #D6E3EA;
  border: 2px solid #ffffff;
  border-radius: 10px;
  box-shadow: 0 0px 10px rgba(23, 30, 34, 0.2);   /* larger than the cards, soft drop */
  color: rgba(23, 30, 34, 0.85);   /* statute text at 85% */
  font-family: var(--mnb-font-display);
  font-size: 1.1rem;          /* ~13pt */
  line-height: 1;
  text-transform: uppercase;
  padding: 30px;
  margin: 8px 0 27px;
}[data-theme="dark"] .mnb-statute { background: rgba(255, 255, 255, 0.05); color: rgba(255, 255, 255, 0.85); border-color: var(--mnb-border); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5); }.mnb-statute::before { content: none; }/* warning glyph removed — the "i" badge marks the statute now */

/* ID group sub-headings (State / Federal / Government employment / Foreign / Other) */
.mnb-id-grouptitle {
  font-family: var(--mnb-font-impact);   /* Anton (Impact look) */
  font-size: 1.4rem;
  font-weight: 400;
  letter-spacing: .01em;
  text-align: center;
  color: #525252;
  padding-top: 20px;
  margin: 22px 0 6px;
}[data-theme="dark"] .mnb-id-grouptitle { color: #d3dade; }.mnb-id-grouptitle:first-of-type { margin-top: 8px; }.mnb-section__title--keepcase { text-transform: none; }/* each ID group as its own inner card within the main ID card */
.mnb-id-group {
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid var(--mnb-border);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(23, 30, 34, 0.06);
  padding: 6px 18px 20px;
  margin: 20px 0;
}.mnb-id-group:first-of-type { margin-top: 6px; }.mnb-id-group .mnb-id-grouptitle { padding-top: 8px; margin-top: 6px; }[data-theme="dark"] .mnb-id-group {
  background: rgba(255, 255, 255, 0.04);
  border-color: var(--mnb-border);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}.mnb-id-group > .mnb-cite:last-child { justify-content: flex-end; margin-top: 14px; }/* certificate body block — preserves statutory line breaks */
.mnb-cert-body { font-size: .92rem; line-height: 1.6; white-space: pre-wrap; }.mnb-cert-body code, .mnb-rules__note code { font-size: .9em; }/* disabled / coming-soon download link */
.mnb-doc-link--disabled { color: var(--mnb-muted); cursor: default; opacity: .75; }.mnb-doc-link--disabled:hover { border-color: var(--mnb-border); text-decoration: none; }/* ============================================================================
   RESPONSIVE  (mobile-first requirement — notaries check rules in the field)
   ----------------------------------------------------------------------------
   Tables keep their two columns and just tighten (per owner). Touch targets
   on the toggle, tabs, and download links stay >= 44px on small screens.
   ========================================================================== */

/* tablet */
@media (max-width: 768px) {
  :root { --mnb-maxw: 100%; }
  .mnb-page-title { font-size: 1.7rem; }
  .mnb-breadcrumb { font-size: 1rem; }
  .mnb-chip .mnb-chip__label { font-size: 12pt; }
  .mnb-section .mnb-statute { font-size: .99rem; }   /* -10% */
  .mnb-statute { padding: 30px 15px 15px; }   /* mobile: keep top 30, trim sides/bottom to 15 */
}/* phone */
@media (max-width: 600px) {
  .mnb-header        { padding: 12px 0; }
  .mnb-header__inner { padding: 0 14px 0 22px; }
  .mnb-header__brand img { height: 35px; }

  .mnb-main          { padding: 24px 14px 56px; }
  .mnb-page-title    { font-size: 1.4rem; }
  .mnb-breadcrumb    { font-size: .85rem; }
  .mnb-chip .mnb-chip__label { font-size: 10pt; }
  .mnb-tab__full { display: none; }
  .mnb-tab__short { display: inline; }

  .mnb-section       { padding: 16px 24px 12px; border-radius: 8px; margin-top: 16px; }
  .mnb-section__title,
  .mnb-id-grouptitle { font-size: 1.0425rem; }   /* ~16.7px (+1px) */
  .mnb-section__title--above { font-size: 1.15rem; }

  /* tables: same two columns, tighter cells + type */
  .mnb-rules th,
  .mnb-rules td      { padding: 9px 6px; font-size: .88rem; }
  .mnb-rules__note   { font-size: .8rem; }
  .mnb-badge         { font-size: .74rem; padding: 2px 8px; }

  /* tabs scroll sideways once RON/IPEN switch on, instead of wrapping/cramping */
  .mnb-tabs          { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .mnb-tab           { white-space: nowrap; min-height: 44px; }

  .mnb-cite          { font-size: .78rem; }
  .mnb-kv            { grid-template-columns: 1fr 6.5rem; }
  .mnb-kv dt, .mnb-kv dd { padding: 9px 6px; }
  .mnb-kv dt         { font-size: .9rem; }
  .mnb-kv dd         { justify-content: flex-end; text-align: right; }
  .mnb-rules td.mnb-rules__status { width: 1%; text-align: right; }

  /* finger-sized, full-width download links */
  .mnb-doc-link      { display: flex; width: 100%; min-height: 44px; margin: 8px 0 0; }
  .mnb-cta__btn      { display: block; text-align: center; min-height: 44px; line-height: 24px; }
}/* ============================================================================
   ACCESSIBILITY — reduced motion
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
  /* Smooth scrolling is motion too: readers who ask for less must get an
     instant jump, not a glide. */
  html { scroll-behavior: auto; }
}/* ============================================================================
   REPORT AN ERROR — floating toggle, mode banner, per-row flags, modal, toast
   ========================================================================== */

/* floating toggle, bottom-right */
.mnb-report-fab {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 150;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  font-family: var(--mnb-font-impact);
  letter-spacing: .03em;
  font-size: .95rem;
  text-transform: uppercase;
  color: var(--mnb-text);
  background: var(--mnb-surface);
  border: 1px solid var(--mnb-border);
  border-radius: 999px;
  box-shadow: var(--mnb-shadow);
  cursor: pointer;
  transition: transform .15s ease, border-color .15s ease;
}/* PRESSED state -- unconditional. This is what report mode looks like and it
   must apply on every device. */
.mnb-report-fab[aria-pressed="true"] { background: var(--mnb-gold); color: #000; border-color: var(--mnb-gold); }/* HOVER state -- pointer devices ONLY.
   TOUCH DOUBLE-TAP FIX (2026-08-04): with a bare :hover rule, a touch browser
   treats the first tap as "move the pointer here" (applying the hover styles)
   and only the SECOND tap as the click. That is the reported behaviour: the
   report button needing two taps on mobile. Gating hover behind (hover: hover)
   means touch devices never enter a hover state, so the first tap is the
   click. Pointer devices are unaffected. */
@media (hover: hover) and (pointer: fine) {
  .mnb-report-fab:hover { background: var(--mnb-gold); color: #000; border-color: var(--mnb-gold); }
}/* The button reads as one text line -- "> REPORT AN ERROR" -- all Anton, all
   one colour. The chevron comes from CSS rather than the markup (same rule the
   medallion glyphs follow), so the label string stays pure words.
   WHY 2em: Anton draws punctuation far smaller than its caps, so a chevron at
   the label's own size reads as a stray tick. Doubling matches it optically to
   the capitals beside it.
   line-height:0 keeps the enlarged glyph out of the line box, so the pill's
   height and padding are unchanged -- growing the font would otherwise reflow
   the button. Colour and family are inherited: nothing is set here. */
.mnb-report-fab[aria-pressed="true"] .mnb-report-fab__txt { display: none; }.mnb-report-fab__txt-on { display: none; }.mnb-report-fab[aria-pressed="true"] .mnb-report-fab__txt-on { display: inline; }/* hide the report button while the mobile menu overlay is open */
.mnb-nav-open .mnb-report-fab { display: none; }/* mode banner, top of content */
.mnb-report-banner {
  position: sticky;
  top: 64px;                 /* clears the sticky header */
  z-index: 120;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 0 0 14px;
  padding: 9px 40px 9px 14px;
  font-size: .92rem;
  text-align: center;
  color: var(--mnb-text);
  background: var(--mnb-surface-2);
  border: 1px dashed var(--mnb-gold);
  border-radius: 8px;
}.mnb-report-banner__exit {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px; height: 26px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .9rem; line-height: 1;
  color: var(--mnb-muted);
  background: none; border: none; border-radius: 50%;
  cursor: pointer;
}.mnb-report-banner__exit:hover { color: var(--mnb-text); background: rgba(0,0,0,.08); }/* per-row flag — hidden until report mode is on */
.mnb-flag {
  display: none;
  position: relative;
  overflow: hidden;
  align-items: center;
  justify-content: center;
  width: 22px; height: 22px;
  margin-left: 8px;
  vertical-align: middle;
  font-size: .72rem; line-height: 1;
  color: #fff;
  background: radial-gradient(circle at 50% 32%, #EE6065, #E5484D);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  box-shadow:
    0 1px 3px rgba(0, 0, 0, .30),
    inset 0 2px 2px rgba(255, 255, 255, .55),
    inset 0 -3px 5px rgba(0, 0, 0, .25);
}.mnb-flag::before {
  content: "";
  position: absolute;
  top: 6%; left: 10%; right: 10%;
  height: 42%;
  border-radius: 50%;
  background: linear-gradient(to bottom, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0));
  pointer-events: none;
}.mnb-flag:hover { filter: brightness(1.08); }body.mnb-reporting .mnb-flag { display: inline-flex; }/* the demo flag inside the banner is always visible */
.mnb-flag--demo { display: inline-flex; width: 20px; height: 20px; cursor: default; margin: 0 2px; }/* modal */
.mnb-modal-backdrop {
  position: fixed; inset: 0; z-index: 400;
  display: flex; align-items: center; justify-content: center;
  padding: 18px;
  background: rgba(0,0,0,.5);
}.mnb-modal {
  width: 100%; max-width: 440px;
  background: var(--mnb-surface);
  color: var(--mnb-text);
  border: 1px solid var(--mnb-border);
  border-radius: var(--mnb-radius);
  box-shadow: 0 18px 50px rgba(0,0,0,.35);
  padding: 20px 20px 18px;
}[data-theme="dark"] .mnb-modal { background: #11171c; }[data-theme="dark"] .mnb-modal__title { color: var(--mnb-gold-text); }[data-theme="dark"] .mnb-modal__ctx { color: #fff; }.mnb-modal__title { font-family: var(--mnb-font-display); font-size: 1.15rem; margin: 0 0 4px; text-transform: uppercase; text-align: center; }.mnb-modal__ctx {
  font-size: .9rem; color: var(--mnb-muted);
  margin: 0 0 14px; padding-bottom: 12px;
  border-bottom: 1px solid var(--mnb-border);
}.mnb-modal__ctx strong { color: var(--mnb-text); }.mnb-modal__reasons { display: flex; flex-direction: column; gap: 2px; margin: 0 0 16px; }.mnb-reason {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 11px 12px;
  border: 1px solid var(--mnb-border);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color .12s ease, background .12s ease;
}.mnb-reason + .mnb-reason { margin-top: 6px; }.mnb-reason:hover { border-color: var(--mnb-gold); }.mnb-reason input { margin-top: 3px; accent-color: var(--mnb-gold); }.mnb-reason.is-sel { border-color: var(--mnb-gold); background: rgba(223,168,0,.14); }.mnb-modal__actions { display: flex; justify-content: flex-end; gap: 10px; }.mnb-btn {
  padding: 9px 18px; font-size: .92rem; font-family: var(--mnb-font-display);
  border-radius: 8px; cursor: pointer; border: 1px solid var(--mnb-border);
  background: var(--mnb-surface-2); color: var(--mnb-text);
}.mnb-btn--primary { background: var(--mnb-gold); border-color: var(--mnb-gold); color: var(--mnb-gold-on); }.mnb-btn--primary:disabled { opacity: .5; cursor: not-allowed; }/* toast */
.mnb-toast {
  position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%);
  z-index: 500;
  padding: 11px 18px; font-size: .92rem;
  color: #fff; background: #1f7a3d;
  border-radius: 999px; box-shadow: var(--mnb-shadow);
}.mnb-toast--err { background: #9a2b2b; }@media (max-width: 600px) {
  .mnb-report-fab { right: 12px; bottom: 12px; padding: 9px 14px; font-size: .8075rem; }
  .mnb-report-banner { top: 56px; }
}/* ============================================================================
   CHIP GRID + STATUS MEDALLIONS  (state-page redesign — Web.psd)
   ========================================================================== */
.mnb-chipgrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 27px 32px;
  margin: 25px 0 6px 15px;   /* left inset so the straddling circles respect the card's inner padding */
}.mnb-chip {
  position: relative;
  display: flex;
  align-items: center;
  padding: 14px 16px 14px 30px;   /* left room for the half-overlapping medallion */
  min-height: 56px;
  background: #F3F3F3;
  border: 2px solid #ffffff;                          /* match statute card */
  border-radius: 12px;
  box-shadow: 0 0px 10px rgba(23, 30, 34, 0.2);       /* match statute card */
}[data-theme="dark"] .mnb-chip { background: rgba(255, 255, 255, 0.045); border-color: var(--mnb-border); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5); }.mnb-chip__label { font-family: "Arial Rounded MT Bold", "Varela Round", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; font-size: 14pt; line-height: 1.2; color: rgba(23, 30, 34, 0.85); text-transform: uppercase; }[data-theme="dark"] .mnb-chip__label { color: rgba(255, 255, 255, 0.85); }.mnb-chip__note  { display: block; font-size: .75rem; color: var(--mnb-muted); margin-top: 2px; text-transform: none; }/* asterisk marker on IDs that carry a footnote, + the footnotes under each group */
.mnb-chip__star { margin-left: 2px; font-size: .85em; font-weight: 700; color: rgba(23, 30, 34, 0.55); vertical-align: baseline; position: relative; top: -0.3em; line-height: 0; }[data-theme="dark"] .mnb-chip__star { color: rgba(255, 255, 255, 0.55); }.mnb-id-footnotes { margin: 26px 0 6px; }.mnb-id-footnote { margin: 6px 0 0; font-family: var(--mnb-font-display); font-size: .85rem; line-height: 1.4; color: rgba(23, 30, 34, 0.85); text-transform: uppercase; text-align: center; }[data-theme="dark"] .mnb-id-footnote { color: rgba(255, 255, 255, 0.85); }.mnb-id-footnote__star { margin-right: 5px; font-weight: 400; color: rgba(23, 30, 34, 0.85); }[data-theme="dark"] .mnb-id-footnote__star { color: rgba(255, 255, 255, 0.85); }.mnb-id-footnote__cite { display: block; margin-top: 3px; font-size: .78rem; letter-spacing: .02em; color: var(--mnb-muted); }/* Credible-witness paths: chip (one ID-cell wide) + descriptor in the adjacent column */
.mnb-cw-paths { margin: 22px 0 6px 15px; display: flex; flex-direction: column; gap: 16px; }.mnb-cw-path { display: grid; grid-template-columns: calc((100% - 32px) / 2) 1fr; column-gap: 32px; align-items: center; }.mnb-chip--auto { margin: 0; }.mnb-cw-path__desc { font-family: var(--mnb-font-display); text-transform: uppercase; font-size: .9rem; line-height: 1.35; color: rgba(23, 30, 34, 0.85); }[data-theme="dark"] .mnb-cw-path__desc { color: rgba(255, 255, 255, 0.85); }@media (max-width: 600px) {
  .mnb-cw-path { grid-template-columns: 1fr; row-gap: 8px; align-items: start; }
  .mnb-cw-path__desc { padding-left: 4px; }
}/* Journal entries: two-column Required / Prohibited lists */
.mnb-jchipcols { display: grid; grid-template-columns: 1fr 1fr; gap: 22px 24px; margin: 12px 0 6px; align-items: stretch; }/* Each column (Required / Prohibited) sits in its own card so the two groups
   read as separate sets. Matches the .mnb-id-group frame. */
.mnb-jchipcol {
  min-width: 0;
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid var(--mnb-border);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(23, 30, 34, 0.06);
  padding: 14px 18px 20px;
}[data-theme="dark"] .mnb-jchipcol {
  background: rgba(255, 255, 255, 0.04);
  border-color: var(--mnb-border);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}.mnb-jchipcol__title { font-family: var(--mnb-font-impact); text-transform: uppercase; font-size: 1.05rem; letter-spacing: .03em; color: var(--mnb-text); margin: 0 0 14px; text-align: center; }.mnb-jchipcol__none { font-family: var(--mnb-font-display); text-transform: uppercase; font-size: .85rem; color: rgba(23, 30, 34, 0.45); margin: 0; text-align: center; }[data-theme="dark"] .mnb-jchipcol__none { color: rgba(255, 255, 255, 0.45); }/* single-column chip grid variant (used inside Required/Prohibited columns) */
.mnb-chipgrid--single { grid-template-columns: 1fr; gap: 18px 0; margin-left: 8px; }@media (max-width: 600px) {
  .mnb-jchipcols { grid-template-columns: 1fr; gap: 28px; }
}.mnb-chip .mnb-flag { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); margin-left: 0; }/* medallion straddles the LEFT edge, vertically centered (Web.psd) */
.mnb-chip .mnb-med { position: absolute; top: 50%; left: 0; transform: translate(-50%, -50%); z-index: 2; }/* ---- Recording Restrictions strip (journal card) -------------------------
   Reuses the chip shell so the medallion straddles the left edge as usual;
   the line text is authored prose, so it runs sentence-case at reading size
   rather than the uppercase chip-label treatment. */
.mnb-jrestrict { margin: 26px 0 6px; }.mnb-chip--restrict { min-height: 0; align-items: flex-start; padding: 14px 16px 14px 34px; }.mnb-jrestrict__text {
  font-family: var(--mnb-font-display);
  font-size: .95rem;
  line-height: 1.45;
  color: rgba(23, 30, 34, 0.85);
}[data-theme="dark"] .mnb-jrestrict__text { color: rgba(255, 255, 255, 0.85); }.mnb-jrestrict__cite {
  display: block;
  margin-top: 6px;
  font-family: var(--mnb-font-display);
  text-transform: uppercase;
  letter-spacing: .02em;
  font-size: .78rem;
  color: var(--mnb-muted);
}/* circular status medallion */
.mnb-med {
  flex: none;
  position: relative;
  overflow: hidden;
  width: 34px; height: 34px;
  border-radius: 50%;
  border: 2px solid #fff;                 /* white ring (Web.psd) */
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 1.35rem; font-weight: 700; line-height: 1;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .5);
  box-shadow:
    0 1px 3px rgba(0, 0, 0, .30),          /* outer drop — lifts off the chip */
    inset 0 2px 2px rgba(255, 255, 255, .55), /* top inner highlight — bevel */
    inset 0 -3px 5px rgba(0, 0, 0, .25);   /* bottom inner shade — bevel */
}/* glossy highlight cap over the top — the "glass/marble" sheen */
.mnb-med::before {
  content: "";
  position: absolute;
  top: 6%; left: 10%; right: 10%;
  height: 42%;
  border-radius: 50%;
  background: linear-gradient(to bottom, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0));
  pointer-events: none;
}.mnb-med--ok { background: radial-gradient(circle at 50% 32%, #B8D228, #9EB500); --mnb-med-glyph: "\2713"; }.mnb-med--opt { background: radial-gradient(circle at 50% 32%, #FFD84D, #E0A800); --mnb-med-glyph: "\2713"; }.mnb-med--no { background: radial-gradient(circle at 50% 32%, #EE6065, #E5484D); --mnb-med-glyph: "X"; font-family: var(--mnb-font-display); font-size: 1.35rem; font-weight: 400; -webkit-text-stroke: 0.6px currentColor; }/* caution medallion — limits, not permissions (Partial Recording Rules) */
.mnb-med--warn { background: radial-gradient(circle at 50% 32%, #FFC53D, #F0A500); --mnb-med-glyph: "!"; font-family: var(--mnb-font-display); font-size: 1.35rem; font-weight: 400; -webkit-text-stroke: 0.6px currentColor; }/* The glyph itself lives in CSS (single source of truth) — emitters output an
   empty <span class="mnb-med mnb-med--*">. ::before is the glossy sheen, so
   the glyph rides ::after, centered over the badge. */
.mnb-med::after {
  content: var(--mnb-med-glyph, "");
  position: relative; z-index: 1;
}/* ---- Multi-document paths selector (AK / CT / NY) ------------------------ */
.mnb-paths { margin: 20px 0 6px; }.mnb-paths-banner {
  margin: 14px 0 20px; padding: 14px 18px;
  border-radius: 12px;
  background: #FCEEEE; border: 2px solid #E5484D;
  font-family: var(--mnb-font-display); text-transform: uppercase;
  font-size: .95rem; line-height: 1.4; color: #8A1F22; text-align: center;
}[data-theme="dark"] .mnb-paths-banner { background: rgba(229,72,77,.14); color: #F5B5B7; }.mnb-paths__cols {
  display: grid; grid-template-columns: 1fr 1fr; gap: 20px 24px;
  align-items: stretch;
}.mnb-paths__col {
  min-width: 0;
  display: flex; flex-direction: column;
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid var(--mnb-border);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(23, 30, 34, 0.06);
  padding: 16px 18px 18px;
}.mnb-paths__col .mnb-paths__list { flex: 1 1 auto; }.mnb-paths__col[hidden] { display: none; }[data-theme="dark"] .mnb-paths__col {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.14);
}.mnb-paths__label {
  display: block; font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: 1.05rem; letter-spacing: .03em; color: var(--mnb-text); margin: 0 0 8px;
  text-align: center;
}.mnb-paths__hint {
  font-family: var(--mnb-font-display); font-size: .88rem; line-height: 1.4;
  color: var(--mnb-muted); margin: 0 0 10px;
}.mnb-paths__list {
  width: 100%; padding: 6px; font-size: .98rem;
  border-radius: 10px; border: 2px solid var(--mnb-border, #C9CDD2);
  background: var(--mnb-card, #fff); color: var(--mnb-text);
  font-family: var(--mnb-font-body, inherit);
}.mnb-paths__list option { padding: 8px 10px; border-radius: 6px; }.mnb-paths__list option:checked {
  background: var(--mnb-gold, #E0A800); color: #000;
}[data-theme="dark"] .mnb-paths__list { background: #242C31; border-color: rgba(255,255,255,.25); }@media (max-width: 600px) {
  .mnb-paths__cols { grid-template-columns: 1fr; gap: 22px; }
  /* Mobile: the selectors become single-line dropdowns styled to match the
     contact form's Subject field (light blue, custom chevron). The size attr
     is overridden to a fixed height so it reads as a dropdown, not a listbox. */
  .mnb-paths__list {
    height: 50px;
    padding: 0 40px 0 14px;
    background: #D6E3EA;
    border: 2px solid #9AA7AE;
    border-radius: 10px;
    color: var(--mnb-text);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23171E22' stroke-width='2'/></svg>");
    background-repeat: no-repeat;
    background-position: right 14px center;
  }
  .mnb-paths__list:focus { outline: none; border-color: var(--mnb-gold); }
  [data-theme="dark"] .mnb-paths__list {
    background-color: rgba(255, 255, 255, 0.05);
    border-color: var(--mnb-border);
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23FFFFFF' stroke-width='2'/></svg>");
    background-repeat: no-repeat;
    background-position: right 14px center;
  }
}.mnb-paths__summary {
  margin: 4px 0 20px; font-family: var(--mnb-font-display);
  font-size: .98rem; line-height: 1.15; color: var(--mnb-text);
  text-transform: uppercase;
}/* The confirm message reuses the .mnb-chip shell (see setMsg) so it is
   visually identical to the CW / Personally-Known chips. Only the top margin
   and the hidden guard are specific to it; frame, border, min-height, offset
   medallion and label all inherit from .mnb-chip. */
.mnb-paths__confirm { margin-top: 14px; margin-left: 17px; }/* The confirm keeps the chip frame but its label reverts to Feross at the
   original confirm size (the other chip labels use the rounded body stack).
   Colour stays the chip-label colour. */
.mnb-paths__confirm .mnb-chip__label {
  font-family: var(--mnb-font-display); font-size: .85rem; line-height: 1.15; color: #000;
}[data-theme="dark"] .mnb-paths__confirm .mnb-chip__label { color: #fff; }.mnb-paths__confirm[hidden] { display: none; }.mnb-paths__modal {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  background: rgba(23,30,34,.55); padding: 20px;
}.mnb-paths__modal[hidden] { display: none; }.mnb-paths__modal-card {
  background: var(--mnb-card, #fff); color: var(--mnb-text);
  border-radius: 14px; max-width: 380px; width: 100%;
  padding: 22px 22px 18px; box-shadow: 0 12px 40px rgba(0,0,0,.3);
  border: 1px solid rgba(255, 255, 255, 0.15);
}[data-theme="dark"] .mnb-paths__modal-card { background: #1E262B; }.mnb-paths__modal-title {
  margin: 0 0 6px; font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: 1.1rem; letter-spacing: .02em; color: var(--mnb-text); text-align: center;
}.mnb-paths__modal-sub {
  margin: 0 0 16px; font-family: var(--mnb-font-display); font-size: .82rem;
  line-height: 1.3; color: rgba(0, 0, 0, 0.9); text-transform: uppercase; text-align: center;
}[data-theme="dark"] .mnb-paths__modal-sub { color: rgba(255, 255, 255, 0.8); }.mnb-paths__modal-boxes { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; margin: 0 0 20px; }.mnb-paths__modal-box {
  display: flex; align-items: center; gap: 10px; cursor: pointer;
  font-family: var(--mnb-font-display); font-size: .95rem; text-transform: uppercase;
  color: var(--mnb-text);
}.mnb-paths__modal-box input { width: 18px; height: 18px; cursor: pointer; }.mnb-paths__modal-actions { display: flex; gap: 10px; justify-content: flex-end; }.mnb-paths__modal-cancel, .mnb-paths__modal-submit {
  padding: 9px 16px; border-radius: 8px; cursor: pointer;
  font-family: var(--mnb-font-impact); font-size: .82rem; text-transform: uppercase; letter-spacing: .03em;
}.mnb-paths__modal-cancel { background: transparent; border: 1.5px solid var(--mnb-border, #C9CDD2); color: #000; }.mnb-paths__modal-submit { background: var(--mnb-gold, #E0A800); border: 1.5px solid var(--mnb-gold, #E0A800); color: #000; }[data-theme="dark"] .mnb-paths__modal-cancel { border-color: rgba(255,255,255,.25); color: #fff; }.mnb-paths__verify {
  margin: 8px 0 0; padding: 9px 13px; border-radius: 9px;
  font-family: var(--mnb-font-display); font-size: .78rem; line-height: 1.15;
  text-transform: uppercase;
  background: rgba(229,72,77,.14); color: #8A1F22;
}[data-theme="dark"] .mnb-paths__verify { color: #F5B5B7; }.mnb-paths__prose {
  margin: 10px 0 0; font-family: var(--mnb-font-display); font-size: .88rem;
  line-height: 1.15; color: var(--mnb-muted);
  text-transform: uppercase;
}[data-theme="dark"] .mnb-med { border-color: rgba(255, 255, 255, .8); }/* YES / NO gold pill medallion (for boolean rows on the kv cards) */
.mnb-pill-med {
  flex: none;
  min-width: 38px; height: 30px; padding: 0 10px;
  border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: radial-gradient(circle at 50% 32%, #FFD83A, #FFCA08);
  color: #5a4600; font-size: .72rem; font-weight: 800; letter-spacing: .03em;
  border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
}/* info "i" badge tabbed onto the top edge of a statute box */
.mnb-statute-wrap { position: relative; margin-top: 28px; }.mnb-statute-wrap .mnb-statute { margin-top: 0; }.mnb-statute-cite { font-family: var(--mnb-font-display); text-transform: uppercase; letter-spacing: .02em; font-size: .85rem; color: var(--mnb-muted); text-align: center; margin: 6px 0 22px; }.mnb-statute-cite--head { margin: -2px 0 14px; }/* sits under the card title, above the card */
.mnb-statute-cite a { color: inherit; text-decoration: underline; }.mnb-statute-cite a:hover { color: var(--mnb-text); }[data-theme="dark"] .mnb-statute-cite a:hover { color: var(--mnb-gold-text); }.mnb-info-badge {
  position: absolute; top: -16px; left: 50%; transform: translateX(-50%);
  overflow: hidden;
  width: 34px; height: 34px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: radial-gradient(circle at 50% 32%, #808F98, #586870);
  color: #fff; font-family: Georgia, "Times New Roman", serif;
  font-style: italic; font-weight: 700; font-size: 1.05rem;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .35);
  box-shadow:
    0 2px 5px rgba(0, 0, 0, .3),
    inset 0 2px 2px rgba(255, 255, 255, .55),
    inset 0 -3px 5px rgba(0, 0, 0, .25);
  border: 2px solid var(--mnb-surface);
}.mnb-info-badge::before {
  content: "";
  position: absolute;
  top: 6%; left: 10%; right: 10%;
  height: 42%;
  border-radius: 50%;
  background: linear-gradient(to bottom, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0));
  pointer-events: none;
}[data-theme="dark"] .mnb-info-badge { border-color: rgba(255, 255, 255, .8); }@media (max-width: 600px) {
  .mnb-chipgrid { grid-template-columns: 1fr; gap: 10px; margin-left: 10px; }   /* nudge box+circle unit ~5px left (was 15px) */
  .mnb-chip { padding: 14px 11px 14px 25px; }   /* -5px each side for more text room (was 16/30) */
}/* =========================================================================
   AUTO THEME (Jordan, 2026-07-22): with no explicit choice, the device's
   color scheme governs on load. Every [data-theme="dark"] rule above is
   mirrored here scoped to :root:not([data-theme]) inside a
   prefers-color-scheme media query - generated mechanically from the
   originals; edit the original rule and re-mirror. The moment the toggle
   sets data-theme (either value), these stop matching and the explicit
   choice wins.
   ========================================================================= */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) { color-scheme: dark; }
  /* ---- DARK (matches the app) ---------------------------------------------- */
:root:not([data-theme]) {
  --mnb-bg:            #171E22;   /* app background */

  /* ambient texture — dark: light speckle that lightens, faint center glow */
  --mnb-tex-blend:     screen;
  --mnb-vignette:      rgba(0, 0, 0, 0.55);  /* corner vignette (dark) */
  --mnb-vignette-0:    rgba(0, 0, 0, 0);
  --mnb-grain:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");
  --mnb-grain-size:    200px;

  --mnb-surface:       #1E262B;   /* one notch up — app is flat, tables need cards */
  --mnb-surface-2:     #232C32;
  --mnb-border:        rgba(112,128,144,.30);   /* app slate @30% */

  --mnb-text:          #FFFFFF;
  --mnb-muted:         #708090;
  --mnb-strong:        #FFFFFF;

  --mnb-gold:          #FFCC00;
  --mnb-gold-on:       #171E22;
  --mnb-gold-text:     #FFCC00;
  --mnb-gold-shadow:   none;

  --mnb-link:          var(--mnb-gold-text);
  --mnb-link-shadow:   none;

  --mnb-ok:            #3DBA86;
  --mnb-ok-bg:         rgba(61,186,134,.14);
  --mnb-cond:          #E0883D;
  --mnb-cond-bg:       rgba(224,136,61,.14);
  --mnb-no:            #E06666;
  --mnb-no-bg:         rgba(224,102,102,.14);

  --mnb-shadow:        0 1px 2px rgba(0,0,0,.40), 0 2px 8px rgba(0,0,0,.35);
  --mnb-shadow-header: 0 0.5px 0 var(--mnb-border);
  }
  :root:not([data-theme]) .mnb-header::before { background-color: rgba(30, 38, 43, 0.8);
  }
  /* light mode shows logo-lt.png */
:root:not([data-theme]) .mnb-header__brand .mnb-logo--light { display: none;
  }
  /* dark mode shows logo.png */
:root:not([data-theme]) .mnb-header__brand .mnb-logo--dark { display: block;
  }
  :root:not([data-theme]) .mnb-toggle__track { background: #2c343a; box-shadow: inset 0 1px 2px rgba(0, 0, 0, .5);
  }
  :root:not([data-theme]) .mnb-toggle__sun { color: rgba(255, 255, 255, .4);
  }
  :root:not([data-theme]) .mnb-toggle__moon { color: #fff;
  }
  :root:not([data-theme]) .mnb-toggle__knob { transform: translateX(30px); background: radial-gradient(circle at 50% 32%, #B0BAC0, #6F7A80);
  }
  :root:not([data-theme]) .mnb-page-title { color: #e6e9eb;
  }
  :root:not([data-theme]) .mnb-page-title::after {
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
          mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
  }
  :root:not([data-theme]) .mnb-section {
  background: rgba(10, 14, 18, 0.55);   /* tinted glass — dark. lower alpha = more texture */
  border-color: rgba(112, 128, 144, 0.45);   /* stronger than the .30 default */
  }
  /* dark: zebra rows at 50% so the card's frosted texture reads through */
:root:not([data-theme]) .mnb-rules tbody tr:nth-child(even), :root:not([data-theme]) .mnb-kv dt:nth-of-type(even), :root:not([data-theme]) .mnb-kv dd:nth-of-type(even) { background: rgba(35, 44, 50, 0.5);
  }
  :root:not([data-theme]) .mnb-section__title--above { color: #d3dade;
  }
  :root:not([data-theme]) .mnb-section__title--above::after {
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
          mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.3), transparent 85%);
  }
  :root:not([data-theme]) .mnb-rules__note { color: rgba(255, 255, 255, 0.85);
  }
  /* desktop shows the full label */
:root:not([data-theme]) .mnb-tab {
  color: var(--mnb-gold-text);
  background: rgba(10, 14, 18, 0.55);
  border-color: rgba(112, 128, 144, 0.45);
  }
  :root:not([data-theme]) .mnb-tab[aria-selected="true"] { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-disclaimer { color: #fff;
  }
  :root:not([data-theme]) .mnb-footer__nav a { color: #fff;
  }
  :root:not([data-theme]) .mnb-footer__legal a { color: #fff;
  }
  :root:not([data-theme]) .mnb-form__ok { color: #7ED957;
  }
  :root:not([data-theme]) .mnb-form__err { color: #EE6065;
  }
  /* fields — dark: match the dark statute treatment */
:root:not([data-theme]) .mnb-contact-grid .mnb-field input, :root:not([data-theme]) .mnb-contact-grid .mnb-field select, :root:not([data-theme]) .mnb-contact-grid .mnb-field textarea {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: var(--mnb-border);
  box-shadow: none;
  }
  :root:not([data-theme]) .mnb-contact-grid .mnb-field select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23FFFFFF' stroke-width='2'/></svg>");
  }
  :root:not([data-theme]) .mnb-field__hint { color: #EE6065;
  }
  :root:not([data-theme]) .mnb-feature__icon, :root:not([data-theme]) .mnb-feature__list li::before { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-appband { background: rgba(10, 14, 18, 0.55);
  }
  :root:not([data-theme]) .mnb-appband__kicker { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-appband__btn:hover { background: #fff; color: #000;
  }
  /* light: hover slate (not gold) */
:root:not([data-theme]) .mnb-breadcrumb a { color: #97a2a9;
  }
  /* dark: keep slate */
:root:not([data-theme]) .mnb-breadcrumb a:hover { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-breadcrumb [aria-current="page"] { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-statute { background: rgba(255, 255, 255, 0.05); color: rgba(255, 255, 255, 0.85); border-color: var(--mnb-border); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5);
  }
  :root:not([data-theme]) .mnb-id-grouptitle { color: #d3dade;
  }
  :root:not([data-theme]) .mnb-id-group {
  background: rgba(255, 255, 255, 0.04);
  border-color: var(--mnb-border);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
  }
  :root:not([data-theme]) .mnb-paths__col {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.14);
  }
  :root:not([data-theme]) .mnb-modal { background: #11171c;
  }
  :root:not([data-theme]) .mnb-modal__title { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-modal__ctx { color: #fff;
  }
  :root:not([data-theme]) .mnb-chip { background: rgba(255, 255, 255, 0.045); border-color: var(--mnb-border); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5);
  }
  :root:not([data-theme]) .mnb-chip__label { color: rgba(255, 255, 255, 0.85);
  }
  :root:not([data-theme]) .mnb-chip__star { color: rgba(255, 255, 255, 0.55);
  }
  :root:not([data-theme]) .mnb-id-footnote { color: rgba(255, 255, 255, 0.85);
  }
  :root:not([data-theme]) .mnb-id-footnote__star { color: rgba(255, 255, 255, 0.85);
  }
  :root:not([data-theme]) .mnb-cw-path__desc { color: rgba(255, 255, 255, 0.85);
  }
  :root:not([data-theme]) .mnb-jchipcol {
  background: rgba(255, 255, 255, 0.04);
  border-color: var(--mnb-border);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
  }
  :root:not([data-theme]) .mnb-jchipcol__none { color: rgba(255, 255, 255, 0.45);
  }
  :root:not([data-theme]) .mnb-med { border-color: rgba(255, 255, 255, .8);
  }
  :root:not([data-theme]) .mnb-statute-cite a:hover { color: var(--mnb-gold-text);
  }
  :root:not([data-theme]) .mnb-info-badge { border-color: rgba(255, 255, 255, .8);
  }
}/* Auto-theme mirrors for the three dark rules living inside the <=860px
   mobile media block above (same :root:not([data-theme]) scoping). */
/* Auto-theme mirrors for the paths selector. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-paths-banner { background: rgba(229,72,77,.14); color: #F5B5B7; }
  :root:not([data-theme]) .mnb-paths__list { background: #242C31; border-color: rgba(255,255,255,.25); }

  :root:not([data-theme]) .mnb-paths__modal-card { background: #1E262B; }
  :root:not([data-theme]) .mnb-paths__confirm .mnb-chip__label { color: #fff; }
  :root:not([data-theme]) .mnb-paths__modal-sub { color: rgba(255, 255, 255, 0.8); }
  :root:not([data-theme]) .mnb-paths__modal-cancel { border-color: rgba(255,255,255,.25); color: #fff; }
  :root:not([data-theme]) .mnb-paths__verify { color: #F5B5B7; }
}/* Auto-theme mirror for the Recording Restrictions strip. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-jrestrict__text { color: rgba(255, 255, 255, 0.85); }
}@media (prefers-color-scheme: dark) and (max-width: 860px) {
  :root:not([data-theme]) .mnb-header .mnb-toggle,
  :root:not([data-theme]) .mnb-header .mnb-burger { color: var(--mnb-gold-text); }
  :root:not([data-theme]) .mnb-header::before { background-color: #1E262B; }
  :root:not([data-theme]) .mnb-nav { background: #1E262B; }
}/* Auto-theme (device dark) mobile dropdown: mirror the explicit-dark mobile
   select styling so device-dark users get the dark field + white chevron, and
   re-assert no-repeat/position so the desktop dark shorthand can't tile it. */
@media (prefers-color-scheme: dark) and (max-width: 600px) {
  :root:not([data-theme]) .mnb-paths__list {
    background-color: rgba(255, 255, 255, 0.05);
    border-color: var(--mnb-border);
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23FFFFFF' stroke-width='2'/></svg>");
    background-repeat: no-repeat;
    background-position: right 14px center;
  }
}/* Anchor landing offset. The header is sticky, so a heading scrolled to the
   very top of the viewport lands UNDERNEATH it. scroll-margin-top reserves
   that space for every element the section menu targets -- headings plus the
   journal FAQ list -- and applies to native anchor jumps too. */
h2.mnb-section__title--above,
h3.mnb-id-grouptitle,
.mnb-kv { scroll-margin-top: 110px; }/* ============================================================================
   FLOATING SECTION MENU (state pages, desktop)
   ----------------------------------------------------------------------------
   Sits OUTSIDE the content column, to its left, like a wing mirror -- the card
   stack stays exactly where it was and keeps the page's centre of gravity. The
   menu is positioned off the viewport centre rather than the document flow, so
   adding it moves nothing: the main column's width and centring are untouched.

   left = 50% (centre) - half the content width - gutter - menu width.
   It only appears when there is genuinely room for it beside the content;
   below that the content would be pushed off-centre, so it is hidden rather
   than allowed to overlap. Mobile treatment is a separate decision.
   ========================================================================== */
.mnb-secnav {
  position: fixed;
  top: 128px;
  left: calc(50% - (var(--mnb-maxw) / 2) - 24px - 216px);
  width: 216px;
  max-height: calc(100vh - 176px);
  overflow-y: auto;
  z-index: 90;
  padding: 16px 16px 18px;
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid var(--mnb-border);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(23, 30, 34, 0.06);
  -webkit-backdrop-filter: blur(10px) saturate(1.05);
  backdrop-filter: blur(10px) saturate(1.05);
}.mnb-secnav[hidden] { display: none; }.mnb-secnav__title {
  margin: 0 0 10px;
  font-family: var(--mnb-font-impact);
  text-transform: uppercase;
  letter-spacing: .04em;
  font-size: .945rem;          /* was .82rem (~13px); +2px */
  color: var(--mnb-text);      /* app charcoal in light; the dark rule below
                                  overrides to white */
  text-align: center;
}.mnb-secnav__list, .mnb-secnav__sublist { list-style: none; margin: 0; padding: 0; }.mnb-secnav__sublist { margin: 2px 0 6px 10px; padding-left: 8px; border-left: 1px solid var(--mnb-border); }.mnb-secnav__link {
  display: block;
  padding: 4px 6px;
  border-radius: 6px;
  /* body stack, NOT Feross: the menu is chrome, not page content, and the
     display face is reserved for the document's own voice. */
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: .84rem;
  line-height: 1.25;
  text-transform: uppercase;
  color: rgba(23, 30, 34, 0.82);
  text-shadow: none;
  transition: background var(--mnb-ease), color var(--mnb-ease);
}.mnb-secnav__item--sub .mnb-secnav__link { font-size: .78rem; color: rgba(23, 30, 34, 0.62); }.mnb-secnav__link:hover { background: rgba(23, 30, 34, 0.06); color: var(--mnb-text); text-decoration: none; }/* Current section (scroll spy). The highlighted OPTION takes the header bar's
   slate rather than gold -- gold read as a yellow smear against the white
   panel. Text reverses to white and bold, so only the current item is
   reversed out; every other option stays dark on white. */
.mnb-secnav__link.is-current,
.mnb-secnav__item--sub .mnb-secnav__link.is-current {
  background: rgba(110, 124, 131, 0.9);
  color: #fff;
  font-weight: 700;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .3);
}/* Back to top: set off from the list by a blank line and a hairline, so it
   reads as an action rather than another section. */
.mnb-secnav__top {
  display: block;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--mnb-border);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  text-align: center;
  color: rgba(23, 30, 34, 0.62);
  text-shadow: none;
}.mnb-secnav__top:hover { color: var(--mnb-text); text-decoration: none; }[data-theme="dark"] .mnb-secnav {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.14);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}[data-theme="dark"] .mnb-secnav__title { color: #fff; }[data-theme="dark"] .mnb-secnav__link { color: rgba(255, 255, 255, 0.82); }[data-theme="dark"] .mnb-secnav__item--sub .mnb-secnav__link { color: rgba(255, 255, 255, 0.6); }[data-theme="dark"] .mnb-secnav__link:hover { background: rgba(255, 255, 255, 0.08); color: #fff; }[data-theme="dark"] .mnb-secnav__link.is-current,
[data-theme="dark"] .mnb-secnav__item--sub .mnb-secnav__link.is-current { background: var(--mnb-gold); color: #000; font-weight: 700; text-shadow: none; }[data-theme="dark"] .mnb-secnav__top { border-top-color: rgba(255, 255, 255, 0.14); color: rgba(255, 255, 255, 0.6); }[data-theme="dark"] .mnb-secnav__top:hover { color: #fff; }/* No room beside the content -> hide rather than overlap or shove the column.
   1120 content + 2x240 wings = 1600; below that the mirror would clip. */
@media (max-width: 1600px) { .mnb-secnav { display: none; } }/* Auto-theme (device dark, no explicit choice) mirror for the section menu:
   without this a device-dark reader gets the LIGHT slate panel, since the
   light rules are the base. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-secnav {
    background: rgba(255, 255, 255, 0.05);
    border-color: rgba(255, 255, 255, 0.14);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
  }
  :root:not([data-theme]) .mnb-secnav__title { color: #fff; }
  :root:not([data-theme]) .mnb-secnav__link { color: rgba(255, 255, 255, 0.82); }
  :root:not([data-theme]) .mnb-secnav__item--sub .mnb-secnav__link { color: rgba(255, 255, 255, 0.6); }
  :root:not([data-theme]) .mnb-secnav__link:hover { background: rgba(255, 255, 255, 0.08); color: #fff; }
  :root:not([data-theme]) .mnb-secnav__link.is-current,
  :root:not([data-theme]) .mnb-secnav__item--sub .mnb-secnav__link.is-current { background: var(--mnb-gold); color: #000; font-weight: 700; text-shadow: none; }
  :root:not([data-theme]) .mnb-secnav__sublist { border-left-color: var(--mnb-border); }
  :root:not([data-theme]) .mnb-secnav__top { border-top-color: rgba(255, 255, 255, 0.14); color: rgba(255, 255, 255, 0.6); }
  :root:not([data-theme]) .mnb-secnav__top:hover { color: #fff; }
}/* ============================================================================
   SUPPORT PAGE -- tutorials, FAQ, release history.
   Everything here rendered on browser defaults until now; these are its first
   rules. Inner padding is set on the CONTENT rather than widened on
   .mnb-section, because that card is shared with the state pages and changing
   it would move every jurisdiction layout on the site.
   ========================================================================== */
.mnb-support-body { padding: 4px 14px 6px; }/* ---- FAQ: native <details>, so it works without JavaScript --------------- */
.mnb-faq {
  padding: 14px 0;
  border-bottom: 1px solid var(--mnb-border);
}.mnb-faq:last-child { border-bottom: 0; }.mnb-faq__q {
  cursor: pointer;
  list-style: none;                 /* suppress the default disclosure marker */
  font-family: var(--mnb-font-impact);
  font-size: 1rem;
  letter-spacing: .01em;
  color: var(--mnb-text);
  padding-right: 26px;
  position: relative;
}.mnb-faq__q::-webkit-details-marker { display: none; }/* Own chevron, so the indicator matches the site rather than the OS. */
.mnb-faq__q::after {
  content: "";
  position: absolute;
  right: 4px;
  top: .35em;
  width: 8px;
  height: 8px;
  border-right: 2px solid var(--mnb-muted);
  border-bottom: 2px solid var(--mnb-muted);
  transform: rotate(45deg);
  transition: transform var(--mnb-ease);
}.mnb-faq[open] .mnb-faq__q::after { transform: rotate(-135deg); }.mnb-faq__a {
  margin: 10px 0 2px;
  padding-right: 26px;
  line-height: 1.55;
  color: var(--mnb-muted);
}/* ---- Release history ----------------------------------------------------- */
.mnb-release { padding: 16px 0 4px; border-bottom: 1px solid var(--mnb-border); }.mnb-release:last-child { border-bottom: 0; }/* The version heading: Anton, centred, per Jordan 2026-08-05. Date sits under
   it rather than beside it so the centring reads as a heading and not a row. */
.mnb-release__head { margin: 0 0 12px; text-align: center; font-weight: 400; }.mnb-release__ver {
  display: block;
  font-family: var(--mnb-font-impact);
  font-size: 1.35rem;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--mnb-text);
}.mnb-release__date {
  display: block;
  margin-top: 2px;
  font-size: .82rem;
  color: var(--mnb-muted);
}.mnb-release__list { margin: 0; padding-left: 20px; line-height: 1.55; }.mnb-release__list li { margin-bottom: 6px; }/* ---- Tutorials ----------------------------------------------------------- */
.mnb-tutorials { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 20px; }.mnb-tutorial__thumb { display: block; position: relative; border-radius: 10px; overflow: hidden; }.mnb-tutorial__thumb img { display: block; width: 100%; height: auto; }.mnb-tutorial__dur {
  position: absolute; right: 8px; bottom: 8px;
  background: rgba(0, 0, 0, .78); color: #fff;
  font-size: .72rem; padding: 2px 6px; border-radius: 4px;
}.mnb-tutorial__title { margin: 10px 0 4px; font-family: var(--mnb-font-impact); font-size: 1rem; }.mnb-tutorial__copy p { margin: 0; color: var(--mnb-muted); line-height: 1.5; }[data-theme="dark"] .mnb-faq__q,
[data-theme="dark"] .mnb-release__ver { color: #fff; }@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-faq__q,
  :root:not([data-theme]) .mnb-release__ver { color: #fff; }
}@media (max-width: 600px) {
  .mnb-support-body { padding: 4px 6px 6px; }
  .mnb-release__ver { font-size: 1.15rem; }
}/* ============================================================================
   PRICING PAGE
   ========================================================================== */

/* The monthly/yearly switch. Both prices are in the markup; this only chooses
   which is shown. The checkbox is visually hidden but still focusable, so the
   toggle is keyboard-operable without a line of script. */
/* Radios are visually hidden but still focusable, so the control is fully
   keyboard-operable -- arrow keys move between the two, as a radio group
   should. */
.mnb-cycle { position: absolute; opacity: 0; width: 0; height: 0; }/* Screen-reader-only text inside the two track halves, so each half announces
   what it selects rather than being an unlabelled hit area. */
.mnb-sr {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}.mnb-pricing__toggle {
  display: flex; align-items: center; justify-content: center; gap: 12px;
  margin: 4px 0 22px;
  font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: .95rem; letter-spacing: .02em;
}.mnb-pricing__opt { cursor: pointer; color: var(--mnb-muted); transition: color var(--mnb-ease); }.mnb-cycle--mo:checked ~ .mnb-pricing__toggle .mnb-pricing__opt--mo,
.mnb-cycle--yr:checked ~ .mnb-pricing__toggle .mnb-pricing__opt--yr { color: var(--mnb-text); }.mnb-pricing__track {
  display: inline-block; width: 46px; height: 24px; border-radius: 999px;
  background: var(--mnb-border); position: relative; flex: none;
  transition: background var(--mnb-ease);
}/* Two halves, each selecting its own radio, so the slider behaves like a
   segmented control: clicking the left side is always "monthly". */
/* THE TRACK TOGGLES. Two labels, both covering the full track, stacked. Only
   the one that would CHANGE the state accepts clicks, so wherever you press,
   the switch flips -- which is how a switch should behave. The Monthly and
   Yearly words either side stay specific: each selects its own value, and
   clicking the current one does nothing.
   Radios cannot toggle themselves, so this pointer-events swap is what gives a
   radio group switch-like behaviour without JavaScript. */
.mnb-pricing__hit { position: absolute; inset: 0; cursor: pointer; z-index: 2; }
.mnb-pricing__hit--mo,
.mnb-pricing__hit--yr { pointer-events: none; }
.mnb-cycle--mo:checked ~ .mnb-pricing__toggle .mnb-pricing__hit--yr { pointer-events: auto; }
.mnb-cycle--yr:checked ~ .mnb-pricing__toggle .mnb-pricing__hit--mo { pointer-events: auto; }
.mnb-pricing__knob {
  position: absolute; top: 3px; left: 3px; width: 18px; height: 18px;
  border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.35);
  transition: transform var(--mnb-ease);
  pointer-events: none; z-index: 1;
}.mnb-cycle--yr:checked ~ .mnb-pricing__toggle .mnb-pricing__track { background: var(--mnb-gold); }.mnb-cycle--yr:checked ~ .mnb-pricing__toggle .mnb-pricing__knob { transform: translateX(22px); }.mnb-cycle:focus-visible ~ .mnb-pricing__toggle .mnb-pricing__track { outline: 2px solid var(--mnb-gold); outline-offset: 3px; }/* Price swap. Yearly is hidden by default so the page is correct before any
   interaction, and there is no flash of the wrong figure. */
.mnb-price--yr { display: none; }.mnb-cycle--yr:checked ~ .mnb-plans .mnb-price--mo { display: none; }.mnb-cycle--yr:checked ~ .mnb-plans .mnb-price--yr { display: inline; }/* ---- plan cards ---- */
/* auto-fit, not repeat(3): a fourth plan is an INSERT, and the layout should
   absorb it without a CSS edit. minmax keeps cards from going unreadably narrow
   -- past four columns they wrap to a second row rather than shrinking. */
.mnb-plans {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
  gap: 14px;
}.mnb-plan {
  position: relative; text-align: center;
  padding: 22px 16px 18px; border-radius: var(--mnb-radius);
  border: 1px solid var(--mnb-border); background: rgba(255,255,255,.35);
}/* The featured card carries a 2px border; the other two carry 1px. Left as is
   they would jump 1px on hover and shift their own contents, so all three get
   2px up front and the plain pair simply match the card background until they
   are hovered. */
.mnb-plan { border-width: 2px; }
.mnb-plan--featured { border-color: var(--mnb-gold); }

/* HOVER. Light: gold becomes the flag red. Dark: gold becomes white. Applies
   to the featured card's border AND its badge, and gives the other two the
   same 2px frame in the same colour so the set behaves as one control rather
   than one special card and two inert ones.
   transition on both properties, so the plain cards fade their border in
   rather than snapping. */
.mnb-plan { transition: border-color var(--mnb-ease), background var(--mnb-ease); }
.mnb-plan:hover { border-color: #C8102E; }
.mnb-plan--featured:hover .mnb-plan__badge { background: #C8102E; color: #fff; }
.mnb-plan__badge { transition: background var(--mnb-ease), color var(--mnb-ease); }

[data-theme="dark"] .mnb-plan:hover { border-color: #fff; }
[data-theme="dark"] .mnb-plan--featured:hover .mnb-plan__badge { background: #fff; color: #000; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-plan:hover { border-color: #fff; }
  :root:not([data-theme]) .mnb-plan--featured:hover .mnb-plan__badge { background: #fff; color: #000; }
}.mnb-plan__badge {
  position: absolute; top: -11px; left: 50%; transform: translateX(-50%);
  background: var(--mnb-gold); color: var(--mnb-gold-on);
  font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: .7rem; letter-spacing: .04em; padding: 3px 10px; border-radius: 999px;
  white-space: nowrap;
}.mnb-plan__name { font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: 1.25rem; font-weight: 400; margin: 0 0 6px; color: var(--mnb-text); }.mnb-plan__tag { margin: 0 0 14px; font-size: .85rem; line-height: 1.4; color: var(--mnb-muted); min-height: 3.4em; }.mnb-plan__price { margin: 0 0 16px; font-family: var(--mnb-font-impact); font-size: 2.4rem; line-height: 1; color: var(--mnb-text); }.mnb-price__cur { font-size: .5em; vertical-align: .55em; margin-right: 1px; }.mnb-price__per { font-size: .34em; color: var(--mnb-muted); margin-left: 2px; }.mnb-plan__cta {
  display: inline-block; padding: 10px 20px; border-radius: var(--mnb-radius-sm);
  background: var(--mnb-gold); color: var(--mnb-gold-on) !important;
  font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: .9rem; letter-spacing: .03em; text-shadow: none;
}/* The button no longer has a hover of its own. It follows the CARD: hovering
   anywhere on the card turns the border, the badge and this button together,
   so the whole tile reads as one target instead of three things lighting up
   independently. The brightness filter it used before also lightened the label
   along with the fill, which washed it out. */
.mnb-plan__cta:hover { text-decoration: none; }
.mnb-plan:hover .mnb-plan__cta { background: #C8102E; color: #fff !important; }
[data-theme="dark"] .mnb-plan:hover .mnb-plan__cta { background: #fff; color: #000 !important; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-plan:hover .mnb-plan__cta { background: #fff; color: #000 !important; }
}/* ---- comparison matrix ---- */
/* ---- horizontal scroll affordance -------------------------------------------
   Three things tell the reader the table scrolls, none of which need JS:

   1. SCROLL SHADOWS. Two pairs of gradients. The `local` pair scrolls WITH the
      content and is painted in the surface colour, so it masks the shadow
      beneath it; the `scroll` pair is fixed to the viewport of the box. At the
      left edge the mask covers the shadow, and as you scroll away it slides
      off and the shadow appears. The result is a shadow that shows only on the
      side where content is hidden -- self-managing, no state to track.

   2. STICKY FIRST COLUMN, so the feature name stays put while the plan columns
      move. Without it, scrolling left leaves the reader looking at three ticks
      with no idea which row they belong to.

   3. A VISIBLE HINT above the table, shown only at widths where it scrolls.

   The wrap is also focusable and labelled, so keyboard users can scroll it and
   screen readers announce it as a region rather than a silent overflow box. */
.mnb-matrix-wrap {
  margin-top: 26px;
  overflow-x: auto;
  /* No scroll-shadow background. The trick needs opaque surface-coloured strips
     to mask the shadows, and --mnb-surface is #FFFFFF -- which is where the
     white came from. With the arrows and the demo scroll now carrying the
     message, the shadows are not worth a white band across the table. */
}
.mnb-matrix-wrap:focus-visible { outline: 2px solid var(--mnb-gold); outline-offset: 2px; }

/* Slide in from the right, fading up. 1.1s is deliberately unhurried -- the
   point is that the reader NOTICES the table arriving from that side, which a
   fast transition defeats. `is-armed` is added by the script rather than being
   the default, so the table is never left invisible if JS fails. */
/* Starts at the FULL width of its own frame, so the table travels in from the
   right edge rather than nudging 44px. The wrap has overflow-x, so nothing
   spills outside it while it moves. Opacity is held back until 25% of the way
   through, which keeps the arrival readable instead of fading up before it has
   gone anywhere. */
.mnb-matrix-wrap.is-armed { opacity: 0; transform: translateX(100%); }
/* The moving wrap must not widen the document while it sits off to the right,
   or the whole page gains a horizontal scrollbar for the duration. */
.mnb-pricing { overflow-x: clip; }
/* The observer's anchor. Zero height so it changes no layout, but it occupies
   the table's position in the flow, which is the whole point. */
.mnb-matrix-cue { height: 0; }
.mnb-matrix-wrap.is-in {
  opacity: 1;
  transform: translateX(0);
  transition: opacity 1.3s ease .15s, transform 1.3s cubic-bezier(.16, .84, .32, 1);
}

/* Hidden above the scrolling threshold -- a hint that is always there stops
   being a hint. */
.mnb-matrix-hint { display: none; }
@media (max-width: 760px) {
  .mnb-matrix-hint {
    display: block;
    margin: 22px 0 -8px;
    text-align: center;
    font-family: var(--mnb-font-impact);
    text-transform: uppercase;
    font-size: .85rem;
    letter-spacing: .03em;
    color: var(--mnb-link);        /* dark red in light, gold in dark */
  }
  /* U+2190/2192 are drawn light and sit low on the baseline. Bumped in size
     and lifted to the optical middle of the caps beside them; the heavier
     glyphs are swapped in the markup. */
  /* ONE glyph, mirrored. U+2B05 and U+27A1 come from different Unicode blocks
     -- Miscellaneous Symbols and Arrows versus Dingbats -- and fonts draw them
     at different scales, so the left arrow rendered visibly larger. Using
     U+27A1 both sides and flipping one with scaleX(-1) makes a mismatch
     impossible. inline-block because transform does not apply to inline
     elements. */
  .mnb-matrix-hint__arw {
    display: inline-block;
    margin: 0 .35em;
    font-size: 1.5em;
    line-height: 0;            /* the bigger glyph must not grow the line */
    vertical-align: -.02em;
  }
  .mnb-matrix-hint__arw--l { transform: scaleX(-1); }
  /* Feature column down 25% (.92rem -> .69rem). It is the widest column and
     the only one carrying sentences, so it is where a narrow screen gains the
     most room. */
  .mnb-matrix tbody th { font-size: .9rem; }
  /* Header above the rows it labels, on mobile too. Anton is condensed, so it
     takes the extra size without costing much column width -- which matters
     here, where the table is already scrolling. */
  .mnb-matrix thead th { font-size: 1rem; }

}/* table-layout: fixed switches the browser from "measure the content" to
   "obey these numbers". Without it the columns size themselves by what they
   contain, which is why "Pro (Multi-State)" -- the longest header on the page
   -- was claiming far more room than Basic or Pro, and why the feature column
   stretched to fit its longest sentence.

   The plan columns share whatever is left after the feature column, divided by
   --mnb-plan-count, so all three stay equal and a fourth tier redistributes
   automatically rather than needing new numbers. */
.mnb-matrix { width: 100%; border-collapse: collapse; font-size: .92rem; table-layout: fixed; }
.mnb-matrix thead th:first-child { width: 34%; }
.mnb-matrix thead th:not(:first-child) { width: calc(66% / var(--mnb-plan-count, 3)); }
/* Fixed columns cannot widen for a long word, so headers and values wrap
   rather than overflow. */
.mnb-matrix thead th, .mnb-matrix tbody th, .mnb-matrix td { overflow-wrap: break-word; }.mnb-matrix__cap {
  font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: 1.05rem; letter-spacing: .03em; color: var(--mnb-text);
  text-align: left; padding: 0 0 10px;
}.mnb-matrix th, .mnb-matrix td { padding: 9px 10px; border-bottom: 1px solid var(--mnb-border); }.mnb-matrix thead th {
  font-family: var(--mnb-font-impact); text-transform: uppercase;
  font-size: 1.05rem; letter-spacing: .03em; text-align: center; color: var(--mnb-text);
  border-bottom-width: 2px;
}.mnb-matrix thead th:first-child { text-align: left; }.mnb-matrix tbody th { text-align: left; font-weight: 400; color: var(--mnb-text); }.mnb-matrix td { text-align: center; }.mnb-matrix__note { display: block; font-size: .78rem; color: var(--mnb-muted); }/* Gold measures ~1.5:1 on the light plate, so the shadow is what gives the
   tick an edge rather than being decoration -- same reasoning, and the same
   values, as the state map icons. Dark mode needs none: gold on charcoal is
   11:1, and the shadow would only muddy it. */
.mnb-matrix__yes {
  color: var(--mnb-gold);
  font-size: 1.45rem;
  line-height: 1;      /* the bigger glyph must not grow the row height */
  /* The same SVG inner glow the hero stars use, instead of a drop shadow --
     the offset copy read as a doubled glyph at this size. The filter is
     defined in includes/header.php and loads on every page that gets
     announce.css; the pricing page is on that list. */
  filter: url(#mnb-inner-glow);
}/* text-shadow, not filter -- the property changed when the tick moved from a
   drop-shadow to an offset duplicate, and `filter: none` would have silently
   left the shadow on in dark mode. */
[data-theme="dark"] .mnb-matrix__yes { filter: none; }@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-matrix__yes { filter: none; }
}.mnb-matrix__no  { color: var(--mnb-border); }.mnb-matrix__val { font-family: var(--mnb-font-impact); text-transform: uppercase; font-size: .9rem; }.mnb-matrix__row--metered td { font-size: 1rem; }/* Alternate rows only, and faint. A wash on every row reads as a solid block
   and defeats the purpose -- the point of striping is that the eye can track
   across a wide row without losing its place. */
.mnb-matrix tbody tr:nth-child(even) th,
.mnb-matrix tbody tr:nth-child(even) td { background: rgba(255,255,255,.28); }
.mnb-matrix tbody tr:hover th, .mnb-matrix tbody tr:hover td { background: rgba(0,0,0,.03); }
[data-theme="dark"] .mnb-matrix tbody tr:nth-child(even) th,
[data-theme="dark"] .mnb-matrix tbody tr:nth-child(even) td { background: rgba(255,255,255,.03); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-matrix tbody tr:nth-child(even) th,
  :root:not([data-theme]) .mnb-matrix tbody tr:nth-child(even) td { background: rgba(255,255,255,.03); }
}.mnb-pricing__note { margin-top: 18px; font-size: .85rem; color: var(--mnb-muted); line-height: 1.5; }[data-theme="dark"] .mnb-plan { background: rgba(255,255,255,.04); }[data-theme="dark"] .mnb-matrix tbody tr:hover th,
[data-theme="dark"] .mnb-matrix tbody tr:hover td { background: rgba(255,255,255,.04); }@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-plan { background: rgba(255,255,255,.04); }
}@media (max-width: 760px) {
  .mnb-plans { grid-template-columns: 1fr; gap: 18px; }
  .mnb-plan__tag { min-height: 0; }
  /* The matrix keeps all three columns and scrolls sideways rather than
     collapsing into stacked cards -- the whole point of the page is comparing
     the columns against each other. */
  /* Sized from the column count, so a fourth plan widens the scroll area
     rather than squeezing every column. --mnb-plan-count is set inline on
     .mnb-pricing by pricing.php. */
  .mnb-matrix { min-width: calc(210px + var(--mnb-plan-count, 3) * 116px); }
}
/* ---- app band: manual controls ---------------------------------------------
   Hidden until the script adds .has-controls to the band. A slider's arrows
   and dots are worse than useless without JS -- they look interactive and do
   nothing -- so they only appear once something can act on them. */
.mnb-appband__nav,
.mnb-appband__dots { display: none; }

.mnb-appband { position: relative; }

.mnb-appband.has-controls .mnb-appband__nav {
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, .28);
  color: #fff;
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  z-index: 3;
  transition: background var(--mnb-ease);
}
.mnb-appband.has-controls .mnb-appband__nav:hover { background: rgba(0, 0, 0, .5); }
.mnb-appband.has-controls .mnb-appband__nav:focus-visible { outline: 2px solid var(--mnb-gold); outline-offset: 2px; }
/* Pinned to the CONTENT column, not the browser edge. The band is full-bleed
   but .mnb-appband__inner is capped at --mnb-maxw, so left: 10px put the arrows
   metres away from the text on a wide monitor. This resolves to the inner
   container's own edge, and falls back to 8px once the viewport is narrower
   than the cap (where the calc would go negative). */
.mnb-appband.has-controls {
  --mnb-band-gutter: max(8px, calc(50% - var(--mnb-maxw) / 2 + 8px));
}
.mnb-appband__nav--prev { left: var(--mnb-band-gutter); }
.mnb-appband__nav--next { right: var(--mnb-band-gutter); }

/* Room for the arrows to sit in. 58px = the 38px button plus clearance, so
   neither the copy on the left nor the phone on the right runs underneath one.
   Applied only when the controls actually exist. */
.mnb-appband.has-controls .mnb-appband__inner { padding-left: 58px; padding-right: 58px; }
.mnb-appband--inset.has-controls .mnb-appband__inner { padding-left: 58px; padding-right: 58px; }
/* One glyph for both arrows, mirrored -- the same reason as the pricing hint:
   a matched left/right pair from different Unicode blocks renders at different
   sizes. */
.mnb-appband__nav--prev span { display: inline-block; transform: scaleX(-1); }

.mnb-appband.has-controls .mnb-appband__dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  /* Bottom padding lifts the stars clear of the band's lower edge. The row
     itself has a fixed height below, so this only moves them up -- it does not
     let the scaled active star resize the band. */
  padding: 0 0 36px;
  position: relative;
  z-index: 3;
  /* Fixed height rather than letting the glyph's line box decide. A scaled
     active star would otherwise grow the row on every rotation, nudging the
     whole band as the slides change. */
  height: 20px;
}
/* Stars rather than circles, matching the star treatment on the trial button
   and the hero lines. A glyph rather than a background shape, so colour and
   size are one property each and the active state can simply be brighter. */
.mnb-appband__dot {
  width: auto;
  height: auto;
  padding: 0;
  border: 0;
  background: none;
  /* line-height 0 so the glyph contributes no leading of its own -- the row's
     fixed height above is what positions it. */
  line-height: 0;
  font-size: 1.05rem;
  color: rgba(255, 255, 255, .42);
  cursor: pointer;
  transition: color var(--mnb-ease), transform var(--mnb-ease);
}
.mnb-appband__dot span { display: block; }
.mnb-appband__dot:hover { color: rgba(255, 255, 255, .75); }
.mnb-appband__dot.is-active { color: var(--mnb-gold); transform: scale(1.3); }
.mnb-appband__dot:focus-visible { outline: 2px solid var(--mnb-gold); outline-offset: 3px; }

@media (max-width: 760px) {
  /* On a phone the arrows would sit over the copy, and swipe is the expected
     gesture anyway -- the dots alone carry the affordance. */
  .mnb-appband.has-controls .mnb-appband__nav { display: none; }
  /* Arrows are gone here, so give the padding back rather than leaving 58px of
     empty gutter on a 360px screen. */
  .mnb-appband.has-controls .mnb-appband__inner,
  .mnb-appband--inset.has-controls .mnb-appband__inner { padding-left: 20px; padding-right: 20px; }
}

/* ---- legal documents --------------------------------------------------------
   Privacy Policy and Terms of Use. Numbered sections with anchors, because a
   legal document gets cited: "section 6" and "#data-retention" both have to
   resolve to the same place. */
.mnb-legal__meta {
  margin: 0 0 22px;
  font-size: .85rem;
  color: var(--mnb-muted);
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  align-items: baseline;
}
.mnb-legal__ver {
  font-family: var(--mnb-font-impact);
  text-transform: uppercase;
  font-size: .78rem;
  letter-spacing: .03em;
  opacity: .8;
}
.mnb-legal__toc {
  margin: 0 0 30px;
  padding: 16px 18px;
  border: 1px solid var(--mnb-border);
  border-radius: var(--mnb-radius-sm);
  background: rgba(255, 255, 255, .3);
}
[data-theme="dark"] .mnb-legal__toc { background: rgba(255, 255, 255, .04); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .mnb-legal__toc { background: rgba(255, 255, 255, .04); }
}
.mnb-legal__toc-title {
  margin: 0 0 10px;
  font-family: var(--mnb-font-impact);
  text-transform: uppercase;
  font-size: .9rem;
  font-weight: 400;
  letter-spacing: .03em;
  color: var(--mnb-text);
}
.mnb-legal__toc ol { margin: 0; padding-left: 1.35em; }
.mnb-legal__toc li { margin: 3px 0; font-size: .9rem; }

/* scroll-margin so an anchor jump does not park the heading under the sticky
   header -- the reader would land on a section and see the one above it. */
.mnb-legal__section { scroll-margin-top: 90px; margin: 0 0 26px; }
.mnb-legal__heading {
  margin: 0 0 8px;
  font-family: var(--mnb-font-impact);
  text-transform: uppercase;
  font-size: 1.15rem;
  font-weight: 400;
  letter-spacing: .02em;
  color: var(--mnb-text);
}
.mnb-legal__no { color: var(--mnb-muted); margin-right: .35em; }
.mnb-legal__section p { margin: 0 0 12px; line-height: 1.65; }
.mnb-legal__section p:last-child { margin-bottom: 0; }
.mnb-legal__section strong { font-weight: 600; color: var(--mnb-text); }
.mnb-legal__error { color: var(--mnb-no); font-weight: 600; }