/* ============================================================================
   hub.css — the disease HUB. Pillar, section indexes, leaf pages, topic archive.

   ── REWRITTEN, SESSION 8 ────────────────────────────────────────────────────
   mlk: "the hub is still not good .. the css is so bad .. it reads like a generic
         website or page section"

   He was right, and the reason was structural, not cosmetic. The pillar rendered
   TWENTY-ONE CARDS (12 .hub-card + 9 .hub-map-card) in stock 3-up Bootstrap grids,
   white tiles with 1px grey borders. That is a marketing landing page. It is not
   what a person reads at 2am when they have just been diagnosed with an autoimmune
   blistering disease.

   ⚠ AND THE LINE COLOUR WAS STILL GREEN. `--hub-line` was `#E6D9D0`, a COOL grey-green —
   a survivor of the invented-green era (§6.4b). Every hairline, every table rule and
   every card edge on the flagship pages of a BROWN AND GOLD brand was being drawn in
   a cold colour left behind by a bug we thought we had finished fixing. It is why the
   page felt generic even though every hex in it "passed". A colour is a business fact
   (rule 15) — and the artefact agreed with itself, again.

   ── THE DESIGN ──────────────────────────────────────────────────────────────
   A clinical monograph, not a landing page. Warm paper, confident serif display,
   gold hairlines, an INDEX rather than a tile wall, and a real timeline for LIFES.
   Authority comes from typography and restraint, not from boxes.

   Every class name from the previous file is preserved — the markup is untouched and
   audit.js check 13 (every .hub-* class used on the page must be styled) still passes.

   Palette is the LIVE SITE's, verified by frequency in elite/css/*.css:
     #8B4513 SaddleBrown (173)  #CD853F tan (168)  #B8860B gold (82)
     #FA670F CTA orange (45)    #F5F1EF wash (23)  #3B2A20 ink (17)
   Type is the LIVE SITE's, self-hosted @font-face: Philosopher (display) + Roboto (body).
   ========================================================================== */

:root {
  --hub-primary: #8B4513;   /* SaddleBrown — the header, the brand */
  --hub-deep:    #6B3410;   /* pressed / gradient end */
  --hub-gold:    #8F6A08;   /* the rule, the numeral, the mark — darkened from #B8860B (Wave E,
                               2026-07-26): white text on the original only reached 3.25:1, below
                               WCAG AA's 4.5:1 for normal text at every real size this is used. */
  --hub-cta:     #C1440E;   /* darkened from #FA670F — white CTA-button text was 2.995:1, under
                               even the relaxed 3:1 large-text floor. This clears 4.5:1 at 5.12:1. */
  --hub-tan:     #8F5827;   /* darkened from #CD853F — used both as button bg (white text failed
                               at 2.99:1) and as small caption/meta text on white (also failed);
                               this shade clears both roles (5.85:1 as text on white/paper). */
  --hub-ink:     #2A1B12;   /* deep warm near-black — reading colour */
  --hub-body:    #5C4A3E;   /* body copy, warm grey-brown */
  --hub-paper:   #FDFBF9;   /* warm white */
  --hub-tint:    #F5F1EF;   /* the wash */
  --hub-tint2:   #EFE5DD;   /* deeper wash */
  --hub-line:    #E6D9D0;   /* ⚠ WARM hairline. The old value was a cool grey-GREEN (rule 39). */
  --hub-rust:    #B8541B;
  --hub-shadow:  0 1px 2px rgba(42,27,18,.04), 0 8px 24px -12px rgba(42,27,18,.16);
  --hub-shadow-h:0 2px 4px rgba(42,27,18,.06), 0 18px 40px -16px rgba(42,27,18,.26);
  --hub-serif:   'Philosopher', Georgia, 'Times New Roman', serif;
}

/* ---- THE HUB PAGE ITSELF --------------------------------------------------
   `<body class="inner-page hub-page">` is emitted on every section index and every leaf page —
   i.e. on the MAJORITY of the hub — and NOTHING HAD EVER STYLED IT. audit.js check 13 only ever
   looked at the PILLAR, so 34 pages sat on the stock template background with a bit of styled
   content dropped into the middle of them. That is most of why the hub still "read like a generic
   page section" after the pillar was fixed: the pillar was never the problem by itself.
   A gate that only looks at one page of a section cannot see the section. (rule 28.) */
body.hub-page { background: var(--hub-paper); }
body.hub-page .hub-article { padding: 64px 0 76px; }
body.hub-page .hub-article .container { max-width: 860px; }

/* the leaf page's reading column */
.hub-article > .container > .hub-prose { font-size: 18px; line-height: 1.8; }
.hub-article h2 { font-family: var(--hub-serif); font-size: 30px; line-height: 1.25;
  color: var(--hub-ink); margin: 40px 0 14px; }
.hub-article h2:first-child { margin-top: 0; }

/* prev / next through the section — the thing that makes it feel like a SECTION and not a page */
.hub-pager .next, .hub-pager .prev {
  display: block; max-width: 46%; text-decoration: none; color: var(--hub-ink);
  font-family: var(--hub-serif); font-size: 17px; line-height: 1.4;
}
.hub-pager .prev { text-align: left; }
.hub-pager .next { text-align: right; margin-left: auto; }
.hub-pager .next span, .hub-pager .prev span {
  display: block; font-family: 'Roboto', sans-serif; font-size: 11px; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase; color: var(--hub-gold); margin-bottom: 6px;
}
.hub-pager .next:hover, .hub-pager .prev:hover { color: var(--hub-primary); }

.cta-inner { max-width: 720px; }
.cta-inner h2 { font-family: var(--hub-serif); font-size: 30px; color: var(--hub-ink); margin: 0 0 12px; }
.cta-inner p { font-size: 17px; line-height: 1.7; color: var(--hub-body); margin: 0; }

