/* =====================================================
   Dr. Atiakshev - editorial expert site
   Cream paper · graphite ink · wine accent · serif-forward
   ===================================================== */

/* ----------  TOKENS  ---------- */
:root{
  /* palette - warm cream paper, graphite ink, wine accent */
  --paper:     #f5f1ea;
  --paper-2:   #ede7db;          /* subtle warmer panel */
  --ink:       #1a1814;          /* graphite - warmer than black */
  --ink-dim:   #5a534a;
  --ink-mute:  #69625a;
  --ink-eyebrow: #4b463c;        /* darker eyebrow text — passes WCAG AA at 12pt */
  --rule:      rgba(26,24,20,.14);
  --rule-soft: rgba(26,24,20,.08);
  --wine:      #6b2b36;          /* personal brand color */
  --wine-2:    #4d1d27;          /* darker hover */
  --wine-tint: rgba(107,43,54,.08);
  --wine-accent: #cf9ba4;        /* desaturated wine tint for kickers/markers on dark */

  /* type */
  --serif:     'Source Serif 4', 'Source Serif 4 Fallback', 'Source Serif Pro', Charter, 'Iowan Old Style', 'Hoefler Text', Georgia, serif;
  --sans:      'Manrope', 'Manrope Fallback', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --mono:      'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* scale - generous, editorial */
  --fs-xs:   12px;
  --fs-sm:   14px;
  --fs-md:   clamp(16px, .4vw + 14px, 17px);
  --fs-lg:   clamp(18px, .6vw + 16px, 22px);
  --fs-xl:   clamp(22px, 1vw + 18px, 28px);
  --fs-h3:   clamp(22px, 1.1vw + 18px, 32px);
  --fs-h2:   clamp(34px, 3.6vw + 16px, 76px);
  --fs-h1:   clamp(42px, 6vw, 96px);

  /* space */
  --pad-x:   clamp(22px, 5vw, 72px);
  --sec-y:   clamp(80px, 12vh, 140px);
  --meas:    68ch;              /* long-form reading measure */

  /* containers — single source of truth for layout max-widths */
  --container:        1440px;   /* default editorial cap (hero, page-head, foot) */
  --container-wide:   1480px;   /* sec-head: slightly wider for breathing room */
  --container-narrow: 980px;    /* long-form article body */
  --container-prose:  720px;    /* legal / static page prose */

  /* motion */
  --ease:    cubic-bezier(.22,.65,.26,1);
  --ease-io: cubic-bezier(.65,.05,.35,1);

  /* ============================================================
     RESPONSIVE BREAKPOINTS - documentation (CSS vars cannot be
     used inside @media; values must be hardcoded in queries).
     Mobile-last (max-width) is the existing convention; do not
     mix with min-width without testing the cascade.

     --bp-xs   380px   iPhone SE (1st gen, mini)
     --bp-sm   480px   Standard small phone
     --bp-md   640px   Large phone (iPhone 12-15 Pro Max)
     --bp-lg   820px   Tablet portrait (iPad mini, iPad)
     --bp-xl  1080px   Tablet landscape, small laptop
     --bp-2xl 1280px   MacBook Air 13" (1280-1440 range)
     --bp-3xl 1536px   MacBook Pro 14"/16" (1512-1728)
     --bp-4xl 1920px   Desktop / external monitor (1920-2560)
     ============================================================ */
}

/* ----------  SELF-HOSTED FONTS (GDPR: no third-party Google Fonts)  ----------
   Latin subset only. WOFF2. font-display: swap so first paint never blocks. */

/* Manrope - sans body */
@font-face{ font-family:'Manrope'; font-style:normal; font-weight:300; font-display:swap;
  src:url('/fonts/manrope-latin-300-normal.woff2') format('woff2'); }
@font-face{ font-family:'Manrope'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/manrope-latin-400-normal.woff2') format('woff2'); }
@font-face{ font-family:'Manrope'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/manrope-latin-500-normal.woff2') format('woff2'); }
@font-face{ font-family:'Manrope'; font-style:normal; font-weight:600; font-display:swap;
  src:url('/fonts/manrope-latin-600-normal.woff2') format('woff2'); }
@font-face{ font-family:'Manrope'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/manrope-latin-700-normal.woff2') format('woff2'); }

/* Source Serif 4 - serif headings + editorial body */
@font-face{ font-family:'Source Serif 4'; font-style:normal; font-weight:300; font-display:swap;
  src:url('/fonts/source-serif-4-latin-300-normal.woff2') format('woff2'); }
@font-face{ font-family:'Source Serif 4'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/source-serif-4-latin-400-normal.woff2') format('woff2'); }
@font-face{ font-family:'Source Serif 4'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/source-serif-4-latin-500-normal.woff2') format('woff2'); }
@font-face{ font-family:'Source Serif 4'; font-style:italic; font-weight:300; font-display:swap;
  src:url('/fonts/source-serif-4-latin-300-italic.woff2') format('woff2'); }
@font-face{ font-family:'Source Serif 4'; font-style:italic; font-weight:400; font-display:swap;
  src:url('/fonts/source-serif-4-latin-400-italic.woff2') format('woff2'); }
@font-face{ font-family:'Source Serif 4'; font-style:italic; font-weight:500; font-display:swap;
  src:url('/fonts/source-serif-4-latin-500-italic.woff2') format('woff2'); }

/* JetBrains Mono - editorial mono numerals */
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/jetbrains-mono-latin-400-normal.woff2') format('woff2'); }
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/jetbrains-mono-latin-500-normal.woff2') format('woff2'); }

/* ----------  FONT METRIC OVERRIDES (kill CLS on swap)  ----------
   Arial/Georgia-based fallbacks with metrics adjusted so swap does not
   shift layout. Manrope values from web.dev/fontaine. */
@font-face{
  font-family:'Manrope Fallback';
  src:local('Arial'), local('Helvetica');
  size-adjust:100.06%;
  ascent-override:92%;
  descent-override:25%;
  line-gap-override:0%;
}
@font-face{
  font-family:'Source Serif 4 Fallback';
  src:local('Georgia'), local('Times New Roman');
  size-adjust:99.5%;
  ascent-override:92%;
  descent-override:24%;
  line-gap-override:0%;
}

/* ----------  RESET / BASE  ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
html{
  -webkit-text-size-adjust:100%;
  scroll-padding-top:96px;
  scroll-behavior:smooth;
}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:var(--fs-md);
  line-height:1.65;
  font-feature-settings:'ss01','cv11';
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg{ display:block; max-width:100%; }
/* HTML width/height attrs (added for CLS) are aspect-ratio hints only -
   never literal pixel heights. Without this rule, the HTML height attr
   blocks CSS `aspect-ratio` (e.g. .about-mag__portrait img stretched to 1360px). */
:where(img[width][height]){ height:auto; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
ol,ul{ list-style:none; margin:0; padding:0; }
p{ margin:0; }
::selection{ background:var(--wine); color:var(--paper); }
:focus-visible{ outline:2px solid var(--wine); outline-offset:4px; border-radius:2px; }

/* ----------  SKIP LINK  ---------- */
.skip-link{
  position:absolute;
  top:-100px;
  left:16px;
  background:var(--ink);
  color:var(--paper);
  padding:12px 20px;
  text-decoration:none;
  font-family:var(--sans);
  font-size:var(--fs-sm);
  font-weight:500;
  border-radius:4px;
  z-index:9999;
  transition:top .15s ease;
}
.skip-link:focus{
  top:16px;
  outline:2px solid var(--wine);
  outline-offset:2px;
}

/* ----------  NAV  ---------- */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:50;
  color:var(--ink);
  background:linear-gradient(to bottom, rgba(245,241,234,.92), rgba(245,241,234,.78) 60%, rgba(245,241,234,0));
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  transition:background .4s var(--ease), border-color .4s;
}
.nav.is-solid{
  background:rgba(245,241,234,.96);
  border-bottom:1px solid var(--rule-soft);
}
.nav__inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:24px;
  padding:18px var(--pad-x);
}
.nav__mark{
  display:inline-flex; align-items:center;
  flex:0 0 auto;
  color:var(--ink);
  transition:opacity .25s;
}
.nav__mark:hover{ opacity:.7; }
.nav__mark img{
  display:block;
  height:36px;
  width:auto;
  max-width:100%;
}
@media (max-width:600px){
  .nav__mark img{ height:30px; }
}
.nav__links{
  display:flex; gap:clamp(16px, 2.2vw, 34px);
  flex:1 1 auto;
  justify-content:center;
  min-width:0;
}
.nav__links a{
  position:relative;
  font-size:14px; letter-spacing:-.005em; font-weight:500;
  color:var(--ink-dim);
  transition:color .25s;
  padding:6px 0;
  white-space:nowrap;   /* keep "Free checklist" on one line in the 821-1080 band */
}
.nav__links a::after{
  content:''; position:absolute; left:0; right:0; bottom:2px;
  height:1px; background:var(--ink);
  transform:scaleX(0); transform-origin:left;
  transition:transform .35s var(--ease);
}
.nav__links a:hover{ color:var(--ink); }
.nav__links a:hover::after{ transform:scaleX(1); }
.nav__links a.is-active{ color:var(--ink); }
.nav__links a.is-active::after{ transform:scaleX(1); }
/* Secondary CTA: demoted from filled wine pill to a wine outline so the hero's
   filled "Get the free checklist" is the single primary action site-wide
   (Month-1 funnel = checklist first, course training second). Wine text on
   paper is 9.22:1 (AA). Palette frozen: same wine token, outline instead of fill. */
.nav__cta{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:44px;                         /* WCAG 2.5.5 touch target */
  padding:11px 20px;
  font-size:13.5px; font-weight:500; letter-spacing:-.005em;
  color:var(--wine); background:transparent;
  border:1px solid var(--wine);
  border-radius:999px;
  white-space:nowrap;   /* "Train with Dr. Atiakshev" stays single-line; pill grows instead of wrapping */
  transition:background .3s var(--ease), color .3s var(--ease), transform .3s var(--ease);
}
.nav__cta:hover{ background:var(--wine); color:var(--paper); transform:translateY(-1px); }

.nav__burger{
  display:none;
  width:44px; height:44px;
  min-width:44px; min-height:44px;
  border-radius:50%;
  border:1px solid var(--rule); position:relative;
}
.nav__burger span{
  position:absolute; left:11px; right:11px; height:1.3px; background:var(--ink);
  transition:transform .3s var(--ease);
}
.nav__burger span:nth-child(1){ top:18px; }
.nav__burger span:nth-child(2){ top:24px; }
.nav__burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(3px) rotate(45deg); }
.nav__burger[aria-expanded="true"] span:nth-child(2){ transform:translateY(-3px) rotate(-45deg); }

.mobile-menu{
  position:fixed; inset:0; z-index:45;
  background:var(--paper);
  display:flex; flex-direction:column; justify-content:space-between;
  padding:96px var(--pad-x) 40px;
  transform:translateY(-100%);
  transition:transform .55s var(--ease-io);
  visibility:hidden;
}
.mobile-menu.is-open{ transform:translateY(0); visibility:visible; }
.mobile-menu nav{ display:flex; flex-direction:column; gap:6px; }
.mobile-menu nav a{
  font-family:var(--serif); font-size:clamp(36px,10vw,60px);
  font-weight:400; letter-spacing:-.02em; line-height:1;
  padding:10px 0; border-bottom:1px solid var(--rule-soft);
  color:var(--ink);
}
.mobile-menu__foot{ display:flex; flex-direction:column; gap:6px; color:var(--ink-dim); font-size:15px; }

/* ----------  SUB-PAGE HEADER  ---------- */
.page-head{
  padding:clamp(140px,20vh,220px) var(--pad-x) clamp(48px,7vh,96px);
  border-bottom:1px solid var(--rule);
  max-width:1440px; margin:0 auto;
}
.page-head__tag{
  display:inline-block;
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-eyebrow);
  margin-bottom:24px;
}
.page-head__title{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(44px, 7vw, 120px);
  line-height:.98;
  letter-spacing:-.028em;
  color:var(--ink);
  max-width:22ch;
  text-wrap:balance;            /* Sprint 12: prevent orphan on 2-line page titles */
  overflow-wrap:break-word;     /* Sprint 12: safety net for long unbreakable strings */
  hyphens:auto;                 /* Sprint 12: graceful wrap on tiny viewports */
}
.page-head__lede{
  margin:clamp(22px, 3vh, 40px) 0 0;
  font-size:clamp(18px, 1vw + 14px, 22px);
  line-height:1.5;
  color:var(--ink-dim);
  /* Sprint #4.1: 58ch → 72ch - lede больше не isolated в левой колонке на широких viewports (1440+), upper-comfortable readability preserved */
  max-width:72ch;
  text-wrap:pretty;             /* Sprint 12: avoid single-word last lines */
}
.page-head__lede em{ font-style:italic; font-family:var(--serif); color:var(--ink); }

.page-head__tags{
  display:flex; flex-wrap:wrap; gap:10px;
  margin:clamp(22px, 3vh, 36px) 0 0;
}
.page-head__tags li{
  padding:7px 14px;
  border:1px solid var(--rule);
  border-radius:999px;
  background:var(--paper);
  font-size:12.5px; letter-spacing:-.005em; font-weight:500;
  color:var(--ink-dim);
  transition:background .25s, border-color .25s, color .25s;
}
.page-head__tags li:hover{
  background:var(--wine-tint);
  border-color:var(--wine-tint);
  color:var(--wine);
}

/* content block */
.page-body{
  padding:clamp(60px,10vh,120px) var(--pad-x);
  max-width:1440px; margin:0 auto;
}

/* ----------  HERO  ---------- */
.hero{
  min-height:100svh;
  padding:clamp(80px,10vh,108px) var(--pad-x) clamp(20px,2.6vh,32px);
  display:grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  /* Sprint #4: убран пустой 1fr row между support и sig - portrait теперь match vertical extent text content (eyebrow→sig), а 1fr перенесён ПОСЛЕ sig для прижатия foot к низу */
  grid-template-rows: auto auto auto auto auto 1fr auto;
  grid-template-areas:
    "eyebrow portrait"
    "thesis  portrait"
    "support portrait"
    "cta     portrait"
    "sig     portrait"
    ".       ."
    "foot    foot";
  column-gap: clamp(28px, 4vw, 72px);
  row-gap: clamp(12px, 1.6vh, 18px);
  overflow:hidden;
}
.hero__eyebrow{
  grid-area:eyebrow;
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-eyebrow);
  display:flex; gap:12px; align-items:center;
}
.hero__thesis{
  grid-area:thesis;
  margin:0;
  font-family:var(--serif);
  font-weight:300;
  font-size:var(--fs-h1);
  line-height:.98;
  letter-spacing:-.035em;
  color:var(--ink);
  align-self:end;
  font-variation-settings:"opsz" 144, "SOFT" 0;
  -webkit-font-smoothing:antialiased;
  max-width:14ch;
  text-wrap:balance;            /* Sprint 12: better hero line breaks */
  overflow-wrap:break-word;
}

.hero__support{
  grid-area:support;
  margin:0;
  max-width:60ch;
  font-family:var(--sans);
  font-size:clamp(16px, .35vw + 13px, 18px);
  line-height:1.5;
  color:var(--ink-dim);
  font-weight:400;
  display:flex;
  flex-direction:column;
  gap:.85em;                    /* breathing room between audience / principle / proof paragraphs */
}
.hero__support p{
  margin:0;
  text-wrap:pretty;             /* Sprint 12 */
}
.hero__support em{
  font-style:italic;
  color:var(--ink);
}
/* v6.3: patient/clinician router note set apart from the prose above (no color change; --ink-dim keeps 6.73:1) */
.hero__audience{
  margin-top:.2em;
  padding-top:1em;
  border-top:1px solid var(--rule-soft);
  font-size:.9em;
  line-height:1.5;
}
.hero__thesis .line{ display:block; overflow:hidden; padding:.04em 0 .18em; }
.hero__thesis .reveal{ display:inline-block; }
.hero__thesis em{ font-style:italic; color:var(--ink); }

.hero__cta{
  grid-area:cta;
  display:flex; flex-direction:column; align-items:flex-start;
  gap:10px;
  padding-top:clamp(16px,2.2vh,26px);
}
.hero__cta-note{
  font-family:var(--sans);
  font-size:13px; line-height:1.4; letter-spacing:.005em;
  color:var(--ink-mute);
  max-width:46ch;
}

.hero__sig{
  grid-area:sig;
  display:flex; flex-wrap:wrap; gap:6px 14px; align-items:baseline;
  padding-top:clamp(24px,4vh,48px);
  border-top:1px solid var(--rule);
  font-size:12.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-dim);
}
/* Name promoted to a serif signature line that takes its own row -
   gives clear hierarchy and prevents awkward 2-line wrap of creds. */
.sig__name{
  flex-basis:100%;
  font-family:var(--serif);
  font-size:clamp(16px, .35vw + 14px, 20px);
  font-weight:500;
  letter-spacing:-.005em;
  text-transform:none;
  color:var(--ink);
  line-height:1.2;
  margin-bottom:4px;
}
.sig__name + .sig__sep{ display:none; }    /* hide separator that would otherwise lead the creds row */
.sig__sep{ color:var(--ink-mute); }
.sig__cred{ color:var(--ink-dim); }

.hero__foot{
  grid-area:foot;
  display:flex; align-items:center; gap:clamp(16px,3vw,40px);
  font-size:12px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-mute);
}
/* Credentials verification strip: the strongest verifiable facts pulled out of
   the hero prose into a scannable row. Hairline separators (not dots) read as a
   spec line, which leans clinical. Palette frozen: same ink/wine tokens. */
.hero__verify{
  list-style:none; margin:0; padding:0;
  gap:0; flex-wrap:wrap; row-gap:8px;
}
.hero__verify li{ display:flex; align-items:center; }
.hero__verify li:not(:first-child){
  margin-left:clamp(16px,3vw,40px);
}
.hero__verify li:not(:first-child)::before{
  content:''; align-self:center;
  width:1px; height:11px; margin-right:clamp(16px,3vw,40px);
  background:var(--rule);
}
.hero__verify a{
  color:var(--ink-dim);
  text-decoration:none;
  border-bottom:1px solid var(--rule);
  padding-bottom:1px;
  transition:color .25s var(--ease), border-color .25s var(--ease);
}
.hero__verify a:hover{ color:var(--wine); border-color:var(--wine); }
/* Mobile: stack credentials vertically so the hairline separator never orphans
   at the start of a wrapped row. Centered to match the mobile sig above. */
@media (max-width:640px){
  .hero__verify{ flex-direction:column; align-items:center; row-gap:10px; }
  .hero__verify li:not(:first-child){ margin-left:0; }
  .hero__verify li:not(:first-child)::before{ display:none; }
}

.hero__portrait{
  grid-area:portrait;
  margin:0;
  position:relative;
  align-self:stretch;
  min-height:clamp(320px, 56vh, 720px);
  aspect-ratio:3/4;                 /* lock space pre-image to prevent CLS */
  overflow:hidden;
  border-radius:14px;               /* quiet-premium: subtle modern corners */
  background:var(--paper-2);
  contain:layout paint;             /* isolate hero from later paints */
}
.hero__portrait img{
  width:100%; height:100%;
  object-fit:cover;
  object-position:38% 22%;
  filter:grayscale(.08) contrast(1.02);
  transform:scale(1.04);
  transition:transform 1.8s var(--ease), filter 1s;
  will-change:transform;
}
.hero__portrait:hover img{ transform:scale(1.1); filter:grayscale(0) contrast(1.04); }
.hero__loc{ margin-left:auto; }

