/* Fonts are linked from each page's <head> so they load in parallel. */

/* ══ Tokens ══════════════════════════════════════════════════════════════
   Light is the base palette. Dark redefines only what changes, guarded so a
   manual [data-theme="light"] still wins inside a dark-preferring OS.        */
:root {
  --field:      #ececee;
  --surface:    #ffffff;
  --surface-2:  #f5f4f2;
  --surface-3:  #efeeec;
  --cream:      #f7f1e4;

  --ink:        #101012;
  --ink-2:      rgba(16, 16, 18, .60);
  --ink-3:      rgba(16, 16, 18, .38);
  --hair:       rgba(16, 16, 18, .09);
  --hair-2:     rgba(16, 16, 18, .16);

  --accent:     #d63a24;
  --on-accent:  #ffffff;
  --mark:       #f0dcbc;
  --up:         #7cc0a2;
  --up-ink:     #1c6a4c;
  --down:       #e8a19a;
  --down-ink:   #8f3227;
  --down-tint:  #fbeeec;

  --art:        0;            /* invert() amount for the ink line art       */
  --glass:      rgba(255, 255, 255, .68);
  --glass-edge: rgba(255, 255, 255, .55);
  --shadow-sm:  0 1px 2px rgba(16,16,18,.05), 0 4px 14px rgba(16,16,18,.045);
  --shadow-lg:  0 2px 6px rgba(16,16,18,.06), 0 18px 50px rgba(16,16,18,.10);

  --r-xl: 30px;  --r-lg: 22px;  --r-md: 15px;  --r-sm: 10px;
  --gap: 12px;

  --ui: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --serif: "Fraunces", "Iowan Old Style", Georgia, serif;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --field:     #0a0a0b;
    --surface:   #161618;
    --surface-2: #1e1e21;
    --surface-3: #242428;
    --cream:     #241f16;

    --ink:       #f2f2f0;
    --ink-2:     rgba(242, 242, 240, .62);
    --ink-3:     rgba(242, 242, 240, .38);
    --hair:      rgba(242, 242, 240, .11);
    --hair-2:    rgba(242, 242, 240, .20);

    --accent:    #ff5137;
    --mark:      #5c4526;
    --up:        #2f6b53;  --up-ink:   #9fe0c2;
    --down:      #7a3229;  --down-ink: #ffb3a8;
    --down-tint: #2a1a17;

    --art:       1;         /* invert the ink line art for a dark ground */
    --glass:      rgba(22, 22, 24, .66);
    --glass-edge: rgba(255, 255, 255, .10);
    --shadow-sm: 0 1px 2px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.3);
    --shadow-lg: 0 2px 6px rgba(0,0,0,.45), 0 18px 50px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"] {
  --field:#0a0a0b; --surface:#161618; --surface-2:#1e1e21; --surface-3:#242428; --cream:#241f16;
  --ink:#f2f2f0; --ink-2:rgba(242,242,240,.62); --ink-3:rgba(242,242,240,.38);
  --hair:rgba(242,242,240,.11); --hair-2:rgba(242,242,240,.20);
  --accent:#ff5137; --mark:#5c4526;
  --up:#2f6b53; --up-ink:#9fe0c2; --down:#7a3229; --down-ink:#ffb3a8; --down-tint:#2a1a17;
  --art:1;
  --glass:rgba(22,22,24,.66); --glass-edge:rgba(255,255,255,.10);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.3);
  --shadow-lg:0 2px 6px rgba(0,0,0,.45), 0 18px 50px rgba(0,0,0,.5);
}

/* ══ Base ════════════════════════════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  /* spacing in rem so a larger text setting scales the layout with it */
  font: 100%/1.55 var(--ui);
  background: var(--field);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  transition: background-color .12s linear, color .12s linear;   /* eased, but not sluggish */
}
img, svg { max-width: 100%; display: block; }
[hidden] { display: none !important; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; }

/* One focus treatment everywhere, keyboard-only. */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  border-radius: 6px;
}

/* ══ Type scale — tracking and leading are size-specific ════════════════ */
.t-display, .t-h1, .t-h2, .t-h3 { font-family: var(--serif); font-optical-sizing: auto; font-weight: 400; margin: 0; }
.t-display { font-size: clamp(2.6rem, 4.6vw, 4.35rem); line-height: 1.01; letter-spacing: -.028em; }
.t-h1      { font-size: clamp(2.1rem, 3.2vw, 3.1rem);  line-height: 1.06; letter-spacing: -.024em; }
.t-h2      { font-size: clamp(1.5rem, 1.9vw, 1.95rem); line-height: 1.1;  letter-spacing: -.018em; }
.t-h3      { font-size: 1.15rem;                       line-height: 1.22; letter-spacing: -.012em; }
.t-body    { font-size: .945rem; line-height: 1.62; letter-spacing: 0; color: var(--ink-2); margin: 0; }
.t-meta    { font-size: .8rem; line-height: 1.3; letter-spacing: .002em; color: var(--ink-2); }
.t-label   { font-size: .655rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; color: var(--ink-3); }