/* ---- section furniture: rhythm and paper ---------------------------------- */
.hub-sec { padding: 76px 0; background: var(--hub-paper); }
.hub-sec.alt { background: var(--hub-tint); }
.hub-sec + .hub-sec { border-top: 1px solid var(--hub-line); }
.hub-sec.alt + .hub-sec.alt { border-top-color: #E4D6CB; }

/* the section head: a gold rule, a small-caps kicker, then a confident serif line. */
.hub-sec .hub-head { max-width: 780px; margin: 0 0 42px; }
.hub-sec .hub-head .kicker {
  display: inline-block; font-family: 'Roboto', sans-serif; font-size: 11.5px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--hub-gold);
  padding: 0 0 10px; margin: 0 0 14px; border-bottom: 2px solid var(--hub-gold);
}
.hub-sec .hub-head h2 {
  font-family: var(--hub-serif); font-size: 38px; line-height: 1.18; letter-spacing: -.01em;
  color: var(--hub-ink); margin: 0 0 16px; font-weight: 700;
}
.hub-sec .hub-head p {
  font-size: 18.5px; line-height: 1.72; color: var(--hub-body); margin: 0; max-width: 68ch;
}
.hub-sec .hub-head p strong { color: var(--hub-ink); font-weight: 600; }

.hub-prose { max-width: 72ch; font-size: 17.5px; line-height: 1.78; color: var(--hub-body); }
.hub-prose h3 { font-family: var(--hub-serif); font-size: 23px; color: var(--hub-ink); margin: 34px 0 12px; }
.hub-prose p { margin: 0 0 18px; }
.hub-prose strong { color: var(--hub-ink); font-weight: 600; }
.hub-prose ul, .hub-prose ol { margin: 0 0 18px; padding-left: 22px; }
.hub-prose li { margin: 0 0 9px; }
.hub-prose a { color: var(--hub-primary); text-decoration: underline; text-underline-offset: 3px; }
.hub-sub { font-family: var(--hub-serif); font-size: 26px; color: var(--hub-ink); margin: 0 0 18px; }
/* ---- THE PAGE HEADER on every hub section index and leaf page (66 pages) ----
   ⚠ `.hub-lead` is a <section> — breadcrumbs + <h1> — NOT a paragraph. It was styled here as a
   TEXT BLOCK (`font-size:20px; max-width:70ch`), which squeezed the entire page header into a
   70-CHARACTER COLUMN and rendered the breadcrumbs at 20px. On 66 pages. Nothing could see it:
   every class WAS styled, so audit check 13 passed — it proves a rule EXISTS, never that the rule
   is RIGHT. A stylesheet is not verified by a linter; it is verified by looking at it. */