/* ----------  INTRO + PORTRAIT  ---------- */
.intro{
  padding:clamp(60px,8vh,100px) var(--pad-x) var(--sec-y);
  display:block;
  border-top:1px solid var(--rule);
}
.intro__body{ display:flex; flex-direction:column; gap:clamp(22px, 3vh, 36px); text-align:center; }  /* Sprint 13.3: centered composition above full-width stats row */
.intro__tag{
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute); margin:0;
  text-align:center;
}
.intro__lede{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(24px, 2.2vw + 10px, 42px);
  line-height:1.15; letter-spacing:-.02em;
  color:var(--ink);
  max-width:28ch;
  margin-inline:auto;
  text-wrap:balance;
}
.intro__lede em{ font-style:italic; color:var(--wine); }
.intro__body-text{
  font-size:var(--fs-lg);
  line-height:1.55;
  color:var(--ink-dim);
  max-width:64ch;
  margin-inline:auto;
  text-wrap:pretty;
}
.intro__body-text em{ font-style:italic; color:var(--ink); font-family:var(--serif); }

.intro__stats{
  margin:clamp(20px,2.4vh,32px) 0 0;
  display:grid; grid-template-columns:repeat(3, 1fr);
  column-gap:clamp(20px,3vw,56px);
  row-gap:8px;
  padding-top:clamp(22px,3vh,32px);
  border-top:1px solid var(--rule);
  font-variant-numeric:tabular-nums;
}
.intro__stats > div{ display:flex; flex-direction:column; gap:6px; align-items:center; text-align:center; }
.intro__stats dt{
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-mute);
  order:2;
  white-space:nowrap;
}
.intro__stats dd{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(30px, 1.6vw + 20px, 42px);
  line-height:1; letter-spacing:-.02em;
  color:var(--ink);
  order:1;
}
.intro__stats dd.intro__stats-hint{
  order:3;
  font-family:var(--sans); font-weight:500;
  font-size:12px; line-height:1.3; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-mute);
  margin-top:2px;
  white-space:nowrap;
}
.intro__stats-hint a{
  color:var(--ink-mute);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-thickness:1px;
  transition:color .3s var(--ease);
}
.intro__stats-hint a:hover,
.intro__stats-hint a:focus-visible{ color:var(--wine); }

/* ----------  SECTION HEADS  ---------- */
.sec-head{
  /* Sprint 12.3: .sec-head is rendered as a child of section wrappers
     (.philosophy / .cases / .writing / .patents / .teaching / .contact)
     which already apply horizontal --pad-x. Adding pad-x here too caused
     a one-padding-unit indent vs. the list/grid below — heading sat to
     the right of its own content list. Removed horizontal padding;
     parent provides gutter. max-width pinned to --container so the
     measure matches .pillars / .articles / .case-list / .teaching__grid. */
  margin:0 auto clamp(56px, 8vh, 96px);
  max-width:var(--container);
  padding-top:var(--sec-y);
}
.sec-head--center{ text-align:center; }   /* Sprint 13.9: full center alignment (tag + title + lede) */
.sec-head--center .sec-head__lede{ margin-left:auto; margin-right:auto; }
.sec-head__tag{
  display:inline-block;
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-eyebrow);
  margin-bottom:28px;
}
.sec-head__title{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:var(--fs-h2);
  line-height:1;
  letter-spacing:-.022em;
  color:var(--ink);
  max-width:26ch;  /* Sprint 10 Phase D: was 18ch; let longer H2s fit on one line at desktop */
  text-wrap:balance;            /* Sprint 12: prevent orphans on 2-line section heads */
  overflow-wrap:break-word;
  hyphens:auto;
}
.sec-head--center .sec-head__title{ margin-left:auto; margin-right:auto; }
.sec-head__lede{
  margin:24px 0 0;
  font-size:var(--fs-lg);
  line-height:1.55;
  color:var(--ink-dim);
  max-width:58ch;
  text-wrap:pretty;             /* Sprint 12: avoid orphans in section lede */
}

/* ----------  PHILOSOPHY  ---------- */
.philosophy{
  padding:0 var(--pad-x) var(--sec-y);
  border-top:1px solid var(--rule);
}
.philosophy:has(> .pull-quote:last-child){
  padding-bottom:clamp(36px, 5vh, 64px);   /* Sprint 14.19: pull-quote provides own visual closure - section padding-bottom can be halved when it's the last child */
}
.pillars{
  /* Sprint #4: 2x2 grid (was: flex column). Two <ol class="pillars"> separated
     by <figure> render visually as 2x2 with a breaker between rows. */
  list-style:none;
  padding:0;
  max-width:1400px; margin:0 auto;
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:clamp(32px, 4vw, 64px);
}
@media (max-width: 768px){
  .pillars{
    grid-template-columns:1fr;
    gap:clamp(40px, 6vh, 64px);
  }
}
.pillar{
  display:flex;
  flex-direction:column;
  gap:clamp(14px, 1.6vh, 22px);
  padding:clamp(36px,5vh,64px) 0;
  border-bottom:1px solid var(--rule-soft);
}
.pillar:last-child{ border-bottom:0; }

/* Sprint v5/W3: home "Four ideas" reads as a vertical ledger (title left,
   explanation right) instead of a 2x2 grid - so it no longer rhymes with the
   approach page's pillar grid, and it borrows the about page's chapter rhythm.
   Scoped to the home <ol> only; approach.html keeps its 2x2. */
.pillars--stack{
  grid-template-columns:1fr;
  max-width:1180px;
  gap:0;
}
.pillars--stack .pillar{ padding:clamp(28px,4vh,48px) 0; }
.pillars--stack .pillar__body{
  display:grid;
  grid-template-columns:minmax(0, .82fr) minmax(0, 1.18fr);
  gap:clamp(20px, 4vw, 72px);
  align-items:baseline;
}
.pillars--stack .pillar__title{
  margin:0;
  font-size:clamp(22px, 1.2vw + 13px, 32px);
  line-height:1.12;
}
@media (max-width:768px){
  .pillars--stack .pillar__body{ grid-template-columns:1fr; gap:10px; }
}
.pillar__num{
  font-family:var(--mono); font-style:normal; font-weight:500;
  font-feature-settings:'tnum';
  font-size:clamp(14px, .4vw + 10px, 16px);
  letter-spacing:.18em;
  color:var(--wine);
  text-transform:uppercase;
}
.pillar__body{ }
.pillar__title{
  margin:0 0 18px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(26px, 2.4vw + 10px, 48px);
  line-height:1.08; letter-spacing:-.024em;
  color:var(--ink);
  text-indent:-.04em;  /* Sprint 11: optical kerning compensation — align serif first-glyph with mono .pillar__num */
  text-wrap:balance;            /* Sprint 12 */
  overflow-wrap:break-word;
}
.pillar__title em{ font-style:italic; }
.pillar__body p{
  font-size:var(--fs-lg);
  line-height:1.55;
  color:var(--ink-dim);
}

/* ----------  CASES  ---------- */
.cases{ padding:0 var(--pad-x) var(--sec-y); border-top:1px solid var(--rule); }
.case-list{ max-width:1440px; margin:0 auto; }  /* Sprint #4.2: border-top убран - parity с .article-archive (same .page-head + .page-body + list double-rule pattern на cases.html) */
.case-row{
  display:grid;
  grid-template-columns: 48px minmax(0,1fr) 220px;
  gap:clamp(16px,1.6vw,32px);  /* Sprint 13.4: tighter idx-to-title gap; was 20-56px clamp creating ~100px visual gulf at 1440 */
  align-items:baseline;
  padding:clamp(26px,4vh,44px) 0;
  border-bottom:1px solid var(--rule-soft);
  position:relative;
}
.case-row::after{
  content:''; position:absolute; right:0; top:50%;
  width:18px; height:18px; margin-top:-9px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a1814' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M13 5l7 7-7 7'/></svg>") no-repeat center/contain;
  opacity:0; transform:translateX(-8px);
  transition:opacity .35s, transform .4s var(--ease);
}
.case-row:hover::after{ opacity:.6; transform:translateX(0); }
.case-row:hover .case-row__title{ color:var(--wine); }
.case-row__idx{
  font-family:var(--mono); font-size:13px; color:var(--ink-mute);
  padding-top:8px;
}
.case-row__title{
  margin:0 0 10px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.6vw + 14px, 34px);
  line-height:1.12; letter-spacing:-.022em;
  color:var(--ink);
  transition:color .35s;
}
.case-row__title em{ font-style:italic; }
.case-row__text{
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:56ch;
}
.case-row__tag{
  font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
  text-align:right;
  padding-top:12px;
}

.more-link{
  display:inline-flex; align-items:center; gap:10px;
  margin:clamp(32px,5vh,56px) auto 0;
  padding-left: 0;
  font-family:var(--sans); font-style:normal; font-weight:600;
  font-size:18px; color:var(--wine);
  border-bottom:1px solid transparent;
  transition:gap .3s var(--ease), border-color .3s;
}
.more-link:hover{ gap:16px; border-color:var(--wine); }
.more-link svg{ transition:transform .3s var(--ease); }
.more-link:hover svg{ transform:translateX(2px); }

.cases > .more-link,
.writing > .more-link{
  display:flex; justify-content:center;
}

/* ----------  WRITING / ARTICLES  ---------- */
.writing{ padding:0 var(--pad-x) var(--sec-y); border-top:1px solid var(--rule); }
.articles{
  max-width:1440px; margin:0 auto;
  display:grid; grid-template-columns:repeat(2, 1fr);
  gap:clamp(32px,4vw,72px);
  border-top:1px solid var(--rule);
  padding-top:clamp(40px,6vh,80px);
}
.article{ display:flex; flex-direction:column; gap:16px; }
/* Sprint v5/W3: lead essay runs full width with a larger title; the two
   secondaries sit side-by-side below. Editorial hierarchy instead of three
   equal columns (which read as a generic card grid). */
.article--featured{
  grid-column:1 / -1;
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:clamp(20px,3vw,56px);
  align-items:start;
  padding-bottom:clamp(28px,4vh,44px);
  border-bottom:1px solid var(--rule-soft);
}
.article--featured .article__head{ display:flex; flex-direction:column; gap:16px; }
.article--featured .article__title{ font-size:clamp(30px, 2.2vw + 18px, 46px); line-height:1.08; }
.article--featured .article__sub{ font-size:var(--fs-md); max-width:52ch; }
@media (max-width:820px){
  .article--featured{ grid-template-columns:1fr; gap:16px; }
}
.article__meta{
  display:flex; gap:14px; align-items:center;
  font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
}
.article__meta time{ color:var(--wine); }
.article__title{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.2vw + 16px, 30px);
  line-height:1.15; letter-spacing:-.02em;
}
.article__title a{
  color:var(--ink);
  transition:color .3s;
  background-image:linear-gradient(var(--wine), var(--wine));
  background-size:0 1px; background-repeat:no-repeat;
  background-position:0 100%;
  transition:background-size .5s var(--ease), color .3s;
}
.article__title a:hover{ color:var(--wine); background-size:100% 1px; }
.article__title em{ font-style:italic; }
.article__sub{
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:50ch;
}
.article__sub em{ font-style:italic; font-family:var(--serif); color:var(--ink); }

/* ----------  PATENTS  ---------- */
.patents{ padding:0 var(--pad-x) var(--sec-y); border-top:1px solid var(--rule); }
.patent-list{
  max-width:1400px; margin:0 auto;
  border-top:1px solid var(--rule);
}
.patent{
  display:grid;
  grid-template-columns: 70px minmax(0,1fr) 200px;
  gap:clamp(20px,3vw,56px);
  align-items:baseline;
  padding:clamp(26px,4vh,40px) 0;
  border-bottom:1px solid var(--rule-soft);
}
.patent:last-child{ border-bottom:0; }
.patent__num{
  font-family:var(--mono); font-style:normal; font-weight:500;
  font-feature-settings:'tnum';
  font-size:20px; color:var(--wine);
  padding-top:6px;
}
.patent__chip{
  display:inline-block;
  margin:0 0 10px;
  padding:4px 10px;
  border-radius:999px;
  background:var(--wine-tint);
  color:var(--wine);
  font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  font-weight:500;
}
.patent__title{
  margin:0 0 10px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px, 1.1vw + 14px, 26px);
  line-height:1.2; letter-spacing:-.02em;
  color:var(--ink);
}
.patent__desc{
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:60ch;
}
.patent__id{
  font-family:var(--mono); font-size:12px;
  color:var(--ink-mute);
  padding-top:8px;
  text-align:right;
  letter-spacing:.02em;
}

/* ----------  TEACHING (bridge)  ---------- */
.teaching{
  padding:0 var(--pad-x) var(--sec-y);
  border-top:1px solid var(--rule);
  background:
    radial-gradient(ellipse at 50% 0%, rgba(107,43,54,.06), transparent 50%);
}
.teaching__grid{
  max-width:1440px; margin:0 auto;
  display:grid; grid-template-columns:repeat(3, 1fr);
  gap:clamp(20px,2vw,32px);
}
.teaching__card{
  padding:clamp(26px,3vw,40px);
  background:var(--paper-2);
  border:1px solid var(--rule-soft);
  border-radius:4px;
  display:flex; flex-direction:column; gap:18px;
  transition:background .4s, border-color .4s, transform .5s var(--ease);
}
.teaching__card:hover{ background:#f0ead9; border-color:var(--rule); transform:translateY(-3px); }
.teaching__card--primary{
  grid-column:1 / -1;
  background:var(--ink);
  color:var(--paper);
  border-color:var(--ink);
}
.teaching__card--primary:hover{ background:#222018; border-color:#222018; }
.teaching__card header{
  display:flex; justify-content:space-between; align-items:center;
  padding-bottom:18px; border-bottom:1px solid var(--rule-soft);
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
}
.teaching__card--primary header{ border-color:rgba(245,241,234,.14); }
.teaching__kicker{ color:var(--wine); }
.teaching__card--primary .teaching__kicker{ color:var(--wine-accent); }
.teaching__meta{ color:var(--ink-mute); }
.teaching__card--primary .teaching__meta{ color:rgba(245,241,234,.55); }
.teaching__card h3{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.6vw + 12px, 34px);
  line-height:1.1; letter-spacing:-.02em;
}
.teaching__card--primary h3{ color:var(--paper); }
.teaching__card p{
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:62ch;
}
.teaching__card--primary p{ color:rgba(245,241,234,.78); }
.teaching__bullets{
  font-size:14px !important;
  line-height:1.85 !important;
  color:rgba(245,241,234,.6) !important;
  max-width:80ch !important;
}

.teaching__cta{
  max-width:760px; margin:clamp(60px,9vh,110px) auto 0;
  text-align:center;   /* Sprint 13.6: CTA card content CENTERED (eyebrow + btn + fine) */
}
.teaching__cta-eyebrow{
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute); margin:0 0 24px;
  text-align:center;
}
.teaching__cta-btn{
  display:inline-flex; align-items:center; gap:14px;
  padding:22px 38px;
  background:var(--wine); color:var(--paper);
  border-radius:999px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px, 1.2vw + 12px, 28px);
  letter-spacing:-.01em;
  transition:background .35s var(--ease), transform .4s var(--ease);
}
.teaching__cta-btn:hover{ background:var(--wine-2); transform:translateY(-2px); }
.teaching__cta-btn svg{ transition:transform .4s var(--ease); }
.teaching__cta-btn:hover svg{ transform:translateX(4px); }
.teaching__cta-fine{
  margin:26px auto 0;    /* Sprint 13.6: centered CTA fine-print under centered btn */
  font-size:13px;
  color:var(--ink-mute);
  max-width:54ch;
  line-height:1.6;       /* v6.3: looser leading for the 8-profession run */
}
/* v6.3: constrain the "For whom" audience paragraph to a readable measure (was ~110ch full-width) */
.teaching-page__audience p{
  max-width:64ch;
  line-height:1.6;
}

/* ----------  CONTACT  ---------- */
.contact{ padding:0 var(--pad-x) var(--sec-y); border-top:1px solid var(--rule); }
.contact-list{
  max-width:1200px; margin:0 auto;
  border-top:1px solid var(--rule);
}
.contact-list li{
  display:grid;
  grid-template-columns: 200px minmax(0, 1fr) minmax(0, 1.1fr);
  gap:clamp(16px,3vw,40px);
  align-items:baseline;
  padding:clamp(22px,3vh,32px) 0;
  border-bottom:1px solid var(--rule-soft);
}
.contact-list__tag{
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-mute);
}
.contact-list li a,
.contact-list li > span:nth-of-type(2){
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px, 1.2vw + 12px, 28px);
  line-height:1.15; letter-spacing:-.015em;
  color:var(--ink);
  transition:color .25s;
}
.contact-list li a:hover{ color:var(--wine); }
.contact-list li p{
  font-size:14px; line-height:1.55;
  color:var(--ink-dim);
}
/* Sprint 13.8: contact cards (bento) - replaces table-style .contact-list on home */
.contact-cards{
  max-width:1200px;
  margin:clamp(40px,5vh,72px) auto 0;
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(16px,1.6vw,24px);
}
.contact-card{
  position:relative;
  display:flex; flex-direction:column;
  gap:clamp(14px,1.6vh,20px);
  padding:clamp(28px,3.2vw,44px);
  background:rgba(255,255,255,.42);
  border:1px solid var(--rule);
  border-radius:18px;
  color:var(--ink);
  text-decoration:none;
  transition:background .35s var(--ease), border-color .35s var(--ease), transform .4s var(--ease);
  cursor:pointer;
}
.contact-card:hover{
  background:rgba(255,255,255,.72);
  border-color:rgba(26,24,20,.32);
  transform:translateY(-2px);
}
.contact-card:focus-visible{
  outline:2px solid var(--wine);
  outline-offset:3px;
}
.contact-card--primary{
  background:linear-gradient(135deg, rgba(107,43,54,.07), rgba(107,43,54,.015));
  border-color:rgba(107,43,54,.20);
}
.contact-card--primary:hover{
  background:linear-gradient(135deg, rgba(107,43,54,.11), rgba(107,43,54,.025));
  border-color:rgba(107,43,54,.36);
}
.contact-card__head{
  display:flex; justify-content:space-between; align-items:center;
  gap:16px;
}
.contact-card__tag{
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-mute);
}
.contact-card--primary .contact-card__tag{ color:var(--wine); }
.contact-card__icon{
  flex-shrink:0;
  color:var(--ink-mute);
  transition:color .35s, transform .4s var(--ease);
}
.contact-card--primary .contact-card__icon{ color:var(--wine); }
.contact-card:hover .contact-card__icon{ transform:translateY(-1px); }
.contact-card__handle{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.5vw + 12px, 32px);
  line-height:1.1; letter-spacing:-.02em;
  color:var(--ink);
  word-break:break-word;
}
.contact-card--primary .contact-card__handle{ color:var(--wine); }
.contact-card__desc{
  margin:0;
  font-size:14px; line-height:1.55;
  color:var(--ink-dim);
}
.contact-card__action{
  margin-top:auto;
  display:inline-flex; align-items:center; gap:8px;
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-mute);
  transition:color .25s, gap .35s var(--ease);
}
.contact-card:hover .contact-card__action{ color:var(--ink); gap:12px; }
.contact-card--primary:hover .contact-card__action{ color:var(--wine); }
.contact-card__action svg{ display:block; }

