:root {
  --navy: #283A68;
  --navy-deep: #1c2a4f;
  --purple: #8B709D;
  --purple-soft: #b9a4c9;
  --lavender: #e9deef;
  --lavender-mist: #f3ecf6;
  --cream: #faf6f1;
  --cream-warm: #f5ede4;
  --ink: #1d1830;
  --ink-soft: #4a4560;
  --muted: #7a7390;
  --line: rgba(40, 58, 104, 0.12);
  --grad: linear-gradient(95deg, #283A68 5%, #8B709D 85%);
  --grad-soft: linear-gradient(135deg, #d9c9e3 0%, #f0e3d6 100%);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--cream); color: var(--ink); font-family: 'Inter', sans-serif; -webkit-font-smoothing: antialiased; }
body { overflow-x: hidden; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
:focus-visible { outline: 2px solid var(--purple); outline-offset: 4px; border-radius: 4px; }

.container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

/* ============ NAV ============ */
.nav {
  position: sticky; top: 0; z-index: 50;
  backdrop-filter: blur(14px);
  background: rgba(250, 246, 241, 0.82);
  transition: padding 0.25s ease, background 0.25s ease;
}
.nav.scrolled { background: rgba(250, 246, 241, 0.95); box-shadow: 0 8px 24px -16px rgba(40, 58, 104, 0.25); }
.nav.scrolled .nav-inner { padding-top: 42px; padding-bottom: 18px; }
.nav.scrolled .nav-logo img { height: 56px; margin-bottom: 0; transform: translateY(0); }
.nav.scrolled .nav-links, .nav.scrolled .nav-cta { transform: translateY(0); }
.nav-inner { display: flex; align-items: center; justify-content: space-between; padding: 22px 32px 36px; max-width: 1240px; margin: 0 auto; gap: 32px; transition: padding 0.25s ease; }
.nav-logo { display: flex; align-items: center; gap: 12px; position: relative; z-index: 2; }
.nav-logo img { height: 120px; width: auto; margin-bottom: -56px; transform: translateY(-2px); filter: drop-shadow(0 12px 24px rgba(40, 58, 104, 0.15)); transition: height 0.25s ease, margin-bottom 0.25s ease, transform 0.25s ease; }
.nav-links, .nav-cta { transform: translateY(20px); transition: transform 0.25s ease; }
.nav-links { display: flex; gap: 36px; align-items: center; font-size: 14px; font-weight: 500; color: var(--ink-soft); letter-spacing: 0.01em; }
.nav-links a { transition: color 0.2s; position: relative; padding: 4px 0; }
.nav-links a:hover { color: var(--navy); }
.nav-links a.active { color: var(--navy); }
.nav-links a.active::after { content: ''; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px; background: var(--grad); border-radius: 2px; }
.nav-cta {
  background: var(--grad); color: white; padding: 12px 22px; border-radius: 999px;
  font-size: 14px; font-weight: 600; letter-spacing: 0.01em;
  box-shadow: 0 8px 24px -8px rgba(40, 58, 104, 0.5);
  transition: transform 0.2s, box-shadow 0.2s;
}
.nav-cta:hover { transform: translateY(-1px); box-shadow: 0 12px 28px -8px rgba(40, 58, 104, 0.6); }

/* ============ HERO ============ */
.hero {
  position: relative; padding: 80px 0 100px; overflow: hidden;
  background: rgba(250, 246, 241, 0.82);
  /* Fill viewport (minus nav) and vertically centre the hero content. */
  min-height: calc(100vh - 120px);
  display: flex; flex-direction: column; justify-content: center;
}
.welcome, #events, .cta { background: rgba(250, 246, 241, 0.82); }
.hero-stars { position: absolute; top: 60px; left: 50%; transform: translateX(-50%); display: flex; gap: 14px; color: var(--purple-soft); font-size: 14px; }
.hero-stars span { display: inline-block; }
.hero-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 80px; align-items: center; position: relative; }
.hero-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple); margin-bottom: 24px; display: flex; align-items: center; gap: 12px; white-space: nowrap; }
.hero-eyebrow::before { content: ''; width: 32px; height: 1px; background: var(--purple); }
.hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(40px, 5vw, 68px);
  line-height: 1.02;
  font-weight: 400;
  letter-spacing: -0.025em;
  color: var(--navy-deep);
  text-wrap: pretty;
  margin-bottom: 28px;
}
.hero h1 em {
  font-style: italic;
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 500;
}
.hero p { font-size: 18px; line-height: 1.6; color: var(--ink-soft); max-width: 480px; margin-bottom: 36px; }
.hero-actions { display: flex; gap: 16px; align-items: center; }
/* btn-primary / btn-ghost styling now lives in the BUTTON BLOCK STYLING
   section below — these classes apply to .wp-block-button wrappers and the
   real visual sits on the inner .wp-block-button__link. */

/* hero portrait */
.hero-visual { position: relative; height: 580px; }
.blob {
  position: absolute;
  top: 40px; right: 60px;
  width: 420px; height: 480px;
  background: var(--grad);
  border-radius: 210px / 240px;
  overflow: hidden;
  box-shadow: 0 40px 80px -30px rgba(40, 58, 104, 0.4);
}
.blob img { width: 100%; height: 100%; object-fit: cover; object-position: 70% center; display: block; }
.dot { position: absolute; border-radius: 50%; background: var(--purple-soft); }
.dot.d1 { width: 14px; height: 14px; top: 40px; right: 480px; background: var(--navy); }
.dot.d2 { width: 24px; height: 24px; top: 100px; right: 30px; background: var(--lavender); }
.dot.d3 { width: 10px; height: 10px; bottom: 80px; right: 470px; background: var(--purple); }
.dot.d4 { width: 18px; height: 18px; bottom: 30px; right: 80px; background: var(--purple-soft); }
.spark { position: absolute; color: var(--purple); }
.spark.s1 { top: 60px; left: -10px; }
.spark.s2 { bottom: 100px; right: 460px; color: var(--navy); }

/* floating chip — Group block with heading + paragraph */
.chip-float {
  position: absolute; bottom: 60px; left: -20px;
  background: white;
  padding: 16px 20px;
  border-radius: 18px;
  box-shadow: 0 20px 50px -20px rgba(40, 58, 104, 0.3);
  border: 1px solid var(--line);
  z-index: 2;
  max-width: 240px;
}

/* ============ WELCOME / STATS ============ */
.section { padding: 100px 0; position: relative; }
.welcome-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 80px; align-items: center; }
.welcome-visual { position: relative; height: 520px; }
.welcome-blob {
  position: absolute; inset: 0 0 0 40px;
  background: var(--lavender);
  border-radius: 240px / 200px;
  overflow: hidden;
}
.welcome-blob img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.welcome-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple); margin-bottom: 20px; display: inline-flex; align-items: center; gap: 12px; }
.welcome-eyebrow::before { content: ''; width: 24px; height: 1px; background: var(--purple); }
.welcome h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.05; font-weight: 400; letter-spacing: -0.02em;
  color: var(--navy-deep); margin-bottom: 24px; text-wrap: balance;
}
.welcome h2 em { font-style: italic; color: var(--purple); }
.welcome p { font-size: 16px; line-height: 1.7; color: var(--ink-soft); margin-bottom: 20px; max-width: 520px; }

.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 36px; max-width: 520px; }
.stat {
  background: white;
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 22px 18px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.stat::before {
  content: ''; position: absolute; top: -30px; right: -30px;
  width: 80px; height: 80px; background: var(--lavender-mist); border-radius: 50%; z-index: 0;
}
.stat .stat-num,
p.stat-num,
.wp-block-group.stat p.stat-num {
  font-family: 'Playfair Display', serif !important;
  font-size: 38px !important;
  font-weight: 500 !important;
  color: var(--navy);
  position: relative;
  z-index: 1;
  line-height: 1 !important;
  margin: 0 !important;
}
.stat .stat-num em,
p.stat-num em {
  font-style: italic;
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.stat .stat-label,
p.stat-label,
.wp-block-group.stat p.stat-label {
  font-size: 12px !important;
  color: var(--ink-soft);
  margin: 8px 0 0 !important;
  position: relative;
  z-index: 1;
  line-height: 1.3 !important;
  font-family: 'Inter', sans-serif !important;
}

/* ============ HELP / FEATURE GRID ============ */
.help { background: var(--lavender-mist); position: relative; }
.help::before, .help::after { content: ''; position: absolute; pointer-events: none; }
.help::before { top: 80px; left: 8%; width: 14px; height: 14px; border-radius: 50%; background: var(--purple-soft); }
.help::after { bottom: 100px; right: 6%; width: 22px; height: 22px; border-radius: 50%; background: var(--lavender); border: 2px solid var(--purple-soft); }
.help-head { text-align: center; margin-bottom: 64px; }
.help-head .welcome-eyebrow { justify-content: center; }
.help-head h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.05; font-weight: 400; letter-spacing: -0.02em;
  color: var(--navy-deep); text-wrap: balance; max-width: 720px; margin: 0 auto 16px;
}
.help-head h2 em { font-style: italic; color: var(--purple); }
.help-head p { color: var(--ink-soft); max-width: 560px; margin: 0 auto; font-size: 16px; line-height: 1.6; }

.help-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.help-card {
  background: white;
  border-radius: 22px;
  padding: 32px 24px;
  text-align: center;
  transition: transform 0.3s, box-shadow 0.3s;
  border: 1px solid transparent;
}
.help-card:hover { transform: translateY(-6px); box-shadow: 0 24px 50px -20px rgba(40, 58, 104, 0.18); border-color: var(--line); }
.help-icon {
  width: 64px; height: 64px; margin: 0 auto 22px;
  background: var(--grad);
  border-radius: 20px;
  display: flex; align-items: center; justify-content: center;
  color: white;
  box-shadow: 0 12px 24px -10px rgba(40, 58, 104, 0.5);
}
.help-card h3 { font-family: 'Playfair Display', serif; font-size: 22px; font-weight: 500; color: var(--navy); margin-bottom: 12px; letter-spacing: -0.01em; }
.help-card p { font-size: 14px; line-height: 1.6; color: var(--ink-soft); }

/* ============ EVENTS / EXPERIENCE ============ */
.events-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.events-visual { position: relative; height: 420px; }
.events-blob {
  position: absolute; right: 0; top: 0;
  width: 100%; height: 100%;
  background: var(--grad);
  border-radius: 100px 32px 100px 32px;
  overflow: hidden;
  box-shadow: 0 40px 80px -30px rgba(40, 58, 104, 0.4);
}
.events-blob img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.events-card-float {
  position: absolute; right: -20px; top: 60px;
  background: white;
  padding: 18px 22px;
  border-radius: 16px;
  box-shadow: 0 20px 50px -20px rgba(40, 58, 104, 0.3);
  width: 220px;
  z-index: 2;
}
.events-card-float .date { font-family: 'JetBrains Mono', monospace; font-size: 11px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--purple); margin-bottom: 8px; }
.events-card-float h4 { font-family: 'Playfair Display', serif; font-size: 18px; color: var(--navy); line-height: 1.2; margin-bottom: 8px; }
.events-card-float .meta { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 6px; }

