/* ==========================================================================
   THE CURIOUS ADVANTAGE — site stylesheet
   Built to the brand kit: Museo Sans (900 uppercase titles / 500 body),
   Light blue #9FD5D6 + Dark blue #1F2144, Orange #EC6A54 + White.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
  /* Brand palette — do not add hues outside these four. */
  --sky:        #9FD5D6;
  --navy:       #1F2144;
  --orange:     #EC6A54;
  --white:      #FFFFFF;

  /* Derived surfaces (tints/shades of the palette only) */
  --navy-950:   #15172F;   /* shade of navy, for deep bands */
  --navy-800:   #292C55;   /* raised surface on navy */
  --paper:      #FFFFFF;
  --paper-soft: #F3F8F8;   /* 6% sky on white */
  --paper-line: rgba(31, 33, 68, 0.12);
  --dark-line:  rgba(159, 213, 214, 0.22);

  /* Text */
  --ink:        #1F2144;
  --ink-muted:  rgba(31, 33, 68, 0.66);
  --on-dark:         #FFFFFF;
  --on-dark-muted:   rgba(255, 255, 255, 0.72);

  /* Type — "museo-sans" is the Adobe Fonts family name.
     Poppins is the fallback until the Typekit ID is added in _src/partials/head.html */
  --font: "museo-sans", "Museo Sans", "Poppins", -apple-system, BlinkMacSystemFont,
          "Segoe UI", Helvetica, Arial, sans-serif;

  --w-body:  500;   /* Museo Sans body weight */
  --w-sub:   700;
  --w-title: 900;

  /* Fluid type scale */
  --t-micro:   0.75rem;
  --t-small:   clamp(0.875rem, 0.85rem + 0.12vw, 0.95rem);
  --t-body:    clamp(1rem, 0.96rem + 0.2vw, 1.125rem);
  --t-lead:    clamp(1.125rem, 1.04rem + 0.42vw, 1.4rem);
  --t-h4:      clamp(1.05rem, 0.98rem + 0.34vw, 1.3rem);
  --t-h3:      clamp(1.35rem, 1.15rem + 0.85vw, 2rem);
  --t-h2:      clamp(2rem, 1.5rem + 2.1vw, 3.4rem);
  --t-h1:      clamp(2.6rem, 1.55rem + 4.3vw, 5.75rem);

  /* Layout */
  --gutter:    clamp(1.25rem, 4vw, 3rem);
  --max:       1240px;
  --max-text:  62ch;
  --sect-y:    clamp(4rem, 7.5vw, 7rem);
  --radius:    14px;
  --radius-lg: 22px;
  --nav-h:     80px;   /* height of the sticky bar — the hero slides under it */

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* --------------------------------------------------------------------------
   2. Reset & base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 96px;
}

body {
  font-family: var(--font);
  font-weight: var(--w-body);
  font-size: var(--t-body);
  line-height: 1.6;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* No overflow-x here on purpose: it turns <body> into its own scroll
     container and breaks page scrolling. Decorative art that bleeds past the
     edge is clipped by its own section (.hero, .soon, .cta, .pagehead). */
}

img, svg, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
ul { list-style: none; padding: 0; }

:focus-visible {
  outline: 3px solid var(--orange);
  outline-offset: 3px;
  border-radius: 4px;
}

::selection { background: var(--orange); color: var(--white); }

/* The skip link is itself an accessibility affordance, so it has to clear AA.
   White on brand orange measures 3.11:1; white on navy measures 15.45:1. */
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--navy); color: var(--white);
  padding: 0.75rem 1.25rem; font-weight: var(--w-sub);
  border: 2px solid var(--orange); border-radius: 0 0 8px 0;
}
.skip-link:focus { left: 0.5rem; top: 0.5rem; }

/* --------------------------------------------------------------------------
   3. Typography primitives
   -------------------------------------------------------------------------- */
.title,
h1, h2, h3 {
  font-weight: var(--w-title);
  text-transform: uppercase;
  letter-spacing: -0.015em;
  line-height: 0.98;
  text-wrap: balance;
}
h1 { font-size: var(--t-h1); letter-spacing: -0.025em; line-height: 0.92; }
h2 { font-size: var(--t-h2); }
h3 { font-size: var(--t-h3); }

/* Subheadings are sentence case, weight 700 — per brand kit */
h4, .subhead {
  font-size: var(--t-h4);
  font-weight: var(--w-sub);
  text-transform: none;
  letter-spacing: -0.005em;
  line-height: 1.25;
  text-wrap: balance;
}

p { text-wrap: pretty; }
.lead { font-size: var(--t-lead); line-height: 1.5; }
.small { font-size: var(--t-small); }
.muted { color: var(--ink-muted); }
.measure { max-width: var(--max-text); }

/* Eyebrow: small uppercase label with a short orange rule */
.eyebrow {
  display: inline-flex; align-items: center; gap: 0.7rem;
  font-size: var(--t-micro);
  font-weight: var(--w-title);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--orange);
  margin-bottom: 1.1rem;
}
.eyebrow::before {
  content: ""; width: 28px; height: 3px; flex: none;
  background: var(--orange); border-radius: 2px;
}
.eyebrow--sky { color: var(--sky); }
.eyebrow--sky::before { background: var(--sky); }

/* The podcast lockup — 900 name + 500 "Podcast", per brand kit */
.lockup { font-weight: var(--w-title); text-transform: none; letter-spacing: -0.02em; }
.lockup span { font-weight: var(--w-body); }

/* --------------------------------------------------------------------------
   4. Layout helpers
   -------------------------------------------------------------------------- */