.mark   { background: var(--mark); box-decoration-break: clone; -webkit-box-decoration-break: clone; padding: 0 .1em; border-radius: 3px; }
.mark-x { background: var(--accent); color: var(--on-accent); box-decoration-break: clone; -webkit-box-decoration-break: clone; padding: 0 .12em; border-radius: 3px; }

.skip {
  position: fixed; top: .6rem; left: .6rem; z-index: 200;
  background: var(--ink); color: var(--surface);
  padding: .7rem 1.1rem; border-radius: 999px; font-size: .85rem;
  transform: translateY(-160%);
  transition: transform .2s ease;
}
.skip:focus-visible { transform: translateY(0); }

/* ══ Page shell ══════════════════════════════════════════════════════════ */
.shell {
  max-width: 1560px; margin: 0 auto;
  padding: clamp(.5rem, 1.6vw, 1.6rem);
  padding-left:  max(clamp(.5rem, 1.6vw, 1.6rem), env(safe-area-inset-left));
  padding-right: max(clamp(.5rem, 1.6vw, 1.6rem), env(safe-area-inset-right));
}
.paper {
  background: var(--surface);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-lg);
  position: relative;
  /* No overflow clip here: any non-visible overflow would make .paper the
     scrollport and quietly kill the masthead's position: sticky. Children
     round their own corners instead. */
}