.contact__fine{
  max-width:700px; margin:clamp(60px,8vh,96px) auto 0;
  font-size:12px; line-height:1.65;
  color:var(--ink-dim);
  text-align:center;
  font-style:normal;
}

/* ----------  FOOTER  ---------- */
.foot{
  margin-top:clamp(60px,8vh,100px);
  border-top:1px solid var(--rule);
  background:var(--paper);
}
.foot__inner{
  padding:clamp(56px, 8vh, 96px) var(--pad-x) clamp(28px, 4vh, 44px);
}
.foot__top{
  display:grid;
  grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr));
  gap:clamp(32px, 4vw, 72px);
  padding-bottom:clamp(48px, 6vh, 72px);
  border-bottom:1px solid var(--rule-soft);
}
.foot__brand{ display:flex; flex-direction:column; gap:18px; max-width:42ch; }
.foot__mark{
  display:inline-flex; align-items:center;
  color:var(--ink);
  transition:opacity .25s;
}
.foot__mark:hover{ opacity:.7; }
.foot__mark img{
  display:block;
  height:48px;
  width:auto;
  max-width:100%;
}
.foot__tag{
  font-size:14px; line-height:1.6;
  color:var(--ink-dim);
}
.foot__col{
  display:flex; flex-direction:column;
  gap:10px;
}
.foot__col h3,
.foot__col h2{
  margin:0 0 10px;
  font-size:12px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-mute);
  font-weight:500;
}
.foot__col a{
  font-family:var(--serif); font-weight:400;
  font-size:17px; letter-spacing:-.01em;
  color:var(--ink);
  display:inline-block;
  transition:color .25s, transform .35s var(--ease);
}
.foot__col a:hover{ color:var(--wine); transform:translateX(8px); }

.foot__bottom{
  margin-top:clamp(28px, 4vh, 44px);
  display:flex; justify-content:space-between; align-items:center;
  gap:24px; flex-wrap:wrap;
  font-size:12px; letter-spacing:.02em;
  color:var(--ink-mute);
}
.foot__thesis{
  font-family:var(--serif); font-size:15px; font-style:italic;
  color:var(--ink-dim);
  letter-spacing:-.005em;
  text-transform:none;
}

/* ====================================================
   SUB-PAGE COMPONENTS
   about-page · cases-page · writing-page · teaching-page
   ==================================================== */

/* ---------- Shared page blocks ---------- */
.about-page__h2{
  margin:0 0 clamp(22px, 3vh, 36px);
  font-family:var(--serif); font-weight:400;
  font-size:clamp(24px, 1.6vw + 14px, 40px);
  line-height:1.04; letter-spacing:-.022em;
}
.about-page__h2 em{ font-style:italic; }

.kv-list{ display:flex; flex-direction:column; gap:4px; }
.kv-list li{
  padding:14px 0;
  border-bottom:1px solid var(--rule-soft);
  font-family:var(--serif); font-weight:400;
  font-size:clamp(17px, .6vw + 14px, 20px);
  letter-spacing:-.01em;
  color:var(--ink);
}
.kv-list--two-col{
  display:grid; grid-template-columns:1fr 1fr;
  column-gap:clamp(24px, 4vw, 64px);
}

.page-cta{
  margin:clamp(80px,12vh,140px) auto 0;
  padding:clamp(48px,6vh,72px) clamp(28px,4vw,56px);
  max-width:780px;
  background:var(--paper-2);
  border-radius:18px;
  text-align:left;  /* Sprint 10: CTA card content LEFT, container still centered */
}
.page-cta__eyebrow{
  margin:0 0 18px;
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute);
  text-align:left;
}
.page-cta__title{
  margin:0 0 20px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(28px, 2.4vw + 14px, 48px);
  line-height:1.04; letter-spacing:-.022em;
  color:var(--ink);
}
.page-cta__title em{ font-style:italic; color:var(--wine); }
.page-cta__text{
  margin:0 0 32px;       /* Sprint 13.10: left-anchored to match eyebrow + title + btn (was auto-centered, drifted right) */
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:54ch;
}
.page-cta__btn{
  display:inline-flex; align-items:center; gap:12px;
  padding:16px 28px;
  background:var(--wine); color:var(--paper);
  border-radius:999px;
  font-family:var(--sans); font-weight:500;
  font-size:15px; letter-spacing:-.005em;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.page-cta__btn:hover{ background:var(--wine-2); transform:translateY(-1px); }
.page-cta__btn svg{ transition:transform .3s var(--ease); }
.page-cta__btn:hover svg{ transform:translateX(3px); }

/* ---------- ABOUT PAGE ---------- */
.about-page__grid{
  display:grid;
  grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
  gap:clamp(40px, 5vw, 96px);
  align-items:start;       /* Sprint 13.11: was stretch - portrait was stretching tall when body had lede+quote, breaking visual proportion */
  margin-bottom:clamp(80px,10vh,120px);
}
.about-page__portrait{ margin:0; position:relative; display:flex; flex-direction:column; }
.about-page__portrait img{
  width:100%;
  flex:1;
  min-height:0;
  object-fit:cover; object-position:center 22%;
  filter:grayscale(.08) contrast(1.02);
  display:block;
  border-radius:8px;
  border-radius:14px;
  background:var(--paper-2);
}
.about-page__portrait figcaption{
  margin-top:14px;
  font-size:12px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-mute);
}
.about-page__body{ display:flex; flex-direction:column; gap:24px; }

/* Sprint 13.13: editorial label rail - tight narrow column for small eyebrow/label, wide content column for prose */
.about-page__split{
  display:grid;
  grid-template-columns: minmax(160px, 200px) minmax(0, 1fr);
  gap:clamp(32px, 4vw, 72px);
  align-items:start;
  margin-bottom:clamp(80px,10vh,120px);
}
.about-page__split-side{ padding-top:6px; }
.about-page__split-main p{
  font-size:var(--fs-lg);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:72ch;
  margin:0;
}
.about-page__split-main p em{ font-style:italic; color:var(--ink); }
.about-page__lede{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.4vw + 12px, 32px);
  line-height:1.2; letter-spacing:-.02em;
  color:var(--ink);
}
.about-page__lede em{ font-style:italic; color:var(--wine); }
.about-page__body p{
  font-size:var(--fs-lg);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:58ch;
}
.about-page__body p.prose-tight{
  max-width:50ch;
  margin-inline:0;  /* Sprint 11: left-anchored to share left edge with eyebrow (was centered) */
}
.about-page__eyebrow{
  margin:0 0 8px 0;
  max-width:none;
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink-mute);
  text-align:left;
}
.about-page__body p em{
  font-style:italic; font-family:var(--serif); color:var(--ink);
}
.about-page__body-text{
  font-size:var(--fs-md);
  line-height:1.65;
  color:var(--ink-dim);
  max-width:62ch;
}
.about-page__quote{
  margin:8px 0;
  padding:0 0 0 24px;
  border-left:2px solid var(--wine);
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(22px, 1.2vw + 12px, 30px);
  line-height:1.32; letter-spacing:-.015em;
  color:var(--ink);
  max-width:52ch;
}
.about-page__stats{
  margin-bottom:clamp(60px,8vh,100px);
  /* Sprint 13.12: distribute across full content width (4 equal columns), each cell left-aligned to keep editorial rhythm with the prose above */
  grid-template-columns:repeat(4, 1fr);
  column-gap:clamp(24px,3vw,48px);
  padding-top:clamp(28px,4vh,44px);
  border-top:1px solid var(--rule);
}
.about-page__stats > div{ align-items:flex-start; text-align:left; }
.about-page__stats dt{ white-space:nowrap; }

.about-page__block{
  padding:clamp(48px,6vh,80px) 0;
  border-top:1px solid var(--rule);
  /* Sprint 13.13: tight label rail (h2 in narrow left column) + wide content column - prevents oceans of empty space next to short h2 */
  display:grid;
  grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
  gap:clamp(32px, 4vw, 80px);
  align-items:start;
}
.about-page__block > .about-page__h2{
  margin-bottom:0;
  padding-top:2px;
  position:sticky; top:96px;     /* Sprint 13.13: sticky h2 follows scroll alongside its long-form content (timeline, kv-list) */
  font-size:clamp(20px, .9vw + 14px, 28px);  /* tighter scale for the rail size; was clamp(24, 40px) which dwarfed the column */
}
.about-page__block > *:not(.about-page__h2){ grid-column:2; }
.about-page__block > .about-page__h2 + p{ margin-top:0; max-width:64ch; }
.about-page__columns{
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(32px,5vw,80px);
}
.about-page__columns .about-page__block{
  border-top:1px solid var(--rule);
}

/* timeline */
.timeline{
  display:flex; flex-direction:column;
  border-top:1px solid var(--rule-soft);
}
.timeline li{
  display:grid;
  grid-template-columns:160px 1fr;
  gap:clamp(20px,3vw,56px);
  padding:clamp(20px,3vh,28px) 0;
  border-bottom:1px solid var(--rule-soft);
  align-items:baseline;
}
.timeline time{
  font-family:var(--mono); font-size:13px; letter-spacing:.02em;
  color:var(--wine);
}
.timeline h3{
  margin:0 0 4px;
  font-family:var(--serif); font-weight:500;
  font-size:clamp(19px, .8vw + 14px, 24px);
  letter-spacing:-.01em;
  color:var(--ink);
}
.timeline p{
  margin:0;
  font-size:15px; line-height:1.55;
  color:var(--ink-dim);
  max-width:54ch;
}

/* =====================================================
   ABOUT MAGAZINE - editorial dossier redesign
   Sprint 14: bold magazine-spread for /about
   ===================================================== */
.about-mag{
  --mag-pad: var(--pad-x);
  padding:clamp(40px,6vh,80px) var(--mag-pad) clamp(60px,10vh,120px);
  max-width:1440px;
  margin:0 auto;
  display:flex; flex-direction:column;
  gap:clamp(72px,11vh,140px);
}

/* ---------- HERO SPREAD ---------- */
.about-mag__hero{
  display:grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap:clamp(40px,5vw,96px);
  /* Sprint #4.1.1: 'start' → 'stretch' - portrait figure растягивается до text column height; img внутри с flex:1 заполняет это пространство. Решает обе direction проблемы (photo too tall OR photo too short) automatically на любой content length. */
  align-items:stretch;
}
.about-mag__portrait{
  margin:0;
  position:relative;
  display:flex; flex-direction:column;
}
.about-mag__portrait img{
  width:100%;
  /* Sprint #4.1.1: aspect-ratio + max-height replaced with flex:1 - photo заполняет высоту figure которая растянута до text column через align-items:stretch на grid. Aspect-ratio восстановлен в mobile media query (line 1767) для single-column layout. */
  flex:1;
  min-height:0;
  object-fit:cover;
  object-position:center 22%;
  border-radius:6px;
  filter:grayscale(.06) contrast(1.03);
  background:var(--paper-2);
}
.about-mag__portrait figcaption{
  margin-top:14px;
  display:flex; justify-content:space-between; gap:16px;
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute);
}
.about-mag__lead{
  display:flex; flex-direction:column;
  gap:clamp(20px,2.6vh,36px);
}
.about-mag__kicker{
  margin:0;
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--wine);
}
.about-mag__kicker-dot{
  display:inline-block;
  width:7px; height:7px;
  background:var(--wine);
  border-radius:50%;
}
.about-mag__heroline{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(34px, 3.2vw + 10px, 64px);
  line-height:1.02; letter-spacing:-.025em;
  color:var(--ink);
  text-wrap:balance;
  max-width:18ch;
}
.about-mag__heroline em{
  font-style:italic;
  color:var(--wine);
}
.about-mag__body{
  margin:0;
  font-size:var(--fs-lg);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:58ch;
}
.about-mag__body em{ font-style:italic; color:var(--ink); }
.about-mag__creed{
  margin:8px 0 0;
  padding:0 0 0 24px;
  border-left:2px solid var(--wine);
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(20px, 1vw + 12px, 26px);
  line-height:1.32; letter-spacing:-.012em;
  color:var(--ink);
  max-width:46ch;
}
.about-mag__creed p{ margin:0; }
.about-mag__creed p + p{ margin-top:8px; }

/* ---------- BENTO STATS - clean 2x2 grid ---------- */
.about-mag__stats{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:clamp(12px,1.2vw,18px);
}
.about-mag__cell{
  background:var(--paper-2);
  border-radius:14px;
  padding:clamp(56px,6vh,88px) clamp(24px,2.6vw,40px) clamp(28px,3vw,44px);   /* Sprint 14.6: reserve top space for optional kicker so number row is consistent across cells */
  display:grid;
  grid-template-rows: 1fr auto;     /* num pinned top-of-content-area, label/foot pinned bottom */
  gap:clamp(28px,4vh,56px);
  min-height:clamp(220px,26vh,300px);
  transition:background .35s var(--ease), transform .35s var(--ease);
  position:relative;
  overflow:hidden;
}
.about-mag__cell:hover{ background:#e9e2d2; transform:translateY(-2px); }
.about-mag__cell--feature{
  background:var(--ink);
  color:var(--paper);
}
.about-mag__cell--feature:hover{ background:#23201a; }
.about-mag__cell--accent{
  background:var(--wine);
  color:var(--paper);
}
.about-mag__cell--accent:hover{ background:var(--wine-2); }
.about-mag__cell-kicker{
  position:absolute;       /* Sprint 14.6: out of flow - reserved space provided by cell padding-top, doesn't displace number */
  top:clamp(24px,2.6vw,36px);
  left:clamp(24px,2.6vw,40px);
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:rgba(245,241,234,.55);
}
.about-mag__cell-num{
  align-self:start;       /* Sprint 14.6: pin to top of grid row so 5,000 / 15 / 200 / 3 share the same baseline */
  font-family:var(--serif); font-weight:400;
  font-size:clamp(56px, 4.6vw + 16px, 104px);
  line-height:.92; letter-spacing:-.03em;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
  display:inline-flex; align-items:flex-start;
}
.about-mag__cell--feature .about-mag__cell-num{ color:var(--paper); }   /* Sprint 14.3: same size as siblings - feature distinct via dark bg, not type-size */
.about-mag__cell--accent .about-mag__cell-num{ color:var(--paper); }
.about-mag__cell-plus{
  font-size:.55em; line-height:1; font-weight:300;
  padding-left:2px;
  color:var(--wine);
}
.about-mag__cell--feature .about-mag__cell-plus{ color:var(--wine-accent); }
.about-mag__cell--accent .about-mag__cell-plus{ color:rgba(245,241,234,.7); }
.about-mag__cell-label{
  font-size:13px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
  line-height:1.4;
  max-width:24ch;
}
.about-mag__cell--feature .about-mag__cell-label{ color:rgba(245,241,234,.7); }
.about-mag__cell--accent .about-mag__cell-label{ color:rgba(245,241,234,.78); }
.about-mag__cell-foot{ display:flex; flex-direction:column; gap:8px; }
.about-mag__cell-hint{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.12em; text-transform:lowercase;
  /* WCAG 1.4.3: cream alpha lifted .42 -> .64 so the hint clears 4.5:1 on the
     --ink (#1a1814 ~7.2:1) and --wine (#6b2b36 ~4.8:1) cells. Palette frozen:
     same cream token, alpha only. */
  color:rgba(245,241,234,.64);
}

/* ---------- NUMBERED CHAPTERS ---------- */
.about-mag__chapter{
  display:grid;
  grid-template-columns: minmax(0, 1fr);
  gap:clamp(36px,5vh,64px);
}
.about-mag__chapter-head{
  display:flex; align-items:flex-start;
  gap:clamp(24px,3vw,48px);
  padding-top:clamp(28px,4vh,48px);
  border-top:1px solid var(--rule);
}
.about-mag__chapter-num{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(56px, 6vw + 12px, 120px);
  line-height:.85; letter-spacing:-.04em;
  color:var(--wine);
  font-variant-numeric:tabular-nums;
  flex-shrink:0;
}
.about-mag__chapter-meta{
  display:flex; flex-direction:column;
  gap:clamp(8px,1.4vh,16px);
  padding-top:clamp(6px,1vh,14px);
}
.about-mag__chapter-kicker{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute);
}
.about-mag__chapter-title{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(28px, 2.4vw + 12px, 52px);
  line-height:1.04; letter-spacing:-.022em;
  color:var(--ink);
  text-wrap:balance;
  max-width:20ch;
}
.about-mag__chapter-body{
  display:flex; flex-direction:column;
  gap:clamp(20px,2.4vh,32px);
  margin-left:clamp(0px, calc(56px + 6vw + 12px), 152px);   /* indent body to align under chapter title, not number */
}
.about-mag__chapter-body > p{
  margin:0;
  font-size:var(--fs-lg);
  line-height:1.65;
  color:var(--ink-dim);
  max-width:72ch;       /* Sprint 14.8: prose measure only on direct paragraphs - grids (expertise, credentials) extend full chapter width */
}
.about-mag__lede-text{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.2vw + 12px, 30px) !important;
  line-height:1.25 !important;
  letter-spacing:-.015em;
  color:var(--ink) !important;
  text-wrap:balance;
  max-width:36ch;
}

/* Sprint 14.9: chapter 02 - typographic specimen stack + ink-seal strip (no grids) */
.about-mag__chapter-body--full{ margin-left:0; }    /* override default chapter indent so specimens span page */

.about-mag__specimen{
  list-style:none;
  margin:0; padding:0;
  border-top:2px solid var(--ink);
}
.about-mag__specimen li{
  position:relative;
  padding:clamp(32px,4.5vh,56px) 0;
  border-bottom:1px solid var(--rule);
  display:grid;
  grid-template-columns:1fr;
  grid-template-areas:
    "id"
    "tag"
    "title"
    "desc";
  gap:clamp(14px,1.8vh,22px);
  transition:background .35s var(--ease);
}
.about-mag__specimen li:hover{ background:rgba(107,43,54,.04); }
.about-mag__specimen li:hover .about-mag__specimen-id{ color:var(--wine); }
.about-mag__specimen-id{
  grid-area:id;
  align-self:start;
  font-family:var(--mono); font-weight:500;
  font-size:14px; letter-spacing:.16em;
  color:var(--ink-mute);
  transition:color .35s var(--ease);
  display:inline-flex; align-items:center; gap:10px;
}
.about-mag__specimen-id::before{
  content:'';
  width:clamp(28px,3vw,52px); height:1px;
  background:currentColor;
}
.about-mag__specimen-tag{
  grid-area:tag;
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--wine);
}
.about-mag__specimen-title{
  grid-area:title;
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(32px, 3vw + 12px, 64px);
  line-height:.98; letter-spacing:-.025em;
  color:var(--ink);
  max-width:18ch;
}
.about-mag__specimen-desc{
  grid-area:desc;
  margin:0;
  font-size:var(--fs-md);
  line-height:1.55;
  color:var(--ink-dim);
  max-width:48ch;
}
.about-mag__specimen li > *{ position:relative; }

