/* ==========================================================================
   Benevolent Care, LLC  ·  Site stylesheet
   Structure: 1 Fonts · 2 Tokens · 3 Themes · 4 Base · 5 Layout · 6 Components
              7 Pages · 8 Motion · 9 Utilities
   ========================================================================== */

/* 1. FONTS (self-hosted, SIL Open Font License; see /assets/fonts/*.txt) */
@font-face{
  font-family:"Newsreader";
  src:url("../fonts/newsreader-latin-opsz-normal.woff2") format("woff2-variations");
  font-weight:200 800;font-style:normal;font-display:swap;
}
@font-face{
  font-family:"Newsreader";
  src:url("../fonts/newsreader-latin-opsz-italic.woff2") format("woff2-variations");
  font-weight:200 800;font-style:italic;font-display:swap;
}
@font-face{
  font-family:"Figtree";
  src:url("../fonts/figtree-latin-wght-normal.woff2") format("woff2-variations");
  font-weight:300 900;font-style:normal;font-display:swap;
}

/* 2. TOKENS ---------------------------------------------------------------- */
:root{
  /* Brand palette (supplied) */
  --palette-deep-purple:#41145F;
  --palette-vibrant-purple:#812EFB;
  --palette-soft-lavender:#E4D1FF;
  --palette-light-purple:#CFAEFF;
  --palette-bright-orange:#FF9329;
  --palette-electric-blue:#0000EE;
  --palette-warm-off-white:#F2EBE7;
  --palette-cool-grey:#B2B2B3;
  --palette-white:#FFFFFF;

  /* Logo colors (sampled from the supplied Benevolent Care logo) */
  --logo-ink:#2F0D50;                      /* wordmark and tagline */
  --logo-circle:#CFADF3;                   /* watercolor circles */
  --logo-circle-strong:rgba(207,173,243,.76); /* large circle */
  --logo-circle-soft:rgba(207,173,243,.37);   /* small circle */

  /* Derived accessible shades (documented in README) */
  --derived-violet-strong:#6B1CDB;   /* vibrant purple, darkened for AA text on lavender */
  --derived-lavender-tint:#F7F1FF;   /* lighter lavender surface */
  --derived-ink:#24182E;             /* body text, light theme */
  --derived-ink-soft:#574A63;        /* secondary text, light theme */
  --derived-plum-night:#150A1F;      /* dark theme page */
  --derived-plum-surface:#22122F;    /* dark theme cards */
  --derived-plum-raised:#2E1A42;     /* dark theme secondary surface */
  --derived-plum-deepest:#0F0717;    /* dark theme footer */

  /* Typography */
  --font-serif:"Newsreader", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --font-sans:"Figtree", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --fs-xs:.8125rem;    /* 13 */
  --fs-sm:.9375rem;    /* 15 */
  --fs-base:1.0625rem; /* 17 */
  --fs-md:1.1875rem;   /* 19 */
  --fs-lg:clamp(1.375rem,1.1rem + .9vw,1.625rem);
  --fs-xl:clamp(1.75rem,1.3rem + 1.6vw,2.375rem);
  --fs-2xl:clamp(2.125rem,1.4rem + 2.8vw,3.25rem);
  --fs-display:clamp(2.6rem,1.3rem + 5vw,5.25rem);
  --lh-tight:1.08;
  --lh-snug:1.25;
  --lh-body:1.7;
  --measure:64ch;

  /* Spacing (8px base) */
  --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem; --space-5:1.5rem;
  --space-6:2rem; --space-7:2.5rem; --space-8:3rem; --space-9:4rem; --space-10:5rem; --space-11:6.5rem;
  --section-y:clamp(4rem,2.5rem + 5vw,7.5rem);
  --gutter:clamp(1.25rem,.8rem + 2vw,2.5rem);
  --maxw:1240px;

  /* Shape */
  --radius-sm:6px; --radius-md:14px; --radius-lg:22px; --radius-pill:999px;

  /* Motion */
  --ease:cubic-bezier(.2,.7,.2,1);
  --dur-fast:.15s; --dur-base:.3s; --dur-slow:.7s;
  --header-h:76px;
}

/* 3. THEMES ---------------------------------------------------------------- */
:root,
[data-theme="light"]{
  color-scheme:light;
  --color-bg:var(--palette-warm-off-white);
  --color-surface:var(--palette-white);
  --color-surface-2:var(--palette-soft-lavender);
  --color-surface-3:var(--derived-lavender-tint);
  --color-band:var(--palette-deep-purple);          /* full-bleed feature bands */
  --color-band-text:var(--palette-white);
  --color-band-muted:var(--palette-soft-lavender);
  --color-band-accent:var(--palette-light-purple);

  --color-brand:var(--logo-ink);                    /* headings, nav: matches logo wordmark */
  --color-accent:var(--palette-vibrant-purple);     /* primary CTA fill */
  --color-accent-hover:var(--derived-violet-strong);
  --color-on-accent:var(--palette-white);
  --color-link:var(--derived-violet-strong);
  --color-link-hover:var(--palette-deep-purple);
  --color-highlight:var(--palette-vibrant-purple);  /* italic headline emphasis on bg/white */
  --color-secondary-accent:var(--palette-bright-orange); /* decorative only */
  --color-muted-deco:var(--palette-cool-grey);

  --color-text:var(--derived-ink);
  --color-text-2:var(--derived-ink-soft);
  --color-border:#E2D6EA;
  --color-border-strong:#8A7A9C;
  --color-focus:var(--palette-vibrant-purple);
  --color-focus-on-band:var(--palette-bright-orange);

  --btn-secondary-border:var(--palette-deep-purple);
  --btn-secondary-text:var(--palette-deep-purple);
  --btn-secondary-hover-bg:var(--palette-soft-lavender);

  --nav-text:var(--derived-ink-soft);
  --nav-text-active:var(--logo-ink);
  --nav-indicator:var(--palette-bright-orange);
  --header-bg:rgba(242,235,231,.86);
  --header-border:rgba(65,20,95,.10);

  --notice-bg:var(--derived-lavender-tint);
  --notice-border:var(--palette-vibrant-purple);
  --pill-bg:var(--palette-soft-lavender);
  --pill-text:var(--palette-deep-purple);
  --input-bg:var(--palette-white);
  --error:#B3261E;
  --shadow-sm:0 1px 2px rgba(36,24,46,.06), 0 4px 14px -6px rgba(65,20,95,.12);
  --shadow-md:0 2px 4px rgba(36,24,46,.05), 0 18px 40px -18px rgba(65,20,95,.28);
  --photo-frame:var(--palette-soft-lavender);
  --deco-circle:var(--logo-circle-strong);
  --deco-circle-soft:var(--logo-circle-soft);
}

[data-theme="dark"]{
  color-scheme:dark;
  --color-bg:var(--derived-plum-night);
  --color-surface:var(--derived-plum-surface);
  --color-surface-2:var(--derived-plum-raised);
  --color-surface-3:#1B0E27;
  --color-band:#2A1340;
  --color-band-text:#F4EEFA;
  --color-band-muted:#D9C8EE;
  --color-band-accent:var(--palette-light-purple);

  --color-brand:var(--palette-soft-lavender);
  --color-accent:var(--palette-light-purple);
  --color-accent-hover:var(--palette-soft-lavender);
  --color-on-accent:#1B0B2A;
  --color-link:var(--palette-light-purple);
  --color-link-hover:var(--palette-soft-lavender);
  --color-highlight:var(--palette-light-purple);
  --color-secondary-accent:var(--palette-bright-orange);
  --color-muted-deco:#5E5168;

  --color-text:#F4EEFA;
  --color-text-2:#C9BBD8;
  --color-border:#3A2850;
  --color-border-strong:#7D6A92;
  --color-focus:var(--palette-bright-orange);
  --color-focus-on-band:var(--palette-bright-orange);

  --btn-secondary-border:var(--palette-light-purple);
  --btn-secondary-text:var(--palette-soft-lavender);
  --btn-secondary-hover-bg:var(--derived-plum-raised);

  --nav-text:#C9BBD8;
  --nav-text-active:#F4EEFA;
  --nav-indicator:var(--palette-bright-orange);
  --header-bg:rgba(21,10,31,.84);
  --header-border:rgba(207,174,255,.12);

  --notice-bg:var(--derived-plum-raised);
  --notice-border:var(--palette-light-purple);
  --pill-bg:var(--derived-plum-raised);
  --pill-text:var(--palette-soft-lavender);
  --input-bg:#1B0E27;
  --error:#FFB4A9;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4), 0 6px 18px -8px rgba(0,0,0,.6);
  --shadow-md:0 2px 6px rgba(0,0,0,.35), 0 24px 48px -20px rgba(0,0,0,.7);
  --photo-frame:var(--derived-plum-raised);
  --deco-circle:rgba(207,173,243,.22);
  --deco-circle-soft:rgba(207,173,243,.10);
}