.events-list { margin-top: 48px !important; margin-block-start: 48px !important; display: flex; flex-direction: column; gap: 16px; }
.event-item {
  display: grid; grid-template-columns: 84px 1fr auto; gap: 20px; align-items: center;
  padding: 18px 22px; background: white; border-radius: 16px; border: 1px solid var(--line);
  transition: border-color 0.2s, transform 0.2s;
}
.event-item:hover { border-color: var(--purple-soft); transform: translateX(4px); }
.event-date {
  background: var(--lavender-mist);
  border-radius: 12px; padding: 10px 8px; text-align: center;
}
.event-date .day { font-family: 'Playfair Display', serif; font-size: 24px; font-weight: 500; color: var(--navy); line-height: 1; }
.event-date .month { font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em; color: var(--purple); margin-top: 2px; }
.event-info h4 { font-family: 'Playfair Display', serif; font-size: 18px; font-weight: 500; color: var(--navy); margin-bottom: 4px; }
.event-info span { font-size: 13px; color: var(--muted); }
.event-arrow { color: var(--purple); font-size: 18px; opacity: 0.5; transition: opacity 0.2s, transform 0.2s; }
.event-item:hover .event-arrow { opacity: 1; transform: translateX(4px); }

/* ============ COMMUNITY CTA ============ */
.cta { padding: 60px 0 100px; }
.cta-card {
  background: var(--navy);
  background-image: var(--grad);
  border-radius: 36px;
  padding: 80px 60px;
  position: relative;
  overflow: hidden;
  color: white;
  text-align: center;
}
.cta-card-inner { position: relative; z-index: 1; max-width: 640px; margin: 0 auto; }
.cta-card::before {
  content: ''; position: absolute; right: -100px; top: -100px;
  width: 400px; height: 400px; border-radius: 50%;
  background: radial-gradient(circle at center, rgba(255,255,255,0.18), transparent 70%);
}
.cta-card::after {
  content: ''; position: absolute; left: -80px; bottom: -120px;
  width: 320px; height: 320px; border-radius: 50%;
  background: radial-gradient(circle at center, rgba(233, 222, 239, 0.2), transparent 70%);
}
.cta-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.18em; color: var(--lavender); margin-bottom: 20px; display: inline-flex; align-items: center; gap: 12px; position: relative; z-index: 1; justify-content: center; }
.cta-eyebrow::before, .cta-eyebrow::after { content: ''; width: 24px; height: 1px; background: var(--lavender); }
.cta h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(36px, 4.4vw, 56px);
  line-height: 1.05; font-weight: 400; letter-spacing: -0.02em;
  color: white; margin-bottom: 20px; text-wrap: balance; position: relative; z-index: 1;
}
.cta h2 em { font-style: italic; color: var(--lavender); }
.cta p { color: rgba(255,255,255,0.82); max-width: 540px; margin: 0 auto 36px; line-height: 1.7; font-size: 17px; position: relative; z-index: 1; }
/* .cta-btn is now a Button block class — visual styling lives in the
   BUTTON BLOCK STYLING section. The wrapper z-index is preserved here
   so the button sits above the radial bloom decoratives in .cta-card. */
.cta-btn { position: relative; z-index: 1; }

/* ============ FOOTER ============ */
.footer { background: var(--cream-warm); padding: 60px 0 36px; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 60px; margin-bottom: 60px; }
.footer-brand img { height: 72px; margin-bottom: 20px; }
.footer-brand p { font-size: 14px; line-height: 1.6; color: var(--ink-soft); max-width: 280px; margin-bottom: 24px; }
.footer-socials { display: flex; gap: 10px; }
.footer-socials a {
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--navy); transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.footer-socials a:hover { background: var(--navy); color: white; border-color: var(--navy); }

.footer-col h5 { font-family: 'Playfair Display', serif; font-size: 16px; font-weight: 500; color: var(--navy); margin-bottom: 18px; }
.footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.footer-col a { color: var(--ink-soft); font-size: 14px; transition: color 0.2s; }
.footer-col a:hover { color: var(--navy); }
.footer-col li { font-size: 16px; color: var(--ink-soft); white-space: nowrap; }

.footer-bottom { display: flex; justify-content: space-between; align-items: center; padding-top: 24px; border-top: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.footer-bottom a { color: var(--muted); }

/* ============ WAVY DIVIDERS ============ */
.wave { display: block; width: 100%; height: 80px; }
.wave-wrap { position: relative; line-height: 0; margin: 0; padding: 0; }
.wave-wrap.cream { background: var(--cream); }

/* Image-block flavour — wave dropped in as a WP Image block so editors can
   swap or replace it from the Media Library.
   We use the classic 100vw full-bleed escape (position + negative margin)
   instead of relying on alignfull's break-out, because that only works for
   direct children of .has-global-padding — and our wave figures are nested
   deeper inside page-blocks/section wrappers. */
html body figure.wp-block-image.wave-divider,
html body figure.wp-block-image.alignfull.wave-divider,
.editor-styles-wrapper figure.wp-block-image.wave-divider,
.editor-styles-wrapper figure.wp-block-image.alignfull.wave-divider,
:root :where(.editor-styles-wrapper) :where(.is-layout-constrained) > figure.wp-block-image.wave-divider,
:root :where(.editor-styles-wrapper) :where(.is-layout-constrained) > figure.wp-block-image.alignfull.wave-divider,
figure.wp-block-image.wave-divider,
figure.wp-block-image.alignfull.wave-divider {
  position: relative;
  left: 50%; right: 50%;
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: -50vw !important;
  margin-right: -50vw !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  margin-block-start: 0 !important;
  margin-block-end: 0 !important;
  padding: 0 !important;
  line-height: 0;
  display: block;
}
figure.wp-block-image.wave-divider > img,
figure.wp-block-image.alignfull.wave-divider > img {
  display: block !important;
  width: 100% !important; min-width: 100% !important; max-width: 100% !important;
  height: 80px !important; min-height: 80px !important;
  margin: 0 !important;
  object-fit: fill !important;
}

/* Adjust section paddings around waves so we don't double-up vertical rhythm */
.help { padding-top: 60px; padding-bottom: 60px; }
.help::before { top: 30px; }
.help::after { bottom: 30px; }

/* ============ CONTENT PAGE ============ */
.content-page { padding: 60px 0 100px; min-height: 60vh; }
.content-page .container { max-width: 880px; }
.content-page-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.05; font-weight: 400; letter-spacing: -0.02em;
  color: var(--navy-deep); margin-bottom: 28px; text-wrap: balance;
}
.content-body { font-size: 17px; line-height: 1.7; color: var(--ink-soft); }
.content-body > * + * { margin-top: 1.1em; }
.content-body h1, .content-body h2, .content-body h3, .content-body h4 {
  font-family: 'Playfair Display', serif; color: var(--navy-deep); font-weight: 500;
  letter-spacing: -0.015em; line-height: 1.2; margin-top: 1.6em;
}
.content-body h1 { font-size: 38px; }
.content-body h2 { font-size: 30px; }
.content-body h3 { font-size: 22px; }
.content-body h4 { font-size: 18px; }
.content-body p { color: var(--ink-soft); }
.content-body strong { color: var(--ink); }
.content-body ul, .content-body ol { padding-left: 1.4em; }
.content-body li { margin-top: 0.4em; }
.content-body a { color: var(--navy); border-bottom: 1px solid var(--purple-soft); transition: border-color 0.2s, color 0.2s; }
.content-body a:hover { color: var(--purple); border-color: var(--purple); }
.content-body img { border-radius: 16px; margin: 1.4em 0; }

/* ============ EVENTS ARCHIVE PAGE ============ */
.events-page-container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