/* Desktop: 2-column compact horizontal — id/tag/title left, desc right (vertically centered) */
@media (min-width:1081px){
  .about-mag__specimen li{
    grid-template-columns: minmax(0, 38fr) minmax(0, 62fr);
    grid-template-areas:
      "id    desc"
      "tag   desc"
      "title desc";
    column-gap: clamp(32px, 4vw, 80px);
    row-gap: clamp(8px, 1vh, 14px);
  }
  .about-mag__specimen-desc{
    align-self:center;
    max-width:54ch;
  }
}

/* Sprint 14.11: flat horizontal meta-strip - replaces credential card box. No background, no border-radius. Just rules + text. */
.about-mag__meta-strip{
  margin:clamp(48px,7vh,80px) 0 0;
  padding:clamp(24px,3vh,36px) 0;
  border-top:2px solid var(--ink);
  border-bottom:1px solid var(--rule);
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(28px,3vw,56px);
}
.about-mag__meta-strip > div{
  display:grid;
  grid-template-columns: clamp(80px,9vw,120px) 1fr;
  gap:clamp(16px,2vw,28px);
  align-items:baseline;
}
.about-mag__meta-strip dt{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--wine);
}
.about-mag__meta-strip dd{
  margin:0;
  font-size:15px; line-height:1.55;
  color:var(--ink-dim);
  max-width:50ch;
}
.about-mag__meta-strip dd strong{
  font-weight:500;
  color:var(--ink);
}

/* ---------- CONTAINED DARK QUOTE CARD ---------- */
.about-mag__bleed-quote{
  margin:0;                                       /* Sprint 14.3: contained card, not full-bleed (was viewport-edge) */
  padding:clamp(56px,7vh,96px) clamp(48px,7vw,120px);
  background:var(--ink);
  color:var(--paper);
  position:relative;
  overflow:hidden;
  border-radius:18px;
}
.about-mag__bleed-inner{
  position:relative;
  max-width:780px;
  margin:0 auto;
  text-align:center;        /* Sprint 14.4: center contents of the card */
  display:flex; flex-direction:column; align-items:center;
}
.about-mag__bleed-mark{
  position:absolute;
  top:clamp(-40px,-4vh,-72px);
  left:50%; transform:translateX(-50%);    /* centered above the quote */
  font-family:var(--serif); font-weight:400;
  font-size:clamp(120px, 14vw, 240px);
  line-height:.7;
  color:var(--wine);
  opacity:.28;
  pointer-events:none;
  user-select:none;
}
.about-mag__bleed-quote blockquote{
  margin:0;
  position:relative;
  z-index:1;
  max-width:42ch;
}
.about-mag__bleed-quote blockquote p{
  margin:0;
  font-family:var(--serif); font-weight:300;
  font-size:clamp(24px, 1.8vw + 10px, 42px);
  line-height:1.22; letter-spacing:-.018em;
  color:var(--paper);
  text-wrap:balance;
}
.about-mag__bleed-quote blockquote em{
  font-style:italic;
  color:var(--wine-accent);
}
.about-mag__bleed-quote cite{
  display:flex; flex-direction:column;
  align-items:center; gap:6px;
  margin-top:clamp(24px,3.4vh,40px);
  font-style:normal;
  position:relative;
  z-index:1;
}
.about-mag__bleed-quote cite span:first-child{
  font-family:var(--serif);
  font-size:18px; line-height:1.2;
  color:var(--paper);
}
.about-mag__bleed-quote cite span:last-child{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:rgba(245,241,234,.55);
}

/* ---------- WINE-SPINE TIMELINE ---------- */
.about-mag__spine{
  list-style:none;
  margin:0; padding:0;
  display:flex; flex-direction:column;
  gap:clamp(28px,4vh,56px);
  margin-left:clamp(0px, calc(56px + 6vw + 12px), 152px);
}
.about-mag__spine li{
  display:grid;
  grid-template-columns: clamp(200px,16vw,260px) minmax(0,1fr);    /* Sprint 14.13: fixed-width year column = all titles align in same vertical rail; wide enough for "2010 - 2014" without wrap */
  gap:clamp(28px,3vw,56px);
  align-items:baseline;
  position:relative;
  padding-left:clamp(20px,2.4vw,40px);
}
.about-mag__spine li::before{
  content:'';
  position:absolute;
  left:0; top:18px;
  width:9px; height:9px;
  background:var(--paper);
  border:2px solid var(--wine);
  border-radius:50%;
  z-index:2;
}
.about-mag__spine li::after{
  content:'';
  position:absolute;
  left:4px; top:30px;
  bottom:-56px;
  width:1px;
  background:var(--rule);
}
.about-mag__spine li:last-child::after{ display:none; }
.about-mag__spine-year time{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(28px, 1.8vw + 12px, 44px);
  line-height:1; letter-spacing:-.022em;
  color:var(--wine);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.about-mag__spine-card h3{
  margin:0 0 8px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px, .9vw + 12px, 26px);
  line-height:1.15; letter-spacing:-.012em;
  color:var(--ink);
}
.about-mag__spine-card p{
  margin:0;
  font-size:var(--fs-md);
  line-height:1.55;
  color:var(--ink-dim);
  max-width:52ch;
}
.about-mag__spine-card--current h3{ color:var(--wine); }

/* ---------- OUTRO CTA ---------- */
.about-mag__cta{
  margin-top:clamp(40px,6vh,80px);
  padding:clamp(48px,7vh,88px) clamp(32px,4vw,56px);
  background:var(--paper-2);
  border:1px solid var(--rule);
  border-radius:18px;
  display:flex; flex-direction:column;
  gap:clamp(20px,2.5vh,32px);
}
.about-mag__cta-meta{
  display:flex; align-items:center; gap:14px;
  margin-bottom:clamp(12px,2vh,24px);
}
.about-mag__cta-tag{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--wine);
}
.about-mag__cta-line{
  flex:1;
  height:1px;
  background:var(--rule);
}
.about-mag__cta-title{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(32px, 2.8vw + 12px, 56px);
  line-height:1.02; letter-spacing:-.022em;
  color:var(--ink);
  text-wrap:balance;
  max-width:18ch;
}
.about-mag__cta-text{
  margin:0;
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:60ch;
}
.about-mag__cta-text a{
  color:var(--wine);
  border-bottom:1px solid currentColor;
  transition:opacity .25s;
}
.about-mag__cta-text a:hover{ opacity:.75; }
.about-mag__cta-btn{
  align-self:flex-start;
  margin-top:clamp(8px,1.6vh,20px);
  display:inline-flex; align-items:center; gap:12px;
  padding:16px 28px;
  background:var(--wine); color:var(--paper);
  border-radius:999px;
  font-family:var(--serif); font-weight:400;
  font-size:16px;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.about-mag__cta-btn:hover{ background:var(--wine-2); transform:translateY(-2px); }
.about-mag__cta-btn svg{ transition:transform .3s var(--ease); }
.about-mag__cta-btn:hover svg{ transform:translateX(3px); }

/* ---------- RESPONSIVE ---------- */
@media (max-width:1080px){
  .about-mag__hero{ grid-template-columns:1fr; gap:clamp(28px,4vh,52px); }
  .about-mag__portrait img{
    max-width:520px;
    /* Sprint #4.1.1: restore aspect-ratio для single-column mobile где stretch не работает (нет parent grid с двумя колонками) */
    aspect-ratio:3/4;
    flex:none;
    min-height:auto;
  }
  .about-mag__stats{ grid-template-columns:1fr 1fr; }
  .about-mag__cell--feature{ min-height:auto; }
  .about-mag__chapter-body,
  .about-mag__spine{ margin-left:0; }
  .about-mag__chapter-num{ font-size:clamp(48px, 12vw, 80px); }
  .about-mag__meta-strip{
    grid-template-columns:1fr;
    gap:clamp(20px,3vh,32px);
  }
  .about-mag__meta-strip > div{
    grid-template-columns:1fr;
    gap:8px;
  }
}
@media (max-width:680px){
  .about-mag{ gap:clamp(56px,8vh,90px); padding-top:clamp(28px,4vh,48px); }
  .about-mag__stats{ grid-template-columns:1fr; }
  .about-mag__cell{ min-height:auto; padding:24px 22px; gap:24px; }
  .about-mag__cell--feature{ min-height:auto; }
  /* Mobile: drop kicker out of absolute positioning so it sits ABOVE the
     number instead of overlapping it (was overlapping 5,000+ at 375px). */
  .about-mag__cell-kicker{
    position:static;
    margin:0 0 14px;
  }
  .about-mag__chapter-head{ flex-direction:column; gap:14px; padding-top:24px; }
  .about-mag__chapter-num{ font-size:48px; line-height:.85; }
  .about-mag__chapter-title{ font-size:clamp(24px, 7vw, 32px); }
  .about-mag__spine li{ grid-template-columns:1fr; gap:8px; }
  .about-mag__spine li::after{ left:4px; bottom:-32px; }
  .about-mag__bleed-mark{ font-size:clamp(120px,40vw,200px); }
  .about-mag__chapter-body p,
  .about-mag__spine-card p{ font-size:15.5px; }
  .about-mag__cta{ padding:32px 22px; }
}

/* ---------- CASES ARCHIVE ---------- */
.case-archive{
  max-width:1400px; margin:0 auto;
  border-top:1px solid var(--rule);
}
.case-entry{
  display:grid;
  grid-template-columns: 100px 1fr;
  gap:clamp(20px,3vw,56px);
  padding:clamp(28px,4vh,44px) 0;
  border-bottom:1px solid var(--rule-soft);
  align-items:baseline;
  transition:transform .4s var(--ease);
}
.case-entry:hover{ transform:translateX(8px); }
.case-entry__idx{
  font-family:var(--mono); font-style:normal; font-weight:500;
  font-feature-settings:'tnum';
  font-size:20px; color:var(--wine);
  padding-top:6px;
}
.case-entry__body h3{
  margin:0 0 14px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.6vw + 12px, 34px);
  line-height:1.12; letter-spacing:-.022em;
  color:var(--ink);
  transition:color .3s;
}
.case-entry:hover .case-entry__body h3{ color:var(--wine); }
.case-entry__body h3 em{ font-style:italic; }
.case-entry__lede{
  margin:0 0 12px;
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:68ch;
}
.case-entry__tags{
  margin:0;
  font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
}

/* ---------- WRITING ARCHIVE ---------- */
.article-archive{
  max-width:1300px; margin:0 auto;
  /* Sprint #4.2: border-top убран - .page-head выше уже имеет border-bottom (line 239), две параллельные линии через .page-body padding читались как double-rule antipattern. .article-full first-child padding-top сохраняет vertical rhythm */
}
.article-full{
  padding:clamp(40px,6vh,72px) 0;
  border-bottom:1px solid var(--rule-soft);
  display:grid;
  grid-template-columns:minmax(140px, 200px) minmax(0, 1fr);
  column-gap:clamp(28px, 5vw, 72px);
  row-gap:18px;
  align-items:start;
  max-width:none;
}
.article-full__meta{ grid-column:1; grid-row:1 / span 3; align-self:start; }
.article-full__title,
.article-full__sub,
.article-full__link{ grid-column:2; }
.article-full__meta{
  display:flex; flex-direction:column; gap:9px; align-items:flex-start;
  font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
}
.article-full__meta time{ color:var(--wine); }
.article-full__title{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(26px, 2vw + 14px, 46px);
  line-height:1.08; letter-spacing:-.024em;
}
.article-full__title em{ font-style:italic; }
.article-full__title a{
  color:var(--ink);
  background-image:linear-gradient(var(--wine), var(--wine));
  background-size:0 1px; background-repeat:no-repeat;
  background-position:0 100%;
  transition:background-size .5s var(--ease), color .3s;
}
.article-full__title a:hover{ color:var(--wine); background-size:100% 1px; }
.article-full__sub{
  font-size:var(--fs-md); line-height:1.65;
  color:var(--ink-dim); max-width:62ch;
}
.article-full__sub em{ font-style:italic; font-family:var(--serif); color:var(--ink); }
.article-full__link{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:16px; color:var(--wine);
  padding-bottom:2px;
  border-bottom:1px solid transparent;
  transition:border-color .3s, gap .3s var(--ease);
  align-self:flex-start;
}
.article-full__link:hover{ border-color:var(--wine); gap:12px; }

/* ---------- TEACHING PAGE ---------- */
.teaching-page > section{
  padding-top:clamp(60px,8vh,100px);
  padding-bottom:clamp(60px,8vh,100px);
  border-top:1px solid var(--rule);
}
.teaching-page > section:first-child{ border-top:0; padding-top:0; }
.teaching-page > section:has(> .pull-quote:last-child){
  /* Sprint #4: pull-quote provides own visual closure - section padding-bottom halved (mirrors .philosophy pattern line 529) */
  padding-bottom:clamp(36px, 5vh, 64px);
}

/* outcomes grid */
.outcomes-grid{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:clamp(20px,3vw,48px);
}
.outcomes-grid--six{
  grid-template-columns:repeat(3, 1fr);
}
.outcomes-grid > div{
  display:flex; flex-direction:column; gap:10px;
  padding-top:24px;
  border-top:1px solid var(--rule);
}
.outcomes-grid__tag{
  font-family:var(--mono); font-size:12px; letter-spacing:.02em;
  color:var(--wine);
}
.outcomes-grid h3{
  margin:6px 0 4px;
  font-family:var(--serif); font-weight:500;
  font-size:clamp(18px, .8vw + 13px, 22px);
  letter-spacing:-.01em;
  color:var(--ink);
}
.outcomes-grid p{
  font-size:14px; line-height:1.55;
  color:var(--ink-dim);
  max-width:32ch;
}

/* format cards */
.teaching-page__formats{
  display:grid; grid-template-columns:1fr;
  gap:clamp(20px,3vw,36px);
}
.format-card{
  padding:clamp(32px,4vw,56px);
  background:var(--paper-2);
  border-radius:16px;
  display:flex; flex-direction:column; gap:20px;
}
.format-card--primary{
  background:var(--ink); color:var(--paper);
}
.format-card header{
  display:flex; justify-content:space-between; align-items:center;
  padding-bottom:18px; border-bottom:1px solid var(--rule-soft);
  font-size:12px; letter-spacing:.2em; text-transform:uppercase;
}
.format-card--primary header{ border-color:rgba(245,241,234,.14); }
.format-card__kicker{ color:var(--wine); }
.format-card--primary .format-card__kicker{ color:var(--wine-accent); }
.format-card__meta{ color:var(--ink-mute); }
.format-card--primary .format-card__meta{ color:rgba(245,241,234,.55); }
.format-card h2{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(28px, 3vw + 10px, 60px);
  line-height:1.02; letter-spacing:-.028em;
}
.format-card--primary h2{ color:var(--paper); }
.format-card h2 em{ font-style:italic; }
.format-card h3{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.2vw + 14px, 32px);
  line-height:1.1; letter-spacing:-.02em;
}
.format-card p{
  font-size:var(--fs-md); line-height:1.6;
  color:var(--ink-dim); max-width:66ch;
}
.format-card--primary p{ color:rgba(245,241,234,.78); }
.format-card__fine{
  font-size:14px !important;
  color:rgba(245,241,234,.58) !important;
  border-top:1px solid rgba(245,241,234,.12);
  padding-top:18px;
}
.format-card__fine a{
  color:rgba(245,241,234,.92);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-color:rgba(245,241,234,.4);
  transition:text-decoration-color .2s, color .2s;
}
.format-card__fine a:hover,
.format-card__fine a:focus-visible{
  color:#fff;
  text-decoration-color:rgba(245,241,234,.85);
}
.format-card__list{
  margin:8px 0 0;
  padding:0;
  list-style:none;
  display:flex; flex-direction:column; gap:12px;
}
.format-card__list li{
  position:relative;
  padding:12px 0 12px 28px;
  border-top:1px solid var(--rule-soft);
  font-size:var(--fs-md); line-height:1.5;
  color:var(--ink);
}
.format-card__list li::before{
  content:''; position:absolute; left:0; top:22px;
  width:14px; height:1px; background:var(--wine);
}
.format-card__list li:last-child{ border-bottom:1px solid var(--rule-soft); }
.format-card--primary .format-card__list li{
  border-color:rgba(245,241,234,.12);
  color:var(--paper);
}
.format-card--primary .format-card__list li::before{ background:var(--wine-accent); }
.format-card--primary .format-card__list li:last-child{ border-bottom-color:rgba(245,241,234,.12); }

/* curriculum list */
.curriculum__head{
  max-width:780px; margin-bottom:clamp(32px,5vh,56px);
}
.curriculum__head p{
  font-size:var(--fs-md); line-height:1.6;
  color:var(--ink-dim); max-width:60ch;
  margin-top:14px;
}
.curriculum__head p em{ font-style:italic; font-family:var(--serif); color:var(--ink); }
.curriculum-list{
  display:grid; grid-template-columns:1fr 1fr;
  column-gap:clamp(32px,5vw,96px);
  border-top:1px solid var(--rule);
}
.curriculum-list--five{ grid-template-columns:1fr; max-width:780px; }
.curriculum-list li{
  display:grid;
  grid-template-columns:56px 1fr;
  gap:16px;
  align-items:baseline;
  padding:clamp(16px,2.5vh,22px) 0;
  border-bottom:1px solid var(--rule-soft);
}
.curriculum-list li span{
  font-family:var(--mono); font-size:12px;
  color:var(--wine);
  padding-top:4px;
}
.curriculum-list li h3{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(16px, .5vw + 14px, 19px);
  line-height:1.35; letter-spacing:-.01em;
  color:var(--ink);
}

/* teaching audience note */
.teaching-page__note{
  margin:clamp(28px,3vh,40px) 0 0;
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(18px, 1vw + 10px, 24px);
  line-height:1.35; letter-spacing:-.01em;
  color:var(--ink-dim);
  max-width:60ch;
}