/* 4. BASE ------------------------------------------------------------------ */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px);}
body{
  margin:0;
  font-family:var(--font-sans);
  font-size:var(--fs-base);
  line-height:var(--lh-body);
  color:var(--color-text);
  background:var(--color-bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
h1,h2,h3,h4{
  font-family:var(--font-serif);
  font-weight:450;
  line-height:var(--lh-snug);
  letter-spacing:-.012em;
  color:var(--color-brand);
  margin:0 0 .5em;
  text-wrap:balance;
  font-optical-sizing:auto;
}
h1{font-size:var(--fs-2xl);line-height:var(--lh-tight);}
h2{font-size:var(--fs-xl);line-height:1.15;}
h3{font-size:var(--fs-lg);}
p{margin:0 0 1em;text-wrap:pretty;}
a{color:var(--color-link);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--dur-fast) var(--ease);}
a:hover{color:var(--color-link-hover);}
img{display:block;max-width:100%;height:auto;}
svg{display:block;}
button,input,select,textarea{font:inherit;color:inherit;}
button{cursor:pointer;}
ul,ol{padding-left:1.25em;}
strong{font-weight:650;}
::selection{background:var(--palette-light-purple);color:var(--palette-deep-purple);}

:focus{outline:none;}
:focus-visible{
  outline:3px solid var(--color-focus);
  outline-offset:3px;
  border-radius:var(--radius-sm);
}
.on-band :focus-visible{outline-color:var(--color-focus-on-band);}

.skip-link{
  position:absolute;left:var(--space-4);top:-100px;z-index:1000;
  background:var(--palette-deep-purple);color:#fff;padding:var(--space-3) var(--space-5);
  border-radius:var(--radius-sm);font-weight:600;text-decoration:none;
}
.skip-link:focus{top:var(--space-4);color:#fff;}

.visually-hidden{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* 5. LAYOUT ---------------------------------------------------------------- */
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);}
.container--narrow{max-width:820px;}
.section{padding-block:var(--section-y);}
.section--tight{padding-block:clamp(3rem,2rem + 3vw,4.5rem);}
.section--flush-top{padding-top:0;}
.bg-surface{background:var(--color-surface);}
.bg-tint{background:var(--color-surface-3);}
.bg-lavender{background:var(--color-surface-2);}
.band{background:var(--color-band);color:var(--color-band-text);}
.band h1,.band h2,.band h3{color:var(--color-band-text);}
.band p{color:var(--color-band-muted);}
.band a:not(.btn){color:var(--color-band-accent);}

.grid-split{display:grid;gap:var(--space-7);align-items:start;}
@media (min-width:900px){
  .grid-split{grid-template-columns:5fr 7fr;gap:var(--space-10);}
  .grid-split--even{grid-template-columns:1fr 1fr;}
  .grid-split--center{align-items:center;}
}

.page{display:none;}
.page.is-active{display:block;animation:pageIn .45s var(--ease) both;}
@keyframes pageIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* 6. COMPONENTS ------------------------------------------------------------ */

/* Eyebrow */
.eyebrow{
  display:inline-flex;align-items:center;gap:.7em;
  font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:650;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--color-brand);margin:0 0 var(--space-5);
}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--color-secondary-accent);border-radius:2px;flex-shrink:0;}
.band .eyebrow{color:var(--color-band-accent);}

.lede{font-size:var(--fs-md);color:var(--color-text-2);max-width:56ch;line-height:1.65;}
.muted{color:var(--color-text-2);}
.prose{max-width:var(--measure);}
.prose p{color:var(--color-text-2);}

/* Buttons */
.btn{
  --btn-bg:var(--color-accent);--btn-fg:var(--color-on-accent);--btn-bd:transparent;
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  min-height:48px;padding:.8em 1.5em;border-radius:var(--radius-pill);
  font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:650;letter-spacing:.01em;line-height:1.2;
  text-decoration:none;text-align:center;
  background:var(--btn-bg);color:var(--btn-fg);border:1.5px solid var(--btn-bd);
  transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease);
}
.btn:hover{--btn-bg:var(--color-accent-hover);color:var(--btn-fg);transform:translateY(-1px);box-shadow:var(--shadow-sm);}
.btn:active{transform:translateY(0);box-shadow:none;}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.55;pointer-events:none;}
.btn .arrow{transition:transform var(--dur-base) var(--ease);}
.btn:hover .arrow{transform:translateX(3px);}
.btn--secondary{--btn-bg:transparent;--btn-fg:var(--btn-secondary-text);--btn-bd:var(--btn-secondary-border);}
.btn--secondary:hover{--btn-bg:var(--btn-secondary-hover-bg);}
.btn--sm{min-height:42px;padding:.6em 1.15em;font-size:var(--fs-xs);}
.btn--block{width:100%;}
.band .btn{--btn-bg:var(--palette-white);--btn-fg:var(--palette-deep-purple);}
.band .btn:hover{--btn-bg:var(--palette-soft-lavender);}
.band .btn--secondary{--btn-bg:transparent;--btn-fg:var(--color-band-text);--btn-bd:rgba(228,209,255,.6);}
.band .btn--secondary:hover{--btn-bg:rgba(228,209,255,.12);}
[data-theme="dark"] .band .btn{--btn-bg:var(--palette-light-purple);--btn-fg:#1B0B2A;}
[data-theme="dark"] .band .btn:hover{--btn-bg:var(--palette-soft-lavender);}
[data-theme="dark"] .band .btn--secondary{--btn-bg:transparent;--btn-fg:var(--color-band-text);}

.text-link{
  display:inline-flex;align-items:center;gap:.45em;font-weight:650;font-size:var(--fs-sm);
  color:var(--color-link);text-decoration:none;
  background:linear-gradient(currentColor,currentColor) 0 100%/0 1.5px no-repeat;
  padding-bottom:2px;transition:background-size var(--dur-base) var(--ease),color var(--dur-fast);
}
.text-link:hover{background-size:100% 1.5px;}
.text-link .arrow{transition:transform var(--dur-base) var(--ease);}
.text-link:hover .arrow{transform:translateX(3px);}

/* Header */
.site-header{
  position:sticky;top:0;z-index:100;
  background:var(--header-bg);
  -webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease);
}
.site-header.is-scrolled{border-bottom-color:var(--header-border);box-shadow:0 8px 24px -18px rgba(36,24,46,.35);}
.nav-row{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);
  min-height:var(--header-h);max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);
  transition:min-height var(--dur-base) var(--ease);
}
.site-header.is-scrolled .nav-row{min-height:64px;}
.brand{display:flex;align-items:center;text-decoration:none;color:var(--color-brand);flex-shrink:0;}
.brand-logo{height:56px;width:auto;}
.site-header.is-scrolled .brand-logo{height:48px;}
.brand-logo{transition:height var(--dur-base) var(--ease);}
.brand{position:relative;}
.logo-on-dark{position:absolute;left:0;top:50%;transform:translateY(-50%);opacity:0;visibility:hidden;}
[data-theme="dark"] .logo-on-light{opacity:0;visibility:hidden;}
[data-theme="dark"] .logo-on-dark{opacity:1;visibility:visible;}
@media (min-width:980px){.brand-logo{height:64px;}.site-header.is-scrolled .brand-logo{height:54px;}}
.brand:hover{color:var(--color-brand);}
.brand-mark{width:34px;height:34px;flex-shrink:0;}
.brand-mark{--mark-ring:var(--color-brand);--mark-core:var(--color-accent);}
.brand-name{font-family:var(--font-serif);font-size:1.3rem;font-weight:500;letter-spacing:-.01em;line-height:1;}
.brand-tag{
  display:none;font-size:.6875rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase;
  color:var(--color-text-2);padding-left:.75rem;margin-left:.1rem;border-left:1px solid var(--color-border);line-height:1.3;
}
.primary-nav{display:none;}
.primary-nav ul{display:flex;gap:clamp(1rem,.4rem + 1.4vw,2rem);list-style:none;margin:0;padding:0;}
.primary-nav a{
  position:relative;display:inline-block;padding:.5rem 0;
  font-size:var(--fs-sm);font-weight:550;color:var(--nav-text);text-decoration:none;
}
.primary-nav a::after{
  content:"";position:absolute;left:0;right:0;bottom:.15rem;height:2px;border-radius:2px;
  background:var(--nav-indicator);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease);
}
.primary-nav a:hover{color:var(--nav-text-active);}
.primary-nav a:hover::after{transform:scaleX(.4);}
.primary-nav a[aria-current="page"]{color:var(--nav-text-active);}
.primary-nav a[aria-current="page"]::after{transform:scaleX(1);}
.nav-actions{display:flex;align-items:center;gap:var(--space-3);}
.nav-cta{display:none;}

