/* ==========================================================================
   glennbolan.com — site stylesheet
   Direction: "Wayfinder". Colours from the logo (charcoal, navy, turquoise)
   plus one warm spark (ember) from the Leadership Calling cover.
   Everything is driven by the custom properties in :root.

   CSP note: style-src is 'self' only, so there are NO inline style=""
   attributes anywhere on the site. Add a class here instead.
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Fonts — self-hosted (no calls to Google). Variable fonts, Latin subset.
   If a file is ever replaced, give it a new name: /assets/fonts/* is cached
   for a year (public/_headers).
   -------------------------------------------------------------------------- */
@font-face {
  font-family: "Fraunces";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/fonts/fraunces-latin.woff2") format("woff2");
}
@font-face {
  font-family: "Fraunces";
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/fonts/fraunces-italic-latin.woff2") format("woff2");
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/fonts/inter-latin.woff2") format("woff2");
}
@font-face {
  font-family: "Josefin Sans";
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url("/assets/fonts/josefin-sans-latin.woff2") format("woff2");
}

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
  --paper:     #FAF8F4;   /* page background, warm off-white */
  --sand:      #F2EDE4;   /* alternate band */
  --white:     #FFFFFF;
  --ink:       #2A3136;   /* body text */
  --charcoal:  #3B4247;   /* logo charcoal */
  --muted:     #5B646A;   /* secondary text — AA on paper and white */
  --navy:      #16316F;   /* logo navy — primary */
  --navy-deep: #0D1D44;   /* dark bands */
  --teal:      #1ABECF;   /* logo turquoise — accents, text on dark only */
  --teal-ink:  #0A7582;   /* turquoise dark enough for text on light (4.9:1) */
  --ember:     #F28C28;   /* book-cover orange — the spark. Decoration, and text on dark only */
  --ember-ink: #A24F09;   /* ember dark enough for text on light */
  --on-dark:   #DCE4F2;   /* body text on navy */
  --on-dark-muted: #A9B8D4;
  --line:      rgba(22, 49, 111, .13);
  --line-dark: rgba(255, 255, 255, .14);

  --serif: "Fraunces", Georgia, "Times New Roman", serif;
  --sans:  "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --label: "Josefin Sans", "Inter", system-ui, sans-serif;

  --wrap: 1180px;
  --gutter: 1.25rem;
  --radius: 18px;
  --shadow: 0 1px 2px rgba(13, 29, 68, .06), 0 12px 32px -12px rgba(13, 29, 68, .18);
  --section: clamp(4.5rem, 9vw, 7.5rem);
}

/* --------------------------------------------------------------------------
   2. Base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font: 400 1.0625rem/1.7 var(--sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, video { max-width: 100%; height: auto; display: block; }
a { color: var(--teal-ink); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--navy); }
:focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; border-radius: 4px; }
::selection { background: rgba(26, 190, 207, .25); }

h1, h2, h3, h4 {
  font-family: var(--serif); font-weight: 400; color: var(--navy-deep);
  line-height: 1.1; letter-spacing: -.015em; margin: 0;
  font-variation-settings: "opsz" 144;
  text-wrap: balance;
}
h1 { font-size: clamp(2.6rem, 5.4vw, 4.4rem); font-weight: 350; letter-spacing: -.025em; }
h2 { font-size: clamp(2rem, 4vw, 3.05rem); }
h3 { font-size: 1.5rem; line-height: 1.2; }
h3, h4 { font-variation-settings: "opsz" 30; letter-spacing: -.005em; }
p { margin: 0 0 1.1em; }
ul, ol { padding-left: 1.2em; }
strong { font-weight: 600; }

.wrap   { width: min(var(--wrap), 100% - 2 * var(--gutter)); margin-inline: auto; }
.narrow { width: min(820px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.center { text-align: center; margin-inline: auto; }

.skip {
  position: absolute; left: 1rem; top: -4rem; z-index: 100;
  background: var(--navy); color: #fff; padding: .7rem 1rem; border-radius: 8px;
}
.skip:focus { top: 1rem; color: #fff; }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* Signature ampersand — carried over from the old site */
.amp { font-family: var(--serif); font-style: italic; color: var(--teal-ink); font-weight: 300; }

/* Eyebrow labels echo the logo's spaced capitals and navy dots */
.eyebrow {
  display: flex; flex-wrap: wrap; align-items: center; gap: .6rem;
  font: 600 .78rem/1.2 var(--label); letter-spacing: .2em; text-transform: uppercase;
  color: var(--teal-ink); margin: 0 0 1.3rem;
}
.center .eyebrow, .eyebrow.center { justify-content: center; }
.dot { width: .35rem; height: .35rem; border-radius: 50%; background: var(--navy); display: inline-block; flex: none; }
.spark {
  width: .55rem; height: .55rem; border-radius: 50%; background: var(--ember);
  box-shadow: 0 0 0 4px rgba(242, 140, 40, .18); display: inline-block; flex: none;
}

/* Waypoint rule — a thin line ending in a ring */
.waypoint { display: flex; align-items: center; width: 88px; margin: 1.5rem 0 0; }
.waypoint::before { content: ""; height: 1.5px; flex: 1; background: linear-gradient(90deg, transparent, var(--teal)); }
.waypoint::after { content: ""; width: 8px; height: 8px; border-radius: 50%; border: 1.5px solid var(--teal); }
.center .waypoint { margin-inline: auto; }