/* apply block */
.teaching-page__apply{
  max-width:760px; margin:0 auto;
  text-align:left;  /* Sprint 10: apply-section content LEFT */
  border-top:0 !important;
  padding-top:clamp(80px,12vh,140px) !important;
}
.apply__eyebrow{
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute); margin:0 0 24px;
  text-align:left;
}
.apply__title{
  margin:0 0 22px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(36px, 5vw + 14px, 88px);
  line-height:.98; letter-spacing:-.03em;
  color:var(--ink);
}
.apply__title em{ font-style:italic; color:var(--wine); }
.apply__text{
  margin:0 0 32px;       /* Sprint 14.14: left-anchored to match eyebrow + title + btn (was auto-centered, drifted right) */
  font-size:var(--fs-md); line-height:1.6;
  color:var(--ink-dim); max-width:52ch;
}
.apply__btn{
  display:inline-flex; align-items:center; gap:14px;
  padding:20px 36px;
  background:var(--wine); color:var(--paper);
  border-radius:999px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(18px, 1vw + 10px, 24px);
  letter-spacing:-.01em;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.apply__btn:hover{ background:var(--wine-2); transform:translateY(-2px); }
.apply__btn svg{ transition:transform .4s var(--ease); }
.apply__btn:hover svg{ transform:translateX(4px); }
.apply__fine{
  margin:28px 0 0;
  font-size:13px; color:var(--ink-mute);
  line-height:1.6;
}
.apply__fine a{ color:var(--wine); border-bottom:1px solid transparent; transition:border-color .25s; }
.apply__fine a:hover{ border-color:var(--wine); }

/* ---------- NAV SEARCH ICON ---------- */
.nav__search{
  display:inline-grid; place-items:center;
  width:44px; height:44px; border-radius:50%; /* WCAG 2.5.5 touch target */
  border:1px solid var(--rule);
  color:var(--ink);
  transition:background .25s, border-color .25s, color .25s;
}
.nav__search:hover{ background:var(--wine); border-color:var(--wine); color:var(--paper); }
.nav__search.is-active{ background:var(--wine); border-color:var(--wine); color:var(--paper); }

.mobile-menu__extra{
  display:flex !important; align-items:center; gap:14px;
  font-family:var(--sans) !important; font-size:18px !important;
  font-weight:500 !important;
  letter-spacing:-.005em !important;
  padding:16px 0 !important;
  color:var(--ink-dim) !important;
  border-bottom:1px solid var(--rule-soft) !important;
  line-height:1 !important;
}

/* ---------- SEARCH PAGE ---------- */
.search-head .page-head__title{ margin-bottom:22px; }
.search__form{
  position:relative;
  margin:clamp(28px, 4vh, 48px) 0 0;
  max-width:640px;
}
.search__icon{
  position:absolute;
  left:20px; top:50%;
  transform:translateY(-50%);
  color:var(--ink-mute);
  pointer-events:none;
}
#searchInput{
  width:100%;
  padding:18px 52px 18px 54px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(18px, 1vw + 14px, 24px);
  letter-spacing:-.015em;
  color:var(--ink);
  background:var(--paper-2);
  border:1px solid var(--rule);
  border-radius:999px;
  outline:none;
  transition:border-color .25s, background .25s, box-shadow .25s;
}
#searchInput::placeholder{ color:var(--ink-dim); font-style:normal; opacity:.8; }
#searchInput:focus{
  border-color:var(--wine);
  background:var(--paper);
  box-shadow:0 0 0 4px var(--wine-tint);
}
#searchClear{
  position:absolute; right:10px; top:50%;
  transform:translateY(-50%);
  width:44px; height:44px; border-radius:50%; /* WCAG 2.5.5 touch target */
  display:grid; place-items:center;
  background:var(--paper); color:var(--ink-mute);
  border:1px solid var(--rule);
  cursor:pointer;
  transition:background .25s, color .25s, border-color .25s;
}
#searchClear:hover{ background:var(--wine); color:var(--paper); border-color:var(--wine); }

.search-page{ padding-top:0 !important; padding-bottom:clamp(32px, 5vh, 64px); }  /* Sprint 11: tighten /search bottom padding so footer logo sits closer on mobile */
.search__meta{
  margin:0 0 clamp(24px,3vh,36px);
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-mute);
}
.search__meta:empty{ display:none; }

.search__results{
  max-width:1200px;
  border-top:1px solid var(--rule);
}
.search__results:empty{ display:none; }
.search__result{
  border-bottom:1px solid var(--rule-soft);
}
.search__result a{
  display:grid;
  grid-template-columns: 110px minmax(0, 1fr) 32px;
  gap:clamp(16px, 3vw, 40px);
  align-items:baseline;
  padding:clamp(22px,3.5vh,32px) 0;
  color:var(--ink);
  transition:transform .35s var(--ease), color .25s;
  position:relative;
}
.search__result a:hover{ transform:translateX(10px); }
.search__result a:hover .search__result-title{ color:var(--wine); }
.search__result a:hover .search__result-arrow{ transform:translateX(4px); color:var(--wine); }
.search__result-body{ min-width:0; }
.search__result-type{
  font-family:var(--mono); font-size:12px; letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--wine);
  padding-top:6px;
}
.search__result-title{
  margin:0 0 8px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(19px, 1vw + 12px, 26px);
  line-height:1.2; letter-spacing:-.018em;
  color:var(--ink);
  transition:color .25s;
}
.search__result-desc{
  margin:0;
  font-size:14.5px; line-height:1.55;
  color:var(--ink-dim);
  max-width:62ch;
}
.search__result-arrow,
.search__result-ext{
  font-family:var(--serif);
  font-size:18px;
  color:var(--ink-mute);
  justify-self:end;
  transition:transform .3s var(--ease), color .25s;
}
.search__results mark{
  background:var(--wine-tint);
  color:var(--wine);
  padding:0 2px; border-radius:2px;
  font-style:normal;
}

.search__empty{
  max-width:720px;
  padding-top:clamp(16px,2vh,24px);
}
.search__empty-label{
  margin:0 0 18px;
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute);
}
.search__suggestions{
  display:flex; flex-wrap:wrap; gap:10px;
  margin-bottom:clamp(32px,5vh,56px);
}
.search__suggestions button{
  display:inline-flex; align-items:center;
  min-height:44px;                              /* WCAG 2.5.5 touch target */
  padding:9px 18px;
  background:var(--paper-2);
  border:1px solid var(--rule);
  border-radius:999px;
  font-family:var(--sans); font-size:14px; font-weight:500;
  color:var(--ink);
  cursor:pointer;
  transition:background .25s, border-color .25s, color .25s;
}
.search__suggestions button:hover{
  background:var(--wine);
  border-color:var(--wine);
  color:var(--paper);
}
.search__empty-hint{
  font-size:14px; line-height:1.6;
  color:var(--ink-dim);
}
.search__empty-hint a{
  color:var(--wine);
  border-bottom:1px solid rgba(107,43,54,.3);
  transition:border-color .25s;
}
.search__empty-hint a:hover{ border-color:var(--wine); }

.search__noresults{
  max-width:540px;
  padding:clamp(32px,5vh,56px) 0;
}
.search__noresults p{
  margin:0 0 14px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px, 1.2vw + 10px, 28px);
  line-height:1.25; letter-spacing:-.015em;
  color:var(--ink);
}
.search__noresults em{ font-style:italic; color:var(--wine); }
.search__noresults-hint{
  font-family:var(--sans) !important;
  font-size:14px !important;
  line-height:1.6 !important;
  color:var(--ink-dim) !important;
  letter-spacing:0 !important;
}
.search__noresults-hint em{ font-style:italic; color:var(--ink); }

/* responsive */
@media (max-width:680px){
  .search__result a{ grid-template-columns:1fr; gap:8px; }
  .search__result-type{ padding-top:0; }
  .search__result-arrow,
  .search__result-ext{ display:none; }
}

/* ---------- ARTICLE PAGE (long-form) ---------- */
.article-head{
  padding:clamp(140px,20vh,220px) var(--pad-x) clamp(40px,6vh,72px);
  max-width:980px; margin:0 auto;
}
.article-head__meta{
  display:flex; gap:14px; align-items:center; flex-wrap:wrap;
  font-size:12px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-mute);
  margin-bottom:28px;
}
.article-head__meta time{ color:var(--wine); }
.article-head__meta .dot{ width:3px; height:3px; border-radius:50%; background:var(--ink-mute); }
.article-head__title{
  margin:0 0 24px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(36px, 5vw + 10px, 78px);
  line-height:1.02; letter-spacing:-.03em;
  color:var(--ink);
}
.article-head__title em{ font-style:italic; }
.article-head__sub{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px, 1.2vw + 10px, 28px);
  line-height:1.32; letter-spacing:-.015em;
  color:var(--ink-dim);
  max-width:60ch;
}
.article-head__sub em{ font-style:italic; color:var(--ink); }

.article-body{
  padding:0 var(--pad-x);
  max-width:980px; margin:0 auto;
  padding-bottom:clamp(60px, 8vh, 100px);
  font-size:clamp(17px, .3vw + 15px, 19px);
  line-height:1.72;
  color:var(--ink);
}
.article-body > p{ margin:0 0 1.1em; max-width:72ch; }
.article-body > p em{ font-style:italic; font-family:var(--serif); }
.article-body > p:first-of-type::first-letter{
  font-family:var(--serif); font-weight:400;
  font-size:4.4em; line-height:.88;
  float:left; padding:.04em .1em 0 0;
  color:var(--wine);
}
.article-body h2{
  margin:2.4em 0 .7em;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(24px, 1.4vw + 12px, 36px);
  line-height:1.12; letter-spacing:-.022em;
  color:var(--ink);
  max-width:40ch;
}
.article-body h2 em{ font-style:italic; }
.article-body h3{
  margin:1.8em 0 .5em;
  font-family:var(--serif); font-weight:500;
  font-size:clamp(18px, .6vw + 14px, 22px);
  letter-spacing:-.01em;
  color:var(--ink);
}
.article-body ul, .article-body ol{
  margin:0 0 1.2em;
  padding-left:1.4em;
  max-width:58ch;
}
.article-body li{ margin:.35em 0; }
.article-body blockquote{
  margin:1.6em 0;
  padding:0 0 0 24px;
  border-left:2px solid var(--wine);
  font-family:var(--serif); font-style:italic;
  font-size:clamp(21px, 1vw + 14px, 26px);
  line-height:1.36;
  color:var(--ink);
  max-width:50ch;
}
.article-body strong{ font-weight:600; color:var(--ink); }
.article-body a{
  color:var(--wine);
  border-bottom:1px solid rgba(107,43,54,.3);
  transition:border-color .25s, color .25s;
}
.article-body a:hover{ border-color:var(--wine); }

.article-nav{
  margin-top:clamp(40px,6vh,72px);
  padding:clamp(28px,4vh,40px) 0;
  border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule);
  display:flex; justify-content:space-between; gap:24px;
  font-size:14px;
  color:var(--ink-dim);
}
.article-nav a{
  display:inline-flex; flex-direction:column; gap:4px;
  color:var(--ink);
  transition:color .25s;
}
.article-nav a:hover{ color:var(--wine); }
.article-nav small{
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-mute);
}
.article-nav__next{ text-align:right; }

/* ---------- RESPONSIVE OVERRIDES FOR SUB-PAGES ---------- */
@media (max-width:1080px){
  .about-page__grid{ grid-template-columns:1fr; }
  .about-page__portrait{ max-width:480px; }
  .about-page__columns{ grid-template-columns:1fr; }
  .about-page__split{ grid-template-columns:1fr; gap:clamp(16px,2vh,28px); }
  .about-page__block{ grid-template-columns:1fr; gap:clamp(20px,3vh,36px); }
  .about-page__block > *:not(.about-page__h2){ grid-column:auto; }
  .about-page__block > .about-page__h2{ position:static; font-size:clamp(22px, 5.5vw, 30px); }
  .about-page__stats{ grid-template-columns:repeat(2, 1fr); row-gap:24px; }
  .kv-list--two-col{ grid-template-columns:1fr; }
  .outcomes-grid{ grid-template-columns:1fr 1fr; }
  .outcomes-grid--six{ grid-template-columns:1fr 1fr; }
  .curriculum-list{ grid-template-columns:1fr; }
}
@media (max-width:680px){
  .outcomes-grid{ grid-template-columns:1fr; }
  .format-card header{ flex-direction:column; align-items:flex-start; gap:8px; }
  .timeline li{ grid-template-columns:1fr; gap:6px; }
  .case-entry{ grid-template-columns:1fr; gap:12px; }
  .case-entry__idx{ padding-top:0; }
}

/* ----------  REVEAL DEFAULTS ---------- */
[data-reveal]{
  opacity:0;
  transform:translate3d(0, 20px, 0);
  transition:opacity .6s var(--ease), transform .6s var(--ease);
}
[data-reveal].is-in{ opacity:1; transform:none; }

/* ----------  RESPONSIVE ---------- */
@media (max-width:1080px){
  /* Hero stays 2-column until 820px so it collapses in sync with the nav
     (which switches to the burger at 820px). Previously the hero went 1-column
     here at 1080px while desktop nav held to 820px - that mismatch left the
     hero portrait stranded with empty space on tablet-landscape widths.
     The collapse now lives in the @media (max-width:820px) block below. */
  .articles{ grid-template-columns:1fr 1fr; }
  .teaching__grid{ grid-template-columns:1fr 1fr; }
  .teaching__card--primary{ grid-column:1 / -1; }
  .case-row{ grid-template-columns: 50px 1fr; }
  .case-row__tag{ grid-column:2; text-align:left; padding-top:4px; }
  .case-row::after{ display:none; }
  .patent{ grid-template-columns: 50px 1fr; }
  .patent__id{ grid-column:2; text-align:left; padding-top:2px; }
  .contact-list li{ grid-template-columns: 140px 1fr; }
  .contact-list li p{ grid-column:2; }
  .pillar{ grid-template-columns:60px 1fr; gap:24px; }
}
/* =====================================================
   MOBILE POLISH - comprehensive responsive system
   820 (tablet) -> 640 (large phone) -> 480 (phone) -> 380 (tiny)
   ===================================================== */

@media (max-width:1080px){
  /* Compact nav starts at 1080 (was 1000) so links/CTA tighten the moment the
     hero hits its 2-col tablet band, keeping the bar single-line down to 820. */
  .nav__inner{ gap:14px; }
  .nav__mark{ gap:8px; }
  .nav__mark span{ font-size:16px; }
  .nav__links{ gap:clamp(10px, 1.6vw, 18px); }
  .nav__links a{ font-size:13px; }
  .nav__cta{ padding:10px 14px; font-size:12.5px; min-height:44px; }
  .nav__search{ width:44px; height:44px; }
}

/* 821-940: extra-tight tier for the narrow band just above the burger
   breakpoint. Without it the wordmark crowds the first nav link at ~821px
   (the moment desktop nav appears). Tightens gaps and type a touch more so
   the bar stays comfortably single-line until the burger takes over at 820. */
@media (max-width:940px){
  .nav__inner{ gap:10px; }
  .nav__mark{ gap:6px; }
  .nav__mark span{ font-size:15px; }
  .nav__links{ gap:clamp(8px, 1.1vw, 13px); }
  .nav__links a{ font-size:12.5px; }
  .nav__cta{ padding:9px 12px; font-size:12px; min-height:44px; }
}

/* ---------- 820 / tablet portrait ---------- */
@media (max-width:820px){
  .nav__links{ display:none; }
  .nav__cta{ display:none; }
  .nav__search{ display:none; }
  .nav__burger{ display:grid; place-items:center; }
  .nav__inner{ padding:16px var(--pad-x); gap:16px; }

  /* Hero collapses here, in sync with the nav. Portrait is pulled above the
     support copy so the face + thesis land high in the first screen instead of
     after three paragraphs - shortens the tall mobile hero. */
  .hero{
    min-height:auto;
    padding:clamp(84px, 11vh, 124px) var(--pad-x) clamp(36px, 5vh, 60px);
    grid-template-columns:1fr;
    grid-template-rows:auto;
    grid-template-areas:
      "eyebrow"
      "thesis"
      "portrait"
      "support"
      "cta"
      "sig"
      "foot";
    row-gap:clamp(18px, 2.6vh, 30px);
  }
  .hero__thesis{ max-width:20ch; align-self:start; }
  .hero__support{ max-width:60ch; }
  .hero__portrait{
    align-self:start;
    justify-self:start;
    width:100%;
    max-width:min(420px, 80%);
    min-height:0;
    aspect-ratio:4/5;
    margin:clamp(4px, 1vh, 10px) 0;
  }
  .hero__portrait img{ object-position:38% 20%; }

  .page-head{
    padding-top:clamp(100px, 14vh, 150px);
    padding-bottom:clamp(36px, 5vh, 60px);
  }
  .article-head{ padding-top:clamp(100px, 14vh, 150px); padding-bottom:clamp(32px, 5vh, 52px); }

  .intro__stats{ grid-template-columns:repeat(2,1fr); gap:24px 40px; }
  .articles{ grid-template-columns:1fr; }
  .teaching__grid{ grid-template-columns:1fr; }
  .contact-cards{ grid-template-columns:1fr; }
  .foot__top{ grid-template-columns:1fr 1fr; gap:40px; }
  .foot__brand{ grid-column:1 / -1; }

  .intro{ padding-top:clamp(40px, 6vh, 72px); }
  .philosophy,
  .cases,
  .writing,
  .patents,
  .teaching,
  .contact{ padding-bottom:clamp(60px, 8vh, 100px); }

  .sec-head{
    padding-top:clamp(60px, 8vh, 100px);
    margin-bottom:clamp(36px, 5vh, 56px);
  }
}

