/* ============================================================
   Beacons of Light Ottawa — Area Teaching Committee of Ottawa
   Shared stylesheet. Warm, editorial, civic, human.
   ============================================================ */

/* ---------- Design tokens ---------- */
:root{
  /* backgrounds */
  --ivory:#FCF9F2;
  --cream:#F6F0E4;
  --sand:#EFE6D4;
  --paper:#FFFFFF;

  /* ink */
  --ink:#23302D;
  --ink-soft:#51605B;
  --ink-mute:#7C8781;

  /* accents */
  --teal:#0E5B56;
  --teal-deep:#0A423F;
  --teal-tint:#E4EFEC;
  --forest:#2F6B4E;
  --forest-tint:#E7F0E7;
  --gold:#C39433;
  --gold-soft:#E8CE8B;
  --gold-tint:#F6ECD4;
  --sky:#5E97B8;
  --sky-soft:#BFD9E7;
  --sky-tint:#E6F0F5;

  --line:rgba(35,48,45,.12);
  --line-soft:rgba(35,48,45,.07);

  --shadow-sm:0 1px 2px rgba(35,48,45,.06), 0 2px 8px rgba(35,48,45,.05);
  --shadow-md:0 8px 24px -12px rgba(35,48,45,.22), 0 4px 10px -6px rgba(35,48,45,.12);
  --shadow-lg:0 30px 60px -30px rgba(35,48,45,.35), 0 12px 26px -16px rgba(35,48,45,.18);

  --r-sm:12px;
  --r-md:18px;
  --r-lg:26px;
  --r-xl:34px;
  --r-pill:999px;

  --maxw:1180px;
  --gutter:clamp(20px,5vw,48px);

  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Work Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:var(--ivory);
  font-size:clamp(16px,1.05vw,17.5px);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block;height:auto}
a{color:var(--teal);text-decoration:none}
a:hover{color:var(--teal-deep)}
h1,h2,h3,h4{font-family:var(--serif);font-weight:560;line-height:1.12;color:var(--ink);margin:0 0 .5em;letter-spacing:-.01em}
h1{font-size:clamp(2.5rem,6vw,4.4rem);font-weight:500}
h2{font-size:clamp(1.9rem,3.6vw,2.9rem)}
h3{font-size:clamp(1.25rem,2vw,1.6rem)}
p{margin:0 0 1.1em}
strong{font-weight:600}
::selection{background:var(--gold-soft);color:var(--ink)}

