/* Beyond Epilepsy — main stylesheet (2026-07 redesign · v1.3 mobile-first refinement)
   Warm-cream editorial canvas + calendar-leaf schedule cards + quiet hive identity,
   rebuilt mobile-first with fluid type/space scales and iOS-grade polish.
   Uses design tokens from tokens.css. WCAG AA minimum (AAA for body text).
   Seizure-safe: no flashing, no animation loops, low-contrast texture only
   inside bounded dark bands, single gentle reveals, all motion reduced-motion aware. */

/* ---------- Fluid scales ---------- */
:root{
  /* type — fluid between ~360px and ~1200px viewports */
  --text-display:clamp(2.5rem,1.55rem + 4.6vw,4.5rem);
  --text-title:clamp(1.8rem,1.42rem + 1.9vw,2.7rem);
  --text-subtitle:clamp(1.25rem,1.12rem + .6vw,1.55rem);
  --text-lead:clamp(1.0625rem,1rem + .35vw,1.25rem);
  --text-body:clamp(1rem,.97rem + .18vw,1.0625rem);
  /* space */
  --space-section:clamp(4rem,2.6rem + 6vw,7rem);
  --space-hero:clamp(3.75rem,2.4rem + 6vw,6.5rem);
  --gutter:clamp(20px,4.5vw,32px);
  --header-h:68px; /* measured by JS at runtime; fallback = 64px bar + 3px ribbon + 1px border (mobile) */
  /* surfaces */
  --radius-card:22px;
  --shadow-soft:0 1px 2px rgba(59,26,107,.04),0 12px 32px -16px rgba(59,26,107,.16);
  --shadow-lift:0 2px 6px rgba(59,26,107,.05),0 24px 48px -20px rgba(59,26,107,.26);
  --ease-out:cubic-bezier(.22,.61,.36,1);
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0ms!important}
}
body{
  margin:0;
  font-family:var(--font-body);
  font-size:var(--text-body);
  line-height:1.65;
  color:var(--color-foreground);
  background:var(--color-page,#FDFAF3);
  overflow-x:clip;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  -webkit-tap-highlight-color:transparent;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--color-primary)}
h1,h2,h3{font-family:var(--font-heading);line-height:1.16;color:var(--color-primary-strong);margin:0 0 .5em;text-wrap:balance}
p{margin:0 0 1em;text-wrap:pretty}
::selection{background:var(--color-primary);color:#fff}
[id]{scroll-margin-top:calc(var(--header-h) + 16px)}

/* NOTE: a quiet honeycomb texture (white, 2-2.5% opacity, static) is baked into the
   two bounded dark bands only (.zoom-band, .site-footer). Keep it OFF light
   sections and never raise its opacity — seizure-safety constraint. */

/* ---------- Accessibility ---------- */
.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}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--color-primary);color:#fff;padding:10px 16px;z-index:1000;border-radius:0 0 8px 0}
.skip-link:focus{left:0}
:focus-visible{outline:3px solid var(--color-ring);outline-offset:2px;border-radius:4px}

/* ---------- Reveal on scroll (added by JS only; gentle single fade, no loops).
   Wrapped in no-preference so reduced-motion users never see hidden content,
   and content is fully visible when JS is off. JS removes both classes after
   the fade completes so component hover transitions return to their own
   timings. The doubled selector wins over single-class component transition
   lists by specificity, not source order. ---------- */
@media (prefers-reduced-motion: no-preference){
  .reveal{opacity:0;transform:translateY(18px)}
  .reveal,.reveal.is-visible{transition:opacity .65s var(--ease-out),transform .65s var(--ease-out),box-shadow .3s var(--ease-out)}
  .reveal.is-visible{opacity:1;transform:none}
}

/* Micro-label floor: short, bold, uppercase, letter-spaced labels (eyebrows,
   badges, footer labels, pills) are exempt from the 16px body-text floor but
   must never drop below .8125rem (13px). The wordmark sub-line
   (.brand-fallback__sub) is a logotype element, exempt like an image logo. */

