/* Wintentional block theme stylesheet.
   Section 1 is app/globals.css from the Next build, ported verbatim except for
   the two font-family lines (next/font variables become the real family names).
   Section 2 adds the fallback font metrics, and section 3 the rules that map
   core block wrappers (buttons, images, columns, quotes) onto the same design.
   Tokens duplicate theme.json on purpose: the front end does not load the
   global-styles inline sheet, see functions.php. */

/* ===== 1. globals.css, ported ===== */
/* Wintentional: "the hosted table".
   Indigo is the tablecloth, warm card stock is what gets set on it, lime is the
   ink that only ever prints on indigo or plum. Palette and faces are fixed by
   spec.md section 4 (D10, D11); ratios for every pair are in DESIGN-NOTES.md. */

:root {
  --ink: #1f1d3a;
  --ink-muted: #5f5d73;
  --surface: #ffffff;
  --surface-warm: #faf9f7;
  --surface-sunk: #f1eff4;
  --indigo: #302e75;
  --indigo-deep: #222056;
  --lime: #edff33;
  --plum: #4f204c;
  --pink: #dc436e;
  --pink-ink: #a61f5f;
  --link: #5b4e96;
  --lavender: #c7c4ea;
  --rule: #d9d6e4;
  --rule-strong: #8b88a8;

  --font-display: 'Playfair Display', 'Playfair Display Fallback', Georgia, 'Times New Roman', serif;
  --font-body: Raleway, 'Raleway Fallback', 'Segoe UI', system-ui, sans-serif;

  --step--1: clamp(0.84rem, 0.82rem + 0.1vw, 0.9rem);
  --step-0: clamp(1.03rem, 1rem + 0.18vw, 1.14rem);
  --step-1: clamp(1.2rem, 1.12rem + 0.4vw, 1.42rem);
  --step-2: clamp(1.45rem, 1.3rem + 0.75vw, 1.9rem);
  --step-3: clamp(1.8rem, 1.5rem + 1.5vw, 2.7rem);
  --step-4: clamp(2.3rem, 1.75rem + 2.8vw, 4rem);
  --step-5: clamp(2.7rem, 1.9rem + 4.2vw, 5.4rem);

  --space-1: 0.5rem;
  --space-2: 1rem;
  --space-3: 1.5rem;
  --space-4: 2.5rem;
  --space-5: 4rem;
  --space-6: clamp(4.5rem, 3rem + 6vw, 8.5rem);

  --maxw: 76rem;
  --measure: 68ch;
  --radius: 4px;
  --shadow-card: 0 1px 2px rgba(20, 18, 60, 0.12), 0 22px 44px -22px rgba(20, 18, 60, 0.55);
  --shadow-lift: 0 2px 4px rgba(20, 18, 60, 0.14), 0 32px 60px -26px rgba(20, 18, 60, 0.6);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 6rem; }
body {
  margin: 0;
  background: var(--surface-warm);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--step-0);
  line-height: 1.65;
  font-variant-numeric: lining-nums;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
img, video, iframe { max-width: 100%; }
img { height: auto; display: block; }

::selection { background: var(--lime); color: var(--indigo); }
:focus-visible { outline: 3px solid var(--indigo); outline-offset: 3px; border-radius: 2px; }
.on-dark :focus-visible { outline-color: var(--lime); }
html { scrollbar-color: var(--rule-strong) var(--surface-warm); }

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.012em;
  text-wrap: balance;
  margin: 0;
}
h1 { font-size: var(--step-5); letter-spacing: -0.022em; }
h2 { font-size: var(--step-4); }
h3 { font-size: var(--step-2); }
h4 { font-size: var(--step-1); }
p { margin: 0 0 1em; text-wrap: pretty; }

a { color: var(--link); text-decoration-thickness: 1px; text-underline-offset: 0.2em; }
a:hover { text-decoration-thickness: 2px; }

.wrap { width: min(100% - 2rem, var(--maxw)); margin-inline: auto; }
@media (min-width: 48rem) { .wrap { width: min(100% - 4rem, var(--maxw)); } }
.measure { max-width: var(--measure); }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: absolute; left: 1rem; top: -4rem; z-index: 100; background: var(--lime); color: var(--indigo);
  padding: 0.6rem 1rem; font-weight: 700; border-radius: var(--radius);
}
.skip-link:focus { top: 1rem; }