/* ---------- 640 / large phone ---------- */
@media (max-width:640px){
  :root{
    --sec-y: clamp(56px, 9vh, 100px);
  }

  .nav__inner{ padding:14px var(--pad-x); gap:12px; }
  .nav__mark span{ font-size:17px; }
  .nav__mark svg{ width:22px; height:22px; }
  .nav__burger{ width:44px; height:44px; }
  .nav__burger span:nth-child(1){ top:18px; }
  .nav__burger span:nth-child(2){ top:24px; }

  .mobile-menu{
    padding:86px var(--pad-x) 32px;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    justify-content:flex-start;
    gap:24px;
  }
  .mobile-menu nav{ gap:2px; }
  .mobile-menu nav a{
    font-size:clamp(30px, 9vw, 44px);
    padding:10px 0;
  }
  .mobile-menu__extra{
    font-size:16px !important;
    padding:14px 0 !important;
  }

  /* page headers */
  .page-head__tag,
  .sec-head__tag{ margin-bottom:16px; font-size:12px; }
  .page-head__title{ font-size:clamp(36px, 9vw, 58px); line-height:1; }
  .page-head__lede{ font-size:16px; line-height:1.58; margin-top:18px; }
  .page-head__tags{ margin-top:20px; gap:8px; }
  .page-head__tags li{ padding:6px 12px; font-size:12px; }
  .sec-head__title{ font-size:clamp(28px, 7.5vw, 44px); line-height:1.04; }
  .sec-head__lede{ font-size:15.5px; margin-top:18px; }

  /* intro */
  .intro__lede{ font-size:22px; line-height:1.25; }
  .intro__body-text{ font-size:16px; }
  .intro__stats dd{ font-size:28px; }
  .intro__stats dt{ font-size:12px; letter-spacing:.16em; }

  /* hero */
  .hero__eyebrow{ font-size:12px; letter-spacing:.18em; gap:8px; }
  /* Center sig/foot under the centered portrait — was flush-left, looked unbalanced.
     flex-wrap:nowrap critical: base has flex-wrap:wrap and .sig__name has
     flex-basis:100%, which in flex-direction:column creates multi-column wrap
     (name fills col 1, creds move to col 2). nowrap forces single-column stack. */
  .hero__sig{
    flex-direction:column; flex-wrap:nowrap; align-items:center;
    gap:4px; padding-top:20px;
    font-size:12px; letter-spacing:.14em;
    line-height:1.5;
    text-align:center;
  }
  .hero__sig .sig__sep{ display:none; }
  .hero__sig .sig__name{ font-size:17px; flex-basis:auto; }
  .hero__sig .sig__cred{ color:var(--ink-mute); }
  .hero__foot{
    justify-content:center;
    flex-wrap:wrap; gap:14px;
    font-size:12px; padding-top:14px;
    text-align:center;
  }
  .hero__loc{ margin-left:0; }
  .hero__support{ font-size:15.5px; line-height:1.5; max-width:52ch; }
  .hero{ row-gap:clamp(14px, 2vh, 24px); padding-top:clamp(72px, 9vh, 96px); }
  .hero__portrait{ max-width:min(340px, 74%); margin:clamp(2px, .8vh, 8px) 0; }

  /* pillars */
  .pillar{ padding:28px 0; gap:18px; }
  .pillar__num{ padding-top:6px; font-size:17px; }
  .pillar__title{ font-size:clamp(22px, 6vw, 30px); margin-bottom:14px; }
  .pillar__body p{ font-size:15.5px; line-height:1.58; }

  /* cases */
  .case-entry{ padding:24px 0; gap:10px; }
  .case-entry__body h3{ font-size:clamp(20px, 5.4vw, 26px); line-height:1.15; }
  .case-entry__lede{ font-size:14.5px; line-height:1.58; }
  .case-entry__tags{ font-size:12px; letter-spacing:.14em; }

  /* articles list */
  .article-full{ padding:32px 0; grid-template-columns:1fr; column-gap:0; row-gap:14px; }
  .article-full__meta{ grid-column:1; grid-row:auto; flex-direction:row; align-items:center; font-size:12px; gap:10px; flex-wrap:wrap; }
  .article-full__title,
  .article-full__sub,
  .article-full__link{ grid-column:1; }
  .article-full__title{ font-size:clamp(24px, 6.2vw, 32px); line-height:1.12; }
  .article-full__sub{ font-size:15px; line-height:1.58; }
  .article-full__link{ font-size:15px; }

  /* article body */
  .article-head__meta{ gap:10px; font-size:12px; flex-wrap:wrap; }
  .article-head__title{ font-size:clamp(30px, 8vw, 48px); line-height:1.04; }
  .article-head__sub{ font-size:17px; line-height:1.38; }
  .article-body{ font-size:16.5px; line-height:1.7; }
  .article-body > p:first-of-type::first-letter{ font-size:3.4em; }
  .article-body h2{ font-size:clamp(22px, 5.5vw, 30px); margin:1.8em 0 .5em; }
  .article-body h3{ font-size:18px; margin:1.4em 0 .3em; }
  .article-body blockquote{ font-size:18px; padding-left:18px; }
  .article-body ul, .article-body ol{ padding-left:1.2em; }
  .article-nav{
    flex-direction:column; gap:20px; align-items:flex-start;
    padding:24px 0;
  }
  .article-nav__next{ text-align:left; }

  /* teaching */
  .teaching-page > section{
    padding-top:clamp(40px, 6vh, 72px);
    padding-bottom:clamp(40px, 6vh, 72px);
  }
  .outcomes-grid h3{ font-size:17px; }
  .outcomes-grid p{ font-size:13.5px; }
  .format-card{ padding:24px 22px; border-radius:12px; gap:16px; }
  .format-card header{
    flex-direction:column; align-items:flex-start; gap:6px;
    font-size:12px;
  }
  .format-card h2{ font-size:clamp(26px, 7vw, 40px); line-height:1.05; }
  .format-card h3{ font-size:22px; }
  .format-card p{ font-size:15px; }
  .format-card__list li{ font-size:15px; padding:10px 0 10px 24px; }
  .format-card__list li::before{ top:20px; width:12px; }
  .curriculum-list li{ padding:14px 0; grid-template-columns:44px 1fr; gap:12px; }
  .curriculum-list li h3{ font-size:15.5px; line-height:1.38; }
  .teaching-page__note{ font-size:17px; line-height:1.38; }

  /* patents */
  .patent{ padding:22px 0; }
  .patent__num{ font-size:17px; padding-top:4px; }
  .patent__title{ font-size:clamp(18px, 5vw, 24px); line-height:1.18; }
  .patent__desc{ font-size:14.5px; line-height:1.6; }
  .patent__id{ font-size:12px; padding-top:4px; }
  .patent__chip{ font-size:12px; padding:3px 10px; }

  /* about */
  .about-page__lede{ font-size:19px; line-height:1.22; }
  .about-page__body p{ font-size:16px; line-height:1.6; }
  .about-page__quote{ font-size:18px; padding-left:18px; }
  .about-page__h2{ font-size:clamp(22px, 6vw, 30px); margin-bottom:18px; }
  .about-page__block{ padding:36px 0; }
  .timeline li{ padding:18px 0; }
  .timeline time{ font-size:12px; }
  .timeline h3{ font-size:17px; }
  .timeline p{ font-size:14.5px; line-height:1.55; }
  .kv-list li{ padding:12px 0; font-size:16px; }

  /* apply block */
  .teaching-page__apply{ padding-top:clamp(56px, 9vh, 96px) !important; }
  .apply__title{ font-size:clamp(30px, 8vw, 56px); line-height:1; }
  .apply__text{ font-size:15.5px; margin-bottom:26px; }
  .apply__btn{
    padding:16px 28px; font-size:clamp(16px, 4vw, 20px);
    gap:10px;
  }
  .apply__fine{ font-size:12.5px; }

  /* page-cta */
  .page-cta{ margin-top:72px; padding:32px 22px; border-radius:14px; }
  .page-cta__title{ font-size:clamp(24px, 6.4vw, 36px); line-height:1.06; }
  .page-cta__text{ font-size:14.5px; margin-bottom:24px; }
  .page-cta__btn{ padding:14px 24px; font-size:14px; gap:10px; }

  /* search */
  .search__form{ margin-top:clamp(22px, 3vh, 32px); }
  #searchInput{
    padding:14px 56px 14px 46px;   /* right pad clears the 44px clear button (was sized for 28px) */
    font-size:17px;
  }
  .search__icon{ left:16px; width:18px; height:18px; }
  #searchClear{ right:10px; }   /* WCAG 2.5.5: keep base 44x44 target on mobile (was 28px) */
  .search__suggestions button{ padding:10px 14px; font-size:13px; min-height:44px; }
  .search__empty-label{ margin-bottom:14px; }
  .search__empty-hint{ font-size:13.5px; }
  .search__result a{
    grid-template-columns:1fr;
    gap:8px;
    padding:20px 0;
  }
  .search__result-type{ padding-top:0; }
  .search__result-title{ font-size:17.5px; line-height:1.2; }
  .search__result-desc{ font-size:13.5px; line-height:1.55; }
  .search__result-arrow,
  .search__result-ext{ display:none; }
  .search__noresults p{ font-size:22px; }
  .search__meta{ font-size:12px; margin-bottom:22px; }

  /* contact */
  .contact-list li{ grid-template-columns:1fr; gap:6px; padding:20px 0; }
  .contact-list li p{ grid-column:1; font-size:13.5px; }
  .contact-list li a,
  .contact-list li > span:nth-of-type(2){ font-size:22px; }

  /* footer */
  .foot__top{ grid-template-columns:1fr 1fr; gap:32px; padding-bottom:32px; }
  .foot__brand{ grid-column:1 / -1; gap:14px; }
  .foot__mark span{ font-size:19px; }
  .foot__tag{ font-size:13.5px; line-height:1.55; }
  .foot__col h3,
  .foot__col h2{ font-size:12px; margin-bottom:8px; }
  .foot__col a{ font-size:16px; padding:2px 0; }
  .foot__col a:hover{ padding-left:0; }       /* avoid awkward shift on touch */
  .foot__bottom{
    flex-direction:column; align-items:flex-start; gap:10px;
    font-size:12px;
  }
  .foot__thesis{ font-size:13.5px; }
  .foot__inner{ padding:48px var(--pad-x) 28px; }

  /* more-link */
  .more-link{ font-size:16px; }
}

/* ---------- 480 / standard phone ---------- */
@media (max-width:480px){
  :root{
    --pad-x: clamp(18px, 5vw, 28px);
    --sec-y: clamp(48px, 8vh, 80px);
    --fs-h1: clamp(30px, 10vw, 44px);
  }

  .nav__inner{ padding:12px var(--pad-x); }

  .page-head{ padding-top:92px; padding-bottom:32px; }
  .page-head__title{ font-size:clamp(30px, 9.5vw, 44px); }
  .page-head__lede{ font-size:15px; }

  .article-head{ padding-top:92px; padding-bottom:28px; }
  .article-head__title{ font-size:clamp(26px, 9vw, 38px); line-height:1.05; }
  .article-head__sub{ font-size:15.5px; }

  .article-body{ font-size:16px; }
  .article-body > p:first-of-type::first-letter{ font-size:2.8em; padding:.04em .06em 0 0; }
  .article-body h2{ font-size:22px; max-width:none; }
  .article-body h3{ font-size:17px; }
  .article-body blockquote{ font-size:17px; padding-left:14px; }

  /* Sprint v5/W1: reclaim the fold on phones - the long framing eyebrow wraps
     to 2 lines and pushes the CTA down. Visually hide it ≤480 (still shown
     481-820), but keep the text in the a11y tree + DOM for screen-reader /
     SEO users (it is not hidden from render via display:none). */
  .hero__eyebrow{
    position:absolute; width:1px; height:1px;
    padding:0; margin:-1px; overflow:hidden;
    clip:rect(0,0,0,0); white-space:nowrap; border:0;
  }
  .hero__sig{ font-size:12px; letter-spacing:.14em; }
  .hero__foot{ font-size:12px; }
  .hero__support{ font-size:14.5px; }

  /* Sprint 10: stats strip 2x2 -> 1-col stack on iPhone SE */
  .intro__stats{ grid-template-columns:1fr; gap:28px; }

  .pillar{ gap:12px; padding:24px 0; }  /* Sprint 11: removed dead grid-template-columns (base display:flex makes it a no-op) */
  .pillar__num{ font-size:15px; }
  .pillar__title{ font-size:21px; margin-bottom:12px; }
  .pillar__body p{ font-size:15px; }

  .case-entry__body h3{ font-size:20px; }
  .case-entry__lede{ font-size:14px; }

  .article-full__title{ font-size:22px; }
  .article-full__sub{ font-size:14.5px; }

  .sec-head__title{ font-size:26px; line-height:1.06; }
  .sec-head__lede{ font-size:15px; }

  .format-card{ padding:22px 18px; }
  .format-card h2{ font-size:24px; }
  .format-card h3{ font-size:20px; }
  .format-card p, .format-card__list li{ font-size:14.5px; }

  .outcomes-grid h3{ font-size:16px; }
  .outcomes-grid p{ font-size:13px; }

  .curriculum-list li{ grid-template-columns:36px 1fr; gap:10px; }
  .curriculum-list li h3{ font-size:15px; }

  .apply__title{ font-size:28px; }
  .apply__btn{ padding:13px 22px; font-size:15px; }
  .apply__fine{ font-size:12px; }

  .about-page__lede{ font-size:17.5px; }
  .about-page__body p{ font-size:15.5px; }
  .about-page__quote{ font-size:16.5px; }
  .about-page__h2{ font-size:21px; }
  .kv-list li{ padding:11px 0; font-size:15.5px; }

  .page-cta{ padding:28px 20px; }
  .page-cta__title{ font-size:24px; }

  #searchInput{ padding:13px 56px 13px 42px; font-size:16px; }   /* right pad clears the 44px clear button (was 42px, sized for 28px) */
  .search__suggestions{ gap:8px; }
  .search__suggestions button{ padding:7px 12px; font-size:12.5px; }
  .search__result-title{ font-size:17px; }
  .search__result-desc{ font-size:13px; }

  .contact-list li a,
  .contact-list li > span:nth-of-type(2){ font-size:20px; }

  .foot__top{ grid-template-columns:1fr; gap:28px; }
  .foot__col a{ font-size:15px; }
  .foot__tag{ font-size:13px; }
  .foot__mark span{ font-size:18px; }
  .foot__bottom{ font-size:12px; }

  .intro__stats dd{ font-size:24px; }
}

/* ---------- 380 / iPhone SE and tiny phones ---------- */
@media (max-width:380px){
  :root{
    --pad-x: 16px;
    --fs-h1: clamp(26px, 10vw, 36px);
  }

  .nav__inner{ padding:10px var(--pad-x); gap:10px; }
  .nav__mark span{ display:inline; font-size:15px; }

  .page-head{ padding-top:84px; }
  .page-head__title{ font-size:clamp(28px, 10vw, 36px); }
  .article-head__title{ font-size:26px; }
  .sec-head__title{ font-size:24px; }

  .pillar{ gap:4px; }  /* Sprint 11: removed dead grid-template-columns (base display:flex makes it a no-op) */
  .pillar__num{ padding-top:0; }
  .pillar__title{ font-size:20px; }

  .case-entry__body h3{ font-size:19px; }
  .format-card h2{ font-size:22px; }
  .apply__title{ font-size:26px; }
  .article-body > p:first-of-type::first-letter{ font-size:2.4em; }

  /* Sprint 10: 1-col stack at 380px, tighten row gap */
  .intro__stats{ gap:24px; }
  .intro__stats dd{ font-size:22px; }
}

/* ---------- TOUCH-DEVICE POLISH ---------- */
@media (hover:none) and (pointer:coarse){
  /* Kill hover-only padding shifts that look awkward on tap */
  .case-entry:hover{ padding-left:0; }
  .case-entry:hover .case-entry__body h3{ color:var(--ink); }
  .search__result a:hover{ padding-left:0; }
  .search__result a:hover .search__result-title{ color:var(--ink); }
  .search__result a:hover .search__result-arrow{ transform:none; color:var(--ink-mute); }
  .foot__col a:hover{ padding-left:0; color:var(--wine); }

  /* Ensure comfortable touch targets (44x44 min) */
  .nav__burger,
  .nav__mark,
  .nav__cta,
  .nav__search,
  .page-cta__btn,
  .apply__btn,
  .teaching__cta-btn,
  #searchClear{ min-height:44px; }

  .foot__col a,
  .case-entry a,
  .article-full__link,
  .contact-list li a,
  .mobile-menu nav a,
  /* Sprint 10: extend coverage to remaining nav-style CTAs surfaced by audit */
  .mobile-menu__foot a,
  .more-link,
  .article__title a,
  .apply__fine a,
  .patent-card__link,
  .article-full__title a,
  .static-page__section a,
  .breadcrumbs a,
  .case-page__nav a,
  .case-page__footer a,
  .search__empty-hint a,
  .page-404__nav a{ min-height:44px; display:inline-flex; align-items:center; }

  /* Disable custom cursor assumptions */
  html,body{ cursor:auto; }
}

/* ---------- SAFE-AREA (notched devices) ---------- */
@supports (padding: max(0px)){
  .nav__inner{
    padding-left: max(var(--pad-x), env(safe-area-inset-left));
    padding-right: max(var(--pad-x), env(safe-area-inset-right));
  }
  .mobile-menu{
    padding-left: max(var(--pad-x), env(safe-area-inset-left));
    padding-right: max(var(--pad-x), env(safe-area-inset-right));
    padding-bottom: max(32px, env(safe-area-inset-bottom));
  }
  .foot__inner,
  .page-head,
  .page-body,
  .hero{
    padding-left: max(var(--pad-x), env(safe-area-inset-left));
    padding-right: max(var(--pad-x), env(safe-area-inset-right));
  }
}

/* ----------  REDUCED MOTION ---------- */
@media (prefers-reduced-motion:reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  [data-reveal]{ opacity:1; transform:none; }
}


/* ----------  COMPLIANCE / EDITORIAL DISCLAIMERS  ---------- */
.case-disclaimer,
.article-disclaimer{
  margin: clamp(24px, 4vh, 40px) auto clamp(40px, 5vh, 64px);
  max-width: 72ch;
  padding: clamp(28px, 4vh, 44px) 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  color: var(--ink-dim);
  font-size: clamp(15px, .15vw + 14px, 16px);
  line-height: 1.7;
  font-style: normal;
}
.case-disclaimer p,
.article-disclaimer p{
  margin: 0;
  font-style: normal;
}
.case-disclaimer strong{
  display: block;
  margin-bottom: 6px;
  font-weight: 600;
  font-style: normal;
  letter-spacing: .01em;
  color: var(--ink);
}

/* ----------  CASE DETAIL PAGE  ---------- */
.case-page{
  padding: clamp(120px, 16vh, 180px) var(--pad-x) clamp(60px, 8vh, 100px);
  max-width: 980px;
  margin: 0 auto;
  color: var(--ink);
}
.case-page p{ max-width:72ch; }

.breadcrumbs{
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: clamp(28px, 4vh, 44px);
}
.breadcrumbs a{
  color: var(--ink-mute);
  border-bottom: 1px solid transparent;
  transition: color .25s, border-color .25s;
}
.breadcrumbs a:hover{ color: var(--wine); border-bottom-color: rgba(107,43,54,.4); }
.breadcrumbs span{ color: var(--ink-dim); }

.case-page__header{
  margin-bottom: clamp(28px, 4vh, 40px);
}
.case-page__eyebrow{
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--wine);
}
.case-page__header h1{
  margin: 0;
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(30px, 3.4vw + 14px, 56px);
  line-height: 1.08;
  letter-spacing: -.025em;
  color: var(--ink);
}

.case-disclaimer-top{
  margin: 0 auto clamp(36px, 5vh, 56px);
  max-width: 80ch;
  padding: clamp(24px, 3.5vh, 36px) 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  color: var(--ink-dim);
  font-size: var(--fs-sm);
  line-height: 1.6;
  text-align: center;
}
.case-disclaimer-top p{ margin: 0; }

.case-section{
  margin: 0 0 clamp(28px, 4vh, 44px);
}
.case-section h2{
  margin: 0 0 .55em;
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(22px, 1.4vw + 12px, 30px);
  line-height: 1.16;
  letter-spacing: -.018em;
  color: var(--ink);
}
.case-section p{
  margin: 0 0 1em;
  font-size: clamp(16px, .25vw + 14px, 18px);
  line-height: 1.7;
  color: var(--ink-dim);
  max-width: 64ch;
}
.case-section--takeaways ul{
  margin: 0;
  padding-left: 1.2em;
  max-width: 60ch;
  color: var(--ink-dim);
  font-size: clamp(15.5px, .25vw + 13px, 17px);
  line-height: 1.65;
}
.case-section--takeaways li{ margin: .55em 0; }

.case-safety-note{
  margin: 0 0 clamp(28px, 4vh, 44px);
  padding: clamp(16px, 2.2vh, 22px) clamp(18px, 2.6vw, 26px);
  background: rgba(107,43,54,.05);
  border: 1px solid rgba(107,43,54,.18);
  border-radius: 4px;
}
.case-safety-note p{
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.62;
  color: var(--ink);
}

.case-measurement-note{
  margin: 0 0 clamp(28px, 4vh, 44px);
  padding: clamp(18px, 2.4vh, 24px) clamp(20px, 3vw, 28px);
  background: var(--paper-2);
  border-radius: 4px;
}
.case-measurement-note h3{
  margin: 0 0 8px;
  font-family: var(--mono, "JetBrains Mono", monospace);
  font-size: 12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--wine);
  font-weight: 500;
}
.case-measurement-note p{
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.62;
  color: var(--ink-dim);
}