.icon-btn{
  display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;
  background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-brand);
  transition:background-color var(--dur-fast),border-color var(--dur-fast),transform var(--dur-base) var(--ease);
}
.icon-btn:hover{border-color:var(--color-border-strong);}
.icon-btn svg{width:20px;height:20px;}
.theme-toggle .icon-sun,.theme-toggle .icon-moon{transition:transform .45s var(--ease),opacity var(--dur-base);}
[data-theme="light"] .theme-toggle .icon-sun{opacity:0;transform:rotate(-60deg) scale(.6);position:absolute;}
[data-theme="dark"] .theme-toggle .icon-moon{opacity:0;transform:rotate(60deg) scale(.6);position:absolute;}
.theme-toggle{position:relative;}

.menu-toggle .bar{transition:transform var(--dur-base) var(--ease),opacity var(--dur-fast);transform-origin:center;}
.menu-toggle[aria-expanded="true"] .bar-1{transform:translateY(5px) rotate(45deg);}
.menu-toggle[aria-expanded="true"] .bar-2{opacity:0;}
.menu-toggle[aria-expanded="true"] .bar-3{transform:translateY(-5px) rotate(-45deg);}

.mobile-menu{
  display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease);
  background:var(--color-bg);border-bottom:1px solid transparent;
}
.mobile-menu > div{overflow:hidden;}
.mobile-menu.is-open{grid-template-rows:1fr;border-bottom-color:var(--header-border);}
.mobile-menu ul{list-style:none;margin:0;padding:var(--space-2) var(--gutter) 0;}
.mobile-menu li a{
  display:flex;justify-content:space-between;align-items:center;min-height:56px;
  font-family:var(--font-serif);font-size:1.5rem;color:var(--color-brand);text-decoration:none;
  border-bottom:1px solid var(--color-border);
}
.mobile-menu li a[aria-current="page"]{color:var(--color-highlight);}
.mobile-menu li a[aria-current="page"]::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--nav-indicator);}
.mobile-menu .mobile-menu-foot{padding:var(--space-5) var(--gutter) var(--space-6);display:grid;gap:var(--space-4);}
.mobile-menu .theme-row{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-sm);color:var(--color-text-2);}
.mobile-menu:not(.is-open) a,.mobile-menu:not(.is-open) button{visibility:hidden;}

@media (min-width:980px){
  .primary-nav{display:block;}
  .nav-cta{display:inline-flex;}
  .menu-toggle,.mobile-menu{display:none;}
}
@media (min-width:1180px){.brand-tag{display:inline;}}

/* Reading progress */
.read-progress{
  position:absolute;left:0;bottom:-1px;height:2px;width:100%;
  background:var(--color-secondary-accent);transform-origin:left;transform:scaleX(0);
  opacity:0;transition:opacity var(--dur-base);
}
.read-progress.is-visible{opacity:1;}

/* Pills */
.pill-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:var(--space-5) 0 0;padding:0;}
.pill-list li{
  background:var(--pill-bg);color:var(--pill-text);font-size:var(--fs-xs);font-weight:600;
  padding:.5em 1em;border-radius:var(--radius-pill);line-height:1.3;
}

/* Notice */
.notice{
  display:flex;gap:var(--space-4);align-items:flex-start;
  background:var(--notice-bg);border-left:3px solid var(--notice-border);
  border-radius:0 var(--radius-md) var(--radius-md) 0;padding:var(--space-5);
  font-size:var(--fs-sm);color:var(--color-text);margin-top:var(--space-5);
}
.notice svg{flex-shrink:0;width:20px;height:20px;margin-top:.15em;color:var(--color-brand);}
.notice p{margin:0;color:var(--color-text);}
.notice strong{color:var(--color-brand);}

/* Photo frames */
.photo{position:relative;border-radius:var(--radius-lg);overflow:hidden;background:var(--photo-frame);}
.photo img{width:100%;height:100%;object-fit:cover;}

/* Accordion */
.accordion{border-top:1px solid var(--color-border);margin-top:var(--space-5);}
.accordion-item{border-bottom:1px solid var(--color-border);}
.accordion-item h3{margin:0;font-size:inherit;}
.accordion-trigger{
  display:flex;width:100%;align-items:center;justify-content:space-between;gap:var(--space-4);
  text-align:left;background:none;border:0;padding:var(--space-5) 0;
  font-family:var(--font-sans);font-size:var(--fs-base);font-weight:650;color:var(--color-text);line-height:1.4;
}
.accordion-trigger:hover{color:var(--color-link);}
.accordion-icon{
  flex-shrink:0;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--color-border);color:var(--color-brand);transition:transform var(--dur-base) var(--ease),background-color var(--dur-fast);
}
.accordion-trigger[aria-expanded="true"] .accordion-icon{transform:rotate(45deg);background:var(--color-surface-2);}
.accordion-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease);}
.accordion-panel > div{overflow:hidden;}
.accordion-panel.is-open{grid-template-rows:1fr;}
.accordion-panel p{margin:0;padding:0 var(--space-8) var(--space-5) 0;color:var(--color-text-2);}
.no-js .accordion-panel{grid-template-rows:1fr;}