.wrap {
  width: 100%;
  max-width: var(--max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.wrap--narrow { max-width: 880px; }

.section { padding-block: var(--sect-y); position: relative; }
.section--tight { padding-block: clamp(3rem, 6vw, 5rem); }

.band-dark  { background: var(--navy);     color: var(--on-dark); }
.band-deep  { background: var(--navy-950); color: var(--on-dark); }
.band-soft  { background: var(--paper-soft); }
.band-sky   { background: var(--sky);      color: var(--navy); }
.band-dark h1, .band-dark h2, .band-dark h3,
.band-deep h1, .band-deep h2, .band-deep h3 { color: var(--white); }

/* Anything sitting on a dark ground flips the ink tokens, so .muted and every
   rule that reads var(--ink-muted) stays legible without a per-element override. */
.band-dark, .band-deep, .hero, .pagehead, .soon, .cta {
  --ink: var(--white);
  --ink-muted: rgba(255, 255, 255, 0.72);
}

/* …but a light-surfaced card keeps dark ink even inside a dark band, or its
   text turns white on white. Any component with a pale background belongs here. */
.tile, .author, .card:not(.card--dark), .proofbar__item, .cookiepanel__box {
  --ink: #1F2144;
  --ink-muted: rgba(31, 33, 68, 0.66);
  color: var(--ink);
}
/* Headings need saying explicitly — the band-dark rule above targets them directly. */
.tile :is(h1, h2, h3),
.author :is(h1, h2, h3),
.card:not(.card--dark) :is(h1, h2, h3),
.proofbar__item :is(h1, h2, h3),
.cookiepanel__box :is(h1, h2, h3) { color: var(--ink); }

.sect-head { max-width: 46rem; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.sect-head p { margin-top: 1rem; }
/* A band that is only a statement — nothing follows the heading, so the trailing
   space that normally separates it from a grid would read as a hole. */
.sect-head--only { margin-bottom: 0; }

/* Spacing steps ------------------------------------------------------------
   These three relationships were being set inline on every page, and had drifted
   to eight different values for what is really three situations. Set once here. */
:is(h1, h2, h3) + .lead,
.subhead + .lead               { margin-top: 1.1rem; }
.pagehead :is(h1, h2) + .lead,
.pagehead .subhead + .lead,
.hero :is(h1, h2) + .lead      { margin-top: 1.4rem; }
/* The hero headline sets its first word on its own line, as a standalone statement
   with the claim beneath it. */
.h1__lead { display: block; }

.pagehead .lead + p,
.hero .lead + p                { margin-top: 1rem; }

.btn-row--hero  { margin-top: 2.25rem; }   /* under a page header */
.btn-row--after { margin-top: 2rem; }      /* under a paragraph */
.btn-row--block { margin-top: 2.75rem; }   /* under a grid, list or panel */
.sect-head--split {
  max-width: none; display: flex; flex-wrap: wrap; gap: 1.5rem 3rem;
  align-items: flex-end; justify-content: space-between;
}
.sect-head--split > div:first-child { max-width: 46rem; }

.grid { display: grid; gap: clamp(1rem, 1.8vw, 1.6rem); }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 960px) { .grid-4 { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 860px) { .grid-3 { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 640px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: minmax(0, 1fr); }
}

/* --------------------------------------------------------------------------
   5. Buttons
   -------------------------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem;
  padding: 0.95rem 1.6rem;
  border-radius: 999px;
  font-weight: var(--w-title);
  font-size: var(--t-small);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  line-height: 1;
  border: 2px solid transparent;
  transition: transform 0.25s var(--ease), background-color 0.25s var(--ease),
              color 0.25s var(--ease), border-color 0.25s var(--ease),
              box-shadow 0.25s var(--ease);
  white-space: nowrap;
  text-align: center;
}
.btn:hover { transform: translateY(-2px); }

/* On narrow screens let long labels wrap rather than push the page sideways */
@media (max-width: 560px) {
  .btn { white-space: normal; max-width: 100%; }
  .btn-row { width: 100%; }
  .btn-row > .btn { flex: 1 1 100%; }
}
.btn:active { transform: translateY(0); }

.btn--primary {
  background: var(--orange); color: var(--white);
  box-shadow: 0 8px 22px -10px rgba(236, 106, 84, 0.9);
}
.btn--primary:hover { box-shadow: 0 14px 30px -10px rgba(236, 106, 84, 0.95); }

.btn--ghost-dark { border-color: rgba(255,255,255,0.35); color: var(--white); }
.btn--ghost-dark:hover { border-color: var(--sky); color: var(--sky); }

.btn--ghost-light { border-color: var(--navy); color: var(--navy); }
.btn--ghost-light:hover { background: var(--navy); color: var(--white); }

.btn--sm { padding: 0.7rem 1.15rem; font-size: 0.75rem; }

.btn-row { display: flex; flex-wrap: wrap; gap: 0.85rem; }

/* Text link with arrow */
.link-arrow {
  display: inline-flex; align-items: center; gap: 0.45rem;
  font-weight: var(--w-title); font-size: var(--t-small);
  text-transform: uppercase; letter-spacing: 0.09em;
  color: var(--orange);
}
.link-arrow svg { transition: transform 0.25s var(--ease); }
.link-arrow:hover svg { transform: translateX(4px); }
.link-arrow--sky { color: var(--sky); }

/* --------------------------------------------------------------------------
   6. Announcement bar
   -------------------------------------------------------------------------- */
.announce {
  background: var(--navy-950);
  color: var(--white);
  font-size: var(--t-micro);
  letter-spacing: 0.06em;
  position: relative; z-index: 40;   /* below the mobile drawer and its scrim */
}
.announce__inner {
  display: flex; align-items: center; justify-content: center; gap: 0.75rem;
  padding: 0.7rem var(--gutter);
  text-align: center; flex-wrap: wrap;
}
.announce__tag {
  font-weight: var(--w-title); text-transform: uppercase; letter-spacing: 0.16em;
  color: var(--navy); background: var(--sky);
  padding: 0.28rem 0.6rem; border-radius: 999px; font-size: 0.68rem;
}
.announce a { color: var(--sky); font-weight: var(--w-sub); border-bottom: 1px solid transparent; }
.announce a:hover { border-color: var(--sky); }
.announce strong { font-weight: var(--w-title); text-transform: uppercase; letter-spacing: 0.1em; }
@media (max-width: 620px) { .announce__inner { font-size: 0.7rem; } }

/* --------------------------------------------------------------------------
   7. Navigation
   -------------------------------------------------------------------------- */
.nav {
  /* Sticky + z-index makes this a stacking context, so the mobile drawer inside
     it cannot outrank the scrim on its own — the bar itself has to sit above. */
  position: sticky; top: 0; z-index: 95;
  background: rgba(31, 33, 68, 0);
  transition: background-color 0.35s var(--ease), box-shadow 0.35s var(--ease),
              backdrop-filter 0.35s var(--ease);
}
.nav__inner {
  display: flex; align-items: center; gap: clamp(1rem, 3vw, 2.5rem);
  padding-block: 1.1rem;
}
.nav__logo { flex: none; display: block; }
.nav__logo img { width: clamp(146px, 14.5vw, 184px); height: auto; }

.nav__links {
  display: flex; align-items: center; gap: clamp(0.9rem, 2vw, 1.9rem);
  margin-left: auto;
}
.nav__link {
  font-size: 0.82rem; font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.11em;
  color: var(--white); opacity: 0.82;
  padding-block: 0.4rem; position: relative;
  transition: opacity 0.2s var(--ease), color 0.2s var(--ease);
}
.nav__link::after {
  content: ""; position: absolute; left: 0; right: 100%; bottom: 0;
  height: 2px; background: var(--orange);
  transition: right 0.3s var(--ease);
}
.nav__link:hover { opacity: 1; }
.nav__link:hover::after { right: 0; }
.nav__link.is-active { opacity: 1; color: var(--sky); }
.nav__link.is-active::after { right: 0; background: var(--sky); }

.nav__cta { flex: none; }

.nav.is-stuck {
  background: rgba(21, 23, 47, 0.94);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 1px 0 rgba(159, 213, 214, 0.18);
}
.nav.is-stuck .nav__inner { padding-block: 0.7rem; }

/* Mobile */
.nav__toggle { display: none; padding: 0.5rem; margin-left: auto; color: var(--white); }
.nav__toggle svg { width: 26px; height: 26px; }

@media (max-width: 1020px) {
  .nav__toggle { display: block; }
  .nav__links {
    display: none;                       /* never off-canvas: it would widen the page */
    position: fixed; inset: 0 0 0 auto; z-index: 100; width: min(360px, 86vw);
    background: var(--navy-950);
    flex-direction: column; align-items: flex-start; justify-content: center;
    gap: 1.4rem; padding: 2rem var(--gutter);
    margin-left: 0; box-shadow: -20px 0 60px -20px rgba(0,0,0,0.6);
  }
  .nav__links.is-open { display: flex; animation: drawerIn 0.38s var(--ease); }
  @keyframes drawerIn { from { transform: translateX(100%); } to { transform: none; } }
  .nav__link { font-size: 1.05rem; opacity: 1; }
  .nav__links .btn { margin-top: 0.75rem; }
  .nav__cta--desktop { display: none; }
  .nav__close { position: absolute; top: 1.25rem; right: 1.25rem; color: var(--white); }
}
@media (min-width: 1021px) { .nav__close, .nav__cta--mobile { display: none; } }

.nav-scrim {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(21,23,47,0.55); backdrop-filter: blur(3px);
  opacity: 0; pointer-events: none; transition: opacity 0.35s var(--ease);
}
.nav-scrim.is-open { opacity: 1; pointer-events: auto; }

/* --------------------------------------------------------------------------
   8. Hero
   -------------------------------------------------------------------------- */
.hero {
  position: relative;
  background: var(--navy);
  color: var(--on-dark);
  margin-top: calc(-1 * var(--nav-h));   /* slide under the transparent nav */
  padding-top: calc(var(--nav-h) + clamp(4.5rem, 9vw, 8rem));
  padding-bottom: clamp(4rem, 8vw, 7rem);
  overflow: hidden;
  isolation: isolate;
}
.hero__glow {
  position: absolute; z-index: -2; pointer-events: none;
  width: 90vw; max-width: 1100px; aspect-ratio: 1;
  top: -30%; right: -18%;
  background: radial-gradient(circle at center, rgba(159,213,214,0.20), rgba(159,213,214,0) 62%);
}
.hero__mark {
  position: absolute; z-index: -1; pointer-events: none;
  right: -14%; bottom: -26%;
  width: min(760px, 78vw);
  opacity: 0.16;
  animation: markspin 90s linear infinite;
}
@keyframes markspin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .hero__mark { animation: none; } }

.hero__inner { position: relative; }
.hero h1 { max-width: 16ch; }
.hero h1 em {
  font-style: normal; color: var(--orange);
  display: inline-block;
}
.hero__lead { margin-top: 1.6rem; max-width: 54ch; color: var(--on-dark-muted); }
.hero .btn-row { margin-top: 2.4rem; }

/* Proof stat strip */
.stats {
  margin-top: clamp(3rem, 6vw, 5rem);
  padding-top: clamp(1.75rem, 3vw, 2.5rem);
  border-top: 1px solid var(--dark-line);
  display: grid; grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 1.5rem clamp(1rem, 3vw, 2.5rem);
}
.stat__n {
  font-weight: var(--w-title); font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3rem);
  line-height: 1; color: var(--sky); letter-spacing: -0.03em;
}
.stat__l {
  margin-top: 0.55rem; font-size: var(--t-micro);
  text-transform: uppercase; letter-spacing: 0.14em;
  font-weight: var(--w-sub); color: var(--on-dark-muted);
}
@media (max-width: 720px) { .stats { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* --------------------------------------------------------------------------
   9. Cards
   -------------------------------------------------------------------------- */
.card {
  position: relative;
  display: flex; flex-direction: column;
  padding: clamp(1.5rem, 2.4vw, 2.1rem);
  border-radius: var(--radius);
  background: var(--white);
  border: 1px solid var(--paper-line);
  transition: transform 0.35s var(--ease), border-color 0.35s var(--ease),
              box-shadow 0.35s var(--ease);
  height: 100%;
}
a.card:hover {
  transform: translateY(-6px);
  border-color: var(--orange);
  box-shadow: 0 26px 50px -30px rgba(31, 33, 68, 0.5);
}
.card__icon {
  width: 46px; height: 46px; margin-bottom: 1.4rem;
  display: grid; place-items: center;
  border-radius: 12px; background: rgba(236,106,84,0.12);
}
.card__icon img, .card__icon svg { width: 26px; height: 26px; }
.card h3 { font-size: var(--t-h4); text-transform: uppercase; letter-spacing: 0.02em; line-height: 1.1; }
.card p { margin-top: 0.7rem; color: var(--ink-muted); font-size: var(--t-small); }
.card .link-arrow { margin-top: auto; padding-top: 1.4rem; }

/* Dark variant */
.card--dark {
  background: rgba(255,255,255,0.045);
  border-color: var(--dark-line);
  color: var(--on-dark);
}
a.card--dark:hover { border-color: var(--sky); box-shadow: 0 26px 50px -30px rgba(0,0,0,0.8); }
.card--dark p { color: var(--on-dark-muted); }
.card--dark .card__icon { background: rgba(159,213,214,0.14); }

/* Numbered pillar card */
.pillar__num {
  font-size: var(--t-micro); font-weight: var(--w-title);
  letter-spacing: 0.2em; color: var(--orange); margin-bottom: 1.1rem;
}
.card--dark .pillar__num { color: var(--sky); }
/* When the label is a spelled-out role rather than a short code, ease the tracking
   and reserve two lines, so a title that wraps doesn't drop below its neighbours. */
.pillar__num--role {
  letter-spacing: 0.12em; line-height: 1.35; min-height: 2.7em; margin-bottom: 0.9rem;
}

/* --------------------------------------------------------------------------
   10. Book sections
   -------------------------------------------------------------------------- */
.book {
  display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 6vw, 5rem); align-items: center;
}
.book__art { position: relative; }
.book__art img {
  width: 100%; max-width: 460px; margin-inline: auto;
  filter: drop-shadow(0 40px 60px rgba(31,33,68,0.28));
}
.book__badge {
  display: inline-flex; align-items: center; gap: 0.5rem;
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.16em;
  padding: 0.45rem 0.9rem; border-radius: 999px;
  background: var(--orange); color: var(--white);
  margin-bottom: 1.2rem;
}
.book__badge--soon { background: var(--sky); color: var(--navy); }
.book h2 { margin-bottom: 1.2rem; }
.book p + p { margin-top: 1rem; }
.book .btn-row { margin-top: 2rem; }

.quote {
  margin-top: 2rem; padding-left: 1.4rem;
  border-left: 3px solid var(--orange);
  font-size: var(--t-lead); font-weight: var(--w-sub);
  line-height: 1.4; letter-spacing: -0.01em;
}
.quote cite {
  display: block; margin-top: 0.7rem;
  font-size: var(--t-micro); font-style: normal; font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--ink-muted);
}
.band-dark .quote cite, .band-deep .quote cite { color: var(--on-dark-muted); }

@media (max-width: 860px) {
  .book { grid-template-columns: minmax(0,1fr); }
  .book__art { order: -1; }
  .book__art img { max-width: 300px; }
}

/* Coming-soon panel */
.soon {
  position: relative; overflow: hidden; isolation: isolate;
  border-radius: var(--radius-lg);
  background: var(--navy-950);
  color: var(--on-dark);
  padding: clamp(2.2rem, 5vw, 4rem);
  border: 1px solid var(--dark-line);
}
.soon__mark {
  position: absolute; z-index: -1; right: -6%; top: 50%;
  translate: 0 -50%; width: min(420px, 46%); opacity: 0.14;
}
.soon__grid {
  display: grid; grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 1.25rem; margin-top: 2.4rem;
  padding-top: 2rem; border-top: 1px solid var(--dark-line);
}
.soon__part span {
  display: block; font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--sky);
  margin-bottom: 0.5rem;
}
.soon__part strong {
  display: block; font-weight: var(--w-title); text-transform: uppercase;
  letter-spacing: -0.01em; font-size: var(--t-h4); line-height: 1.05;
}
.soon__part p { margin-top: 0.5rem; font-size: var(--t-small); color: var(--on-dark-muted); }
@media (max-width: 760px) { .soon__grid { grid-template-columns: minmax(0,1fr); } }