.events-page-hero { position: relative; padding: 80px 0 40px; overflow: hidden; text-align: center; }
.events-page-hero .events-page-container { position: relative; }
.events-page-eyebrow {
  font-family: 'JetBrains Mono', monospace; font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple);
  margin-bottom: 28px;
  display: inline-flex; align-items: center; gap: 12px;
}
.events-page-eyebrow::before, .events-page-eyebrow::after { content: ''; width: 32px; height: 1px; background: currentColor; }
.events-page-hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(48px, 6.5vw, 84px);
  line-height: 1.0; font-weight: 400; letter-spacing: -0.025em;
  color: var(--navy-deep); margin-bottom: 28px; text-wrap: balance;
}
.events-page-hero h1 em {
  font-style: italic;
  background: var(--grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 500;
}
.events-page-lede {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(18px, 1.8vw, 22px); line-height: 1.5;
  color: var(--ink-soft); max-width: 620px; margin: 0 auto;
  text-wrap: pretty;
}
.events-page-deco { position: absolute; pointer-events: none; }
.events-page-deco.d1 { top: 60px; left: 8%; width: 16px; height: 16px; border-radius: 50%; background: var(--purple-soft); }
.events-page-deco.d2 { top: 140px; right: 10%; width: 28px; height: 28px; border-radius: 50%; background: var(--lavender); }
.events-page-deco.d3 { top: 50%; left: 4%; width: 10px; height: 10px; border-radius: 50%; background: var(--purple); }
.events-page-deco.d4 { bottom: 30px; right: 6%; width: 22px; height: 22px; border-radius: 50%; background: var(--lavender); border: 2px solid var(--purple-soft); }
.events-page-spark { position: absolute; color: var(--purple); pointer-events: none; }
.events-page-spark.s1 { top: 90px; right: 18%; font-size: 18px; color: var(--navy); }
.events-page-spark.s2 { bottom: 50px; left: 22%; font-size: 14px; }

/* The Events Calendar archive — render inside our content-page shell */
.tribe-archive { padding: 0 0 100px; }
.tribe-archive .container { max-width: 1100px; }
.tribe-common, .tribe-common * {
  font-family: 'Inter', sans-serif !important;
  --tec-color-accent-primary: var(--purple);
  --tec-color-accent-primary-hover: var(--navy);
  --tec-color-accent-primary-active: var(--navy);
  --tec-color-link-primary: var(--navy);
  --tec-color-link-accent: var(--purple);
  --tec-color-link-accent-hover: var(--navy);
}
.tribe-common .tribe-events-calendar-list__event-title-link,
.tribe-common .tribe-events-c-top-bar__datepicker-button,
.tribe-common h1, .tribe-common h2, .tribe-common h3,
.tribe-common .tribe-common-h1, .tribe-common .tribe-common-h2,
.tribe-common .tribe-common-h3, .tribe-common .tribe-common-h4 {
  font-family: 'Playfair Display', serif !important;
  color: var(--navy-deep);
  font-weight: 500;
  letter-spacing: -0.015em;
}
.tribe-common .tribe-common-c-btn,
.tribe-common .tribe-common-c-btn-border,
.tribe-common a.tribe-common-c-btn {
  background: var(--grad) !important;
  color: white !important;
  border-radius: 999px !important;
  padding: 12px 22px !important;
  font-weight: 600;
  border: none !important;
  box-shadow: 0 8px 24px -8px rgba(40, 58, 104, 0.5);
}
.tribe-common .tribe-common-c-btn-border-small,
.tribe-common .tribe-common-c-btn-border:not(.tribe-common-c-btn) {
  background: white !important;
  color: var(--navy) !important;
  border: 1px solid var(--line) !important;
  box-shadow: none;
}
.tribe-events .tribe-events-calendar-list__event-row {
  background: white;
  border-radius: 20px !important;
  border: 1px solid var(--line) !important;
  padding: 24px 28px !important;
  margin-bottom: 18px;
  transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
  box-shadow: 0 12px 28px -20px rgba(40, 58, 104, 0.14);
  align-items: center;
}
.tribe-events .tribe-events-calendar-list__event {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  box-shadow: none !important;
}
.tribe-events .tribe-events-calendar-list__event-row:hover {
  border-color: var(--purple-soft) !important;
  transform: translateY(-2px);
  box-shadow: 0 18px 36px -20px rgba(40, 58, 104, 0.22);
}
.tribe-events .tribe-events-calendar-list__event-datetime,
.tribe-events .tribe-events-calendar-list__event-date-tag {
  font-family: 'JetBrains Mono', monospace !important;
  color: var(--purple) !important;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 12px;
}
.tribe-events .tribe-events-calendar-list__event-title {
  font-family: 'Playfair Display', serif !important;
  font-weight: 500 !important;
  color: var(--navy-deep) !important;
  letter-spacing: -0.015em;
}
.tribe-events .tribe-events-calendar-list__event-title-link { color: var(--navy-deep) !important; }
.tribe-events .tribe-events-calendar-list__event-title-link:hover { color: var(--purple) !important; }
.tribe-events .tribe-events-calendar-list__event-description,
.tribe-events .tribe-events-calendar-list__event-venue {
  color: var(--ink-soft) !important;
  font-size: 14px;
  line-height: 1.6;
}
/* Datepicker / top bar */
.tribe-events .tribe-events-c-top-bar {
  background: var(--lavender-mist);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 14px 18px !important;
  margin-bottom: 28px !important;
}
.tribe-events .tribe-events-c-top-bar__nav-list-item-link,
.tribe-events .tribe-events-c-nav__list-item-link {
  color: var(--navy) !important;
  font-weight: 500;
}
/* Hide the page title that TEC injects (we render our own hero) */
.tribe-archive .tribe-events-header,
.tribe-archive .tribe-events-back,
.tribe-archive .tribe-events-page-title,
.tribe-archive .tribe-common-h2.tribe-common-h--alt { display: none; }

/* Contact Form 7 styling — used on the Register page */
.content-body .wpcf7 { margin-top: 24px; }
.content-body .wpcf7-form p { margin-top: 18px; }
.content-body .wpcf7-form label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--purple); margin-bottom: 8px; }
.content-body .wpcf7-form input[type="text"],
.content-body .wpcf7-form input[type="email"],
.content-body .wpcf7-form input[type="tel"],
.content-body .wpcf7-form input[type="url"],
.content-body .wpcf7-form input[type="number"],
.content-body .wpcf7-form select,
.content-body .wpcf7-form textarea {
  display: block; width: 100%;
  font-family: inherit; font-size: 16px; color: var(--ink);
  background: white;
  border: 1px solid var(--line); border-radius: 12px;
  padding: 14px 16px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.content-body .wpcf7-form input:focus,
.content-body .wpcf7-form select:focus,
.content-body .wpcf7-form textarea:focus {
  outline: none; border-color: var(--purple);
  box-shadow: 0 0 0 4px rgba(139, 112, 157, 0.18);
}
.content-body .wpcf7-form textarea { min-height: 140px; resize: vertical; }
.content-body .wpcf7-form input[type="submit"],
.content-body .wpcf7-form button[type="submit"] {
  background: var(--grad); color: white;
  padding: 16px 30px; border-radius: 999px;
  font-size: 15px; font-weight: 600; letter-spacing: 0.01em;
  border: none; cursor: pointer;
  box-shadow: 0 12px 30px -10px rgba(40, 58, 104, 0.55);
  transition: transform 0.2s;
  width: auto;
}
.content-body .wpcf7-form input[type="submit"]:hover,
.content-body .wpcf7-form button[type="submit"]:hover { transform: translateY(-2px); }
.content-body .wpcf7-not-valid-tip { color: #a3354c; font-size: 13px; margin-top: 6px; }
.content-body .wpcf7-response-output {
  margin-top: 24px; padding: 14px 18px;
  border: 1px solid var(--line); border-radius: 12px;
  background: var(--lavender-mist); color: var(--ink-soft); font-size: 14px;
}

/* ============ BLOCK / PATTERN OVERRIDES ============ */
/* Patterns wrap each section in <div class="wp-block-group {our-class}">.
   These overrides make sure our pillar/grid layouts win against
   Gutenberg's default flex/columns rules. */
.wp-block-columns.about-pillar-grid,
.wp-block-columns.register-grid,
.wp-block-columns.hero-grid,
.wp-block-columns.welcome-grid,
.wp-block-columns.events-grid,
.wp-block-columns.help-grid,
.wp-block-columns.stats {
  display: grid;
  flex-wrap: nowrap;
}

/* Hero / welcome / events two-column grids — preserve the original
   grid-template-columns ratios + vertical centering. The original
   .welcome-grid / .events-grid / .hero-grid rules set these but get out-
   specificity'd by .wp-block-columns; restate at higher specificity. */
.wp-block-columns.hero-grid {
  grid-template-columns: 1.1fr 1fr !important;
  gap: 80px !important;
  align-items: center !important;
}
.wp-block-columns.welcome-grid {
  grid-template-columns: 1fr 1.2fr !important;
  gap: 80px !important;
  align-items: center !important;
}
.wp-block-columns.events-grid {
  grid-template-columns: 1fr 1fr !important;
  gap: 80px !important;
  align-items: center !important;
}
/* And make sure the column itself doesn't stretch its child .welcome-visual
   beyond the explicit 520px — center the visual vertically within the
   column so it sits opposite the text column's middle. */
.wp-block-columns.welcome-grid > .wp-block-column,
.wp-block-columns.hero-grid > .wp-block-column,
.wp-block-columns.events-grid > .wp-block-column {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.wp-block-columns.about-pillar-grid > .wp-block-column,
.wp-block-columns.register-grid > .wp-block-column,
.wp-block-columns.hero-grid > .wp-block-column,
.wp-block-columns.welcome-grid > .wp-block-column,
.wp-block-columns.events-grid > .wp-block-column,
.wp-block-columns.help-grid > .wp-block-column,
.wp-block-columns.stats > .wp-block-column {
  flex-basis: auto !important;
  width: auto !important;
  margin: 0 !important;
}

/* Make pillar/help/stat cards fill their column height so they line up. */
.wp-block-columns.about-pillar-grid > .wp-block-column,
.wp-block-columns.help-grid > .wp-block-column,
.wp-block-columns.stats > .wp-block-column {
  display: flex;
}
.wp-block-columns.about-pillar-grid > .wp-block-column > .wp-block-group.about-pillar-card,
.wp-block-columns.help-grid > .wp-block-column > .wp-block-group.help-card,
.wp-block-columns.stats > .wp-block-column > .wp-block-group.stat {
  flex: 1;
  width: 100%;
}

/* Image blocks used as design "blobs" — figure wrapper needs to act like
   the original positioned div blob. */
figure.wp-block-image.blob,
figure.wp-block-image.welcome-blob,
figure.wp-block-image.events-blob {
  margin: 0;
}
figure.wp-block-image.blob {
  position: absolute;
  top: 40px; right: 60px;
  width: 420px; height: 480px;
  background: var(--grad);
  border-radius: 210px / 240px;
  overflow: hidden;
  box-shadow: 0 40px 80px -30px rgba(40, 58, 104, 0.4);
}
figure.wp-block-image.blob > img { width: 100%; height: 100%; object-fit: cover; object-position: 70% center; display: block; }
figure.wp-block-image.welcome-blob {
  position: absolute; inset: 0 0 0 40px;
  background: var(--lavender);
  border-radius: 240px / 200px;
  overflow: hidden;
}
figure.wp-block-image.welcome-blob > img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
figure.wp-block-image.events-blob {
  position: absolute; right: 0; top: 0;
  width: 100%; height: 100%;
  background: var(--grad);
  border-radius: 100px 32px 100px 32px;
  overflow: hidden;
  box-shadow: 0 40px 80px -30px rgba(40, 58, 104, 0.4);
}
figure.wp-block-image.events-blob > img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }

/* Stat / help / event cards — neutralise default Group block-gap inside cards */
.wp-block-group.stat,
.wp-block-group.help-card,
.wp-block-group.welcome-visual,
.wp-block-group.hero-visual,
.wp-block-group.events-visual,
.wp-block-group.events-list,
.wp-block-group.help-head { gap: 0; }

/* Force the visual columns to keep their explicit heights so the absolutely-
   positioned image blobs inside (welcome-blob / blob / events-blob) get a
   proper bounding box. Otherwise they stretch to the natural height of the
   adjacent text column, producing a too-tall oval. */
.wp-block-group.welcome-visual { height: 520px !important; min-height: 520px !important; }
.wp-block-group.hero-visual    { height: 580px !important; min-height: 580px !important; }
.wp-block-group.events-visual  { height: 420px !important; min-height: 420px !important; }

/* Section wrappers with full-bleed backgrounds need to break out of the
   parent constrained layout. Our <section class="wp-block-group section ..."> blocks
   should render edge-to-edge. */
.wp-block-group.section,
.wp-block-group.cta,
.wp-block-group.hero { width: 100%; }

/* The .container max-width inside Group blocks */
.wp-block-group.container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

/* Reset Group margin in the welcome-grid (single-column grid layouts) */
.welcome-grid .wp-block-group, .events-grid .wp-block-group { margin: 0; }

/* ============ BUTTON BLOCK STYLING ============
   Gutenberg Button blocks render as
   <div class="wp-block-button {our-class}"><a class="wp-block-button__link wp-element-button">…</a></div>
   We style the inner <a> to match the original .btn-primary / .btn-ghost / .cta-btn / .about-cta-btn / .help-card-btn designs. */

.wp-block-buttons.hero-actions { margin: 0; gap: 16px; }

.wp-block-button.btn-primary > .wp-block-button__link.wp-element-button {
  background: var(--grad); color: white;
  padding: 16px 30px; border-radius: 999px;
  font-family: 'Inter', sans-serif; font-size: 15px; font-weight: 600;
  border: none;
  box-shadow: 0 12px 30px -10px rgba(40, 58, 104, 0.55);
  transition: transform 0.2s, box-shadow 0.2s;
}
.wp-block-button.btn-primary > .wp-block-button__link.wp-element-button:hover { transform: translateY(-2px); }

.wp-block-button.btn-ghost > .wp-block-button__link.wp-element-button {
  background: transparent; color: var(--navy);
  padding: 16px 8px; border-radius: 0;
  font-family: 'Inter', sans-serif; font-size: 15px; font-weight: 600;
  border: none;
  box-shadow: none;
}
.wp-block-button.btn-ghost > .wp-block-button__link.wp-element-button::after { content: ' →'; transition: transform 0.2s; display: inline-block; }
.wp-block-button.btn-ghost > .wp-block-button__link.wp-element-button:hover { background: transparent; }
.wp-block-button.btn-ghost > .wp-block-button__link.wp-element-button:hover::after { transform: translateX(4px); }

.wp-block-button.cta-btn > .wp-block-button__link.wp-element-button {
  background: white; color: var(--navy-deep);
  padding: 16px 36px; border-radius: 999px;
  font-family: 'Inter', sans-serif; font-weight: 600; font-size: 15px;
  border: none;
  box-shadow: 0 16px 40px -12px rgba(0,0,0,0.3);
  transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
}
.wp-block-button.cta-btn > .wp-block-button__link.wp-element-button:hover {
  transform: translateY(-2px); background: var(--lavender-mist);
  box-shadow: 0 20px 48px -12px rgba(0,0,0,0.4);
}

.wp-block-button.about-cta-btn > .wp-block-button__link.wp-element-button {
  background: white; color: var(--navy-deep);
  padding: 16px 36px; border-radius: 999px;
  font-family: 'Inter', sans-serif; font-weight: 600; font-size: 15px;
  border: none;
  box-shadow: 0 16px 40px -12px rgba(0,0,0,0.3);
  transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
}
.wp-block-button.about-cta-btn > .wp-block-button__link.wp-element-button:hover {
  transform: translateY(-2px); background: var(--lavender-mist);
  box-shadow: 0 20px 48px -12px rgba(0,0,0,0.4);
}

/* ============ CHIP-FLOAT (HERO FLOATING CARD) ============
   Now built from Group + Heading + Paragraph blocks. */
.chip-float .chip-float-title,
.chip-float h4 {
  font-family: 'Playfair Display', serif; font-size: 18px; font-weight: 500;
  color: var(--navy); line-height: 1.1; margin: 0 0 4px;
}
.chip-float .chip-float-meta,
.chip-float p {
  font-size: 11px; color: var(--muted);
  font-family: 'JetBrains Mono', monospace;
  text-transform: uppercase; letter-spacing: 0.1em;
  margin: 0;
}

/* ============ PILLAR / HELP ICONS — Image block flavour ============
   Icons are now Image blocks pointing to assets/icons/*.svg so editors can
   swap them via the Media Library Replace button. The figure wrapper is
   styled to match the original icon-container divs. */
figure.wp-block-image.about-pillar-icon {
  width: 56px; height: 56px;
  margin: 0 0 24px;
  border-radius: 16px;
  background: var(--lavender-mist);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
figure.wp-block-image.about-pillar-icon > img {
  width: 28px; height: 28px; max-width: 28px; max-height: 28px;
  display: block;
}
figure.wp-block-image.help-icon {
  width: 64px; height: 64px;
  margin: 0 auto 22px;
  border-radius: 20px;
  background: var(--grad);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 12px 24px -10px rgba(40, 58, 104, 0.5);
  overflow: hidden;
}
figure.wp-block-image.help-icon > img {
  width: 28px; height: 28px; max-width: 28px; max-height: 28px;
  display: block;
}

/* ============ EVENT ITEM (HOME PAGE EVENTS LIST) ============
   Each event is now a Group with date + info subgroups. */
.events-list .event-item {
  display: grid; grid-template-columns: 84px 1fr;
  align-items: center; gap: 20px;
  padding: 18px 22px;
  background: white; border-radius: 16px; border: 1px solid var(--line);
  margin: 0 0 16px;
  transition: border-color 0.2s, transform 0.2s;
  position: relative;
}
.events-list .event-item:last-child { margin-bottom: 0; }
.events-list .event-item:hover { border-color: var(--purple-soft); transform: translateX(4px); }
.events-list .event-item::after {
  content: '→'; color: var(--purple); font-size: 18px; opacity: 0.5;
  position: absolute; right: 22px; top: 50%; transform: translateY(-50%);
  transition: opacity 0.2s, transform 0.2s;
}
.events-list .event-item:hover::after { opacity: 1; transform: translateY(-50%) translateX(4px); }
.event-item .event-date {
  background: var(--lavender-mist);
  border-radius: 12px; padding: 10px 8px; text-align: center;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  margin: 0;
}
.event-item .event-date .day {
  font-family: 'Playfair Display', serif; font-size: 24px; font-weight: 500;
  color: var(--navy); line-height: 1; margin: 0;
}
.event-item .event-date .month {
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--purple); margin: 2px 0 0; font-family: 'JetBrains Mono', monospace;
}
.event-item .event-info { margin: 0; padding-right: 36px; }
.event-item .event-info h4 {
  font-family: 'Playfair Display', serif; font-size: 18px; font-weight: 500;
  color: var(--navy); margin: 0 0 4px;
}
.event-item .event-info .event-meta { font-size: 13px; color: var(--muted); margin: 0; }

/* ============ EVENTS-CARD-FLOAT ============ */
.events-card-float .events-card-float-date {
  font-family: 'JetBrains Mono', monospace; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.15em;
  color: var(--purple); margin: 0 0 8px;
}
.events-card-float h4 {
  font-family: 'Playfair Display', serif; font-size: 18px;
  color: var(--navy); line-height: 1.2; margin: 0 0 8px; font-weight: 500;
}
.events-card-float .events-card-float-meta {
  font-size: 12px; color: var(--muted); margin: 0;
}

/* ============ REGISTER-EXPECT (sidebar list) ============
   Now a List block with bullets replaced by purple dots via CSS. */
ul.register-expect {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 18px;
}
ul.register-expect li {
  font-size: 14px; line-height: 1.55; color: var(--ink-soft);
  position: relative; padding-left: 32px;
}
ul.register-expect li::before {
  content: ''; position: absolute; left: 0; top: 6px;
  width: 16px; height: 16px; border-radius: 5px;
  background: white;
  box-shadow: inset 0 0 0 1px var(--purple-soft);
}
ul.register-expect li::after {
  content: ''; position: absolute; left: 5px; top: 11px;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--purple);
}
ul.register-expect li strong { color: var(--ink); font-weight: 600; }
/* Our card classes sit on the inner Group; cancel out Gutenberg's default
   block-gap on Groups so card padding looks right. */
.wp-block-group.about-pillar-card,
.wp-block-group.about-cta-card,
.wp-block-group.register-side-card,
.wp-block-group.register-form-card { gap: 0; }
/* The .page-blocks wrapper holds all the patterns; let sections span full
   width but content inside .X-container is constrained. */
.page-blocks { background: var(--cream); }

/* Force every .alignfull section to ACTUALLY span 100vw, regardless of how
   deeply nested it is. WP core's alignfull break-out only works as a direct
   child of .has-global-padding — but the homepage template editor (and other
   templated views) can nest content one or two levels deeper, which breaks
   the layout. The 100vw + negative-margin trick works at any nesting level. */
.editor-styles-wrapper .wp-block-group.alignfull,
.editor-styles-wrapper .wp-block-image.alignfull {
  position: relative;
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
}

/* Give every cream-themed section an EXPLICIT background so it renders the
   same in the editor (where .page-blocks doesn't exist and the canvas body
   defaults to white) as it does on the front-end. The lavender-themed
   sections (.help / .about-purpose) keep their own background-color rules
   below — these don't override them. */
.about-hero, .about-story, .about-cta,
.news-hero, .news-body,
.register-hero, .register-form-section,
.hero, .welcome, .cta, .events-section, #events {
  background-color: var(--cream);
}