/* ---------- Accessibility helpers ---------- */
.skip-link{
  position:absolute;left:16px;top:-60px;z-index:200;
  background:var(--teal);color:#fff;padding:.7em 1.1em;border-radius:var(--r-sm);
  font-weight:600;transition:top .2s var(--ease);
}
.skip-link:focus{top:16px;color:#fff}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:4px}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- Layout ---------- */
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.container-wide{max-width:1320px}
.section{padding-block:clamp(56px,8vw,110px)}
.section-tight{padding-block:clamp(40px,5vw,64px)}
.bg-cream{background:var(--cream)}
.bg-sand{background:var(--sand)}
.bg-paper{background:var(--paper)}
.bg-teal{background:var(--teal-deep);color:#F3EFE6}
.bg-teal h1,.bg-teal h2,.bg-teal h3{color:#fff}

/* eyebrow / kicker */
.kicker{
  display:inline-flex;align-items:center;gap:.55em;
  font-family:var(--sans);font-weight:600;font-size:.78rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--teal);
  margin:0 0 1.1em;
}
.kicker::before{content:"";width:26px;height:2px;background:var(--gold);border-radius:2px}
.bg-teal .kicker{color:var(--gold-soft)}
.bg-teal .kicker::before{background:var(--gold-soft)}

.lead{font-size:clamp(1.1rem,1.5vw,1.32rem);line-height:1.6;color:var(--ink-soft);max-width:60ch}
.measure{max-width:66ch}
.center{text-align:center}
.center .kicker{justify-content:center}
.center .lead{margin-inline:auto}

/* ---------- Buttons ---------- */
.btn{
  --bg:var(--teal);--fg:#fff;
  display:inline-flex;align-items:center;gap:.6em;
  font-family:var(--sans);font-weight:600;font-size:1rem;
  padding:.92em 1.5em;border-radius:var(--r-pill);
  background:var(--bg);color:var(--fg);border:1.5px solid var(--bg);
  cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .2s var(--ease);
  box-shadow:var(--shadow-sm);line-height:1;text-align:center;
}
.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);color:var(--fg)}
.btn:active{transform:translateY(0)}
.btn .arrow{transition:transform .25s var(--ease)}
.btn:hover .arrow{transform:translateX(4px)}
.btn-secondary{--bg:transparent;--fg:var(--teal);border-color:rgba(14,91,86,.35);box-shadow:none;background:rgba(255,255,255,.5)}
.btn-secondary:hover{--fg:var(--teal-deep);background:#fff;border-color:var(--teal)}
.btn-gold{--bg:var(--gold);--fg:#3a2c07}
.btn-gold:hover{--bg:#b6892d}
.btn-light{--bg:#fff;--fg:var(--teal-deep)}
.btn-onteal-ghost{--bg:transparent;--fg:#F3EFE6;border-color:rgba(255,255,255,.4);box-shadow:none}
.btn-onteal-ghost:hover{--fg:#fff;border-color:#fff;background:rgba(255,255,255,.08)}
.btn-lg{font-size:1.08rem;padding:1.05em 1.9em}
.btn-row{display:flex;flex-wrap:wrap;gap:.9em;align-items:center}

/* ---------- Header / nav ---------- */
.site-header{
  position:sticky;top:0;z-index:100;
  background:rgba(252,249,242,.82);
  backdrop-filter:saturate(140%) blur(14px);
  -webkit-backdrop-filter:saturate(140%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease),box-shadow .3s var(--ease),background .3s var(--ease);
}
.site-header.scrolled{border-bottom-color:var(--line);box-shadow:0 6px 20px -18px rgba(35,48,45,.5)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;min-height:74px}
.brand{display:flex;align-items:center;gap:.7rem;color:var(--ink)}
.brand:hover{color:var(--ink)}
.brand .mark{flex:0 0 auto}
.brand-text{display:flex;flex-direction:column;line-height:1.05}
.brand-name{font-family:var(--serif);font-weight:600;font-size:1.24rem;letter-spacing:-.01em}
.brand-sub{font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-mute);font-weight:600}

.nav-links{display:flex;align-items:center;gap:.35rem;list-style:none;margin:0;padding:0}
.nav-links a{
  display:inline-block;color:var(--ink-soft);font-weight:500;font-size:.98rem;
  padding:.55em .85em;border-radius:var(--r-pill);position:relative;transition:color .2s var(--ease),background .2s var(--ease);
}
.nav-links a:hover{color:var(--teal-deep);background:rgba(14,91,86,.07)}
.nav-links a[aria-current="page"]{color:var(--teal-deep);font-weight:600}
.nav-links a[aria-current="page"]::after{
  content:"";position:absolute;left:.9em;right:.9em;bottom:.28em;height:2px;background:var(--gold);border-radius:2px;
}
.nav-cta{margin-left:.4rem}

.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:46px;height:46px;border:1px solid var(--line);border-radius:var(--r-sm);background:rgba(255,255,255,.6);cursor:pointer}
.nav-toggle span{display:block;height:2px;width:22px;margin-inline:auto;background:var(--ink);border-radius:2px;transition:transform .3s var(--ease),opacity .2s var(--ease)}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

@media (max-width:900px){
  .nav-toggle{display:flex}
  .nav-links{
    position:absolute;top:calc(100% + 8px);right:var(--gutter);left:var(--gutter);
    flex-direction:column;align-items:stretch;gap:.15rem;
    background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);
    padding:.7rem;box-shadow:var(--shadow-lg);
    opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .25s var(--ease),transform .25s var(--ease),visibility .25s;
  }
  .nav-links.open{opacity:1;visibility:visible;transform:translateY(0)}
  .nav-links a{padding:.8em 1em;border-radius:var(--r-md);font-size:1.05rem}
  .nav-links a[aria-current="page"]::after{display:none}
  .nav-links a[aria-current="page"]{background:var(--teal-tint)}
  .nav-cta{margin:.3rem 0 0}
  .nav-cta .btn{width:100%;justify-content:center}
}

/* ---------- Hero ---------- */
.hero{position:relative;padding-block:clamp(40px,6vw,84px) clamp(56px,8vw,96px);overflow:hidden}
.hero-glow{position:absolute;inset:0;z-index:0;pointer-events:none}
.hero-glow::before,.hero-glow::after{content:"";position:absolute;border-radius:50%;filter:blur(60px);opacity:.5}
.hero-glow::before{width:520px;height:520px;top:-160px;right:-120px;background:radial-gradient(circle,var(--gold-tint),transparent 68%)}
.hero-glow::after{width:560px;height:560px;bottom:-220px;left:-160px;background:radial-gradient(circle,var(--teal-tint),transparent 66%)}
.hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(28px,5vw,64px);align-items:center}
.hero-copy h1{margin-bottom:.32em}
.hero-copy .lead{margin-bottom:1.8em}
.hero-copy .btn-row{margin-bottom:1.3em}
.hero-note{font-size:.9rem;color:var(--ink-mute);display:flex;align-items:center;gap:.5em}
.hero-note .dot{width:7px;height:7px;border-radius:50%;background:var(--forest)}

.hero-media{position:relative}
.hero-photo{position:relative;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-lg);aspect-ratio:5/4;background:var(--sand)}
.hero-photo img{width:100%;height:100%;object-fit:cover}
.hero-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(200deg,transparent 55%,rgba(10,66,63,.16))}
.hero-badge{
  position:absolute;left:-14px;bottom:26px;z-index:2;
  background:var(--paper);border-radius:var(--r-lg);box-shadow:var(--shadow-md);
  padding:.85rem 1.05rem .85rem .85rem;display:flex;align-items:center;gap:.75rem;max-width:270px;
  border:1px solid var(--line-soft);
}
.hero-badge .thumb{width:66px;height:66px;border-radius:var(--r-md);overflow:hidden;flex:0 0 auto}
.hero-badge .thumb img{width:100%;height:100%;object-fit:cover}
.hero-badge .t{font-family:var(--serif);font-size:1rem;line-height:1.15;margin:0 0 .15em}
.hero-badge .s{font-size:.78rem;color:var(--ink-mute);margin:0;line-height:1.3}
.hero-float{position:absolute;top:22px;right:-12px;background:var(--paper);border-radius:var(--r-pill);box-shadow:var(--shadow-md);padding:.55em 1em;font-size:.85rem;font-weight:600;color:var(--teal-deep);display:flex;align-items:center;gap:.5em;border:1px solid var(--line-soft)}
.hero-float .pulse{width:9px;height:9px;border-radius:50%;background:var(--forest);box-shadow:0 0 0 0 rgba(47,107,78,.5);animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(47,107,78,.45)}70%{box-shadow:0 0 0 10px rgba(47,107,78,0)}100%{box-shadow:0 0 0 0 rgba(47,107,78,0)}}