/* Forms */
.form-card{
  background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);
  padding:clamp(1.5rem,1rem + 2vw,2.75rem);box-shadow:var(--shadow-sm);
}
.form-grid{display:grid;gap:var(--space-5);}
@media (min-width:620px){.form-grid--two{grid-template-columns:1fr 1fr;}}
.field label,.field .label{display:block;font-size:var(--fs-sm);font-weight:650;color:var(--color-text);margin-bottom:.4rem;}
.field .optional{font-weight:450;color:var(--color-text-2);}
.field input,.field select,.field textarea{
  width:100%;min-height:50px;padding:.75rem .95rem;border-radius:var(--radius-sm);
  border:1.5px solid var(--color-border-strong);background:var(--input-bg);color:var(--color-text);
  font-size:1rem;line-height:1.4;
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast);
}
.field select{
  appearance:none;-webkit-appearance:none;padding-right:2.6rem;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23812EFB' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .9rem center;background-size:18px;
}
[data-theme="dark"] .field select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23CFAEFF' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
}
.field textarea{min-height:140px;resize:vertical;}
.field input::placeholder,.field textarea::placeholder{color:var(--color-text-2);opacity:.75;}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{
  outline:none;border-color:var(--color-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-focus) 28%,transparent);
}
.field.has-error input,.field.has-error textarea,.field.has-error select{border-color:var(--error);}
.field-error{display:flex;gap:.4em;align-items:flex-start;margin:.4rem 0 0;font-size:var(--fs-xs);font-weight:600;color:var(--error);}
.field-error:empty{display:none;}
.check-field{display:flex;gap:var(--space-3);align-items:flex-start;font-size:var(--fs-sm);color:var(--color-text-2);}
.check-field input{width:22px;height:22px;margin:.1rem 0 0;flex-shrink:0;accent-color:var(--palette-vibrant-purple);}
.check-field label{cursor:pointer;}
.hp-field{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden;}
.form-status{
  margin-top:var(--space-5);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);
  font-size:var(--fs-sm);display:none;
}
.form-status.is-visible{display:block;}
.form-status--info{background:var(--color-surface-2);color:var(--color-text);}
.form-status--error{background:color-mix(in srgb,var(--error) 12%,transparent);color:var(--color-text);border:1px solid var(--error);}
.form-status p{margin:0;}
.form-status p + p{margin-top:.5em;}
.form-note{font-size:var(--fs-xs);color:var(--color-text-2);margin:var(--space-4) 0 0;}

/* Footer */
.site-footer{
  background:var(--palette-deep-purple);color:#E9DDF8;
  padding:var(--space-10) 0 var(--space-6);margin-top:0;
}
[data-theme="dark"] .site-footer{background:var(--derived-plum-deepest);border-top:1px solid var(--color-border);}
.site-footer :focus-visible{outline-color:var(--palette-bright-orange);}
.footer-grid{display:grid;gap:var(--space-7);padding-bottom:var(--space-8);border-bottom:1px solid rgba(228,209,255,.18);}
@media (min-width:760px){.footer-grid{grid-template-columns:1.6fr 1fr 1fr;}}
.footer-brand{display:inline-block;margin-bottom:var(--space-4);}
.footer-brand img{height:110px;width:auto;}
.footer-brand .brand-mark{--mark-ring:var(--palette-light-purple);--mark-core:var(--palette-bright-orange);}
.footer-tag{font-size:var(--fs-sm);color:#D9C8EE;margin:0;}
.footer-contact{margin-top:var(--space-5);font-size:var(--fs-sm);line-height:1.9;}
.footer-contact a{color:#fff;}
.footer-col h2{font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--palette-light-purple);margin-bottom:var(--space-4);}
.footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:.15rem;}
.footer-col a{display:inline-block;padding:.35rem 0;color:#F4EEFA;text-decoration:none;font-size:var(--fs-sm);}
.footer-col a:hover{color:#fff;text-decoration:underline;}
.footer-disclaimer{font-size:var(--fs-xs);color:#CDBDE2;max-width:72ch;margin:var(--space-6) 0 var(--space-4);line-height:1.7;}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3);font-size:var(--fs-xs);color:#CDBDE2;}

/* Sticky mobile CTA */
.sticky-cta{
  position:fixed;left:0;right:0;bottom:0;z-index:90;
  padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));
  background:var(--header-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-top:1px solid var(--header-border);
  transform:translateY(0);transition:transform var(--dur-base) var(--ease);
}
.sticky-cta.is-hidden{transform:translateY(110%);}
body{padding-bottom:84px;}
@media (min-width:980px){.sticky-cta{display:none;}body{padding-bottom:0;}}

/* 7. PAGES ----------------------------------------------------------------- */

/* --- Hero --- */
.hero{padding-block:clamp(2.5rem,1.5rem + 4vw,5.5rem) var(--section-y);position:relative;overflow:hidden;}
.hero-grid{display:grid;gap:var(--space-8);align-items:center;}
.hero h1{
  font-size:var(--fs-display);font-weight:400;line-height:1.02;letter-spacing:-.025em;margin-bottom:var(--space-5);
  font-variation-settings:"opsz" 72;
}
.hero h1 em{font-style:italic;color:var(--color-highlight);font-weight:400;}
.hero .lede{margin-bottom:var(--space-6);}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--space-3);}
.hero-figure{position:relative;margin:0;}
.hero-figure .photo{aspect-ratio:4/3;}
.hero-figure .photo img{object-position:42% 55%;}
.hero-figure{isolation:isolate;}
.hero-figure::before,.hero-figure::after{content:"";position:absolute;z-index:-1;border-radius:50%;pointer-events:none;}
.hero-figure::before{width:78%;aspect-ratio:1;left:-12%;bottom:-8%;background:var(--deco-circle);}
.hero-figure::after{width:52%;aspect-ratio:1;right:-9%;top:-7%;background:var(--deco-circle-soft);}
.hero-figure figcaption{
  margin-top:var(--space-4);font-family:var(--font-serif);font-style:italic;font-size:var(--fs-sm);color:var(--color-text-2);
}
.credential-card{
  position:relative;display:flex;align-items:center;gap:var(--space-4);
  background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);
  padding:var(--space-3) var(--space-5) var(--space-3) var(--space-3);box-shadow:var(--shadow-md);
  margin-top:calc(var(--space-6) * -1);margin-left:var(--space-4);width:max-content;max-width:calc(100% - 2rem);
}
.credential-card img{width:56px;height:56px;border-radius:50%;object-fit:cover;object-position:50% 30%;flex-shrink:0;}
.credential-card .name{font-family:var(--font-serif);font-size:1.1rem;color:var(--color-brand);line-height:1.2;display:block;}
.credential-card .role{font-size:var(--fs-xs);color:var(--color-text-2);display:block;}
@media (min-width:900px){
  .hero-grid{grid-template-columns:7fr 5fr;gap:var(--space-9);}
  .hero-figure .photo{aspect-ratio:4/5;}
  .credential-card{position:absolute;left:-2.5rem;bottom:3.5rem;margin:0;}
}

/* --- Approach (intro) --- */
.approach-statement{
  font-family:var(--font-serif);font-size:var(--fs-xl);line-height:1.25;font-weight:400;color:var(--color-brand);
  letter-spacing:-.01em;margin:0;
}
.approach-statement em{color:var(--color-highlight);}

/* --- Services index (home) --- */
.section-head{display:grid;gap:var(--space-4);margin-bottom:var(--space-8);}
@media (min-width:900px){
  .section-head--split{grid-template-columns:1fr 1fr;align-items:end;gap:var(--space-10);}
  .section-head--split p{margin:0;}
}
.section-head h2{margin:0;}
.section-head p{color:var(--color-text-2);max-width:56ch;}

.service-index{list-style:none;margin:0;padding:0;display:grid;border-top:1px solid var(--color-border);}
@media (min-width:760px){.service-index{grid-template-columns:1fr 1fr;column-gap:var(--space-8);}}
.service-index li{border-bottom:1px solid var(--color-border);}
.service-index a{
  display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-2) var(--space-5);align-items:start;
  padding:var(--space-6) var(--space-3);margin-inline:calc(var(--space-3) * -1);
  text-decoration:none;color:inherit;border-radius:var(--radius-md);
  transition:background-color var(--dur-base) var(--ease);
}
.service-index a:hover{background:var(--color-surface);color:inherit;}
.service-index .num{font-family:var(--font-serif);font-style:italic;font-size:var(--fs-md);color:var(--color-link);padding-top:.2rem;min-width:2ch;}
.service-index h3{font-size:var(--fs-lg);margin:0 0 .35rem;}
.service-index p{margin:0;color:var(--color-text-2);font-size:var(--fs-sm);max-width:44ch;}
.service-index .go{
  width:40px;height:40px;border-radius:50%;border:1px solid var(--color-border);display:grid;place-items:center;color:var(--color-brand);
  transition:transform var(--dur-base) var(--ease),background-color var(--dur-base),border-color var(--dur-base);
}
.service-index a:hover .go{transform:translateX(4px);background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent);}
.service-index .more{grid-column:2;margin-top:var(--space-3);font-size:var(--fs-sm);font-weight:650;color:var(--color-link);}