/* ============ DECORATIVE DOTS — pure CSS ============
   Rendered via stacked radial-gradient backgrounds so the editor view stays
   clean (no Custom HTML blocks in the page content). Each gradient draws
   one dot. Positions and colours match the original design. */

.about-hero {
  background-image:
    /* d1 — 16px purple-soft, top:60px left:8% */
    radial-gradient(circle at 8% 68px, var(--purple-soft) 8px, transparent 9px),
    /* d2 — 28px lavender, top:140px right:10% */
    radial-gradient(circle at 90% 154px, var(--lavender) 14px, transparent 15px),
    /* d3 — 10px purple, top:40% left:4% */
    radial-gradient(circle at 4% 40%, var(--purple) 5px, transparent 6px),
    /* d4 — 22px lavender ring with 2px purple-soft border, bottom:80px right:6% */
    radial-gradient(circle at 94% calc(100% - 91px), var(--lavender) 9px, var(--purple-soft) 9px 11px, transparent 12px),
    /* d5 — 12px navy, bottom:140px left:12% */
    radial-gradient(circle at 12% calc(100% - 146px), var(--navy) 6px, transparent 7px);
  background-repeat: no-repeat;
}
.about-hero::before {
  content: '\2727';  /* ✧ */
  position: absolute; top: 90px; right: 18%;
  color: var(--navy); font-size: 18px; pointer-events: none;
}
.about-hero::after {
  content: '\2726';  /* ✦ */
  position: absolute; bottom: 120px; left: 22%;
  color: var(--purple); font-size: 14px; pointer-events: none;
}
.about-hero { position: relative; }