/* --------------------------------------------------------------------------
   11. 7Cs framework
   -------------------------------------------------------------------------- */
.sevens {
  display: grid; grid-template-columns: repeat(7, minmax(0,1fr));
  gap: clamp(0.75rem, 1.6vw, 1.5rem);
}
.seven {
  text-align: center; padding: clamp(1.25rem, 2vw, 1.75rem) 0.5rem;
  border-radius: var(--radius);
  border: 1px solid var(--dark-line);
  background: rgba(255, 255, 255, 0.035);
}
.seven img {
  width: clamp(46px, 4.6vw, 62px); margin: 0 auto 0.85rem;
  filter: brightness(0) invert(1);      /* renders the orange source art white */
}
.seven b {
  display: block; font-weight: var(--w-title); text-transform: uppercase;
  font-size: clamp(0.6rem, 0.42rem + 0.32vw, 0.75rem);
  letter-spacing: 0.07em; line-height: 1.2;
  color: var(--white); overflow-wrap: anywhere;
}

@media (max-width: 1180px) { .sevens { grid-template-columns: repeat(4, minmax(0,1fr)); } }
@media (max-width: 560px)  { .sevens { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* --------------------------------------------------------------------------
   12. Authors
   -------------------------------------------------------------------------- */
.author {
  display: flex; flex-direction: column; height: 100%;
  background: var(--white);
  border: 1px solid var(--paper-line);
  border-radius: var(--radius);
  overflow: hidden;
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease),
              border-color 0.35s var(--ease);
}
a.author:hover {
  transform: translateY(-6px);
  border-color: var(--sky);
  box-shadow: 0 30px 55px -34px rgba(31,33,68,0.55);
}
/* The headshots are supplied as finished circles, so no frame or crop here —
   just breathing room. Orange-circle versions sit on light grounds, the
   white-circle versions on dark. */
.author__photo {
  position: relative; padding: clamp(1rem, 2vw, 1.6rem) clamp(1rem, 2vw, 1.6rem) 0;
}
.author__photo img {
  width: 100%; height: auto; display: block;
  transition: transform 0.6s var(--ease);
}
a.author:hover .author__photo img { transform: scale(1.035); }
.author__body { padding: clamp(1.4rem, 2.2vw, 1.9rem); display: flex; flex-direction: column; flex: 1; }
.author__name {
  font-weight: var(--w-title); text-transform: uppercase;
  font-size: var(--t-h4); letter-spacing: -0.005em; line-height: 1.05;
}
.author__role {
  margin-top: 0.5rem; font-size: var(--t-micro);
  text-transform: uppercase; letter-spacing: 0.12em;
  font-weight: var(--w-sub); color: var(--orange);
}
.author__bio { margin-top: 1rem; font-size: var(--t-small); color: var(--ink-muted); }
.author__foot {
  margin-top: auto; padding-top: 1.5rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  flex-wrap: wrap;
}
.li {
  display: inline-flex; align-items: center; gap: 0.5rem;
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--navy); opacity: 0.75;
  transition: opacity 0.2s var(--ease), color 0.2s var(--ease);
}
.li:hover { opacity: 1; color: var(--orange); }
.li svg { width: 17px; height: 17px; }

/* --------------------------------------------------------------------------
   13. Podcast
   -------------------------------------------------------------------------- */
.pod {
  display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
  gap: clamp(2rem, 5vw, 4.5rem); align-items: start;
}
.pod__art img {
  width: 100%; max-width: 330px;
  border-radius: var(--radius-lg);
  box-shadow: 0 40px 70px -40px rgba(0, 0, 0, 0.85);
}

/* Retained for reference — the CSS-drawn cover used before the artwork arrived */
.podcover {
  position: relative; isolation: isolate; overflow: hidden;
  width: 100%; max-width: 380px;
  aspect-ratio: 1; border-radius: var(--radius-lg);
  background: var(--orange); color: var(--white);
  padding: clamp(1.5rem, 3vw, 2.2rem);
  display: flex; flex-direction: column; justify-content: space-between;
  box-shadow: 0 40px 70px -40px rgba(0,0,0,0.85);
}
.podcover__mark {
  position: absolute; z-index: -1; right: -22%; top: -18%;
  width: 88%; opacity: 0.22; filter: brightness(0) invert(1);
}
.podcover__title {
  font-weight: var(--w-title); text-transform: uppercase;
  font-size: clamp(1.3rem, 0.75rem + 2.2vw, 2rem);
  line-height: 0.95; letter-spacing: -0.02em;
}
.podcover__title span {
  display: block; font-weight: var(--w-body); font-style: italic;
  letter-spacing: 0.02em; margin-top: 0.15em;
}
.podcover__hosts { display: flex; gap: clamp(0.5rem, 1.6vw, 1rem); }
.podcover__host { flex: 1; text-align: center; min-width: 0; }
.podcover__host img { width: 100%; height: auto; display: block; }
.podcover__host b {
  display: block; margin-top: 0.55rem;
  font-size: clamp(0.52rem, 0.3rem + 0.6vw, 0.66rem);
  font-weight: var(--w-title); text-transform: uppercase; letter-spacing: 0.07em;
}
.pod__platforms { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.75rem; }
.pod__platforms a {
  display: inline-flex; align-items: center; gap: 0.55rem;
  padding: 0.55rem 1rem; border-radius: 999px;
  border: 1px solid var(--dark-line);
  font-size: var(--t-micro); font-weight: var(--w-sub);
  letter-spacing: 0.06em; color: var(--white);
  transition: border-color 0.25s var(--ease), background-color 0.25s var(--ease);
}
.pod__platforms a:hover { border-color: var(--sky); background: rgba(159,213,214,0.12); }
.pod__platforms svg { width: 17px; height: 17px; flex: none; }

.eplist { border-top: 1px solid var(--dark-line); }
.ep {
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: 1.25rem;
  padding: 1.35rem 0;
  border-bottom: 1px solid var(--dark-line);
  transition: padding-inline 0.3s var(--ease);
}
.ep:hover { padding-inline: 0.6rem; }
.ep__n {
  font-weight: var(--w-title); font-size: var(--t-small);
  color: var(--sky); letter-spacing: 0.05em; min-width: 2.6ch;
}
.ep__t {
  font-weight: var(--w-sub); font-size: var(--t-small);
  line-height: 1.35; color: var(--white);
}
.ep__d {
  font-size: var(--t-micro); letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--on-dark-muted); white-space: nowrap;
}
.ep:hover .ep__t { color: var(--sky); }
@media (max-width: 620px) {
  .ep { grid-template-columns: auto 1fr; }
  .ep__d { grid-column: 2; margin-top: 0.2rem; }
}

.guests {
  margin-top: 2rem; font-size: var(--t-small);
  color: var(--on-dark-muted); line-height: 1.8;
}
.guests b { color: var(--white); font-weight: var(--w-sub); }

@media (max-width: 860px) { .pod { grid-template-columns: minmax(0,1fr); } }

/* --------------------------------------------------------------------------
   14. Solution / program tiles with imagery
   -------------------------------------------------------------------------- */
.tile {
  position: relative; display: flex; flex-direction: column; height: 100%;
  border-radius: var(--radius); overflow: hidden;
  background: var(--white); border: 1px solid var(--paper-line);
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease),
              border-color 0.35s var(--ease);
}
a.tile:hover {
  transform: translateY(-6px); border-color: var(--orange);
  box-shadow: 0 28px 52px -32px rgba(31,33,68,0.5);
}
.tile__img { aspect-ratio: 1 / 1; background: var(--paper-soft); overflow: hidden; }
.tile__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--ease); }
a.tile:hover .tile__img img { transform: scale(1.05); }
.tile__body { padding: clamp(1.25rem, 2vw, 1.7rem); display: flex; flex-direction: column; flex: 1; }
.tile h3 { font-size: var(--t-h4); text-transform: uppercase; line-height: 1.1; }
.tile p { margin-top: 0.6rem; font-size: var(--t-small); color: var(--ink-muted); }
.tile .link-arrow { margin-top: auto; padding-top: 1.25rem; }

/* A card that carries a download beneath it. The link cannot live inside the card's
   own <a>, so the pair is wrapped and the wrapper becomes the grid cell. */
.tilewrap { display: flex; flex-direction: column; height: 100%; }
.tilewrap .tile { flex: 1; }
.tile__download {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem;
  margin-top: 0.7rem; padding: 0.8rem 1.1rem; border-radius: var(--radius);
  background: var(--orange); color: var(--white);
  font-size: var(--t-small); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.08em;
  transition: background 0.25s var(--ease);
}
.tile__download svg { width: 17px; height: 17px; flex: none; }
.tile__download:hover { background: #d85842; }
.tile__download:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; }
.btn__icon { width: 17px; height: 17px; flex: none; margin-right: 0.15rem; }

/* --------------------------------------------------------------------------
   15. Experiences strip (keynotes / workshops / events)
   -------------------------------------------------------------------------- */
.exp { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: clamp(1.25rem, 3vw, 2.5rem); }
.exp__item { padding-top: 1.6rem; border-top: 3px solid var(--orange); }
.exp__item h3 { font-size: var(--t-h4); }
.exp__title { display: flex; align-items: center; gap: 0.7rem; }
.exp__icon {
  flex: none; width: 34px; height: 34px; display: grid; place-items: center;
  border-radius: 10px; background: rgba(236, 106, 84, 0.12); color: var(--orange);
}
.exp__icon svg { width: 20px; height: 20px; }
.exp__item p { margin-top: 0.7rem; font-size: var(--t-small); }
@media (max-width: 760px) { .exp { grid-template-columns: minmax(0,1fr); } }

/* --------------------------------------------------------------------------
   16. Big CTA band
   -------------------------------------------------------------------------- */