/* --- Steps --- */
.steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-7);counter-reset:step;}
@media (min-width:860px){.steps{grid-template-columns:repeat(3,1fr);gap:var(--space-6);}}
.step{position:relative;padding-top:var(--space-6);border-top:1px solid var(--color-border-strong);}
.step::before{
  content:"";position:absolute;top:-5px;left:0;width:9px;height:9px;border-radius:50%;background:var(--color-secondary-accent);
}
.step .step-label{display:block;font-size:var(--fs-xs);font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-2);margin-bottom:var(--space-3);}
.step h3{font-size:var(--fs-xl);margin-bottom:var(--space-3);}
.step p{color:var(--color-text-2);margin:0;max-width:36ch;}

/* --- Person feature --- */
.person{display:grid;gap:var(--space-7);align-items:center;}
.person-photo{position:relative;max-width:340px;width:100%;}
.person-photo .photo{aspect-ratio:1/1;border-radius:var(--radius-lg);}
.person-photo::after{
  content:"";position:absolute;z-index:-1;inset:18px -18px -18px 18px;border-radius:var(--radius-lg);
  border:1.5px solid var(--color-secondary-accent);
}
.person-photo{z-index:0;isolation:isolate;}
.person .role{display:block;font-weight:650;color:var(--color-link);margin:-.2rem 0 var(--space-5);font-size:var(--fs-sm);letter-spacing:.02em;}
.person .prose p{font-size:var(--fs-base);}
@media (min-width:860px){.person{grid-template-columns:340px 1fr;gap:var(--space-10);}}

/* --- Statement / mission --- */
.statement{max-width:900px;margin-inline:auto;text-align:center;}
.statement blockquote,.statement .statement-text{
  margin:0 0 var(--space-6);font-family:var(--font-serif);font-style:italic;font-weight:350;
  font-size:var(--fs-xl);line-height:1.35;letter-spacing:-.01em;color:inherit;
}
.band .statement .statement-text{color:var(--color-band-text);}
.statement .sub{max-width:60ch;margin-inline:auto;}
.quote-mark{display:block;font-family:var(--font-serif);font-size:5rem;line-height:.6;color:var(--color-secondary-accent);margin-bottom:var(--space-4);}

/* --- CTA panel --- */
.cta-panel{
  position:relative;overflow:hidden;border-radius:var(--radius-lg);
  padding:clamp(2.5rem,1.5rem + 4vw,5rem) clamp(1.5rem,1rem + 4vw,5rem);
  display:grid;gap:var(--space-6);align-items:end;
}
.cta-panel h2{font-size:var(--fs-2xl);max-width:16ch;margin:0;}
.cta-panel p{max-width:48ch;margin:0 0 var(--space-5);}
.cta-panel::after{
  content:"";position:absolute;right:-60px;top:-60px;width:240px;height:240px;border-radius:50%;
  border:1.5px solid rgba(255,147,41,.55);pointer-events:none;
}
.cta-panel::before{
  content:"";position:absolute;right:20px;top:20px;width:110px;height:110px;border-radius:50%;
  background:var(--deco-circle-soft);pointer-events:none;
}
@media (min-width:900px){.cta-panel{grid-template-columns:1.1fr 1fr;}}

/* --- Page hero (inner) --- */
.page-hero{padding-block:clamp(2.5rem,1.5rem + 4vw,5rem) clamp(2.5rem,1.5rem + 3vw,4rem);}
.page-hero h1{font-size:var(--fs-2xl);max-width:18ch;}
.page-hero .lede{margin:0;}
.page-hero-grid{display:grid;gap:var(--space-7);align-items:end;}
.page-hero-grid .photo{aspect-ratio:16/10;}
@media (min-width:900px){.page-hero-grid{grid-template-columns:1.1fr .9fr;gap:var(--space-9);}}

/* --- About --- */
.bio-figure{margin:0;}
.bio-figure figcaption{margin-top:var(--space-4);font-size:var(--fs-sm);color:var(--color-text-2);}
.bio-figure figcaption strong{display:block;font-family:var(--font-serif);font-weight:500;font-size:var(--fs-md);color:var(--color-brand);}
.about-hero .photo{aspect-ratio:1/1;max-width:400px;}
.about-hero h1{font-size:var(--fs-2xl);max-width:14ch;}
.principles{list-style:none;margin:var(--space-6) 0 0;padding:0;counter-reset:p;}
.principles li{
  counter-increment:p;display:grid;grid-template-columns:2.5rem 1fr;gap:var(--space-3);
  padding:var(--space-4) 0;border-top:1px solid var(--color-border);color:var(--color-text);
}
.principles li:last-child{border-bottom:1px solid var(--color-border);}
.principles li::before{content:counter(p,decimal-leading-zero);font-family:var(--font-serif);font-style:italic;color:var(--color-link);}
.pull-quote{
  margin:0;padding:clamp(2rem,1.5rem + 2vw,3rem);border-radius:var(--radius-lg);
  background:var(--color-surface-2);position:relative;
}
.pull-quote p{font-family:var(--font-serif);font-style:italic;font-size:var(--fs-lg);line-height:1.45;color:var(--color-brand);margin:0;}
.pull-quote footer{margin-top:var(--space-5);font-size:var(--fs-sm);font-weight:650;color:var(--color-text);display:flex;align-items:center;gap:.7em;}
.pull-quote footer::before{content:"";width:22px;height:2px;background:var(--color-secondary-accent);}

.values{list-style:none;margin:0;padding:0;display:grid;gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;}
@media (min-width:640px){.values{grid-template-columns:1fr 1fr;}}
@media (min-width:1040px){.values{grid-template-columns:repeat(4,1fr);}}
.values li{background:var(--color-surface);padding:var(--space-7) var(--space-6);}
.values .v-num{display:block;font-family:var(--font-serif);font-style:italic;color:var(--color-link);margin-bottom:var(--space-6);}
.values h3{font-size:var(--fs-lg);margin-bottom:var(--space-3);}
.values p{color:var(--color-text-2);font-size:var(--fs-sm);margin:0;}

/* --- Services page --- */
.services-layout{display:grid;gap:var(--space-7);}
.services-toc{display:none;}
@media (min-width:1040px){
  .services-layout{grid-template-columns:240px 1fr;gap:var(--space-10);}
  .services-toc{display:block;position:sticky;top:calc(var(--header-h) + 24px);align-self:start;}
}
.toc-title{font-size:var(--fs-xs);font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-2);margin:0 0 var(--space-4);font-family:var(--font-sans);}
.toc-list{list-style:none;margin:0;padding:0;border-left:1px solid var(--color-border);}
.toc-list a{
  display:block;padding:.5rem 0 .5rem var(--space-4);margin-left:-1px;border-left:2px solid transparent;
  font-size:var(--fs-sm);color:var(--color-text-2);text-decoration:none;line-height:1.4;
  transition:color var(--dur-fast),border-color var(--dur-base);
}
.toc-list a:hover{color:var(--color-brand);}
.toc-list a.is-current{color:var(--color-brand);border-left-color:var(--color-secondary-accent);font-weight:600;}

.service-block{display:grid;gap:var(--space-4);padding-block:var(--space-8);border-top:1px solid var(--color-border);scroll-margin-top:calc(var(--header-h) + 20px);}
.service-block:first-child{border-top:0;padding-top:0;}
.service-block .num{font-family:var(--font-serif);font-style:italic;font-size:var(--fs-md);color:var(--color-link);}
.service-block h2{font-size:var(--fs-xl);margin:0;}
.service-block p{color:var(--color-text-2);max-width:var(--measure);margin:0;}
@media (min-width:760px){
  .service-block{grid-template-columns:4rem 1fr;column-gap:var(--space-5);}
  .service-block > *:not(.num){grid-column:2;}
  .service-block .num{grid-row:1;padding-top:.4rem;}
}