@media (max-width:820px){
  .hero-inner{grid-template-columns:1fr;gap:36px}
  .hero-media{order:-1;max-width:560px}
  .hero-badge{left:8px}
  .hero-float{right:8px}
}

/* ---------- Page header (sub-pages) ---------- */
.page-head{position:relative;padding-block:clamp(48px,7vw,88px);overflow:hidden}
.page-head .container{position:relative;z-index:1}
.page-head .lead{margin-top:.4em}
.page-head-media{margin-top:clamp(28px,4vw,44px);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-lg);aspect-ratio:21/8;background:var(--sand)}
.page-head-media img{width:100%;height:100%;object-fit:cover}
@media (max-width:640px){.page-head-media{aspect-ratio:16/10}}

.breadcrumbs{font-size:.82rem;color:var(--ink-mute);margin-bottom:1.4em;display:flex;gap:.5em;align-items:center}
.breadcrumbs a{color:var(--ink-mute)}
.breadcrumbs a:hover{color:var(--teal)}

/* ---------- Grid helpers ---------- */
.grid{display:grid;gap:clamp(18px,2.4vw,28px)}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media (max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}

/* ---------- Cards ---------- */
.card{background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:clamp(1.3rem,2vw,1.7rem);box-shadow:var(--shadow-sm);transition:transform .3s var(--ease),box-shadow .3s var(--ease);height:100%}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.card h3{margin-bottom:.4em}
.card p:last-child{margin-bottom:0}