/* ══ Masthead — a translucent layer content scrolls beneath ═════════════ */
.masthead {
  position: sticky; top: 0; z-index: 60;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 1rem;
  padding: .8rem clamp(.8rem, 1.4vw, 1.35rem);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  background: var(--glass);
  backdrop-filter: blur(22px) saturate(180%);
  -webkit-backdrop-filter: blur(22px) saturate(180%);
}
/* Scroll edge effect, not a hard 1px rule — and only once content is under it. */
.masthead::after {
  content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 22px;
  background: linear-gradient(var(--glass), transparent);
  -webkit-mask-image: linear-gradient(#000, transparent);
  mask-image: linear-gradient(#000, transparent);
  opacity: 0; transition: opacity .25s ease; pointer-events: none;
}
.masthead[data-stuck="true"]::after { opacity: 1; }

.mast-l, .mast-r { display: flex; align-items: center; gap: .35rem; min-width: 0; }
.mast-r { justify-content: flex-end; }

.wordmark {
  font-family: var(--serif); font-optical-sizing: auto;
  font-size: clamp(1.15rem, 1.75vw, 1.75rem); font-weight: 500;
  letter-spacing: -.012em; white-space: nowrap; line-height: 1;
}
.wordmark .dim { color: var(--ink-3); }

/* Listen pill */
.listen {
  display: inline-flex; align-items: center; gap: .5rem;
  background: var(--ink); color: var(--surface);
  border-radius: 999px; padding: .3rem .3rem .3rem .7rem; margin-right: .5rem;
  cursor: pointer; white-space: nowrap;
}
.listen b { font-size: .8rem; font-weight: 600; letter-spacing: .01em; font-variant-numeric: tabular-nums; }
.listen .disc {
  width: 1.85rem; height: 1.85rem; border-radius: 999px;
  background: var(--surface); color: var(--ink);
  display: grid; place-items: center;
}
.listen .disc svg { width: .8rem; height: .8rem; }

/* Nav */
.nav { display: flex; align-items: center; gap: .1rem; }
.nav-btn {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .45rem .6rem; border-radius: var(--r-sm);
  font-size: .88rem; letter-spacing: -.004em; cursor: pointer;
  color: var(--ink);
}
.nav-btn .chev { width: .62rem; height: .62rem; color: var(--ink-3); transition: transform .22s ease; }
.nav-btn[aria-expanded="true"] .chev { transform: rotate(180deg); }

.pill {
  display: inline-flex; align-items: center; gap: .45rem;
  border: 1px solid var(--hair-2); border-radius: 999px;
  padding: .55rem 1rem; font-size: .85rem; letter-spacing: -.004em;
  cursor: pointer; white-space: nowrap;
}
.icon-btn {
  width: 2.35rem; height: 2.35rem; border-radius: 999px;
  display: grid; place-items: center; cursor: pointer; color: var(--ink);
}
.icon-btn svg { width: 1.05rem; height: 1.05rem; }

/* ══ Front-page grid ═════════════════════════════════════════════════════ */
.front {
  display: grid; gap: var(--gap);
  grid-template-columns: 1.34fr .84fr .88fr;
  padding: 0 var(--gap) var(--gap);
  align-items: stretch;   /* one row: every column ends on the same line */
}
.col { display: flex; flex-direction: column; gap: var(--gap); }
/* One element per column absorbs the slack, so all three columns end on the
   same line without stretching every card. */
.col > [data-fill] { flex: 1 1 auto; }
.markets[data-fill] { grid-template-rows: 1fr 1fr; }

.card {
  background: var(--surface-2);
  border-radius: var(--r-lg);
  padding: 1.25rem;
  position: relative;
  overflow: clip;
}
.card--tint  { background: var(--cream); }
.card--plain { background: transparent; padding: 1.35rem .35rem; }

/* Anything you can press answers on pointer-down, not on release. */
.press { cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.press:active { transform: scale(.985); }
.press, .pill, .icon-btn, .listen, .nav-btn { transition: transform 110ms ease-out, background-color .18s ease; }
.pill:active, .icon-btn:active, .listen:active, .nav-btn:active { transform: scale(.96); }
@media (hover: hover) and (pointer: fine) {
  .nav-btn:hover, .icon-btn:hover, .pill:hover { background: var(--hair); }
    .press:hover { filter: brightness(.985); }
}
/* Coarse pointers get real 44px targets. */
@media (pointer: coarse) {
  .icon-btn { width: 2.75rem; height: 2.75rem; }
  .nav-btn { padding: .6rem .7rem; }
  .pill { padding: .7rem 1.1rem; }
  .social a { min-height: 3rem; }
}

/* ── Hero ── */
.hero {
  display: flex; flex-direction: column; justify-content: space-between;
  min-height: 34rem; padding: 1.6rem;
}
.hero-art {
  position: absolute; left: -12%; top: -2%; z-index: 0;
  width: 114%; height: auto;
  opacity: .5; pointer-events: none;
  filter: invert(var(--art));
  /* Clear a band at the top for the byline and fade out before the headline,
     so type never sits on the densest part of the drawing. */
  -webkit-mask-image: linear-gradient(transparent 0, #000 13%, #000 56%, transparent 86%);
  mask-image: linear-gradient(transparent 0, #000 13%, #000 56%, transparent 86%);
}
.hero > :not(.hero-art) { position: relative; z-index: 1; }   /* must not re-static the art */
.hero-head { display: flex; align-items: center; gap: .7rem; }
.hero-title { margin: 0 0 1.1rem; max-width: 15ch; }
.hero-body { max-width: 52ch; display: grid; gap: .7rem; }

.byline { display: inline-flex; align-items: center; gap: .55rem; font-size: .875rem; }
.byline .who { font-family: var(--serif); font-weight: 500; letter-spacing: -.01em; }
.byline .when { color: var(--ink-2); font-variant-numeric: tabular-nums; }
.avatar {
  width: 1.65rem; height: 1.65rem; border-radius: 999px; flex: none;
  display: grid; place-items: center; font-size: .68rem; font-weight: 650;
  background: var(--surface-3); color: var(--ink-2); letter-spacing: .01em;
}

.stats { display: flex; align-items: center; gap: 1.1rem; margin-top: 1.3rem; }
.stat { display: inline-flex; align-items: center; gap: .38rem; font-size: .82rem; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.stat svg { width: .95rem; height: .95rem; opacity: .75; }

/* ── Feature card ── */
.feature-art {
  /* Flex, not grid: an auto grid row sizes to the image's intrinsic height, so
     a percentage height resolves against the row and the art overflows. In a
     flex box with a definite height, max-height: 100% is honoured. */
  height: 11.5rem; display: flex; align-items: center; justify-content: center;
  margin: .2rem 0 1.9rem;
}
.feature-art img {
  max-height: 100%; max-width: 100%; width: auto; height: auto;
  opacity: .9; filter: invert(var(--art));
}

/* ── Lead story ── */
.lead-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-bottom: .9rem; }
.flame { color: var(--accent); width: 1.05rem; height: 1.05rem; }
.lead-deck { display: grid; gap: .8rem; margin: .85rem 0 1.1rem; }
.share { display: flex; gap: .3rem; margin-left: auto; }
.share span {
  width: 1.6rem; height: 1.6rem; border-radius: 999px; background: var(--hair);
  display: grid; place-items: center; color: var(--ink-3);
}
.share svg { width: .8rem; height: .8rem; }

/* ── Newsletter ── */
.news-facts { display: flex; gap: 1.2rem; margin-top: 1rem; }

/* ── Social row ── */
.social { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap); }
.social a {
  aspect-ratio: 1; border-radius: var(--r-md); display: grid; place-items: center;
  background: var(--surface-2);
}
.social svg { width: 1.5rem; height: 1.5rem; }

/* ── Video card ── */
.video {
  border-radius: var(--r-lg); overflow: clip; position: relative;
  min-height: 8.5rem; display: flex; flex-direction: column; justify-content: space-between;
  padding: 1rem 1.1rem; color: #f4f4f2;
  background: #16161a center/cover no-repeat;
  box-shadow: inset 0 0 0 1px var(--hair);   /* keeps its edge on a dark ground */
}
.video::after {   /* keeps the caption legible over the art */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(transparent 30%, rgba(0,0,0,.55));
  pointer-events: none;
}
.video > * { position: relative; z-index: 1; }
.video .t-h3 { max-width: 22ch; }
.video-meta { display: flex; gap: 1rem; font-size: .8rem; font-variant-numeric: tabular-nums; }
.video-meta .stat { color: rgba(244,244,242,.85); }

/* ── Markets ── */
.markets { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); }
.tick { border-radius: var(--r-md); padding: .95rem 1rem 1rem; background: var(--surface-2); }
.tick--down { background: var(--down-tint); }
.tick-top { display: flex; align-items: flex-start; justify-content: space-between; gap: .5rem; margin-bottom: .55rem; }
.tick svg.spark { width: 3.4rem; height: 1.4rem; color: var(--ink-2); }
.arrow {
  width: 1.5rem; height: 1.5rem; border-radius: 999px; flex: none;
  display: grid; place-items: center;
  background: var(--up); color: var(--up-ink);
}
.tick--down .arrow { background: var(--down); color: var(--down-ink); }
.arrow svg { width: .7rem; height: .7rem; }
.tick-val { font-family: var(--serif); font-size: 1.6rem; letter-spacing: -.02em; line-height: 1; font-variant-numeric: tabular-nums; }
.tick-delta { font-size: .82rem; color: var(--ink-2); font-variant-numeric: tabular-nums; margin-left: .3rem; }
.tick-sym { font-family: var(--serif); font-size: .92rem; margin-top: .5rem; letter-spacing: -.005em; }
.tick-sym .q { color: var(--ink-3); }

/* ── Print CTA ── */
.cta { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.15rem .35rem .35rem; }
.cta-go {
  width: 2.75rem; height: 2.75rem; border-radius: 999px; flex: none;
  background: var(--ink); color: var(--surface); display: grid; place-items: center;
}
.cta-go svg { width: 1rem; height: 1rem; }

/* ══ Latest rail — drag with momentum ════════════════════════════════════ */
.rail-wrap { padding: 1.6rem 0 .4rem; }
.rail-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0 .25rem 1rem; }
.rail-hint { font-size: .78rem; color: var(--ink-3); }
.rail-view {
  overflow: hidden; cursor: grab;
  /* Fade the edge only where there is more to reach. */
  --fade-l: 0px; --fade-r: 2.5rem;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--fade-l), #000 calc(100% - var(--fade-r)), transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 var(--fade-l), #000 calc(100% - var(--fade-r)), transparent 100%);
}
.rail-view[data-at-start="false"] { --fade-l: 2.5rem; }
.rail-view[data-at-end="true"]   { --fade-r: 0px; }
.rail-view[data-dragging="true"] { cursor: grabbing; }
.rail-view:focus-visible { outline-offset: -2px; }
.rail {
  display: flex; gap: var(--gap);
  will-change: transform;
  user-select: none; -webkit-user-select: none;
}
.rail-item {
  flex: 0 0 clamp(15rem, 21vw, 19rem);
  background: var(--surface-2); border-radius: var(--r-lg); padding: 1.15rem;
  display: flex; flex-direction: column; gap: .5rem; min-height: 12.5rem;
}
.rail-item .t-h3 { margin-top: auto; }
.rail-item img { height: 4.2rem; width: auto; opacity: .8; filter: invert(var(--art)); }

/* ══ Colophon ════════════════════════════════════════════════════════════ */
.colophon {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 1rem; padding: 1.6rem .35rem .4rem; border-top: 1px solid var(--hair); margin-top: 1.4rem;
}
.colophon nav { display: flex; flex-wrap: wrap; gap: 1.1rem; }

/* ══ Section popover — anchored to its trigger ═══════════════════════════ */
.pop {
  position: fixed; z-index: 80;
  min-width: 16rem; padding: .5rem;
  background: var(--glass);
  backdrop-filter: blur(26px) saturate(180%);
  -webkit-backdrop-filter: blur(26px) saturate(180%);
  border: 1px solid var(--glass-edge);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-lg);
  transform-origin: var(--origin, top left);
  will-change: transform, opacity, filter;
}
.pop[hidden] { display: none; }
.pop a {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  padding: .55rem .65rem; border-radius: var(--r-sm); font-size: .9rem;
}
.pop a small { color: var(--ink-3); font-size: .72rem; font-variant-numeric: tabular-nums; }

