/* ==========================================================================
   GoodVibes Foundation — gvs-layout.css
   LANE H3 · PAGE TEMPLATES · layout layer only.

   CASCADE — load LAST:
     1. css/gvs-tokens.css       (H1)  --gvs-* custom properties
     2. css/gvs-base.css         (H1)  reset, typography, .gvs-container/.gvs-wrap,
                                       .gvs-divider, motif classes, .gvs-skip
     3. css/gvs-components.css   (H2)  .gvs-btn, .gvs-card, .gvs-nav, .gvs-footer,
                                       .gvs-field, .gvs-tag, .gvs-table, .gvs-notice…
     4. css/gvs-layout.css       (H3)  THIS FILE — page shells, section bands,
                                       grids, responsive reflow.

   SOURCE OF TRUTH
     design/exports/gvs-tokens-C-pages.css      (Volume C — page layout spec)
     design/ai/gvs-guidelines-C-pages.build.jsx (15 artboards, exact geometry)
     design/exports/gvs-tokens-A-foundations.css (measured contrast)
     design/exports/gvs-tokens-B-components.css  (component + focus spec)

   THIS FILE DEFINES NO COLOURS, TYPE SCALE OR COMPONENTS.
   It consumes tokens and component classes. The single exception is section 1
   below, which re-asserts four accessibility-critical values that are WRONG in
   the shipped landing token set. See the comment there.

   Rules honoured throughout:
     · warm paper #F3E9D2 ground, never white
     · muted TYPE is --gvs-ink-muted #6E655B (4.73:1). #A9A29A is rules only.
     · focus ring is PETROL 2px/offset 2px. Gold on paper is 1.59:1 and fails.
     · Rasta divider is three hard butted bands, never a blend.
     · 8px baseline · breakpoints 1440 / 1200 / 1024 / 768 / 480
     · no !important, no external dependency, mobile-usable with zero JS.
   ========================================================================== */


/* ==========================================================================
   1 · GUARDS — accessibility corrections, deliberately last in the cascade
   --------------------------------------------------------------------------
   gvs-landing-tokens.css line 42 maps --gvs-text-muted straight to
   --gvs-soft-grey #A9A29A, which measures 2.09:1 on warm paper and fails WCAG
   AA at every size. Volume A corrects it to #6E655B (4.73:1) and Volume B sets
   the focus ring to petrol. Volume C section 11 still shows a 3px GOLD focus
   ring — gold on paper is 1.59:1 and fails SC 1.4.11's 3:1 non-text minimum,
   so Volume C is superseded here.

   These four declarations are identical to the Volume A / Volume B values. If
   H1 ships them correctly this block is a no-op; if H1 inherits the landing
   bug, this block is the safety net. Nothing else in this file sets a token.
   ========================================================================== */
:root {
  --gvs-ink-muted:   #6E655B;   /* muted type on warm paper — 4.73:1 PASS */
  --gvs-text-muted:  #6E655B;   /* NOT #A9A29A (2.09:1 FAIL)              */
  --gvs-teal-text:   #256A75;   /* type teal — NOT #2E7F8C (3.84:1)       */
  --gvs-focus-ring:  #1B4A5A;   /* petrol — NOT gold (1.59:1 FAIL)        */
  --gvs-focus-width:      2px;
  --gvs-focus-offset:     2px;
  --gvs-focus-ring-inverse: #FAF4E6;
}

:focus-visible {
  outline: var(--gvs-focus-width) solid var(--gvs-focus-ring);
  outline-offset: var(--gvs-focus-offset);
}
.gvs-on-dark :focus-visible,
.gvs-band :focus-visible,
.gvs-footer :focus-visible {
  outline-color: var(--gvs-focus-ring-inverse);
}


/* ==========================================================================
   1b · TEMPLATE-SCOPE TOKENS
   --------------------------------------------------------------------------
   Volume C (design/exports/gvs-tokens-C-pages.css) defines a set of values
   that only page templates ever consume: calendar cell geometry, fixed card
   and panel heights, the account shell, the mobile fallback. gvs-tokens.css is
   the GLOBAL layer and does not carry them, so they are declared here — the
   layer that uses them. Every value below is copied from Volume C, unchanged.

   Global tokens are NOT redeclared here. --gvs-col, --gvs-measure,
   --gvs-breakout-md, --gvs-breakout-full, --gvs-grid-2/3/4, --gvs-gutter,
   --gvs-section-pad, --gvs-nav-h and the whole palette / type scale all come
   from gvs-tokens.css.
   ========================================================================== */
:root {

  /* article — Volume C section 4. 680px is about 70 characters at 19px Inter. */
  --gvs-article-measure:  680px;
  --gvs-article-baseline:  32px;

  /* grids and fixed component heights — Volume C section 1 */
  --gvs-gutter-card:       24px;
  --gvs-card-h-4up:       336px;   /* What We Do card, 282 x 336            */
  --gvs-card-h-3up:       420px;   /* post / related card, 384 x 420        */
  --gvs-event-row-h:      112px;
  --gvs-event-row-pitch:  128px;

  /* calendar — Volume C section 1. 7 x 168 + 6 x 4 = 1200. 8px cannot divide
     1200 into seven whole cells, so the gutter is deliberately 4px.        */
  --gvs-cal-cell-w:       168px;
  --gvs-cal-cell-h:       152px;
  --gvs-cal-cell-gap:       4px;
  --gvs-cal-row-pitch:    156px;
  --gvs-cal-pill-h:        24px;
  --gvs-cal-pill-pitch:    28px;
  --gvs-cal-pill-max:         2;

  /* forms and account shell — Volume C sections 7 and 8 */
  --gvs-field-h:           56px;
  --gvs-field-pitch:       96px;
  --gvs-auth-card-w:      480px;
  --gvs-acct-tabs-h:       54px;
  --gvs-stat-card-h:      300px;
  --gvs-plan-panel-h:     520px;
  --gvs-table-row-h:       48px;

  /* mobile boards C-11a..d — Volume C section 1 */
  --gvs-m-gutter:          20px;
  --gvs-m-col:            350px;
  --gvs-m-nav-h:           64px;
  --gvs-m-measure:        350px;
}


/* Page-shell hooks. One per template, so a WordPress body_class can target a
   single page without a new stylesheet. */
.gvs-page--home,
.gvs-page--blog,
.gvs-page--article,
.gvs-page--calendar,
.gvs-page--events,
.gvs-page--event,
.gvs-page--auth,
.gvs-page--dashboard,
.gvs-page--settings { background: var(--gvs-bg); }


/* ==========================================================================
   2 · PAGE SHELL
   Volume C section 3 gives .gvs-wrap both `padding-inline: 0` (max-width 1200)
   and `padding-inline: var(--gvs-gutter)`. Those contradict. Resolved as the
   production pattern: the wrap is full-bleed with gutter padding and a content
   box that tops out at 1200. At >= 1440 that is 1200 + 2 x 120 = 1440 exactly,
   i.e. the drawn comp. Below that the gutter steps down and content goes fluid.
   ========================================================================== */