.cta {
  position: relative; overflow: hidden; isolation: isolate;
  background: var(--orange); color: var(--white);
  padding-block: clamp(3.5rem, 7vw, 6rem);
}
.cta__mark {
  position: absolute; z-index: -1; left: -8%; top: 50%; translate: 0 -50%;
  width: min(560px, 55%); opacity: 0.13;
  filter: brightness(0) invert(1);
}
.cta__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 2rem clamp(2rem, 5vw, 4rem); flex-wrap: wrap;
}
.cta__inner > div:first-child { flex: 1 1 30rem; }
.cta__inner > .btn-row { flex: 0 0 auto; }
.cta h2 { color: var(--white); max-width: 20ch; }
.cta p { margin-top: 1rem; max-width: 46ch; color: rgba(255,255,255,0.9); }
.cta .btn--ghost-dark { border-color: rgba(255,255,255,0.6); }
.cta .btn--ghost-dark:hover { background: var(--white); color: var(--orange); border-color: var(--white); }
.cta .btn--primary { background: var(--white); color: var(--orange); box-shadow: none; }
.cta .btn--primary:hover { box-shadow: 0 14px 30px -12px rgba(0,0,0,0.4); }

/* --------------------------------------------------------------------------
   17. Footer
   -------------------------------------------------------------------------- */
.footer { background: var(--navy-950); color: var(--on-dark); padding-top: clamp(3.5rem, 7vw, 5.5rem); }
.footer__top {
  display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0,1fr));
  gap: clamp(2rem, 4vw, 3.5rem);
  padding-bottom: clamp(2.5rem, 5vw, 4rem);
}
.footer__brand img { width: 218px; margin-bottom: 1.5rem; }
.footer__brand p { font-size: var(--t-small); color: var(--on-dark-muted); max-width: 34ch; }
.footer__social { display: flex; gap: 0.7rem; margin-top: 1.75rem; }
.footer__social a {
  width: 40px; height: 40px; display: grid; place-items: center;
  border-radius: 50%; border: 1px solid var(--dark-line);
  transition: border-color 0.25s var(--ease), background-color 0.25s var(--ease);
}
.footer__social a:hover { border-color: var(--sky); background: rgba(159,213,214,0.12); }
.footer__social svg { width: 18px; height: 18px; }

.footer h4 {
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.16em; color: var(--sky);
  margin-bottom: 1.1rem;
}
.footer__col li + li { margin-top: 0.65rem; }
.footer__col a {
  font-size: var(--t-small); color: var(--on-dark-muted);
  transition: color 0.2s var(--ease);
}
.footer__col a:hover { color: var(--white); }

.footer__book {
  display: flex; align-items: center; gap: clamp(1.25rem, 3vw, 2.5rem);
  flex-wrap: wrap; justify-content: space-between;
  padding-block: clamp(1.75rem, 3vw, 2.5rem);
  border-top: 1px solid var(--dark-line);
  border-bottom: 1px solid var(--dark-line);
}
.footer__book-l { display: flex; align-items: center; gap: 1.25rem; }
.footer__book-l img { width: 62px; filter: drop-shadow(0 12px 20px rgba(0,0,0,0.5)); }
.footer__book-l strong {
  display: block; font-weight: var(--w-title); text-transform: uppercase;
  font-size: var(--t-h4); line-height: 1.05; letter-spacing: -0.01em;
}
.footer__book-l span { font-size: var(--t-small); color: var(--on-dark-muted); }

.footer__bottom {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem 2rem; flex-wrap: wrap;
  padding-block: 1.75rem;
  font-size: var(--t-micro); color: var(--on-dark-muted);
}
.footer__legal { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.footer__legal a:hover { color: var(--white); }
.footer__hash { color: var(--sky); font-weight: var(--w-sub); letter-spacing: 0.06em; }

@media (max-width: 900px) { .footer__top { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px) { .footer__top { grid-template-columns: minmax(0,1fr); } }

/* --------------------------------------------------------------------------
   17b. Interior page header (any page that isn't the homepage)
   -------------------------------------------------------------------------- */
.pagehead {
  position: relative; overflow: hidden; isolation: isolate;
  background: var(--navy); color: var(--on-dark);
  margin-top: calc(-1 * var(--nav-h));
  padding-top: calc(var(--nav-h) + clamp(3.5rem, 7vw, 6rem));
  padding-bottom: clamp(3rem, 6vw, 5rem);
}
.pagehead__mark {
  position: absolute; z-index: -1; right: -10%; bottom: -50%;
  width: min(560px, 62vw); opacity: 0.15;
}
.pagehead h1 { max-width: 18ch; }

/* --------------------------------------------------------------------------
   17c. Forms
   -------------------------------------------------------------------------- */
.contact {
  display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
  gap: clamp(2rem, 5vw, 4rem); align-items: start;
}
.contact__side { display: grid; gap: 1rem; }
@media (max-width: 860px) { .contact { grid-template-columns: minmax(0,1fr); } }

.form { display: grid; gap: 1.25rem; }
.form__row { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1.25rem; }
@media (max-width: 620px) { .form__row { grid-template-columns: minmax(0,1fr); } }

.field { display: grid; gap: 0.45rem; }
.field label {
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.13em; color: var(--ink-muted);
}
.field input, .field select, .field textarea {
  font: inherit; font-size: var(--t-small); color: var(--ink);
  padding: 0.85rem 1rem;
  border: 1px solid var(--paper-line); border-radius: 10px;
  background: var(--white);
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
  width: 100%;
}
.field textarea { resize: vertical; min-height: 8rem; }
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none; border-color: var(--orange);
  box-shadow: 0 0 0 3px rgba(236,106,84,0.18);
}
.form .btn { justify-self: start; }

.linklist li + li { margin-top: 0.75rem; }

/* --------------------------------------------------------------------------
   18. Scroll reveal
   -------------------------------------------------------------------------- */
[data-reveal] {
  opacity: 0; transform: translateY(22px);
  transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
}
[data-reveal].is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  [data-reveal] { opacity: 1; transform: none; transition: none; }
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* --------------------------------------------------------------------------
   19. Print
   -------------------------------------------------------------------------- */
@media print {
  .nav, .announce, .cta, .nav-scrim { display: none; }
  body { color: #000; background: #fff; }
}

/* ==========================================================================
   20. Motion — the compass mark, used as a slow ambient rotation
   ========================================================================== */
.spin { animation: markspin 90s linear infinite; transform-origin: 50% 50%; }
.spin--slow    { animation-duration: 160s; }
.spin--reverse { animation-direction: reverse; }
.spin--fast    { animation-duration: 48s; }

/* A drifting orbit for section dividers */
.orbit {
  position: absolute; z-index: -1; pointer-events: none;
  border: 1px solid currentColor; border-radius: 50%; opacity: 0.12;
  animation: drift 26s ease-in-out infinite alternate;
}
@keyframes drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to   { transform: translate3d(0, -22px, 0) scale(1.06); }
}

/* Icons give a small nudge when their card is hovered */
.card:hover .card__icon svg,
.tile:hover .card__icon svg { transform: rotate(-8deg) scale(1.06); }
.card__icon svg { transition: transform 0.4s var(--ease); }

@media (prefers-reduced-motion: reduce) {
  .spin, .orbit { animation: none !important; }
}

/* ==========================================================================
   21. Navigation dropdowns
   ========================================================================== */
.nav__item { position: relative; display: flex; align-items: center; }
.nav__link--drop {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-size: 0.82rem; font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.11em;
  color: var(--white); opacity: 0.82; padding-block: 0.4rem;
  position: relative; transition: opacity 0.2s var(--ease), color 0.2s var(--ease);
}
.nav__link--drop::after {
  content: ""; position: absolute; left: 0; right: 100%; bottom: 0;
  height: 2px; background: var(--orange); transition: right 0.3s var(--ease);
}
.nav__item:hover .nav__link--drop,
.nav__link--drop[aria-expanded="true"] { opacity: 1; }
.nav__item:hover .nav__link--drop::after,
.nav__link--drop[aria-expanded="true"]::after { right: 0; }
.nav__link--drop.is-active { opacity: 1; color: var(--sky); }
.nav__link--drop.is-active::after { right: 0; background: var(--sky); }
.nav__caret { transition: transform 0.25s var(--ease); flex: none; }
.nav__link--drop[aria-expanded="true"] .nav__caret { transform: rotate(180deg); }

.nav__drop {
  position: absolute; top: 100%; left: 50%; translate: -50% 0;
  min-width: 288px; padding: 0.5rem;
  background: var(--navy-950);
  border: 1px solid var(--dark-line); border-radius: var(--radius);
  box-shadow: 0 30px 60px -30px rgba(0,0,0,0.75);
  display: grid; gap: 0.15rem;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: opacity 0.25s var(--ease), transform 0.25s var(--ease), visibility 0.25s;
  z-index: 60;
}
.nav__item:hover .nav__drop,
.nav__item:focus-within .nav__drop,
.nav__drop.is-open {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.nav__drop a {
  display: block; padding: 0.7rem 0.85rem; border-radius: 9px;
  transition: background-color 0.2s var(--ease);
}
.nav__drop a:hover { background: rgba(159,213,214,0.1); }
.nav__drop strong {
  display: block; font-size: 0.86rem; font-weight: var(--w-sub);
  color: var(--white); letter-spacing: -0.005em;
}
.nav__drop span {
  display: block; margin-top: 0.15rem; font-size: var(--t-micro);
  color: var(--on-dark-muted);
}

@media (max-width: 1020px) {
  .nav__item { display: block; width: 100%; }
  .nav__link--drop { width: 100%; justify-content: space-between; font-size: 1.05rem; opacity: 1; }
  .nav__drop {
    position: static; translate: none; transform: none; min-width: 0;
    background: none; border: 0; box-shadow: none; padding: 0.25rem 0 0.5rem 0.75rem;
    display: none; opacity: 1; visibility: visible;
  }
  .nav__drop.is-open { display: grid; }
  .nav__item:hover .nav__drop { display: none; }
  .nav__item:hover .nav__drop.is-open { display: grid; }
  .nav__drop a { padding: 0.45rem 0; }
  .nav__links { justify-content: flex-start; overflow-y: auto; }
}

/* ==========================================================================
   22. Collection index — toolbar, cards, load more
   ========================================================================== */
.feedlink { margin-top: 1.6rem; }
.feedlink a {
  display: inline-flex; align-items: center; gap: 0.5rem;
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--sky);
}
.feedlink a:hover { color: var(--white); }
.feedlink svg { width: 14px; height: 14px; }

.toolbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem 2rem; flex-wrap: wrap; margin-bottom: clamp(1.75rem, 3vw, 2.5rem);
}
.search {
  display: flex; align-items: center; gap: 0.65rem;
  padding: 0.7rem 1.1rem; border-radius: 999px;
  border: 1px solid var(--paper-line); background: var(--white);
  min-width: min(340px, 100%);
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.search:focus-within { border-color: var(--orange); box-shadow: 0 0 0 3px rgba(236,106,84,0.16); }
.search svg { width: 17px; height: 17px; color: var(--ink-muted); flex: none; }
.search input {
  font: inherit; font-size: var(--t-small); border: 0; outline: none;
  background: none; width: 100%; color: var(--ink);
}
.search input::-webkit-search-cancel-button { cursor: pointer; }
.toolbar__count {
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--ink-muted);
}