/* ══ Subscribe sheet ═════════════════════════════════════════════════════ */
.scrim {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(10, 10, 11, .38);
  backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
  will-change: opacity;
}
.scrim[hidden], .sheet[hidden] { display: none; }
.sheet {
  position: fixed; z-index: 91;
  left: 50%; bottom: 0; width: min(30rem, calc(100vw - 1.5rem));
  margin-left: calc(min(30rem, 100vw - 1.5rem) / -2);
  background: var(--surface);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  box-shadow: var(--shadow-lg);
  padding: .7rem 1.6rem calc(2.2rem + env(safe-area-inset-bottom));
  max-height: 92dvh;
  display: flex; flex-direction: column;
  will-change: transform;
  /* The sheet itself is the drag surface; scrolling lives in .sheet-body, so
     the two gestures never fight over the same touch. */
  touch-action: none;
}
.grabber {
  width: 2.4rem; height: .3rem; border-radius: 999px;
  background: var(--hair-2); margin: 0 auto 1.1rem; cursor: grab;
}
.sheet[data-dragging="true"] .grabber { cursor: grabbing; }
.sheet-body { overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; }
.sheet-rows { display: grid; gap: .5rem; margin: 1.2rem 0 1.3rem; }
.sheet-row { display: flex; gap: .6rem; align-items: baseline; font-size: .9rem; color: var(--ink-2); }
.sheet-row svg { width: .9rem; height: .9rem; flex: none; color: var(--accent); transform: translateY(.1rem); }
.btn-solid {
  display: block; width: 100%; text-align: center;
  background: var(--ink); color: var(--surface);
  border-radius: 999px; padding: .95rem; font-size: .95rem; font-weight: 550;
  cursor: pointer;
}
.sheet-fine { text-align: center; margin-top: .8rem; font-size: .75rem; color: var(--ink-3); }