.audience{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);}
@media (min-width:760px){.audience{grid-template-columns:repeat(3,1fr);}}
.audience li{
  display:flex;align-items:center;gap:var(--space-3);min-height:64px;padding:var(--space-4) var(--space-5);
  background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);
  font-weight:600;font-size:var(--fs-sm);color:var(--color-text);
}
.audience li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--color-accent);flex-shrink:0;}

/* --- Contact --- */
.contact-grid{display:grid;gap:var(--space-7);align-items:start;}
@media (min-width:980px){.contact-grid{grid-template-columns:1.25fr .85fr;gap:var(--space-9);}}
.info-card{border-radius:var(--radius-lg);padding:clamp(1.75rem,1.25rem + 2vw,2.75rem);}
.info-card h2{font-size:var(--fs-lg);margin-bottom:.2rem;}
.info-card .role{display:block;color:var(--color-band-muted);font-size:var(--fs-sm);margin-bottom:var(--space-6);}
.contact-lines{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);}
.contact-lines li{display:flex;align-items:center;gap:var(--space-4);font-size:var(--fs-base);}
.contact-lines .ico{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:rgba(228,209,255,.14);flex-shrink:0;}
.contact-lines .ico svg{width:18px;height:18px;color:var(--color-band-accent);}
.contact-lines a{color:var(--color-band-text)!important;text-decoration:underline;text-decoration-color:rgba(228,209,255,.45);word-break:break-word;}
.contact-lines a:hover{text-decoration-color:currentColor;}
.consult-card{margin-top:var(--space-5);padding:clamp(1.5rem,1.25rem + 1vw,2.25rem);border-radius:var(--radius-lg);background:var(--color-surface-2);}
.consult-card h2{font-size:var(--fs-lg);}
.consult-card p{color:var(--color-text-2);font-size:var(--fs-sm);}

/* --- Blog index --- */
.blog-feature{
  display:grid;border-radius:var(--radius-lg);overflow:hidden;background:var(--color-surface);
  border:1px solid var(--color-border);text-decoration:none;color:inherit;margin-bottom:var(--space-7);
  transition:box-shadow var(--dur-base) var(--ease),transform var(--dur-base) var(--ease);
}
.blog-feature:hover{color:inherit;box-shadow:var(--shadow-md);transform:translateY(-2px);}
.blog-feature .photo{border-radius:0;aspect-ratio:16/10;}
.blog-feature .body{padding:clamp(1.5rem,1rem + 2vw,3rem);display:flex;flex-direction:column;justify-content:center;}
.blog-feature h2{font-size:var(--fs-xl);}
.blog-feature p{color:var(--color-text-2);}
@media (min-width:900px){.blog-feature{grid-template-columns:1.15fr 1fr;}.blog-feature .photo{aspect-ratio:auto;min-height:100%;}}

.post-grid{display:grid;gap:var(--space-5);list-style:none;margin:0;padding:0;}
@media (min-width:720px){.post-grid{grid-template-columns:1fr 1fr;}}
.post-card{
  display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit;
  border-radius:var(--radius-lg);background:var(--color-surface);border:1px solid var(--color-border);overflow:hidden;
  transition:box-shadow var(--dur-base) var(--ease),transform var(--dur-base) var(--ease),border-color var(--dur-base);
}
.post-card:hover{color:inherit;box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:transparent;}
.post-card .body{padding:var(--space-6);display:flex;flex-direction:column;flex:1;}
.post-card h2{font-size:var(--fs-lg);margin-bottom:var(--space-3);}
.post-card p{color:var(--color-text-2);font-size:var(--fs-sm);flex:1;}
.post-card .text-link{margin-top:var(--space-3);}
.post-card .eyebrow,.blog-feature .eyebrow{margin-bottom:var(--space-4);}

/* Tonal panels: used where the original article has no photograph */
.tonal{
  position:relative;aspect-ratio:16/7;overflow:hidden;
  display:flex;align-items:flex-end;padding:var(--space-5) var(--space-6);
  background:var(--tonal-bg,var(--color-surface-2));
}
.tonal .tonal-num{
  font-family:var(--font-serif);font-style:italic;font-weight:300;font-size:clamp(4rem,3rem + 4vw,6.5rem);line-height:.8;
  color:var(--tonal-fg,var(--color-brand));opacity:.9;
}
.tonal::before{
  content:"";position:absolute;width:62%;aspect-ratio:1;border-radius:50%;right:-12%;top:-30%;
  border:1.5px solid var(--tonal-ring,var(--palette-light-purple));
}
.tonal::after{
  content:"";position:absolute;width:30%;aspect-ratio:1;border-radius:50%;right:14%;top:20%;
  background:var(--tonal-dot,rgba(255,147,41,.22));
}
.tonal--1{--tonal-bg:var(--palette-soft-lavender);--tonal-fg:var(--palette-deep-purple);}
.tonal--2{--tonal-bg:var(--palette-deep-purple);--tonal-fg:var(--palette-light-purple);--tonal-ring:rgba(207,174,255,.45);}
.tonal--3{--tonal-bg:#F7E6D6;--tonal-fg:var(--palette-deep-purple);--tonal-ring:rgba(65,20,95,.25);--tonal-dot:rgba(129,46,251,.16);}
.tonal--4{--tonal-bg:var(--palette-light-purple);--tonal-fg:var(--palette-deep-purple);--tonal-ring:rgba(65,20,95,.3);}
[data-theme="dark"] .tonal--1{--tonal-bg:var(--derived-plum-raised);--tonal-fg:var(--palette-soft-lavender);--tonal-ring:rgba(207,174,255,.35);}
[data-theme="dark"] .tonal--3{--tonal-bg:#3A2238;--tonal-fg:#F7E6D6;--tonal-ring:rgba(255,147,41,.35);}
[data-theme="dark"] .tonal--4{--tonal-bg:#3B2160;--tonal-fg:var(--palette-soft-lavender);--tonal-ring:rgba(207,174,255,.35);}

/* --- Article --- */
.article-head{padding-block:clamp(2rem,1.5rem + 2vw,3.5rem) var(--space-7);}
.back-link{display:inline-flex;align-items:center;gap:.5em;font-size:var(--fs-sm);font-weight:650;text-decoration:none;margin-bottom:var(--space-6);}
.back-link .arrow{transition:transform var(--dur-base) var(--ease);}
.back-link:hover .arrow{transform:translateX(-3px);}
.article-head h1{font-size:var(--fs-2xl);max-width:22ch;}
.article-meta{font-size:var(--fs-sm);color:var(--color-text-2);display:flex;gap:.6em;align-items:center;}
.article-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--color-muted-deco);}
.article-hero{margin-bottom:var(--space-8);}
.article-hero .photo{aspect-ratio:21/9;}
.article-hero .tonal{aspect-ratio:21/7;border-radius:var(--radius-lg);}
@media (max-width:640px){.article-hero .photo{aspect-ratio:4/3;}.article-hero .tonal{aspect-ratio:16/9;}}
.article-body{max-width:70ch;margin-inline:auto;}
.article-body > p,.article-body li{color:var(--color-text-2);font-size:1.0625rem;line-height:1.8;}
.article-body .lead{font-family:var(--font-serif);font-size:var(--fs-lg);line-height:1.5;color:var(--color-text);margin-bottom:var(--space-6);}
.article-body h2{font-size:var(--fs-lg);margin:var(--space-8) 0 var(--space-4);}
.article-body ul{margin:0 0 1.2em;padding-left:1.2em;}
.article-body li{margin-bottom:.4em;}
.article-body li::marker{color:var(--color-secondary-accent);}
.article-cta{
  margin-top:var(--space-8);padding:clamp(1.75rem,1.25rem + 2vw,2.75rem);border-radius:var(--radius-lg);
}
.article-cta h2{font-size:var(--fs-lg);margin:0 0 var(--space-3);}
.article-cta p{margin-bottom:var(--space-5);}
.article-tags{margin-top:var(--space-6);}
.article-next{
  display:grid;gap:var(--space-2);margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border);
}
.article-next a{text-decoration:none;font-family:var(--font-serif);font-size:var(--fs-lg);color:var(--color-brand);display:inline-flex;gap:.5em;align-items:baseline;}
.article-next a:hover{color:var(--color-link);}
.article-next .label{font-size:var(--fs-xs);font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-2);}