.cardmeta {
  display: flex; align-items: center; gap: 0.7rem; flex-wrap: wrap;
  font-size: var(--t-micro); font-weight: var(--w-sub);
  text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--ink-muted); margin-bottom: 0.75rem;
}
.cardmeta__n {
  color: var(--orange); font-weight: var(--w-title);
  border: 1px solid rgba(236,106,84,0.35); border-radius: 999px;
  padding: 0.2rem 0.55rem;
}
.tile--item .tile__img { background: var(--paper-soft); }
.tile__img--portrait { aspect-ratio: 3 / 4; }
/* LinkedIn article banners (~1.91:1). In the default square holder they were blown up
   ~1.9x and cropped to a middle slice; hold their own shape and show them whole. */
.tile__img--banner { aspect-ratio: 1.91 / 1; background: var(--paper-soft); }
.tile__img--banner img { object-fit: contain; }
a.tile:hover .tile__img--banner img { transform: none; }

/* Mixed-shape cover art — this collection holds tall portraits, landscape scribes and
   one very wide panel. A square crop threw away 35-55% of each, so the holder keeps a
   fixed shape (cards stay aligned) and the image fits inside it whole. */
.tile__img--fit { background: var(--paper-soft); padding: clamp(0.6rem, 1.2vw, 1rem); }
.tile__img--fit img { object-fit: contain; }
a.tile:hover .tile__img--fit img { transform: none; }

/* Square show artwork, shown small and whole rather than cropped full-bleed —
   the same cover repeats on every card, so it does not need the whole tile. */
.tile__img--art {
  aspect-ratio: auto;                 /* sized by the artwork, not a fixed crop */
  display: grid; place-items: center;
  padding: clamp(1rem, 2.2vw, 1.6rem);
  background: var(--paper-soft);
}
.tile__img--art img {
  height: clamp(110px, 11.5vw, 158px);
  width: auto; max-width: 100%;
  border-radius: 8px;
}
a.tile:hover .tile__img--art img { transform: none; }
.tile--item h3 { font-size: var(--t-h4); }
.tile[hidden] { display: none; }

.emptystate {
  padding: 3rem 0; text-align: center; color: var(--ink-muted);
  font-size: var(--t-lead);
}
.loadmore { display: flex; justify-content: center; margin-top: clamp(2rem, 4vw, 3rem); }

/* ==========================================================================
   23. Article pages
   ========================================================================== */
.pagehead--article h1 { max-width: 24ch; font-size: clamp(2rem, 1.2rem + 3vw, 3.6rem); }
.backlink {
  display: inline-flex; align-items: center; gap: 0.5rem;
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--sky); margin-bottom: 1.75rem;
}
.backlink svg { transform: rotate(180deg); transition: transform 0.25s var(--ease); }
.backlink:hover svg { transform: rotate(180deg) translateX(4px); }

.article__cover {
  border-radius: var(--radius-lg); overflow: hidden;
  margin-bottom: clamp(2rem, 4vw, 3rem);
  background: var(--paper-soft);
  box-shadow: 0 30px 60px -40px rgba(31,33,68,0.5);
}
.article__cover img { width: 100%; }

.article__scribe { margin: 2.5rem 0; }
.article__scribe img { width: 100%; border-radius: var(--radius); background: var(--paper-soft); }
.article__scribe figcaption {
  margin-top: 0.75rem; font-size: var(--t-micro);
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--ink-muted);
}

/* Long-form rich text coming out of the CMS */
.prose { font-size: var(--t-body); line-height: 1.72; }
.prose > * + * { margin-top: 1.25rem; }
.prose h2, .prose h3 {
  margin-top: 2.5rem; font-size: var(--t-h3);
  text-transform: uppercase; letter-spacing: -0.01em;
}
.prose h4, .prose h5 {
  margin-top: 2.25rem; font-size: var(--t-h4);
  font-weight: var(--w-sub); text-transform: none; letter-spacing: -0.005em;
  color: var(--ink);
}
.prose h4 em, .prose h5 em { font-style: normal; color: var(--orange); }
.prose p { color: var(--ink-muted); }
.prose strong { color: var(--ink); font-weight: var(--w-sub); }
.prose a {
  color: var(--ink); text-decoration: underline;
  text-decoration-color: var(--orange); text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}
.prose a:hover { color: var(--orange); }
.prose ul, .prose ol { padding-left: 1.35rem; color: var(--ink-muted); }
.prose ul { list-style: disc; }
.prose ol { list-style: decimal; }
.prose li + li { margin-top: 0.5rem; }
.prose img { border-radius: var(--radius); margin-block: 1.75rem; }
.prose blockquote {
  padding-left: 1.4rem; border-left: 3px solid var(--orange);
  font-size: var(--t-lead); font-weight: var(--w-sub); line-height: 1.45;
  color: var(--ink);
}
.prose figure { margin-block: 2rem; }
/* Webflow exported its video embeds as a bare <iframe> with no dimensions, which the
   browser draws at its 300x150 default — the panel recordings were on the page all
   along, just postage-stamp sized. Give every embed a proper 16:9 frame. */
.prose iframe {
  display: block; width: 100%; aspect-ratio: 16 / 9; height: auto;
  border: 0; border-radius: var(--radius); background: var(--navy);
}
.prose figure > div:has(> iframe) { line-height: 0; }

/* Click-to-play video: the Curiosity Forum holding slide stands in until the visitor
   presses play, at which point site.js swaps the player in. Nothing is requested from
   YouTube before that. Rules sit after .prose iframe so they win on equal specificity. */
.videoembed {
  position: relative; aspect-ratio: 16 / 9; overflow: hidden;
  border-radius: var(--radius); background: var(--navy);
}
.videoembed img, .videoembed iframe {
  display: block; width: 100%; height: 100%; aspect-ratio: auto;
  object-fit: cover; border: 0; border-radius: 0;
}
.videoembed__play {
  position: absolute; inset: 0; margin: auto; cursor: pointer; border: 0; padding: 0;
  width: clamp(62px, 6.5vw, 84px); aspect-ratio: 1; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--orange); color: var(--white);
  box-shadow: 0 18px 40px -16px rgba(0, 0, 0, 0.55);
  transition: transform 0.3s var(--ease);
}
.videoembed__play svg { width: 44%; height: 44%; margin-left: 7%; }
.videoembed:hover .videoembed__play { transform: scale(1.09); }
.videoembed__play:focus-visible { outline: 3px solid var(--sky); outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) { .videoembed__play { transition: none; } }

/* Audio embed, same idea as the video one: visible without any opt-in, but the
   Audioboom player is only fetched once someone presses play. */
.audioembed {
  display: flex; align-items: center; gap: 1rem;
  margin-block: 2rem; padding: 1rem 1.25rem;
  border: 1px solid var(--paper-line); border-radius: var(--radius);
  background: var(--paper-soft);
}
.audioembed__play {
  flex: none; width: 52px; aspect-ratio: 1; border-radius: 50%; border: 0; padding: 0;
  display: grid; place-items: center; cursor: pointer;
  background: var(--orange); color: var(--white);
  transition: transform 0.3s var(--ease);
}
.audioembed__play svg { width: 44%; height: 44%; margin-left: 8%; }
.audioembed:hover .audioembed__play { transform: scale(1.07); }
.audioembed__play:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; }
.audioembed__label {
  display: flex; flex-direction: column; gap: 0.2rem;
  font-size: var(--t-small); font-weight: var(--w-sub); color: var(--ink);
}
.audioembed__label em {
  font-style: normal; font-size: var(--t-micro); font-weight: var(--w-body);
  color: var(--ink-muted);
}
.audioembed iframe { width: 100%; height: 150px; border: 0; display: block; }
.audioembed.is-loaded { display: block; padding: 0; background: transparent; border: 0; }
@media (prefers-reduced-motion: reduce) { .audioembed__play { transition: none; } }
.prose hr { border: 0; border-top: 1px solid var(--paper-line); margin-block: 2.5rem; }


/* --------------------------------------------------------------------------
   Listen and subscribe — the platform row at the foot of an episode page
   -------------------------------------------------------------------------- */
.platforms {
  margin-top: clamp(2.25rem, 4vw, 3rem); padding-top: clamp(1.5rem, 2.6vw, 2rem);
  border-top: 1px solid var(--paper-line);
}
.platforms__title {
  font-size: var(--t-micro); font-weight: var(--w-title); text-transform: uppercase;
  letter-spacing: 0.14em; color: var(--orange); margin-bottom: 1rem;
}
.platforms__row { display: flex; flex-wrap: wrap; gap: 0.7rem; }
.platform {
  display: inline-flex; align-items: center; gap: 0.6rem;
  padding: 0.65rem 1.15rem; border-radius: 999px;
  border: 1px solid var(--paper-line); background: var(--paper);
  font-size: var(--t-small); font-weight: var(--w-sub); color: var(--ink);
  transition: border-color 0.25s var(--ease), color 0.25s var(--ease);
}
.platform svg { width: 19px; height: 19px; flex: none; }
.platform:hover { border-color: var(--orange); color: var(--orange); }
.platform:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; }
.band-dark .platforms, .band-deep .platforms { border-top-color: var(--dark-line); }
.band-dark .platform, .band-deep .platform {
  border-color: var(--dark-line); background: transparent; color: var(--white);
}
.pagenav {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 1rem; margin-top: clamp(3rem, 6vw, 4.5rem);
  padding-top: clamp(2rem, 4vw, 3rem); border-top: 1px solid var(--paper-line);
}
.pagenav a {
  padding: 1.25rem 1.4rem; border-radius: var(--radius);
  border: 1px solid var(--paper-line);
  transition: border-color 0.25s var(--ease), transform 0.25s var(--ease);
}
.pagenav a:hover { border-color: var(--orange); transform: translateY(-3px); }
.pagenav span {
  display: block; font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--orange);
  margin-bottom: 0.4rem;
}
.pagenav strong {
  display: block; font-size: var(--t-small); font-weight: var(--w-sub);
  line-height: 1.35;
}
.pagenav__r { text-align: right; }
.pagenav__r:only-child { grid-column: 2; }
@media (max-width: 640px) {
  .pagenav { grid-template-columns: minmax(0,1fr); }
  .pagenav__r { text-align: left; }
  .pagenav__r:only-child { grid-column: 1; }
}