/* ══ Navigation panel — enters from the right, leaves to the right ══════ */
.menu {
  position: fixed; z-index: 91; top: 0; right: 0; bottom: 0;
  width: min(23rem, 86vw);
  display: flex; flex-direction: column; gap: .4rem;
  background: var(--surface);
  box-shadow: var(--shadow-lg);
  padding: 1rem 1.2rem calc(1.4rem + env(safe-area-inset-bottom));
  padding-right: max(1.2rem, env(safe-area-inset-right));
  overflow-y: auto; overscroll-behavior: contain;
  will-change: transform;
  touch-action: pan-y;      /* drags horizontally, scrolls vertically */
}
.menu[hidden], .menu-scrim[hidden] { display: none; }
.menu-scrim {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(10, 10, 11, .38);
  backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
  will-change: opacity;
}
.menu-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: .8rem; }
.menu-grab {   /* the horizontal twin of the sheet's grabber */
  position: absolute; left: .45rem; top: 50%; width: .3rem; height: 2.4rem;
  border-radius: 999px; background: var(--hair-2); transform: translateY(-50%);
  cursor: grab;
}
.menu[data-dragging="true"] .menu-grab { cursor: grabbing; }
.menu-group { padding: .9rem 0; border-top: 1px solid var(--hair); }
.menu-group:first-of-type { border-top: 0; }
.menu-links { display: grid; gap: .1rem; margin-top: .5rem; }
.menu-links a {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  padding: .6rem .7rem; margin: 0 -.7rem; border-radius: var(--r-sm); font-size: .95rem;
}
.menu-links a small { color: var(--ink-3); font-size: .72rem; font-variant-numeric: tabular-nums; }
.menu-foot { margin-top: auto; padding-top: 1.1rem; display: grid; gap: .6rem; }

/* ══ Article page ════════════════════════════════════════════════════════ */
.progress {
  position: fixed; top: 0; left: 0; right: 0; height: 2px; z-index: 70;
  background: var(--accent); transform: scaleX(0); transform-origin: 0 50%;
  will-change: transform;
}
.article { padding: clamp(1.5rem, 4vw, 3.4rem) clamp(1rem, 4vw, 3rem) 2rem; }
.article-head { max-width: 46rem; margin: 0 auto; text-align: center; }
.kicker { display: inline-flex; align-items: center; gap: .5rem; margin-bottom: 1.4rem; }
.kicker .dot { width: .3rem; height: .3rem; border-radius: 999px; background: var(--accent); }
.article-title { margin: 0 0 1.2rem; }
.standfirst { font-family: var(--serif); font-size: clamp(1.05rem, 1.5vw, 1.28rem); line-height: 1.5; letter-spacing: -.008em; color: var(--ink-2); margin: 0 auto; max-width: 40rem; }
.article-meta { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.1rem; margin-top: 1.6rem; padding-top: 1.4rem; border-top: 1px solid var(--hair); }