/* --- Legal --- */
.legal-layout{display:grid;gap:var(--space-7);}
@media (min-width:980px){.legal-layout{grid-template-columns:240px 1fr;gap:var(--space-10);}}
.legal-toc{align-self:start;}
@media (min-width:980px){.legal-toc{position:sticky;top:calc(var(--header-h) + 24px);}}
.legal-toc .toc-list{margin:0;}
.legal-updated{display:inline-block;background:var(--color-surface-2);color:var(--color-brand);font-size:var(--fs-xs);font-weight:650;padding:.4em 1em;border-radius:var(--radius-pill);margin-bottom:var(--space-6);}
.legal-body{max-width:70ch;}
.legal-body h2{font-size:var(--fs-lg);margin:var(--space-8) 0 var(--space-3);scroll-margin-top:calc(var(--header-h) + 20px);}
.legal-body h2:first-of-type{margin-top:0;}
.legal-body p,.legal-body li{color:var(--color-text-2);line-height:1.75;}
.legal-body strong{color:var(--color-text);}
.legal-body li{margin-bottom:.5em;}
.contact-box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);}
.contact-box p{margin:0;color:var(--color-text);line-height:1.8;}

/* 8. MOTION ---------------------------------------------------------------- */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease);transition-delay:calc(var(--i,0) * 80ms);}
.js .reveal.is-in{opacity:1;transform:none;}
.js .reveal-img .photo img{transform:scale(1.04);transition:transform 1.2s var(--ease);}
.js .reveal-img.is-in .photo img{transform:none;}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important;scroll-behavior:auto!important;}
  .js .reveal{opacity:1;transform:none;}
  .js .reveal-img .photo img{transform:none;}
}

/* 9. UTILITIES ------------------------------------------------------------- */
.mt-0{margin-top:0;}
.mb-0{margin-bottom:0;}
.mt-6{margin-top:var(--space-6);}
.stack > * + *{margin-top:var(--space-5);}
.center{text-align:center;}

/* Print */
@media print{
  .site-header,.sticky-cta,.site-footer,.theme-toggle,.btn{display:none!important;}
  .page{display:block!important;}
  body{background:#fff;color:#000;padding:0;}
}

/* CTA panel decoration stays behind content */
.cta-panel > *{position:relative;z-index:1;}
.sticky-cta.is-hidden{visibility:hidden;transition:transform var(--dur-base) var(--ease),visibility 0s linear var(--dur-base);}
/* Headings receive focus programmatically after navigation; no ring needed on non-interactive text */
h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus,section[tabindex="-1"]:focus,article[tabindex="-1"]:focus,main:focus{outline:none;}


/* ---------- Mission: specialties ---------- */
.eyebrow--center{justify-content:center;}
.specialties-block{margin-top:var(--space-7);padding-top:var(--space-6);border-top:1px solid rgba(228,209,255,.22);}
.specialties-title{font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:650;letter-spacing:.14em;text-transform:uppercase;margin:0 0 var(--space-5);}
.band .specialties-title{color:var(--color-band-accent);}
.specialties{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;}
.specialties li{
  padding:.55em 1.1em;border-radius:var(--radius-pill);font-size:var(--fs-sm);font-weight:600;line-height:1.3;
  background:var(--pill-bg);color:var(--pill-text);text-align:center;
}
.band .specialties li{background:rgba(207,173,243,.16);color:var(--color-band-text);border:1px solid rgba(207,173,243,.35);}
.specialties-more{margin:var(--space-4) 0 0;font-family:var(--font-serif);font-style:italic;font-size:var(--fs-md);text-align:center!important;}
.specialties-block--left{border-top-color:var(--color-border);margin-bottom:var(--space-2);}
.specialties-block--left .specialties-title{color:var(--color-brand);}
.specialties-block--left .specialties{justify-content:flex-start;}
.specialties-block--left .specialties-more{text-align:left!important;color:var(--color-text-2);}

/* ---------- Justified text (all running copy) ---------- */
p,
.article-body li,
.legal-body li,
.principles li,
blockquote p,
figcaption{
  text-align:justify;
  text-justify:inter-word;
  -webkit-hyphens:auto;hyphens:auto;
}
/* Centered compositions keep their centered final line */
.statement p{text-align:justify;text-align-last:center;}
/* Interface text stays naturally aligned */
.eyebrow,.toc-title,.field-error,.form-note,.article-meta,.article-next,.footer-tag,.footer-contact,.footer-bottom,.legal-updated,.step-label{
  text-align:left;-webkit-hyphens:manual;hyphens:manual;
}
h1,h2,h3,h4,.btn,label{-webkit-hyphens:manual;hyphens:manual;}
/* Larger display text: justified without hyphenation */
.statement-text,.approach-statement,.article-body .lead,.pull-quote p,.lede{-webkit-hyphens:manual;hyphens:manual;}
/* Logo sizing: large enough for the tagline to stay legible */
:root{--header-h:84px;}
.brand-logo{height:64px;}
.site-header.is-scrolled .brand-logo{height:54px;}
@media (min-width:980px){:root{--header-h:96px;}.brand-logo{height:80px;}.site-header.is-scrolled .brand-logo{height:62px;}.site-header.is-scrolled .nav-row{min-height:72px;}}
/* On narrow screens, allow hyphenation in larger text so justified lines don't open wide gaps */
@media (max-width:899px){
  .statement-text,.approach-statement,.article-body .lead,.pull-quote p,.lede{-webkit-hyphens:auto;hyphens:auto;}
}

/* Professional programs (TIP Model, Wraparound) */
.program-grid{display:grid;gap:var(--space-4);margin-top:var(--space-5);}
@media (min-width:760px){.program-grid{grid-template-columns:1fr 1fr;}}
.program{background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);}
.program h3{font-size:var(--fs-md);margin:0 0 var(--space-3);}
.program ul{margin:0;padding-left:1.1em;}
.program li{color:var(--color-text-2);font-size:var(--fs-sm);margin-bottom:.4em;text-align:justify;-webkit-hyphens:auto;hyphens:auto;}
.program li::marker{color:var(--color-secondary-accent);}
.page-hero .specialties-block{margin-top:var(--space-6);}
.page-hero .specialties li{font-size:var(--fs-xs);}
@media (min-width:760px){.audience{grid-template-columns:repeat(3,1fr);}}

/* Horizontal logo (revision 4) */
.brand-logo{height:46px;}
.site-header.is-scrolled .brand-logo{height:40px;}
@media (min-width:980px){.brand-logo{height:56px;}.site-header.is-scrolled .brand-logo{height:46px;}}
:root{--header-h:76px;}
@media (min-width:980px){:root{--header-h:88px;}}
.footer-brand img{height:72px;width:auto;}
@media (max-width:420px){.brand-logo{height:40px;}}
.brand-logo{height:50px;}
@media (min-width:980px){.brand-logo{height:66px;}.site-header.is-scrolled .brand-logo{height:54px;}}
@media (max-width:420px){.brand-logo{height:44px;}}