.hub-lead {
  background: var(--hub-tint); border-bottom: 1px solid var(--hub-line);
  padding: 34px 0 40px; margin: 0;
}
.hub-lead .container { max-width: 900px; }
.hub-lead .breadcrumbs {
  list-style: none; padding: 0; margin: 0 0 18px;
  font-size: 12.5px; letter-spacing: .02em; color: var(--hub-tan);
  display: flex; flex-wrap: wrap; gap: 0 6px;
}
.hub-lead .breadcrumbs li { display: inline-flex; align-items: center; }
.hub-lead .breadcrumbs li + li::before { content: '/'; color: var(--hub-gold); margin-right: 6px; }
.hub-lead .breadcrumbs a { color: var(--hub-tan); text-decoration: none; }
.hub-lead .breadcrumbs a:hover { color: var(--hub-primary); text-decoration: underline; }
.hub-lead .breadcrumbs li.active { color: var(--hub-body); font-weight: 500;
  max-width: 46ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* no max-width: the container already caps at 900px, and these titles run to 60+ characters
   ("Itch Before the Blisters: The Pre-Bullous Phase of Pemphigoid"). A ch-based cap on a display
   heading is how you get a two-word-per-line ransom note. */
.hub-lead .page-title {
  font-family: var(--hub-serif); font-size: 40px; line-height: 1.2; letter-spacing: -.01em;
  color: var(--hub-ink); margin: 0; font-weight: 700; text-wrap: balance;
}
.hub-lead .page-title span { color: var(--hub-primary); }
.hub-lead-blurb {
  font-size: 19px; line-height: 1.65; color: var(--hub-body);
  max-width: 66ch; margin: 16px 0 0;
}

.hub-diagram, .hub-svg { display: block; max-width: 100%; height: auto; margin: 32px auto; }

/* ---- 1. hero ------------------------------------------------------------- */
.hub-hook {
  font-family: var(--hub-serif); font-size: 25px; line-height: 1.48; color: #fff;
  max-width: 700px; margin: 16px 0 26px; text-shadow: 0 2px 12px rgba(0,0,0,.55);
}
.hub-stats { list-style: none; display: flex; flex-wrap: wrap; gap: 40px; padding: 0; margin: 0 0 10px; }
.hub-stats li { color: #fff; text-shadow: 0 2px 10px rgba(0,0,0,.5); }
.hub-stats strong {
  display: block; font-family: var(--hub-serif); font-size: 36px; line-height: 1.1; font-weight: 700;
  font-variant-numeric: tabular-nums; color: #fff;
}
.hub-stats span {
  font-size: 12px; letter-spacing: .12em; text-transform: uppercase; opacity: .9;
  display: block; margin-top: 4px;
}

/* ---- 2. the validation line — the page's one moment of directness --------- */
.hub-validation { padding: 82px 0; background: var(--hub-ink); }
.hub-validation .inner { max-width: 800px; margin: 0 auto; text-align: center; }
.hub-validation p {
  font-family: var(--hub-serif); font-size: 27px; line-height: 1.55; color: #F3E9E2; margin: 0 0 20px;
}
.hub-validation p:last-child { margin-bottom: 0; }
.hub-validation em { color: #E9B44C; font-style: normal; font-weight: 700; }

/* ---- 3. THE MAP — a numbered INDEX, not a tile wall. ----------------------
   This is the first thing a patient sees and it is the whole point of the section
   model: it tells them their condition has been mapped, and lets them go straight
   to their bit of it. It should read like the contents page of a serious book. */
.hub-map { padding: 0; }
.hub-map-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 0;
  border-top: 1px solid var(--hub-line); counter-reset: hubmap;
}
.hub-map-card {
  display: block; position: relative; padding: 26px 30px 26px 74px; text-decoration: none;
  border-bottom: 1px solid var(--hub-line); background: transparent;
  transition: background .18s ease, padding-left .18s ease;
}
.hub-map-grid > .hub-map-card:nth-child(odd) { border-right: 1px solid var(--hub-line); }
.hub-map-card::before {
  counter-increment: hubmap; content: counter(hubmap, decimal-leading-zero);
  position: absolute; left: 30px; top: 27px;
  font-family: var(--hub-serif); font-size: 19px; font-weight: 700; color: var(--hub-gold);
  font-variant-numeric: tabular-nums; transition: color .18s ease;
}
.hub-map-card h3 {
  font-family: var(--hub-serif); font-size: 21px; line-height: 1.3; color: var(--hub-ink);
  margin: 0 0 7px; font-weight: 700;
}
.hub-map-card p { font-size: 15px; line-height: 1.65; color: var(--hub-body); margin: 0; }
/* the page count. NOT .hub- prefixed, so audit check 13 never looked at it and it rendered as
   naked body text on every hub. A class the gate cannot see is a class nobody styles. */
.hub-map-card .count {
  display: inline-block; margin-top: 12px; font-size: 11.5px; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase; color: var(--hub-primary);
}
.hub-map-card:hover { background: var(--hub-tint); padding-left: 80px; }
.hub-map-card:hover h3 { color: var(--hub-primary); }
.hub-map-card:hover::before { color: var(--hub-cta); }
.hub-map-card:hover .count { color: var(--hub-cta); }

/* ---- card grids (articles, variants, related) ----------------------------- */
.hub-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.hub-cards.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.hub-card {
  position: relative; border: 1px solid var(--hub-line); border-radius: 2px; padding: 26px 26px 24px;
  background: var(--hub-paper); display: flex; flex-direction: column;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.hub-card::before {
  content: ''; position: absolute; left: -1px; right: -1px; top: -1px; height: 3px;
  background: var(--hub-gold); opacity: 0; transition: opacity .2s ease;
}
.hub-card:hover { transform: translateY(-3px); box-shadow: var(--hub-shadow-h); border-color: #DBC9BC; }
.hub-card:hover::before { opacity: 1; }
.hub-card .tag {
  display: inline-block; align-self: flex-start; font-size: 10.5px; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase; color: var(--hub-primary);
  background: var(--hub-tint2); padding: 5px 10px; border-radius: 2px; margin: 0 0 14px;
}
.hub-card h3 { font-family: var(--hub-serif); font-size: 20px; line-height: 1.35; margin: 0 0 11px; }
.hub-card h3 a { color: var(--hub-ink); text-decoration: none; }
.hub-card:hover h3 a { color: var(--hub-primary); }
.hub-card p { font-size: 15px; line-height: 1.65; color: var(--hub-body); margin: 0 0 18px; }
.hub-card .card-link {
  margin-top: auto; font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  color: var(--hub-primary); text-decoration: none;
}
.hub-card:hover .card-link { color: var(--hub-cta); }
.hub-viewall { margin: 34px 0 0; }
.hub-viewall a {
  display: inline-block; font-weight: 600; color: var(--hub-primary); text-decoration: none;
  font-size: 15px; border-bottom: 2px solid var(--hub-gold); padding-bottom: 3px;
}
.hub-viewall a:hover { color: var(--hub-cta); border-bottom-color: var(--hub-cta); }

/* ---- the five driver systems --------------------------------------------- */
.hub-causes {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0;
  margin: 30px 0 0; list-style: none; padding: 0; border-top: 2px solid var(--hub-gold);
}
.hub-causes li {
  border-bottom: 1px solid var(--hub-line); border-right: 1px solid var(--hub-line);
  background: transparent; padding: 22px 24px 24px;
}
.hub-causes strong {
  display: block; font-family: var(--hub-serif); color: var(--hub-ink); margin: 0 0 8px; font-size: 18px;
}
.hub-causes span { font-size: 14.5px; line-height: 1.62; color: var(--hub-body); }

/* ---- LIFES: a real timeline. The sequence IS the medicine, so show a spine. */
.hub-lifes { list-style: none; padding: 0; margin: 34px 0 0; }
.hub-lifes > li {
  position: relative; padding: 0 0 40px 78px; margin-left: 26px;
  border-left: 2px solid var(--hub-line);
}
.hub-lifes > li:last-child { border-left-color: transparent; padding-bottom: 0; }
.hub-lifes .letter {
  position: absolute; left: -27px; top: -4px; width: 52px; height: 52px; border-radius: 50%;
  background: var(--hub-primary); color: #fff; font-family: var(--hub-serif); font-weight: 700;
  font-size: 24px; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 0 6px var(--hub-paper), 0 0 0 7px var(--hub-line);
}
.hub-sec.alt .hub-lifes .letter { box-shadow: 0 0 0 6px var(--hub-tint), 0 0 0 7px var(--hub-line); }
.hub-lifes h3 { font-family: var(--hub-serif); font-size: 22px; margin: 4px 0 6px; color: var(--hub-ink); }
.hub-lifes .dur {
  display: inline-block; font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: var(--hub-gold); background: transparent; border: 1px solid var(--hub-line);
  padding: 4px 10px; border-radius: 2px; margin: 0 0 12px;
}
.hub-lifes p { font-size: 16.5px; line-height: 1.72; color: var(--hub-body); margin: 0; max-width: 66ch; }

/* ---- the sequence rule: THE most important clinical statement on the page.
        It is the argument that reframes every patient who tried a cleanse and got
        worse. It gets to be the visual anchor. ---------------------------------- */
.hub-warn {
  border-left: 5px solid var(--hub-rust); background: #FBF1E9; padding: 30px 34px;
  border-radius: 2px; margin: 40px 0 0; box-shadow: var(--hub-shadow);
}
.hub-warn h3 {
  font-family: var(--hub-serif); font-size: 23px; color: var(--hub-rust); margin: 0 0 12px; font-weight: 700;
}
.hub-warn p { font-size: 17.5px; line-height: 1.75; color: #4A342A; margin: 0 0 12px; }
.hub-warn p:last-child { margin-bottom: 0; }
.hub-warn strong { color: var(--hub-ink); font-weight: 700; }
.hub-warn em { font-style: italic; color: var(--hub-rust); }

/* ---- callouts / notes ----------------------------------------------------- */
.hub-callout, .hub-note {
  border-left: 3px solid var(--hub-gold); background: var(--hub-tint); padding: 20px 24px;
  margin: 28px 0; border-radius: 2px; font-size: 16.5px; line-height: 1.72; color: var(--hub-body);
}
.hub-callout strong, .hub-note strong { color: var(--hub-ink); }

/* ---- stages -------------------------------------------------------------- */
.hub-stages { list-style: none; padding: 0; margin: 30px 0 0; border-top: 1px solid var(--hub-line); }
.hub-stages li {
  display: grid; grid-template-columns: 74px 1fr; gap: 22px; align-items: start;
  padding: 24px 0; border-bottom: 1px solid var(--hub-line);
}
.hub-stages .st {
  font-family: var(--hub-serif); font-size: 30px; font-weight: 700; color: var(--hub-gold);
  font-variant-numeric: tabular-nums; line-height: 1;
}
.hub-stages h3 { font-family: var(--hub-serif); font-size: 20px; margin: 0 0 5px; color: var(--hub-ink); }
.hub-stages .when {
  display: inline-block; font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: var(--hub-primary); margin: 0 0 8px;
}
.hub-stages p { font-size: 16px; line-height: 1.7; color: var(--hub-body); margin: 0; }

/* ---- outcomes: falsifiable beats impressive ------------------------------- */
.hub-outcomes { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 22px; margin: 32px 0 0; }
.hub-outcome {
  background: var(--hub-paper); border: 1px solid var(--hub-line); border-top: 3px solid var(--hub-gold);
  border-radius: 2px; padding: 24px 22px;
}
.hub-outcome .fig {
  display: block; font-family: var(--hub-serif); font-size: 34px; font-weight: 700;
  color: var(--hub-primary); line-height: 1.15; margin: 0 0 8px; font-variant-numeric: tabular-nums;
}
.hub-outcome p { font-size: 15px; line-height: 1.65; color: var(--hub-body); margin: 0; }
.hub-outcome .src { display: block; font-size: 12px; color: var(--hub-tan); margin-top: 10px; }
.hub-outcome-note { font-size: 15px; color: var(--hub-body); margin: 22px 0 0; font-style: italic; }

/* ---- objections ----------------------------------------------------------- */
.hub-objection {
  border: 1px solid var(--hub-line); border-radius: 2px; background: var(--hub-paper);
  padding: 26px 28px; margin: 0 0 18px;
}
.hub-objection h3 {
  font-family: var(--hub-serif); font-size: 20px; color: var(--hub-ink); margin: 0 0 12px;
  padding-left: 26px; position: relative;
}
.hub-objection h3::before {
  content: '\201C'; position: absolute; left: 0; top: -6px;
  font-family: var(--hub-serif); font-size: 34px; color: var(--hub-gold); line-height: 1;
}
.hub-objection p { font-size: 16.5px; line-height: 1.72; color: var(--hub-body); margin: 0 0 12px; }
.hub-objection p:last-child { margin-bottom: 0; }
.hub-objection .obj-cta { font-weight: 600; color: var(--hub-primary); text-decoration: none; }
.hub-objection .obj-cta:hover { color: var(--hub-cta); text-decoration: underline; }

/* ---- the remote model: the strongest claim we own, because it is TRUE ------ */
.hub-remote { padding: 76px 0; background: var(--hub-ink); color: #E8DCD2; }
.hub-remote h2 { font-family: var(--hub-serif); font-size: 34px; color: #fff; margin: 0 0 14px; }
.hub-remote .lede { font-size: 18.5px; line-height: 1.72; color: #C9B8AA; max-width: 70ch; margin: 0 0 30px; }
.hub-remote ul { list-style: none; padding: 0; margin: 0; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(238px, 1fr)); gap: 22px; }
.hub-remote li {
  padding: 20px 0 0; border-top: 2px solid rgba(184,134,11,.55);
  font-size: 15.5px; line-height: 1.68; color: #C9B8AA;
}
.hub-remote li strong { display: block; color: #fff; font-family: var(--hub-serif); font-size: 18px; margin: 0 0 7px; }
.hub-remote .no-clinic {
  margin: 34px 0 0; padding: 22px 26px; border-left: 4px solid var(--hub-cta);
  background: rgba(255,255,255,.05); font-size: 18px; line-height: 1.65; color: #fff;
}
.hub-remote .no-clinic strong { color: #E9B44C; }

/* ---- the search moment (the hero video) ---------------------------------- */
.hub-search-moment { padding: 72px 0; background: var(--hub-tint); }
.hub-search-moment .sm-label {
  display: block; font-size: 11.5px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: var(--hub-gold); margin: 0 0 14px;
}
.hub-search-moment .sm-frame {
  max-width: 760px; margin: 0 auto; border: 1px solid var(--hub-line); border-radius: 3px;
  overflow: hidden; box-shadow: var(--hub-shadow); background: #000;
}
.hub-search-moment video { display: block; width: 100%; height: auto; }
.hub-search-moment .sm-caption {
  max-width: 760px; margin: 20px auto 0; font-size: 16.5px; line-height: 1.7;
  color: var(--hub-body); text-align: center;
}
.hub-search-moment .sm-caption strong { color: var(--hub-ink); }
@media (prefers-reduced-motion: reduce) { .hub-search-moment { display: none; } }

/* ---- CTA ------------------------------------------------------------------ */
.hub-cta { padding: 84px 0; background: linear-gradient(135deg, var(--hub-primary) 0%, var(--hub-deep) 100%); }
.hub-cta .inner { max-width: 720px; margin: 0 auto; text-align: center; }
.hub-cta h2 { font-family: var(--hub-serif); font-size: 36px; color: #fff; margin: 0 0 16px; }
.hub-cta p { font-size: 18px; line-height: 1.7; color: rgba(255,255,255,.9); margin: 0 0 12px; }
.hub-cta .doc { font-size: 15px; color: rgba(255,255,255,.72); margin: 0 0 30px; }
.hub-cta .btns { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.hub-cta .btn-primary-hub, .hub-cta .btn-ghost-hub {
  display: inline-block; padding: 15px 32px; border-radius: 2px; font-size: 14px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; text-decoration: none; transition: .18s;
}
.hub-cta .btn-primary-hub { background: var(--hub-cta); color: #fff; }
.hub-cta .btn-primary-hub:hover { background: #E25A0A; transform: translateY(-1px); }
.hub-cta .btn-ghost-hub { border: 1px solid rgba(255,255,255,.5); color: #fff; }
.hub-cta .btn-ghost-hub:hover { background: rgba(255,255,255,.12); border-color: #fff; }
.cta-actions { display: flex; gap: 14px; flex-wrap: wrap; margin: 26px 0 0; }
.cta-primary {
  display: inline-block; padding: 14px 30px; background: var(--hub-cta); color: #fff;
  border-radius: 2px; font-weight: 600; text-decoration: none; font-size: 14px;
  letter-spacing: .07em; text-transform: uppercase;
}
.cta-primary:hover { background: #E25A0A; color: #fff; }
.cta-secondary {
  display: inline-block; padding: 14px 30px; border: 1px solid var(--hub-line); color: var(--hub-primary);
  border-radius: 2px; font-weight: 600; text-decoration: none; font-size: 14px;
  letter-spacing: .07em; text-transform: uppercase;
}
.cta-secondary:hover { border-color: var(--hub-primary); background: var(--hub-tint); }
.cta-note { font-size: 14.5px; color: var(--hub-tan); margin: 16px 0 0; }

/* ---- tables: clinical, not decorative ------------------------------------ */
.hub-table-wrap { overflow-x: auto; margin: 32px 0; -webkit-overflow-scrolling: touch; }
.hub-table, .hub-table-wrap table {
  width: 100%; border-collapse: collapse; font-size: 15.5px; min-width: 560px; background: var(--hub-paper);
}
.hub-table-wrap th, .hub-table-wrap td, .hub-table th, .hub-table td {
  border-bottom: 1px solid var(--hub-line); padding: 14px 16px; text-align: left;
  vertical-align: top; line-height: 1.6; color: var(--hub-body);
}
.hub-table-wrap thead th, .hub-table thead th {
  background: transparent; border-bottom: 2px solid var(--hub-gold); color: var(--hub-ink);
  font-family: 'Roboto', sans-serif; font-weight: 600; font-size: 12px; letter-spacing: .1em;
  text-transform: uppercase;
}
.hub-table-wrap tbody th, .hub-table tbody th {
  width: 26%; color: var(--hub-ink); font-weight: 600; background: var(--hub-tint);
}
.hub-table-wrap tbody tr:hover td { background: var(--hub-tint); }

/* ---- the sticky sub-nav — how the patient moves around their condition ----- */
.hub-subnav {
  position: sticky; top: 0; z-index: 900; background: var(--hub-primary);
  box-shadow: 0 2px 18px rgba(42,27,18,.22);
}
.hub-subnav .container { display: flex; align-items: center; gap: 24px; }
.hub-subnav-label { flex: 0 0 auto; padding: 13px 0; }
.hub-subnav-label a {
  color: #fff; font-family: var(--hub-serif); font-size: 18px; font-weight: 700;
  white-space: nowrap; text-decoration: none;
}
.hub-subnav ul {
  display: flex; gap: 2px; margin: 0; padding: 0; list-style: none;
  overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; flex: 1 1 auto;
}
.hub-subnav ul::-webkit-scrollbar { display: none; }
.hub-subnav li { flex: 0 0 auto; list-style: none; }
.hub-subnav li a {
  display: block; padding: 16px 14px; color: rgba(255,255,255,.8); font-size: 13px; font-weight: 500;
  letter-spacing: .05em; text-transform: uppercase; white-space: nowrap; text-decoration: none;
  border-bottom: 3px solid transparent; transition: .18s;
}
.hub-subnav li a:hover { color: #fff; background: rgba(0,0,0,.12); }
.hub-subnav li.active a { color: #fff; font-weight: 700; border-bottom-color: var(--hub-cta); background: rgba(0,0,0,.16); }

/* ---- backlinks / badges / pager ------------------------------------------- */
.hub-backlink, .variant-backlink {
  display: block; background: var(--hub-tint); border-left: 4px solid var(--hub-gold);
  padding: 18px 22px; margin: 0 0 26px; border-radius: 2px;
  font-size: 15.5px; line-height: 1.65; color: var(--hub-body);
}
.hub-backlink a, .variant-backlink a { color: var(--hub-primary); font-weight: 600; text-decoration: none; }
.hub-backlink a:hover, .variant-backlink a:hover { color: var(--hub-cta); text-decoration: underline; }
.hub-pillar-badge {
  display: inline-block; font-size: 10.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: #fff; background: var(--hub-gold); padding: 4px 9px; border-radius: 2px; margin-left: 8px;
  vertical-align: middle;
}
.hub-pager { display: flex; justify-content: space-between; gap: 18px; margin: 52px 0 0;
  padding-top: 26px; border-top: 1px solid var(--hub-line); }
.hub-pager a { color: var(--hub-primary); font-weight: 600; text-decoration: none; font-size: 15px; }
.hub-pager a:hover { color: var(--hub-cta); }
.hub-steps { list-style: none; padding: 0; margin: 26px 0 0; }
.hub-steps li { padding: 0 0 16px 30px; position: relative; font-size: 16.5px; line-height: 1.7; color: var(--hub-body); }
.hub-steps li::before {
  content: ''; position: absolute; left: 0; top: 10px; width: 9px; height: 9px;
  border-radius: 50%; background: var(--hub-gold);
}
.hub-article { max-width: 74ch; }
.ba-info { font-size: 14.5px; color: var(--hub-body); }
.ba-info .ba-stage { font-weight: 600; color: var(--hub-primary); }

.medical-disclaimer {
  margin: 44px 0 0; padding: 18px 22px; border-top: 1px solid var(--hub-line);
  font-size: 13.5px; line-height: 1.65; color: var(--hub-tan);
}

/* ---- responsive ----------------------------------------------------------- */
@media (max-width: 991px) {
  .hub-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hub-sec .hub-head h2 { font-size: 32px; }
}
@media (max-width: 767px) {
  .hub-sec { padding: 52px 0; }
  .hub-sec .hub-head { margin-bottom: 30px; }
  .hub-sec .hub-head h2 { font-size: 27px; }
  .hub-sec .hub-head p { font-size: 17px; }
  .hub-cards, .hub-cards.two { grid-template-columns: minmax(0, 1fr); }
  .hub-map-grid { grid-template-columns: 1fr; }
  .hub-map-grid > .hub-map-card:nth-child(odd) { border-right: none; }
  .hub-map-card { padding: 22px 20px 22px 62px; }
  .hub-map-card::before { left: 20px; }
  .hub-map-card:hover { padding-left: 66px; }
  .hub-hook { font-size: 20px; }
  .hub-stats { gap: 26px; }
  .hub-stats strong { font-size: 28px; }
  .hub-validation { padding: 56px 0; }
  .hub-validation p { font-size: 21px; }
  .hub-lifes > li { padding-left: 62px; margin-left: 22px; }
  .hub-lifes .letter { width: 44px; height: 44px; font-size: 20px; left: -23px; }
  .hub-warn { padding: 22px 24px; }
  .hub-remote h2, .hub-cta h2 { font-size: 27px; }
  .hub-subnav .container { gap: 12px; }
  .hub-subnav-label a { font-size: 16px; }
  .hub-subnav li a { padding: 13px 11px; font-size: 12px; }
  .hub-stages li { grid-template-columns: 54px 1fr; gap: 16px; }
  .hub-stages .st { font-size: 24px; }
}

/* ── "The Many Presentations of HS" spectrum gallery (2026-07-28) ───────────────
   before-after-section repurposed as the framing intro (drag-slider retired); the
   #case-studies section holds the site-grouped gallery + demoted documented measures. */
.before-after-section { padding: 74px 0 38px; background: var(--hub-tint); }
.hs-spectrum-head { max-width: 820px; margin: 0 auto; text-align: center; }
.hs-spectrum-head .hs-kicker {
  display: inline-block; font-family: 'Roboto', sans-serif; font-size: 11.5px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--hub-gold);
  padding: 0 0 10px; margin: 0 0 14px; border-bottom: 2px solid var(--hub-gold);
}
.hs-spectrum-head h2 {
  font-family: var(--hub-serif); font-size: 38px; line-height: 1.18; letter-spacing: -.01em;
  color: var(--hub-ink); margin: 0 0 16px; font-weight: 700;
}
.hs-spectrum-head p { font-size: 18px; line-height: 1.72; color: var(--hub-body); margin: 0 auto 14px; max-width: 70ch; }
.hs-spectrum-head p:last-child { margin-bottom: 0; }
.hs-spectrum-head p.hs-emphasis strong { color: var(--hub-ink); }
#case-studies { border-top: 0; }

.hs-spectrum { display: flex; flex-direction: column; gap: 46px; }
.hs-site-title {
  font-family: var(--hub-serif); font-size: 23px; color: var(--hub-ink); font-weight: 700;
  margin: 0 0 20px; padding: 0 0 12px; border-bottom: 1px solid var(--hub-line);
}
.hs-case-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(288px, 1fr)); gap: 22px; align-items: start; }
.hs-case { margin: 0; background: var(--hub-paper); border: 1px solid var(--hub-line); border-radius: 14px; overflow: hidden; box-shadow: var(--hub-shadow); }
.hs-case-imgs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; background: var(--hub-line); }
.hs-shot { position: relative; margin: 0; background: #1a1a1a; }
.hs-shot img { display: block; width: 100%; height: 228px; object-fit: cover; }
.hs-shot span {
  position: absolute; left: 0; bottom: 0; font-family: 'Roboto', sans-serif; font-size: 10.5px; font-weight: 600;
  letter-spacing: .04em; text-transform: uppercase; color: #fff; background: rgba(26,17,10,.66);
  padding: 4px 9px; border-top-right-radius: 7px;
}
.hs-case-meta { padding: 15px 17px 17px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.hs-hurley {
  display: inline-block; font-family: 'Roboto', sans-serif; font-size: 10.5px; font-weight: 700;
  letter-spacing: .05em; text-transform: uppercase; padding: 4px 11px; border-radius: 20px;
}
.hs-h1 { background: #F5EFDF; color: var(--hub-gold); }
.hs-h2 { background: #FAE7D6; color: var(--hub-rust); }
.hs-h3 { background: #F0DED5; color: var(--hub-deep); }
.hs-facts { font-size: 14.5px; line-height: 1.5; color: var(--hub-body); }

.hs-documented { margin: 58px 0 0; padding: 40px 0 0; border-top: 1px solid var(--hub-line); }
.hs-documented > h3 { font-family: var(--hub-serif); font-size: 25px; color: var(--hub-ink); margin: 0 0 10px; }
.hs-documented > p { font-size: 16.5px; line-height: 1.68; color: var(--hub-body); max-width: 76ch; margin: 0 0 26px; }
.hs-detail-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; align-items: start; }
.hs-detail { background: var(--hub-paper); border: 1px solid var(--hub-line); border-radius: 12px; padding: 20px 22px; }
.hs-detail h4 { font-family: var(--hub-serif); font-size: 18.5px; color: var(--hub-ink); margin: 0 0 3px; }
.hs-detail .hs-detail-sub { font-family: 'Roboto', sans-serif; font-size: 12.5px; color: var(--hub-tan); margin: 0 0 15px; }
.hs-detail table { width: 100%; border-collapse: collapse; font-size: 14px; }
.hs-detail th, .hs-detail td { text-align: left; padding: 7px 4px; border-bottom: 1px solid var(--hub-line); }
.hs-detail thead th { font-family: 'Roboto', sans-serif; font-size: 10.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--hub-tan); font-weight: 600; }
.hs-detail tbody td:last-child { color: var(--hub-primary); font-weight: 600; }
.hs-detail .hs-remission { font-size: 13.5px; line-height: 1.55; color: var(--hub-body); margin: 15px 0 0; padding: 12px 14px; background: var(--hub-tint); border-radius: 8px; }
.hs-detail .hs-remission strong { color: var(--hub-ink); }

.hs-disclaimer { margin: 42px 0 0; padding: 22px 26px; background: #FBF3E9; border-left: 4px solid var(--hub-cta); border-radius: 0 10px 10px 0; }
.hs-disclaimer p { font-size: 15.5px; line-height: 1.7; color: var(--hub-body); margin: 0; }
.hs-disclaimer strong { color: var(--hub-ink); }

@media (max-width: 991px) { .hs-shot img { height: 210px; } }
@media (max-width: 767px) {
  .before-after-section { padding: 50px 0 28px; }
  .hs-spectrum-head h2 { font-size: 27px; }
  .hs-spectrum-head p { font-size: 16px; }
  .hs-spectrum { gap: 34px; }
  .hs-case-grid, .hs-detail-grid { grid-template-columns: 1fr; }
  .hs-documented > h3 { font-size: 22px; }
}

/* ── Individual HS case pages (2026-07-29) — reuses .hs-case/.hs-detail/.hs-hurley/
   .hs-disclaimer tokens from the spectrum gallery for full visual consistency. ─────────── */
.case-hero { padding: 56px 0 10px; }
.case-hero .kicker {
  display: inline-block; font-family: 'Roboto', sans-serif; font-size: 11.5px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--hub-gold);
  padding: 0 0 10px; margin: 0 0 14px; border-bottom: 2px solid var(--hub-gold);
}
.case-hero h1 {
  font-family: var(--hub-serif); font-size: 36px; line-height: 1.2; color: var(--hub-ink);
  margin: 0 0 18px; font-weight: 700; max-width: 26ch;
}
/* two-column hero: prose left, scannable snapshot right (fills the dead column) */
.case-hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 52px; align-items: start; }
.case-hero-main { min-width: 0; }

.case-snapshot {
  background: var(--hub-paper); border: 1px solid var(--hub-line); border-radius: 16px;
  padding: 26px 28px 22px; box-shadow: var(--hub-shadow); position: sticky; top: 96px;
}
.case-snapshot .snap-title {
  font-family: 'Roboto', sans-serif; font-size: 11.5px; font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--hub-tan); margin: 0 0 18px; padding: 0 0 12px;
  border-bottom: 1px solid var(--hub-line);
}
.snap-facts { margin: 0 0 20px; }
.snap-facts > div { display: flex; gap: 14px; align-items: baseline; padding: 7px 0; }
.snap-facts dt {
  flex: 0 0 106px; font-family: 'Roboto', sans-serif; font-size: 12px; font-weight: 600;
  letter-spacing: .03em; text-transform: uppercase; color: var(--hub-tan);
}
.snap-facts dd { margin: 0; flex: 1; font-size: 14.5px; line-height: 1.45; color: var(--hub-ink); }

.snap-deltas { padding: 16px 18px; background: var(--hub-tint); border-radius: 10px; margin: 0 0 16px; }
.snap-deltas .snap-label {
  display: block; font-family: 'Roboto', sans-serif; font-size: 10.5px; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: var(--hub-tan); margin: 0 0 10px;
}
.snap-deltas ul { list-style: none; margin: 0; padding: 0; }
.snap-deltas li { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 5px 0; }
.snap-deltas li .m { font-size: 13.5px; color: var(--hub-body); }
.snap-deltas li .v { font-family: 'Roboto', sans-serif; font-size: 13.5px; white-space: nowrap; }
.snap-deltas li .v b { color: var(--hub-body); font-weight: 600; }
.snap-deltas li .v i { font-style: normal; color: var(--hub-tan); margin: 0 5px; }
.snap-deltas li .v b.fin { color: var(--hub-primary); font-weight: 700; }

.snap-status {
  font-family: 'Roboto', sans-serif; font-size: 13.5px; line-height: 1.5; font-weight: 500;
  margin: 0 0 18px; padding: 11px 14px; border-radius: 8px; border-left: 3px solid;
}
.snap-status.snap-full { background: #F3EEE4; border-left-color: var(--hub-gold); color: var(--hub-deep); }
.snap-status.snap-partial { background: #FAECE0; border-left-color: var(--hub-cta); color: var(--hub-deep); }

.snap-jump { border-top: 1px solid var(--hub-line); padding-top: 15px; }
.snap-jump span {
  display: block; font-family: 'Roboto', sans-serif; font-size: 10.5px; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: var(--hub-tan); margin: 0 0 9px;
}
.snap-jump a {
  display: block; font-family: 'Roboto', sans-serif; font-size: 14px; color: var(--hub-cta);
  padding: 4px 0; line-height: 1.4;
}
.snap-jump a:hover { text-decoration: underline; }
.case-presentation { font-size: 17.5px; line-height: 1.78; color: var(--hub-body); max-width: 74ch; margin: 0 0 6px; }

.case-course-list { display: flex; flex-direction: column; gap: 0; }
.case-course-item { display: flex; gap: 26px; padding: 26px 0; border-top: 1px solid var(--hub-line); }
.case-course-item:first-child { border-top: 0; padding-top: 6px; }
.case-course-item .shot { flex: 0 0 220px; border-radius: 12px; overflow: hidden; background: #1a1a1a; box-shadow: var(--hub-shadow); }

/* ⚠ CLINICAL PHOTOGRAPHS ARE PORTRAIT (675x1200, 9:16) — NEVER FORCE A FIXED PIXEL HEIGHT
   WITH object-fit:cover ON THEM (fixed 2026-07-31).
   The previous rules were `width:100%; height:220px/260px; object-fit:cover`. In the wide
   .case-images-only container that produced an ~810x260 box (3:1) holding a 0.56:1 photo, so
   cover cropped away ~90% of the image height and kept a horizontal band of mostly background.
   On a clinical photograph that crops out the lesion the page exists to document — the failure
   is clinical, not cosmetic. Constrain the WIDTH and let height follow the natural aspect. */
.case-course-item .shot img { display: block; width: 100%; height: auto; cursor: zoom-in; }
.case-course-item .txt { flex: 1; min-width: 0; padding-top: 4px; }
.case-course-item .txt .month {
  display: inline-block; font-family: 'Roboto', sans-serif; font-size: 11px; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--hub-cta); margin: 0 0 8px;
}
.case-course-item .txt p { font-size: 16px; line-height: 1.68; color: var(--hub-body); margin: 0; }
.case-images-only { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin: 22px 0; }
.case-images-only figure { margin: 0; }
.case-images-only .shot { border-radius: 12px; overflow: hidden; background: #1a1a1a; box-shadow: var(--hub-shadow); }
.case-images-only .shot { max-width: 340px; margin-left: auto; margin-right: auto; }
.case-images-only .shot img { display: block; width: 100%; height: auto; cursor: zoom-in; }
.case-images-only figcaption { font-size: 13.5px; color: var(--hub-body); margin-top: 8px; }
.case-course-note { font-size: 16px; line-height: 1.7; color: var(--hub-body); max-width: 74ch; margin: 0 0 8px; }

.case-outcome-wrap .hs-detail { max-width: 480px; }
.case-remission-note { font-size: 16.5px; line-height: 1.75; color: var(--hub-body); max-width: 74ch; margin: 18px 0 0; }
.case-about p { font-size: 16.5px; line-height: 1.75; color: var(--hub-body); max-width: 74ch; }

.case-crosslinks-head { font-family: var(--hub-serif); font-size: 22px; color: var(--hub-ink); margin: 0 0 18px; }
.case-crosslinks-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.case-crosslinks-grid a {
  display: block; background: var(--hub-paper); border: 1px solid var(--hub-line); border-radius: 10px;
  padding: 14px 16px; font-family: 'Roboto', sans-serif; font-size: 14.5px; color: var(--hub-ink);
  font-weight: 500; transition: .15s; line-height: 1.4;
}
.case-crosslinks-grid a:hover { border-color: var(--hub-gold); background: var(--hub-tint); }
.case-crosslinks-grid a .grp { display: block; font-size: 10.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--hub-tan); margin-bottom: 4px; font-weight: 600; }
.case-back-to-hub { display: inline-block; margin-top: 22px; font-family: 'Roboto', sans-serif; font-size: 14.5px; font-weight: 600; color: var(--hub-cta); }
.case-cta { text-align: center; }
.case-cta a.consult-btn {
  display: inline-block; background: var(--hub-cta); color: #fff; font-family: 'Roboto', sans-serif;
  font-weight: 600; font-size: 15.5px; padding: 15px 42px; border-radius: 30px; letter-spacing: .02em;
}

@media (max-width: 1199px) {
  .case-hero-grid { grid-template-columns: minmax(0, 1fr) 330px; gap: 36px; }
  .snap-facts dt { flex-basis: 92px; }
}
@media (max-width: 991px) {
  .case-hero-grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .case-snapshot { position: static; max-width: 560px; }
}
@media (max-width: 767px) {
  .case-hero { padding: 40px 0 6px; }
  .case-hero h1 { font-size: 27px; }
  .case-snapshot { padding: 22px 20px 18px; }
  .snap-facts > div { flex-direction: column; gap: 3px; padding: 8px 0; }
  .snap-facts dt { flex-basis: auto; }
  .case-course-item { flex-direction: column; gap: 14px; padding: 20px 0; }
  .case-course-item .shot { flex: none; }
  .case-course-item .shot { max-width: 320px; margin-left: auto; margin-right: auto; }
  .case-course-item .shot img { height: auto; }
}

/* case-card "read more" link (2026-07-29) */
.hs-case-link {
  display: inline-block; margin-top: 4px; font-family: 'Roboto', sans-serif; font-size: 13.5px;
  font-weight: 600; color: var(--hub-cta);
}
.hs-case-link:hover { text-decoration: underline; }

/* ── CLINICAL PHOTO LIGHTBOX (paired with the block appended to elite/js/award.js) ──────────
   Markup is created at runtime, so these styles are the only stylesheet change needed. */
.ea-lb-open { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.ea-lb-open:focus-visible { outline: 2px solid var(--hub-cta, #C1440E); outline-offset: 3px; }
.ea-lb[hidden] { display: none; }
.ea-lb {
  position: fixed; inset: 0; z-index: 100000;
  display: flex; align-items: center; justify-content: center; gap: 8px;
  background: rgba(12, 8, 6, .93); padding: 24px;
}
.ea-lb-fig { margin: 0; max-width: min(92vw, 780px); max-height: 90vh; display: flex;
  flex-direction: column; align-items: center; }
.ea-lb-fig img { max-width: 100%; max-height: 78vh; width: auto; height: auto;
  object-fit: contain; border-radius: 8px; background: #1a1a1a; }
.ea-lb-fig figcaption { color: #F5E6D3; font-family: 'Roboto', sans-serif; font-size: 14px;
  line-height: 1.5; text-align: center; margin-top: 14px; max-width: 60ch; }
.ea-lb button { background: rgba(255, 255, 255, .1); color: #fff; border: 0; cursor: pointer;
  border-radius: 50%; width: 46px; height: 46px; font-size: 26px; line-height: 1;
  flex: 0 0 auto; transition: background .2s; }
.ea-lb button:hover { background: rgba(255, 255, 255, .22); }
.ea-lb button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.ea-lb-x { position: absolute; top: 18px; right: 18px; }
@media (max-width: 700px) {
  .ea-lb { padding: 12px; gap: 4px; }
  .ea-lb button { width: 40px; height: 40px; font-size: 22px; }
  .ea-lb-fig img { max-height: 66vh; }
  .ea-lb-p { position: absolute; left: 10px; bottom: 18px; }
  .ea-lb-n { position: absolute; right: 10px; bottom: 18px; }
}
@media (prefers-reduced-motion: reduce) { .ea-lb button { transition: none; } }

/* The lightbox trigger is inserted as the PARENT of .shot at runtime, so it becomes the flex
   child and the original `.case-course-item .shot{flex:0 0 220px}` no longer constrains width.
   Without this the portrait photos expanded to the full container (1294x2300). Re-apply the
   sizing to the wrapper. */
.case-course-item > .ea-lb-open { flex: 0 0 220px; }
.case-images-only .ea-lb-open { max-width: 340px; margin-left: auto; margin-right: auto; }
@media (max-width: 700px) {
  .case-course-item > .ea-lb-open { flex: none; max-width: 320px; margin-left: auto; margin-right: auto; }
}
