@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url('/assets/fonts/inter-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:200 900;font-display:swap;src:url('/assets/fonts/sourceserif4-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* ---------------------------------------------------------------------
     THEME TOKENS
     Four themes: light, dark, and a high-contrast variant of each.
     "System" follows prefers-color-scheme and prefers-contrast.

     NOTE ON NAMING: the --burgundy* names are historical and now act as
     semantic accent slots. In dark themes --burgundy resolves to a light rose,
     because a dark burgundy cannot carry text on a dark background. Read them
     as "accent", not as a literal color.

     Every text pair below was measured; all clear WCAG AAA (7:1) for body text.
     --------------------------------------------------------------------- */
  :root{
    /* light (default) */
    --burgundy:#6A1F2F;        /* 11.35:1 on white */
    --burgundy-deep:#4A1420;
    --burgundy-mid:#8A3247;
    --burgundy-tint:#F7EFF1;
    --burgundy-line:#DFC4CB;
    --on-accent:#FFFFFF;       /* 11.35:1 on --burgundy */
    --accent-surface:#6A1F2F;  /* filled bands, buttons, badges */
    --ink:#15181B;             /* 17.82:1 */
    --body:#3A4046;            /* 10.49:1 */
    --muted:#474E54;           /* 8.45:1 on white, 7.47:1 on the tinted band, AAA everywhere */
    --line:#D8D4D1;
    --line-soft:#E8E5E2;
    --white:#FFFFFF;
    --canvas:#F7F5F3;
    --slate:#2C3237;
    --slate-deep:#22272B;

    /* dark panels.  Topbar, slate bands, footer */
    --dark-panel:#22272B;
    --dark-panel-2:#2C3237;
    --dark-strong:#FFFFFF;
    --dark-text:#DCD8D4;
    --dark-muted:#B0ABA6;
    --dark-accent:#E9BAC5;
    --hair-on-dark:rgba(255,255,255,.16);
    --wash-on-dark:rgba(255,255,255,.06);

    /* accent-filled CTA band */
    --cta-text:#F6E8EB;
    --cta-muted:#F3E3E7;

    /* tone-on-tone ichthys watermarks */
    --wm-on-white:#F7F0F1;     /* 1.124:1 on #FFFFFF */
    --wm-on-canvas:#F1E7E8;    /* 1.124:1 on --canvas */
    --wm-on-accent:#7B3142;    /* 1.217:1 on --burgundy */

    /* editorial placeholders (internal review only) */
    --ph-bg:#FFF6D9; --ph-line:#B08A00; --ph-text:#6B5300;

    --focus:#8A3247;
    --shadow:rgba(28,32,36,.28);

    --radius:4px;
    --wrap:1180px;
    --measure:68ch;
    --border-w:1px;
    color-scheme:light;
  }

  /* ---------- DARK ---------- */
  [data-theme="dark"]{
    --burgundy:#CE9FA4;        /* muted wine, 7.80:1 on the page, 7.19:1 on cards */
    --burgundy-deep:#DCB3B7;
    --burgundy-mid:#D6AAAF;
    --burgundy-tint:#241A1D;
    --burgundy-line:#4A3237;
    --on-accent:#FFFFFF;       /* 8.87:1 on --accent-surface */
    --accent-surface:#7E2F40;  /* stays a deep burgundy so bands read on-brand */
    --ink:#F4F6F8;             /* 16.58:1 */
    --body:#DDE1E5;            /* 13.67:1 */
    --muted:#A8B0B8;           /* 8.18:1 */
    --line:#39414A;
    --line-soft:#2A3138;
    --white:#1B1F25;           /* "surface".  Cards, forms, tables */
    --canvas:#14171C;          /* page background */
    --slate:#0E1114;
    --slate-deep:#0B0E11;
    --dark-panel:#0B0E11;
    --dark-panel-2:#0E1114;
    --dark-strong:#FFFFFF;
    --dark-text:#DDE1E5;
    --dark-muted:#A8B0B8;
    --dark-accent:#E9A2B4;
    --hair-on-dark:rgba(255,255,255,.18);
    --wash-on-dark:rgba(255,255,255,.05);
    --cta-text:#F6E8EB;
    --cta-muted:#F3E3E7;   /* 7.16:1 on --accent-surface */
    --wm-on-white:#20242B;
    --wm-on-canvas:#1A1E24;
    --wm-on-accent:#8E3C4E;
    --ph-bg:#2E2611; --ph-line:#C9A227; --ph-text:#F0DFA8;
    --focus:#F0B2C0;
    --shadow:rgba(0,0,0,.6);
  }
  /* the page itself must follow the theme, not just the bands */
  [data-theme="dark"]{color-scheme:dark}
  [data-theme="dark"] body{background:var(--canvas)}

  /* ---------- HIGH CONTRAST, LIGHT ---------- */
  [data-theme="hc-light"]{
    --burgundy:#5A0F22;        /* 13.76:1 on white */
    --burgundy-deep:#000000;
    --burgundy-mid:#5A0F22;
    --burgundy-tint:#FFFFFF;
    --burgundy-line:#000000;
    --on-accent:#FFFFFF;       /* 13.76:1 */
    --accent-surface:#5A0F22;
    --ink:#000000;             /* 21:1 */
    --body:#000000;
    --muted:#1A1A1A;
    --line:#000000;
    --line-soft:#000000;
    --white:#FFFFFF;
    --canvas:#FFFFFF;
    --slate:#000000;
    --slate-deep:#000000;
    --dark-panel:#000000;
    --dark-panel-2:#000000;
    --dark-strong:#FFFFFF;
    --dark-text:#FFFFFF;
    --dark-muted:#FFFFFF;
    --dark-accent:#FFD86B;
    --hair-on-dark:#FFFFFF;
    --wash-on-dark:transparent;
    --cta-text:#FFFFFF;
    --cta-muted:#FFFFFF;
    --ph-bg:#FFFFFF; --ph-line:#000000; --ph-text:#000000;
    --focus:#0033CC;           /* 8.95:1 */
    --shadow:transparent;
    --border-w:2px;
  }

  /* ---------- HIGH CONTRAST, DARK ---------- */
  [data-theme="hc-dark"]{
    --burgundy:#D5A8AC;        /* muted wine, 10.03:1 on black */
    --burgundy-deep:#E6C4C7;
    --burgundy-mid:#D5A8AC;
    --burgundy-tint:#000000;
    --burgundy-line:#FFFFFF;
    --on-accent:#FFFFFF;       /* 10.83:1 on --accent-surface */
    --accent-surface:#6E2233;
    --ink:#FFFFFF;             /* 21:1 */
    --body:#FFFFFF;
    --muted:#F2F2F2;
    --line:#FFFFFF;
    --line-soft:#FFFFFF;
    --white:#000000;
    --canvas:#000000;
    --slate:#000000;
    --slate-deep:#000000;
    --dark-panel:#000000;
    --dark-panel-2:#000000;
    --dark-strong:#FFFFFF;
    --dark-text:#FFFFFF;
    --dark-muted:#FFFFFF;
    --dark-accent:#FFB3C1;
    --hair-on-dark:#FFFFFF;
    --wash-on-dark:transparent;
    --cta-text:#FFFFFF;
    --cta-muted:#FFFFFF;
    --ph-bg:#000000; --ph-line:#FFD86B; --ph-text:#FFD86B;
    --focus:#66CCFF;           /* 11.65:1 */
    --shadow:transparent;
    --border-w:2px;
  }
  [data-theme="hc-dark"]{color-scheme:dark}
  [data-theme="hc-dark"] body{background:#000}

  /* ---------- SYSTEM DEFAULT ---------- */
  @media (prefers-color-scheme:dark){
    [data-theme="system"]{
      --burgundy:#CE9FA4; --burgundy-deep:#DCB3B7; --burgundy-mid:#D6AAAF;
      --burgundy-tint:#241A1D; --burgundy-line:#4A3237; --on-accent:#FFFFFF;
      --accent-surface:#7E2F40;
      --ink:#F4F6F8; --body:#DDE1E5; --muted:#A8B0B8;
      --line:#39414A; --line-soft:#2A3138;
      --white:#1B1F25; --canvas:#14171C; --slate:#0E1114; --slate-deep:#0B0E11;
      --dark-panel:#0B0E11; --dark-panel-2:#0E1114; --dark-text:#DDE1E5;
      --dark-muted:#A8B0B8; --dark-accent:#E9A2B4;
      --hair-on-dark:rgba(255,255,255,.18); --wash-on-dark:rgba(255,255,255,.05);
      --cta-text:#F6E8EB; --cta-muted:#F3E3E7;
      --wm-on-white:#20242B; --wm-on-canvas:#1A1E24; --wm-on-accent:#8E3C4E;
      --ph-bg:#2E2611; --ph-line:#C9A227; --ph-text:#F0DFA8;
      --focus:#F0B2C0; --shadow:rgba(0,0,0,.6);
    }
    [data-theme="system"]{color-scheme:dark}
    [data-theme="system"] body{background:var(--canvas)}
  }
  @media (prefers-contrast:more){
    [data-theme="system"]{
      --burgundy:#5A0F22; --burgundy-deep:#000000; --burgundy-tint:#FFFFFF;
      --burgundy-line:#000000; --on-accent:#FFFFFF; --accent-surface:#5A0F22;
      --ink:#000000; --body:#000000; --muted:#1A1A1A;
      --line:#000000; --line-soft:#000000; --white:#FFFFFF; --canvas:#FFFFFF;
      --slate:#000000; --slate-deep:#000000; --dark-panel:#000000;
      --dark-text:#FFFFFF; --dark-muted:#FFFFFF; --dark-accent:#FFD86B;
      --hair-on-dark:#FFFFFF; --wash-on-dark:transparent;
      --cta-text:#FFFFFF; --cta-muted:#FFFFFF;
      --focus:#0033CC; --shadow:transparent; --border-w:2px;
    }
  }
  @media (prefers-color-scheme:dark) and (prefers-contrast:more){
    [data-theme="system"]{
      --burgundy:#D5A8AC; --burgundy-deep:#E6C4C7; --burgundy-tint:#000000;
      --burgundy-line:#FFFFFF; --on-accent:#FFFFFF; --accent-surface:#6E2233;
      --ink:#FFFFFF; --body:#FFFFFF; --muted:#F2F2F2;
      --line:#FFFFFF; --line-soft:#FFFFFF; --white:#000000; --canvas:#000000;
      --dark-accent:#FFB3C1;
      --cta-text:#FFFFFF; --cta-muted:#FFFFFF;
      --focus:#66CCFF; --border-w:2px;
    }
    [data-theme="system"] body{background:#000}
  }

  /* ---------- high-contrast structural rules (both HC themes) ---------- */
  [data-theme="hc-light"] .wm,[data-theme="hc-dark"] .wm{display:none}
  [data-theme="hc-light"] .hero-figure img,[data-theme="hc-dark"] .hero-figure img{box-shadow:none;border:2px solid var(--line)}
  [data-theme="hc-light"] .card,[data-theme="hc-dark"] .card,
  [data-theme="hc-light"] .office,[data-theme="hc-dark"] .office,
  [data-theme="hc-light"] .notice,[data-theme="hc-dark"] .notice,
  [data-theme="hc-light"] form.inquiry,[data-theme="hc-dark"] form.inquiry{border-width:2px}
  [data-theme="hc-light"] .band-canvas,[data-theme="hc-dark"] .band-canvas,
  [data-theme="hc-light"] .band-tint,[data-theme="hc-dark"] .band-tint,
  [data-theme="hc-light"] .pagehead,[data-theme="hc-dark"] .pagehead{border-top:2px solid var(--line);border-bottom:2px solid var(--line)}
  [data-theme="hc-light"] main a:not(.btn),[data-theme="hc-dark"] main a:not(.btn){text-decoration-thickness:2px}
  [data-theme="hc-light"] .cred,[data-theme="hc-dark"] .cred{border:2px solid var(--line)}

  /* Theme changes should be instant. Without this the .btn color transition
     animates every control on switch, which reads as a glitch. */
  html.theme-switching *,html.theme-switching *::before,html.theme-switching *::after{
    transition:none !important;
  }
  *,*::before,*::after{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
  @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
  body{
    margin:0;
    background:var(--white);
    color:var(--body);
    font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
    font-size:18px;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4{
    font-family:'Source Serif 4',Georgia,'Times New Roman',serif;
    color:var(--ink);
    font-weight:600;
    line-height:1.2;
    margin:0 0 .6em;
    letter-spacing:-.01em;
  }
  h1{font-size:clamp(2.1rem,4.4vw,3.35rem);line-height:1.1}
  h2{font-size:clamp(1.6rem,2.9vw,2.3rem)}
  h3{font-size:1.3rem;line-height:1.3}
  h4{font-size:1.09rem;font-family:'Inter',sans-serif;font-weight:600;letter-spacing:0}
  p{margin:0 0 1.15em;max-width:var(--measure)}
  a{color:var(--burgundy);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
  a:hover{color:var(--burgundy-mid)}
  img{max-width:100%;height:auto;display:block}
  ul,ol{margin:0 0 1.2em;padding-left:1.3em;max-width:var(--measure)}
  li{margin-bottom:.5em}
  strong{color:var(--ink);font-weight:600}
  hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}
  :focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:2px}
  /* The router moves focus to the page heading on navigation so screen readers
     announce the new page. That heading carries tabindex="-1", so it can only
     be focused programmatically, which makes suppressing its ring safe: no
     keyboard user can ever tab to it. Without this the ring flashed on every
     single navigation and read as a rendering fault. */
  .page h1[tabindex="-1"]:focus,.page h1[tabindex="-1"]:focus-visible{outline:none}

  .wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem)}
  .narrow{max-width:820px}
  .skip{position:absolute;left:-9999px;top:0;background:var(--accent-surface);color:var(--on-accent);padding:.85rem 1.4rem;z-index:200;font-weight:600;text-decoration:none}
  .skip:focus{left:1rem;top:1rem}

  /* ---------- Header ---------- */
  .topbar{background:var(--dark-panel);color:var(--dark-text);font-size:.86rem;letter-spacing:.01em}
  .topbar .wrap{display:flex;flex-wrap:wrap;gap:.35rem 1.4rem;justify-content:space-between;align-items:center;padding-top:.55rem;padding-bottom:.55rem}
  .topbar a{color:var(--dark-strong);text-decoration:none;font-weight:500}
  .topbar a:hover{color:var(--dark-strong);text-decoration:underline}
  .topbar-item{display:inline-flex;align-items:center;gap:.45rem}
  .topbar svg{flex:none;opacity:.8}

  header.site{position:sticky;top:0;z-index:100;background:var(--white);border-bottom:var(--border-w) solid var(--line)}
  .head-inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-top:.9rem;padding-bottom:.9rem}
  .brand{display:flex;align-items:center;gap:.95rem;text-decoration:none;flex:none}
  .brand .mark{flex:none}
  /* The struck medal carries gradients, which high-contrast users do not benefit
     from.  Those themes get a flat, themed version of the same mark instead. */
  .brand-medal-hc{display:none;color:var(--accent-surface)}
  .brand-medal-hc .hc-ring{fill:currentColor;stroke:var(--line);stroke-width:5}
  .brand-medal-hc .hc-ink{fill:var(--on-accent)}
  .brand-medal-hc .hc-line{stroke:var(--on-accent)}
  [data-theme="hc-light"] .brand-medal,[data-theme="hc-dark"] .brand-medal{display:none}
  [data-theme="hc-light"] .brand-medal-hc,[data-theme="hc-dark"] .brand-medal-hc{display:block}

  /* ---------- appearance control ---------- */
  .topbar-theme{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:nowrap;flex:none}
  .theme-select{
    font:inherit;font-size:.84rem;padding:.2rem 1.6rem .2rem .5rem;border-radius:3px;width:10.5rem;
    background:var(--dark-panel-2);color:var(--dark-strong);
    border:1px solid var(--hair-on-dark);cursor:pointer;
    appearance:none;-webkit-appearance:none;
    background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
    background-position:calc(100% - 12px) 55%,calc(100% - 7px) 55%;
    background-size:5px 5px,5px 5px;background-repeat:no-repeat;
  }
  .theme-select:hover{border-color:var(--dark-strong)}
  .theme-select option{background:var(--dark-panel-2);color:var(--dark-strong)}
  .brand-name{font-family:'Source Serif 4',Georgia,serif;font-size:1.46rem;font-weight:600;color:var(--ink);line-height:1.15;letter-spacing:-.015em}
  .brand-sub{display:block;font-family:'Inter',sans-serif;font-size:.74rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--burgundy);margin-top:.2rem}

  nav.main ul{display:flex;align-items:center;gap:.15rem;list-style:none;margin:0;padding:0;max-width:none}
  nav.main li{margin:0}
  nav.main ul a{
    display:block;padding:.6rem .42rem;border-radius:var(--radius);
    font-size:.95rem;font-weight:500;color:var(--body);text-decoration:none;white-space:nowrap;
  }
  nav.main ul a:hover{background:var(--canvas);color:var(--ink)}
  nav.main ul a[aria-current="page"]{color:var(--burgundy);font-weight:600;box-shadow:inset 0 -2px 0 var(--burgundy)}
  .nav-cta{margin-left:.6rem}
  .btn{
    display:inline-block;padding:.8rem 1.5rem;border-radius:var(--radius);
    font-family:'Inter',sans-serif;font-size:.97rem;font-weight:600;text-align:center;
    text-decoration:none;cursor:pointer;border:1.5px solid transparent;line-height:1.35;
    transition:background .15s ease,border-color .15s ease,color .15s ease;
  }
  .btn-primary{background:var(--accent-surface);color:var(--on-accent);border-color:var(--burgundy)}
  .btn-primary:hover{background:var(--burgundy-deep);color:var(--on-accent);border-color:var(--burgundy)}
  .btn-ghost{background:transparent;color:var(--burgundy);border-color:var(--burgundy-line)}
  .btn-ghost:hover{background:var(--burgundy-tint);color:var(--burgundy-deep);border-color:var(--burgundy)}
  .btn-light{background:#FFFFFF;color:var(--accent-surface)}
  .btn-light:hover{background:var(--burgundy-tint)}
  .btn-outline-light{background:transparent;color:var(--cta-text);border-color:var(--cta-text)}
  .btn-outline-light:hover{background:var(--wash-on-dark);color:var(--cta-text);border-color:var(--cta-text)}
  .btn-sm{padding:.6rem 1.1rem;font-size:.9rem}

  .nav-toggle{display:none;align-items:center;gap:.5rem;background:transparent;border:1.5px solid var(--line);border-radius:var(--radius);padding:.6rem .9rem;font:inherit;font-size:.95rem;font-weight:600;color:var(--ink);cursor:pointer}
  .nav-toggle:hover{border-color:var(--burgundy-line);background:var(--canvas)}

  @media (max-width:1180px){
    nav.main{
      position:absolute;left:0;right:0;top:100%;background:var(--white);border-bottom:var(--border-w) solid var(--line);
      box-shadow:0 18px 32px -18px var(--shadow);padding:.6rem clamp(1.25rem,4vw,2.5rem) 1.4rem;
    }
    nav.main[hidden]{display:none}
    nav.main ul{flex-direction:column;align-items:stretch;gap:0}
    nav.main ul a{padding:.95rem .4rem;border-bottom:1px solid var(--line-soft);font-size:1.02rem;border-radius:0}
    nav.main ul a[aria-current="page"]{box-shadow:inset 3px 0 0 var(--burgundy);background:var(--burgundy-tint)}
    .nav-cta{margin:1rem 0 0}
    .nav-cta .btn{display:block;width:100%}
    .nav-toggle{display:inline-flex}
    .head-inner{position:relative}
  }

  /* Desktop header, stated explicitly rather than inferred from the absence of
     the mobile query. Keeps the nav links and the appointment button on one row;
     without this the button stacks below the links and stretches full width,
     which pushed the sticky header to 116px tall. */
  @media (min-width:1181px){
    nav.main{display:flex;align-items:center;gap:.3rem}
    nav.main .nav-cta{margin:0 0 0 .7rem;flex:none}
    nav.main .nav-cta .btn{display:inline-block;width:auto}
  }

  /* ---------- Page routing ---------- */
  .page[hidden]{display:none}

  /* ---------- Sections ---------- */
  section.band{padding:clamp(3.2rem,6.5vw,5.5rem) 0}
  section.band.tight{padding:clamp(2.4rem,4.5vw,3.6rem) 0}
  .band-canvas{background:var(--canvas)}
  .band-tint{background:var(--burgundy-tint)}
  .band-slate{background:var(--slate);color:var(--dark-text)}
  .band-slate h2,.band-slate h3,.band-slate h4{color:var(--dark-strong)}
  .band-slate a{color:var(--dark-accent)}
  .band-line{border-top:1px solid var(--line)}

  .eyebrow{
    font-family:'Inter',sans-serif;font-size:.76rem;font-weight:700;letter-spacing:.17em;
    text-transform:uppercase;color:var(--burgundy);margin:0 0 1rem;max-width:none;
  }
  .band-slate .eyebrow{color:var(--dark-accent)}
  .lede{font-size:clamp(1.09rem,1.5vw,1.24rem);color:var(--muted);line-height:1.65}
  .band-slate .lede{color:var(--dark-muted)}
  .section-head{max-width:760px;margin-bottom:clamp(2rem,4vw,3rem)}
  .rule{width:56px;height:3px;background:var(--burgundy);margin:0 0 1.6rem;border-radius:2px}
  .band-slate .rule{background:var(--dark-accent)}

  /* Ichthys fleuron.  Section lead-in (left aligned) and content divider (centered).
     Recovered from the practice's business card; purely decorative, so both are
     aria-hidden and carry no information the page doesn't state in words. */
  .fleuron-lead{color:var(--burgundy);margin:0 0 1.5rem;line-height:0}
  .fleuron-lead svg{width:150px;height:auto;display:block}
  .band-slate .fleuron-lead,.cta-band .fleuron-lead{color:var(--cta-text)}

  .fleuron{color:var(--burgundy);text-align:center;line-height:0;margin:clamp(2.4rem,4.5vw,3.4rem) 0}
  .fleuron svg{width:min(230px,60%);height:auto;display:inline-block}
  .band-slate .fleuron,.cta-band .fleuron{color:var(--cta-text)}
  .fleuron.soft{color:var(--burgundy-line)}
  .cta-band .fleuron{margin:0 0 clamp(1.6rem,3vw,2.2rem)}

  /* Tone-on-tone ichthys watermark. Closed oval body with the tail detached.  The practice's chosen form. Purely decorative, aria-hidden, and held at the
     approved contrast on each surface:
       #F7F0F1 on #FFFFFF  = 1.124 : 1   (hero, white)
       #F1E7E8 on #F8F6F4  = 1.124 : 1   (page heads, canvas)
       #7B3142 on #6E2233  = 1.217 : 1   (closing CTA bands)
     Dropped entirely for print.  Office lasers turn a faint tint into gray mud. */
  .wm-host{position:relative;overflow:hidden}
  .wm-host > *:not(.wm){position:relative;z-index:1}
  .wm{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
      width:74%;max-width:560px;line-height:0;pointer-events:none;z-index:0}
  .wm svg{width:100%;height:auto;display:block}
  .wm-light svg{color:var(--wm-on-white)}
  .wm-canvas svg{color:var(--wm-on-canvas)}
  .wm-burgundy svg{color:var(--wm-on-accent)}
  @media print{.wm{display:none}}

  /* ---------- Hero ---------- */
  .hero{background:var(--white);border-bottom:1px solid var(--line);overflow:hidden}
  .hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4rem);align-items:center;padding:clamp(2.8rem,6vw,5rem) 0}
  .hero h1{margin-bottom:.75rem}
  .hero .lede{max-width:56ch}
  .hero-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2rem}
  .hero-figure{position:relative}
  .hero-figure img{border-radius:var(--radius);box-shadow:0 26px 50px -28px var(--shadow)}
  .hero-badge{
    position:absolute;bottom:-1px;left:-1px;background:var(--accent-surface);color:var(--on-accent);
    padding:1rem 1.3rem;max-width:16.5rem;border-radius:0 var(--radius) 0 var(--radius);
  }
  .hero-badge strong{display:block;color:var(--on-accent);font-family:'Source Serif 4',Georgia,serif;font-size:1.15rem;line-height:1.25;margin-bottom:.15rem}
  .hero-badge span{font-size:.85rem;color:var(--cta-muted);line-height:1.45;display:block}
  @media (max-width:900px){
    .hero-grid{grid-template-columns:1fr;gap:2.2rem}
    .hero-figure{order:-1}
    .hero-badge{position:static;max-width:none;border-radius:0 0 var(--radius) var(--radius);display:flex;flex-wrap:wrap;gap:.15rem 1rem;align-items:baseline}
  }

  /* ---------- Page banner (interior pages) ---------- */
  .pagehead{background:var(--canvas);border-bottom:1px solid var(--line);padding:clamp(2.4rem,5vw,3.8rem) 0}
  .pagehead h1{margin-bottom:.6rem}
  .pagehead .lede{max-width:64ch;margin-bottom:0}

  /* ---------- Grids & cards ---------- */
  .grid{display:grid;gap:clamp(1.1rem,2vw,1.6rem)}
  .g2{grid-template-columns:repeat(2,1fr)}
  .g3{grid-template-columns:repeat(3,1fr)}
  .g4{grid-template-columns:repeat(4,1fr)}
  @media (max-width:960px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
  @media (max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}

  .card{background:var(--white);border:var(--border-w) solid var(--line);border-radius:var(--radius);padding:1.6rem 1.5rem}
  .card h3,.card h4{margin-bottom:.5rem}
  .card p{margin-bottom:0;font-size:.98rem;color:var(--muted)}
  .card p+p{margin-top:.8rem}
  .card-top{border-top:3px solid var(--burgundy)}
  .card-canvas{background:var(--canvas);border-color:var(--line-soft)}
  .card-link{display:block;text-decoration:none;color:inherit;transition:border-color .15s ease,box-shadow .15s ease}
  .card-link:hover{border-color:var(--burgundy-line);box-shadow:0 12px 26px -20px var(--shadow)}
  .card-link .more{display:inline-block;margin-top:1rem;color:var(--burgundy);font-size:.92rem;font-weight:600}
  .card-link:hover .more{text-decoration:underline}
  .icon-sq{width:42px;height:42px;border-radius:var(--radius);background:var(--burgundy-tint);color:var(--burgundy);display:flex;align-items:center;justify-content:center;margin-bottom:1.1rem}

  /* ---------- Credential strip ---------- */
  .cred-row{display:grid;grid-template-columns:repeat(6,1fr);gap:clamp(.9rem,1.6vw,1.35rem)}
  .cred{grid-column:span 2}
  .cred:nth-child(4){grid-column:2 / span 2}
  .cred:nth-child(5){grid-column:4 / span 2}
  @media (max-width:1000px){
    .cred-row{grid-template-columns:repeat(2,1fr)}
    .cred,.cred:nth-child(4),.cred:nth-child(5){grid-column:auto}
  }
  @media (max-width:600px){.cred-row{grid-template-columns:1fr}}
  .cred{background:var(--white);border:var(--border-w) solid var(--line);border-radius:var(--radius);padding:1.5rem 1.35rem;display:flex;flex-direction:column}
  .cred-kicker{display:block;font-size:.7rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;
    color:var(--burgundy);margin-bottom:.65rem}
  .cred-title{font-family:'Source Serif 4',Georgia,serif;font-size:1.16rem;font-weight:600;line-height:1.24;
    color:var(--ink);margin:0 0 .5rem;letter-spacing:-.005em}
  .cred-desc{font-size:.89rem;line-height:1.5;color:var(--muted);margin:0;max-width:none}

  /* ---------- Split feature ---------- */
  .split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
  .split.text-first > .split-media{order:2}
  .split-media img{border-radius:var(--radius)}
  @media (max-width:900px){.split{grid-template-columns:1fr;gap:2rem}.split.text-first > .split-media{order:0}}

  /* ---------- Lists ---------- */
  .checklist{list-style:none;padding:0;max-width:none}
  .checklist li{position:relative;padding-left:2rem;margin-bottom:.85rem}
  .checklist li::before{
    content:"";position:absolute;left:0;top:.55em;width:11px;height:11px;
    background:var(--burgundy);border-radius:2px;transform:rotate(45deg);
  }
  .pill-list{display:flex;flex-wrap:wrap;gap:.55rem;list-style:none;padding:0;max-width:none}
  .pill-list li{margin:0}
  /* In-page jump links. Bare fragments are safe now that the router ignores
     any hash that does not begin with "#/". */
  .jumpnav{margin:0;padding:0;list-style:none;max-width:none;display:flex;flex-wrap:wrap;gap:.6rem}
  .jumpnav li{margin:0}
  .jumpnav a{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;
    background:var(--white);border:var(--border-w) solid var(--burgundy-line);
    color:var(--burgundy);border-radius:100px;padding:.5rem 1.05rem;font-size:.95rem;font-weight:600}
  .jumpnav a:hover{background:var(--burgundy-tint);border-color:var(--burgundy)}
  .jumpnav a::after{content:"\2193";font-weight:400;opacity:.7}
  [id]{scroll-margin-top:6.5rem}
  .pill{display:inline-block;background:var(--white);border:1px solid var(--burgundy-line);color:var(--burgundy-deep);border-radius:100px;padding:.42rem 1rem;font-size:.92rem;font-weight:500}

  /* ---------- Timeline ---------- */
  .timeline{list-style:none;margin:0;padding:0;max-width:none;border-left:2px solid var(--burgundy-line)}
  .timeline li{position:relative;padding:0 0 2.1rem 1.9rem;margin:0}
  .timeline li:last-child{padding-bottom:0}
  .timeline li::before{content:"";position:absolute;left:-7px;top:.5rem;width:12px;height:12px;border-radius:50%;background:var(--accent-surface);border:2px solid var(--white)}
  .timeline .yr{display:block;font-size:.83rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--burgundy);margin-bottom:.3rem}
  .timeline .role{font-family:'Source Serif 4',Georgia,serif;font-size:1.2rem;font-weight:600;color:var(--ink);display:block;line-height:1.3}
  .timeline .org{display:block;font-size:.96rem;color:var(--muted);margin-bottom:.5rem}
  .timeline p{font-size:.98rem;margin-bottom:0}

  /* ---------- Steps ---------- */
  .steps{list-style:none;counter-reset:s;padding:0;max-width:none;display:grid;gap:1.4rem}
  .steps li{counter-increment:s;position:relative;padding-left:3.6rem;margin:0}
  .steps li::before{
    content:counter(s);position:absolute;left:0;top:0;width:2.5rem;height:2.5rem;border-radius:50%;
    background:var(--accent-surface);color:var(--on-accent);display:flex;align-items:center;justify-content:center;
    font-family:'Source Serif 4',Georgia,serif;font-size:1.15rem;font-weight:600;
  }
  .steps h4{margin-bottom:.3rem}
  .steps p{margin-bottom:0;font-size:.98rem}

  /* ---------- Callout / notice ---------- */
  .callout{background:var(--burgundy-tint);border-left:4px solid var(--burgundy);border-radius:0 var(--radius) var(--radius) 0;padding:1.5rem 1.7rem}
  .callout h3,.callout h4{margin-bottom:.45rem}
  .callout p:last-child{margin-bottom:0}
  .notice{background:var(--white);border:var(--border-w) solid var(--line);border-left:4px solid var(--slate);border-radius:0 var(--radius) var(--radius) 0;padding:1.4rem 1.6rem;font-size:.97rem}
  .notice p:last-child{margin-bottom:0}

  /* ---------- Crisis block ---------- */
  .crisis{background:var(--white);border:2px solid var(--burgundy);border-radius:var(--radius);padding:1.7rem 1.8rem}
  .crisis h3{color:var(--burgundy-deep)}
  .crisis .big{font-family:'Source Serif 4',Georgia,serif;font-size:1.9rem;font-weight:700;color:var(--burgundy);line-height:1.15;display:block;margin:.2rem 0 .1rem}
  .crisis p:last-child{margin-bottom:0}
  .crisis-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin:1.1rem 0}
  .crisis .big{margin:.2rem 0 .6rem}

  /* ---------- Table ---------- */
  .table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}
  table{border-collapse:collapse;width:100%;font-size:.97rem;min-width:520px;background:var(--white)}
  caption{text-align:left;font-size:.92rem;color:var(--muted);padding:0 0 .7rem}
  th,td{text-align:left;padding:.95rem 1.15rem;border-bottom:1px solid var(--line-soft);vertical-align:top}
  thead th{background:var(--canvas);font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink);font-weight:700;border-bottom:1px solid var(--line)}
  tbody tr:last-child td{border-bottom:0}

  /* ---------- Form ---------- */
  form.inquiry{background:var(--white);border:var(--border-w) solid var(--line);border-radius:var(--radius);padding:clamp(1.5rem,3vw,2.2rem)}
  .field{margin-bottom:1.35rem}
  .field label{display:block;font-size:.95rem;font-weight:600;color:var(--ink);margin-bottom:.4rem}
  .field .hint{display:block;font-weight:400;font-size:.88rem;color:var(--muted);margin-top:.15rem}
  .req{color:var(--burgundy);font-weight:700}
  input[type=text],input[type=email],input[type=tel],select,textarea{
    width:100%;font:inherit;font-size:1rem;color:var(--ink);background:var(--white);
    border:1.5px solid var(--line);border-radius:var(--radius);padding:.8rem .95rem;
  }
  input:focus,select:focus,textarea:focus{border-color:var(--burgundy);outline:2px solid var(--burgundy-tint);outline-offset:0}
  textarea{min-height:9rem;resize:vertical;line-height:1.6}
  fieldset{border:0;margin:0 0 1.35rem;padding:0}
  legend{font-size:.95rem;font-weight:600;color:var(--ink);margin-bottom:.55rem;padding:0}
  .radio-row{display:grid;gap:.55rem}
  .radio-row label{display:flex;gap:.6rem;align-items:flex-start;font-size:.98rem;font-weight:400;color:var(--body);margin:0}
  .radio-row input{margin-top:.35rem;flex:none;width:1.05rem;height:1.05rem;accent-color:var(--burgundy)}
  .form-note{font-size:.9rem;color:var(--muted);margin-top:1.1rem}
  .form-status{margin-top:1.1rem;padding:1rem 1.2rem;border-radius:var(--radius);background:var(--burgundy-tint);border-left:4px solid var(--burgundy);font-size:.96rem}
  .form-status[hidden]{display:none}
  /* Honeypot. Positioned off screen rather than display:none, because some bots
     skip hidden fields but will still fill a field they can see in the markup. */
  .hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
  .humancheck{background:var(--canvas);border:var(--border-w) solid var(--line);border-radius:var(--radius);padding:1.1rem 1.25rem;margin-bottom:1.35rem}
  .humancheck label{display:block;font-size:.95rem;font-weight:600;color:var(--ink);margin-bottom:.4rem}
  .humancheck .hint{display:block;font-weight:400;font-size:.88rem;color:var(--muted);margin-top:.15rem}
  .humancheck input{max-width:9rem}

  /* ---------- Contact blocks ---------- */
  .office{background:var(--white);border:var(--border-w) solid var(--line);border-top:3px solid var(--burgundy);border-radius:var(--radius);padding:1.6rem 1.5rem}
  .office h3{margin-bottom:.15rem}
  .office .kicker{font-size:.8rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:.9rem;display:block}
  .office address{font-style:normal;font-size:.99rem;line-height:1.65;color:var(--body)}
  .contact-lines{list-style:none;padding:0;margin:1.1rem 0 0;max-width:none;font-size:.99rem}
  .contact-lines li{display:flex;gap:.65rem;align-items:flex-start;margin-bottom:.55rem}
  .contact-lines svg{flex:none;margin-top:.3rem;color:var(--burgundy)}

  /* ---------- FAQ ---------- */
  .faq{border-top:1px solid var(--line)}
  .faq details{border-bottom:1px solid var(--line)}
  .faq summary{
    cursor:pointer;padding:1.25rem 2.5rem 1.25rem 0;position:relative;list-style:none;
    font-family:'Source Serif 4',Georgia,serif;font-size:1.14rem;font-weight:600;color:var(--ink);line-height:1.4;
  }
  .faq summary::-webkit-details-marker{display:none}
  .faq summary::after{content:"+";position:absolute;right:.4rem;top:1.1rem;font-family:'Inter',sans-serif;font-size:1.5rem;font-weight:400;color:var(--burgundy);line-height:1}
  .faq details[open] summary::after{content:"\2212"}
  .faq summary:hover{color:var(--burgundy)}
  .faq .answer{padding:0 1.5rem 1.4rem 0}
  .faq .answer p:last-child{margin-bottom:0}

  /* ---------- CTA band ---------- */
  .cta-band{background:var(--accent-surface);color:var(--cta-text);padding:clamp(2.8rem,5.5vw,4.2rem) 0}
  .cta-band h2{color:var(--cta-text)}
  .cta-band p{color:var(--cta-muted);max-width:60ch}
  .cta-inner{display:flex;flex-wrap:wrap;gap:2rem;align-items:center;justify-content:space-between}
  .cta-inner > div{flex:1 1 26rem}
  .cta-actions{display:flex;flex-wrap:wrap;gap:.85rem}

  /* ---------- Footer ---------- */
  footer.site{background:var(--dark-panel);color:var(--dark-text);font-size:.95rem;padding:clamp(2.6rem,5vw,3.6rem) 0 1.8rem}
  footer.site h4{color:var(--dark-strong);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:1rem}
  footer.site a{color:var(--dark-strong);text-decoration:none}
  footer.site a:hover{color:var(--dark-strong);text-decoration:underline}
  .foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.3fr;gap:2.2rem}
  @media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}
  @media (max-width:560px){.foot-grid{grid-template-columns:1fr}}
  footer.site ul{list-style:none;padding:0;margin:0;max-width:none}
  footer.site li{margin-bottom:.6rem}
  footer.site p{color:var(--dark-text);font-size:.95rem}
  .foot-brand .brand-name{color:var(--dark-strong);font-size:1.15rem}
  .foot-brand .brand-sub{color:var(--dark-accent)}
  .foot-bottom{border-top:1px solid var(--hair-on-dark);margin-top:2.4rem;padding-top:1.5rem;display:flex;flex-wrap:wrap;gap:.6rem 2rem;justify-content:space-between;font-size:.87rem;color:var(--dark-muted)}
  .foot-disclaimer{background:var(--wash-on-dark);border-left:3px solid var(--burgundy-mid);padding:1rem 1.2rem;border-radius:0 var(--radius) var(--radius) 0;font-size:.89rem;line-height:1.6;color:var(--dark-text);margin-top:2rem}
  .foot-disclaimer strong{color:var(--dark-strong)}

  /* ---------- Utilities ---------- */
  .tac{text-align:center}
  .mb0{margin-bottom:0}
  .mt2{margin-top:2rem}
  .mt3{margin-top:3rem}
  .placeholder{
    background:var(--ph-bg);border-bottom:1px dashed var(--ph-line);color:var(--ph-text);
    padding:0 .2em;font-weight:600;font-size:.95em;border-radius:2px;
  }
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  figure{margin:0}
  figcaption{font-size:.87rem;color:var(--muted);margin-top:.65rem;line-height:1.5}