/* ==========================================================================
   24. Cookie consent
   ========================================================================== */
.cookie {
  position: fixed; z-index: 120; left: 50%; bottom: clamp(0.75rem, 2vw, 1.5rem);
  translate: -50% 0; width: min(1080px, calc(100vw - 1.5rem));
  background: var(--navy-950); color: var(--on-dark);
  border: 1px solid var(--dark-line); border-radius: var(--radius-lg);
  box-shadow: 0 40px 80px -30px rgba(0,0,0,0.7);
  opacity: 0; transform: translateY(16px);
  transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
}
.cookie.is-in { opacity: 1; transform: none; }
.cookie__inner {
  display: flex; align-items: center; gap: clamp(1.25rem, 3vw, 2.5rem);
  padding: clamp(1.25rem, 2.4vw, 1.9rem); flex-wrap: wrap;
}
.cookie__copy { flex: 1 1 26rem; }
.cookie__copy h2 {
  font-size: var(--t-h4); text-transform: uppercase; letter-spacing: -0.005em;
  color: var(--white);
}
.cookie__copy p {
  margin-top: 0.6rem; font-size: var(--t-small); color: var(--on-dark-muted);
  max-width: 62ch;
}
.cookie__copy a { color: var(--sky); text-decoration: underline; text-underline-offset: 2px; }
.cookie__actions { display: flex; align-items: center; gap: 0.7rem; flex-wrap: wrap; }
.cookie__manage {
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--sky); padding: 0.5rem 0.25rem;
  border-bottom: 1px solid transparent;
}
.cookie__manage:hover { border-color: var(--sky); }

.cookiepanel { position: fixed; inset: 0; z-index: 130; }
.cookiepanel__scrim {
  position: absolute; inset: 0; background: rgba(21,23,47,0.6);
  backdrop-filter: blur(4px); opacity: 0; transition: opacity 0.3s var(--ease);
}
.cookiepanel.is-in .cookiepanel__scrim { opacity: 1; }
.cookiepanel__box {
  position: relative; margin: auto; top: 50%; translate: 0 -50%;
  width: min(620px, calc(100vw - 2rem)); max-height: min(88vh, 900px); overflow-y: auto;
  background: var(--white); color: var(--ink);
  border-radius: var(--radius-lg); padding: clamp(1.6rem, 3vw, 2.5rem);
  box-shadow: 0 50px 90px -30px rgba(0,0,0,0.5);
  opacity: 0; transform: scale(0.97);
  transition: opacity 0.3s var(--ease), transform 0.3s var(--ease);
}
.cookiepanel.is-in .cookiepanel__box { opacity: 1; transform: none; }
.cookiepanel__x { position: absolute; top: 1rem; right: 1rem; color: var(--ink-muted); }
.cookiepanel__x:hover { color: var(--orange); }
.cookiepanel__actions {
  display: flex; gap: 0.7rem; flex-wrap: wrap;
  margin-top: 1.75rem; padding-top: 1.5rem; border-top: 1px solid var(--paper-line);
}

.consentlist { margin-top: 1.75rem; }
.consentrow {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1.25rem;
  padding: 1.1rem 0; border-top: 1px solid var(--paper-line);
}
.consentrow strong {
  font-weight: var(--w-title); text-transform: uppercase;
  font-size: var(--t-small); letter-spacing: 0.02em;
}
.consentrow p { margin-top: 0.4rem; font-size: var(--t-small); color: var(--ink-muted); }

.switch { display: grid; justify-items: center; gap: 0.4rem; cursor: pointer; flex: none; }
.switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.switch__track {
  width: 46px; height: 26px; border-radius: 999px;
  background: rgba(31,33,68,0.18); position: relative;
  transition: background-color 0.25s var(--ease);
}
.switch__track::after {
  content: ""; position: absolute; top: 3px; left: 3px;
  width: 20px; height: 20px; border-radius: 50%; background: var(--white);
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  transition: transform 0.25s var(--ease);
}
.switch input:checked + .switch__track { background: var(--orange); }
.switch input:checked + .switch__track::after { transform: translateX(20px); }
.switch input:focus-visible + .switch__track { outline: 3px solid var(--orange); outline-offset: 3px; }
.switch__label {
  font-size: 0.65rem; font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-muted);
}
.switch.is-locked { cursor: default; }
.switch.is-locked .switch__track { background: var(--sky); }
.switch.is-locked .switch__track::after { transform: translateX(20px); }

/* ==========================================================================
   25. Footer additions
   ========================================================================== */
.footer { position: relative; overflow: hidden; isolation: isolate; }
.footer__mark {
  position: absolute; z-index: -1; right: -8%; top: -12%;
  width: min(460px, 46vw); opacity: 0.07;
}
.footer__feeds {
  display: flex; align-items: center; gap: 0.5rem 1.25rem; flex-wrap: wrap;
  padding-block: 1.5rem; border-bottom: 1px solid var(--dark-line);
  font-size: var(--t-micro);
}
.footer__feeds span {
  font-weight: var(--w-title); text-transform: uppercase;
  letter-spacing: 0.16em; color: var(--sky);
}
.footer__feeds a { color: var(--on-dark-muted); }
.footer__feeds a:hover { color: var(--white); }
.footer__legal button {
  font-size: inherit; color: inherit; padding: 0;
  border-bottom: 1px solid transparent;
}
.footer__legal button:hover { color: var(--white); border-color: currentColor; }

/* ==========================================================================
   26. Misc page furniture
   ========================================================================== */
.split {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr));
  gap: clamp(2rem, 5vw, 4.5rem); align-items: center;
}
.split--art-first .split__art { order: -1; }
.split > div > p + p { margin-top: 1rem; }
.split__art img { width: 100%; border-radius: var(--radius-lg); }
/* A transparent mockup rather than a photo: no card rounding, and never upscaled
   past its native size, or the device outlines go soft. */
.split__art--plain img {
  border-radius: 0; width: auto; max-width: min(100%, 440px);
  margin-inline: auto; display: block;
}
@media (max-width: 860px) { .split { grid-template-columns: minmax(0,1fr); } }

.steps { counter-reset: step; display: grid; gap: 1px; background: var(--paper-line); }
.step {
  counter-increment: step; background: var(--paper);
  padding: clamp(1.4rem, 2.6vw, 2.2rem);
  display: grid; grid-template-columns: auto 1fr; gap: 1.5rem; align-items: start;
}
.step::before {
  content: counter(step, decimal-leading-zero);
  font-weight: var(--w-title); font-size: var(--t-h4); color: var(--orange);
  letter-spacing: 0.05em;
}
.step h3 { font-size: var(--t-h4); }
.step p { margin-top: 0.5rem; color: var(--ink-muted); font-size: var(--t-small); }
.band-dark .step, .band-deep .step { background: var(--navy); }
.band-dark .steps, .band-deep .steps { background: var(--dark-line); }
/* Icon-led variant: the phase icons from the original site replace the counter, so a
   row is recognisable at a glance. Icons differ in aspect ratio, so cap both axes. */
.steps--icons .step::before { content: none; }
.step__icon {
  width: clamp(38px, 3.2vw, 50px); max-height: clamp(38px, 3.2vw, 50px);
  height: auto; object-fit: contain; object-position: center top;
  align-self: start; margin-top: 0.15rem;
}

.faq { border-top: 1px solid var(--paper-line); }
.faq details { border-bottom: 1px solid var(--paper-line); }
.faq summary {
  list-style: none; cursor: pointer; padding: 1.35rem 2.5rem 1.35rem 0;
  position: relative; font-weight: var(--w-sub); font-size: var(--t-h4);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+"; position: absolute; right: 0.25rem; top: 50%; translate: 0 -50%;
  font-weight: var(--w-title); color: var(--orange); font-size: 1.4rem;
  transition: transform 0.25s var(--ease);
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { padding-bottom: 1.5rem; color: var(--ink-muted); max-width: 68ch; }
.band-dark .faq, .band-dark .faq details { border-color: var(--dark-line); }

.pricetag {
  display: inline-flex; align-items: baseline; gap: 0.4rem;
  font-weight: var(--w-title); font-size: var(--t-h3); color: var(--orange);
}

.legal h2 { margin-top: 3rem; font-size: var(--t-h3); }
.legal h3 { margin-top: 2rem; font-size: var(--t-h4); text-transform: none; font-weight: var(--w-sub); }
.legal p, .legal li { color: var(--ink-muted); }
.legal > * + * { margin-top: 1.1rem; }
.legal ul { list-style: disc; padding-left: 1.35rem; }
.legal li + li { margin-top: 0.5rem; }
.legal table {
  width: 100%; border-collapse: collapse; margin-top: 1.25rem;
  font-size: var(--t-small);
}
.legal th, .legal td {
  text-align: left; padding: 0.85rem 1rem; border: 1px solid var(--paper-line);
  vertical-align: top;
}
.legal th {
  font-weight: var(--w-title); text-transform: uppercase;
  font-size: var(--t-micro); letter-spacing: 0.1em; background: var(--paper-soft);
}
.legal__toc {
  background: var(--paper-soft); border-radius: var(--radius);
  padding: clamp(1.25rem, 2.4vw, 1.9rem); margin-top: 2rem;
}
.legal__toc h2 { margin-top: 0; font-size: var(--t-h4); }
.legal__toc ol { list-style: none; padding: 0; margin-top: 1rem; columns: 2; column-gap: 2rem; }
.legal__toc li { break-inside: avoid; margin-bottom: 0.45rem; }
.legal__toc a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 3px; }
@media (max-width: 620px) { .legal__toc ol { columns: 1; } .legal table { display: block; overflow-x: auto; } }

.tablewrap { overflow-x: auto; }

/* ==========================================================================
   27. Book pages
   ========================================================================== */
.book--flip { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); }
@media (max-width: 860px) {
  .book--flip { grid-template-columns: minmax(0,1fr); }
  .book--flip .book__art { order: -1; }
}

.factlist {
  margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--paper-line);
  font-size: var(--t-small);
}
.factlist li {
  display: grid; grid-template-columns: 8.5rem 1fr; gap: 1rem;
  padding-block: 0.55rem; color: var(--ink-muted);
}
.factlist li + li { border-top: 1px solid var(--paper-line); }
.factlist span {
  font-weight: var(--w-title); text-transform: uppercase;
  font-size: var(--t-micro); letter-spacing: 0.12em; color: var(--ink);
}
.factlist--dark, .factlist--dark li + li { border-color: var(--dark-line); }
.factlist--dark span { color: var(--sky); }
@media (max-width: 520px) { .factlist li { grid-template-columns: minmax(0,1fr); gap: 0.2rem; } }