/* Journal-structured case: complaint -> input investigated -> observation ->
   limitations, laid out as a clinical record (field label left, entry right).
   Reads as a lab journal, which raises scientific credibility without color.
   Palette frozen. */
.case-journal{
  margin: 0 0 clamp(28px, 4vh, 44px);
  border-top: 1px solid var(--rule);
}
.case-stage{
  display: grid;
  grid-template-columns: minmax(0, 190px) minmax(0, 1fr);
  gap: clamp(8px, 2vw, 40px);
  padding: clamp(22px, 3.2vh, 34px) 0;
  border-bottom: 1px solid var(--rule);
}
.case-stage__label{
  margin: 0;
  font-family: var(--mono, "JetBrains Mono", monospace);
  font-size: 12px; letter-spacing: .2em; text-transform: uppercase;
  color: var(--wine);
  font-weight: 500;
  padding-top: .4em;
}
.case-stage__body p{
  margin: 0 0 1em;
  font-size: clamp(16px, .25vw + 14px, 18px);
  line-height: 1.7;
  color: var(--ink-dim);
  max-width: 64ch;
}
.case-stage__body p:last-child{ margin-bottom: 0; }
/* Limitations entry sits one notch quieter - it is caveat, not narrative. */
.case-stage--limitations .case-stage__body p{
  font-size: var(--fs-sm);
  line-height: 1.62;
  color: var(--ink-mute);
}
@media (max-width:680px){
  .case-stage{ grid-template-columns: 1fr; gap: 8px; padding: clamp(20px,3vh,26px) 0; }
  .case-stage__label{ padding-top: 0; }
}

.case-page__footer{
  margin-top: clamp(40px, 6vh, 72px);
  padding-top: clamp(24px, 3vh, 36px);
  border-top: 1px solid rgba(0,0,0,.08);
  font-size: var(--fs-sm);
  color: var(--ink-mute);
}
.case-page__footer > p{ margin: 0 0 18px; }
.case-page__footer a{
  color: var(--wine);
  border-bottom: 1px solid rgba(107,43,54,.3);
  transition: border-color .25s, color .25s;
}
.case-page__footer a:hover{ color: var(--wine-2); border-color: var(--wine); }
.case-page__nav{
  display: flex;
  flex-wrap: wrap;
  gap: 18px 28px;
  justify-content: space-between;
  align-items: center;
}
.case-page__nav a{ color: var(--wine); }

.case-entry__body h3 a{
  color: inherit;
  border-bottom: none;
  transition: color .25s;
}
.case-entry__body h3 a::after{
  content: " →";
  display: inline-block;
  margin-left: 8px;
  color: var(--wine);
  transition: transform .25s var(--ease);
}
.case-entry__body h3 a:hover{ color: var(--wine); }
.case-entry__body h3 a:hover::after{ transform: translateX(4px); }

.case-row__title a{
  color: inherit;
  border-bottom: none;
  transition: color .25s;
}
.case-row__title a:hover{ color: var(--wine); }

@media (max-width: 720px){
  .case-page{ padding-top: 96px; }
  .case-page__header h1{ font-size: clamp(26px, 7.2vw, 36px); }
  .case-section h2{ font-size: clamp(20px, 5.4vw, 26px); }
}

/* ----------  FOOTER PLAIN TEXT (non-link)  ---------- */
.foot__plain{
  display: block;
  font-size: var(--fs-sm);
  color: var(--ink-mute);
  letter-spacing: .005em;
}

/* ----------  STATIC PAGES (legal, contact, 404)  ---------- */
.static-page__sections{
  display: flex;
  flex-direction: column;
  gap: clamp(40px, 5vh, 64px);
  max-width: 980px;
  margin: 0;
  counter-reset: legal-section;
}
.static-page__section p{ max-width: 72ch; }
.static-page__section h2{
  counter-increment: legal-section;
}
.static-page__section h2::before{
  content: counter(legal-section, decimal-leading-zero);
  display: block;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: .22em;
  color: var(--wine);
  margin-bottom: 14px;
  font-weight: 500;
}
.static-page__sections:not(.static-page__sections--center) .static-page__section + .static-page__section{
  padding-top: clamp(32px, 4vh, 56px);
  border-top: 1px solid var(--rule);
}
.static-page__sections--center{
  max-width: 1440px;
  margin: 0 auto;
  text-align: center;
}
.static-page__sections--center .static-page__section p{
  margin-inline: auto;
  max-width: 60ch;
}
.static-page__sections--center .static-page__section h2{
  margin-inline: auto;
}
.contact-actions{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
  margin-top: 8px;
}
.contact-block{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.contact-block__label{
  margin: 0;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--wine);
}
.contact-block__desc{
  margin: 0;
  max-width: 48ch;
  font-size: var(--fs-md);
  line-height: 1.6;
  color: var(--ink-dim);
}

/* Restrained h1 on legal/static pages (no center modifier - privacy, terms, medical) */
main:has(.static-page__sections:not(.static-page__sections--center)) .page-head__title{
  font-size: clamp(36px, 3.6vw + 14px, 64px);
  letter-spacing: -.02em;
}
main:has(.static-page__sections:not(.static-page__sections--center)) .page-head{
  padding-top: clamp(120px, 16vh, 180px);
  padding-bottom: clamp(36px, 5vh, 56px);
  border-bottom: 1px solid var(--rule);
}
.static-page__meta{
  margin: 14px 0 0;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.static-page__section h2{
  margin: 0 0 14px;
  font-family: var(--serif); font-weight: 400;
  font-size: clamp(22px, 1.4vw + 14px, 32px);
  line-height: 1.1; letter-spacing: -.02em;
  color: var(--ink);
}
.static-page__section p{
  margin: 0 0 14px;
  font-size: var(--fs-md);
  line-height: 1.7;
  color: var(--ink-dim);
}
.static-page__section ul{
  margin: 12px 0 0;
  padding-left: 22px;
  color: var(--ink-dim);
}
.static-page__section a:not(.btn-wine){
  color: var(--wine);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.static-page__section a:not(.btn-wine):hover{ color: var(--wine-2); }

.static-page__meta{
  margin-top: 12px;
  font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--ink-mute);
}

/* ----------  404  ---------- */
.page-404{
  max-width: 68ch;
  margin: 0 auto;
  padding: clamp(80px, 14vh, 160px) 0 clamp(60px, 10vh, 120px);
  text-align: center;
}
.page-404 h1{
  margin: 0 0 20px;
  font-family: var(--serif); font-weight: 400;
  font-size: clamp(36px, 6vw, 72px);
  line-height: 1; letter-spacing: -.022em;
  color: var(--ink);
}
.page-404 p{
  font-size: var(--fs-md);
  line-height: 1.65;
  color: var(--ink-dim);
}
.page-404__nav{
  margin-top: 36px;
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  justify-content: center;
  font-size: var(--fs-sm);
}
.page-404__nav a{
  color: var(--wine);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.page-404__nav a:hover{ color: var(--wine-2); }

/* ==========  Sprint 2026-05-08 additions  ========== */

/* ----------  Patent cards (extracted from patents.html inline)  ---------- */
.patents-grid{
  list-style:none;
  margin:0 auto;
  padding:0;
  max-width:1400px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(20px,3vw,40px);
}
.patent-card{
  display:flex;
  flex-direction:column;
  padding:clamp(28px,3.6vw,40px);
  border:1px solid var(--rule);
  border-radius:14px;
  background:rgba(255,255,255,.35);
}
.patent-card__chip{
  display:inline-block;
  align-self:flex-start;
  margin:0 0 18px;
  padding:4px 10px;
  border-radius:999px;
  background:var(--wine-tint);
  color:var(--wine);
  font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  font-weight:500;
}
.patent-card__num{
  display:inline-block;
  margin:0 0 16px;
  font-family:var(--mono); font-size:13px;
  color:var(--ink-mute);
  letter-spacing:.04em;
}
.patent-card__title{
  margin:0 0 14px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px,1.1vw + 14px,26px);
  line-height:1.2; letter-spacing:-.02em;
  color:var(--ink);
}
.patent-card__desc{
  margin:0 0 18px;
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
  max-width:60ch;
}
.patent-card__link{
  align-self:flex-start;
  font-size:14px;
  color:var(--wine);
  text-decoration:none;
  border-bottom:1px solid currentColor;
  padding-bottom:1px;
  transition:opacity .2s var(--ease);
}
.patent-card__link:hover{ opacity:.7; }
.patents-context{
  max-width:680px;
  margin:clamp(40px,6vh,64px) auto 0;
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink);
}
.patents-disclaimer{
  max-width:680px;
  margin:clamp(20px,3vh,32px) auto 0;
  font-size:14px;
  line-height:1.55;
  color:var(--ink-dim);
}
@media (max-width:760px){
  .patents-grid{ grid-template-columns:1fr; gap:20px; }
  .patent-card{ padding:26px 22px; }
}

/* ----------  Composition utilities  ---------- */
.full-width-figure{
  position:relative;
  max-width:1440px;
  margin:clamp(28px,4vh,56px) auto;
  padding:0 var(--pad-x);
}
.full-width-figure + .page-body{ padding-top:clamp(20px, 3vh, 40px); }
.page-body > .full-width-figure,
.teaching > .full-width-figure{ padding-left:0; padding-right:0; }  /* Sprint 13.7: avoid double --pad-x when figure is nested inside an already-padded section */
.full-width-figure img{
  display:block;
  width:100%;
  height:clamp(280px,40vh,520px);
  object-fit:cover;
  object-position:center 25%;
  filter:saturate(.92);
  border-radius:8px;
}
.full-width-figure figcaption{
  margin-top:14px;
  font-size:13px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
}

/* Sprint v5.1: method diagram = deliberate dark tonal break in the cream run.
   Unlike the photo figures (object-fit:cover crop), the diagram must be shown
   whole, so it is contained on a panel whose colour matches the diagram's own
   near-black background (#191613) - the pillarbox is seamless. No saturate
   filter; the line art stays crisp. Extra vertical margin so it reads as its
   own beat between the philosophy run and the cases list. Palette frozen:
   #191613 is the asset's own background, not a new brand colour. */
.full-width-figure--diagram{
  margin-block:clamp(52px, 8vh, 96px);
}
.full-width-figure--diagram img{
  height:clamp(300px, 46vh, 540px);
  object-fit:contain;
  object-position:center;
  background:#191613;
  filter:none;
}
@media (max-width:600px){
  .full-width-figure--diagram img{ height:auto; }
}

/* Sprint 14.21: quote integrated into figure caption - centered editorial composition */
.full-width-figure--with-quote figcaption{
  margin-top:clamp(28px,3.6vh,48px);
  display:flex; flex-direction:column; align-items:center;
  gap:clamp(18px,2.2vh,28px);
  letter-spacing:0; text-transform:none;
  text-align:center;
}
.full-width-figure__quote{
  margin:0;
  padding:0;
  max-width:42ch;
  position:relative;
}
.full-width-figure__quote::before{
  content:'';
  display:block;
  width:48px; height:2px;
  background:var(--wine);
  margin:0 auto clamp(14px,1.8vh,22px);
}
.full-width-figure__quote p{
  margin:0;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px, 1.4vw + 12px, 34px);
  line-height:1.22; letter-spacing:-.015em;
  color:var(--ink);
  text-wrap:balance;
}
.full-width-figure__quote p em{ font-style:italic; color:var(--wine); }
.full-width-figure__meta{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute);
}

.pull-quote{
  max-width:54ch;
  margin:clamp(32px, 5vh, 60px) 0 0;
  padding:clamp(10px, 1.4vh, 16px) 0;
  background:transparent;
  text-align:left;
}
.pull-quote p{
  margin:0;
  font-family:var(--serif);
  font-size:clamp(20px, 1.2vw + 14px, 28px);
  line-height:1.38; letter-spacing:-.012em;
  color:var(--ink);
  font-style:italic;
  text-wrap:pretty;
}
.pull-quote cite{
  display:block;
  margin-top:24px;
  font-family:var(--mono); font-style:normal;
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-eyebrow);
}

/* Sprint #4: .philosophy section closer - centered editorial pull-out, not narrow sidebar quote (overrides default .pull-quote narrow+border-left styling above; default preserved для других мест типа teaching.html) */
.philosophy > .pull-quote{
  max-width:none;
  margin:clamp(56px, 8vh, 96px) auto 0;
  padding:0 var(--pad-x);
  border-left:0;
  text-align:center;
}
.philosophy > .pull-quote p{
  max-width:36ch;
  margin:0 auto;
  font-size:clamp(22px, 1.4vw + 14px, 30px);
  line-height:1.3;
}
.philosophy > .pull-quote cite{
  margin-top:clamp(20px, 2.5vh, 28px);
}

/* ----------  Case breaker (inside-chapter rhythm)  ---------- */
.tier2-note{
  margin:6px 0 14px;
  padding:0 0 0 14px;
  border-left:2px solid var(--rule);
  font-size:14.5px;
  line-height:1.55;
  color:var(--ink-mute);
  font-style:italic;
}

/* ----------  Wine CTA button  ---------- */
.btn-wine{
  display:inline-flex; align-items:center; gap:12px;
  padding:16px 28px;
  background:var(--wine); color:var(--paper);
  border-radius:999px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(16px,.6vw + 13px,19px);
  letter-spacing:-.005em;
  text-decoration:none;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.btn-wine:hover{ background:var(--wine-2); transform:translateY(-1px); }
.btn-wine--large{
  padding:22px 38px;
  font-size:clamp(20px,1.2vw + 12px,26px);
}
.btn-wine--outline{
  display:inline-flex; align-items:center; gap:12px;
  padding:16px 28px;
  background:transparent; color:var(--wine);
  border:1.5px solid var(--wine);
  border-radius:999px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(16px,.6vw + 13px,19px);
  letter-spacing:-.005em;
  text-decoration:none;
  transition:background .3s var(--ease), color .3s var(--ease), transform .3s var(--ease);
}
.btn-wine--outline:hover{
  background:var(--wine); color:var(--paper);
  transform:translateY(-1px);
}

/* Press feedback (Emil): pressable elements scale down on :active so the UI
   confirms it heard the user. Subtle (0.98), transform-only, GPU-cheap. */
.btn-wine:active,
.btn-wine--outline:active,
.nav__cta:active,
.teaching__cta-btn:active{ transform:scale(.98); }

/* ----------  Waitlist CTA block (landings)  ---------- */
.waitlist-block{
  max-width:640px;
  margin:clamp(40px,6vh,72px) auto;
  padding:clamp(32px,4vw,48px);
  background:var(--paper-2);
  border-radius:14px;
  text-align:center;
}
.waitlist-block h2,
.waitlist-block h3{
  margin:0 0 14px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(22px,1.2vw + 14px,30px);
  line-height:1.2; letter-spacing:-.018em;
  color:var(--ink);
}
.waitlist-block p{
  margin:0 0 24px;
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
}
.waitlist-block__meta{
  margin-top:18px;
  font-size:13px;
  color:var(--ink-mute);
}

/* ----------  Landing page utilities  ---------- */
.landing-page{ padding-top:clamp(80px,10vh,140px); }
.landing-page .page-head{ max-width:1440px; margin:0 auto clamp(48px,8vh,96px); padding:0 var(--pad-x); text-align:center; }
.landing-page .page-head__lede{ margin-inline:auto; }
.landing-page__section{
  max-width:1100px;
  margin:0 auto;
  padding:clamp(40px,6vh,72px) var(--pad-x);
  text-align:center;
}
.landing-page__section--two-col{
  max-width:1400px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(32px,5vw,72px);
  text-align:left;
}
.landing-page__section--two-col p{ margin-inline:0; }
.landing-page__section .checklist-preview{ text-align:left; }
.landing-page__section .checklist-preview p{ margin-inline:0; }
.landing-page__section h2{
  margin:0 0 18px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(26px,1.6vw + 14px,38px);
  line-height:1.18; letter-spacing:-.02em;
  color:var(--ink);
}
.landing-page__section p{
  margin:0 auto 14px;
  font-size:var(--fs-md);
  line-height:1.7;
  color:var(--ink-dim);
  max-width:64ch;
}
.landing-page__meta{
  margin-top:14px;
  font-size:13px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute);
}
.landing-page .page-head__cta{
  margin-top:clamp(24px,4vh,40px);
}

/* =====================================================
   LANDING-CHECKLIST: hero centered + horizontal preview strip
   Sprint 14.17 - .landing-page .page-head already provides text-align:center
   ===================================================== */
.landing-checklist__hero .page-head__title{
  font-size:clamp(40px, 5vw + 12px, 96px);
  max-width:20ch;
  margin-left:auto; margin-right:auto;
  margin-bottom:clamp(22px,3vh,36px);
}
.landing-checklist__hero .page-head__lede{
  max-width:60ch;
  margin-left:auto; margin-right:auto;
  margin-bottom:0;
}
.landing-checklist__hero-cta{
  margin-top:clamp(24px, 3.4vh, 40px);
  display:flex; flex-direction:column;
  align-items:center;
  gap:clamp(14px, 2vh, 22px);
}
.landing-checklist__hero-meta{
  margin:0;
  font-family:var(--mono);
  font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-mute);
}

/* Sprint v5/W4: show the artifact. Hero becomes copy (left) + cover (right);
   copy left-aligns inside its column, overriding the centered landing default.
   Stacks to centered single column on phones with the cover below the CTA. */
.landing-checklist__hero-grid{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(0, .95fr);
  gap:clamp(32px, 5vw, 80px);
  align-items:center;
  text-align:left;
}
.landing-checklist__hero-grid .page-head__title{ margin-inline:0; }
.landing-checklist__hero-grid .page-head__lede{ margin-inline:0; }
.landing-checklist__hero-grid .landing-checklist__hero-cta{ align-items:flex-start; }
.landing-checklist__hero-figure{ margin:0; }

/* Flat cover mock-up: the cover sits on two offset paper rectangles that peek
   out to the right and below, reading as a small stack of pages. No photoreal,
   no perspective - just a soft tinted shadow and hairline page edges. */
.checklist-cover{
  position:relative;
  width:min(360px, 78%);
  margin-inline:auto;
  isolation:isolate;
}
.checklist-cover img{
  display:block; width:100%; height:auto;
  border-radius:3px;
  position:relative; z-index:2;
  box-shadow:0 22px 54px -18px rgba(26,24,20,.32), 0 6px 16px -6px rgba(26,24,20,.14);
}
.checklist-cover::before,
.checklist-cover::after{
  content:''; position:absolute; inset:0;
  border-radius:3px;
  background:var(--paper);
  border:1px solid var(--rule-soft);
}
.checklist-cover::before{ transform:translate(7px, 5px); z-index:1; }
.checklist-cover::after{ transform:translate(14px, 10px); z-index:0; }

@media (max-width:820px){
  .landing-checklist__hero-grid{
    grid-template-columns:1fr;
    gap:clamp(28px, 5vh, 44px);
    text-align:center;
  }
  .landing-checklist__hero-grid .page-head__title{ margin-inline:auto; }
  .landing-checklist__hero-grid .page-head__lede{ margin-inline:auto; }
  .landing-checklist__hero-grid .landing-checklist__hero-cta{ align-items:center; }
  .checklist-cover{ width:min(300px, 68%); }
}