.article-art {
  margin: clamp(1.8rem, 4vw, 3rem) auto; max-width: 62rem;
  background: var(--surface-2); border-radius: var(--r-lg); padding: 2rem;
  display: grid; place-items: center;
}
.article-art img { max-height: 26rem; width: auto; opacity: .82; filter: invert(var(--art)); }
.caption { text-align: center; margin-top: 1.2rem; max-width: 44ch; }

.prose { max-width: 38rem; margin: 0 auto; }
.prose p {
  font-family: var(--serif); font-optical-sizing: auto;
  font-size: 1.11rem; line-height: 1.68; letter-spacing: -.003em;
  margin: 0 0 1.35rem;
}
.prose > p:first-of-type::first-letter {   /* direct children only — a quote must not get one */
  font-size: 3.6em; float: left; line-height: .8;
  margin: .06em .09em 0 0; font-weight: 500;
}
.prose h2 { font-family: var(--serif); font-size: 1.5rem; line-height: 1.2; letter-spacing: -.018em; font-weight: 500; margin: 2.6rem 0 1rem; }
.prose blockquote {
  margin: 2.2rem 0; padding-left: 1.4rem; border-left: 2px solid var(--accent);
}
.prose blockquote p { font-size: 1.42rem; line-height: 1.32; letter-spacing: -.018em; color: var(--ink); margin-bottom: .6rem; }
.prose blockquote cite { font-style: normal; font-family: var(--ui); font-size: .82rem; color: var(--ink-3); }
.prose ul { padding-left: 1.1rem; margin: 0 0 1.35rem; }
.prose li { font-family: var(--serif); font-size: 1.06rem; line-height: 1.6; margin-bottom: .5rem; }

.pull-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap); margin: 2.4rem 0; }
.pull-stat { background: var(--surface-2); border-radius: var(--r-md); padding: 1.1rem 1.2rem; }
.pull-stat b { display: block; font-family: var(--serif); font-size: 1.9rem; letter-spacing: -.024em; line-height: 1; margin-bottom: .4rem; }

.article-foot { max-width: 38rem; margin: 2.6rem auto 0; padding-top: 1.6rem; border-top: 1px solid var(--hair); display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; }
.disclaimer { max-width: 38rem; margin: 2rem auto 0; padding: .9rem 1.1rem; border-radius: var(--r-md); background: var(--surface-2); font-size: .78rem; line-height: 1.5; color: var(--ink-3); }

/* Back control mirrors the way you arrived. */
.backbar { position: sticky; top: 4.4rem; z-index: 50; padding: 0 clamp(1rem, 4vw, 3rem); height: 0; }
.back {
  display: inline-flex; align-items: center; gap: .45rem;
  background: var(--glass); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid var(--glass-edge); border-radius: 999px;
  padding: .5rem .95rem .5rem .7rem; font-size: .84rem; box-shadow: var(--shadow-sm);
  transform: translateY(1.1rem);
}
.back svg { width: .85rem; height: .85rem; }

/* ══ Entrance — springs run in JS; this is only the pre-paint state ══════ */
.rise { opacity: 0; will-change: transform, opacity; }
.no-js .rise { opacity: 1; }

/* ══ Responsive ══════════════════════════════════════════════════════════
   A ladder rather than a cliff: the three-column front page becomes two, then
   one, and the chrome moves into the navigation panel as room runs out.     */

/* Very wide: let the composition breathe instead of stretching it. */
@media (min-width: 1700px) { :root { --gap: 14px; } }

@media (max-width: 1280px) {
  .t-display { font-size: clamp(2.3rem, 3.8vw, 3.4rem); }
  .hero { padding: 1.35rem; }
  .card { padding: 1.1rem; }
}

/* Two columns: the hero takes the full width and leads. */
@media (max-width: 1080px) {
  .front { grid-template-columns: 1fr 1fr; }
  .hero { grid-column: 1 / -1; min-height: 28rem; }
  .hero-title { max-width: 20ch; }
  /* Full-width hero: the art moves to the right of the text and drops back,
     so body copy never has to compete with the densest part of the drawing. */
  .hero-art { width: 76%; left: auto; right: -8%; top: -4%; opacity: .3; }
  .feature-art { height: 13rem; }
}

/* The masthead runs out of room before the grid does. */
@media (max-width: 900px) {
  .nav { display: none; }
  .masthead { grid-template-columns: auto 1fr auto; }
  .wordmark { font-size: clamp(1.05rem, 2.6vw, 1.4rem); }
}