/* --------------------------------------------------------------------------
   3. Buttons
   -------------------------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
  padding: .95rem 1.5rem; border-radius: 999px; border: 1.5px solid transparent;
  font: 600 .95rem/1.1 var(--sans); text-decoration: none; letter-spacing: .01em;
  transition: transform .2s ease, background-color .2s ease, border-color .2s ease, color .2s ease;
  cursor: pointer;
}
.btn .arrow { transition: transform .2s ease; }
.btn:hover .arrow { transform: translateX(3px); }
.btn-primary { background: var(--navy); color: #fff; box-shadow: 0 10px 24px -10px rgba(22, 49, 111, .55); }
.btn-primary:hover { background: var(--navy-deep); color: #fff; transform: translateY(-1px); }
.btn-ghost { color: var(--navy); border-color: var(--line); background: transparent; }
.btn-ghost:hover { border-color: var(--navy); color: var(--navy); }
.btn-light { background: #fff; color: var(--navy-deep); }
.btn-light:hover { background: var(--teal); color: var(--navy-deep); }
.btn-outline-light { color: #fff; border-color: rgba(255, 255, 255, .35); }
.btn-outline-light:hover { border-color: #fff; color: #fff; }
.cta-row { display: flex; flex-wrap: wrap; gap: .9rem; }
.cta-row.center { justify-content: center; }

/* --------------------------------------------------------------------------
   4. Header and navigation
   The mobile menu is a <details> element: it opens and closes with no
   JavaScript, which is what lets the CSP forbid inline scripts.
   -------------------------------------------------------------------------- */