/* ---------- Blog spacing (revision 5) ---------- */
/* Topic tags: the general article list rule was removing their margin and adding a bullet indent */
.article-body ul.article-tags{margin:var(--space-7) 0 0;padding:0;gap:.6rem;}
.article-body ul.article-tags li{margin:0;color:var(--pill-text);font-size:var(--fs-xs);line-height:1.3;text-align:left;}
.article-body .accordion{margin-bottom:var(--space-8);}
.article-cta{margin-top:var(--space-9);}
.article-next{margin-top:var(--space-8);padding-top:var(--space-7);}
.back-link{display:flex;width:max-content;margin-bottom:var(--space-7);}
.article-head .eyebrow{margin-bottom:var(--space-4);}
.article-head h1{margin-bottom:var(--space-5);}
@media (max-width:640px){
  .article-body .lead{font-size:1.25rem;line-height:1.55;}
  .article-cta{padding:var(--space-6) var(--space-5);}
  .article-hero{margin-bottom:var(--space-7);}
}
/* Blog index: more air between cards and inside them */
.post-grid{gap:var(--space-6);}
.post-card .body{padding:var(--space-6) var(--space-6) var(--space-7);}
.post-card h2{margin-bottom:var(--space-4);}
.post-card p{margin-bottom:var(--space-5);}
.blog-feature{margin-bottom:var(--space-8);}
.blog-feature .body p{margin-bottom:var(--space-5);}
@media (min-width:720px){.post-grid{gap:var(--space-7);}}
/* Eyebrow dash stays on the first line when a label wraps */
.eyebrow{align-items:flex-start;}
.eyebrow::before{margin-top:.6em;}
.eyebrow--center{align-items:center;}
.eyebrow--center::before{margin-top:0;}
.blog-feature .body{padding:var(--space-6) var(--space-6) var(--space-7);}
@media (min-width:900px){.blog-feature .body{padding:var(--space-8);}}

/* ---------- Revision 6: photography ---------- */
.post-card .post-photo{border-radius:0;aspect-ratio:16/10;}
.post-card .post-photo img{transition:transform .8s var(--ease);}
.post-card:hover .post-photo img{transform:scale(1.03);}
/* Hero: frame shows both the therapist and the client */
.hero-figure .photo img{object-position:50% 50%;}
@media (min-width:900px){.hero-figure .photo{aspect-ratio:1/1;}.hero-figure .photo img{object-position:56% 50%;}}

/* ---------- Revision 7: hero photo and credential avatar ---------- */
.credential-card img{width:60px;height:60px;object-position:50% 35%;}
/* New square hero photo: square on desktop; on mobile keep both people in a 4:3 crop */
.hero-figure .photo img{object-position:60% 45%;}
@media (min-width:900px){.hero-figure .photo{aspect-ratio:1/1;}.hero-figure .photo img{object-position:50% 50%;}}

/* ---------- Revision 8: About portrait ---------- */
/* Near-square photo; keep her face and hair centered in the frame */
.about-hero .photo img{object-position:50% 40%;}

/* ---------- Revision 10: Services header photo (square) ---------- */
.page-hero-grid .services-hero-photo{aspect-ratio:4/3;}
.services-hero-photo img{object-position:50% 45%;}
@media (min-width:900px){.page-hero-grid .services-hero-photo{aspect-ratio:1/1;align-self:center;}}


/* ---------- Revision 11: smooth theme switching ---------- */
/* View Transitions: the old and new page cross-fade as one image */
::view-transition-old(root),::view-transition-new(root){animation-duration:.45s;animation-timing-function:cubic-bezier(.4,0,.2,1);}
.theme-vt *,.theme-vt *::before,.theme-vt *::after{transition:none!important;}
/* Fallback for browsers without View Transitions: a veil fades over the page while the theme changes */
.theme-veil{position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:0;transition:opacity .22s cubic-bezier(.4,0,.2,1);}
.theme-veil.is-on{opacity:1;}
@media (prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none;}}

/* ---------- Revision 12: hero photo frames (shadow and gentle float) ---------- */
:root{
  --frame-shadow:0 2px 6px rgba(47,13,80,.08),0 18px 36px -14px rgba(47,13,80,.30),0 40px 70px -40px rgba(47,13,80,.35);
  --frame-shadow-hover:0 3px 8px rgba(47,13,80,.10),0 24px 46px -14px rgba(47,13,80,.36),0 52px 84px -40px rgba(47,13,80,.40);
}
[data-theme="dark"]{
  --frame-shadow:0 2px 6px rgba(0,0,0,.35),0 18px 38px -14px rgba(0,0,0,.65),0 40px 70px -40px rgba(0,0,0,.7);
  --frame-shadow-hover:0 3px 8px rgba(0,0,0,.4),0 24px 46px -14px rgba(0,0,0,.72),0 52px 84px -40px rgba(0,0,0,.75);
}
.hero-figure .photo,
.about-hero .photo,
.services-hero-photo,
.article-hero .photo{
  box-shadow:var(--frame-shadow);
  transition:box-shadow .5s var(--ease);
  animation:frameFloat 7s ease-in-out infinite;
  will-change:translate;
}
/* A slightly different rhythm per page so the motion never feels mechanical */
.about-hero .photo{animation-duration:8s;animation-delay:-2s;}
.services-hero-photo{animation-duration:7.5s;animation-delay:-1s;}
.article-hero .photo{animation-duration:9s;animation-name:frameFloatSoft;}
.hero-figure .photo:hover,
.about-hero .photo:hover,
.services-hero-photo:hover,
.article-hero .photo:hover{box-shadow:var(--frame-shadow-hover);}
/* `translate` composes with the reveal transform, so entrance and float never fight */
@keyframes frameFloat{0%,100%{translate:0 0;}50%{translate:0 -7px;}}
@keyframes frameFloatSoft{0%,100%{translate:0 0;}50%{translate:0 -4px;}}
@media (prefers-reduced-motion:reduce){
  .hero-figure .photo,.about-hero .photo,.services-hero-photo,.article-hero .photo{animation:none;}
}
@media print{
  .hero-figure .photo,.about-hero .photo,.services-hero-photo,.article-hero .photo{animation:none;box-shadow:none;}
}

/* ---------- Revision 13: Services header photo spans the full text block ---------- */
@media (min-width:900px){
  #page-services .page-hero-grid{grid-template-columns:1fr 1fr;align-items:stretch;}
  .page-hero-grid .services-hero-photo{aspect-ratio:auto;height:100%;min-height:420px;align-self:stretch;}
  .services-hero-photo img{object-position:50% 40%;}
  #page-services .page-hero-grid > div:first-child .specialties{margin-bottom:0;}
}
@media (min-width:900px){
  /* the image fills the frame without setting its height, so the text block alone decides it */
  .services-hero-photo{position:relative;}
  .services-hero-photo img{position:absolute;inset:0;width:100%;height:100%;}
  /* remove the inline line-box gap above the eyebrow so text and photo share one top edge */
  #page-services .page-hero .eyebrow{display:flex;width:fit-content;}
}
@media (min-width:900px){#page-services .page-hero .specialties-block{margin-bottom:0;}}

/* ---------- Revision 14: oval-and-leaf logo (taller than the previous logo) ---------- */
.brand-logo{height:52px;}
.site-header.is-scrolled .brand-logo{height:46px;}
@media (min-width:980px){.brand-logo{height:70px;}.site-header.is-scrolled .brand-logo{height:58px;}}
@media (max-width:420px){.brand-logo{height:48px;}}
.footer-brand img{height:96px;}

/* ---------- Revision 15: form submission states ---------- */
.form-status--success{background:color-mix(in srgb,#2E7D4F 12%,var(--color-surface));color:var(--color-text);border:1px solid color-mix(in srgb,#2E7D4F 55%,transparent);}
[data-theme="dark"] .form-status--success{background:color-mix(in srgb,#7FD3A1 14%,var(--color-surface));border-color:color-mix(in srgb,#7FD3A1 50%,transparent);}
.btn[disabled]{opacity:.7;pointer-events:none;}

/* Revision 17: form error reference line */
.form-error-ref{font-size:.8125rem;opacity:.8;margin-top:.5rem;text-align:left;word-break:break-word}

/* Revision 19: more breathing room above and below the logo */
:root{--header-h:88px;}
.nav-row{padding-block:var(--space-2);}
.site-header.is-scrolled .nav-row{min-height:72px;}
@media (min-width:980px){
  :root{--header-h:112px;}
  .site-header.is-scrolled .nav-row{min-height:86px;}
}

/* Revision 20: footer disclaimer on two lines, no hyphenation */
.footer-disclaimer{max-width:none;text-align:left;-webkit-hyphens:manual;hyphens:manual;}
.footer-disclaimer span{display:block;}