.register-hero {
  background-image:
    radial-gradient(circle at 8% 68px, var(--purple-soft) 8px, transparent 9px),
    radial-gradient(circle at 90% 154px, var(--lavender) 14px, transparent 15px),
    radial-gradient(circle at 4% 50%, var(--purple) 5px, transparent 6px),
    radial-gradient(circle at 94% calc(100% - 51px), var(--lavender) 9px, var(--purple-soft) 9px 11px, transparent 12px);
  background-repeat: no-repeat;
}
.register-hero::before {
  content: '\2727'; position: absolute; top: 90px; right: 18%;
  color: var(--navy); font-size: 18px; pointer-events: none;
}
.register-hero::after {
  content: '\2726'; position: absolute; bottom: 60px; left: 22%;
  color: var(--purple); font-size: 14px; pointer-events: none;
}
.register-hero { position: relative; }

.news-hero {
  background-image:
    radial-gradient(circle at 8% 68px, var(--purple-soft) 8px, transparent 9px),
    radial-gradient(circle at 90% 154px, var(--lavender) 14px, transparent 15px),
    radial-gradient(circle at 4% 50%, var(--purple) 5px, transparent 6px),
    radial-gradient(circle at 94% calc(100% - 51px), var(--lavender) 9px, var(--purple-soft) 9px 11px, transparent 12px);
  background-repeat: no-repeat;
}
.news-hero::before {
  content: '\2727'; position: absolute; top: 90px; right: 18%;
  color: var(--navy); font-size: 18px; pointer-events: none;
}
.news-hero::after {
  content: '\2726'; position: absolute; bottom: 60px; left: 22%;
  color: var(--purple); font-size: 14px; pointer-events: none;
}
.news-hero { position: relative; }

/* Home-page hero — decoratives inside .hero-visual (right column) plus
   four sparkle stars centred at the top of the section. */
.hero { position: relative; }
.hero::before {
  content: '\2726 \00a0 \2727 \00a0 \2726 \00a0 \2727';  /* ✦ ✧ ✦ ✧ */
  position: absolute; top: 60px; left: 50%; transform: translateX(-50%);
  color: var(--purple-soft); font-size: 14px; letter-spacing: 0.4em;
  pointer-events: none; z-index: 1;
}
.hero-visual { position: relative; }
.hero-visual::before {
  content: '';
  position: absolute; inset: 0;
  pointer-events: none;
  background-image:
    /* d1 — 14px navy, top:40px right:480px */
    radial-gradient(circle at calc(100% - 480px) 47px, var(--navy) 7px, transparent 8px),
    /* d2 — 24px lavender, top:100px right:30px */
    radial-gradient(circle at calc(100% - 30px) 112px, var(--lavender) 12px, transparent 13px),
    /* d3 — 10px purple, bottom:80px right:470px */
    radial-gradient(circle at calc(100% - 470px) calc(100% - 85px), var(--purple) 5px, transparent 6px),
    /* d4 — 18px purple-soft, bottom:30px right:80px */
    radial-gradient(circle at calc(100% - 80px) calc(100% - 39px), var(--purple-soft) 9px, transparent 10px);
  background-repeat: no-repeat;
}
.hero-visual::after {
  content: '\2726';  /* ✦ */
  position: absolute; top: 60px; left: -10px;
  color: var(--purple); font-size: 14px; pointer-events: none;
}

/* Marketing pages stack section→wave→section→wave→section flush. Override
   TT25's default block-gap (1.2rem margin-block-start) on every top-level
   block child of the page content, so no cream gap appears between the
   lavender Purpose section and the wave that abuts it. Each section already
   has its own internal padding. */
.page-blocks > *,
.page-blocks > .wp-block-group,
.page-blocks > .wp-block-image,
.page-blocks > section,
.editor-styles-wrapper > .is-root-container > *,
:root :where(.editor-styles-wrapper) :where(.is-layout-constrained) > .wp-block-group,
:root :where(.editor-styles-wrapper) :where(.is-layout-constrained) > .wp-block-image,
:root :where(.editor-styles-wrapper) :where(.is-layout-constrained) > section {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  margin-block-start: 0 !important;
  margin-block-end: 0 !important;
}
/* Hide the line-break trickery in headings on small screens (the <br> in the
   About hero) while keeping the markup intact. */
@media (max-width: 560px) {
  .about-hero h1 br, .register-hero h1 br, .news-hero h1 br { display: none; }
}

/* ============ ABOUT PAGE ============ */
.about-container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

.about-hero { position: relative; padding: 100px 0 80px; overflow: hidden; text-align: center; }
.about-eyebrow {
  font-family: 'JetBrains Mono', monospace; font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple);
  margin-bottom: 28px;
  display: inline-flex; align-items: center; gap: 12px;
}
.about-eyebrow::before, .about-eyebrow::after { content: ''; width: 32px; height: 1px; background: currentColor; }
.about-hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(48px, 7vw, 96px);
  line-height: 1.0; font-weight: 400; letter-spacing: -0.025em;
  color: var(--navy-deep); margin-bottom: 32px; text-wrap: balance;
}
.about-hero h1 em {
  font-style: italic;
  background: var(--grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 500;
}
.about-lede {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(20px, 2.2vw, 26px); line-height: 1.5;
  color: var(--ink-soft); max-width: 720px; margin: 0 auto;
  text-wrap: pretty;
}
.about-deco { position: absolute; pointer-events: none; }
.about-deco.d1 { top: 60px; left: 8%; width: 16px; height: 16px; border-radius: 50%; background: var(--purple-soft); }
.about-deco.d2 { top: 140px; right: 10%; width: 28px; height: 28px; border-radius: 50%; background: var(--lavender); }
.about-deco.d3 { top: 40%; left: 4%; width: 10px; height: 10px; border-radius: 50%; background: var(--purple); }
.about-deco.d4 { bottom: 80px; right: 6%; width: 22px; height: 22px; border-radius: 50%; background: var(--lavender); border: 2px solid var(--purple-soft); }
.about-deco.d5 { bottom: 140px; left: 12%; width: 12px; height: 12px; border-radius: 50%; background: var(--navy); }
.about-spark { position: absolute; color: var(--purple); pointer-events: none; }
.about-spark.s1 { top: 90px; right: 18%; font-size: 18px; color: var(--navy); }
.about-spark.s2 { bottom: 120px; left: 22%; font-size: 14px; }
.about-spark.s3 { top: 220px; left: 28%; font-size: 12px; color: var(--purple-soft); }

.about-story { padding: 60px 0 100px; }
.about-story-grid { max-width: 880px; margin: 0 auto; display: flex; flex-direction: column; gap: 16px; }
.about-story p { font-size: 19px; line-height: 1.75; color: var(--ink-soft); text-wrap: pretty; }
.about-story-grid > p:first-of-type::first-letter {
  font-family: 'Playfair Display', serif;
  font-size: 84px; line-height: 0.8; float: left;
  padding: 8px 14px 0 0;
  background: var(--grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 500;
}

.about-pull-quote {
  margin: 32px auto; padding: 48px 56px; max-width: 720px;
  background: transparent; text-align: center; position: relative;
}
.about-pull-quote::before,
.about-pull-quote::after {
  content: ''; position: absolute; left: 50%; transform: translateX(-50%);
  width: 32px; height: 1px; background: var(--purple-soft); opacity: 0.7;
}
.about-pull-quote::before { top: 24px; }
.about-pull-quote::after  { bottom: 24px; }
.about-pull-quote p {
  font-family: 'Playfair Display', serif; font-style: italic; font-weight: 400;
  font-size: clamp(20px, 2vw, 24px); line-height: 1.55;
  color: var(--navy-deep); text-wrap: balance;
}

.about-wave-wrap { position: relative; line-height: 0; }
.about-wave-wrap.cream { background: var(--cream); }
.about-wave-wrap.lavender { background: var(--lavender-mist); }
.about-wave { width: 100%; height: 80px; display: block; }

.about-purpose { background: var(--lavender-mist); position: relative; padding: 100px 0; }
.about-purpose::before { content: ''; position: absolute; top: 60px; left: 6%; width: 14px; height: 14px; border-radius: 50%; background: var(--purple-soft); }
.about-purpose::after { content: ''; position: absolute; bottom: 80px; right: 8%; width: 22px; height: 22px; border-radius: 50%; background: var(--lavender); border: 2px solid var(--purple-soft); }
.about-purpose-head { text-align: center; margin-bottom: 64px; }
.about-purpose-head h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(36px, 4.5vw, 56px); line-height: 1.05;
  font-weight: 400; letter-spacing: -0.02em;
  color: var(--navy-deep); margin-bottom: 20px; text-wrap: balance;
}
.about-purpose-head h2 em { font-style: italic; color: var(--purple); }
.about-purpose-head p { font-size: 16px; line-height: 1.6; color: var(--ink-soft); max-width: 560px; margin: 0 auto; }

.about-pillar-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; max-width: 1100px; margin: 0 auto; }
.about-pillar-card {
  background: white; border: 1px solid var(--line); border-radius: 24px;
  padding: 40px 28px; position: relative;
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.about-pillar-card:hover { transform: translateY(-4px); box-shadow: 0 24px 48px -24px rgba(40, 58, 104, 0.25); border-color: var(--purple-soft); }
.about-pillar-icon {
  width: 56px; height: 56px; border-radius: 16px;
  background: var(--lavender-mist); color: var(--purple);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 24px;
}
.about-pillar-card h3 {
  font-family: 'Playfair Display', serif; font-size: 24px; font-weight: 500;
  color: var(--navy); margin-bottom: 12px;
}
.about-pillar-num {
  font-family: 'JetBrains Mono', monospace; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple);
  margin-bottom: 16px; display: block;
}
.about-pillar-card p { font-size: 14px; line-height: 1.6; color: var(--ink-soft); }