/* Typographic stand-in for a cover we do not have artwork for */
.bookplate {
  position: relative; overflow: hidden; isolation: isolate;
  width: 100%; max-width: 340px; margin-inline: auto; aspect-ratio: 5 / 7;
  background: var(--navy); color: var(--white);
  border-radius: 4px 10px 10px 4px;
  padding: clamp(1.5rem, 3vw, 2.2rem);
  display: flex; flex-direction: column; gap: 0.5rem;
  box-shadow: 0 40px 60px -35px rgba(31,33,68,0.7),
              inset 14px 0 22px -18px rgba(0,0,0,0.85);
  border-left: 5px solid var(--navy-950);
}
.bookplate__mark {
  position: absolute; z-index: -1; right: -26%; bottom: -14%;
  width: 86%; opacity: 0.2;
}
.bookplate__kicker {
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.24em; color: var(--sky);
}
.bookplate__title {
  margin-top: auto; font-weight: var(--w-title); text-transform: uppercase;
  font-size: clamp(1.8rem, 1.1rem + 2.6vw, 2.6rem); line-height: 0.92;
  letter-spacing: -0.02em;
}
.bookplate__sub {
  font-size: var(--t-small); font-weight: var(--w-sub); color: var(--sky);
}
.bookplate__authors {
  margin-top: 0.9rem; font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--on-dark-muted);
}

/* Chapter / contents listing */
.chapters { counter-reset: ch; border-top: 1px solid var(--paper-line); }
.chapter {
  counter-increment: ch;
  display: grid; grid-template-columns: 3.5rem 1fr; gap: 1.5rem;
  padding: 1.35rem 0; border-bottom: 1px solid var(--paper-line);
}
.chapter::before {
  content: counter(ch, decimal-leading-zero);
  font-weight: var(--w-title); color: var(--orange);
  font-size: var(--t-small); letter-spacing: 0.08em;
}
.chapter h3 { font-size: var(--t-h4); text-transform: uppercase; }
.chapter p { margin-top: 0.4rem; font-size: var(--t-small); color: var(--ink-muted); }
.band-dark .chapters, .band-dark .chapter { border-color: var(--dark-line); }
.band-dark .chapter::before { color: var(--sky); }

/* The 7Cs, expanded with their descriptions */
.cdeck { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: clamp(1rem,1.8vw,1.5rem); }
.cdeck__item {
  border: 1px solid var(--dark-line); border-radius: var(--radius);
  padding: clamp(1.25rem, 2vw, 1.75rem);
  background: rgba(255,255,255,0.04);
}
.cdeck__item img { width: 54px; margin-bottom: 1rem; filter: brightness(0) invert(1); }
.cdeck__item h3 {
  font-size: var(--t-h4); text-transform: uppercase; letter-spacing: 0.02em;
}
.cdeck__item h3 span { color: var(--sky); margin-right: 0.4rem; }
.cdeck__item p { margin-top: 0.6rem; font-size: var(--t-small); color: var(--on-dark-muted); }
@media (max-width: 1000px) { .cdeck { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px)  { .cdeck { grid-template-columns: minmax(0,1fr); } }

/* ==========================================================================
   28. Page furniture added with the full site build
   ========================================================================== */
.pagehead--deep { background: var(--navy-950); }

.pullquote {
  max-width: 46rem; margin-inline: auto; text-align: center;
  font-size: clamp(1.35rem, 1rem + 1.6vw, 2.15rem);
  font-weight: var(--w-sub); line-height: 1.3; letter-spacing: -0.015em;
  text-wrap: balance;
}
.pullquote p::before, .pullquote p::after { content: ""; }
.pullquote::before {
  content: ""; display: block; width: 42px; height: 4px; border-radius: 2px;
  background: var(--orange); margin: 0 auto 2rem;
}

/* Author profile rows */
.profile {
  display: grid; grid-template-columns: minmax(0, 0.42fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 4.5rem); align-items: start;
}
.profile__aside { display: grid; gap: 1.5rem; justify-items: start; }
.profile__aside img { width: 100%; max-width: 340px; }
.profile__body h2 { margin-top: 0.2rem; }
.profile__body p + p { margin-top: 1rem; }
@media (max-width: 860px) {
  .profile { grid-template-columns: minmax(0,1fr); }
  .profile__aside img { max-width: 240px; }
}

.topics {
  margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--paper-line);
}
.topics > span {
  display: block; font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--orange);
  margin-bottom: 0.9rem;
}
/* A stacked list, not a row of pills — these topics are full phrases, and as chips they
   wrapped into ragged blocks. The orange rule echoes the eyebrow marker. */
.topics ul { display: grid; gap: 0.6rem; }
.topics li {
  position: relative; padding-left: 2.1rem;
  font-size: var(--t-small); color: var(--ink-muted);
}
.topics li::before {
  content: ""; position: absolute; left: 0; top: 0.62em;
  width: 20px; height: 3px; border-radius: 2px; background: var(--orange);
}

/* Dictionary definition block */
.defbox {
  border-left: 4px solid var(--orange);
  padding: clamp(1.25rem, 2.5vw, 2rem) clamp(1.25rem, 2.5vw, 2.25rem);
  background: var(--paper-soft); border-radius: 0 var(--radius) var(--radius) 0;
}
.defbox__word {
  font-weight: var(--w-title); text-transform: uppercase;
  font-size: var(--t-h3); letter-spacing: -0.01em;
}
.defbox__word span {
  font-weight: var(--w-body); text-transform: none; letter-spacing: 0;
  font-size: var(--t-body); color: var(--ink-muted); margin-left: 0.5rem;
}
.defbox__pos {
  font-style: italic; color: var(--ink-muted); font-size: var(--t-small);
  margin-top: 0.35rem;
}
.defbox__def { margin-top: 0.9rem; font-size: var(--t-lead); }

/* Legal review banner */
.reviewnote {
  border: 1px solid rgba(236,106,84,0.4);
  background: rgba(236,106,84,0.07);
  border-radius: var(--radius);
  padding: clamp(1rem, 2vw, 1.4rem) clamp(1.1rem, 2.2vw, 1.6rem);
  font-size: var(--t-small); color: var(--ink-muted);
  margin-bottom: 2.5rem;
}
.reviewnote strong { color: var(--orange); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--t-micro);
  display: block; margin-bottom: 0.4rem; }

/* Inline cookie-settings buttons inside body copy */
.legal button[data-cookie-settings],
.prose button[data-cookie-settings] {
  color: var(--ink); text-decoration: underline;
  text-decoration-color: var(--orange); text-decoration-thickness: 2px;
  text-underline-offset: 3px; padding: 0;
}
.legal button[data-cookie-settings]:hover { color: var(--orange); }

/* Form extras */
.checkline {
  display: grid; grid-template-columns: auto 1fr; gap: 0.75rem;
  align-items: start; font-size: var(--t-small); color: var(--ink-muted);
}
.checkline input { margin-top: 0.25rem; accent-color: var(--orange); width: 18px; height: 18px; }
.checkline a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 2px; }
.formnote {
  font-size: var(--t-micro); color: var(--ink-muted); max-width: 52ch;
}
.formnote a { color: var(--orange); text-decoration: underline; text-underline-offset: 2px; }
.contact__side .link-arrow a { color: inherit; }

/* An image that failed to load leaves a quiet brand-tinted block, not a broken icon */
.tile__img.is-imageless, .article__cover.is-imageless {
  background: linear-gradient(135deg, rgba(159,213,214,0.35), rgba(31,33,68,0.08));
}
.article__cover.is-imageless { min-height: 180px; }
.prose.is-imageless img[data-failed] { display: none; }

/* ==========================================================================
   29. Proof banner — the strip of numbers under the hero
   ========================================================================== */