/* practice / feature cards with icon medallion */
.pcard{position:relative;overflow:hidden}
.pcard .medallion{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;margin-bottom:1.1rem;color:#fff}
.pcard .medallion svg{width:27px;height:27px}
.pcard .tag{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--ink-mute);margin-bottom:.7em;display:block}
.m-teal{background:linear-gradient(145deg,var(--teal),var(--teal-deep))}
.m-forest{background:linear-gradient(145deg,var(--forest),#245a41)}
.m-gold{background:linear-gradient(145deg,#d1a445,var(--gold))}
.m-sky{background:linear-gradient(145deg,#6ea3c2,var(--sky))}
.pcard::after{content:"";position:absolute;inset:auto -30% -40% auto;width:150px;height:150px;border-radius:50%;background:var(--line-soft);opacity:.5;transition:transform .5s var(--ease)}
.pcard:hover::after{transform:scale(1.25)}

/* ---------- Quote block ---------- */
.quote{position:relative;max-width:52rem;margin-inline:auto;text-align:center}
.quote .mark{font-family:var(--serif);font-size:5rem;line-height:.4;color:var(--gold-soft);display:block;height:.5em}
.quote blockquote{font-family:var(--serif);font-weight:400;font-size:clamp(1.4rem,2.8vw,2.1rem);line-height:1.4;color:var(--ink);margin:0 0 .7em;font-style:italic}
.bg-teal .quote blockquote{color:#fbf7ee}
.quote cite{font-style:normal;font-weight:600;letter-spacing:.05em;font-size:.95rem;color:var(--teal)}
.bg-teal .quote cite{color:var(--gold-soft)}
.quote-rule{width:54px;height:2px;background:var(--gold);border:0;margin:0 auto 1.6em;border-radius:2px}

/* small inline quote (resource cards) */
.qmini{font-family:var(--serif);font-style:italic;font-size:1.05rem;line-height:1.45;color:var(--ink);border-left:3px solid var(--gold-soft);padding-left:1rem;margin:.2rem 0 1.1rem}

/* ---------- Split feature band ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,68px);align-items:center}
.split.reverse .split-media{order:2}
.split-media{border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-lg);aspect-ratio:4/3;background:var(--sand)}
.split-media img{width:100%;height:100%;object-fit:cover}
@media (max-width:820px){.split{grid-template-columns:1fr;gap:32px}.split.reverse .split-media{order:0}}

/* big feature (reflection) */
.feature{position:relative;border-radius:var(--r-xl);overflow:hidden;color:#fff;isolation:isolate;box-shadow:var(--shadow-lg)}
.feature img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.feature::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,rgba(10,66,63,.94) 0%,rgba(10,66,63,.8) 42%,rgba(10,66,63,.34) 100%)}
.feature-inner{padding:clamp(2rem,5vw,3.6rem);max-width:640px}
.feature h2{color:#fff}
.feature p{color:rgba(255,255,255,.9)}
.feature .kicker{color:var(--gold-soft)}
.feature .kicker::before{background:var(--gold-soft)}
@media (max-width:640px){.feature::after{background:linear-gradient(180deg,rgba(10,66,63,.72),rgba(10,66,63,.94))}}

/* ---------- Event cards ---------- */
.event{display:grid;grid-template-columns:132px 1fr;gap:1.4rem;align-items:stretch;background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.event:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.event-date{background:linear-gradient(160deg,var(--teal),var(--teal-deep));color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.2rem .8rem;text-align:center}
.event-date .mo{font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:var(--gold-soft)}
.event-date .day{font-family:var(--serif);font-size:2.6rem;line-height:1;margin:.1em 0}
.event-date .yr{font-size:.82rem;opacity:.82}
.event-date.range .day{font-size:1.7rem;line-height:1.05}
.event-body{padding:1.35rem 1.5rem 1.35rem 0}
.event-body .etitle{font-family:var(--serif);font-size:1.32rem;line-height:1.2;margin:0 0 .5em}
.event-meta{display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin:0 0 .8em;font-size:.9rem;color:var(--ink-soft)}
.event-meta span{display:inline-flex;align-items:center;gap:.4em}
.event-meta svg{width:15px;height:15px;color:var(--teal);flex:0 0 auto}
.event-body p{margin:0 0 .6em}
.event-body .prog{font-size:.93rem;color:var(--ink-soft)}
.chip{display:inline-flex;align-items:center;gap:.45em;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.35em .8em;border-radius:var(--r-pill);margin-bottom:.85em}
.chip-up{background:var(--forest-tint);color:var(--forest)}
.chip-up .d{width:7px;height:7px;border-radius:50%;background:var(--forest)}
.chip-focus{background:var(--gold-tint);color:#96701c}
.chip-past{background:var(--sand);color:var(--ink-mute)}

/* highlighted focus event */
.event-focus{grid-template-columns:1fr;background:linear-gradient(150deg,var(--teal-deep),var(--teal));color:#fff;padding:clamp(1.6rem,3vw,2.4rem);border:0}
.event-focus .etitle{color:#fff;font-size:clamp(1.5rem,2.6vw,2rem)}
.event-focus p{color:rgba(255,255,255,.9)}
.event-focus .event-meta{color:rgba(255,255,255,.86)}
.event-focus .event-meta svg{color:var(--gold-soft)}
.event-focus .chip-focus{background:rgba(255,255,255,.16);color:#fff}

/* past events muted */
.event-past{background:transparent;box-shadow:none;border:1px solid var(--line)}
.event-past .event-date{background:var(--sand);color:var(--ink-mute)}
.event-past .event-date .mo{color:var(--ink-mute)}
.event-past:hover{transform:none;box-shadow:var(--shadow-sm)}

@media (max-width:560px){
  .event{grid-template-columns:1fr}
  .event-date{flex-direction:row;gap:.6em;padding:.7rem}
  .event-date .day{font-size:1.8rem}
  .event-body{padding:1.1rem 1.2rem 1.3rem}
}

/* ---------- Resource theme cards ---------- */
.theme{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.theme:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.theme-top{height:8px;background:var(--teal)}
.theme-body{padding:1.4rem 1.4rem 1.5rem;display:flex;flex-direction:column;flex:1}
.theme h3{margin-bottom:.5em;display:flex;align-items:center;gap:.55em}
.theme h3 .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;color:#fff}
.theme h3 .ic svg{width:18px;height:18px}
.theme .qmini{flex:1}
.theme .theme-cta{margin-top:auto}
.link-arrow{display:inline-flex;align-items:center;gap:.45em;font-weight:600;color:var(--teal);font-size:.95rem}
.link-arrow .arrow{transition:transform .25s var(--ease)}
.link-arrow:hover .arrow{transform:translateX(4px)}

/* stat / value row */
.values{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line)}
.values .v{background:var(--ivory);padding:1.4rem 1.2rem;text-align:center}
.values .v .n{font-family:var(--serif);font-size:1.05rem;color:var(--teal-deep);margin-bottom:.2em}
.values .v .l{font-size:.9rem;color:var(--ink-soft)}
@media (max-width:760px){.values{grid-template-columns:repeat(2,1fr)}}

/* pill list of themes preview */
.pills{display:flex;flex-wrap:wrap;gap:.6em}
.pill{display:inline-flex;align-items:center;gap:.5em;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-pill);padding:.5em 1em;font-size:.92rem;font-weight:500;color:var(--ink);transition:transform .2s var(--ease),border-color .2s var(--ease),background .2s}
.pill:hover{transform:translateY(-2px);border-color:var(--teal);color:var(--teal-deep)}
.pill .d{width:8px;height:8px;border-radius:50%;background:var(--gold)}

/* ---------- Callout / CTA band ---------- */
.cta-band{background:linear-gradient(135deg,var(--teal-deep),var(--teal));color:#fff;border-radius:var(--r-xl);padding:clamp(2.2rem,5vw,3.6rem);text-align:center;position:relative;overflow:hidden;box-shadow:var(--shadow-lg)}
.cta-band::before{content:"";position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(232,206,139,.28),transparent 70%);top:-140px;right:-80px}
.cta-band h2{color:#fff;position:relative}
.cta-band p{color:rgba(255,255,255,.9);max-width:56ch;margin-inline:auto;position:relative}
.cta-band .btn-row{justify-content:center;position:relative}

/* ---------- Footer ---------- */
.site-footer{background:var(--teal-deep);color:#D9E4E0;padding-block:clamp(48px,6vw,72px) 2rem;margin-top:0}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1.3fr;gap:clamp(28px,4vw,52px);padding-bottom:2.4rem;border-bottom:1px solid rgba(255,255,255,.14)}
.site-footer h4{color:#fff;font-family:var(--sans);font-weight:700;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:1.1em}
.footer-brand .brand-name{color:#fff;font-size:1.35rem}
.footer-brand .brand-sub{color:var(--gold-soft)}
.footer-brand p{color:rgba(217,228,224,.8);max-width:34ch;margin-top:1em;font-size:.95rem}
.footer-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6em}
.footer-links a{color:#D9E4E0}
.footer-links a:hover{color:#fff}
.contact-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:var(--r-lg);padding:1.4rem 1.5rem}
.contact-card .who{font-family:var(--serif);color:#fff;font-size:1.12rem;margin-bottom:.15em}
.contact-card .role{font-size:.86rem;color:var(--gold-soft);margin-bottom:1em}
.contact-line{display:flex;align-items:center;gap:.7em;margin-bottom:.6em;font-size:.98rem}
.contact-line a{color:#fff;font-weight:500;word-break:break-word}
.contact-line svg{width:18px;height:18px;color:var(--gold-soft);flex:0 0 auto}
.footer-bottom{display:flex;flex-wrap:wrap;gap:.6em 1.4rem;justify-content:space-between;align-items:center;padding-top:1.8rem;font-size:.85rem;color:rgba(217,228,224,.66)}
.footer-bottom a{color:rgba(217,228,224,.85)}
@media (max-width:820px){.footer-grid{grid-template-columns:1fr;gap:32px}}

/* ---------- Reveal animation ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}
.reveal.d2{transition-delay:.16s}
.reveal.d3{transition-delay:.24s}
.reveal.d4{transition-delay:.32s}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .hero-float .pulse{animation:none}
  .btn:hover,.card:hover,.event:hover,.theme:hover,.pill:hover{transform:none}
}

/* ---------- Misc ---------- */
.section-head{max-width:640px;margin-bottom:clamp(28px,4vw,48px)}
.section-head.center{margin-inline:auto}
.divider{height:1px;background:var(--line);border:0;margin:0}
.note-inline{font-size:.9rem;color:var(--ink-mute)}
.rich p{max-width:70ch}
.rich h3{margin-top:1.6em}
.stack-sm>*+*{margin-top:1rem}
.mt-2{margin-top:2rem}.mt-3{margin-top:3rem}
.text-teal{color:var(--teal-deep)}