/* horizontal preview strip - flat, no box */
.landing-checklist__preview-strip{
  list-style:none;
  margin:clamp(48px,6.4vh,80px) 0 0;
  padding:clamp(20px,2.6vh,30px) 0;
  border-top:2px solid var(--ink);
  border-bottom:1px solid var(--rule);
  display:grid;
  grid-template-columns:repeat(5, minmax(0,1fr));
  gap:clamp(16px,1.8vw,32px);
  align-items:baseline;
}
.landing-checklist__preview-strip li{
  display:flex; align-items:baseline; gap:10px;
  font-size:14px; line-height:1.3;
  color:var(--ink);
}
.landing-checklist__preview-strip li > span:first-child{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.18em;
  color:var(--wine);
  flex-shrink:0;
}
.landing-checklist__preview-strip li .sep{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.12em;
  color:var(--ink-mute);
  text-transform:lowercase;
}

@media (max-width:900px){
  .landing-checklist__hero .page-head__title{ font-size:clamp(36px, 8vw, 56px); }
  .landing-checklist__preview-strip{
    grid-template-columns:1fr 1fr;
    row-gap:14px;
  }
}
@media (max-width:520px){
  .landing-checklist__preview-strip{ grid-template-columns:1fr; row-gap:10px; }
}

/* checklist preview list (5 questions on landing-checklist) */
.checklist-preview{
  list-style:none;
  margin:24px 0 0;
  padding:0;
}
.checklist-preview li{
  display:grid;
  grid-template-columns:80px 1fr;
  gap:24px;
  padding:clamp(20px,3vh,32px) 0;
  border-bottom:1px solid var(--rule);
}
.checklist-preview li:last-child{ border-bottom:0; }
.checklist-preview .num{
  font-family:var(--mono);
  color:var(--wine);
  font-size:clamp(18px,.6vw + 14px,22px);
  letter-spacing:.04em;
  padding-top:4px;
}
.checklist-preview h3{
  margin:0 0 8px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px,.8vw + 14px,24px);
  line-height:1.25; letter-spacing:-.012em;
  color:var(--ink);
}
.checklist-preview p{
  margin:0;
  font-size:var(--fs-md);
  line-height:1.6;
  color:var(--ink-dim);
}

/* "What's next" cross-link cards */
.next-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:clamp(20px,3vw,32px);
  margin-top:24px;
}
.next-card{
  display:block;
  padding:clamp(24px,3vw,32px);
  border:1px solid var(--rule);
  border-radius:12px;
  background:var(--paper);
  text-decoration:none;
  transition:border-color .25s var(--ease), transform .25s var(--ease);
}
.next-card:hover{ border-color:var(--wine); transform:translateY(-2px); }
.next-card .num{
  display:inline-block;
  margin:0 0 12px;
  font-family:var(--mono);
  color:var(--wine);
  font-size:13px;
  letter-spacing:.04em;
}
.next-card h3{
  margin:0 0 10px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(20px,.8vw + 14px,24px);
  line-height:1.2; letter-spacing:-.012em;
  color:var(--ink);
}
.next-card p{
  margin:0;
  font-size:var(--fs-md);
  line-height:1.55;
  color:var(--ink-dim);
}

/* author bio block on landings */
.author-bio{
  display:grid;
  grid-template-columns:260px 1fr;
  gap:clamp(24px,3vw,48px);
  align-items:stretch;
  max-width:900px;
  margin:24px auto 0;
  text-align:left;
}
.author-bio__photo{
  width:100%;
  height:100%;
  min-height:0;
  object-fit:cover;
  object-position:center 22%;
  border-radius:8px;
  filter:saturate(.92);
}
.author-bio__text{ display:flex; flex-direction:column; justify-content:center; }
.author-bio__text p{ margin:0 0 12px; }
.author-bio__text p:last-child{ margin-bottom:0; }

@media (max-width:760px){
  .landing-page__section--two-col{ grid-template-columns:1fr; }
  .next-grid{ grid-template-columns:1fr; }
  .checklist-preview li{ grid-template-columns:60px 1fr; gap:16px; }
  .author-bio{ grid-template-columns:1fr; }
  .author-bio__photo{ max-width:240px; }
}

/* ==================================================================
   Sprint 2026-05-10 - composition fix classes
   ================================================================== */

/* ----------  Chapter divider (cases.html)  ---------- */
.chapter-divider{
  max-width:1280px;
  margin:clamp(80px,12vh,140px) auto clamp(40px,6vh,64px);
  padding:0 var(--pad-x);
  text-align:center;
}
.chapter-divider__num{
  display:block;
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--wine);
  margin-bottom:20px;
}
.chapter-divider__title{
  margin:0 0 18px;
  font-family:var(--serif); font-weight:400;
  font-size:clamp(32px, 2.4vw + 14px, 56px);
  line-height:1.05;
  letter-spacing:-.018em;
  color:var(--ink);
}
.chapter-divider__lede{
  margin:0 auto;
  font-size:clamp(16px, .4vw + 14px, 18px);
  line-height:1.55;
  color:var(--ink-mute);
  max-width:60ch;
}

/* ----------  Case-meta unified block (replaces tier2-note + disclaimer pair)  ---------- */
.case-meta{
  max-width:64ch;
  margin:0 auto clamp(40px,6vh,64px);
  padding:0;
  text-align:center;
}
.case-meta__note{
  font-style:italic;
  color:var(--ink-mute);
  margin:0 0 12px 0;
  font-size:14.5px;
  line-height:1.55;
}
.case-meta__rule{
  border:0;
  border-top:1px solid var(--rule);
  margin:12px 0;
}
.case-meta__disclaimer{
  font-size:13px;
  color:var(--ink-dim);
  margin:0;
  line-height:1.55;
}

/* ----------  General callout (regulatory disclosures)  ---------- */
.callout{
  max-width:1440px;
  margin:clamp(24px,4vh,40px) auto;
  padding:clamp(24px, 3.5vh, 36px) var(--pad-x);
  text-align:center;
}
.callout p{ margin:0 auto; max-width:80ch; line-height:1.55; color:var(--ink-dim); }
.callout--important strong{ color:var(--wine); }

/* ----------  Pull-quote variants  ---------- */

/* ----------  Btn-wine inline variant (contact Instagram CTA)  ---------- */
.btn-wine--inline{
  display:inline-flex;
  align-items:center;
  min-height:48px;
  padding:0 20px;
  font-size:clamp(14px,.4vw + 12px,16px);
}

/* ====================================================================
   Sprint 2026-05-12 - WIDE-VIEWPORT & EDGE-CASE COVERAGE
   Fills the gap between existing 1080px ceiling and modern device
   pixel widths (1280-2560+). Mobile-last queries above stay intact;
   these min-width tiers cascade after everything, so they always win
   on wide screens without touching the carefully-tuned mobile layout.

   Targets:
   - 1080-1280  MacBook Air 11"/13", small laptop  (intermediate)
   - 1280-1536  MacBook Air 13"-15", standard laptop
   - 1536-1920  MacBook Pro 14"/16" (1512/1728), 27" iMac
   - 1920-2560  External monitor, full HD desktop
   - 2560+      Ultra-wide / 5K display
   - <=360      Galaxy Fold-class ultra-tiny phone
   - landscape  Phone in landscape (short height)
   ==================================================================== */

/* ---------- Intermediate laptops (1080-1280) ---------- */
@media (min-width:1080px) and (max-width:1279.98px){
  :root{
    --pad-x: clamp(36px, 4.5vw, 56px);
  }
  /* Restrain hero portrait so it doesn't dominate at narrow laptop widths */
  .hero{ column-gap: clamp(24px, 3vw, 48px); }
  .hero__portrait{ min-height: clamp(360px, 52vh, 580px); }
}

/* ---------- Standard laptops (1280-1536) - MacBook Air 13"/15" ---------- */
@media (min-width:1280px){
  :root{
    --pad-x: clamp(48px, 5vw, 80px);
  }
  /* Slightly more headroom in hero - no width change to keep editorial feel */
  .hero{ row-gap: clamp(14px, 1.6vh, 20px); }
}

/* ---------- MacBook Pro 14"/16", 27" iMac (1536-1920) ---------- */
@media (min-width:1536px){
  :root{
    --pad-x: clamp(64px, 4.5vw, 104px);
    --container: 1560px;
  }
  /* Widen primary containers so editorial layout doesn't strand on 1512-1728 */
  .page-head,
  .page-body,
  .case-list,
  .case-archive,
  .articles,
  .article-archive,
  .patent-list,
  .patents-grid,
  .teaching__grid,
  .contact-list,
  .foot__inner,
  .pillars,
  .landing-page .page-head,
  .landing-page__section--two-col,
  .full-width-figure,
  .callout{
    max-width: var(--container);
  }
  /* Sprint 12.3: removed the calc(container + 2*pad-x) override.
     With horizontal padding now stripped from .sec-head (the parent
     section provides pad-x), .sec-head's max-width matches .pillars /
     .articles / .case-list / .foot__inner / .teaching__grid at every
     tier — alignment is automatic. */
  /* hero portrait gets more presence on wide screens */
  .hero__portrait{
    min-height: clamp(420px, 58vh, 760px);
    aspect-ratio: auto;   /* let grid row span govern height — 3:4 forces ~930px tall at 1920w */
  }
  /* Section spacing scales gently — tightened for 100svh fit at 1080p+ */
  .hero{ padding-top: clamp(80px, 9vh, 96px); }
}

/* ---------- Desktop / external monitor (1920-2560) ---------- */
@media (min-width:1920px){
  :root{
    --pad-x: clamp(80px, 4vw, 140px);
    --container: 1680px;
    --sec-y: clamp(120px, 12vh, 180px);
  }
  /* Long-form measure stays narrow for readability — only widen layout shells */
  .hero{ column-gap: clamp(40px, 4vw, 96px); }
  .hero__portrait{ min-height: clamp(520px, 62vh, 880px); }
  /* Prevent hero thesis from getting too cramped on huge displays */
  .hero__thesis{ max-width: 16ch; }
  /* sec-head calc still uses --container + 2*pad-x — recomputes automatically */
}

/* ---------- Ultra-wide / 5K (2560+) — final cap ---------- */
@media (min-width:2560px){
  :root{
    --container: 1760px;
  }
  body{ font-size: 18px; }
  /* Center the hero grid on ultra-wide so it doesn't disperse */
  .hero{ max-width: 2200px; margin-left: auto; margin-right: auto; }
}

/* ---------- Ultra-tiny phones (<=360px) — Galaxy Fold safety net ---------- */
@media (max-width:360px){
  :root{
    --pad-x: 14px;
  }
  .nav__inner{ gap:8px; padding:10px var(--pad-x); }
  .nav__mark img{ height:26px; }
  .nav__burger{ width:44px; height:44px; min-width:44px; min-height:44px; }
  /* Tighten hero copy so it never overflows the 320-360 viewport */
  .hero__thesis{ font-size: clamp(26px, 9vw, 34px); letter-spacing:-.025em; }
  .hero__support{ font-size: 14px; }
  .page-head__title{ font-size: clamp(24px, 8.5vw, 32px); }
  .article-head__title{ font-size: clamp(22px, 8vw, 30px); }
  .sec-head__title{ font-size: clamp(22px, 8vw, 28px); }
  .apply__title{ font-size: clamp(24px, 8vw, 32px); }
  .format-card{ padding:18px 14px; }
  .page-cta{ padding:22px 16px; }
  /* Smaller intra-section gaps for compact layout */
  .intro__stats{ gap:20px; }
  .pillar{ padding:20px 0; }
}

/* ---------- Phone landscape (short height) ---------- */
@media (orientation:landscape) and (max-height:500px) and (max-width:1024px){
  .hero{
    min-height:auto;
    padding-top: clamp(72px, 12vh, 96px);
    padding-bottom: clamp(20px, 4vh, 32px);
    row-gap: clamp(12px, 2vh, 20px);
  }
  .hero__portrait{ min-height: clamp(180px, 40vh, 280px); aspect-ratio:16/10; }
  .page-head{
    padding-top: clamp(80px, 14vh, 110px);
    padding-bottom: clamp(20px, 4vh, 36px);
  }
  .article-head{ padding-top: clamp(80px, 14vh, 110px); }
  /* Mobile menu must not scroll-trap on short screens */
  .mobile-menu{
    padding-top: 60px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .mobile-menu nav a{ font-size: clamp(20px, 5vw, 30px); padding: 4px 0; }
}

/* ---------- Tablet/laptop portrait (768-1080) - fill underserved range ---------- */
@media (min-width:768px) and (max-width:1079.98px){
  /* The hero already collapses at 1080 max-width. This tier ensures
     section grids land 2-col instead of jumping straight to 1-col,
     filling the empty space on iPad Pro 11" / Surface portrait. */
  .articles{ grid-template-columns: 1fr 1fr; }
  .teaching__grid{ grid-template-columns: 1fr 1fr; }
  .teaching__card--primary{ grid-column: 1 / -1; }
  .outcomes-grid{ grid-template-columns: repeat(2, 1fr); }
  .outcomes-grid--six{ grid-template-columns: repeat(3, 1fr); }
  .patents-grid{ grid-template-columns: 1fr 1fr; }
  .foot__top{
    grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
  }
  /* Section heads can take a touch more measure */
  .sec-head__title{ max-width: 22ch; }
}

/* ====================================================================
   SPRINT 12 — Responsive Typography & Device Optimization
   Targets: full-range responsive polish (320px ↔ 5K), MacBook-tier
   refinement, editorial heading wrapping discipline.
   ==================================================================== */

/* ---------- Responsive heading measure (1280+) ----------
   Long titles like "Essays on physiology and clinical thinking" (42ch)
   were forced into 2 lines at 1280-1440 with awkward orphan ("thinking").
   Bump ch budget so editorial 1-2 line wrap balances cleanly. */
@media (min-width:1280px){
  .sec-head__title{ max-width: 32ch; }
  .page-head__title{ max-width: 28ch; }
}
@media (min-width:1536px){
  .sec-head__title{ max-width: 38ch; }
  .page-head__title{ max-width: 32ch; }
}
@media (min-width:1920px){
  /* Container is 1680px here — let title use the full editorial measure */
  .sec-head__title{ max-width: 44ch; }
  .page-head__title{ max-width: 36ch; }
}

/* ---------- iPhone SE 1st gen / 320px hardening ----------
   Existing 360px rule covered Fold; this catches the 320×568 SE viewport
   and any narrower edge case. */
@media (max-width:320px){
  :root{ --pad-x: 12px; }
  .nav__inner{ gap:6px; padding:8px 12px; }
  .nav__mark img{ height:24px; }
  .hero__thesis{ font-size: clamp(24px, 8.5vw, 30px); letter-spacing:-.02em; }
  .hero__support{ font-size: 13.5px; line-height:1.5; }
  .page-head__title{ font-size: clamp(22px, 8vw, 28px); }
  .article-head__title{ font-size: clamp(20px, 7.5vw, 26px); }
  .sec-head__title{ font-size: clamp(20px, 7.5vw, 26px); }
  .apply__title{ font-size: clamp(22px, 8vw, 28px); }
  .format-card{ padding:16px 12px; }
  .page-cta{ padding:20px 14px; }
  /* Allow long brand/medical words to wrap at any point on tiny screens */
  body{ overflow-wrap:anywhere; }
}

/* ---------- MacBook tier polish (1280-1536) ----------
   MacBook Air 13/15, MacBook Pro 13 sit in 1280-1536 range.
   Container is still 1440 default here — add gentle padding so editorial
   content doesn't feel cramped against the chrome. */
@media (min-width:1280px) and (max-width:1535.98px){
  /* Slightly tighter section rhythm so content density matches the
     compressed laptop viewport without changing the editorial feel. */
  :root{ --sec-y: clamp(72px, 11vh, 128px); }
  .hero__portrait{ min-height: clamp(400px, 56vh, 680px); }
}

/* ---------- Global wrap hygiene ----------
   Apply text-wrap utilities only where appropriate. Headings get balance,
   prose paragraphs get pretty. Both are progressive — older browsers
   ignore them with no layout impact. */
.article-body h1,
.article-body h2,
.article-body h3,
.article-head__title,
.teaching__card h3,
.format-card h2,
.apply__title,
.case-row__title,
.article__title{
  text-wrap:balance;
  overflow-wrap:break-word;
}
.article-body p,
.case-row__lede,
.format-card p,
.teaching__card p,
.intro__body p,
.foot__col p{
  text-wrap:pretty;
}

/* ---------- Long technical strings safety ----------
   Patents, case codes, URLs and P-DTR terminology can be very long
   without break opportunities. Force wrap so they never overflow. */
.patent__num,
.patent__code,
.case-row__num,
code, pre{
  overflow-wrap:anywhere;
  word-break:break-word;
}

/* ---------- Print ---------- */
@media print{
  .nav, .mobile-menu, .skip-link, .foot, .page-cta, .apply__btn,
  .teaching__cta-btn, .nav__cta, .more-link, .article-nav,
  .case-page__nav{ display: none !important; }
  body{ background: #fff; color: #000; font-size: 11pt; line-height: 1.5; }
  .article-body, .case-page, .page-head, .page-body{
    padding-left: 0; padding-right: 0; max-width: none;
  }
  a{ color: #000; text-decoration: underline; }
  [data-reveal]{ opacity: 1 !important; transform: none !important; }
}

/* ---------- FAQ (AEO) ---------- */
.faq{ padding: var(--sec-y) var(--pad-x); border-top: 1px solid var(--rule-soft); }
.faq__inner{ max-width: var(--container-narrow); margin-inline: auto; }
.faq__eyebrow{ font-family: var(--sans); font-size: var(--fs-xs); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-eyebrow); margin: 0 0 .6rem; }
.faq__title{ font-family: var(--serif); font-size: var(--fs-h2); line-height: 1.04; letter-spacing: -.01em; margin: 0 0 clamp(28px, 4vh, 48px); color: var(--ink); }
.faq__list{ border-top: 1px solid var(--rule); }
.faq__item{ border-bottom: 1px solid var(--rule); }
.faq__q{ font-family: var(--serif); font-size: var(--fs-lg); line-height: 1.3; color: var(--ink); cursor: pointer; padding: clamp(18px, 2.4vh, 26px) 2.6rem clamp(18px, 2.4vh, 26px) 0; position: relative; list-style: none; }
.faq__q::-webkit-details-marker{ display: none; }
.faq__q::after{ content: "+"; position: absolute; right: .1rem; top: clamp(18px, 2.4vh, 26px); font-family: var(--sans); font-weight: 400; font-size: 1.5em; line-height: 1.1; color: var(--wine); transition: transform .2s ease; }
.faq__item[open] .faq__q::after{ content: "\2212"; }
.faq__q:hover{ color: var(--wine); }
.faq__q:focus-visible{ outline: 2px solid var(--wine); outline-offset: 3px; border-radius: 2px; }
.faq__a{ font-family: var(--sans); font-size: var(--fs-md); line-height: 1.7; color: var(--ink-dim); max-width: var(--meas); padding: 0 2.6rem clamp(20px, 3vh, 30px) 0; }
.faq__a p{ margin: 0 0 .8em; }
.faq__a p:last-child{ margin-bottom: 0; }