.about-cta { padding: 100px 0; }
.about-cta-card {
  background: var(--navy); background-image: var(--grad);
  border-radius: 36px; padding: 80px 60px;
  position: relative; overflow: hidden; color: white; text-align: center;
}
.about-cta-card::before {
  content: ''; position: absolute; right: -100px; top: -100px;
  width: 400px; height: 400px; border-radius: 50%;
  background: radial-gradient(circle at center, rgba(255,255,255,0.18), transparent 70%);
}
.about-cta-card::after {
  content: ''; position: absolute; left: -80px; bottom: -120px;
  width: 320px; height: 320px; border-radius: 50%;
  background: radial-gradient(circle at center, rgba(255,255,255,0.12), transparent 70%);
}
.about-cta-inner { position: relative; z-index: 1; max-width: 640px; margin: 0 auto; }
.about-cta-eyebrow {
  font-family: 'JetBrains Mono', monospace; font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--lavender);
  margin-bottom: 20px;
  display: inline-flex; align-items: center; gap: 12px; justify-content: center;
}
.about-cta-eyebrow::before, .about-cta-eyebrow::after { content: ''; width: 24px; height: 1px; background: var(--lavender); }
.about-cta h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(36px, 4.5vw, 56px); line-height: 1.05;
  font-weight: 400; letter-spacing: -0.02em;
  color: white; margin-bottom: 20px; text-wrap: balance;
}
.about-cta h2 em { font-style: italic; color: var(--lavender); }
.about-cta p {
  color: rgba(255,255,255,0.82); max-width: 540px; margin: 0 auto 36px;
  line-height: 1.7; font-size: 17px;
}
/* .about-cta-btn visual styling lives in the BUTTON BLOCK STYLING section.
   The wrapper z-index is preserved so the button sits above the radial-bloom
   decoratives in .about-cta-card. */
.about-cta-btn { position: relative; z-index: 1; }

/* ============ REGISTER PAGE ============ */
.register-container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

.register-hero { position: relative; padding: 80px 0 60px; overflow: hidden; text-align: center; }
.register-hero .register-container { position: relative; }
.register-eyebrow {
  font-family: 'JetBrains Mono', monospace; font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple);
  margin-bottom: 28px;
  display: inline-flex; align-items: center; gap: 12px;
}
.register-eyebrow::before, .register-eyebrow::after { content: ''; width: 32px; height: 1px; background: currentColor; }
.register-hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(48px, 6.5vw, 84px);
  line-height: 1.0; font-weight: 400; letter-spacing: -0.025em;
  color: var(--navy-deep); margin-bottom: 28px; text-wrap: balance;
}
.register-hero h1 em {
  font-style: italic;
  background: var(--grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 500;
}
.register-lede {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(18px, 1.8vw, 22px); line-height: 1.5;
  color: var(--ink-soft); max-width: 620px; margin: 0 auto;
  text-wrap: pretty;
}
.register-deco { position: absolute; pointer-events: none; }
.register-deco.d1 { top: 60px; left: 8%; width: 16px; height: 16px; border-radius: 50%; background: var(--purple-soft); }
.register-deco.d2 { top: 140px; right: 10%; width: 28px; height: 28px; border-radius: 50%; background: var(--lavender); }
.register-deco.d3 { top: 50%; left: 4%; width: 10px; height: 10px; border-radius: 50%; background: var(--purple); }
.register-deco.d4 { bottom: 40px; right: 6%; width: 22px; height: 22px; border-radius: 50%; background: var(--lavender); border: 2px solid var(--purple-soft); }
.register-spark { position: absolute; color: var(--purple); pointer-events: none; }
.register-spark.s1 { top: 90px; right: 18%; font-size: 18px; color: var(--navy); }
.register-spark.s2 { bottom: 60px; left: 22%; font-size: 14px; }

.register-form-section { padding: 40px 0 100px; position: relative; }
.register-grid {
  display: grid; grid-template-columns: 1.6fr 1fr; gap: 60px;
  max-width: 1100px; margin: 0 auto; align-items: start;
}

.register-success {
  background: var(--lavender-mist);
  border: 1px solid var(--purple-soft);
  border-radius: 16px;
  padding: 20px 24px;
  margin-bottom: 28px;
  color: var(--navy-deep);
  font-size: 15px;
  line-height: 1.55;
}
.register-success strong { font-family: 'Playfair Display', serif; font-weight: 500; font-size: 17px; display: block; margin-bottom: 4px; color: var(--navy); }
.register-error {
  background: rgba(163, 53, 76, 0.06);
  border: 1px solid rgba(163, 53, 76, 0.4);
  border-radius: 16px;
  padding: 20px 24px;
  margin-bottom: 28px;
  color: #a3354c;
  font-size: 14px;
  line-height: 1.55;
}

.register-form-card {
  background: white;
  border: 1px solid var(--line);
  border-radius: 32px;
  padding: 48px;
  box-shadow: 0 24px 48px -32px rgba(40, 58, 104, 0.18);
}
.register-form-head { margin-bottom: 36px; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.register-form-head h2 {
  font-family: 'Playfair Display', serif;
  font-size: 28px; font-weight: 500;
  color: var(--navy-deep); margin-bottom: 8px;
}
.register-form-head p { font-size: 14px; color: var(--ink-soft); line-height: 1.6; }

.register-fieldset { margin-bottom: 32px; }
.register-fieldset:last-of-type { margin-bottom: 0; }
.register-fieldset-title {
  font-family: 'JetBrains Mono', monospace; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.18em;
  color: var(--purple); margin-bottom: 20px;
  display: flex; align-items: center; gap: 12px;
}
.register-fieldset-title::after { content: ''; flex: 1; height: 1px; background: var(--line); }

.register-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }
.register-row.single { grid-template-columns: 1fr; }
.register-row:last-child { margin-bottom: 0; }
.register-field { display: flex; flex-direction: column; gap: 8px; }
.register-field label { font-size: 13px; font-weight: 500; color: var(--ink); letter-spacing: 0.01em; }
.register-field label .req { color: var(--purple); margin-left: 2px; }

.register-field input,
.register-field select,
.register-field textarea {
  font-family: inherit; font-size: 15px;
  padding: 14px 16px;
  background: var(--cream);
  border: 1px solid var(--line);
  border-radius: 12px;
  color: var(--ink);
  transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
  width: 100%;
}
.register-field input:focus,
.register-field select:focus,
.register-field textarea:focus {
  outline: none;
  border-color: var(--purple);
  background: white;
  box-shadow: 0 0 0 4px rgba(139, 112, 157, 0.12);
}
.register-field input::placeholder, .register-field textarea::placeholder { color: var(--muted); }
.register-field select {
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none' stroke='%238B709D' stroke-width='1.6'%3E%3Cpath d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 18px center;
  padding-right: 44px;
}
.register-field textarea { resize: vertical; min-height: 100px; }

.register-checkboxes { display: flex; flex-direction: column; gap: 14px; }
.register-checkbox {
  display: flex; align-items: flex-start; gap: 12px; cursor: pointer;
  font-size: 14px; line-height: 1.55; color: var(--ink-soft);
}
.register-checkbox input[type="checkbox"] {
  appearance: none;
  width: 20px; height: 20px; min-width: 20px;
  border: 1.5px solid var(--purple-soft);
  border-radius: 6px; background: white; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background 0.2s, border-color 0.2s;
  margin-top: 1px;
}
.register-checkbox input[type="checkbox"]:checked { background: var(--purple); border-color: var(--purple); }
.register-checkbox input[type="checkbox"]:checked::after {
  content: ''; width: 10px; height: 6px;
  border-left: 2px solid white;
  border-bottom: 2px solid white;
  transform: rotate(-45deg) translate(1px, -1px);
}
.register-checkbox strong { color: var(--ink); font-weight: 600; }

.register-submit {
  margin-top: 40px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
}
.register-payment-notice { font-size: 14px; line-height: 1.55; color: var(--ink-soft); width: 100%; margin: 0 0 16px 0; }
.register-payment-notice strong { color: var(--ink); font-weight: 600; }
.register-submit { justify-content: flex-end; }
.register-submit .register-fineprint { margin-right: auto; }
.register-fineprint { font-size: 12px; color: var(--muted); line-height: 1.5; max-width: 320px; }
.register-fineprint a { color: var(--purple); text-decoration: underline !important; text-decoration-color: rgba(139, 112, 157, 0.3) !important; text-underline-offset: 3px; }
.register-fineprint a:hover { text-decoration-color: var(--purple) !important; }
.register-btn {
  background: var(--grad); color: white;
  padding: 16px 36px; border-radius: 999px;
  font-family: inherit; font-weight: 600; font-size: 15px;
  display: inline-flex; align-items: center; gap: 10px;
  border: none; cursor: pointer;
  box-shadow: 0 12px 32px -8px rgba(40, 58, 104, 0.45);
  transition: transform 0.2s, box-shadow 0.2s;
}
.register-btn:hover { transform: translateY(-2px); box-shadow: 0 18px 40px -8px rgba(40, 58, 104, 0.55); }

.register-sidebar { display: flex; flex-direction: column; gap: 24px; position: sticky; top: 120px; }
.register-side-card {
  background: var(--lavender-mist);
  border-radius: 24px;
  padding: 32px;
  position: relative;
  overflow: hidden;
}
.register-side-card.dark {
  background: var(--navy);
  background-image: var(--grad);
  color: white;
}
.register-side-card.dark::before {
  content: ''; position: absolute; right: -60px; top: -60px;
  width: 220px; height: 220px; border-radius: 50%;
  background: radial-gradient(circle at center, rgba(255,255,255,0.16), transparent 70%);
  pointer-events: none;
}
.register-side-eyebrow {
  font-family: 'JetBrains Mono', monospace; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.18em;
  color: var(--purple); margin-bottom: 16px;
  display: flex; align-items: center; gap: 10px;
}
.register-side-card.dark .register-side-eyebrow { color: var(--lavender); }
.register-side-eyebrow::before { content: ''; width: 24px; height: 1px; background: currentColor; }
.register-side-card h3 {
  font-family: 'Playfair Display', serif;
  font-size: 24px; font-weight: 500; line-height: 1.15;
  color: var(--navy-deep); margin-bottom: 16px;
  position: relative;
}
.register-side-card.dark h3 { color: white; }
.register-side-card h3 em { font-style: italic; color: var(--purple); }
.register-side-card.dark h3 em { color: var(--lavender); }
.register-side-card p { font-size: 14px; line-height: 1.65; color: var(--ink-soft); position: relative; }
.register-side-card.dark p { color: rgba(255,255,255,0.85); }

.register-expect { list-style: none; display: flex; flex-direction: column; gap: 18px; position: relative; padding: 0; margin: 0; }
.register-expect li { display: flex; gap: 14px; align-items: flex-start; font-size: 14px; line-height: 1.55; color: var(--ink-soft); }
.register-expect-icon {
  width: 32px; height: 32px; min-width: 32px;
  border-radius: 10px;
  background: white;
  color: var(--purple);
  display: flex; align-items: center; justify-content: center;
}
.register-expect li strong { color: var(--ink); font-weight: 600; display: block; margin-bottom: 2px; }

/* ============ NEWS PAGE ============ */
.news-container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

.news-hero { position: relative; padding: 80px 0 60px; overflow: hidden; text-align: center; }
.news-hero .news-container { position: relative; }
.news-eyebrow {
  font-family: 'JetBrains Mono', monospace; font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--purple);
  margin-bottom: 28px;
  display: inline-flex; align-items: center; gap: 12px;
}
.news-eyebrow::before, .news-eyebrow::after { content: ''; width: 32px; height: 1px; background: currentColor; }
.news-hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(48px, 6.5vw, 84px);
  line-height: 1.0; font-weight: 400; letter-spacing: -0.025em;
  color: var(--navy-deep); margin-bottom: 28px; text-wrap: balance;
}
.news-hero h1 em {
  font-style: italic;
  background: var(--grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 500;
}
.news-lede {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(18px, 1.8vw, 22px); line-height: 1.5;
  color: var(--ink-soft); max-width: 620px; margin: 0 auto;
  text-wrap: pretty;
}
.news-deco { position: absolute; pointer-events: none; }
.news-deco.d1 { top: 60px; left: 8%; width: 16px; height: 16px; border-radius: 50%; background: var(--purple-soft); }
.news-deco.d2 { top: 140px; right: 10%; width: 28px; height: 28px; border-radius: 50%; background: var(--lavender); }
.news-deco.d3 { top: 50%; left: 4%; width: 10px; height: 10px; border-radius: 50%; background: var(--purple); }
.news-deco.d4 { bottom: 40px; right: 6%; width: 22px; height: 22px; border-radius: 50%; background: var(--lavender); border: 2px solid var(--purple-soft); }
.news-spark { position: absolute; color: var(--purple); pointer-events: none; }
.news-spark.s1 { top: 90px; right: 18%; font-size: 18px; color: var(--navy); }
.news-spark.s2 { bottom: 60px; left: 22%; font-size: 14px; }

.news-body { padding: 20px 0 100px; }
.news-body .news-container { max-width: 880px; }

/* Style WP editor content rendered as news articles (each top-level group becomes a card) */
.news-articles .wp-block-group {
  background: white;
  border: 1px solid var(--line) !important;
  border-radius: 24px !important;
  padding: 40px 44px !important;
  margin: 0 0 28px 0;
  box-shadow: 0 24px 48px -32px rgba(40, 58, 104, 0.12);
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
  color: var(--ink-soft) !important;
  background-image: none !important;
  background-color: white !important;
}
.news-articles .wp-block-group:hover { transform: translateY(-3px); box-shadow: 0 30px 56px -24px rgba(40, 58, 104, 0.18); border-color: var(--purple-soft) !important; }
.news-articles .wp-block-group h1,
.news-articles .wp-block-group h2,
.news-articles .wp-block-group h3,
.news-articles .wp-block-group h4 {
  font-family: 'Playfair Display', serif !important;
  color: var(--navy-deep) !important;
  font-weight: 500 !important;
  letter-spacing: -0.015em;
  line-height: 1.2;
  margin-bottom: 16px;
  font-size: 28px !important;
}
.news-articles .wp-block-group p {
  font-family: 'Inter', sans-serif !important;
  font-size: 16px !important;
  line-height: 1.7 !important;
  color: var(--ink-soft) !important;
  margin-bottom: 14px;
}
.news-articles .wp-block-group p:last-child { margin-bottom: 0; }
.news-articles .wp-block-group p:first-child {
  font-family: 'JetBrains Mono', monospace !important;
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--purple) !important;
  font-weight: 500 !important;
  margin-bottom: 14px;
}
.news-articles .wp-block-group strong { color: var(--ink); }
.news-articles .wp-block-group a { color: var(--navy); border-bottom: 1px solid var(--purple-soft); }
.news-articles .wp-block-group a:hover { color: var(--purple); border-color: var(--purple); }
.news-articles .wp-block-group ul, .news-articles .wp-block-group ol { padding-left: 1.4em; margin-bottom: 14px; }
.news-articles .wp-block-group li { margin-top: 0.4em; color: var(--ink-soft); }
/* Suppress any wide cover block left in the editor — the template provides the hero */
.news-articles .wp-block-cover { display: none; }
.news-articles .wp-block-columns { gap: 24px; }