.site-header {
  position: sticky; top: 0; z-index: 30;
  background: rgba(250, 248, 244, .9);
  -webkit-backdrop-filter: saturate(1.4) blur(12px); backdrop-filter: saturate(1.4) blur(12px);
  border-bottom: 1px solid var(--line);
}
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; gap: 1rem; height: 76px; }
.brand { display: block; flex: none; }
.brand img { height: 44px; width: auto; }
.nav { display: flex; align-items: center; gap: 1.9rem; }
.nav a { color: var(--charcoal); text-decoration: none; font: 500 .93rem/1 var(--sans); padding: .4rem 0; border-bottom: 1.5px solid transparent; }
.nav a:hover { color: var(--navy); border-bottom-color: var(--teal); }
.nav a[aria-current="page"] { color: var(--navy); border-bottom-color: var(--teal); }
.nav .btn { color: #fff; padding: .75rem 1.2rem; border-bottom: 0; }
.nav .btn:hover { color: #fff; }

.menu { display: none; position: relative; }
.menu summary {
  list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: .55rem;
  font: 600 .9rem/1 var(--sans); color: var(--navy); padding: .7rem 1rem;
  border: 1.5px solid var(--line); border-radius: 999px; background: #fff;
}
.menu summary::-webkit-details-marker { display: none; }
.menu summary .bars { width: 16px; height: 10px; position: relative; border-top: 2px solid currentColor; border-bottom: 2px solid currentColor; }
.menu summary .bars::after { content: ""; position: absolute; left: 0; right: 0; top: 2px; border-top: 2px solid currentColor; }
.menu[open] summary .bars { border-color: transparent; }
.menu[open] summary .bars::after { top: 2px; transform: rotate(45deg); }
.menu[open] summary .bars::before { content: ""; position: absolute; left: 0; right: 0; top: 2px; border-top: 2px solid currentColor; transform: rotate(-45deg); }
.menu-panel {
  position: absolute; right: 0; top: calc(100% + .6rem); width: min(19rem, calc(100vw - 2 * var(--gutter)));
  background: #fff; border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow);
  padding: .6rem; display: grid;
}
.menu-panel a { display: block; padding: .85rem 1rem; border-radius: 10px; color: var(--navy-deep); text-decoration: none; font: 500 1rem/1.2 var(--sans); }
.menu-panel a:hover, .menu-panel a.current { background: var(--paper); color: var(--navy); }
.menu-panel .btn { margin-top: .4rem; color: #fff; }

/* --------------------------------------------------------------------------
   5. Home — hero
   -------------------------------------------------------------------------- */
.hero { position: relative; overflow: hidden; padding: clamp(3rem, 5vw, 4.5rem) 0 clamp(3.5rem, 6vw, 5rem); }
.hero-grid { display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.hero h1 { font-size: clamp(2.9rem, 6.4vw, 5.6rem); font-weight: 350; line-height: 1.02; letter-spacing: -.028em; text-wrap: wrap; }
.hero h1 em { font-style: italic; color: var(--navy); font-weight: 400; position: relative; white-space: nowrap; }
.hero h1 em::after {
  content: ""; position: absolute; left: .05em; right: .1em; bottom: .02em; height: .09em; border-radius: 99px;
  background: linear-gradient(90deg, var(--teal), rgba(26, 190, 207, .15)); z-index: -1;
}
.lede { font-size: clamp(1.1rem, 1.6vw, 1.28rem); color: var(--muted); max-width: 34rem; margin: 1.8rem 0 2.3rem; line-height: 1.6; }

.hero-portrait { position: relative; margin: 0; justify-self: center; width: clamp(280px, min(100%, calc((100svh - 260px) * .8)), 420px); }
.hero-portrait img {
  position: relative; z-index: 2; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 20%;
  border-radius: 999px 999px 26px 26px; box-shadow: var(--shadow); background: #eee;
}
.hero-portrait .glow { position: absolute; z-index: 0; inset: 8% -18% 10% -18%; background: radial-gradient(closest-side, rgba(26, 190, 207, .28), rgba(26, 190, 207, 0) 72%); }
.hero-portrait .orbit { position: absolute; z-index: 1; width: 112%; aspect-ratio: 1; left: -6%; top: -7%; border: 1.5px solid rgba(26, 190, 207, .45); border-radius: 50%; }
.hero-portrait .orbit::after {
  content: ""; position: absolute; width: 14px; height: 14px; border-radius: 50%;
  background: var(--ember); box-shadow: 0 0 0 6px rgba(242, 140, 40, .18);
  top: 14.6%; right: 14.6%; transform: translate(50%, -50%);
}
.badge {
  position: absolute; z-index: 3; left: -2.2rem; bottom: 2.4rem;
  display: flex; align-items: center; gap: .75rem;
  background: #fff; border-radius: 14px; padding: .9rem 1.15rem; box-shadow: var(--shadow);
  font: 500 .9rem/1.35 var(--sans); color: var(--navy-deep); max-width: 15.5rem;
}

/* --------------------------------------------------------------------------
   6. Inner-page hero and breadcrumbs
   -------------------------------------------------------------------------- */
.page-hero { padding: clamp(3rem, 6vw, 5rem) 0 clamp(2.5rem, 5vw, 4rem); border-bottom: 1px solid var(--line); }
.page-hero .lede { max-width: 42rem; margin-bottom: 0; }
.page-hero.split .wrap { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.page-hero figure { margin: 0; }
.page-hero figure img { border-radius: var(--radius); box-shadow: var(--shadow); }
.page-hero .cta-row { margin-top: 2rem; }
.crumbs { font: 500 .85rem/1.4 var(--sans); color: var(--muted); margin: 0 0 1.6rem; }
.crumbs ol { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .45rem; }
.crumbs li + li::before { content: "/"; margin-right: .45rem; color: var(--line); color: rgba(22, 49, 111, .35); }
.crumbs a { color: var(--muted); text-decoration: none; }
.crumbs a:hover { color: var(--navy); text-decoration: underline; }

/* --------------------------------------------------------------------------
   7. Sections
   -------------------------------------------------------------------------- */
.section { padding: var(--section) 0; }
.section.tight { padding: clamp(3rem, 6vw, 5rem) 0; }
.band-white { background: #fff; border-block: 1px solid var(--line); }
.band-sand { background: var(--sand); }
.band-navy { background: var(--navy-deep); color: var(--on-dark); }
.band-navy h2, .band-navy h3 { color: #fff; }
.band-navy .eyebrow { color: var(--teal); }
.band-navy a:not(.btn) { color: var(--teal); }
.section-head { max-width: 44rem; margin-bottom: clamp(2.5rem, 5vw, 3.5rem); }
.section-head > p:not(.eyebrow) { color: var(--muted); font-size: 1.12rem; margin-top: 1.2rem; }
.band-navy .section-head > p:not(.eyebrow) { color: var(--on-dark-muted); }
.section-head.center { text-align: center; }
.section-foot { margin-top: 2.5rem; }

/* Clients */
.clients { padding: 2.4rem 0 3rem; border-top: 1px solid var(--line); }
.label {
  font: 600 .74rem/1.2 var(--label); letter-spacing: .22em; text-transform: uppercase;
  color: var(--muted); margin: 0 0 1.8rem; text-align: center;
}
/* Flex, not grid, so a part-filled last row sits centred. Five to a row on
   desktop and four on phones: with 20 logos that is 5-5-5-5 and 4-4-4-4-4,
   never a lone logo on the last row. Adding or removing logos? Recheck. */
.logo-wall {
  --per-row: 5; --gap-x: 2.2rem;
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; justify-content: center; gap: 1.4rem var(--gap-x);
}
.logo-wall li {
  flex: 0 0 calc((100% - (var(--per-row) - 1) * var(--gap-x)) / var(--per-row));
  display: flex; align-items: center; justify-content: center; height: 56px;
}
.logo-wall img { max-height: 44px; max-width: 132px; width: auto; height: auto; opacity: .66; transition: opacity .2s; }
.logo-wall img.wide { max-height: 28px; }
.logo-wall li:hover img { opacity: 1; }

/* Certifications strip (home, under the client logos) */
.label-gap { margin-top: 3rem; }
.cert-strip { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 1.2rem 2.4rem; }
.cert-strip li { display: flex; flex-direction: column; align-items: center; gap: .55rem; width: 96px; }
.cert-strip img { height: 56px; width: auto; max-width: 96px; object-fit: contain; opacity: .75; }
.cert-strip span { font: 600 .7rem/1.2 var(--label); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); text-align: center; }
.center-link { text-align: center; margin: 1.6rem 0 0; font-size: .95rem; }

/* Vision */
.vision { position: relative; overflow: hidden; text-align: center; padding: clamp(5rem, 11vw, 9rem) 0; }
.vision::before {
  content: ""; position: absolute; left: 50%; bottom: -55%; width: 120%; aspect-ratio: 2; transform: translateX(-50%);
  background: radial-gradient(closest-side, rgba(242, 140, 40, .30), rgba(242, 140, 40, 0) 70%);
}
.vision::after {
  content: ""; position: absolute; inset: 0; opacity: .5;
  background: repeating-radial-gradient(circle at 50% 120%, rgba(26, 190, 207, .07) 0 1px, transparent 1px 90px);
}
.vision .narrow { position: relative; z-index: 1; }
.vision blockquote { margin: 0; }
.vision blockquote p {
  font: 300 clamp(1.8rem, 3.8vw, 3.2rem)/1.22 var(--serif); font-style: italic; letter-spacing: -.01em; color: #fff; margin: 0;
  font-variation-settings: "opsz" 144;
}
.vision .hl { color: var(--teal); font-style: normal; }
.vision .burn { color: var(--ember); font-style: normal; }

/* Two-column feature (photo + text) */
.feature { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(2.5rem, 6vw, 6rem); align-items: center; }
.feature.flip { grid-template-columns: 1.1fr .9fr; }
.feature.flip > :first-child { order: 2; }
/* Text on the left, a supporting panel (fact box) on the right that stays in view */
.feature.text-first { grid-template-columns: 1.15fr .85fr; align-items: start; }
.feature.text-first > aside { position: sticky; top: 100px; }
.feature-photo { position: relative; margin: 0; }
.feature-photo img { border-radius: var(--radius); width: 100%; aspect-ratio: 4 / 5; object-fit: cover; box-shadow: var(--shadow); }
.feature-photo.landscape img { aspect-ratio: 3 / 2; }
.quote-card {
  position: absolute; right: -1.5rem; bottom: -1.5rem; max-width: 17rem; margin: 0;
  background: var(--navy); color: #fff; padding: 1.3rem 1.4rem; border-radius: 16px; box-shadow: var(--shadow);
  font: 400 1.12rem/1.35 var(--serif); font-style: italic;
}
.quote-card b { color: var(--teal); font-weight: 400; }
.big { font: 400 1.32rem/1.5 var(--serif); color: var(--navy-deep); font-variation-settings: "opsz" 30; }

.doing { list-style: none; padding: 0; margin: 2rem 0; border-top: 1px solid var(--line); }
.doing li { display: grid; grid-template-columns: 3rem 1fr; gap: 1rem; padding: 1.1rem 0; border-bottom: 1px solid var(--line); }
.doing .n { font: 600 .8rem/1.9 var(--label); letter-spacing: .12em; color: var(--teal-ink); }
.doing strong { color: var(--navy-deep); }

.chips { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.6rem 0 0; padding: 0; list-style: none; }
.chips li { font: 600 .74rem/1 var(--label); letter-spacing: .1em; text-transform: uppercase; color: var(--navy); background: #fff; border: 1px solid var(--line); padding: .6rem .8rem .5rem; border-radius: 99px; }

/* Programme tracks (home) */
.tracks { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 3vw, 2.5rem); }
.track { background: var(--paper); border-radius: 24px; padding: clamp(1.6rem, 3vw, 2.4rem); border: 1px solid var(--line); }
.band-white .track { background: var(--paper); }
.track-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .4rem 1rem; margin-bottom: .6rem; }
.track-head h3 { font-size: 1.9rem; }
.tag { font: 600 .72rem/1.2 var(--label); letter-spacing: .18em; text-transform: uppercase; color: var(--teal-ink); }
.track > p { color: var(--muted); margin-bottom: 1.2rem; }
.offer { display: block; text-decoration: none; color: inherit; padding: 1.25rem 0; border-top: 1px solid var(--line); }
.offer h4 { font: 500 1.24rem/1.25 var(--serif); color: var(--navy-deep); display: flex; justify-content: space-between; gap: 1rem; font-variation-settings: "opsz" 30; }
.offer h4 .go { color: var(--teal-ink); font-family: var(--sans); transition: transform .2s; }
.offer:hover h4 { color: var(--navy); }
.offer:hover h4 .go { transform: translateX(4px); }
.offer p { margin: .45rem 0 .7rem; color: var(--muted); font-size: .98rem; line-height: 1.6; }
.meta { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; list-style: none; padding: 0; margin: 0; font: 500 .84rem/1.3 var(--sans); color: var(--navy); }
.meta li { display: inline-flex; align-items: center; gap: .45rem; }
.meta li::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--teal); flex: none; }

/* Programme detail (work-with-me) */
.jump { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; padding: 0; margin: 2rem 0 0; }
.jump a { display: inline-block; padding: .55rem .9rem; border-radius: 99px; border: 1px solid var(--line); background: #fff; color: var(--navy); text-decoration: none; font: 500 .88rem/1.2 var(--sans); }
.jump a:hover { border-color: var(--navy); }
.track-title { display: flex; align-items: baseline; gap: 1rem; margin: 0 0 2.5rem; padding-bottom: 1.2rem; border-bottom: 1px solid var(--line); }
.track-title h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.program { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(2rem, 5vw, 4.5rem); align-items: start; padding: 0 0 clamp(3rem, 6vw, 4.5rem); scroll-margin-top: 100px; }
.program + .program { padding-top: clamp(3rem, 6vw, 4.5rem); border-top: 1px solid var(--line); }
.program figure { margin: 0; position: sticky; top: 100px; }
.program figure img { border-radius: var(--radius); aspect-ratio: 3 / 2; object-fit: cover; width: 100%; box-shadow: var(--shadow); }
.program h3 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); margin-bottom: .8rem; }
.program .meta { margin: 0 0 1.4rem; }
.program h4 { font: 600 .78rem/1.2 var(--label); letter-spacing: .18em; text-transform: uppercase; color: var(--teal-ink); margin: 1.8rem 0 .8rem; }
.program .cta-row { margin-top: 1.8rem; }
.ticks { list-style: none; padding: 0; margin: 0; display: grid; gap: .6rem; }
.ticks li { position: relative; padding-left: 1.7rem; }
.ticks li::before {
  content: ""; position: absolute; left: 0; top: .5em; width: .75rem; height: .4rem;
  border-left: 2px solid var(--teal-ink); border-bottom: 2px solid var(--teal-ink); transform: rotate(-45deg);
}
.stat { margin: 1.6rem 0 0; padding: 1.2rem 1.4rem; border-left: 3px solid var(--ember); background: #fff; border-radius: 0 12px 12px 0; }
.stat p { margin: 0; font: 400 1.1rem/1.5 var(--serif); color: var(--navy-deep); font-variation-settings: "opsz" 30; }
.stat cite { display: block; margin-top: .5rem; font: 500 .82rem/1.3 var(--sans); font-style: normal; color: var(--muted); }
.draft-note { display: inline-flex; align-items: center; gap: .5rem; background: #fff; border: 1px dashed #C9761C; color: var(--ember-ink); border-radius: 99px; padding: .4rem .8rem; font: 600 .76rem/1.2 var(--sans); margin: 0 0 1rem; }

/* Steps */
.steps { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; counter-reset: step; }
.steps li { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.8rem 1.6rem; counter-increment: step; }
.steps li::before { content: "0" counter(step); display: block; font: 600 .8rem/1 var(--label); letter-spacing: .15em; color: var(--teal-ink); margin-bottom: 1rem; }
.steps h3 { font-size: 1.3rem; margin-bottom: .5rem; }
.steps p { margin: 0; color: var(--muted); }

/* Book */
.book-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(2.5rem, 6vw, 6rem); align-items: center; }
.book-art { position: relative; justify-self: center; width: min(290px, 80%); margin: 0; }
.book-art::before { content: ""; position: absolute; inset: -18% -30%; background: radial-gradient(closest-side, rgba(242, 140, 40, .35), rgba(242, 140, 40, 0) 70%); }
.book-art img { position: relative; border-radius: 4px 10px 10px 4px; transform: rotate(-3deg); box-shadow: -14px 24px 50px -16px rgba(13, 29, 68, .5); }
.book h2 em, .ember-em { font-style: italic; color: var(--ember-ink); }
.book .sub { font: 400 1.3rem/1.45 var(--serif); font-style: italic; color: var(--navy); margin: .8rem 0 1.4rem; }
.status {
  display: inline-flex; align-items: center; gap: .6rem; margin: 0 0 1.5rem;
  font: 600 .8rem/1.2 var(--sans); color: var(--navy-deep); background: #fff; border: 1px solid var(--line);
  border-radius: 99px; padding: .5rem .9rem .5rem .7rem;
}

/* Testimonials */
/* Full testimonial lists (/about/, /speaking/): masonry columns, so quotes of
   different lengths pack without a ragged last row. */
.voice-grid { columns: 3 280px; column-gap: 1.5rem; }
.voice { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 2rem 1.8rem 1.6rem; display: flex; flex-direction: column; margin: 0 0 1.5rem; break-inside: avoid; }
/* Home: quote picker. One large quote; the faces below choose which. Each
   face is the <label> of a visually hidden radio; the rules below show the
   panel and ring the face whose radio is checked. Panels share one grid cell
   so the box is as tall as the longest quote and nothing jumps. Supports up
   to 12 quotes — add rules if there are ever more. No JavaScript. */
.quotes { position: relative; max-width: 880px; margin: 0 auto; text-align: center; }
.q-input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.q-panels { display: grid; }
.q-panel { grid-area: 1 / 1; margin: 0; visibility: hidden; opacity: 0; transition: opacity .6s ease, visibility .6s; display: flex; flex-direction: column; justify-content: center; }
.q-title { font: 600 .78rem/1.2 var(--label); letter-spacing: .2em; text-transform: uppercase; color: var(--teal-ink); margin: 0 0 1.2rem; }
.q-panel blockquote { margin: 0; }
.q-panel blockquote p { margin: 0; font: 400 clamp(1.3rem, 2.3vw, 1.85rem)/1.45 var(--serif); font-style: italic; color: var(--navy-deep); font-variation-settings: "opsz" 60; }
.q-panel blockquote p::before { content: "“"; color: var(--teal); }
.q-panel blockquote p::after { content: "”"; color: var(--teal); }
.q-panel figcaption { margin-top: 1.5rem; font-size: .95rem; color: var(--muted); }
.q-panel figcaption b { color: var(--navy-deep); font-weight: 600; }
.q-picker { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; margin-top: 2.4rem; }
.q-picker label { display: block; padding: 3px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; opacity: .55; transition: opacity .2s, border-color .2s, transform .2s; }
.q-picker label:hover { opacity: 1; transform: translateY(-2px); }
/* Pause/Play for the auto-advance (added by site.js; hidden without it) */
.q-controls { text-align: center; margin: 1.3rem 0 0; }
.q-pause { font: 600 .7rem/1 var(--label); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); background: none; border: 1px solid var(--line); border-radius: 99px; padding: .55rem .95rem .45rem; cursor: pointer; }
.q-pause:hover { color: var(--navy); border-color: var(--navy); }
.q-picker img, .q-picker .initials { width: 52px; height: 52px; border-radius: 50%; filter: grayscale(1); }
.q-picker img { display: block; }
.q-picker .initials { display: grid; }
.q-input:nth-of-type(1):checked ~ .q-panels .q-panel:nth-child(1),
.q-input:nth-of-type(2):checked ~ .q-panels .q-panel:nth-child(2),
.q-input:nth-of-type(3):checked ~ .q-panels .q-panel:nth-child(3),
.q-input:nth-of-type(4):checked ~ .q-panels .q-panel:nth-child(4),
.q-input:nth-of-type(5):checked ~ .q-panels .q-panel:nth-child(5),
.q-input:nth-of-type(6):checked ~ .q-panels .q-panel:nth-child(6),
.q-input:nth-of-type(7):checked ~ .q-panels .q-panel:nth-child(7),
.q-input:nth-of-type(8):checked ~ .q-panels .q-panel:nth-child(8),
.q-input:nth-of-type(9):checked ~ .q-panels .q-panel:nth-child(9),
.q-input:nth-of-type(10):checked ~ .q-panels .q-panel:nth-child(10),
.q-input:nth-of-type(11):checked ~ .q-panels .q-panel:nth-child(11),
.q-input:nth-of-type(12):checked ~ .q-panels .q-panel:nth-child(12) { visibility: visible; opacity: 1; }
.q-input:nth-of-type(1):checked ~ .q-picker label:nth-child(1),
.q-input:nth-of-type(2):checked ~ .q-picker label:nth-child(2),
.q-input:nth-of-type(3):checked ~ .q-picker label:nth-child(3),
.q-input:nth-of-type(4):checked ~ .q-picker label:nth-child(4),
.q-input:nth-of-type(5):checked ~ .q-picker label:nth-child(5),
.q-input:nth-of-type(6):checked ~ .q-picker label:nth-child(6),
.q-input:nth-of-type(7):checked ~ .q-picker label:nth-child(7),
.q-input:nth-of-type(8):checked ~ .q-picker label:nth-child(8),
.q-input:nth-of-type(9):checked ~ .q-picker label:nth-child(9),
.q-input:nth-of-type(10):checked ~ .q-picker label:nth-child(10),
.q-input:nth-of-type(11):checked ~ .q-picker label:nth-child(11),
.q-input:nth-of-type(12):checked ~ .q-picker label:nth-child(12) { opacity: 1; border-color: var(--teal); }
.q-input:checked ~ .q-picker label:hover { transform: none; }
.q-input:nth-of-type(1):checked ~ .q-picker label:nth-child(1) > *,
.q-input:nth-of-type(2):checked ~ .q-picker label:nth-child(2) > *,
.q-input:nth-of-type(3):checked ~ .q-picker label:nth-child(3) > *,
.q-input:nth-of-type(4):checked ~ .q-picker label:nth-child(4) > *,
.q-input:nth-of-type(5):checked ~ .q-picker label:nth-child(5) > *,
.q-input:nth-of-type(6):checked ~ .q-picker label:nth-child(6) > *,
.q-input:nth-of-type(7):checked ~ .q-picker label:nth-child(7) > *,
.q-input:nth-of-type(8):checked ~ .q-picker label:nth-child(8) > *,
.q-input:nth-of-type(9):checked ~ .q-picker label:nth-child(9) > *,
.q-input:nth-of-type(10):checked ~ .q-picker label:nth-child(10) > *,
.q-input:nth-of-type(11):checked ~ .q-picker label:nth-child(11) > *,
.q-input:nth-of-type(12):checked ~ .q-picker label:nth-child(12) > * { filter: none; }
.q-input:nth-of-type(1):focus-visible ~ .q-picker label:nth-child(1),
.q-input:nth-of-type(2):focus-visible ~ .q-picker label:nth-child(2),
.q-input:nth-of-type(3):focus-visible ~ .q-picker label:nth-child(3),
.q-input:nth-of-type(4):focus-visible ~ .q-picker label:nth-child(4),
.q-input:nth-of-type(5):focus-visible ~ .q-picker label:nth-child(5),
.q-input:nth-of-type(6):focus-visible ~ .q-picker label:nth-child(6),
.q-input:nth-of-type(7):focus-visible ~ .q-picker label:nth-child(7),
.q-input:nth-of-type(8):focus-visible ~ .q-picker label:nth-child(8),
.q-input:nth-of-type(9):focus-visible ~ .q-picker label:nth-child(9),
.q-input:nth-of-type(10):focus-visible ~ .q-picker label:nth-child(10),
.q-input:nth-of-type(11):focus-visible ~ .q-picker label:nth-child(11),
.q-input:nth-of-type(12):focus-visible ~ .q-picker label:nth-child(12) { outline: 3px solid var(--teal); outline-offset: 3px; }

.voice .mark { font: 400 4rem/.6 var(--serif); color: var(--teal); height: 1.6rem; }
.voice h3 { font-size: 1.25rem; margin: .8rem 0 .7rem; }
.voice blockquote { margin: 0 0 1.5rem; color: var(--muted); flex: 1; }
.voice blockquote p { margin: 0; }
.voice figcaption { display: flex; align-items: center; gap: .85rem; padding-top: 1.2rem; border-top: 1px solid var(--line); font-size: .9rem; line-height: 1.35; color: var(--muted); }
.voice figcaption img, .voice figcaption .initials { width: 48px; height: 48px; border-radius: 50%; filter: grayscale(1); flex: none; }
.initials { display: grid; place-items: center; background: var(--navy); color: #fff; font: 600 .9rem/1 var(--sans); letter-spacing: .03em; }
.voice figcaption b { color: var(--navy-deep); font-weight: 600; display: block; }

/* Speaking band */
.photo-band { position: relative; min-height: 520px; display: grid; align-items: end; color: #fff; overflow: hidden; background: var(--navy-deep); }
.photo-band > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 40%; }
.photo-band::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(13, 29, 68, .94) 0%, rgba(13, 29, 68, .78) 42%, rgba(13, 29, 68, .1) 80%); }
.photo-band .wrap { position: relative; z-index: 1; padding: 5rem 0; }
.photo-band .inner { max-width: 32rem; }
.photo-band h2 { color: #fff; }
.photo-band p { color: #D6DEEC; font-size: 1.1rem; margin: 1.2rem 0 2rem; }
.photo-band .eyebrow { color: var(--teal); }
.photo-band .dot { background: var(--teal); }

/* Cards: posts, topics, docs */
.card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.card-grid.two { grid-template-columns: repeat(2, 1fr); }
.post-card { text-decoration: none; color: inherit; display: block; }
.post-card .img { overflow: hidden; border-radius: 14px; background: var(--sand); }
.post-card img { aspect-ratio: 16 / 10; width: 100%; object-fit: cover; transition: transform .35s ease; }
.post-card:hover img { transform: scale(1.03); }
.post-card .kicker { display: block; margin: 1.1rem 0 .45rem; font: 600 .72rem/1.2 var(--label); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.post-card h3 { font-size: 1.35rem; }
.post-card:hover h3 { color: var(--navy); }
.post-card p { color: var(--muted); font-size: .98rem; margin: .6rem 0 0; }
.head-row { display: flex; justify-content: space-between; align-items: end; gap: 2rem; margin-bottom: 2.5rem; }

.topic { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.8rem; }
.topic h3 { font-size: 1.35rem; margin-bottom: .6rem; }
.topic p { color: var(--muted); margin: 0; }
.topic .tag { display: block; margin-bottom: .9rem; }

.doc { display: grid; grid-template-columns: auto 1fr; gap: 1.2rem; align-items: start; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; text-decoration: none; color: inherit; }
.doc:hover { border-color: var(--navy); color: inherit; }
.doc .icon { width: 46px; height: 56px; border-radius: 6px; background: var(--navy); color: #fff; display: grid; place-items: center; font: 700 .7rem/1 var(--sans); letter-spacing: .05em; }
.doc h3 { font-size: 1.2rem; margin-bottom: .35rem; }
.doc p { margin: 0; color: var(--muted); font-size: .95rem; }
.doc .size { display: block; margin-top: .5rem; font: 600 .8rem/1 var(--sans); color: var(--teal-ink); }

/* Fact box (About) — plain facts, for readers and for AI answer engines */
.facts { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.8rem; margin: 0; }
.facts h2 { font-size: 1.4rem; margin-bottom: 1rem; font-variation-settings: "opsz" 30; }
.facts dl { margin: 0; display: grid; grid-template-columns: max-content 1fr; gap: .7rem 1.4rem; }
.facts dt { font: 600 .74rem/1.6 var(--label); letter-spacing: .14em; text-transform: uppercase; color: var(--teal-ink); }
.facts dd { margin: 0; }

/* Credentials */
.badge-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.badge-grid li { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.1rem 1.2rem; display: grid; grid-template-columns: 92px 1fr; gap: 1rem; align-items: center; }
.badge-grid img { height: 64px; width: auto; max-width: 92px; object-fit: contain; justify-self: center; opacity: .85; }
.badge-grid b { display: block; font: 600 .95rem/1.3 var(--sans); color: var(--navy-deep); }
.badge-grid span { font: 400 .86rem/1.4 var(--sans); color: var(--muted); }

/* FAQ */
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 1.5rem; align-items: center;
  padding: 1.3rem 0; font: 500 1.2rem/1.35 var(--serif); color: var(--navy-deep); font-variation-settings: "opsz" 30;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font: 400 1.6rem/1 var(--sans); color: var(--teal-ink); flex: none; transition: transform .2s; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq .answer { padding: 0 0 1.4rem; color: var(--ink); max-width: 46rem; }
.faq .answer p:last-child { margin-bottom: 0; }

/* Contact */
.contact-cta { position: relative; overflow: hidden; background: var(--navy); color: var(--on-dark); padding: clamp(5rem, 10vw, 8rem) 0; }
.contact-cta::before { content: ""; position: absolute; width: 700px; aspect-ratio: 1; right: -220px; top: -260px; border-radius: 50%; border: 1.5px solid rgba(26, 190, 207, .25); }
.contact-cta::after { content: ""; position: absolute; width: 480px; aspect-ratio: 1; right: -110px; top: -150px; border-radius: 50%; border: 1.5px solid rgba(26, 190, 207, .18); }
.contact-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1.2fr .8fr; gap: 3rem; align-items: end; }
.contact-cta h2 { color: #fff; font-size: clamp(2.4rem, 5.2vw, 4.4rem); font-weight: 300; }
.contact-cta h2 em { color: var(--teal); }
.contact-cta .eyebrow { color: var(--teal); }
.contact-cta p { font-size: 1.15rem; margin: 1.4rem 0 0; max-width: 32rem; }
.contact-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.contact-list a {
  display: flex; align-items: center; gap: 1rem; color: #fff; text-decoration: none; font: 500 1.08rem/1.2 var(--sans);
  padding: 1.05rem 1.2rem; border-radius: 14px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .12); transition: background-color .2s;
}
.contact-list a:hover { background: rgba(255, 255, 255, .12); color: #fff; }
.contact-list svg { width: 22px; height: 22px; flex: none; stroke: var(--teal); fill: none; }
.contact-list small { display: block; font: 600 .68rem/1 var(--label); letter-spacing: .18em; text-transform: uppercase; color: var(--on-dark-muted); margin-bottom: .35rem; }
.contact-list.light a { color: var(--navy-deep); background: #fff; border-color: var(--line); }
.contact-list.light a:hover { border-color: var(--navy); background: #fff; color: var(--navy); }
.contact-list.light svg { stroke: var(--teal-ink); }
.contact-list.light small { color: var(--muted); }

/* --------------------------------------------------------------------------
   8. Blog posts
   -------------------------------------------------------------------------- */
.article-head { padding: clamp(3rem, 6vw, 4.5rem) 0 2rem; }
.article-head h1 { font-size: clamp(2.3rem, 4.8vw, 3.8rem); }
.byline { display: flex; flex-wrap: wrap; align-items: center; gap: .9rem; margin-top: 1.6rem; font: 500 .92rem/1.4 var(--sans); color: var(--muted); }
.byline img { width: 44px; height: 44px; border-radius: 50%; }
.byline b { color: var(--navy-deep); font-weight: 600; }
.byline .sep { width: 4px; height: 4px; border-radius: 50%; background: var(--teal); }
.article-hero { margin: 0 auto 3rem; }
.article-hero img { border-radius: var(--radius); width: 100%; max-height: 560px; object-fit: cover; }

.prose { font-size: 1.1rem; line-height: 1.8; }
.prose > * { margin-top: 0; margin-bottom: 1.25em; }
.prose h2 { font-size: clamp(1.6rem, 2.8vw, 2.1rem); margin: 2.2em 0 .7em; }
.prose h3 { font-size: 1.45rem; margin: 2em 0 .6em; }
.prose h4 { font-size: 1.2rem; margin: 1.8em 0 .5em; }
.prose a { color: var(--teal-ink); }
.prose ul, .prose ol { padding-left: 1.3em; }
.prose li { margin-bottom: .4em; }
.prose li::marker { color: var(--teal-ink); }
.prose blockquote { margin: 1.8em 0; padding: .2em 0 .2em 1.4em; border-left: 3px solid var(--teal); font: 400 1.25rem/1.55 var(--serif); font-style: italic; color: var(--navy-deep); }
.prose figure { margin: 2em 0; }
.prose figure img { border-radius: 12px; margin-inline: auto; }
.prose figcaption { margin-top: .7rem; font-size: .9rem; color: var(--muted); text-align: center; }
.prose hr { border: 0; border-top: 1px solid var(--line); margin: 2.5em 0; }
.prose .video { margin: 1.2em 0 2.2em; }
.prose .video video { width: 100%; border-radius: 12px; background: #000; aspect-ratio: 16 / 9; }
.prose .video.cinema video { aspect-ratio: 1280 / 534; }
.prose h3.video-title { margin-bottom: .5em; }

.author-box { display: grid; grid-template-columns: auto 1fr; gap: 1.4rem; align-items: center; margin: 3.5rem 0 0; padding: 1.8rem; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.author-box img { width: 88px; height: 88px; border-radius: 50%; }
.author-box h2 { font-size: 1.3rem; margin-bottom: .4rem; font-variation-settings: "opsz" 30; }
.author-box p { margin: 0; color: var(--muted); font-size: .98rem; }
.related { margin: 1.4rem 0 0; padding: 1.1rem 1.4rem; border-left: 3px solid var(--teal); background: #fff; border-radius: 0 12px 12px 0; color: var(--muted); }
.related .tag { margin-right: .5rem; }
.related a { font-weight: 600; }
.bio-label { font: 600 .78rem/1.2 var(--label); letter-spacing: .16em; text-transform: uppercase; color: var(--teal-ink); margin: 1.8rem 0 .7rem; }
.kit-photo { width: 140px; height: 140px; border-radius: 50%; margin: 0 0 1.2rem; }
.pager { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 2.5rem 0 0; }
/* A post ends straight into the navy "Get in touch" band; give it the same
   breathing room the other sections have. */
main > article { padding-bottom: clamp(4rem, 8vw, 6rem); }
.pager a { display: block; padding: 1.2rem 1.4rem; border: 1px solid var(--line); border-radius: 14px; text-decoration: none; color: var(--navy-deep); background: #fff; font: 500 1.05rem/1.35 var(--serif); font-variation-settings: "opsz" 30; }
.pager a:hover { border-color: var(--navy); }
.pager small { display: block; font: 600 .7rem/1 var(--label); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); margin-bottom: .5rem; }
.pager .next { text-align: right; grid-column: 2; }

/* --------------------------------------------------------------------------
   9. Footer
   -------------------------------------------------------------------------- */
.site-footer { background: var(--navy-deep); color: var(--on-dark-muted); padding: 4rem 0 2.5rem; font-size: .93rem; }
.foot { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 2.5rem; }
.foot .brand img { height: 52px; }
.foot .line { font: 400 1.15rem/1.4 var(--serif); font-style: italic; color: #fff; margin: 1.1rem 0 0; }
.foot h2 { font: 600 .72rem/1.2 var(--label); letter-spacing: .18em; text-transform: uppercase; color: var(--teal); margin: .4rem 0 1rem; }
.foot ul { list-style: none; padding: 0; margin: 0; display: grid; gap: .55rem; }
.foot a { color: var(--on-dark); text-decoration: none; }
.foot a:hover { color: var(--teal); }
.fine { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--line-dark); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }

/* 404 */
.not-found { padding: clamp(5rem, 12vw, 9rem) 0; text-align: center; }
.not-found h1 { margin-bottom: 1rem; }
.not-found p { color: var(--muted); font-size: 1.15rem; }
.not-found .cta-row { justify-content: center; margin-top: 2rem; }

/* --------------------------------------------------------------------------
   10. Responsive
   -------------------------------------------------------------------------- */
@media (max-width: 1060px) {
  .nav { display: none; }
  .menu { display: block; }
}
@media (max-width: 980px) {
  .hero-grid, .feature, .feature.flip, .book-grid, .contact-grid, .tracks, .program, .page-hero.split .wrap { grid-template-columns: 1fr; }
  .feature.flip > :first-child { order: 0; }
  .feature.text-first { grid-template-columns: 1fr; }
  .feature.text-first > aside { position: static; }
  .hero-portrait { width: min(360px, 82%); margin-top: 1rem; }
  .badge { left: -1rem; }
  .feature-photo { max-width: 480px; }
  .quote-card { right: -.5rem; }
  .voice-grid, .card-grid, .steps { grid-template-columns: 1fr 1fr; }
  .head-row { flex-direction: column; align-items: start; }
  .book-art { width: min(250px, 70%); }
  .program figure { position: static; max-width: 560px; }
  .foot { grid-template-columns: 1fr 1fr; }
  .foot > :first-child { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  :root { --gutter: 1rem; }
  body { font-size: 1rem; }
  .site-header .wrap { height: 66px; }
  .brand img { height: 36px; }
  .hero h1 em { white-space: normal; }
  .badge { position: relative; left: 0; bottom: 0; margin: -1.5rem auto 0; }
  .voice-grid, .card-grid, .card-grid.two, .steps { grid-template-columns: 1fr; }
  .cert-strip { gap: 1rem 1.2rem; }
  .q-picker img, .q-picker .initials { width: 44px; height: 44px; }
  .q-picker { gap: .35rem; }
  .cert-strip li { width: 76px; }
  .cert-strip img { height: 44px; max-width: 76px; }
  .logo-wall { --per-row: 4; --gap-x: .9rem; row-gap: .8rem; }
  .logo-wall img { max-width: 100%; max-height: 30px; }
  .logo-wall img.wide { max-height: 22px; }
  .photo-band::after { background: linear-gradient(0deg, rgba(13, 29, 68, .95) 35%, rgba(13, 29, 68, .45) 100%); }
  .facts dl { grid-template-columns: 1fr; gap: .2rem; }
  .facts dd { margin-bottom: .7rem; }
  .pager { grid-template-columns: 1fr; }
  .pager .next { grid-column: 1; }
  .author-box { grid-template-columns: 1fr; text-align: center; }
  .author-box img { margin-inline: auto; }
  .foot { grid-template-columns: 1fr; }
  .prose { font-size: 1.05rem; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; scroll-behavior: auto !important; }
}
@media print {
  .site-header, .site-footer, .contact-cta, .photo-band { display: none; }
  body { background: #fff; }
}