.gvs-page {
  background: var(--gvs-bg, #F3E9D2);
  color: var(--gvs-text, #1B4A5A);
  font-family: var(--gvs-font-body, "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif);
  min-height: 100%;
}

.gvs-wrap {
  width: 100%;
  max-width: calc(var(--gvs-col, 1200px) + 2 * var(--gvs-gutter, 120px));
  margin-inline: auto;
  padding-inline: var(--gvs-gutter, 120px);
}

/* A narrower wrap for reading-first pages. 880 + gutters. */
.gvs-wrap--narrow {
  max-width: calc(var(--gvs-breakout-md, 880px) + 2 * var(--gvs-gutter, 120px));
}

/* Section band. 112px block padding at desktop, 72 below 768 (see §13). */
.gvs-section {
  padding-block: var(--gvs-section-pad, 112px);
}
.gvs-section--tight  { padding-block: var(--gvs-space-12, 96px); }
.gvs-section--flush  { padding-block: 0; }
.gvs-section--top    { padding-block: var(--gvs-space-8, 64px) var(--gvs-section-pad, 112px); }

/* A dark band that bleeds full width. Type inside is cream. */
.gvs-section--dark {
  position: relative;
  overflow: hidden;
  background: var(--gvs-bg-inverse, #123640);
  color: var(--gvs-text-inverse, #FAF4E6);
}

/* Page header block that opens every inner template (blog, calendar, events). */
.gvs-pagehead {
  padding-block: var(--gvs-space-12, 96px) var(--gvs-space-8, 64px);
}
.gvs-pagehead__tick {
  width: 56px;
  height: 4px;
  background: var(--gvs-gold, #E8B33C);
  margin-bottom: 20px;
}
.gvs-pagehead__title {
  font-family: var(--gvs-font-display, "Avenir Next Condensed", "Archivo Narrow", Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 72px;
  line-height: 68px;
  text-transform: uppercase;
  margin: 20px 0 0;
}
.gvs-pagehead__sub {
  font-size: var(--gvs-fs-body-lg, 19px);
  line-height: 28px;
  margin: 20px 0 0;
  max-width: 62ch;
}
.gvs-pagehead__bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gvs-space-3, 24px);
  align-items: flex-end;
  justify-content: space-between;
}

/* Section heading pair used inside bands (eyebrow + h2 come from H1/H2). */
.gvs-secthead        { margin-bottom: var(--gvs-space-6, 48px); }
.gvs-secthead__intro { margin: 16px 0 0; font-size: var(--gvs-fs-body-lg, 19px); line-height: 28px; max-width: 68ch; }

/* Full-bleed helper for a band inside a wrapped page. */
.gvs-bleed { width: 100%; }


/* ==========================================================================
   3 · NAV SHELL + ZERO-JS DRAWER
   .gvs-nav / .gvs-nav__link / .gvs-nav__cta / .gvs-drawer / .gvs-burger are
   H2's. Only the internal flex layout and the <details> drawer wiring live
   here. The drawer is a native <details>/<summary> disclosure so the mobile
   menu works with JavaScript switched off.
   ========================================================================== */
.gvs-nav {
  position: relative;
  z-index: 20;
  background: var(--gvs-bg, #F3E9D2);
}
.gvs-nav__inner {
  display: flex;
  align-items: center;
  gap: var(--gvs-space-4, 32px);
  min-height: var(--gvs-nav-h, 96px);
}
.gvs-nav__brand {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  text-decoration: none;
  color: inherit;
  flex: 0 0 auto;
}
.gvs-nav__nav      { margin-inline: auto; }
.gvs-nav__links    { display: flex; align-items: center; gap: 26px; list-style: none; margin: 0; padding: 0; }
.gvs-nav__cta      { flex: 0 0 auto; }
.gvs-nav__account  { display: inline-flex; align-items: center; gap: 12px; flex: 0 0 auto; text-decoration: none; color: inherit; }
.gvs-nav__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  display: grid;
  place-items: center;
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-size: 20px;
}

/* details-based drawer: hidden at desktop, shown below 768 (see §13) */
.gvs-navdrawer            { display: none; margin-left: auto; }
.gvs-navdrawer > summary  { list-style: none; cursor: pointer; display: block; }
.gvs-navdrawer > summary::-webkit-details-marker { display: none; }
.gvs-navdrawer[open] .gvs-drawer { display: block; }
.gvs-navdrawer .gvs-drawer {
  position: absolute;
  inset-inline: 0;
  top: 100%;
  z-index: 30;
  display: none;
  padding: var(--gvs-space-3, 24px) var(--gvs-gutter, 24px) var(--gvs-space-6, 48px);
  background: var(--gvs-cream, #FAF4E6);
  border-block: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
}
.gvs-navdrawer .gvs-drawer ul { list-style: none; margin: 0; padding: 0; }
.gvs-navdrawer .gvs-drawer li + li { border-top: 1px solid rgb(27 74 90 / .18); }
.gvs-navdrawer .gvs-drawer a {
  display: block;
  padding-block: 16px;
  font-size: var(--gvs-fs-ui, 17px);
  text-decoration: none;
  color: var(--gvs-petrol, #1B4A5A);
}
.gvs-navdrawer__cta { margin-top: var(--gvs-space-3, 24px); }


/* ==========================================================================
   4 · UTILITIES  (layout-level only)
   ========================================================================== */
/* Image ratios per template — Volume C section 10. Ship assets at 2x. */
.gvs-ratio-16-9  { aspect-ratio: 16 / 9; }
.gvs-ratio-5-2   { aspect-ratio: 5 / 2; }
.gvs-ratio-4-3   { aspect-ratio: 4 / 3; }
.gvs-ratio-10-3  { aspect-ratio: 10 / 3; }
.gvs-ratio-20-11 { aspect-ratio: 20 / 11; }
.gvs-ratio-48-35 { aspect-ratio: 48 / 35; }
.gvs-ratio-1-1   { aspect-ratio: 1 / 1; }

img, iframe { max-width: 100%; }

/* Photo placeholder plate. Replaced by a real <img> at build time — see
   PAGES.md. aspect-ratio holds the box so there is zero layout shift, and the
   ground is --gvs-ink-muted #6E655B so the cream label measures 5.21:1. */
.gvs-imgph {
  display: grid;
  place-items: center;
  padding: 16px;
  text-align: center;
  background: var(--gvs-ink-muted, #6E655B);
  color: var(--gvs-cream, #FAF4E6);
  border-radius: var(--gvs-radius, 8px);
  font-size: var(--gvs-fs-micro, 13px);
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: .1em;
  text-transform: uppercase;
}
.gvs-imgph--flush { border-radius: 0; }

/* Warm-paper mat + petrol keyline around a photo (Volume A section 9). */
.gvs-frame {
  padding: var(--gvs-photo-mat, 16px);
  background: var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-frame > * { border-radius: var(--gvs-radius-sm, 4px); }

.gvs-figure            { margin: 0; }
.gvs-figure figcaption,
.gvs-caption {
  margin-top: var(--gvs-space-3, 24px);
  font-size: var(--gvs-fs-micro, 13px);
  line-height: 20px;
  color: var(--gvs-ink-muted, #6E655B);   /* never --gvs-soft-grey */
}

/* Visually hidden, still announced. */
.gvs-vh {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* Small stacked meta line. */
.gvs-meta {
  font-size: var(--gvs-fs-meta, 14px);
  line-height: 20px;
  color: var(--gvs-ink-muted, #6E655B);
}
.gvs-meta--inline { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }

/* Rule at the documented 25–30% petrol. */
.gvs-hr {
  height: 0;
  border: 0;
  border-top: var(--gvs-border-width, 2px) solid rgb(27 74 90 / .25);
  margin: 0;
}
.gvs-hr--thin { border-top-width: 1.5px; }

/* State label used on the multi-state auth board. */
.gvs-statelabel {
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin: 0 0 12px;
}

/* Text action with the gold underline the comp uses for tertiary links. */
.gvs-textlink {
  display: inline-block;
  font-size: var(--gvs-fs-meta, 14px);
  font-weight: var(--gvs-body-weight-em, 600);
  color: var(--gvs-petrol, #1B4A5A);
  text-decoration: none;
  border-bottom: 2px solid var(--gvs-gold, #E8B33C);
  padding-bottom: 2px;
}
.gvs-textlink:hover { border-bottom-color: var(--gvs-petrol, #1B4A5A); }
.gvs-on-dark .gvs-textlink,
.gvs-section--dark .gvs-textlink { color: var(--gvs-cream, #FAF4E6); }


/* ==========================================================================
   5 · C-02 LANDING  (front-page.php)
   Section stack: hero · proof row · marquee · what-we-do · events · story ·
   community band · newsletter · footer, with Rasta seams between.
   ========================================================================== */

/* ---- 5.1 hero -------------------------------------------------------- */
.gvs-hero            { padding-block: var(--gvs-space-14, 112px) 0; }
.gvs-hero__inner {
  display: grid;
  grid-template-columns: minmax(0, 600px) minmax(0, 1fr);
  gap: var(--gvs-space-6, 48px);
  align-items: start;
}
.gvs-hero__copy      { padding-top: var(--gvs-space-1, 8px); }
.gvs-hero__title {
  font-family: var(--gvs-font-display, "Avenir Next Condensed", Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-h1, 92px);
  line-height: var(--gvs-lh-h1, 86px);
  text-transform: uppercase;
  margin: 24px 0 0;
}
.gvs-hero__title em  { font-style: normal; color: var(--gvs-rasta-red, #C8230A); }
.gvs-hero__sub {
  font-size: var(--gvs-fs-lead, 20px);
  line-height: var(--gvs-lh-lead, 28px);
  margin: 24px 0 0;
  max-width: 46ch;
}
.gvs-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gvs-space-3, 24px);
  margin-top: var(--gvs-space-6, 48px);
}
.gvs-hero__mark      { margin-top: var(--gvs-space-8, 64px); }
.gvs-hero__seal      { display: grid; place-items: center; }
.gvs-hero__seal img  { width: 100%; max-width: var(--gvs-seal-size, 544px); height: auto; }

/* ---- 5.2 proof row — v2 fix (b): fills the dead paper under the seal ---- */
.gvs-proof {
  margin-top: var(--gvs-space-12, 96px);
  padding-top: var(--gvs-space-4, 32px);
  border-top: var(--gvs-border-width, 2px) solid rgb(27 74 90 / .25);
  padding-bottom: var(--gvs-space-12, 96px);
}
.gvs-proof__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gvs-gutter-card, 24px);
  list-style: none;
  margin: 0;
  padding: 0;
}
.gvs-proof__item     { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 16px; min-height: 108px; }
.gvs-proof__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 22px;
  line-height: 24px;
  text-transform: uppercase;
  margin: 0 0 8px;
}
.gvs-proof__body     { margin: 0; font-size: var(--gvs-fs-meta, 14px); line-height: 20px; }

/* ---- 5.3 marquee ----------------------------------------------------- */
.gvs-marquee {
  height: var(--gvs-marquee-height, 80px);
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  display: flex;
  align-items: center;
  overflow: hidden;
}
.gvs-marquee__track {
  display: flex;
  gap: 2em;
  white-space: nowrap;
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-marquee, 26px);
  letter-spacing: .04em;
  text-transform: uppercase;
  animation: gvs-marquee 42s linear infinite;
}
.gvs-marquee__track > span { padding-inline: 1em; }
@keyframes gvs-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ---- 5.4 card grid (What We Do) — 4 up 282 x 336 --------------------- */
.gvs-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--gvs-gutter-card, 24px);
  list-style: none;
  margin: 0;
  padding: 0;
}
.gvs-card-grid > li  { display: flex; }
.gvs-card-grid .gvs-card { min-height: var(--gvs-card-h-4up, 336px); width: 100%; }
.gvs-cardfoot        { margin-top: var(--gvs-space-6, 48px); text-align: center; }

/* ---- 5.5 event list -------------------------------------------------- */
.gvs-event-list      { list-style: none; margin: 0; padding: 0; }
.gvs-event-row {
  min-height: var(--gvs-event-row-h, 112px);
  margin-bottom: 16px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) auto;
  gap: 28px;
  align-items: center;
  padding: 20px 32px;
}
.gvs-event-row__body  { min-width: 0; }
.gvs-event-row__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-h3, 30px);
  line-height: 32px;
  text-transform: uppercase;
  margin: 0;
}
.gvs-event-row__title a { color: inherit; text-decoration: none; }
.gvs-event-row__title a:hover { text-decoration: underline; text-decoration-color: var(--gvs-gold, #E8B33C); }
.gvs-event-row__desc  { margin: 6px 0 0; font-size: var(--gvs-fs-card, 15px); line-height: 22px; }
.gvs-event-row__tags  { display: flex; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.gvs-event-row__aside { text-align: right; }
.gvs-event-list__foot {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gvs-space-3, 24px);
  align-items: center;
  justify-content: space-between;
  margin-top: var(--gvs-space-6, 48px);
}

/* ---- 5.6 story split (The Space) ------------------------------------- */
.gvs-story {
  display: grid;
  grid-template-columns: minmax(0, 576px) minmax(0, 1fr);
  gap: var(--gvs-space-6, 48px);
  align-items: start;
}
.gvs-story__quote {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-quote, 40px);
  line-height: var(--gvs-lh-quote, 48px);
  text-transform: uppercase;
  margin: 0;
}
.gvs-story__rule     { width: 64px; height: 4px; background: var(--gvs-gold, #E8B33C); margin: 32px 0; border: 0; }
.gvs-story__body p   { font-size: var(--gvs-fs-body, 18px); line-height: var(--gvs-lh-body, 30px); margin: 0 0 20px; }

/* ---- 5.7 community band --------------------------------------------- */
.gvs-band {
  position: relative;
  overflow: hidden;
  background: var(--gvs-bg-inverse, #123640);
  color: var(--gvs-text-inverse, #FAF4E6);
  padding-block: var(--gvs-space-12, 96px);
}
.gvs-band--panel     { border-radius: var(--gvs-radius, 8px); padding: var(--gvs-space-4, 32px) var(--gvs-space-4, 32px); }
.gvs-band__inner     { position: relative; z-index: 1; }
/* Positioning + clipping wrapper for H1's .gvs-sunburst (gvs-base.css §10a).
   Layout only: the ray fan, its colour cycle and its 30% dark tint all come
   from .gvs-sunburst / .gvs-sunburst--left / .gvs-sunburst--dark. */
.gvs-band__rays {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.gvs-band__rays > .gvs-sunburst { position: absolute; inset: 0; }
.gvs-band__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-h2, 52px);
  line-height: 1.06;
  text-transform: uppercase;
  margin: 24px 0 0;
}
.gvs-band__line      { margin: 20px 0 0; font-size: var(--gvs-fs-body-sm, 16px); line-height: 26px; max-width: 56ch; }
.gvs-band__actions   { display: flex; flex-wrap: wrap; gap: var(--gvs-space-3, 24px); margin-top: var(--gvs-space-4, 32px); }
.gvs-band__note      { margin: 24px 0 0; font-size: var(--gvs-fs-micro, 13px); opacity: .8; }
/* Gold ribbon eyebrow, 196 x 32 in the comp. */
.gvs-ribbon {
  display: inline-block;
  padding: 8px 20px;
  background: var(--gvs-gold, #E8B33C);
  color: var(--gvs-near-black, #161616);
  font-size: 12px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
}

/* ---- 5.8 newsletter row --------------------------------------------- */
.gvs-newsletter-panel {
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  padding: var(--gvs-space-6, 48px);
}
.gvs-newsletter-panel__form {
  display: grid;
  grid-template-columns: minmax(0, 560px) 200px minmax(0, 1fr);
  gap: var(--gvs-space-3, 24px);
  align-items: start;
  margin-top: var(--gvs-space-4, 32px);
}
.gvs-newsletter-panel__reassure { margin: 0; font-size: var(--gvs-fs-micro, 13px); line-height: 20px; }
.gvs-socialline {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin: var(--gvs-space-4, 32px) 0 0;
  padding: 0;
  list-style: none;
  font-size: var(--gvs-fs-micro, 13px);
}


/* ==========================================================================
   6 · C-03 BLOG INDEX  (home.php) — FULL WIDTH, NO SIDEBAR
   website_production_plan.md 1.3: pix-layout-blog and pix-layout-post are
   full-width. Do not reintroduce a .col-xl-8 content column.
   ========================================================================== */
.gvs-blog-index { --cols: 3; }

.gvs-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
}
.gvs-filter-row__label {
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin-right: 8px;
}

/* Featured post — 720 image + fluid text, min-height 400 */
.gvs-featured {
  display: grid;
  grid-template-columns: minmax(0, 720px) minmax(0, 1fr);
  min-height: 400px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  overflow: hidden;
}
.gvs-featured__media  { min-width: 0; }
.gvs-featured__media > * { width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.gvs-featured__body   { padding: var(--gvs-space-6, 48px); align-self: center; }
.gvs-featured__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 40px;
  line-height: 42px;
  text-transform: uppercase;
  margin: 20px 0 0;
}
.gvs-featured__title a { color: inherit; text-decoration: none; }
.gvs-featured__title a:hover { text-decoration: underline; text-decoration-color: var(--gvs-gold, #E8B33C); }
.gvs-featured__excerpt { margin: 20px 0 0; font-size: var(--gvs-fs-body, 18px); line-height: 28px; max-width: 54ch; }

/* Post grid — 3 up 384 x 420, gutter 24, 6 per page */
.gvs-post-grid {
  display: grid;
  gap: var(--gvs-gutter-card, 24px);
  grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
  list-style: none;
  margin: 0;
  padding: 0;
}
.gvs-post-grid > li { display: flex; }
.gvs-post-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: var(--gvs-card-h-3up, 420px);
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  overflow: hidden;
}
.gvs-post-card__media       { display: block; }
.gvs-post-card__media > img { aspect-ratio: 16 / 9; width: 100%; object-fit: cover; display: block; }
.gvs-post-card__body        { padding: 20px; display: flex; flex-direction: column; gap: 12px; flex: 1 1 auto; }
.gvs-post-card__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-card-h, 26px);
  line-height: 28px;
  text-transform: uppercase;
  margin: 0;
}
.gvs-post-card__title a { color: inherit; text-decoration: none; }
.gvs-post-card__title a:hover { text-decoration: underline; text-decoration-color: var(--gvs-gold, #E8B33C); }
.gvs-post-card__excerpt { margin: 0; font-size: var(--gvs-fs-card, 15px); line-height: var(--gvs-lh-card, 22px); }
.gvs-post-card__foot    { margin-top: auto; }

/* Pagination shell — H2 owns the cell styling. */
.gvs-pagination-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gvs-space-3, 24px);
  align-items: center;
  justify-content: space-between;
  margin-top: var(--gvs-space-8, 64px);
}
.gvs-pagination     { display: flex; gap: 12px; align-items: center; list-style: none; margin: 0; padding: 0; }
.gvs-pagination a,
.gvs-pagination span { min-width: 44px; height: 44px; display: inline-grid; place-items: center; }


/* ==========================================================================
   7 · C-04 ARTICLE  (single.php) — the typography-critical template
   MEASURE 680px, about 70 characters at 19px Inter. BASELINE 32px.
   Three widths: measure 680 · alignwide 880 · alignfull 1200.
   Volume C says this is the one number that must not be "improved".
   ========================================================================== */
.gvs-article { --gvs-article-measure: var(--gvs-measure, 680px); }

.gvs-article > * {
  width: 100%;
  max-width: var(--gvs-article-measure);
  margin-inline: auto;
}

.gvs-article p {
  font: var(--gvs-body-weight, 400) 19px/32px var(--gvs-font-body, Inter, Arial, sans-serif);
  color: var(--gvs-petrol, #1B4A5A);
  margin-block: 0 32px;
}
.gvs-article p.is-lead { font-size: 21px; line-height: 34px; }

.gvs-article h2 {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 36px;
  line-height: 40px;
  text-transform: uppercase;
  margin-block: 88px 24px;
}
.gvs-article h3 {
  font: var(--gvs-body-weight-em, 600) 20px/24px var(--gvs-font-body, Inter, Arial, sans-serif);
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-block: 68px 24px;
}
.gvs-article h3::before {
  content: "";
  display: block;
  width: 40px;
  height: 3px;
  background: var(--gvs-gold, #E8B33C);
  margin-bottom: 34px;
}
.gvs-article > :first-child { margin-block-start: 0; }

.gvs-article ul,
.gvs-article ol { margin-block: 0 32px; padding-left: 26px; }
.gvs-article ul { list-style: none; }
.gvs-article li {
  font: var(--gvs-body-weight, 400) 19px/32px var(--gvs-font-body, Inter, Arial, sans-serif);
  position: relative;
}
.gvs-article ul > li::before {
  content: "\2022";
  color: var(--gvs-gold, #E8B33C);
  font-weight: 600;
  position: absolute;
  left: -26px;
}
.gvs-article ol         { list-style: decimal; }
.gvs-article ol > li::marker { color: var(--gvs-gold, #E8B33C); font-weight: 600; }
.gvs-article li + li    { margin-top: 8px; }

.gvs-article blockquote {
  border-left: 4px solid var(--gvs-gold, #E8B33C);
  padding-left: 28px;
  margin-block: 88px;
  margin-inline: auto;
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 28px;
  line-height: 34px;
  text-transform: uppercase;
}
.gvs-article blockquote p       { font: inherit; margin: 0; }
.gvs-article blockquote cite {
  display: block;
  margin-top: 16px;
  font: var(--gvs-body-weight-em, 600) 13px/20px var(--gvs-font-body, Inter, Arial, sans-serif);
  letter-spacing: .12em;
  font-style: normal;
  color: var(--gvs-ink-muted, #6E655B);
}

.gvs-article figure     { margin-block: 48px; }
.gvs-article figcaption {
  font: var(--gvs-body-weight, 400) 13px/20px var(--gvs-font-body, Inter, Arial, sans-serif);
  color: var(--gvs-ink-muted, #6E655B);   /* Volume C used --gvs-soft-grey: FAIL */
  margin-top: 24px;
  max-width: var(--gvs-article-measure);
  margin-inline: auto;
}

.gvs-article pre {
  margin-block: 0 32px;
  padding: 24px;
  overflow-x: auto;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-left: 6px solid var(--gvs-teal-text, #256A75);
  border-radius: var(--gvs-radius, 8px);
  font-size: 14px;
  line-height: 24px;
}
.gvs-article pre code { font: inherit; }
.gvs-article :not(pre) > code {
  padding: 2px 6px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: 1px solid rgb(27 74 90 / .30);
  border-radius: var(--gvs-radius-sm, 4px);
  font-size: .9em;
}

/* Callout — 680 x 168, cream, 6px gold bar. */
.gvs-callout {
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-left: 6px solid var(--gvs-gold, #E8B33C);
  border-radius: var(--gvs-radius, 8px);
  padding: 30px;
  margin-block: 64px;
}
.gvs-callout__label {
  font: var(--gvs-body-weight-em, 600) 11px/1 var(--gvs-font-body, Inter, Arial, sans-serif);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin: 0 0 16px;
}
.gvs-callout p:last-child { margin-bottom: 0; }
.gvs-callout p { font-size: 16px; line-height: 24px; }

/* The three widths. */
.gvs-article > .alignwide { max-width: var(--gvs-breakout-md, 880px); }
.gvs-article > .alignfull { max-width: var(--gvs-breakout-full, 1200px); }

/* Responsive embed, 16:9, no JS. */
.gvs-embed          { position: relative; padding-top: 56.25%; background: var(--gvs-petrol, #1B4A5A); border-radius: var(--gvs-radius, 8px); overflow: hidden; }
.gvs-embed > iframe,
.gvs-embed > .gvs-imgph { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Article header block. */
.gvs-article-head       { padding-block: var(--gvs-space-6, 48px) 0; }
.gvs-crumbs {
  font-size: var(--gvs-fs-micro, 13px);
  line-height: 20px;
  color: var(--gvs-ink-muted, #6E655B);
  margin: 0 0 var(--gvs-space-6, 48px);
}
.gvs-crumbs ol   { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.gvs-crumbs li + li::before { content: "\203A"; margin-right: 8px; }
.gvs-crumbs a    { color: inherit; }

.gvs-article-title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 64px;
  line-height: 68px;
  text-transform: uppercase;
  margin: 20px 0 0;
  max-width: 26ch;
}
.gvs-byline {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  margin-top: var(--gvs-space-4, 32px);
  padding-bottom: var(--gvs-space-4, 32px);
  border-bottom: 1.5px solid rgb(27 74 90 / .30);
  font-size: var(--gvs-fs-meta, 14px);
}
.gvs-byline__avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  display: grid; place-items: center;
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-size: 15px;
  flex: 0 0 auto;
}
.gvs-byline__author { font-weight: var(--gvs-body-weight-em, 600); }
.gvs-byline__meta   { color: var(--gvs-ink-muted, #6E655B); }

/* Share rail — margin on desktop, a row below 1024.
   It is a child of .gvs-article, so opt it out of the measure box above. */
.gvs-article > .gvs-share-rail { width: auto; max-width: none; }
.gvs-share-rail {
  position: sticky;
  top: 120px;
  float: left;
  margin-left: -140px;
  display: grid;
  gap: 8px;
}
.gvs-share-rail__label {
  font-size: 10px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
}
.gvs-share-rail a {
  width: 40px; height: 40px;
  border: 1.5px solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  display: grid; place-items: center;
  color: var(--gvs-petrol, #1B4A5A);
}
.gvs-share-rail a:hover { background: var(--gvs-bg-panel, #FAF4E6); }

/* Article foot: tags, share, author box, related. */
.gvs-article-foot        { padding-block: var(--gvs-space-8, 64px) 0; }
.gvs-tag-row             { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 12px 0 0; padding: 0; }
.gvs-share-row           { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; }
.gvs-share-row a {
  width: 40px; height: 40px;
  border: 1.5px solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  display: grid; place-items: center;
  color: var(--gvs-petrol, #1B4A5A);
}
.gvs-authorbox {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: var(--gvs-space-3, 24px);
  align-items: center;
  padding: var(--gvs-space-4, 32px);
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-authorbox__avatar {
  width: 96px; height: 96px;
  border-radius: 50%;
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  display: grid; place-items: center;
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-size: 44px;
}
.gvs-authorbox__name {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-card-h, 26px);
  line-height: 28px;
  text-transform: uppercase;
  margin: 0 0 8px;
}
.gvs-authorbox__bio { margin: 0 0 12px; font-size: var(--gvs-fs-meta, 14px); line-height: 20px; }

.gvs-related-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gvs-gutter-card, 24px);
  list-style: none;
  margin: 0;
  padding: 0;
}
.gvs-related-grid > li { display: flex; }


/* ==========================================================================
   8 · C-05 CALENDAR  (archive-gvs_event.php · block gvs/calendar-month)
   The month grid is a real <table>: two axes (week x weekday) is tabular data,
   <th scope="col"> gives every cell its weekday context, and it needs no JS
   for keyboard use. Cell 168 x 152 with a 4px gutter — 7 x 168 + 6 x 4 = 1200.
   8px cannot divide 1200 into 7 whole cells, so 4px is deliberate.
   border-spacing also spaces the outer edges, so the table is widened by 8px
   and pulled back with a -4px inline margin to land cells on exactly 168.
   ========================================================================== */
.gvs-cal-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gvs-space-3, 24px);
  align-items: center;
  margin-bottom: var(--gvs-space-4, 32px);
}
.gvs-cal-toolbar__nav   { display: flex; gap: 8px; align-items: center; }
.gvs-cal-toolbar__month {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 34px;
  line-height: 36px;
  text-transform: uppercase;
  margin: 0 8px 0 8px;
}
.gvs-cal-toolbar__end   { margin-left: auto; display: flex; gap: 12px; align-items: center; }

.gvs-cal {
  width: calc(100% + 2 * var(--gvs-cal-cell-gap, 4px));
  margin-inline: calc(-1 * var(--gvs-cal-cell-gap, 4px));
  border-collapse: separate;
  border-spacing: var(--gvs-cal-cell-gap, 4px);
  table-layout: fixed;
}
.gvs-cal caption {
  caption-side: top;
  text-align: left;
  padding: 0 var(--gvs-cal-cell-gap, 4px) 12px;
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
}
.gvs-cal thead th {
  padding: 0 0 12px;
  border-bottom: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  font-size: 12px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  text-align: center;
}
.gvs-cal__cell {
  height: var(--gvs-cal-cell-h, 152px);
  vertical-align: top;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: 1.5px solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius-sm, 4px);
  padding: 12px;
}
.gvs-cal__cell--outside {
  background: var(--gvs-bg, #F3E9D2);
  color: var(--gvs-ink-muted, #6E655B);
}
.gvs-cal__cell--today   { border: 3px solid var(--gvs-gold, #E8B33C); padding: 10.5px; }
.gvs-cal__daybar        { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.gvs-cal__day {
  font-size: 14px;
  font-weight: var(--gvs-body-weight-em, 600);
  color: inherit;
  text-decoration: none;
}
.gvs-cal__cell--today .gvs-cal__day {
  background: var(--gvs-gold, #E8B33C);
  color: var(--gvs-petrol, #1B4A5A);
  border-radius: 50%;
  width: 30px; height: 30px;
  display: grid; place-items: center;
}
.gvs-cal__todaylabel {
  font-size: 9px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
}
.gvs-cal__events        { list-style: none; margin: 12px 0 0; padding: 0; }
.gvs-cal__events li     { margin-bottom: 4px; }
.gvs-cal__event {
  display: block;
  height: var(--gvs-cal-pill-h, 24px);
  font: var(--gvs-body-weight-em, 600) 10px/24px var(--gvs-font-body, Inter, Arial, sans-serif);
  letter-spacing: .06em;
  text-transform: uppercase;
  padding-inline: 8px;
  border-radius: var(--gvs-radius-sm, 4px);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-decoration: none;
}
.gvs-cal__more {
  font: var(--gvs-body-weight-em, 600) 11px/1 var(--gvs-font-body, Inter, Arial, sans-serif);
  border-bottom: 1.5px solid var(--gvs-gold, #E8B33C);
  color: var(--gvs-petrol, #1B4A5A);
  text-decoration: none;
}
.gvs-cal-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 32px;
  list-style: none;
  margin: var(--gvs-space-4, 32px) 0 0;
  padding: 0;
  font-size: var(--gvs-fs-micro, 13px);
}
.gvs-cal-legend li      { display: flex; gap: 8px; align-items: center; }
.gvs-cal-legend__swatch { width: 16px; height: 16px; border-radius: 3px; flex: 0 0 auto; }

/* ---- 8.1 mobile fallback: week strip + agenda (C-11c) ---------------- */
.gvs-cal-fallback { display: none; }
.gvs-cal-fallback__label {
  font-size: 10px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin: 0 0 12px;
}
.gvs-week-strip {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 46px;
  gap: 4px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  list-style: none;
  margin: 0;
  padding: 0 0 4px;
}
.gvs-week-strip__day {
  height: 64px;
  scroll-snap-align: start;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: 1.5px solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius-sm, 4px);
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 2px;
  text-align: center;
  text-decoration: none;
  color: var(--gvs-petrol, #1B4A5A);
}
.gvs-week-strip__day[aria-current="date"] {
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
}
.gvs-week-strip__wd  { font-size: 9px; font-weight: var(--gvs-body-weight-em, 600); letter-spacing: .12em; }
.gvs-week-strip__dn  { font-size: 15px; font-weight: var(--gvs-body-weight-em, 600); }
.gvs-week-strip__dot { width: 6px; height: 6px; border-radius: 50%; }
.gvs-week-strip__day[aria-current="date"] .gvs-week-strip__dot { background: var(--gvs-gold, #E8B33C); }

.gvs-agenda-head {
  margin: var(--gvs-space-4, 32px) 0 0;
  padding-bottom: 10px;
  border-bottom: 1.5px solid rgb(27 74 90 / .30);
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: .14em;
  text-transform: uppercase;
}
.gvs-agenda      { list-style: none; margin: 16px 0 0; padding: 0; }
.gvs-agenda__item {
  min-height: 88px;
  margin-bottom: 12px;
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  gap: 16px;
  align-items: center;
  padding: 16px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-agenda__time {
  width: 52px; height: 52px;
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  border-radius: var(--gvs-radius-sm, 4px);
  display: grid; place-items: center;
  font-size: 12px;
  font-weight: var(--gvs-body-weight-em, 600);
}
.gvs-agenda__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 20px;
  line-height: 22px;
  text-transform: uppercase;
  margin: 0 0 8px;
}
.gvs-agenda__title a { color: inherit; text-decoration: none; }
.gvs-agenda__empty   { margin: 16px 0 0; font-size: 12px; font-weight: var(--gvs-body-weight-em, 600); letter-spacing: .12em; text-transform: uppercase; color: var(--gvs-ink-muted, #6E655B); }

/* Compact dots-only month under the agenda. */
.gvs-minimonth {
  width: calc(100% + 8px);
  margin: var(--gvs-space-6, 48px) -4px 0;
  border-collapse: separate;
  border-spacing: 4px;
  table-layout: fixed;
}
.gvs-minimonth th { padding-bottom: 6px; font-size: 9px; letter-spacing: .12em; color: var(--gvs-teal-text, #256A75); }
.gvs-minimonth td {
  height: 40px;
  text-align: center;
  vertical-align: middle;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: 1px solid var(--gvs-petrol, #1B4A5A);
  border-radius: 3px;
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
}
.gvs-minimonth td.is-outside { background: var(--gvs-bg, #F3E9D2); color: var(--gvs-ink-muted, #6E655B); }
.gvs-minimonth a  { color: inherit; text-decoration: none; display: block; }
.gvs-minimonth__dot { width: 5px; height: 5px; border-radius: 50%; margin: 2px auto 0; }


/* ==========================================================================
   9 · C-06 EVENTS LIST  (archive-gvs_event.php · block gvs/event-list)
   Filters are a real GET form: selected filters live in the URL, no JS.
   ========================================================================== */
.gvs-event-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  align-items: end;
  padding: 20px 32px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-event-filters .gvs-field { margin-bottom: 0; }
.gvs-event-filters__actions   { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.gvs-result-count {
  margin: var(--gvs-space-4, 32px) 0 var(--gvs-space-6, 48px);
  font-size: var(--gvs-fs-card, 15px);
  font-weight: var(--gvs-body-weight-em, 600);
}
.gvs-event-group           { margin-bottom: var(--gvs-space-8, 64px); }
.gvs-event-group__head {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 28px;
  line-height: 30px;
  text-transform: uppercase;
  margin: 0 0 34px;
  padding-bottom: 10px;
  border-bottom: var(--gvs-border-width, 2px) solid rgb(27 74 90 / .30);
}
.gvs-empty-state {
  text-align: center;
  padding: 56px 32px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-empty-state__mark   { width: 72px; height: 72px; margin: 0 auto var(--gvs-space-4, 32px); }
.gvs-empty-state__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-h3, 30px);
  line-height: 32px;
  text-transform: uppercase;
  margin: 0 0 12px;
}
.gvs-empty-state__body   { margin: 0 auto var(--gvs-space-4, 32px); max-width: 52ch; font-size: var(--gvs-fs-card, 15px); line-height: 22px; }
.gvs-loadmore            { margin-top: var(--gvs-space-6, 48px); text-align: center; }


/* ==========================================================================
   10 · C-07 EVENT DETAIL  (single-gvs_event.php)
   ========================================================================== */
.gvs-event-hero {
  display: grid;
  grid-template-columns: minmax(0, 600px) minmax(0, 560px);
  gap: 40px;
  align-items: start;
  padding-block: var(--gvs-space-12, 96px) 0;
}
.gvs-event-hero__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 64px;
  line-height: 66px;
  text-transform: uppercase;
  margin: 20px 0 0;
}
.gvs-event-meta      { list-style: none; margin: var(--gvs-space-4, 32px) 0 0; padding: 0; }
.gvs-event-meta > li {
  display: grid;
  grid-template-columns: 20px 96px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  min-height: 48px;
}
.gvs-event-meta__label {
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
}
.gvs-event-meta__value { font-size: var(--gvs-fs-body-sm, 16px); font-weight: 500; }
.gvs-event-hero__actions { display: flex; flex-wrap: wrap; gap: var(--gvs-space-3, 24px); margin-top: var(--gvs-space-4, 32px); }

.gvs-prose-measure   { max-width: var(--gvs-measure, 680px); }
.gvs-prose-measure p { font-size: 19px; line-height: 32px; margin: 0 0 32px; }

.gvs-programme       { list-style: none; margin: var(--gvs-space-4, 32px) 0 0; padding: 0; }
.gvs-programme > li {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 20px;
  align-items: center;
  min-height: 60px;
  padding-bottom: 20px;
  margin-bottom: 20px;
  border-bottom: 1.5px solid rgb(27 74 90 / .25);
}
.gvs-programme__time {
  width: 72px; height: 40px;
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  border-radius: var(--gvs-radius-sm, 4px);
  display: grid; place-items: center;
  font-size: 15px;
  font-weight: var(--gvs-body-weight-em, 600);
}
.gvs-programme__name {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 24px;
  line-height: 26px;
  text-transform: uppercase;
  margin: 0 0 4px;
}
.gvs-programme__role { margin: 0; font-size: var(--gvs-fs-meta, 14px); }

.gvs-practical {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 52px;
  padding: 40px 32px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-practical__tick  { width: 40px; height: 3px; background: var(--gvs-gold, #E8B33C); margin-bottom: 20px; }
.gvs-practical__head {
  font-size: 12px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin: 0 0 16px;
}
.gvs-practical p      { margin: 0; font-size: var(--gvs-fs-card, 15px); line-height: 24px; }

.gvs-map              { position: relative; }
.gvs-map__note        { margin: 12px 0 0; }
.gvs-actions-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gvs-space-3, 24px);
  align-items: center;
  margin-top: var(--gvs-space-6, 48px);
}
.gvs-actions-row--center { justify-content: center; }


/* ==========================================================================
   11 · C-08 / C-09 / C-10 ACCOUNT
   ========================================================================== */

/* ---- 11.1 auth ------------------------------------------------------- */
.gvs-auth-page        { padding-block: var(--gvs-space-8, 64px) var(--gvs-space-14, 112px); }
.gvs-auth-page__head  { text-align: center; margin-bottom: var(--gvs-space-4, 32px); }
.gvs-auth-page__mark  { width: 68px; height: 68px; margin: 0 auto 20px; display: block; }
.gvs-auth {
  max-width: var(--gvs-auth-card-w, 480px);
  margin-inline: auto;
  background: var(--gvs-bg-panel, #FAF4E6);
  padding: 32px;
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-auth__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 34px;
  line-height: 36px;
  text-transform: uppercase;
  margin: 0 0 8px;
}
.gvs-auth__sub        { margin: 0 0 var(--gvs-space-4, 32px); font-size: var(--gvs-fs-meta, 14px); line-height: 20px; }
.gvs-auth__foot       { margin: var(--gvs-space-3, 24px) 0 0; text-align: center; font-size: var(--gvs-fs-micro, 13px); }
.gvs-auth__note       { margin: var(--gvs-space-3, 24px) auto 0; max-width: 62ch; text-align: center; font-size: var(--gvs-fs-micro, 13px); line-height: 20px; color: var(--gvs-ink-muted, #6E655B); }
.gvs-auth .gvs-btn    { width: 100%; }

/* the field pitch is 96: 56 box + 10 label gap + 30 to the next label */
.gvs-field            { margin-bottom: 40px; }
.gvs-field > label    { display: block; margin-bottom: 10px; font: var(--gvs-body-weight-em, 600) 13px/1 var(--gvs-font-body, Inter, Arial, sans-serif); color: var(--gvs-petrol, #1B4A5A); }
/* Volume C section 7 specifies the field box itself. H2 also owns inputs; if
   gvs-components.css ships an equivalent rule this one is redundant, not
   conflicting — the values are taken from the same spec line. */
.gvs-field > input,
.gvs-field > select,
.gvs-field > textarea {
  height: var(--gvs-field-h, 56px);
  width: 100%;
  padding-inline: 16px;
  background: var(--gvs-bg-panel, #FAF4E6);
  color: var(--gvs-text, #1B4A5A);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  font-size: var(--gvs-fs-ui, 17px);
}
.gvs-field > textarea      { height: auto; min-height: 120px; padding-block: 14px; }
.gvs-field.is-error > input,
.gvs-field.is-error > select,
.gvs-field.is-error > textarea { border-color: var(--gvs-rasta-red, #C8230A); }
.gvs-field--tight     { margin-bottom: 20px; }
.gvs-field__hint      { margin: 8px 0 0; font-size: 12px; line-height: 18px; color: var(--gvs-ink-muted, #6E655B); }
.gvs-field__error     { margin: 8px 0 0; font-size: 12px; line-height: 18px; color: var(--gvs-rasta-red, #C8230A); }
.gvs-form-error {
  background: var(--gvs-bg-panel, #FAF4E6);
  border: 2px solid var(--gvs-rasta-red, #C8230A);
  border-left: 5px solid var(--gvs-rasta-red, #C8230A);
  border-radius: var(--gvs-radius, 8px);
  padding: 12px 16px;
  margin-bottom: var(--gvs-space-3, 24px);
  color: var(--gvs-rasta-red, #C8230A);
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}
.gvs-form-error p     { margin: 0; font-size: 13px; line-height: 18px; }
.gvs-form-success {
  text-align: left;
}
.gvs-form-success__disc {
  width: 48px; height: 48px;
  border-radius: 50%;
  background: var(--gvs-rasta-green, #1A6B30);
  color: var(--gvs-cream, #FAF4E6);
  display: grid; place-items: center;
  margin-bottom: 20px;
}
.gvs-consent          { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 12px; margin-bottom: var(--gvs-space-3, 24px); }
.gvs-consent__note    { margin: 6px 0 0; font-size: 12px; line-height: 18px; color: var(--gvs-ink-muted, #6E655B); }

/* Multi-state board: one state card per column, documented, not live UI. */
.gvs-state-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 480px));
  gap: var(--gvs-space-6, 48px);
  justify-content: center;
  align-items: start;
}
.gvs-state-grid .gvs-auth { margin-inline: 0; }

.gvs-entrypoint {
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-left: 6px solid var(--gvs-gold, #E8B33C);
  border-radius: var(--gvs-radius, 8px);
  padding: var(--gvs-space-4, 32px);
}
.gvs-entrypoint__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-h3, 30px);
  line-height: 32px;
  text-transform: uppercase;
  margin: 12px 0 20px;
}
.gvs-entrypoint ul    { list-style: none; margin: 0; padding: 0; }
.gvs-entrypoint li    { position: relative; padding-left: 22px; margin-bottom: 10px; font-size: var(--gvs-fs-micro, 13px); line-height: 20px; }
.gvs-entrypoint li::before { content: "\2022"; position: absolute; left: 0; color: var(--gvs-gold, #E8B33C); font-weight: 600; }

/* ---- 11.2 account shell -------------------------------------------- */
.gvs-account-tabs {
  border-bottom: 1.5px solid rgb(27 74 90 / .25);
}
.gvs-account-tabs ul {
  display: flex;
  gap: 0;
  list-style: none;
  margin: 0;
  padding: 0;
  overflow-x: auto;
}
.gvs-account-tabs a {
  display: grid;
  place-items: center;
  height: var(--gvs-acct-tabs-h, 54px);
  padding-inline: 20px;
  font-size: var(--gvs-fs-card, 15px);
  color: var(--gvs-petrol, #1B4A5A);
  text-decoration: none;
  white-space: nowrap;
}
.gvs-account-tabs a[aria-current="page"] {
  font-weight: var(--gvs-body-weight-em, 600);
  box-shadow: inset 0 -3px 0 var(--gvs-gold, #E8B33C);
}
.gvs-account-head     { padding-block: var(--gvs-space-12, 96px) var(--gvs-space-6, 48px); }
.gvs-account-head__h1 {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 48px;
  line-height: 50px;
  text-transform: uppercase;
  margin: 20px 0 0;
}
.gvs-account-head__sub { margin: 12px 0 0; font-size: var(--gvs-fs-card, 15px); font-weight: 500; }

/* dashboard cards: 3 x 384 then 792 + 384 */
.gvs-stat-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gvs-gutter-card, 24px);
}
.gvs-stat-grid--split { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.gvs-stat-grid + .gvs-stat-grid { margin-top: var(--gvs-gutter-card, 24px); }
.gvs-stat-card {
  display: flex;
  flex-direction: column;
  min-height: var(--gvs-stat-card-h, 300px);
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  padding: 24px;
}
.gvs-stat-card__tick  { width: 32px; height: 3px; background: var(--gvs-gold, #E8B33C); margin-bottom: 12px; }
.gvs-stat-card__label {
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin: 0 0 20px;
}
.gvs-stat-card__figure {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 56px;
  line-height: 1;
  margin: 0;
}
.gvs-stat-card__tier {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 30px;
  line-height: 32px;
  text-transform: uppercase;
  margin: 16px 0 8px;
}
.gvs-stat-card__foot  { margin-top: auto; padding-top: 20px; }
.gvs-stat-card__row   { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 16px; align-items: center; }

.gvs-shift-table      { width: 100%; border-collapse: collapse; }
.gvs-shift-table th {
  text-align: left;
  padding-bottom: 12px;
  border-bottom: 1.5px solid rgb(27 74 90 / .30);
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
}
.gvs-shift-table td   { height: 52px; border-bottom: 1px solid rgb(27 74 90 / .18); font-size: var(--gvs-fs-meta, 14px); }
.gvs-shift-table tr:last-child td { border-bottom: 0; }

.gvs-quick            { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.gvs-quick a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 44px;
  padding-inline: 16px;
  border: 1.5px solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  font-size: var(--gvs-fs-meta, 14px);
  color: var(--gvs-petrol, #1B4A5A);
  text-decoration: none;
}
.gvs-quick a:hover    { background: var(--gvs-bg, #F3E9D2); }

/* ---- 11.3 membership tiers ----------------------------------------- */
.gvs-plan-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gvs-gutter-card, 24px);
  list-style: none;
  margin: 0;
  padding: 0;
}
.gvs-plan-grid > li   { display: flex; }
.gvs-plan {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: var(--gvs-plan-panel-h, 520px);
  padding: 28px;
  background: var(--gvs-bg, #F3E9D2);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-plan--recommended { background: var(--gvs-bg-panel, #FAF4E6); border-top: 8px solid var(--gvs-gold, #E8B33C); }
.gvs-plan__flag {
  align-self: flex-start;
  margin-bottom: 16px;
  padding: 6px 12px;
  background: var(--gvs-gold, #E8B33C);
  color: var(--gvs-near-black, #161616);
  border-radius: var(--gvs-radius-sm, 4px);
  font-size: 10px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
}
.gvs-plan__name {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 32px;
  line-height: 34px;
  text-transform: uppercase;
  margin: 0 0 8px;
}
.gvs-plan__price      { display: flex; align-items: baseline; gap: 8px; margin: 0 0 24px; }
.gvs-plan__amount {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 40px;
  line-height: 1;
}
.gvs-plan__period     { font-size: var(--gvs-fs-meta, 14px); color: var(--gvs-ink-muted, #6E655B); }
.gvs-plan__list       { list-style: none; margin: 0 0 24px; padding: 0; }
.gvs-plan__list li    { position: relative; padding-left: 26px; margin-bottom: 12px; font-size: var(--gvs-fs-meta, 14px); line-height: 20px; }
.gvs-plan__list li::before { content: "\2713"; position: absolute; left: 0; color: var(--gvs-gold, #E8B33C); font-weight: 700; }
.gvs-plan__cta        { margin-top: auto; }
.gvs-plan__cta .gvs-btn { width: 100%; }

/* ---- 11.4 settings -------------------------------------------------- */
.gvs-account {
  display: grid;
  grid-template-columns: minmax(0, 792px) 336px;
  gap: 72px;
  align-items: start;
}
.gvs-setblock         { padding-block: var(--gvs-space-6, 48px); }
.gvs-setblock + .gvs-setblock { border-top: 1.5px solid rgb(27 74 90 / .25); }
.gvs-setblock__tick   { width: 40px; height: 3px; background: var(--gvs-gold, #E8B33C); margin-bottom: 20px; }
.gvs-setblock__h2 {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: 32px;
  line-height: 34px;
  text-transform: uppercase;
  margin: 0 0 var(--gvs-space-4, 32px);
}
.gvs-form-row2        { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gvs-gutter-card, 24px); }
.gvs-form-actions     { display: flex; flex-wrap: wrap; gap: var(--gvs-space-3, 24px); align-items: center; margin-top: var(--gvs-space-1, 8px); }
.gvs-avatar-row       { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: var(--gvs-space-3, 24px); align-items: center; margin-bottom: var(--gvs-space-6, 48px); }
.gvs-avatar-row__disc {
  width: 96px; height: 96px;
  border-radius: 50%;
  background: var(--gvs-petrol, #1B4A5A);
  color: var(--gvs-cream, #FAF4E6);
  display: grid; place-items: center;
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-size: 44px;
}
.gvs-avatar-row__actions { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.gvs-sidenote {
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
  padding: 24px;
}
.gvs-sidenote__label {
  font-size: 11px;
  font-weight: var(--gvs-body-weight-em, 600);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  margin: 0;
}
.gvs-sidenote__tick   { width: 32px; height: 3px; background: var(--gvs-gold, #E8B33C); margin: 10px 0 20px; }
.gvs-sidenote p       { margin: 0 0 16px; font-size: var(--gvs-fs-micro, 13px); line-height: 20px; }
.gvs-sidenote p:last-child { margin-bottom: 0; }

.gvs-meter            { display: flex; gap: 8px; margin: 12px 0; }
.gvs-meter__bar       { width: 64px; height: 6px; border-radius: 3px; background: var(--gvs-soft-grey, #A9A29A); }
.gvs-meter__bar.is-on { background: var(--gvs-rasta-green, #1A6B30); }

.gvs-notify           { list-style: none; margin: 0; padding: 0; }
.gvs-notify > li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 52px;
  gap: var(--gvs-space-3, 24px);
  align-items: center;
  min-height: 56px;
  padding-block: 12px;
  border-bottom: 1px solid rgb(27 74 90 / .15);
}
.gvs-notify__name     { display: block; font-size: var(--gvs-fs-card, 15px); font-weight: var(--gvs-body-weight-em, 600); }
.gvs-notify__desc     { margin: 4px 0 0; font-size: var(--gvs-fs-micro, 13px); line-height: 18px; }
.gvs-notify__locked   { display: block; margin-top: 4px; font-size: 11px; color: var(--gvs-ink-muted, #6E655B); }

.gvs-tablewrap        { overflow-x: auto; }
.gvs-billing-table    { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.gvs-billing-table th {
  font: var(--gvs-body-weight-em, 600) 11px/1 var(--gvs-font-body, Inter, Arial, sans-serif);
  letter-spacing: var(--gvs-tracking-eyebrow, .18em);
  text-transform: uppercase;
  color: var(--gvs-teal-text, #256A75);
  text-align: left;
  border-bottom: 2px solid var(--gvs-petrol, #1B4A5A);
  padding-bottom: 12px;
}
.gvs-billing-table td { height: var(--gvs-table-row-h, 48px); font-size: var(--gvs-fs-micro, 13px); padding-inline: 8px; }
.gvs-billing-table td:first-child,
.gvs-billing-table th:first-child { padding-left: 0; }
.gvs-billing-table tbody tr:nth-child(even) { background: rgb(250 244 230 / .55); }
.gvs-billing-table .is-amount,
.gvs-billing-table th.is-amount   { text-align: right; }
.gvs-billing-table tfoot td {
  border-top: 1.5px solid rgb(27 74 90 / .40);
  font-weight: var(--gvs-body-weight-em, 600);
}

.gvs-pm-row {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) auto auto auto;
  gap: 20px;
  align-items: center;
  min-height: 72px;
  margin-bottom: 12px;
  padding: 16px 32px;
  background: var(--gvs-bg-panel, #FAF4E6);
  border: var(--gvs-border-width, 2px) solid var(--gvs-petrol, #1B4A5A);
  border-radius: var(--gvs-radius, 8px);
}
.gvs-pm-row__name     { font-size: var(--gvs-fs-card, 15px); font-weight: 500; }
.gvs-pm-row__exp      { font-size: var(--gvs-fs-micro, 13px); color: var(--gvs-ink-muted, #6E655B); }
.gvs-pm-row__remove   { color: var(--gvs-rasta-red, #C8230A); }

.gvs-danger {
  border: 2px solid var(--gvs-rasta-red, #C8230A);
  border-left: 6px solid var(--gvs-rasta-red, #C8230A);
  border-radius: var(--gvs-radius, 8px);
  padding: 32px;
  background: var(--gvs-bg, #F3E9D2);   /* never a red fill */
}
.gvs-danger__head     { display: flex; gap: 12px; align-items: center; margin-bottom: 16px; }
.gvs-danger__title {
  font-family: var(--gvs-font-display, Impact, sans-serif);
  font-weight: var(--gvs-display-weight, 800);
  font-size: var(--gvs-fs-card-h, 26px);
  line-height: 28px;
  text-transform: uppercase;
  color: var(--gvs-rasta-red, #C8230A);
  margin: 0;
}
.gvs-danger p         { margin: 0 0 20px; font-size: var(--gvs-fs-meta, 14px); line-height: 22px; max-width: 88ch; }
.gvs-danger__actions  { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }


/* ==========================================================================
   12 · SEAM ORDER
   The Rasta seam (.gvs-divider, H1) is 10px between sections and 20px at the
   page foot. Bands are butted directly to it — no margin either side.
   ========================================================================== */
.gvs-divider + .gvs-section,
.gvs-section + .gvs-divider,
.gvs-divider + .gvs-band,
.gvs-band + .gvs-divider   { margin-block: 0; }
.gvs-divider--foot         { height: var(--gvs-footedge-height, 20px); }

/* gvs-base.css gives every bare <hr> a 48px block margin. A Rasta seam butts
   directly against the bands it separates, so cancel it here. */
hr.gvs-divider             { margin-block: 0; border: 0; }

/* gvs-base.css gives every <blockquote> a 6px rasta-red bar. The landing
   pull-quote carries a gold rule underneath instead, so clear the bar. */
.gvs-story__quote          { border: 0; padding-inline-start: 0; }

/* gvs-base.css underlines every <a> with a 10px offset. Icon buttons and
   breadcrumbs are not prose links. */
.gvs-share-rail a,
.gvs-share-row a           { text-decoration: none; }
.gvs-crumbs a              { text-underline-offset: 3px; text-decoration-thickness: 1px; }


/* ==========================================================================
   13 · BREAKPOINTS — Volume C section 8 / board C-12
     wide      >= 1440   gutter 120  content 1200 fixed  4 up
     desktop   1200-1439 gutter  48  fluid               4 up
     laptop    1024-1199 gutter  40  fluid               3 up   H1 92 -> 72
     tablet     768-1023 gutter  32  fluid               2 up   splits stack
     phone lg   480- 767 gutter  24  fluid               1 up   nav -> drawer
     phone     <= 479    gutter  20  content 350         1 up   cal -> agenda
   ========================================================================== */
@media (max-width: 1439.98px) {
  :root { --gvs-gutter: 48px; }
}

@media (max-width: 1199.98px) {
  :root { --gvs-gutter: 40px; --gvs-fs-h1: 72px; --gvs-lh-h1: 68px; }
  .gvs-blog-index      { --cols: 3; }
  .gvs-card-grid       { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gvs-account         { grid-template-columns: minmax(0, 1fr) 336px; gap: 40px; }
  .gvs-hero__inner     { grid-template-columns: minmax(0, 1fr) minmax(0, 440px); }
  .gvs-event-hero      { grid-template-columns: minmax(0, 1fr) minmax(0, 440px); }
  .gvs-featured        { grid-template-columns: minmax(0, 560px) minmax(0, 1fr); }
  .gvs-pagehead__title { font-size: 60px; line-height: 58px; }
  .gvs-article-title   { font-size: 56px; line-height: 58px; }
  .gvs-event-hero__title { font-size: 56px; line-height: 58px; }
}

@media (max-width: 1023.98px) {
  :root { --gvs-gutter: 32px; --gvs-fs-h2: 44px; }
  .gvs-blog-index      { --cols: 2; }
  .gvs-card-grid       { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gvs-featured        { grid-template-columns: minmax(0, 1fr); }   /* image above text */
  .gvs-practical       { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  .gvs-account         { grid-template-columns: minmax(0, 1fr); gap: var(--gvs-space-6, 48px); }
  .gvs-share-rail      { position: static; float: none; margin-left: 0; grid-auto-flow: column; justify-content: start; }
  .gvs-article > .alignwide { max-width: 100%; }
  .gvs-hero__inner     { grid-template-columns: minmax(0, 1fr); }
  .gvs-hero__seal      { order: 2; max-width: 420px; }
  .gvs-event-hero      { grid-template-columns: minmax(0, 1fr); }
  .gvs-story           { grid-template-columns: minmax(0, 1fr); }
  .gvs-proof__grid     { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gvs-related-grid    { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gvs-plan-grid       { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gvs-stat-grid       { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gvs-stat-grid--split { grid-template-columns: minmax(0, 1fr); }
  .gvs-newsletter-panel__form { grid-template-columns: minmax(0, 1fr) 200px; }
  .gvs-newsletter-panel__reassure { grid-column: 1 / -1; }
  .gvs-state-grid      { grid-template-columns: minmax(0, 480px); }
}

@media (max-width: 767.98px) {
  :root { --gvs-gutter: 24px; --gvs-fs-h1: 48px; --gvs-lh-h1: 48px; --gvs-section-pad: 72px; }
  .gvs-blog-index      { --cols: 1; }
  .gvs-card-grid       { grid-template-columns: minmax(0, 1fr); }
  .gvs-practical       { grid-template-columns: minmax(0, 1fr); }
  .gvs-event-row       { grid-template-columns: 56px minmax(0, 1fr); row-gap: 8px; padding: 20px; }
  .gvs-event-row__aside { grid-column: 1 / -1; text-align: left; }
  .gvs-event-filters   { grid-template-columns: minmax(0, 1fr); padding: 20px; }
  .gvs-proof__grid     { grid-template-columns: minmax(0, 1fr); }
  .gvs-related-grid    { grid-template-columns: minmax(0, 1fr); }
  .gvs-plan-grid       { grid-template-columns: minmax(0, 1fr); }
  .gvs-stat-grid       { grid-template-columns: minmax(0, 1fr); }
  .gvs-form-row2       { grid-template-columns: minmax(0, 1fr); }
  .gvs-pm-row          { grid-template-columns: 32px minmax(0, 1fr); row-gap: 8px; padding: 16px 20px; }
  .gvs-authorbox       { grid-template-columns: minmax(0, 1fr); }
  .gvs-event-meta > li { grid-template-columns: 20px minmax(0, 1fr); row-gap: 2px; align-items: start; padding-block: 8px; }
  .gvs-event-meta__label { grid-column: 2; }
  .gvs-event-meta__value { grid-column: 2; }
  .gvs-newsletter-panel__form { grid-template-columns: minmax(0, 1fr); }
  .gvs-newsletter-panel { padding: var(--gvs-space-4, 32px); }
  .gvs-pagehead__title { font-size: 44px; line-height: 44px; }
  .gvs-article-title   { font-size: 34px; line-height: 36px; }
  .gvs-event-hero__title { font-size: 38px; line-height: 40px; }
  .gvs-featured__title { font-size: 30px; line-height: 32px; }
  .gvs-cal-toolbar__month { font-size: 24px; line-height: 26px; }

  /* the 7-column month grid is REPLACED, not shrunk — board C-11c */
  .gvs-cal             { display: none; }
  .gvs-cal-legend      { display: none; }
  .gvs-cal-fallback    { display: block; }

  /* nav becomes the <details> drawer */
  .gvs-nav__links      { display: none; }
  .gvs-nav__nav        { margin-inline: 0; }
  .gvs-nav__cta        { display: none; }
  .gvs-navdrawer       { display: block; }
  .gvs-nav__inner      { min-height: var(--gvs-m-nav-h, 64px); gap: 16px; }
  .gvs-nav__wordmark   { font-size: 15px; }
}

@media (max-width: 479.98px) {
  :root {
    --gvs-gutter:  var(--gvs-m-gutter, 20px);
    --gvs-nav-h:   var(--gvs-m-nav-h, 64px);
    --gvs-fs-h1:   40px;
    --gvs-lh-h1:   40px;
    --gvs-fs-h2:   32px;
    --gvs-marquee-height: 60px;
    --gvs-measure: var(--gvs-m-measure, 350px);
  }
  .gvs-article p,
  .gvs-article li            { font-size: 17px; line-height: 28px; }
  .gvs-article p.is-lead     { font-size: 19px; line-height: 30px; }
  .gvs-article h2            { font-size: 26px; line-height: 30px; margin-block: 56px 20px; }
  .gvs-article h3            { margin-block: 48px 20px; }
  .gvs-article blockquote    { font-size: 22px; line-height: 26px; padding-left: 24px; margin-block: 56px; }
  .gvs-article > .alignwide,
  .gvs-article > .alignfull  { max-width: 100%; }
  .gvs-hero__seal            { order: 99; }        /* seal below the CTAs */
  .gvs-hero__actions .gvs-btn,
  .gvs-band__actions .gvs-btn,
  .gvs-auth .gvs-btn         { width: 100%; }
  .gvs-hero__actions,
  .gvs-band__actions         { gap: 12px; }
  .gvs-marquee__track        { font-size: 20px; }
  .gvs-proof__item           { min-height: 0; }
  .gvs-danger                { padding: 20px; }
  .gvs-setblock__h2          { font-size: 26px; line-height: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .gvs-marquee__track { animation: none; }
  .gvs-week-strip     { scroll-behavior: auto; }
}

@media print {
  .gvs-nav, .gvs-navdrawer, .gvs-footer, .gvs-marquee,
  .gvs-share-rail, .gvs-share-row, .gvs-newsletter-panel { display: none; }
  .gvs-page      { background: #fff; }
  .gvs-article > * { max-width: 100%; }
}