.news-empty {
  text-align: center;
  padding: 60px 0;
  font-size: 17px;
  color: var(--muted);
  font-style: italic;
  font-family: 'Playfair Display', serif;
}

/* ============ RESPONSIVE ============ */
@media (max-width: 920px) {
  .hero-grid, .welcome-grid, .events-grid, .cta-card, .footer-grid { grid-template-columns: 1fr; gap: 48px; }
  .about-pillar-grid { grid-template-columns: repeat(2, 1fr); }
  .about-pull-quote { padding: 36px 28px; }
  .help-grid { grid-template-columns: repeat(2, 1fr); }
  .hero-visual, .welcome-visual, .events-visual { height: 460px; max-width: 460px; margin: 0 auto; width: 100%; }
  .blob, .events-blob { width: 100%; }
  .cta-card { padding: 56px 32px; }
  .register-grid { grid-template-columns: 1fr; gap: 40px; }
  .register-sidebar { position: static; }
  .register-form-card { padding: 32px 24px; }
}
@media (max-width: 560px) {
  .help-grid { grid-template-columns: 1fr; }
  .stats { grid-template-columns: repeat(3, 1fr); gap: 10px; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .about-pillar-grid { grid-template-columns: 1fr; }
  .about-story-grid > p:first-of-type::first-letter { font-size: 64px; padding: 6px 10px 0 0; }
  .about-cta-card { padding: 56px 28px; }
  .register-row { grid-template-columns: 1fr; }
  .register-submit { flex-direction: column; align-items: stretch; }
  .register-btn { justify-content: center; }
  .news-articles .wp-block-group { padding: 28px 24px !important; }
}

/* ============ SINGLE EVENT PAGE ============ */
.event-single-hero {
	position: relative;
	padding: 70px 0 30px;
	overflow: hidden;
	text-align: center;
}
.event-single-hero .events-page-container { position: relative; }
.event-single-back {
	display: inline-flex; align-items: center; gap: 6px;
	font-family: 'JetBrains Mono', monospace;
	font-size: 11px; text-transform: uppercase; letter-spacing: 0.16em;
	color: var(--purple);
	margin-bottom: 24px;
	transition: color 0.2s, transform 0.2s;
}
.event-single-back:hover { color: var(--navy); transform: translateX(-3px); }
.event-single-hero h1 {
	font-family: 'Playfair Display', serif;
	font-size: clamp(38px, 5vw, 64px);
	line-height: 1.04; font-weight: 400; letter-spacing: -0.02em;
	color: var(--navy-deep);
	margin: 0 0 18px; text-wrap: balance;
}
.event-single-hero h1 em {
	font-style: italic;
	background: var(--grad);
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent;
	font-weight: 500;
}
.event-single-when {
	font-family: 'Inter', sans-serif;
	font-size: 16px; color: var(--ink-soft); margin: 0;
}

.event-single { padding: 30px 0 100px; }
.event-single .container { max-width: 840px; }
.event-single-body { font-size: 17px; line-height: 1.7; color: var(--ink-soft); }
.event-single-body > * + * { margin-top: 1.1em; }
.event-single-body p { color: var(--ink-soft); }
.event-single-body strong { color: var(--ink); }

/* Featured image (tribe/featured-image block) */
.event-single-body .tribe-events-event-image,
.event-single-body img.wp-post-image {
	border-radius: 24px;
	margin: 0 auto 32px;
	display: block; max-width: 100%;
	box-shadow: 0 30px 60px -30px rgba(40, 58, 104, 0.3);
}

/* Hide the schedule block (tribe/event-datetime) — date/time already in hero */
.event-single-body .tribe-events-schedule { display: none; }

/* "Add to calendar" dropdown sits as its own row */
.event-single-body .tribe-block__events-link {
	margin: 36px 0;
	display: flex; justify-content: flex-start;
}
.event-single-body .tribe-events-c-subscribe-dropdown__container { display: inline-block; }

/* Details meta box (tribe/classic-event-details) */
.event-single-body .tribe-events-event-meta {
	background: var(--lavender-mist);
	border-radius: 22px;
	padding: 32px 36px;
	border: 1px solid var(--line);
	margin-top: 36px;
}
.event-single-body .tribe-events-event-meta .tribe-events-single-section-title {
	font-family: 'Playfair Display', serif !important;
	font-size: 22px !important; font-weight: 500 !important;
	color: var(--navy-deep) !important;
	margin: 0 0 18px !important;
	letter-spacing: -0.01em;
}
.event-single-body .tribe-events-meta-list {
	list-style: none; padding: 0; margin: 0;
	display: grid; gap: 14px;
}
.event-single-body .tribe-events-meta-item {
	display: grid; grid-template-columns: 110px 1fr; gap: 16px;
	align-items: baseline; padding: 0; margin: 0;
}
.event-single-body .tribe-events-meta-label {
	font-family: 'JetBrains Mono', monospace;
	font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em;
	color: var(--purple); font-weight: 500;
}
.event-single-body .tribe-events-meta-value { color: var(--ink); font-size: 15px; line-height: 1.5; }
.event-single-body .tribe-events-meta-value a { color: var(--navy); border-bottom: 1px solid var(--purple-soft); transition: color 0.2s, border-color 0.2s; }
.event-single-body .tribe-events-meta-value a:hover { color: var(--purple); border-color: var(--purple); }

/* Venue block */
.event-single-body .tribe-block__venue { margin-top: 24px; }
.event-single-body .tribe-events-venue-details,
.event-single-body .tribe-block__venue address { font-style: normal; color: var(--ink-soft); }

/* Hide the legacy single-event title and back link (we render our own in the hero) */
.event-single .tribe-events-back,
.event-single .tribe-events-single-event-title { display: none; }

/* Override Tribe default float layout that constrains meta-group to ~33% width */
.event-single-body .tribe-events-meta-group,
.event-single-body .tribe-events-meta-group-details,
.event-single-body .tribe-events-meta-group-venue,
.event-single-body .tribe-events-meta-group-organizer {
	float: none !important;
	width: 100% !important;
	max-width: none !important;
	padding: 0 !important;
	margin: 0 !important;
}
.event-single-body .tribe-events-meta-item { width: 100%; }
.event-single-body .tribe-events-meta-value { min-width: 0; }

/* Hide tribe venue block when no venue is assigned (no element children) */
.event-single-body .tribe-block__venue:not(:has(*)) { display: none; }

/* ============ NAV TOGGLE (hamburger) ============ */
.nav-menu {
	display: contents;
}
.nav-toggle {
	display: none;
	width: 44px; height: 44px;
	padding: 0; margin: 0;
	background: none; border: 0;
	cursor: pointer;
	color: var(--navy);
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
}
.nav-toggle:focus-visible { outline: 2px solid var(--purple); outline-offset: 2px; border-radius: 6px; }
.nav-toggle-bar {
	display: block;
	width: 24px; height: 2px;
	background: currentColor;
	border-radius: 2px;
	transition: transform 0.25s ease, opacity 0.25s ease;
}
.nav.is-open .nav-toggle-bar:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.nav.is-open .nav-toggle-bar:nth-child(2) { opacity: 0; }
.nav.is-open .nav-toggle-bar:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* ============ TABLET (≤1024px) ============ */
@media (max-width: 1024px) {
	.container { padding: 0 24px; }

	.help-grid,
	.wp-block-columns.help-grid { grid-template-columns: repeat(2, 1fr) !important; }

	.footer-grid { grid-template-columns: 1.4fr 1fr 1fr !important; gap: 40px !important; }
	.footer-grid > .footer-col:nth-child(4) { grid-column: 2 / 4; }

	.hero-grid, .welcome-grid, .events-grid,
	.wp-block-columns.hero-grid,
	.wp-block-columns.welcome-grid,
	.wp-block-columns.events-grid { gap: 48px !important; }

	.nav-links { gap: 22px; }
	.blob, figure.wp-block-image.blob { width: 380px !important; height: 460px !important; }
}

/* ============ MOBILE (≤768px) ============ */
@media (max-width: 768px) {
	.container,
	.events-page-container { padding: 0 20px; }

	/* --- NAV --- */
	.nav-inner {
		padding: 14px 20px !important;
		gap: 12px;
		position: relative;
	}
	.nav.scrolled .nav-inner { padding: 14px 20px !important; }
	.nav-logo img,
	.nav.scrolled .nav-logo img {
		height: 56px !important;
		margin-bottom: 0 !important;
		transform: none !important;
		filter: drop-shadow(0 6px 12px rgba(40, 58, 104, 0.12));
	}

	.nav-toggle { display: inline-flex; }
	.nav-menu {
		display: none;
		position: absolute;
		top: 100%; left: 0; right: 0;
		background: rgba(250, 246, 241, 0.98);
		backdrop-filter: blur(12px);
		flex-direction: column;
		align-items: stretch;
		padding: 8px 20px 20px;
		gap: 4px;
		border-top: 1px solid var(--line);
		box-shadow: 0 16px 32px -16px rgba(40, 58, 104, 0.25);
	}
	.nav.is-open .nav-menu { display: flex; }

	.nav-links {
		flex-direction: column !important;
		gap: 0 !important;
		transform: none !important;
		align-items: stretch;
	}
	.nav-links a {
		padding: 14px 4px;
		font-size: 16px;
		border-bottom: 1px solid var(--line);
	}
	.nav-links a:last-child { border-bottom: 0; }
	.nav-links a.active::after { display: none; }
	.nav-cta {
		margin-top: 12px !important;
		text-align: center;
		transform: none !important;
		align-self: stretch;
	}

	/* --- HEROES & SECTIONS --- */
	.hero { padding: 32px 0 60px !important; min-height: 0 !important; }
	.hero h1 { margin-bottom: 20px; }
	.hero p { font-size: 16px; max-width: none; }
	.hero-actions { flex-wrap: wrap; }
	.hero-stars { display: none; }
	.section { padding: 60px 0 !important; }

	/* --- GRIDS STACK TO ONE COLUMN --- */
	.hero-grid, .welcome-grid, .events-grid,
	.wp-block-columns.hero-grid,
	.wp-block-columns.welcome-grid,
	.wp-block-columns.events-grid {
		grid-template-columns: 1fr !important;
		gap: 36px !important;
	}

	/* --- IMAGE BLOBS: scale to container, drop absolute positioning --- */
	.hero-visual, .welcome-visual, .events-visual,
	.wp-block-group.hero-visual,
	.wp-block-group.welcome-visual,
	.wp-block-group.events-visual {
		height: auto !important;
		min-height: 0 !important;
		width: 100% !important;
		max-width: 360px;
		margin: 0 auto !important;
		aspect-ratio: 1 / 1.15;
		position: relative;
	}
	.blob, figure.wp-block-image.blob,
	.welcome-blob, figure.wp-block-image.welcome-blob,
	.events-blob, figure.wp-block-image.events-blob {
		position: relative !important;
		inset: 0 !important;
		top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
		width: 100% !important;
		height: 100% !important;
	}
	.blob, figure.wp-block-image.blob { border-radius: 180px / 200px !important; }
	.welcome-blob, figure.wp-block-image.welcome-blob { border-radius: 180px / 160px !important; }
	.events-blob, figure.wp-block-image.events-blob { border-radius: 180px 30px 180px 30px !important; }

	/* Decorative dots/sparks/floating chips overlap the stacked layout */
	.chip-float, .events-card-float, .dot, .spark { display: none !important; }

	/* --- HELP / STATS --- */
	.help-grid,
	.wp-block-columns.help-grid {
		grid-template-columns: 1fr !important;
		gap: 16px !important;
	}
	.stats,
	.wp-block-columns.stats {
		grid-template-columns: 1fr 1fr !important;
		gap: 12px !important;
		max-width: none;
	}

	/* --- CTA --- */
	.cta { padding: 40px 0 80px !important; }
	.cta-card { padding: 56px 28px !important; border-radius: 28px; }

	/* --- FOOTER --- */
	.footer { padding: 40px 0 30px !important; }
	.footer-grid {
		grid-template-columns: 1fr !important;
		gap: 36px !important;
		margin-bottom: 36px !important;
	}
	.footer-grid > .footer-col:nth-child(4) { grid-column: auto; }
	.footer-brand img { height: 60px; }
	.footer-bottom {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}

	/* --- EVENTS PAGES --- */
	.events-page-hero,
	.event-single-hero { padding: 40px 0 24px; }
	.events-page-hero h1 { font-size: clamp(34px, 9vw, 48px) !important; }
	.event-single-hero h1 { font-size: clamp(30px, 8vw, 42px) !important; }
	.events-page-deco, .events-page-spark { display: none; }
	.event-single { padding: 20px 0 60px !important; }
	.event-single-body .tribe-events-event-meta { padding: 24px 22px !important; }
	.event-single-body .tribe-events-meta-item {
		grid-template-columns: 90px 1fr !important;
		gap: 12px !important;
	}

	/* --- CONTENT PAGE --- */
	.content-page { padding: 40px 0 60px; }

	/* --- REGISTRATION FORM --- */
	.register-row { grid-template-columns: 1fr !important; }
	.register-form-card { padding: 28px 22px !important; }
}

/* ============ SMALL PHONES (≤480px) ============ */
@media (max-width: 480px) {
	.help-card { padding: 28px 22px; }
	.stats,
	.wp-block-columns.stats { grid-template-columns: 1fr !important; }
	.hero h1 { font-size: clamp(32px, 9vw, 44px) !important; }
	.welcome h2,
	.help-head h2,
	.cta h2 { font-size: clamp(28px, 7vw, 36px) !important; }
}

/* Hide The Events Calendar Subscribe to calendar dropdown across the
   events archive — WITH does not surface external calendar subscriptions. */
body:not(.tribe-events-single) .tribe-events-c-subscribe-dropdown__container,
body:not(.tribe-events-single) .tribe-events-c-subscribe-dropdown { display: none !important; }


/* ============================================================
   OUR PRINCIPLES — SPARKLE page (post slug: /our-principles/)
   ============================================================ */
.principles-section { background: rgba(250, 246, 241, 0.82); padding: 80px 0 120px; }
.principles-section .about-container { max-width: 880px; margin: 0 auto; padding: 0 24px; }

.principle-card.wp-block-group {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 32px;
  align-items: center;
  padding: 20px 32px;
  margin-bottom: 20px;
  background: white;
  border: 1px solid var(--line);
  border-radius: 20px;
  transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}
.principle-card.wp-block-group:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 36px -20px rgba(40, 58, 104, 0.25);
  border-color: var(--purple-soft);
}