/* ---------- Layout ---------- */
.container{
  width:100%;max-width:1140px;margin:0 auto;
  padding-left:max(var(--gutter),env(safe-area-inset-left));
  padding-right:max(var(--gutter),env(safe-area-inset-right));
}
.container.narrow{max-width:760px}
.center{text-align:center}
.section{padding:var(--space-section) 0}
.section--muted{background:var(--color-background)}
.section--honey{background:var(--color-honey-tint,#FBF3DF)}
.section--cta{background:var(--color-honey-tint,#FBF3DF)}
.section--mission{padding:clamp(3.25rem,2.2rem + 4.5vw,5.5rem) 0}
.section--purple{background:var(--color-primary-strong);color:#fff}
.section__head{margin-bottom:clamp(2rem,1.4rem + 2.6vw,3.25rem)}
.section__head--row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:clamp(1.75rem,1.3rem + 2vw,2.5rem)}

/* ---------- Typography helpers ---------- */
.eyebrow{font-family:var(--font-body);font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:.8125rem;color:var(--color-primary);margin:0 0 .8em}
.eyebrow--ruled{display:inline-flex;align-items:center;gap:12px}
.eyebrow--ruled::before,.eyebrow--ruled::after{content:"";width:26px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
.title-accent{font-style:italic;padding-inline:.1em;margin-inline:-.1em;color:var(--color-primary);background:linear-gradient(100deg,#8A4BC8 0%,var(--color-primary) 45%,var(--color-primary-strong) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.section__title{font-size:var(--text-title);letter-spacing:-.012em}
.section__title--ruled{padding-bottom:18px;position:relative}
.section__title--ruled::after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:56px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
.section__title--light{color:#fff}
.section__text{font-size:var(--text-lead);line-height:1.6;color:var(--color-body-muted,#554869)}
.section__text--light{color:#ece6f7}
.text-accent{color:var(--color-accent-text)}
.muted-note{color:var(--color-body-muted,#554869)}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:12px 28px;border-radius:999px;
  font-weight:600;font-family:var(--font-body);font-size:1.0625rem;line-height:1.25;
  text-decoration:none;text-align:center;cursor:pointer;border:2px solid transparent;
  transition:background-color .22s var(--ease-out),border-color .22s var(--ease-out),box-shadow .22s var(--ease-out),transform .22s var(--ease-out);
  overflow-wrap:anywhere;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.98)}
.btn-lg{font-size:1.125rem;min-height:54px;padding:14px 34px}
/* color !important guards against Elementor/ElementsKit global link colors overriding button text */
.btn-primary,a.btn-primary{background:var(--color-primary);color:#fff !important;box-shadow:0 8px 20px -8px rgba(107,47,168,.5)}
.btn-primary:hover,a.btn-primary:hover{background:var(--color-primary-strong);color:#fff !important;box-shadow:0 10px 24px -8px rgba(76,29,149,.55)}
.btn-accent,a.btn-accent{background:var(--color-accent);color:var(--primitive-color-purple-900,#3B1A6B) !important;font-weight:700;box-shadow:0 8px 20px -8px rgba(201,154,46,.55)}
.btn-accent:hover,a.btn-accent:hover{background:var(--primitive-color-gold-400,#D9B24E);color:var(--primitive-color-purple-900,#3B1A6B) !important}
.btn-secondary,a.btn-secondary{background:transparent;color:var(--color-primary) !important;border-color:var(--color-primary)}
.btn-secondary:hover,a.btn-secondary:hover{background:#F3ECFB;color:var(--color-primary) !important}
.section--purple .btn-secondary,.section--purple a.btn-secondary{color:#fff !important;border-color:#fff}
.section--purple .btn-secondary:hover{background:rgba(255,255,255,.12);color:#fff !important}
.section--purple :focus-visible{outline-color:var(--color-gold-light,#F0CE7C)}

/* Stacked, thumb-sized buttons on phones */
@media (max-width:540px){
  .hero__actions{flex-direction:column;align-items:stretch;width:100%;max-width:400px;margin-left:auto;margin-right:auto}
  .hero__actions .btn{width:100%}
}

/* ---------- Header / nav ---------- */
.site-header{
  position:sticky;top:0;z-index:100;
  background:rgba(253,250,243,.8);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid var(--color-hairline,#EDE7F8);
  transition:box-shadow .3s var(--ease-out),background-color .3s var(--ease-out);
}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .site-header{background:rgba(253,250,243,.97)}
}
.site-header.is-scrolled{background:rgba(253,250,243,.88);box-shadow:0 8px 24px -16px rgba(59,26,107,.22)}
.site-header::before{content:"";display:block;height:3px;background:linear-gradient(90deg,var(--color-accent) 0%,var(--color-primary) 55%,var(--color-primary-strong) 100%)}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;min-height:64px;gap:16px}
@media (min-width:881px){.site-header__inner{min-height:74px}}
.custom-logo{max-height:48px;width:auto}
@media (min-width:881px){.custom-logo{max-height:52px}}
.brand-fallback{display:flex;align-items:center;gap:10px;min-height:44px;line-height:1;text-decoration:none}
.brand-fallback__mark{width:34px;height:auto;flex:0 0 auto}
.brand-fallback__text{display:flex;flex-direction:column;justify-content:center}
.brand-fallback__name{font-family:var(--font-heading);font-size:1.4rem;font-weight:700;color:var(--color-primary)}
.brand-fallback__sub{font-family:var(--font-body);font-size:.7rem;font-weight:600;letter-spacing:.28em;color:var(--color-primary);margin-top:2px}
@media (min-width:881px){
  .brand-fallback__name{font-size:1.5rem}
}
.brand-fallback__name--light{color:#fff}
.brand-fallback__sub--light{color:var(--color-gold-light,#F0CE7C)}
.site-nav{display:flex;align-items:center;gap:24px}
.menu{display:flex;align-items:center;gap:24px;list-style:none;margin:0;padding:0}
.menu a{text-decoration:none;color:var(--primitive-color-purple-900,#3B1A6B);font-weight:500;padding:10px 4px;border-bottom:2px solid transparent;transition:border-color .22s var(--ease-out),color .22s var(--ease-out)}
.menu a:hover{border-bottom-color:var(--color-accent);color:var(--color-primary)}
.menu .current-menu-item a{border-bottom-color:var(--color-accent);font-weight:600}
.site-nav__donate{padding:10px 22px;min-height:44px}
.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:10px;min-width:44px;min-height:44px;align-items:center;justify-content:center}
.nav-toggle__bar{width:24px;height:2px;border-radius:2px;background:var(--color-primary-strong);transition:transform .25s var(--ease-out),opacity .25s var(--ease-out)}

@media (max-width:880px){
  .nav-toggle{display:flex}
  /* JS-enhanced dropdown sheet — gated on html.js (set inline in <head>) so a
     no-JS visitor gets the static fallback below instead of an unreachable menu.
     :where() keeps specificity at 0,1,0 so .site-nav.is-open still wins. */
  :where(html.js) .site-nav{
    position:fixed;left:0;right:0;top:var(--header-h);bottom:auto;
    max-height:calc(100vh - var(--header-h)); /* fallback for engines without dvh (iOS <15.4) */
    max-height:calc(100dvh - var(--header-h));
    overflow-y:auto;overscroll-behavior:contain;
    /* solid sheet (no glass): translucency under a menu is a legibility risk
       and backdrop-filter fails to composite on some older/low-end devices */
    background:var(--color-page,#FDFAF3);
    border-bottom:1px solid var(--color-hairline,#EDE7F8);
    padding:8px 0 max(12px,env(safe-area-inset-bottom));
    box-shadow:0 24px 48px -24px rgba(59,26,107,.28);
    transform:translateY(-16px);opacity:0;visibility:hidden;
    transition:transform .3s var(--ease-out),opacity .3s var(--ease-out),visibility 0s .3s;
  }
  .site-nav{flex-direction:column;align-items:stretch;gap:0}
  .site-nav.is-open{transform:translateY(0);opacity:1;visibility:visible;transition:transform .3s var(--ease-out),opacity .3s var(--ease-out),visibility 0s 0s}
  /* No-JS fallback: hide the inert hamburger, show the nav as a static
     in-flow list wrapped below the branding row. */
  html:not(.js) .nav-toggle{display:none}
  html:not(.js) .site-header__inner{flex-wrap:wrap}
  html:not(.js) .site-nav{width:100%;padding:4px 0 10px}
  /* Scrim below the open sheet: dims the page, blocks stray taps (a tap on it
     lands on <body> and the outside-click handler closes the menu). Single
     gentle fade-in; reduced-motion zeroes it via the global override. */
  html.menu-open body::after{
    content:"";position:fixed;inset:0;z-index:99;
    background:rgba(59,26,107,.32);pointer-events:auto;
    animation:be-scrim-in .3s var(--ease-out);
  }
  .menu{flex-direction:column;align-items:stretch;gap:0}
  .menu a{display:block;font-size:1.0625rem;padding:15px max(var(--gutter),env(safe-area-inset-left));border-bottom:1px solid var(--color-hairline,#EDE7F8);min-height:52px}
  .menu a:hover,.menu .current-menu-item a{border-bottom-color:var(--color-hairline,#EDE7F8);background:var(--color-background)}
  .site-nav__donate{margin:14px var(--gutter) 6px}
  .nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2){opacity:0}
  .nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}
/* Lock page scroll while the mobile menu sheet is open (class set by JS on <html>) */
html.menu-open{overflow:hidden}
@media (min-width:881px){
  html.menu-open{overflow:auto}
  :root{--header-h:78px} /* 74px bar + 3px ribbon + 1px border (desktop no-JS fallback) */
}
@keyframes be-scrim-in{from{opacity:0}to{opacity:1}}

/* ---------- Hero (front page + subpages) ---------- */
.hero{background:linear-gradient(180deg,var(--color-background),var(--color-page,#FDFAF3));padding:var(--space-hero) 0}
.hero__inner{display:grid;grid-template-columns:1.4fr .9fr;gap:48px;align-items:center}
.hero__title{font-size:var(--text-display);letter-spacing:-.02em;line-height:1.06;margin-bottom:.3em}
.hero__lead{font-size:var(--text-lead);color:var(--color-body-muted,#554869);max-width:46ch}
.hero__actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px}
.center-actions{justify-content:center}
.stat-card{background:var(--color-primary);color:#fff;border-radius:var(--radius-card);padding:40px 32px;text-align:center;box-shadow:0 20px 40px rgba(75,29,149,.18)}
.stat-card__number{display:block;font-family:var(--font-heading);font-size:clamp(2.6rem,2.2rem + 2vw,3.4rem);font-weight:700}
.stat-card__label{display:block;margin-top:8px;color:#ece6f7;font-size:1.02rem}
@media (max-width:760px){.hero__inner{grid-template-columns:1fr;gap:32px}}

.page-hero{
  background:
    radial-gradient(110% 85% at 50% 0%,#F5EEFE 0%,rgba(245,238,254,0) 62%),
    linear-gradient(180deg,var(--color-background) 0%,var(--color-page,#FDFAF3) 100%);
  padding:var(--space-hero) 0 clamp(2.75rem,2rem + 3.4vw,4rem);
}
.page-hero__title{font-size:var(--text-display);letter-spacing:-.02em;line-height:1.06}
.page-hero__intro{font-size:var(--text-lead);line-height:1.6;color:var(--color-body-muted,#554869);max-width:60ch;margin-inline:auto}
/* ---------- Meeting cards ("calendar leaf") ---------- */
/* Deterministic columns for the 4-card schedule (2 series × 2 months):
   1-col phones → 2×2 tablets → 4-across desktop. Explicit counts, not auto-fit,
   so 4 cards can never wrap 3+1 with an orphan row at mid widths. */
.meet-grid{display:grid;grid-template-columns:1fr;gap:clamp(28px,2.2vw + 18px,32px) 26px;max-width:1000px;margin-inline:auto}
@media (min-width:600px){.meet-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1080px){.meet-grid{grid-template-columns:repeat(4,1fr)}}
.meet-card{position:relative;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);padding:clamp(26px,2vw + 18px,32px) clamp(22px,2vw + 14px,28px) 26px;box-shadow:var(--shadow-soft);transition:box-shadow .3s var(--ease-out),transform .3s var(--ease-out)}
.meet-card::before{content:"";position:absolute;top:-1px;left:26px;width:44px;height:4px;border-radius:0 0 4px 4px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
/* Zoom-only (1st Tuesday) cards: purple top tab. Color is a secondary cue only —
   the "Online only" meta line carries the distinction for color-blind users. */
.meet-card--online::before{background:linear-gradient(90deg,var(--color-primary),var(--color-primary-strong))}
/* Whole card opens the Zoom link: visible "Join on Zoom" anchor, stretched over
   the card via ::after (card is position:relative). Static affordance, no motion. */
.meet-card__join{color:var(--color-accent-text);font-weight:700;font-size:.9375rem;text-decoration:none;display:inline-flex;align-items:center;min-height:44px;margin-top:6px}
.meet-card__join::after{content:"";position:absolute;inset:0}
.meet-card:hover .meet-card__join,.meet-card__join:focus-visible{text-decoration:underline}
.meet-card:focus-within{box-shadow:var(--shadow-lift)}
.meet-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-3px)}
.meet-card__date{display:flex;flex-direction:column;padding-bottom:18px;margin-bottom:16px;border-bottom:1px solid var(--color-hairline,#EDE7F8)}
.meet-card__weekday{font-family:var(--font-body);font-weight:700;font-size:.8125rem;letter-spacing:.16em;text-transform:uppercase;color:var(--color-primary-strong)}
.meet-card__day{font-family:var(--font-heading);font-weight:600;font-size:clamp(3.4rem,3rem + 2vw,4.2rem);line-height:1.02;color:var(--color-primary-strong);margin:2px 0;letter-spacing:-.01em}
.meet-card__monthyear{font-family:var(--font-heading);font-size:1.2rem;color:var(--color-primary)}
.meet-card__meta{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.meet-card__meta li{display:flex;align-items:flex-start;gap:10px;color:#46405c;font-size:1rem;font-weight:500}
.meta-icon{flex:0 0 auto;width:19px;height:19px;margin-top:2px;color:var(--color-primary)}
.meet-card--next{background:#FFFBEF;border-color:var(--primitive-color-gold-400,#D9B24E);border-width:2px;padding-top:36px}
/* no gold tab on the featured card — it smudges against the gold border under the badge */
.meet-card--next::before{content:none}
.meet-card__badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:7px;white-space:nowrap;background:var(--color-accent);color:var(--primitive-color-purple-900,#3B1A6B);font-size:.8125rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:7px 15px;border-radius:999px;box-shadow:0 6px 14px -6px rgba(138,100,16,.5)}
.meet-card__badge-dot{width:7px;height:7px;border-radius:50%;background:var(--primitive-color-purple-900,#3B1A6B)}

/* ---------- Zoom band ---------- */
.zoom-band{
  color:#fff;padding:clamp(3rem,2.2rem + 3.4vw,4rem) 0;position:relative;
  background-color:var(--color-primary-strong);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='49' viewBox='0 0 28 49'%3E%3Cpath fill='%23ffffff' fill-opacity='0.025' d='M13.99 9.25l13 7.5v15l-13 7.5L1 31.75v-15l12.99-7.5zM3 17.9v12.7l10.99 6.34 11-6.35V17.9l-11-6.34L3 17.9zM0 15l12.98-7.5V0h-2v6.35L0 12.69v2.3zm0 18.5L12.98 41v8h-2v-6.85L0 35.81v-2.3zM15 0v7.5L27.99 15H28v-2.31h-.01L17 6.35V0h-2zm0 49v-8l12.99-7.5H28v2.31h-.01L17 42.15V49h-2z'/%3E%3C/svg%3E"),linear-gradient(135deg,var(--color-primary-strong) 0%,var(--primitive-color-purple-900,#3B1A6B) 100%);
  background-size:112px 196px,auto;
}
.zoom-band__inner{display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.zoom-band__icon{flex:0 0 auto;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.12);color:var(--color-gold-light,#F0CE7C)}
.zoom-band__icon svg{width:28px;height:28px}
.zoom-band__text{flex:1 1 320px}
.zoom-band__title{font-size:var(--text-subtitle);color:#fff;margin:0 0 .25em}
.zoom-band__accent{color:var(--color-gold-light,#F0CE7C)}
.zoom-band__note{margin:0;color:#D9CDF3;font-size:1rem}
.zoom-band__btn{flex:0 0 auto}
.zoom-band :focus-visible{outline-color:var(--color-gold-light,#F0CE7C)}
@media (max-width:700px){
  .zoom-band__inner{flex-direction:column;align-items:center;text-align:center;gap:20px}
  .zoom-band__icon{width:64px;height:64px}
  .zoom-band__icon svg{width:32px;height:32px}
  .zoom-band__btn{width:100%;max-width:420px}
}

/* ---------- Where we meet ---------- */
.visit{display:grid;grid-template-columns:1fr 1.15fr;gap:32px;align-items:stretch}
.visit__card{background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:clamp(26px,2.4vw + 16px,34px) clamp(22px,2.4vw + 14px,32px)}
.visit__addr{font-size:1.05rem;color:#46405c}
.visit__addr strong{color:var(--color-primary-strong);font-size:1.1rem}
.visit__map{display:flex;flex-direction:column}
.callout{background:var(--color-honey-tint,#FBF3DF);border-left:3px solid var(--color-accent);border-radius:0 12px 12px 0;padding:18px 20px;margin-top:6px}
.callout p{margin:0;color:#4a4458}
.map-embed{flex:1 1 auto;min-height:300px;border-radius:var(--radius-card);overflow:hidden;border:1px solid var(--color-hairline,#EDE7F8);box-shadow:var(--shadow-soft)}
.map-embed iframe{width:100%;height:100%;min-height:300px;border:0;display:block}
.map-embed__note{margin:12px 0 0;text-align:right}
.map-link{color:var(--color-accent-text);font-weight:600;text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
.map-link:hover{text-decoration:underline}
@media (max-width:820px){
  .visit{grid-template-columns:1fr}
  .map-embed,.map-embed iframe{min-height:320px}
  .map-embed__note{text-align:center}
}

/* ---------- Cards (generic) ---------- */
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:24px}
.card{background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);padding:clamp(24px,2vw + 16px,30px) clamp(22px,2vw + 14px,28px);box-shadow:var(--shadow-soft);transition:box-shadow .3s var(--ease-out),transform .3s var(--ease-out)}
.card:hover{box-shadow:var(--shadow-lift);transform:translateY(-3px)}
.card__title{font-size:1.25rem;margin-bottom:.4em}
.card__text{color:var(--color-body-muted,#554869);margin-bottom:1em}
.card__link{font-weight:600;text-decoration:none;color:var(--color-primary);display:inline-flex;align-items:center;gap:4px;min-height:44px}
.card__link:hover{text-decoration:underline}

/* ---------- Community (full-homepage backup) ---------- */
.community{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center}
.community__list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.community__list li{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:14px 18px;font-weight:500}
@media (max-width:760px){.community{grid-template-columns:1fr}}

/* ---------- Events ---------- */
.event-list{list-style:none;margin:0;padding:0;display:grid;gap:18px}
.event-item{display:grid;grid-template-columns:280px 1fr;gap:20px;align-items:center;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:24px 28px}
.event-item--full{align-items:start}
.event-item__date{font-family:var(--font-heading);font-weight:600;font-size:1.05rem;color:var(--color-primary-strong)}
.event-item__title{font-size:1.25rem;margin:0 0 .3em}
.event-item__meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 .5em}
.event-item__loc{color:var(--color-body-muted,#554869)}
.event-item__excerpt{color:#46405c;margin:.3em 0 .6em}
.pill{display:inline-block;background:var(--color-background);color:var(--color-primary-strong);border:1px solid var(--color-border);border-radius:999px;padding:4px 14px;font-size:.8125rem;font-weight:600}
@media (max-width:620px){.event-item{grid-template-columns:1fr;gap:8px;padding:22px 20px}}

/* ---------- Team ---------- */
.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:24px;margin-top:8px}
.team-card{position:relative;text-align:center;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:32px 18px;transition:box-shadow .3s var(--ease-out),transform .3s var(--ease-out)}
.team-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-3px)}
.team-card::before{content:"";position:absolute;top:-1px;left:50%;transform:translateX(-50%);width:44px;height:4px;border-radius:0 0 4px 4px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
.team-card__avatar{width:84px;height:84px;margin:0 auto 14px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-strong));color:#fff;display:grid;place-items:center;font-family:var(--font-heading);font-size:1.6rem;font-weight:700;box-shadow:inset 0 0 0 3px rgba(255,255,255,.22),0 10px 22px -10px rgba(76,29,149,.45)}
.team-card__name{font-size:1.18rem;margin:0 0 .2em}
.team-card__role{color:var(--color-primary);font-weight:600;margin:0}
.team-grid--duo{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),250px));justify-content:center}
.team-more{margin-top:32px}
.team-group--follow{margin-top:clamp(3.25rem,2.4rem + 2.8vw,5rem)}
.team-grid + .muted-note,.team-group + .muted-note{margin-top:40px}
@media (max-width:480px){
  .team-grid{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:16px}
  .team-card{padding:26px 14px}
  .team-card__avatar{width:72px;height:72px;font-size:1.4rem}
}

/* ---------- Schedule (legacy cards, kept for compatibility) ---------- */
.schedule-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:24px}
.schedule-card{position:relative;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:28px 26px}
.schedule-card::before{content:"";position:absolute;top:-1px;left:26px;width:44px;height:4px;border-radius:0 0 4px 4px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
.schedule-card__title{font-size:1.15rem;margin-bottom:.6em}
.schedule-card__meta{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px}
.schedule-card__meta dt{font-weight:700;color:var(--color-primary-strong)}
.schedule-card__meta dd{margin:0;color:#46405c}

/* ---------- Pagination (blog index) ---------- */
.pagination{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:40px;font-weight:600}
.pagination a,.pagination span{padding:12px 18px;border-radius:999px;min-height:44px;display:inline-flex;align-items:center}
.pagination a{text-decoration:none;border:1px solid var(--color-hairline,#EDE7F8);background:var(--color-surface)}
.pagination a:hover{border-color:var(--color-primary)}
.pagination .current{background:var(--color-primary);color:#fff}

/* ---------- Prose ---------- */
.prose h2{margin-top:1.4em}
.prose ul,.prose ol{padding-left:1.3em}
.prose a{color:var(--color-primary);text-decoration:underline}

/* ---------- Mission pillars ---------- */
.pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:24px;margin-top:clamp(1.75rem,1.2rem + 2.4vw,2.5rem)}
.pillar{position:relative;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:clamp(26px,2vw + 18px,32px) clamp(22px,2vw + 16px,28px);transition:box-shadow .3s var(--ease-out),transform .3s var(--ease-out)}
.pillar:hover{box-shadow:var(--shadow-lift);transform:translateY(-3px)}
.pillar::before{content:"";position:absolute;top:-1px;left:26px;width:44px;height:4px;border-radius:0 0 4px 4px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
.pillar__num{font-family:var(--font-heading);font-size:2.1rem;line-height:1;font-weight:700;color:var(--color-accent-text)}
.pillar__title{font-size:1.35rem;margin:.3em 0 .4em}
.pillar__text{color:var(--color-body-muted,#554869);margin:0}

/* ---------- Directions (legacy, used on Contact page) ---------- */
.directions{margin-top:32px;background:var(--color-honey-tint,#FBF3DF);border:0;border-left:3px solid var(--color-accent);border-radius:0 12px 12px 0;padding:22px 26px}
.directions__title{font-size:1.15rem;margin-bottom:.4em}
.directions p{margin:0 0 .5em;color:#4a4458}
.directions p:last-child{margin-bottom:0}

/* ---------- Contact page ---------- */
.contact-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:start}
.contact-list--lg{gap:14px;margin-bottom:24px}
.contact-list--lg li{display:flex;flex-direction:column;gap:2px;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:14px;box-shadow:var(--shadow-soft);padding:16px 20px}
.contact-list--lg a{overflow-wrap:anywhere;display:inline-flex;align-items:center;min-height:44px}
.contact-list--lg strong{font-size:.8125rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-primary)}
.contact-form{display:grid;gap:18px;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:clamp(22px,2.6vw + 14px,32px)}
.field{display:grid;gap:6px;margin:0}
.field label{font-weight:600;color:var(--color-primary-strong)}
.field input,.field textarea{font-family:var(--font-body);font-size:1rem;padding:13px 15px;border:1px solid var(--color-secondary);border-radius:14px;background:#fff;color:var(--color-foreground);width:100%}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(107,47,168,.18)}
.field--hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.form-status{border-radius:14px;padding:14px 18px;margin-bottom:18px;font-weight:500}
.form-status--ok{background:#E8F6EC;border:1px solid #9BD5AB;color:#1D6B34}
.form-status--err{background:#FDEAEA;border:1px solid #F0B3B3;color:#A01C1C}
.contact-form .btn{justify-self:start}
@media (max-width:820px){.contact-layout{grid-template-columns:1fr;gap:36px}}
@media (max-width:540px){.contact-form .btn{width:100%}}

/* ---------- Video embed (YouTube) ---------- */
.video-embed{border-radius:var(--radius-card);overflow:hidden;border:1px solid var(--color-hairline,#EDE7F8);box-shadow:var(--shadow-soft);aspect-ratio:16/9}
.video-embed iframe{width:100%;height:100%;border:0;display:block}

/* ---------- 404 ---------- */
.error-404{padding:var(--space-hero) 0}
.error-404__bee{margin:0 auto 8px;width:fit-content;animation:be-float 5s ease-in-out infinite}
@keyframes be-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@media (prefers-reduced-motion: reduce){.error-404__bee{animation:none}}
.error-404__links{margin-top:36px}
.error-404__list{list-style:none;display:flex;flex-wrap:wrap;gap:4px 20px;justify-content:center;padding:0;margin:6px 0 0}
.error-404__list a{font-weight:600;text-decoration:none;color:var(--color-primary);display:inline-flex;align-items:center;min-height:44px}
.error-404__list a:hover{text-decoration:underline}

/* ---------- Footer (colophon) ---------- */
.site-footer{background:var(--primitive-color-purple-900,#3B1A6B);color:#EDE6F9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='49' viewBox='0 0 28 49'%3E%3Cpath fill='%23ffffff' fill-opacity='0.02' d='M13.99 9.25l13 7.5v15l-13 7.5L1 31.75v-15l12.99-7.5zM3 17.9v12.7l10.99 6.34 11-6.35V17.9l-11-6.34L3 17.9zM0 15l12.98-7.5V0h-2v6.35L0 12.69v2.3zm0 18.5L12.98 41v8h-2v-6.85L0 35.81v-2.3zM15 0v7.5L27.99 15H28v-2.31h-.01L17 6.35V0h-2zm0 49v-8l12.99-7.5H28v2.31h-.01L17 42.15V49h-2z'/%3E%3C/svg%3E");background-size:112px 196px}
.site-footer a{color:#fff}
.site-footer a:focus-visible{outline-color:var(--color-gold-light,#F0CE7C)}
.site-footer__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:40px;padding-top:clamp(3rem,2.2rem + 3.4vw,3.75rem);padding-bottom:clamp(2.75rem,2rem + 3vw,3.25rem)}
.site-footer__brand{display:flex;flex-direction:column;align-items:flex-start}
.site-footer__tagline{font-family:var(--font-heading);font-style:italic;font-size:1.1rem;color:#D9C7F5;margin:16px 0 18px}
.site-footer__bee{display:inline-block;color:var(--primitive-color-gold-400,#D9B24E);opacity:.9}
.footer-widget__title{color:#fff;font-size:1.05rem;margin-bottom:16px}
.menu--footer{flex-direction:column;align-items:flex-start;gap:4px}
.menu--footer a{border:0;padding:8px 0;color:#EDE6F9;display:inline-flex;align-items:center;min-height:44px}
.menu--footer a:hover{color:#fff;text-decoration:underline}
.contact-list{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:14px}
.contact-list li{display:grid;gap:3px}
.contact-list a{overflow-wrap:anywhere;display:inline-flex;align-items:center;min-height:44px}
.flabel{display:block;font-size:.8125rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--primitive-color-gold-400,#D9B24E)}
.social-links{display:flex;gap:20px}
.social-links a{display:inline-flex;align-items:center;min-height:44px}
.site-footer__bottom{border-top:1px solid rgba(255,255,255,.14);font-size:1rem;color:#CBBCE8}
.site-footer__bottom .container{padding-top:18px;padding-bottom:max(18px,env(safe-area-inset-bottom))}
.footer-stat{font-family:var(--font-heading);font-style:italic;color:var(--color-gold-light,#F0CE7C)}
@media (max-width:760px){.site-footer__grid{grid-template-columns:1fr;gap:36px}}

/* === Information: meetings + slide viewer === */
.meeting{position:relative;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:clamp(20px,3vw + 10px,32px);margin:0 0 32px}
.meeting::before{content:"";position:absolute;top:-1px;left:26px;width:44px;height:4px;border-radius:0 0 4px 4px;background:linear-gradient(90deg,var(--color-accent),var(--color-gold-light,#F0CE7C))}
.meeting:last-child{margin-bottom:0}
.meeting__head{margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--color-hairline,#EDE7F8)}
.meeting__date{font-family:var(--font-heading);color:var(--color-primary-strong);font-size:clamp(1.45rem,1.3rem + .8vw,1.7rem);margin:.1em 0 .15em}
.meeting__topic{color:var(--color-body-muted,#554869);margin:0;max-width:60ch}

.deck{margin:0 0 22px;outline:none}
.deck:last-child{margin-bottom:0}
.deck:focus-visible{box-shadow:0 0 0 3px var(--color-ring);border-radius:var(--primitive-radius-md)}
.deck__bar{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap}
.deck__bar--top{margin-bottom:12px}
.deck__bar--bottom{margin-top:12px;justify-content:center}
.deck__title{font-family:var(--font-heading);color:var(--color-foreground);font-size:1.15rem;margin:0}
.deck__by{color:var(--color-body-muted,#554869);font-size:1rem;margin:.2em 0 0}
.deck__download{color:var(--color-accent-text);font-weight:600;text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;min-height:44px}
.deck__download:hover{text-decoration:underline}
.deck__cover{display:block;border-radius:var(--primitive-radius-md);overflow:hidden;border:1px solid var(--color-hairline,#EDE7F8);box-shadow:var(--shadow-soft);transition:box-shadow .3s var(--ease-out)}
.deck__cover:hover{box-shadow:var(--shadow-lift)}
.deck__cover-img{width:100%;display:block}

.deck__stage{position:relative;display:flex;align-items:center;gap:10px}
.deck__frame{position:relative;flex:1 1 auto;aspect-ratio:16/9;background:var(--primitive-color-purple-900);border-radius:var(--primitive-radius-md);overflow:hidden;border:1px solid var(--color-border);cursor:pointer}
.deck__img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;visibility:hidden}
.deck__img.is-active{opacity:1;visibility:visible}
.deck__nav{flex:0 0 auto;width:46px;height:46px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-primary);font-size:1.7rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.deck__nav:hover{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}
.deck__nav:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-ring)}
.deck__counter{font-weight:600;color:var(--color-foreground);opacity:.8;font-variant-numeric:tabular-nums}
.deck__dots{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;margin-top:8px}
/* 44px hit area; the visible 12px dot is drawn by ::before */
.deck__dot{width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.deck__dot::before{content:"";width:12px;height:12px;border-radius:50%;border:1px solid var(--color-secondary);background:transparent}
.deck__dot:hover::before{background:var(--color-secondary)}
.deck__dot.is-active::before{background:var(--color-primary);border-color:var(--color-primary)}
.deck__dot:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-ring)}

.meeting__video{margin-top:18px}

@media (max-width:600px){
  .deck__nav{width:44px;height:44px;font-size:1.5rem}
}

/* ---------- Nav dropdown (Information -> Patient Information / Meeting Archive) ---------- */
.menu-drop{position:relative}
.menu-drop__toggle{font:inherit;font-weight:500;color:var(--primitive-color-purple-900,#3B1A6B);background:none;border:0;border-bottom:2px solid transparent;padding:10px 4px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:border-color .22s var(--ease-out),color .22s var(--ease-out)}
.menu-drop__toggle:hover,.menu-drop:focus-within .menu-drop__toggle{border-bottom-color:var(--color-accent);color:var(--color-primary)}
.menu-drop--current .menu-drop__toggle{border-bottom-color:var(--color-accent);font-weight:600}
.menu-drop__caret{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.menu-drop__label{display:none}
.sub-menu{list-style:none;margin:0;padding:0}
@media (min-width:881px){
  .sub-menu{display:none;position:absolute;top:100%;left:50%;transform:translateX(-50%);min-width:230px;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:14px;box-shadow:var(--shadow-soft);padding:8px;z-index:60}
  .menu-drop:hover .sub-menu,.menu-drop:focus-within .sub-menu,.menu-drop.is-open .sub-menu{display:block}
  .sub-menu a{display:block;padding:11px 14px;border-bottom:0;border-radius:9px;white-space:nowrap}
  .sub-menu a:hover{background:var(--color-background);border-bottom:0}
  .sub-menu .current-menu-item a{background:var(--color-background);font-weight:600;border-bottom:0}
}
@media (max-width:880px){
  .menu-drop__toggle{display:none}
  .menu-drop__label{display:block;font-size:.8125rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-body-muted,#554869);padding:16px max(var(--gutter),env(safe-area-inset-left)) 6px}
  .sub-menu a{display:block;font-size:1.0625rem;padding:15px max(var(--gutter),env(safe-area-inset-left));padding-left:calc(max(var(--gutter),env(safe-area-inset-left)) + 14px);border-bottom:1px solid var(--color-hairline,#EDE7F8);min-height:52px}
  .sub-menu a:hover,.sub-menu .current-menu-item a{border-bottom-color:var(--color-hairline,#EDE7F8);background:var(--color-background)}
}

/* ---------- Patient Information / Meeting Archive pages ---------- */
.topic-jump{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:860px;margin:0 auto 40px;padding:0;list-style:none}
.topic-jump a{display:inline-block;padding:9px 16px;min-height:40px;background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:999px;font-size:.9375rem;font-weight:500;color:var(--color-primary);text-decoration:none;transition:border-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.topic-jump a:hover{border-color:var(--color-accent);box-shadow:var(--shadow-soft)}
.res-card{background:var(--color-surface);border:1px solid var(--color-hairline,#EDE7F8);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);max-width:860px;margin:0 auto 26px;padding:clamp(24px,2vw + 18px,34px);scroll-margin-top:96px}
.res-card__title{font-size:1.375rem;margin:0 0 6px}
.res-card__lede{margin:0 0 14px;font-size:.9375rem;color:var(--color-body-muted,#554869);line-height:1.55}
.res-note{max-width:860px;margin:0 auto 34px;text-align:center;font-size:.9375rem;line-height:1.6}
.res-list{list-style:none;margin:0;padding:0}
.res-list li{padding:12px 0;border-bottom:1px solid var(--color-hairline,#EDE7F8);line-height:1.6}
.res-list li:first-child{padding-top:4px}
.res-list li:last-child{border-bottom:0;padding-bottom:2px}
.res-list a{color:var(--color-primary);text-decoration:underline;text-underline-offset:3px}
.res-list a:hover{color:var(--color-primary-strong)}
.res-src{display:inline-block;margin-left:8px;font-size:.8125rem;letter-spacing:.06em;text-transform:uppercase;color:var(--color-body-muted,#554869)}
.res-desc{display:block;font-size:.9375rem;color:var(--color-body-muted,#554869);margin-top:3px}
@media (prefers-reduced-motion:reduce){.menu-drop__toggle,.topic-jump a{transition:none}}
.res-card__more{margin:16px 0 0;padding-top:14px;border-top:1px solid var(--color-hairline,#EDE7F8)}
.res-card__more a{font-weight:600;color:var(--color-primary);text-decoration:none}
.res-card__more a:hover{text-decoration:underline;text-underline-offset:3px}
.pe-back{max-width:860px;margin:0 auto 18px}
.pe-back a{font-weight:600;color:var(--color-primary);text-decoration:none}
.pe-back a:hover{text-decoration:underline;text-underline-offset:3px}
.pe-overview{max-width:860px;margin:0 auto 26px}
.pe-overview p{font-size:1.0625rem;line-height:1.7;color:var(--color-foreground,#2A1E3F);margin:0 0 1em}
.pe-overview p:last-child{margin-bottom:0}
.res-card__head{display:flex;align-items:center;gap:14px;margin:0 0 8px}
.res-card__head .res-card__title{margin:0}
.res-card__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:rgba(83,37,146,.08);color:var(--color-primary)}
.res-card__icon svg{width:24px;height:24px}
.pe-hero__icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:16px;background:rgba(83,37,146,.08);color:var(--color-primary);margin:0 auto 16px}
.pe-hero__icon svg{width:28px;height:28px}