/* One column. */
@media (max-width: 640px) {
  :root { --r-xl: 22px; --r-lg: 18px; --gap: 10px; }
  .front { grid-template-columns: 1fr; }
  .hero {
    min-height: auto; padding: 1.15rem;
    /* dvh, so mobile browser chrome cannot clip the composition */
    max-height: none;
  }
  .hero-art { width: 112%; left: -6%; right: auto; top: -3%; }
  .hero-title { max-width: none; }
  .listen b { display: none; }
  .listen { padding: .3rem; margin-right: .3rem; }
  .subscribe-label { display: none; }
  .feature-art { height: 12rem; }
  .markets { grid-template-columns: 1fr 1fr; }
  .social { grid-template-columns: repeat(4, 1fr); }
  .rail-item { flex: 0 0 min(17rem, 78vw); }
  .colophon { flex-direction: column; align-items: flex-start; gap: .7rem; }
  .article { padding: 1.2rem .95rem 1.5rem; }
  .pull-stats { grid-template-columns: 1fr; }
  .prose > p:first-of-type::first-letter { font-size: 3em; }
  .article-art { padding: 1.1rem; }
  .backbar { top: 3.8rem; }
}

/* Narrow phones: two market tiles side by side stop fitting. */
@media (max-width: 380px) {
  .markets { grid-template-columns: 1fr; }
  .tick-val { font-size: 1.45rem; }
}

/* Phone in landscape — height, not width, is the constraint. */
@media (max-height: 560px) and (orientation: landscape) {
  .hero { min-height: 20rem; }
  .hero-art { opacity: .22; }
  .sheet { max-height: 88dvh; }
  .menu { padding-top: .6rem; }
}

/* ══ Accessibility preferences ═══════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  /* Gentler equivalent, not the absence of feedback: cross-fade, no travel. */
  * { animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
  .press:active, .pill:active, .icon-btn:active, .listen:active, .nav-btn:active { transform: none; }
  .rail { transition: none; }
  .rise { opacity: 1 !important; transform: none !important; }
}
@media (prefers-reduced-transparency: reduce) {
  .masthead, .pop, .back { background: var(--surface); backdrop-filter: none; -webkit-backdrop-filter: none; }
  .scrim, .menu-scrim { backdrop-filter: none; -webkit-backdrop-filter: none; background: rgba(10,10,11,.55); }
  .masthead::after { background: linear-gradient(var(--surface), transparent); }
}
@media (prefers-contrast: more) {
  :root { --ink-2: var(--ink); --ink-3: var(--ink); --hair: rgba(16,16,18,.3); }
  .card, .tick, .rail-item, .social a, .menu, .sheet { border: 1px solid var(--hair-2); }
  .rail-view { -webkit-mask-image: none; mask-image: none; }
  .masthead, .pop, .back { background: var(--surface); backdrop-filter: none; -webkit-backdrop-filter: none; border-color: var(--ink); }
}
@media print {
  .masthead, .rail-wrap, .scrim, .sheet, .pop, .progress, .menu, .menu-scrim, .skip { display: none !important; }
  .paper { box-shadow: none; }
}

/* ══ Auth sheet ══════════════════════════════════════════════════════════ */
.seg {
  position: relative; display: grid; grid-template-columns: 1fr 1fr;
  background: var(--surface-2); border-radius: 999px; padding: .25rem;
  margin: .2rem 0 1.2rem;
}
.seg-btn {
  position: relative; z-index: 1; padding: .55rem; border-radius: 999px;
  font-size: .9rem; font-weight: 500; cursor: pointer; color: var(--ink-2);
  transition: color .15s ease;
}
.seg-btn[aria-selected="true"] { color: var(--ink); }
.seg-thumb {
  position: absolute; z-index: 0; top: .25rem; left: .25rem;
  width: calc(50% - .25rem); height: calc(100% - .5rem);
  background: var(--surface); border-radius: 999px;
  box-shadow: var(--shadow-sm);
  will-change: transform;   /* the spring drives translateX */
}

.form { display: grid; gap: .75rem; margin-top: 1.2rem; }
.field { display: grid; gap: .35rem; }
.field[hidden] { display: none; }
.field-label { font-size: .78rem; color: var(--ink-2); letter-spacing: .002em; }
.field input {
  width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
  background: var(--surface-2);
  border: 1px solid transparent; border-radius: var(--r-md);
  padding: .8rem .9rem;
  transition: border-color .15s ease, background-color .15s ease;
}
.field input::placeholder { color: var(--ink-3); }
.field input:focus { outline: none; border-color: var(--ink-3); background: var(--surface); }
.field input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.field input[aria-invalid="true"] { border-color: var(--accent); }

.form-note { margin: 0; font-size: .82rem; line-height: 1.45; min-height: 0; color: var(--ink-2); }
.form-note[data-tone="error"] { color: var(--accent); }
.form-note:empty { display: none; }