/* ---------- grounds ---------- */
.tablecloth {
  position: relative;
  background-color: var(--indigo);
  color: #fff;
  isolation: isolate;
}
/* her dot-grid motif, printed faintly into the cloth */
.tablecloth::before {
  content: '';
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: radial-gradient(rgba(220, 67, 110, 0.32) 1.3px, transparent 1.6px);
  background-size: 22px 22px;
  mask-image: linear-gradient(115deg, #000 0%, transparent 38%, transparent 70%, rgba(0,0,0,0.6) 100%);
}
.tablecloth a:not(.btn) { color: #fff; }
.tablecloth .muted { color: var(--lavender); }
.plum-ground { background: var(--plum); color: #fff; }
.plum-ground a:not(.btn) { color: #fff; }
.sunk { background: var(--surface-sunk); }
.white { background: var(--surface); }

.section { padding-block: var(--space-6); }
.section--tight { padding-block: var(--space-5); }
.section-head { margin-bottom: var(--space-4); max-width: 44rem; }
.section-head p { font-size: var(--step-1); color: var(--ink-muted); margin-top: var(--space-2); }
.tablecloth .section-head p, .plum-ground .section-head p { color: var(--lavender); }
.muted { color: var(--ink-muted); }
.lede { font-size: var(--step-1); line-height: 1.55; }

/* lime is a highlighter, never text on light: an underline stroke on indigo headlines */
.mark {
  background-image: linear-gradient(var(--lime), var(--lime));
  background-repeat: no-repeat;
  background-size: 100% 0.12em;
  background-position: 0 92%;
  padding-bottom: 0.04em;
}
.lime { color: var(--lime); }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.6em;
  min-height: 3rem; padding: 0.8rem 1.5rem;
  font: 700 var(--step-0)/1.2 var(--font-body);
  letter-spacing: 0.01em;
  text-decoration: none; border: 2px solid transparent; border-radius: 999px;
  cursor: pointer;
  transition: transform 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out), background-color 0.2s;
}
.btn svg { width: 1.1em; height: 1.1em; flex: none; transition: transform 0.35s var(--ease-out); }
.btn:hover svg { transform: translateX(3px); }
.btn:active { transform: translateY(1px); }
.btn--lime { background: var(--lime); color: var(--indigo); box-shadow: 0 10px 24px -12px rgba(0,0,0,0.55); }
.btn--lime:hover { background: #f4ff7a; }
.btn--indigo { background: var(--indigo); color: #fff; }
.btn--indigo:hover { background: var(--indigo-deep); }
.btn--ghost-light { border-color: rgba(255,255,255,0.55); color: #fff; }
.btn--ghost-light:hover { border-color: #fff; background: rgba(255,255,255,0.08); }
.btn--ghost { border-color: var(--indigo); color: var(--indigo); }
.btn--ghost:hover { background: var(--indigo); color: #fff; }
.btn[aria-disabled='true'], .btn:disabled { opacity: 0.55; cursor: not-allowed; }
.text-link {
  font-weight: 700; color: var(--link); text-decoration: underline; text-underline-offset: 0.25em;
}
.tablecloth .text-link { color: #fff; text-decoration-color: var(--lime); }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin-top: var(--space-4); }
@media (max-width: 30rem) { .actions .btn { width: 100%; } }

/* ---------- header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(250, 249, 247, 0.94);
  backdrop-filter: saturate(1.2) blur(10px);
  border-bottom: 1px solid var(--rule);
}
.site-header__bar { display: flex; align-items: center; gap: var(--space-3); min-height: 4.5rem; }
.site-header__logo { display: block; flex: none; }
.site-header__logo img { width: 150px; height: auto; }
@media (min-width: 64rem) { .site-header__logo img { width: 176px; } }
.site-nav { margin-left: auto; display: none; }
.site-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.25rem; }
.site-nav a {
  display: block; padding: 0.7rem 0.8rem; color: var(--ink); text-decoration: none; font-weight: 600;
  border-radius: 999px; font-size: var(--step--1); letter-spacing: 0.02em;
}
.site-nav a:hover { background: var(--surface-sunk); }
.site-nav a[aria-current='page'] { background: var(--indigo); color: #fff; }
.site-header__cta { display: none; }
.menu-toggle {
  margin-left: auto; display: inline-flex; align-items: center; gap: 0.5rem; min-height: 2.75rem;
  padding: 0.4rem 1rem; border: 2px solid var(--indigo); border-radius: 999px; background: transparent;
  color: var(--indigo); font: 700 var(--step--1)/1 var(--font-body); cursor: pointer;
}
.menu-toggle svg { width: 1.1rem; height: 1.1rem; }
.mobile-nav { border-top: 1px solid var(--rule); padding: var(--space-2) 0 var(--space-3); }
.mobile-nav ul { list-style: none; margin: 0; padding: 0; }
.mobile-nav li a {
  display: block; padding: 0.85rem 0; font-family: var(--font-display); font-size: var(--step-2);
  color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--rule);
}
.mobile-nav .btn { margin-top: var(--space-3); width: 100%; }
@media (min-width: 60rem) {
  .site-nav { display: block; }
  .site-header__cta { display: inline-flex; min-height: 2.75rem; padding: 0.55rem 1.1rem; font-size: var(--step--1); }
  .menu-toggle, .mobile-nav { display: none; }
}

/* ---------- footer ---------- */
.site-footer { background: var(--indigo-deep); color: #fff; padding-block: var(--space-5) var(--space-4); }
.site-footer a:not(.btn) { color: #fff; }
.site-footer__grid { display: grid; gap: var(--space-4); }
@media (min-width: 52rem) { .site-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.site-footer h2 { font: 700 var(--step--1)/1.3 var(--font-body); letter-spacing: 0.08em; text-transform: uppercase; color: var(--lime); margin-bottom: var(--space-2); }
.site-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.45rem; }
.site-footer ul a { text-decoration: none; }
.site-footer ul a:hover { text-decoration: underline; }
.site-footer__logo { width: 200px; margin-bottom: var(--space-2); }
.site-footer__legal {
  margin-top: var(--space-5); padding-top: var(--space-3); border-top: 1px solid rgba(199, 196, 234, 0.3);
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-2); color: var(--lavender); font-size: var(--step--1);
}
.site-footer__legal a { color: var(--lavender); }

/* ---------- card stock (what sits on the table) ---------- */
.card-stock {
  position: relative;
  background: var(--surface-warm);
  color: var(--ink);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
}
.card-stock a:not(.btn) { color: var(--link); }
/* the menu's printed double rule */
.card-stock--framed::after {
  content: ''; position: absolute; inset: 10px; pointer-events: none;
  border: 1px solid var(--rule-strong); outline: 1px solid var(--rule); outline-offset: 3px;
  border-radius: 2px;
}

/* ---------- hero ---------- */
.hero { padding-block: clamp(3rem, 2rem + 5vw, 6.5rem) clamp(3.5rem, 2rem + 6vw, 7rem); overflow: clip; }
.hero__grid { display: grid; gap: var(--space-5); align-items: center; }
@media (min-width: 58rem) { .hero__grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); } }
.hero h1 { color: #fff; max-width: 14ch; }
.hero .lede { color: var(--lavender); max-width: 38rem; margin-top: var(--space-3); font-family: var(--font-display); font-size: var(--step-2); line-height: 1.35; font-weight: 400; }
.hero__secondary { margin-top: var(--space-3); }

/* the portrait print, set on the table */
.print {
  position: relative; margin: 0 auto; width: min(100%, 26rem);
  background: #fff; padding: 12px 12px 0; border-radius: 3px; box-shadow: var(--shadow-lift);
  transform: rotate(2.2deg);
  animation: set-down 1.1s var(--ease-out) 0.15s both;
}
.print img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 1px; }
.print figcaption {
  padding: 0.85rem 0.25rem 1rem; color: var(--ink); font-family: var(--font-display); font-size: var(--step-1); line-height: 1.25;
}
.print figcaption span { display: block; font: 600 var(--step--1)/1.4 var(--font-body); color: var(--ink-muted); letter-spacing: 0.02em; }
.print-stack { position: relative; padding-block: 1rem; }
.print-stack .arches { position: absolute; width: 58%; left: -12%; bottom: -8%; z-index: 0; color: var(--pink); }
.print-stack .print { z-index: 1; }
.place-card {
  position: absolute; z-index: 2; left: -4%; top: 8%;
  background: var(--lime); color: var(--indigo); padding: 0.9rem 1.1rem; border-radius: 3px; max-width: 13rem;
  box-shadow: var(--shadow-card); transform: rotate(-4deg);
  font: 600 var(--step--1)/1.35 var(--font-body);
  animation: set-down 1.1s var(--ease-out) 0.45s both;
}
.place-card strong { display: block; font: 600 var(--step-1)/1.15 var(--font-display); margin-bottom: 0.2rem; }
@media (max-width: 40rem) { .place-card { position: relative; left: auto; top: auto; margin: 1.5rem 0 0 0.5rem; } }

@keyframes set-down {
  from { opacity: 0; transform: translateY(-26px) rotate(-3deg) scale(1.03); box-shadow: 0 60px 80px -30px rgba(10, 8, 40, 0.5); }
}

/* ---------- menu (the offers) ---------- */
.menu { padding: clamp(1.75rem, 1rem + 3vw, 3.5rem); }
.menu__title { text-align: center; margin-bottom: var(--space-4); }
.menu__title h2, .menu__title h3 { font-size: var(--step-3); }
.menu__title p { color: var(--ink-muted); margin: 0.5rem auto 0; max-width: 36rem; }
.menu__rule { display: block; width: 4rem; height: 1px; background: var(--rule-strong); margin: var(--space-3) auto 0; }
.course { display: grid; gap: 0.35rem; padding-block: var(--space-3); border-top: 1px solid var(--rule); }
.course:first-of-type { border-top: 0; }
.course__line { display: flex; align-items: baseline; gap: 0.75rem; }
.course__num { font: 600 var(--step-1)/1 var(--font-display); color: var(--pink-ink); min-width: 1.8em; }
.course__name { font: 600 var(--step-2)/1.15 var(--font-display); color: var(--ink); text-decoration: none; }
a.course__name:hover { color: var(--indigo); text-decoration: underline; text-decoration-thickness: 1px; }
.course__leader { flex: 1; min-width: 1.5rem; border-bottom: 2px dotted var(--rule-strong); transform: translateY(-0.3em); transition: border-color 0.4s var(--ease-out); }
.course__price { font: 700 var(--step-1)/1 var(--font-body); font-variant-numeric: lining-nums tabular-nums; color: var(--indigo); white-space: nowrap; }
.course__price small { display: block; text-align: right; font-size: var(--step--1); font-weight: 600; color: var(--ink-muted); margin-top: 0.3rem; }
.course__meta { padding-left: calc(1.8em * 1.2 + 0.75rem); color: var(--ink-muted); font-size: var(--step--1); font-weight: 700; letter-spacing: 0.01em; }
.course__desc { padding-left: calc(1.8em * 1.2 + 0.75rem); max-width: 58ch; margin: 0; }
.course__go { padding-left: calc(1.8em * 1.2 + 0.75rem); margin-top: 0.4rem; }
.course:hover .course__leader, .course:focus-within .course__leader { border-bottom-color: var(--indigo); }
@media (max-width: 36rem) {
  .course__line { flex-wrap: wrap; }
  .course__leader { display: none; }
  .course__price { width: 100%; padding-left: calc(1.8em * 1.2 + 0.75rem); }
  .course__price small { text-align: left; }
}
.starter {
  display: grid; gap: var(--space-2); align-items: center;
  background: var(--indigo); color: #fff; border-radius: 3px; padding: var(--space-3);
  margin-bottom: var(--space-3);
}
.starter h3 { font-size: var(--step-2); color: #fff; }
.starter p { margin: 0; color: var(--lavender); }
.starter .course__price { color: var(--lime); font-size: var(--step-2); }
@media (min-width: 44rem) { .starter { grid-template-columns: 1fr auto; } }

/* ---------- two-column statement ---------- */
.statement { font: 400 var(--step-3)/1.25 var(--font-display); letter-spacing: -0.012em; max-width: 26ch; }
.statement em { font-style: italic; color: var(--pink-ink); }
.split { display: grid; gap: var(--space-4); }
@media (min-width: 56rem) { .split { grid-template-columns: 1.1fr 0.9fr; align-items: end; } }
.industry-list { list-style: none; padding: 0; margin: 0; columns: 2 12rem; column-gap: var(--space-3); }
.industry-list li { break-inside: avoid; padding: 0.55rem 0; border-top: 1px solid var(--rule); font-weight: 600; }

/* ---------- MAPP ---------- */
.mapp { display: grid; gap: var(--space-3); margin-top: var(--space-4); counter-reset: none; }
@media (min-width: 40rem) { .mapp { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 70rem) { .mapp { grid-template-columns: repeat(4, 1fr); } }
.setting { position: relative; padding: var(--space-3) 0 0; border-top: 1px solid rgba(237, 255, 51, 0.5); }
.setting__letter { font: 600 clamp(4rem, 3rem + 4vw, 6rem)/0.9 var(--font-display); color: var(--lime); display: block; margin-bottom: var(--space-2); }
.setting h3 { font-size: var(--step-2); color: #fff; }
.setting p { color: var(--lavender); margin-top: 0.5rem; }

/* ---------- testimonials as place cards ---------- */
.place-cards { display: grid; gap: var(--space-3); }
@media (min-width: 48rem) { .place-cards { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 70rem) { .place-cards--3 { grid-template-columns: repeat(3, 1fr); } }
.quote-card { padding: var(--space-4) var(--space-3) var(--space-3); display: flex; flex-direction: column; margin: 0; }
.quote-card::before {
  content: '\201C'; position: absolute; top: 0.2rem; left: 1.1rem;
  font: 600 4.5rem/1 var(--font-display); color: var(--pink);
}
.quote-card blockquote { margin: 0 0 var(--space-3); font: 400 var(--step-1)/1.5 var(--font-display); flex: 1; }
.quote-card figcaption { border-top: 1px dotted var(--rule-strong); padding-top: var(--space-2); }
.quote-card figcaption strong { display: block; font-weight: 700; }
.quote-card figcaption span { color: var(--ink-muted); font-size: var(--step--1); }
/* optional photo on a place card (CMS): a small round portrait beside the name, framed like the
   menu's double rule; without a photo the caption is exactly the text-only design above */
.quote-card--photo figcaption { display: grid; grid-template-columns: 4rem minmax(0, 1fr); column-gap: 0.85rem; align-items: center; }
.quote-card--photo .quote-card__photo {
  grid-row: 1 / span 2; width: 3.5rem; height: 3.5rem; margin: 0.25rem; border-radius: 50%; object-fit: cover; object-position: 50% 25%;
  box-shadow: 0 0 0 3px var(--surface-warm), 0 0 0 4px var(--rule-strong);
}
.quote-card--photo figcaption strong { align-self: end; }
.quote-card--photo figcaption span { align-self: start; }
.quote-card--photo figcaption > .quote-card__photo:only-child { grid-row: auto; }
.place-cards > :nth-child(3n+1) { transform: rotate(-0.6deg); }
.place-cards > :nth-child(3n+2) { transform: rotate(0.5deg); }
.place-cards--flat > * { transform: none !important; }

/* ---------- organisations strip ---------- */
.orgs { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-4); align-items: center; }
.orgs li { list-style: none; }
.orgs ul { display: contents; }
.orgs img { object-fit: contain; mix-blend-mode: multiply; }
.orgs-head { font: 700 var(--step--1)/1.3 var(--font-body); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-muted); margin-bottom: var(--space-3); }

/* ---------- post cards ---------- */
.post-grid { display: grid; gap: var(--space-4) var(--space-3); }
@media (min-width: 40rem) { .post-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 64rem) { .post-grid { grid-template-columns: repeat(3, 1fr); } }
.post-card { display: flex; flex-direction: column; gap: 0.6rem; position: relative; }
.post-card__img { overflow: hidden; border-radius: 3px; background: var(--surface-sunk); box-shadow: 0 1px 2px rgba(20,18,60,0.12); }
.post-card__img img { width: 100%; aspect-ratio: 8 / 5; object-fit: cover; transition: transform 0.7s var(--ease-out); }
.post-card:hover .post-card__img img { transform: scale(1.035); }
.post-card__meta { font-size: var(--step--1); color: var(--ink-muted); font-weight: 600; display: flex; flex-wrap: wrap; gap: 0.35rem 0.9rem; }
.post-card__cat { color: var(--pink-ink); }
.post-card h2, .post-card h3 { font-size: var(--step-1); line-height: 1.3; }
.post-card h2 a, .post-card h3 a { color: var(--ink); text-decoration: none; }
.post-card :is(h2, h3) a::after { content: ''; position: absolute; inset: 0; }
.post-card :is(h2, h3) a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.post-card p { margin: 0; color: var(--ink-muted); font-size: var(--step--1); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- arches ornament ---------- */
.arches { display: block; pointer-events: none; }

/* ---------- CTA band ---------- */
.cta-band { text-align: left; }
.cta-band__grid { display: grid; gap: var(--space-4); align-items: center; }
@media (min-width: 56rem) { .cta-band__grid { grid-template-columns: 1.2fr 0.8fr; } }
.cta-band h2 { color: #fff; max-width: 16ch; }
.cta-band p { color: var(--lavender); font-size: var(--step-1); max-width: 40rem; margin-top: var(--space-2); }
.rsvp { padding: var(--space-4) var(--space-3); transform: rotate(-1.2deg); }
.rsvp h3 { font-size: var(--step-2); margin-bottom: 0.4rem; }
.rsvp p { color: var(--ink-muted); font-size: var(--step-0); margin: 0 0 var(--space-3); }
.rsvp .btn { width: 100%; }
.rsvp__alt { margin-top: var(--space-2); font-size: var(--step--1); text-align: center; }

/* ---------- forms ---------- */
.form { display: grid; gap: var(--space-3); }
.field { display: grid; gap: 0.4rem; }
.field label { font-weight: 700; font-size: var(--step--1); letter-spacing: 0.02em; }
.field .hint { font-size: var(--step--1); color: var(--ink-muted); }
.input {
  width: 100%; min-height: 3rem; padding: 0.7rem 0.9rem; font: inherit; color: var(--ink);
  background: #fff; border: 1.5px solid var(--rule-strong); border-radius: var(--radius);
  transition: border-color 0.2s, box-shadow 0.2s;
}
.input::placeholder { color: var(--ink-muted); opacity: 1; }
.input:hover { border-color: var(--ink-muted); }
.input:focus { outline: none; border-color: var(--indigo); box-shadow: 0 0 0 3px rgba(48, 46, 117, 0.25); }
.input[aria-invalid='true'] { border-color: var(--pink-ink); }
textarea.input { min-height: 9rem; resize: vertical; }
select.input { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23302e75' stroke-width='2'%3E%3Cpath d='M5 8l5 5 5-5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.8rem center; background-size: 1.1rem; padding-right: 2.5rem; }
.form-status { padding: var(--space-2) var(--space-3); border-radius: var(--radius); font-weight: 600; }
.form-status--ok { background: #e8f3e9; color: #1d4d24; }
.form-status--err { background: #fbe9ef; color: #7d1545; }
.form-status--info { background: var(--surface-sunk); color: var(--ink); }
.field-error { color: var(--pink-ink); font-size: var(--step--1); font-weight: 600; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.newsletter { display: grid; gap: var(--space-3); align-items: end; }
@media (min-width: 52rem) { .newsletter { grid-template-columns: 1fr 1.1fr; } }
.newsletter h2 { font-size: var(--step-3); }
.newsletter__row { display: grid; gap: var(--space-2); }
@media (min-width: 36rem) { .newsletter__row { grid-template-columns: 1fr 1fr auto; align-items: end; } }

/* ---------- service pages ---------- */
.offer-hero__grid { display: grid; gap: var(--space-4); align-items: center; }
@media (min-width: 60rem) { .offer-hero__grid { grid-template-columns: 1fr 1fr; } }
.offer-hero h1 { color: #fff; font-size: var(--step-4); max-width: 18ch; }
.offer-hero .lede { color: var(--lavender); margin-top: var(--space-3); max-width: 34rem; }
.price-tag { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 0.8rem; margin-top: var(--space-3); padding: 0.55rem 1rem; border: 1px solid rgba(237,255,51,0.6); border-radius: 3px; }
.price-tag strong { font: 700 var(--step-2)/1 var(--font-body); color: var(--lime); font-variant-numeric: lining-nums tabular-nums; }
.price-tag span { color: var(--lavender); font-size: var(--step--1); font-weight: 600; }
.art-print { margin: 0; background: #fff; padding: 10px; border-radius: 3px; box-shadow: var(--shadow-lift); transform: rotate(-1.4deg); animation: set-down 1.1s var(--ease-out) 0.1s both; }
.art-print img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }

.prose-block { max-width: var(--measure); }
.prose-block h2 { font-size: var(--step-3); margin-bottom: var(--space-3); }
.prose-block h3 { font-size: var(--step-2); margin: var(--space-4) 0 var(--space-2); }
.prose-block ul { padding-left: 1.2rem; }
.prose-block li { margin-bottom: 0.5rem; }
.prose-block li::marker { color: var(--pink-ink); }
.check-list { list-style: none; padding: 0 !important; margin: 0; display: grid; gap: 0.25rem; }
.check-list li { position: relative; padding: 0.6rem 0 0.6rem 2rem; border-top: 1px solid var(--rule); margin: 0 !important; }
.check-list li::before {
  content: ''; position: absolute; left: 0.1rem; top: 0.95rem; width: 1.1rem; height: 1.1rem; border-radius: 50%;
  background: var(--indigo) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23edff33' stroke-width='2.6'%3E%3Cpath d='M5.5 10.5l3 3 6-7'/%3E%3C/svg%3E") center/0.85rem no-repeat;
}
.two-col { display: grid; gap: var(--space-5); }
@media (min-width: 60rem) { .two-col { grid-template-columns: 1fr 1fr; } }

.phases { list-style: none; padding: 0; margin: 0; counter-reset: phase; display: grid; gap: 0; }
.phase { display: grid; grid-template-columns: 4.5rem 1fr; gap: var(--space-2); padding: var(--space-3) 0; border-top: 1px solid var(--rule); counter-increment: phase; }
.phase::before { content: counter(phase); font: 600 var(--step-4)/0.85 var(--font-display); color: var(--indigo); }
.phase h3 { font-size: var(--step-1); font-family: var(--font-body); font-weight: 700; margin-bottom: 0.35rem; }
.phase p { margin: 0; }
.phase ul { margin: 0.6rem 0 0; }
.phase__time { color: var(--ink-muted); font-weight: 600; }

.handoff { display: grid; gap: var(--space-2); padding: var(--space-4) var(--space-3); }
.handoff h2 { font-size: var(--step-3); }
.handoff p { max-width: 58ch; margin: 0; }
@media (min-width: 52rem) { .handoff { grid-template-columns: 1fr auto; align-items: end; column-gap: var(--space-4); } .handoff > div { grid-column: 1; } .handoff .btn { grid-column: 2; grid-row: 1 / span 2; } }

.note-card { border: 1px dashed var(--rule-strong); border-radius: var(--radius); padding: var(--space-3); background: var(--surface); }

/* ---------- about ---------- */
.about-hero__grid { display: grid; gap: var(--space-5); align-items: center; }
@media (min-width: 58rem) { .about-hero__grid { grid-template-columns: 1.1fr 0.9fr; } }
.pull { font: 400 italic var(--step-2)/1.35 var(--font-display); color: var(--lavender); border-left: 0; margin: var(--space-3) 0 0; max-width: 34rem; }
.programme { padding: clamp(1.5rem, 1rem + 2vw, 3rem); }
.programme ol { list-style: none; margin: 0; padding: 0; }
.programme li { display: grid; gap: 0.25rem var(--space-3); padding: var(--space-3) 0; border-top: 2px dashed var(--rule-strong); }
.programme li:first-child { border-top: 0; }
@media (min-width: 48rem) { .programme li { grid-template-columns: 5.5rem 1fr; } }
.programme__n { font: 600 italic var(--step-2)/1 var(--font-display); color: var(--pink-ink); }
.programme h3 { font-size: var(--step-2); }
.programme h3 span { display: block; font: 600 var(--step-0)/1.4 var(--font-body); color: var(--ink-muted); margin-top: 0.35rem; }
.programme p { margin: 0.5rem 0 0; }
.handles { display: flex; flex-wrap: wrap; gap: 0.6rem; list-style: none; padding: 0; margin: 0; }
.handles a { display: inline-block; padding: 0.65rem 0.9rem; border: 1.5px solid var(--indigo); border-radius: 999px; text-decoration: none; font-weight: 700; color: var(--indigo); font-size: var(--step--1); }
.handles a:hover { background: var(--indigo); color: #fff; }
.story { font-size: var(--step-1); line-height: 1.7; }
.story p:first-child::first-letter { font: 600 3.6em/0.8 var(--font-display); float: left; margin: 0.08em 0.1em 0 0; color: var(--indigo); }

/* ---------- community ---------- */
.feature-row { display: grid; gap: var(--space-4); align-items: center; }
@media (min-width: 58rem) { .feature-row { grid-template-columns: 1fr 1fr; } .feature-row--flip > :first-child { order: 2; } }
.feature-row figure { margin: 0; }
.feature-row img { border-radius: 3px; box-shadow: var(--shadow-card); width: 100%; }

/* ---------- blog ---------- */
.blog-head { padding-block: var(--space-5) var(--space-4); }
.blog-head h1 { font-size: var(--step-4); }
.cat-nav { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; padding: 0; margin: var(--space-3) 0 0; }
.cat-nav a { display: inline-block; padding: 0.65rem 0.95rem; border-radius: 999px; border: 1.5px solid var(--rule-strong); color: var(--ink); text-decoration: none; font-weight: 600; font-size: var(--step--1); }
.cat-nav a:hover { border-color: var(--indigo); }
.cat-nav a[aria-current='page'] { background: var(--indigo); border-color: var(--indigo); color: #fff; }
.search { margin-top: var(--space-3); max-width: 30rem; }
.pager { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; justify-content: center; margin-top: var(--space-5); list-style: none; padding: 0; }
.pager a, .pager span { display: inline-grid; place-items: center; min-width: 2.75rem; min-height: 2.75rem; padding: 0 0.8rem; border-radius: 999px; font-weight: 700; text-decoration: none; }
.pager a { color: var(--indigo); border: 1.5px solid var(--rule-strong); }
.pager a:hover { border-color: var(--indigo); }
.pager [aria-current='page'] { background: var(--indigo); color: #fff; }
.feature-post { display: grid; gap: var(--space-3); align-items: center; margin-bottom: var(--space-5); position: relative; }
@media (min-width: 56rem) { .feature-post { grid-template-columns: 1.2fr 1fr; gap: var(--space-4); } }
.feature-post h2 { font-size: var(--step-3); }
.feature-post h2 a { color: var(--ink); text-decoration: none; }
.feature-post h2 a::after { content: ''; position: absolute; inset: 0; }
.feature-post img { border-radius: 3px; width: 100%; aspect-ratio: 8/5; object-fit: cover; box-shadow: var(--shadow-card); }

.article-head { padding-block: var(--space-5) var(--space-4); }
.article-head__inner { max-width: 50rem; }
.article-head h1 { font-size: var(--step-4); line-height: 1.1; }
.article-meta { display: flex; flex-wrap: wrap; gap: 0.4rem 1.1rem; margin-top: var(--space-3); color: var(--ink-muted); font-weight: 600; font-size: var(--step--1); }
.article-meta a { color: var(--pink-ink); }
.article-figure { margin: 0 0 var(--space-5); }
.article-figure img { width: 100%; max-width: 56rem; border-radius: 3px; box-shadow: var(--shadow-card); }
.breadcrumbs { font-size: var(--step--1); color: var(--ink-muted); margin-bottom: var(--space-3); }
.breadcrumbs ol { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.4rem; }
.breadcrumbs li + li::before { content: '/'; margin-right: 0.4rem; color: var(--rule-strong); }
.breadcrumbs a { color: var(--ink-muted); }
.tablecloth .breadcrumbs, .tablecloth .breadcrumbs a { color: var(--lavender); }

.prose { max-width: var(--measure); font-size: clamp(1.06rem, 1rem + 0.3vw, 1.19rem); line-height: 1.75; }
.prose > * { margin: 0; }
.prose > * + * { margin-top: 1.15em; }
.prose h2 { font-size: var(--step-3); margin-top: 2em; }
.prose h3 { font-size: var(--step-2); margin-top: 1.8em; }
.prose h4 { font-size: var(--step-1); margin-top: 1.6em; }
.prose h2 + *, .prose h3 + *, .prose h4 + * { margin-top: 0.6em; }
.prose ul, .prose ol { padding-left: 1.3rem; }
.prose li + li { margin-top: 0.45em; }
.prose li::marker { color: var(--pink-ink); }
.prose blockquote { margin-inline: 0; padding: 0.4em 0 0.4em 1.2em; border-left: 1px solid var(--pink); font-family: var(--font-display); font-size: 1.12em; font-style: italic; }
.prose figure { margin-inline: 0; }
.prose img { border-radius: 3px; }
.prose hr { border: 0; height: 1px; background: var(--rule); margin-block: 2.5em; }
.prose table { border-collapse: collapse; width: 100%; font-size: 0.92em; display: block; overflow-x: auto; }
.prose th, .prose td { border: 1px solid var(--rule); padding: 0.55em 0.75em; text-align: left; vertical-align: top; }
.prose th { background: var(--surface-sunk); }
.prose .post-embed iframe, .prose .post-video video { width: 100%; height: auto; aspect-ratio: 16 / 9; border: 0; border-radius: 3px; background: #000; }
.prose figcaption { font-size: var(--step--1); color: var(--ink-muted); margin-top: 0.5rem; }
.prose strong { font-weight: 700; }

.author-box { display: grid; grid-template-columns: 5.5rem 1fr; gap: var(--space-3); align-items: start; padding: var(--space-3); margin-top: var(--space-5); max-width: var(--measure); }
.author-box img { width: 5.5rem; height: 5.5rem; border-radius: 50%; object-fit: cover; object-position: 50% 30%; }
.author-box h2 { font-size: var(--step-1); margin-bottom: 0.4rem; }
.author-box p { font-size: var(--step--1); margin: 0 0 0.6rem; }
.series-nav { display: grid; gap: var(--space-2); max-width: var(--measure); margin-top: var(--space-4); }
@media (min-width: 40rem) { .series-nav { grid-template-columns: 1fr 1fr; } }
.series-nav a { display: block; padding: var(--space-2) var(--space-3); border: 1.5px solid var(--rule-strong); border-radius: var(--radius); text-decoration: none; color: var(--ink); }
.series-nav a:hover { border-color: var(--indigo); }
.series-nav span { display: block; font-size: var(--step--1); color: var(--ink-muted); font-weight: 600; }
.series-nav strong { font-family: var(--font-display); font-weight: 600; line-height: 1.25; }
.series-nav .next { text-align: right; }

.legal h2 { font-size: var(--step-2); margin: var(--space-4) 0 var(--space-2); }
.todo-flag { background: #fff6cc; border: 1px dashed #8a6d00; color: #4a3b00; padding: 0.1em 0.4em; border-radius: 3px; font-size: 0.9em; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}
.cta-arches { position: absolute; right: -4%; top: -22%; width: 46%; color: var(--pink); z-index: 0; }
.cta-band .rsvp { position: relative; z-index: 1; }
svg { flex: none; }
a svg, h2 svg, h3 svg, li svg, .btn svg { width: 1.1em; height: 1.1em; vertical-align: -0.16em; }
.contact-lines { list-style: none; padding: 0; margin: var(--space-4) 0 0; display: grid; gap: var(--space-2); }
.contact-lines a { font-weight: 700; font-size: var(--step-1); text-decoration: none; }
.contact-lines a:hover { text-decoration: underline; }
.contact-lines .muted { display: block; font-size: var(--step--1); }

.card-stock .muted { color: var(--ink-muted); }
.card-stock a.course__name { color: var(--ink); text-decoration: none; }
.card-stock a.course__name:hover { color: var(--indigo); text-decoration: underline; }
@media (max-width: 36rem) {
  .course__meta, .course__desc, .course__go { padding-left: 0; }
  .course__price { padding-left: 0; }
}
.on-dark .card-stock :focus-visible { outline-color: var(--indigo); }


/* ===== 2. fallback font metrics (next/font's size-adjusted local fallbacks) ===== */
@font-face { font-family: 'Playfair Display Fallback'; src: local('Times New Roman'); ascent-override: 97.25%; descent-override: 22.56%; line-gap-override: 0.00%; size-adjust: 111.26%; }
@font-face { font-family: 'Raleway Fallback'; src: local('Arial'); ascent-override: 90.51%; descent-override: 22.53%; line-gap-override: 0.00%; size-adjust: 103.86%; }

/* ===== 3. WordPress block wrappers onto the design ===== */
/* headings inside the editor's content keep the Next scale */
.wp-block-heading { font-family: 'Playfair Display', 'Playfair Display Fallback', Georgia, 'Times New Roman', serif; }
/* core blocks carry their own margins; the design uses its own rhythm */
.wp-site-blocks > * + *, .entry-content > * + * { margin-block-start: 0; }
:where(.wp-block-group, .wp-block-columns, .wp-block-column, .wp-block-image, .wp-block-button, .wp-block-buttons, .wp-block-list, .wp-block-quote, .wp-block-separator) { margin: 0; }
/* zero-specificity resets: every design class (.section-head, .site-footer__legal, .print, .mt-5) outranks them */
.wp-block-columns { display: grid; gap: var(--space-4); align-items: start; }
.wp-block-columns.two-col { display: grid; gap: var(--space-5); }
@media (min-width: 60rem) { .wp-block-columns.two-col { grid-template-columns: 1fr 1fr; } }
.wp-block-columns.is-not-stacked-on-mobile { grid-template-columns: 1fr 1fr; }
.wp-block-columns.hero__grid { display: grid; }
.wp-block-columns.about-hero__grid { display: grid; }
.wp-block-columns.offer-hero__grid { display: grid; align-items: center; }
.wp-block-columns.split { display: grid; }
.wp-block-columns.feature-row { display: grid; }
.wp-block-columns.cta-band__grid { display: grid; }
/* buttons: core/buttons renders <div.wp-block-buttons><div.wp-block-button><a.wp-block-button__link>. The
   button variant classes (btn--lime, btn--indigo, btn--ghost, btn--ghost-light) go on the inner block. */
.wp-block-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
.wp-block-buttons.actions { margin-top: var(--space-4); }
.wp-block-buttons.mt-2 { margin-top: 1rem; }
.wp-block-buttons.mt-3 { margin-top: 1.5rem; }
.wp-block-buttons.mt-175 { margin-top: 1.75rem; }
.wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.6em;
  min-height: 3rem; padding: 0.8rem 1.5rem;
  font: 700 var(--step-0)/1.2 Raleway, 'Raleway Fallback', 'Segoe UI', system-ui, sans-serif;
  letter-spacing: 0.01em; text-decoration: none; border: 2px solid transparent; border-radius: 999px; cursor: pointer;
  transition: transform 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out), background-color 0.2s;
  background: var(--indigo); color: #fff;
}
.wp-block-button__link:active { transform: translateY(1px); }
.wp-block-button.btn--lime .wp-block-button__link { background: var(--lime); color: var(--indigo); box-shadow: 0 10px 24px -12px rgba(0,0,0,0.55); }
.wp-block-button.btn--lime .wp-block-button__link:hover { background: #f4ff7a; }
.wp-block-button.btn--indigo .wp-block-button__link { background: var(--indigo); color: #fff; }
.wp-block-button.btn--indigo .wp-block-button__link:hover { background: var(--indigo-deep); }
.wp-block-button.btn--ghost-light .wp-block-button__link { background: transparent; border-color: rgba(255,255,255,0.55); color: #fff; }
.wp-block-button.btn--ghost-light .wp-block-button__link:hover { border-color: #fff; background: rgba(255,255,255,0.08); }
.wp-block-button.btn--ghost .wp-block-button__link { background: transparent; border-color: var(--indigo); color: var(--indigo); }
.wp-block-button.btn--ghost .wp-block-button__link:hover { background: var(--indigo); color: #fff; }
.tablecloth .wp-block-button__link, .plum-ground .wp-block-button__link { color: inherit; }
.tablecloth .wp-block-button.btn--lime .wp-block-button__link { color: var(--indigo); }
.tablecloth .wp-block-button.btn--indigo .wp-block-button__link, .site-footer .wp-block-button.btn--indigo .wp-block-button__link { color: #fff; }
/* the authored arrow icon after a button's label (Next: <Arrow /> inside .btn) */
.wp-block-button.has-arrow .wp-block-button__link::after, .text-link.has-arrow::after {
  content: ''; width: 1.1em; height: 1.1em; flex: none; background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 10h13M11.5 5l5 5-5 5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 10h13M11.5 5l5 5-5 5'/%3E%3C/svg%3E") center/contain no-repeat;
  transition: transform 0.35s var(--ease-out);
}
.wp-block-button.has-arrow .wp-block-button__link:hover::after { transform: translateX(3px); }
.wp-block-button.has-mail .wp-block-button__link::before {
  content: ''; width: 1.1em; height: 1.1em; flex: none; background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='15' height='11' rx='1.5'/%3E%3Cpath d='M3 5.5l7 5.5 7-5.5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='15' height='11' rx='1.5'/%3E%3Cpath d='M3 5.5l7 5.5 7-5.5'/%3E%3C/svg%3E") center/contain no-repeat;
}
.wp-block-buttons.rsvp-btn { display: block; margin-top: 0; }
.wp-block-buttons.rsvp-btn .wp-block-button, .rsvp .wp-block-button { width: 100%; }
.rsvp .wp-block-button__link { width: 100%; }
.mobile-nav .wp-block-button { width: 100%; }
@media (max-width: 30rem) { .actions .wp-block-button { width: 100%; } .actions .wp-block-button__link { width: 100%; } }
/* inline text links inside a buttons row (Next: <a class="text-link"> beside a .btn) */
.wp-block-buttons .text-link { display: inline-block; }
/* images: core/image is <figure.wp-block-image><img>[<figcaption>] */
.wp-block-image img { height: auto; }
.wp-block-image.print { transform: rotate(2.2deg); }
.wp-block-image.print.print-banner { transform: rotate(-1.8deg); width: min(100%, 34rem); padding-bottom: 12px; }
.wp-block-image.print.print-banner img { aspect-ratio: 1640 / 924; }
.wp-block-image.print figcaption { margin: 0; text-align: left; }
.print figcaption strong, .print figcaption em { display: block; font: 600 var(--step--1)/1.4 Raleway, 'Raleway Fallback', 'Segoe UI', system-ui, sans-serif; color: var(--ink-muted); letter-spacing: 0.02em; font-style: normal; }
.wp-block-image.feature-figure { margin: 2rem 0 0; }
.wp-block-image.feature-figure img { border-radius: 3px; box-shadow: var(--shadow-card); }
.wp-block-image.feature-row-figure img { border-radius: 3px; box-shadow: var(--shadow-card); width: 100%; }
/* quotes inside cards, if edited as core/quote */
.quote-card .wp-block-quote { margin: 0 0 var(--space-3); border: 0; padding: 0; font: 400 var(--step-1)/1.5 'Playfair Display', 'Playfair Display Fallback', Georgia, serif; }
/* lists */
.wp-block-list.check-list, .wp-block-list.industry-list, .wp-block-list.handles, .wp-block-list.contact-lines { list-style: none; }
.plum-ground .industry-list li { border-color: rgba(199,196,234,0.35); }
.industry-list.one-col { columns: 1; }
.wp-block-list.handles li, .wp-block-list.contact-lines li { padding: 0; border: 0; }
/* utility spacing for the one-off inline styles in the Next pages */
.mt-1 { margin-top: 0.5rem; } .mt-2 { margin-top: 1rem; } .mt-125 { margin-top: 1.25rem; } .mt-3 { margin-top: 1.5rem; } .mt-4 { margin-top: 2.5rem; } .mt-5 { margin-top: var(--space-5); }
.mb-0 { margin-bottom: 0; } .mb-075 { margin-bottom: 0.75rem; } .mb-125 { margin-bottom: 1.25rem; } .mb-2 { margin-bottom: 1rem; }
.max-38 { max-width: 38rem; } .max-42 { max-width: 42rem; } .max-44 { max-width: 44rem; } .max-46 { max-width: 46rem; } .max-50 { max-width: 50rem; } .max-58 { max-width: 58rem; } .max-60 { max-width: 60rem; } .max-18ch { max-width: 18ch; }
.wrap.max-44, .wrap.max-46, .wrap.max-50, .wrap.max-58, .wrap.max-60 { margin-inline: auto; }
.fs-2 { font-size: var(--step-2); } .fs-3 { font-size: var(--step-3); } .fs-4 { font-size: var(--step-4) !important; } .fs-5 { font-size: var(--step-5) !important; }
.display-face { font-family: 'Playfair Display', 'Playfair Display Fallback', Georgia, serif; }
.on-white { color: #fff !important; }
.on-lavender { color: var(--lavender) !important; }
.weight-600 { font-weight: 600; }
.section-head--row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1rem; max-width: none; }
.section.pt-3 { padding-top: var(--space-3); }
.card-pad { padding: var(--space-4) var(--space-3); }
.hero .lede.lede--display { font-family: 'Playfair Display', 'Playfair Display Fallback', Georgia, serif; font-size: var(--step-2); color: var(--lavender); margin-top: 1.25rem; }
.hero .rsvp.rsvp--right { transform: rotate(1.2deg); }
.hero .rsvp h2 { font-size: var(--step-2); margin-bottom: 0.5rem; }
.contact-lines a svg, .rsvp h2 svg { width: 1.1em; height: 1.1em; vertical-align: -0.16em; }
.note-card h3.mt-0 { margin-top: 0; }
.note-card p.mb-0 { margin-bottom: 0; }
.handoff .wp-block-buttons { margin: 0; }
@media (min-width: 52rem) { .handoff .wp-block-buttons { grid-column: 2; grid-row: 1 / span 2; } }
.prose-block .note-card h2.fs-2 { margin: 0 0 0.75rem; }
.story.prose-block p:first-child::first-letter { font: 600 3.6em/0.8 'Playfair Display', 'Playfair Display Fallback', Georgia, serif; float: left; margin: 0.08em 0.1em 0 0; color: var(--indigo); }
/* the post body is <div.entry-content.wp-block-post-content.prose> */
.entry-content.prose > * { margin: 0; }
.entry-content.prose > * + * { margin-top: 1.15em; }
.prose .wp-block-heading { margin-top: 2em; }
.prose h2 + *, .prose h3 + *, .prose h4 + * { margin-top: 0.6em; }
.prose .wp-block-image { margin: 1.15em 0 0; }
.prose figure.wp-block-table { display: block; }
.prose .wp-block-table table { display: block; }
.prose .wp-block-embed, .prose .wp-block-video { margin: 1.15em 0 0; }
.prose .wp-block-video video { width: 100%; height: auto; aspect-ratio: 16 / 9; border-radius: 3px; background: #000; }
.prose ul.wp-block-list, .prose ol.wp-block-list { padding-left: 1.3rem; }
.prose .wp-block-quote { margin-inline: 0; padding: 0.4em 0 0.4em 1.2em; border-left: 1px solid var(--pink); font-family: 'Playfair Display', 'Playfair Display Fallback', Georgia, serif; font-size: 1.12em; font-style: italic; }
.prose .wp-block-quote p { margin: 0; }
.prose .wp-block-quote p + p { margin-top: 0.6em; }
.prose .wp-block-separator { border: 0; height: 1px; background: var(--rule); margin-block: 2.5em; width: auto; max-width: none; }
.prose .wp-block-separator.has-alpha-channel-opacity { opacity: 1; }
/* logged-in admin bar: keep the sticky header below it */
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }
/* screen reader text that WordPress core injects */
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* search results page */
.search-results .blog-head h1 { font-size: var(--step-4); }

/* ===== 4. pattern conventions (group.actions, p.text-link, group.phases, icon pseudo-elements) ===== */
.wp-block-group.actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin-top: var(--space-4); }
.wp-block-group.actions.mt-175 { margin-top: 1.75rem; }
.wp-block-group.actions > .wp-block-buttons { display: contents; }
.actions p { margin: 0; }
p.text-link { margin: 0; }
p.text-link a { font-weight: 700; color: var(--link); text-decoration: underline; text-underline-offset: 0.25em; }
.tablecloth p.text-link a { color: #fff; text-decoration-color: var(--lime); }
p.text-link.mt-3 { margin-top: 1.5rem; }
p.text-link.mt-125 { margin-top: 1.25rem; }
.price-tag em { color: var(--lavender); font-size: var(--step--1); font-weight: 600; font-style: normal; }
.wp-block-group.phases { counter-reset: phase; display: grid; gap: 0; }
.wp-block-group.phase { display: grid; grid-template-columns: 4.5rem 1fr; gap: var(--space-2); padding: var(--space-3) 0; border-top: 1px solid var(--rule); counter-increment: phase; }
.wp-block-group.phase::before { content: counter(phase); font: 600 var(--step-4)/0.85 'Playfair Display', 'Playfair Display Fallback', Georgia, serif; color: var(--indigo); }
.phase .wp-block-heading { font-size: var(--step-1); font-family: Raleway, 'Raleway Fallback', 'Segoe UI', system-ui, sans-serif; font-weight: 700; margin-bottom: 0.35rem; }
.phase h3 em { font-style: normal; color: var(--ink-muted); font-weight: 600; }
.phase p { margin: 0; }
.phase ul { margin: 0.6rem 0 0; }
.fs-1 { font-size: var(--step-1); }
.mb-06 { margin-bottom: 0.6rem; }
.mt-0 { margin-top: 0 !important; }
.max-22 { max-width: 22rem; }
.site-footer__logo-block { width: 200px; margin-bottom: var(--space-2); }
.site-footer__logo-block img { width: 200px; height: auto; }
.site-footer p.on-lavender { color: var(--lavender); }
.site-footer .wp-block-buttons { margin-top: 0; }
.site-footer__legal p { margin: 0; }
h2.has-calendar::before, .contact-lines a.has-mail::before {
  content: ''; display: inline-block; width: 1.1em; height: 1.1em; vertical-align: -0.16em; margin-right: 0.35em; background-color: currentColor;
  -webkit-mask: var(--icon) center/contain no-repeat; mask: var(--icon) center/contain no-repeat;
}
h2.has-calendar::before { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.5' width='14' height='12' rx='1.5'/%3E%3Cpath d='M3 8.5h14M7 2.5v4M13 2.5v4'/%3E%3C/svg%3E"); }
.contact-lines a.has-mail::before { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='15' height='11' rx='1.5'/%3E%3Cpath d='M3 5.5l7 5.5 7-5.5'/%3E%3C/svg%3E"); }
.hero__grid > .rsvp { margin: 0; }
.print-stack > .wp-block-image.print { margin: 0 auto; }
.feature-row > .legal .wp-block-heading { font-size: var(--step-2); margin: var(--space-4) 0 var(--space-2); }
.legal h1.wp-block-heading { font-size: var(--step-4); margin: 0; }
.legal p.lede.mt-3 { margin-top: 1.5rem; }
.legal ul { padding-left: 1.2rem; }
/* the button variant classes sit on the wrapper div: the wrapper itself must stay unpainted */
.wp-block-button.btn--lime, .wp-block-button.btn--indigo, .wp-block-button.btn--ghost, .wp-block-button.btn--ghost-light { background: none; box-shadow: none; border: 0; color: inherit; }
/* size utilities must beat the prose-block heading scale (Next set these sizes inline) */
.prose-block h2.fs-2, .prose-block h3.fs-2, h2.fs-2, h3.fs-2 { font-size: var(--step-2); }

/* Review pass 2026-09-27: client-typed text must never widen the page. overflow-wrap: anywhere only
   acts when a word would otherwise overflow its box (a 100-character word in a quote or a headline),
   and the header list wraps instead of overflowing when six long labels do not fit on one line. */
.site-nav ul { flex-wrap: wrap; }
.site-header__bar, .offer-hero, .hero, .menu, .starter, .course, .quote-card, .place-cards, .cta-band, .rsvp, .newsletter, .form, .contact-lines, .handles, .mapp, .programme, .orgs-head, .blog-head, .article-head, .author-box, .note-card, .site-footer, .breadcrumbs { overflow-wrap: anywhere; }
.course__price small { white-space: normal; } /* the price stays on one line; its free-text note may wrap */