/* Placeholder icon — circular gradient swatch with the first letter.
   Swap this rule for an <img> when the real icons land. */
.principle-icon {
  width: 80px; height: 80px;
  object-fit: contain;
  display: block;
  flex-shrink: 0;
}

.principle-body.wp-block-group { display: flex; flex-direction: column; gap: 6px; min-height: 100px; justify-content: center; margin-block-start: 0; }
.principle-body h3,
.principle-body h3.wp-block-heading {
  font-family: 'Playfair Display', serif !important;
  font-size: 26px;
  font-weight: 500;
  color: var(--navy-deep);
  margin: 0;
  margin-block-start: 0 !important;
  line-height: 1.2;
}
.principle-body p { color: var(--ink-soft); margin: 0; margin-block-start: 0 !important; line-height: 1.55; }

@media (max-width: 560px) {
  .principle-card.wp-block-group {
    grid-template-columns: 64px 1fr;
    gap: 20px;
    padding: 20px;
  }
  .principle-icon { width: 64px; height: 64px; }
  .principle-body h3 { font-size: 20px; }
}

/* Centre the events photo column vertically against the events list. */
.wp-block-columns.events-grid > .wp-block-column { align-self: stretch !important; }


/* Events section header — pulled out of the two-column grid so the events
   list and the photo centre cleanly against each other. */
.events-section-head { margin: 0 0 12px 0; text-align: left; }
.events-section-head .welcome-eyebrow { margin-bottom: 0; }
.events-section-head h2 { margin: 12px 0 16px 0; }
.events-section-head p:not(.welcome-eyebrow) { color: var(--ink-soft); margin: 0; }