/* ══ Simple content pages (about, contact, legal) ════════════════════════ */
.page { padding: clamp(1.5rem, 4vw, 3.2rem) clamp(1rem, 4vw, 3rem) 2rem; }
.page-head { max-width: 46rem; margin: 0 auto clamp(2rem, 4vw, 3rem); text-align: center; }
.page-head .t-display { margin: 0 0 1rem; }
.page-body { max-width: 40rem; margin: 0 auto; }
.page-body h2 {
  font-family: var(--serif); font-size: 1.42rem; line-height: 1.2;
  letter-spacing: -.016em; font-weight: 500; margin: 2.4rem 0 .8rem;
}
.page-body h3 { font-size: 1rem; font-weight: 600; margin: 1.6rem 0 .5rem; letter-spacing: -.006em; }
.page-body p, .page-body li { font-size: .97rem; line-height: 1.68; color: var(--ink-2); }
.page-body p { margin: 0 0 1rem; }
.page-body ul { padding-left: 1.15rem; margin: 0 0 1.15rem; }
.page-body li { margin-bottom: .45rem; }
.page-body a { color: var(--ink); text-decoration: underline; text-underline-offset: .18em; text-decoration-color: var(--hair-2); }
.page-body a:hover { text-decoration-color: var(--accent); }
.page-body strong { color: var(--ink); font-weight: 600; }
.updated { display: inline-block; padding: .35rem .8rem; border-radius: 999px; background: var(--surface-2); }

.legal-toc { background: var(--surface-2); border-radius: var(--r-lg); padding: 1.2rem 1.4rem; margin-bottom: 2rem; }
.legal-toc ol { margin: .6rem 0 0; padding-left: 1.2rem; }
.legal-toc li { margin-bottom: .3rem; font-size: .9rem; }

.callout {
  border-left: 2px solid var(--accent); padding: .2rem 0 .2rem 1.1rem;
  margin: 1.6rem 0;
}
.callout p { margin: 0; }

/* Contact form */
.form-card {
  background: var(--surface-2);
  border-radius: var(--r-lg);
  padding: clamp(1.2rem, 2.6vw, 1.9rem);
}
.form-card .field input,
.form-card .field textarea,
.form-card .field select { background: var(--surface); }
.form-card .field input:focus,
.form-card .field textarea:focus { background: var(--surface); border-color: var(--ink-3); }

.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.field textarea {
  width: 100%; font: inherit; font-size: .95rem; color: var(--ink); resize: vertical;
  background: var(--surface-2); border: 1px solid transparent; border-radius: var(--r-md);
  padding: .8rem .9rem; min-height: 9rem;
  transition: border-color .15s ease, background-color .15s ease;
}
.field textarea::placeholder { color: var(--ink-3); }
.field textarea:focus { outline: none; border-color: var(--ink-3); background: var(--surface); }
.field select {
  width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
  background: var(--surface-2); border: 1px solid transparent; border-radius: var(--r-md);
  padding: .8rem .9rem;
}
@media (max-width: 640px) { .contact-grid { grid-template-columns: 1fr; } }

/* ══ Account ═════════════════════════════════════════════════════════════ */
.account { display: grid; gap: 1.1rem; margin: 1.4rem 0 .4rem; }
.account-row { display: flex; align-items: center; gap: .9rem; }
.avatar-lg { width: 2.9rem; height: 2.9rem; font-size: .95rem; font-weight: 600; }
.account-name { font-family: var(--serif); font-size: 1.1rem; letter-spacing: -.01em; }

.btn-quiet {
  display: block; width: 100%; text-align: center;
  background: var(--surface-2); color: var(--ink);
  border-radius: 999px; padding: .85rem; font-size: .93rem; font-weight: 500;
  cursor: pointer; transition: background-color .15s ease, transform 110ms ease-out;
}
.btn-quiet:active { transform: scale(.985); }

.btn-link {
  display: block; margin: .2rem auto 0; padding: .5rem;
  font-size: .82rem; color: var(--ink-2); cursor: pointer;
  text-decoration: underline; text-underline-offset: .18em; text-decoration-color: var(--hair-2);
}
.btn-link:hover { color: var(--ink); }

/* A submit that is working should say so and stop accepting presses. */
.btn-solid[disabled] { opacity: .6; cursor: default; }
.btn-solid[data-busy="true"] { cursor: progress; }

/* Signed-in state on the masthead pill */
.pill[data-signed-in="true"] .subscribe-label {
  display: inline-block; min-width: 1.4rem;
  font-variant-numeric: tabular-nums; font-weight: 600; letter-spacing: .02em;
}
@media (hover: hover) and (pointer: fine) { .btn-quiet:hover { background: var(--hair); } }