.proofbar {
  position: relative; overflow: hidden; isolation: isolate;
  background: linear-gradient(150deg, #B7E0E1 0%, var(--sky) 55%, #8CC9CA 100%);
  color: var(--navy);
  padding-block: clamp(2rem, 4vw, 3.25rem);
}
.proofbar__mark {
  position: absolute; z-index: -1; right: -6%; top: 50%; translate: 0 -50%;
  width: min(420px, 42vw); opacity: 0.14;
}
.proofbar__inner {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(0.75rem, 1.6vw, 1.25rem);
}
.proofbar__item {
  position: relative;
  background: rgba(255, 255, 255, 0.42);
  border: 1px solid rgba(255, 255, 255, 0.65);
  border-radius: var(--radius);
  padding: clamp(1.1rem, 2vw, 1.6rem) clamp(1rem, 1.8vw, 1.4rem);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 10px 24px -16px rgba(31, 33, 68, 0.55);
}
.proofbar__item::before {
  content: ""; position: absolute; left: clamp(1rem, 1.8vw, 1.4rem); top: 0;
  width: 30px; height: 3px; border-radius: 0 0 2px 2px; background: var(--orange);
}
.proofbar__n {
  display: block; font-weight: var(--w-title); letter-spacing: -0.03em; line-height: 1;
  font-size: clamp(1.9rem, 1.1rem + 2.1vw, 3rem);
}
.proofbar__l {
  display: block; margin-top: 0.55rem;
  font-weight: var(--w-title); text-transform: uppercase;
  letter-spacing: 0.13em; font-size: var(--t-micro);
  color: rgba(31, 33, 68, 0.72);
}
@media (max-width: 900px) { .proofbar__inner { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 460px) { .proofbar__inner { grid-template-columns: minmax(0,1fr); } }

/* ==========================================================================
   30. Ways in — the platform, as an index rather than a card grid
   ========================================================================== */
.wayins { border-top: 1px solid var(--paper-line); }
.wayin {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center; gap: clamp(1.25rem, 3vw, 2.75rem);
  padding: clamp(1.6rem, 3vw, 2.4rem) 0;
  border-bottom: 1px solid var(--paper-line);
  position: relative;
  transition: padding-inline 0.4s var(--ease);
}
.wayin::before {
  content: ""; position: absolute; left: 0; top: -1px; bottom: -1px;
  width: 0; background: var(--orange);
  transition: width 0.4s var(--ease);
}
.wayin:hover { padding-inline: clamp(0.75rem, 1.6vw, 1.5rem); }
.wayin:hover::before { width: 3px; }

/* The numeral sits in a ring, echoing the 7Cs marks */
.wayin__n {
  flex: none; display: grid; place-items: center;
  width: clamp(56px, 6vw, 76px); aspect-ratio: 1; border-radius: 50%;
  border: 1px solid var(--paper-line);
  font-weight: var(--w-title); font-size: var(--t-small);
  letter-spacing: 0.1em; color: var(--ink-muted);
  transition: color 0.35s var(--ease), border-color 0.35s var(--ease),
              background-color 0.35s var(--ease), transform 0.5s var(--ease);
}
.wayin:hover .wayin__n {
  color: var(--orange); border-color: var(--orange);
  background: rgba(236, 106, 84, 0.08);
  transform: rotate(-25deg);
}
.wayin__body h3 {
  font-size: clamp(1.3rem, 1rem + 1.2vw, 1.9rem);
  text-transform: uppercase; letter-spacing: -0.01em; line-height: 1.05;
  transition: color 0.3s var(--ease);
}
.wayin:hover .wayin__body h3 { color: var(--orange); }
.wayin__body p {
  margin-top: 0.6rem; color: var(--ink-muted); font-size: var(--t-small);
  max-width: 68ch;
}
.wayin__go {
  flex: none; width: 44px; height: 44px; display: grid; place-items: center;
  border-radius: 50%; border: 1px solid var(--paper-line); color: var(--ink);
  transition: transform 0.35s var(--ease), border-color 0.35s var(--ease),
              background-color 0.35s var(--ease), color 0.35s var(--ease);
}
.wayin__go svg { width: 18px; height: 18px; }
.wayin:hover .wayin__go {
  background: var(--orange); border-color: var(--orange);
  color: var(--white); transform: translateX(5px);
}
@media (max-width: 620px) {
  .wayin { grid-template-columns: auto minmax(0, 1fr); }
  .wayin__go { display: none; }
}

/* ==========================================================================
   31. Coming-soon panel with cover artwork
   ========================================================================== */
.soon__top {
  display: grid; grid-template-columns: minmax(0, 0.62fr) minmax(0, 1.38fr);
  gap: clamp(2rem, 5vw, 4rem); align-items: center;
}
.soon__art img {
  width: 100%; max-width: 320px; margin-inline: auto;
  filter: drop-shadow(0 40px 60px rgba(0, 0, 0, 0.55));
}
.soon__top p + p, .soon__top .subhead + p { margin-top: 1.1rem; }
.soon__kicker {
  margin-top: 1.5rem; font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.02em;
  font-size: var(--t-h4); line-height: 1.2; color: var(--sky);
}
@media (max-width: 860px) {
  .soon__top { grid-template-columns: minmax(0, 1fr); }
  .soon__art { order: -1; }
  .soon__art img { max-width: 230px; }
}

/* ==========================================================================
   32. Guest list
   ========================================================================== */
.guests {
  margin-top: 2.25rem; padding-top: 1.75rem;
  border-top: 1px solid var(--dark-line);
}
.guests__label {
  display: block; font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.16em; color: var(--sky);
  margin-bottom: 1rem;
}
.guests__names {
  font-size: var(--t-small); font-weight: var(--w-body);
  line-height: 1.9; color: var(--white);
}
.guests__more { font-weight: var(--w-body); color: var(--sky); }

/* ==========================================================================
   33. LinkedIn follow button
   --------------------------------------------------------------------------
   The "in" bug is LinkedIn's mark, used in its permitted white-on-solid form
   so it stays compliant with their brand rules while the button itself uses
   our navy. Do not recolor the bug itself.
   ========================================================================== */
.btn-li {
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0.55rem 1rem 0.55rem 0.8rem;
  border-radius: 999px;
  background: var(--navy); color: var(--white);
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.1em; line-height: 1;
  transition: background-color 0.25s var(--ease), transform 0.25s var(--ease),
              box-shadow 0.25s var(--ease);
}
.btn-li svg { width: 16px; height: 16px; flex: none; display: block; }
.btn-li > svg + * , .btn-li { line-height: 1; }
.btn-li:hover {
  background: var(--orange); transform: translateY(-2px);
  box-shadow: 0 10px 20px -12px rgba(236, 106, 84, 0.9);
}
.btn-li--lg {
  padding: 0.85rem 1.4rem 0.85rem 1.15rem;
  font-size: var(--t-small); gap: 0.65rem;
}
.btn-li--lg svg { width: 19px; height: 19px; }
.band-dark .btn-li, .band-deep .btn-li, .cta .btn-li {
  background: var(--white); color: var(--navy);
}
.band-dark .btn-li:hover, .band-deep .btn-li:hover, .cta .btn-li:hover {
  background: var(--orange); color: var(--white);
}

/* A closing statement line, heavier than body copy but lighter than a heading */
.bigline {
  margin-top: 2rem; font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: -0.01em; line-height: 1.15;
  font-size: clamp(1.15rem, 0.95rem + 1vw, 1.6rem);
  color: var(--orange);
}
.band-dark .bigline, .band-deep .bigline { color: var(--sky); }

/* ==========================================================================
   34. "The other book" hand-off at the foot of each book page
   ========================================================================== */
.nextbook {
  display: grid; grid-template-columns: minmax(0, 0.32fr) minmax(0, 1fr);
  gap: clamp(1.75rem, 4vw, 3.5rem); align-items: center;
}
.nextbook__art img {
  width: 100%; max-width: 220px; margin-inline: auto;
  filter: drop-shadow(0 30px 44px rgba(0, 0, 0, 0.4));
}
@media (max-width: 760px) {
  .nextbook { grid-template-columns: minmax(0, 1fr); }
  .nextbook__art { order: -1; }
  .nextbook__art img { max-width: 170px; }
}

/* ==========================================================================
   35. Checklist — the "what's inside" points on a book page
   ========================================================================== */
.checklist { margin-top: 1.6rem; display: grid; gap: 0.9rem; }
.checklist li {
  position: relative; padding-left: 2.1rem;
  color: var(--ink-muted); font-size: var(--t-body); line-height: 1.55;
}
.checklist li::before {
  content: ""; position: absolute; left: 0; top: 0.28em;
  width: 1.25rem; height: 1.25rem; border-radius: 50%;
  border: 2px solid var(--orange);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23EC6A54' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E")
              center / 62% 62% no-repeat;
}

/* Attribution under a pull quote */
.pullquote cite {
  display: block; margin-top: 1.5rem;
  font-style: normal; font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--sky);
}
.pullquote cite em { font-style: italic; text-transform: none; letter-spacing: 0.02em; }

/* ==========================================================================
   36. Ambient compass — the rotating mark, as a section-level texture
   --------------------------------------------------------------------------
   Add `section--spin` to any band and it gets a slowly turning compass behind
   the content. The placement modifiers keep it from reading as a repeat when
   several sections on one page use it.
   ========================================================================== */
.section--spin { position: relative; overflow: hidden; isolation: isolate; }
.section--spin::before {
  content: ""; position: absolute; z-index: -1; pointer-events: none;
  width: min(560px, 58vw); aspect-ratio: 1;
  background: url("../img/mark-orange.svg") center / contain no-repeat;
  opacity: 0.09;
  animation: markspin 120s linear infinite;
  transform-origin: 50% 50%;
}

/* On dark grounds the orange mark needs a little more presence */
.band-dark.section--spin::before,
.band-deep.section--spin::before { opacity: 0.16; }
.band-soft.section--spin::before { opacity: 0.06; }

/* Placement — vary these down a page */
.section--spin::before          { right: -12%; top: 50%; translate: 0 -50%; }
.spin-at--tr::before            { right: -14%; top: -22%; translate: 0 0; }
.spin-at--br::before            { right: -14%; bottom: -26%; top: auto; translate: 0 0; }
.spin-at--l::before             { left: -14%; right: auto; top: 50%; translate: 0 -50%; }
.spin-at--tl::before            { left: -16%; right: auto; top: -20%; translate: 0 0; }
.spin-at--bl::before            { left: -16%; right: auto; bottom: -24%; top: auto; translate: 0 0; }

/* Speed and direction */
.spin-slow::before    { animation-duration: 190s; }
.spin-fast::before    { animation-duration: 70s; }
.spin-rev::before     { animation-direction: reverse; }

@media (prefers-reduced-motion: reduce) { .section--spin::before { animation: none; } }

/* A quote given room to breathe below a block of content */
.quote--wide {
  max-width: 62ch; margin-top: clamp(2.5rem, 5vw, 3.5rem);
  padding-block: 0.4rem;
}

/* Named concepts carry weight inside a checklist item */
.checklist strong { color: var(--ink); font-weight: var(--w-sub); }

/* Show artwork on an item page — the same cover on every episode, so it sits
   small and centered rather than filling the column. */
.article__cover--art {
  display: grid; place-items: center;
  background: var(--paper-soft);
  padding: clamp(1.5rem, 3vw, 2.5rem);
}
.article__cover--art img {
  width: clamp(150px, 24vw, 240px); height: auto;
  border-radius: 10px;
  box-shadow: 0 18px 34px -22px rgba(31, 33, 68, 0.55);
}

/* ==========================================================================
   37. Break band — a short dark beat between two light sections
   ========================================================================== */
.breakband {
  position: relative; overflow: hidden; isolation: isolate;
  background: var(--navy); color: var(--on-dark);
  padding-block: clamp(2.75rem, 5.5vw, 4.25rem);
  text-align: center;
}
.breakband p {
  max-width: 40ch; margin-inline: auto;
  font-weight: var(--w-sub); line-height: 1.35; letter-spacing: -0.01em;
  font-size: clamp(1.15rem, 0.95rem + 1vw, 1.7rem);
  text-wrap: balance;
}
.breakband::after {
  content: ""; display: block; width: 38px; height: 3px; border-radius: 2px;
  background: var(--orange); margin: clamp(1.1rem, 2vw, 1.5rem) auto 0;
}

/* ==========================================================================
   38. Course cards — text-led, echoing the numbered rows on the homepage
   ========================================================================== */
.coursecard {
  display: flex; flex-direction: column; height: 100%;
  padding: clamp(1.6rem, 2.6vw, 2.2rem);
  border-radius: var(--radius);
  border: 1px solid var(--dark-line);
  background: rgba(255, 255, 255, 0.045);
}
.coursecard__n {
  display: grid; place-items: center; flex: none;
  width: clamp(48px, 4.5vw, 60px); aspect-ratio: 1; border-radius: 50%;
  border: 1px solid var(--dark-line);
  font-weight: var(--w-title); font-size: var(--t-small);
  letter-spacing: 0.1em; color: var(--sky);
  margin-bottom: 1.4rem;
}
.coursecard__for {
  font-size: var(--t-micro); font-weight: var(--w-title);
  text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--orange); margin-bottom: 0.5rem;
}
.coursecard h3 {
  font-size: var(--t-h4); text-transform: uppercase;
  letter-spacing: 0.01em; line-height: 1.1; color: var(--white);
}
.coursecard p:not(.coursecard__for) {
  margin-top: 0.75rem; font-size: var(--t-small); color: var(--on-dark-muted);
}
