/* ============================================================
   thinkread.ai — decision-room.css
   「决策圆桌 / The Decision Room」
   A lamplit room in the night. The user brings a hard decision;
   a few thinkers with sharply different frameworks take a seat
   around a luminous table, read it through their lens, disagree,
   name the blind spot, and leave a gilt judgment card.

   Layers on base.css + home-stars.css — REUSE their dark
   "Observatory" tokens (--sky-0, --cream, --gold, grain, etc).
   This page's own warmth is a lamplit amber/brass glow, distinct
   from the portrait's cool palette but unmistakably the same
   dark publication. Each thinker keeps their own accent color.
   ============================================================ */

:root {
  /* lamplit warmth — the room's glow + the card's gilt edge */
  --lamp:        #C9A24B;                 /* brass / gold (== home-stars --gold) */
  --lamp-soft:   rgba(201,162,75,0.5);
  --lamp-glow:   rgba(201,162,75,0.16);
  --lamp-deep:   #8C7330;
  --gilt:        #D8B05C;                 /* lightened gilt stroke on dark */
  --dr-card-bg:  rgba(22,20,16,0.92);     /* warm-tinted dark glass */
}

/* the page scrolls normally (the Observatory homepage locks scroll &
   makes <body> the scroller; this is a step-driven document, so we let
   the window scroll the document instead). */
html:has(.dr-body) { height: auto; }
.dr-body {
  height: auto;
  overflow-x: hidden;
  overflow-y: visible;
  min-height: 100vh;
  /* a faint warm pool toward the top — the lamp in the room */
  background:
    radial-gradient(70% 50% at 50% 0%, rgba(120,96,44,0.16) 0%, transparent 58%),
    radial-gradient(60% 55% at 80% 24%, rgba(120,96,44,0.08) 0%, transparent 60%),
    radial-gradient(120% 90% at 50% 8%, #181a22 0%, var(--sky-0) 52%, #0c0e13 100%);
}
.dr-body::after {
  /* soft edge vignette — frames the room */
  content: "";
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(120% 90% at 50% 36%, transparent 52%, rgba(8,9,13,0.46) 86%, rgba(6,7,11,0.7) 100%);
}

.dr-main { position: relative; z-index: 2; padding-bottom: 6rem; }
.wrap { width: min(100% - 2.6rem, 1100px); margin-inline: auto; }

/* the toggle lives in the nav here, so let header receive clicks */
.dr-body .site-header { pointer-events: auto; }

/* CJK readability — looser leading on prose */
html[lang="zh"] .dr-hero__lede,
html[lang="zh"] .dr-reframe__text,
html[lang="zh"] .voice__take,
html[lang="zh"] .tension__crux,
html[lang="zh"] .blindspot__text,
html[lang="zh"] .card__value,
html[lang="zh"] .card__close { line-height: 1.85; }

/* ============================================================
   HERO / THRESHOLD
   ============================================================ */
.dr-hero {
  padding-top: clamp(96px, 16vh, 150px);
  padding-bottom: clamp(2rem, 5vh, 3.5rem);
  text-align: center;
  display: flex; flex-direction: column; align-items: center;
}
.dr-hero__kicker {
  color: var(--lamp);
  font-size: 0.7rem; letter-spacing: 0.22em;
  margin-bottom: 1.2rem;
}
html[lang="zh"] .dr-hero__kicker { letter-spacing: 0.12em; }
.dr-hero__title {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(2.1rem, 5.6vw, 3.7rem);
  line-height: 1.05; letter-spacing: -0.02em;
  color: var(--cream);
  margin: 0;
  display: inline-flex; align-items: baseline; flex-wrap: wrap;
  justify-content: center; gap: 0.4em;
  text-wrap: balance;
}
html[lang="zh"] .dr-hero__title { font-family: var(--font-cjk-serif); font-weight: 600; }
.dr-hero__sep { color: var(--lamp); opacity: 0.7; font-weight: 400; }
.dr-hero__en {
  font-size: 0.62em; color: var(--cream-soft); font-weight: 600;
  letter-spacing: -0.01em;
}
html[lang="zh"] .dr-hero__en { font-family: var(--font-display); }
.dr-hero__lede {
  font-family: var(--font-serif);
  max-width: 40rem;
  margin: 1.4rem auto 0;
  font-size: clamp(1.02rem, 1.7vw, 1.2rem);
  line-height: 1.62; color: var(--cream-soft);
  text-wrap: pretty;
}

/* ---------- quiet roster of the ten ---------- */
.dr-roster { margin-top: 2.4rem; width: 100%; }
/* the hover tooltips are absolutely positioned with nowrap; clip any that
   would reach past the viewport edge so they never create horizontal scroll */
.dr-hero { overflow: hidden; }
.dr-roster__label {
  font-family: var(--font-mono);
  font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--cream-mute); margin-bottom: 1rem;
}
html[lang="zh"] .dr-roster__label { font-family: var(--font-cjk-sans); letter-spacing: 0.08em; }
.dr-roster__row {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: 0.7rem;
}
/* a labelled pill: ◦glyph + name, always visible (touch-legible).
   Framework lives in a hover/focus tooltip on top. */
.roster-chip {
  position: relative;
  display: inline-flex; align-items: center; gap: 0.45rem;
  padding: 0.34rem 0.72rem 0.34rem 0.4rem;
  border-radius: 999px;
  background: rgba(255,255,255,0.02);
  border: 1px solid color-mix(in srgb, var(--chip-accent, #888) 34%, transparent);
  box-shadow: 0 0 14px -6px color-mix(in srgb, var(--chip-accent, #888) 45%, transparent);
  cursor: default;
  transition: transform var(--t-fast) var(--ease-soft),
              box-shadow var(--t-base) var(--ease-soft),
              border-color var(--t-base) var(--ease-soft);
}
.roster-chip:hover,
.roster-chip:focus-visible {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--chip-accent, #888) 64%, transparent);
  box-shadow: 0 0 20px -4px color-mix(in srgb, var(--chip-accent, #888) 55%, transparent);
  outline: none;
}
.roster-chip__glyph {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%; flex: 0 0 auto;
  font-family: var(--font-serif); font-size: 0.9rem;
  color: var(--chip-accent, var(--cream-soft));
  border: 1px solid color-mix(in srgb, var(--chip-accent, #888) 50%, transparent);
}
.roster-chip__label {
  font-family: var(--font-display); font-weight: 600; font-size: 0.78rem;
  color: var(--cream); letter-spacing: -0.005em; white-space: nowrap;
}
html[lang="zh"] .roster-chip__label { font-family: var(--font-cjk-serif); }
.roster-chip__tip {
  position: absolute; bottom: calc(100% + 0.5rem); left: 50%;
  transform: translateX(-50%) translateY(4px);
  white-space: nowrap; max-width: 16rem;
  padding: 0.4rem 0.7rem; border-radius: 7px;
  font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.04em;
  color: var(--cream-soft);
  background: var(--glass-card);
  border: 1px solid var(--sky-line-2);
  box-shadow: 0 10px 28px rgba(0,0,0,0.5);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity var(--t-fast) var(--ease-soft), transform var(--t-fast) var(--ease-soft);
  z-index: 30; text-align: center;
}
html[lang="zh"] .roster-chip__tip { font-family: var(--font-cjk-sans); letter-spacing: 0.02em; }
/* desktop / fine-pointer only — touch users already see the name */
@media (hover: hover) and (pointer: fine) {
  .roster-chip:hover .roster-chip__tip,
  .roster-chip:focus-visible .roster-chip__tip {
    opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0);
  }
}

.dr-hero__cue {
  margin-top: 2.6rem;
  font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.08em;
  color: var(--lamp);
  display: inline-flex; align-items: center; gap: 0.5em;
}
html[lang="zh"] .dr-hero__cue { font-family: var(--font-cjk-sans); letter-spacing: 0.04em; }
.dr-hero__cue span { animation: dr-bob 2.6s var(--ease-soft) infinite; }
@keyframes dr-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(3px); } }

/* ============================================================
   COMPOSER
   ============================================================ */
.dr-composer {
  padding-block: 1rem 1.5rem;
  max-width: 640px;
}
.dr-form {
  display: flex; flex-direction: column; gap: 1.3rem;
  padding: 1.7rem clamp(1.1rem, 3vw, 1.9rem);
  background: var(--dr-card-bg);
  border: 1px solid var(--sky-line-2);
  border-radius: 16px;
  box-shadow: 0 24px 60px -20px rgba(0,0,0,0.6),
              inset 0 1px 0 rgba(255,255,255,0.03);
}
.dr-field { display: flex; flex-direction: column; gap: 0.55rem; }
.dr-label {
  font-family: var(--font-mono);
  font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--cream-soft);
}
html[lang="zh"] .dr-label { font-family: var(--font-cjk-sans); letter-spacing: 0.04em; font-size: 0.82rem; }
.dr-label--quiet { color: var(--cream-mute); }

.dr-textarea, .dr-input {
  width: 100%;
  font-family: var(--font-serif);
  font-size: 1.02rem; line-height: 1.5;
  color: var(--cream);
  background: rgba(10,11,15,0.55);
  border: 1px solid var(--sky-line-2);
  border-radius: 10px;
  padding: 0.8rem 0.95rem;
  transition: border-color var(--t-base) var(--ease-soft),
              box-shadow var(--t-base) var(--ease-soft);
  resize: vertical;
}
html[lang="zh"] .dr-textarea, html[lang="zh"] .dr-input { font-family: var(--font-cjk-serif); }
.dr-textarea::placeholder, .dr-input::placeholder { color: var(--cream-mute); opacity: 0.7; }
.dr-textarea:focus, .dr-input:focus {
  outline: none;
  border-color: var(--lamp-soft);
  box-shadow: 0 0 0 3px rgba(201,162,75,0.14);
}
.dr-between {
  display: flex; align-items: center; gap: 0.7rem;
}
.dr-between .dr-input { flex: 1 1 0; min-width: 0; }
.dr-between__arrow { color: var(--lamp); font-size: 1.2rem; flex: 0 0 auto; }

.dr-form__actions {
  display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
  margin-top: 0.2rem;
}
.dr-seat-btn {
  font-family: var(--font-ui); font-weight: 600; font-size: 0.96rem;
  color: #1b1710;
  background: linear-gradient(180deg, #E6CE94 0%, var(--lamp) 70%, var(--lamp-deep) 100%);
  border: none; border-radius: 999px;
  padding: 0.7rem 1.6rem;
  cursor: pointer;
  box-shadow: 0 6px 22px -6px rgba(201,162,75,0.55);
  transition: transform var(--t-fast) var(--ease-soft), box-shadow var(--t-base) var(--ease-soft), opacity var(--t-base) var(--ease-soft);
}
html[lang="zh"] .dr-seat-btn { font-family: var(--font-cjk-sans); }
.dr-seat-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 30px -6px rgba(201,162,75,0.7); }
.dr-seat-btn:active { transform: translateY(0); }
.dr-seat-btn:disabled { opacity: 0.55; cursor: progress; transform: none; }
.dr-seat-btn:focus-visible { outline: 2px solid var(--gilt); outline-offset: 3px; }

.dr-example-link {
  font-family: var(--font-mono); font-size: 0.78rem; letter-spacing: 0.04em;
  color: var(--cream-soft); background: none; border: none; cursor: pointer;
  padding: 0.3rem 0;
  border-bottom: 1px solid transparent;
  transition: color var(--t-fast) var(--ease-soft), border-color var(--t-fast) var(--ease-soft);
}
html[lang="zh"] .dr-example-link { font-family: var(--font-cjk-sans); }
.dr-example-link:hover { color: var(--lamp); border-color: var(--lamp-soft); }
.dr-example-link:focus-visible { outline: 2px solid var(--gilt); outline-offset: 3px; border-radius: 3px; }

/* the one-line specificity hint under the textarea */
.dr-hint {
  font-family: var(--font-serif); font-style: italic;
  font-size: 0.82rem; line-height: 1.4; color: var(--cream-mute);
  margin: 0;
}
html[lang="zh"] .dr-hint { font-family: var(--font-cjk-serif); font-style: normal; }

/* ---------- starter chips — beat the blank page ---------- */
.dr-starters {
  margin-top: 0.2rem; padding-top: 1.2rem;
  border-top: 1px solid var(--sky-line);
  display: flex; flex-direction: column; gap: 0.7rem;
}
.dr-starters__label {
  font-family: var(--font-mono); font-size: 0.64rem; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--cream-mute); margin: 0;
}
html[lang="zh"] .dr-starters__label { font-family: var(--font-cjk-sans); letter-spacing: 0.06em; }
.dr-starters__row { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.dr-starter-chip {
  font-family: var(--font-ui); font-size: 0.8rem; font-weight: 500;
  color: var(--cream-soft);
  background: rgba(201,162,75,0.05);
  border: 1px solid var(--lamp-soft);
  border-radius: 999px;
  padding: 0.42rem 0.9rem; cursor: pointer;
  transition: color var(--t-fast) var(--ease-soft),
              background var(--t-base) var(--ease-soft),
              border-color var(--t-base) var(--ease-soft),
              transform var(--t-fast) var(--ease-soft);
}
html[lang="zh"] .dr-starter-chip { font-family: var(--font-cjk-sans); }
.dr-starter-chip:hover {
  color: var(--cream); background: rgba(201,162,75,0.14);
  border-color: var(--lamp); transform: translateY(-1px);
}
.dr-starter-chip:focus-visible { outline: 2px solid var(--gilt); outline-offset: 3px; }

/* ============================================================
   THE ROOM (result container)
   ============================================================ */
.dr-room { position: relative; z-index: 2; }
.dr-room[hidden] { display: none; }

/* ---------- loading — a LIVING state: the room assembling ---------- */
.dr-loading {
  display: flex; flex-direction: column; align-items: center;
  gap: 1.8rem;
  padding: clamp(3rem, 12vh, 6rem) 1rem;
  text-align: center;
}
/* the roster glyphs gathering — faintly present, then warming on */
.dr-loading__assembly {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: 0.7rem; max-width: 26rem;
}
.dr-loading__glyph {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border-radius: 50%;
  font-family: var(--font-serif); font-size: 1.1rem;
  color: var(--chip-accent, var(--cream-soft));
  border: 1px solid color-mix(in srgb, var(--chip-accent, #888) 26%, transparent);
  background: rgba(255,255,255,0.015);
  opacity: 0.18; transform: scale(0.92);
  transition: opacity var(--t-slow) var(--ease-soft), transform var(--t-slow) var(--ease-soft),
              box-shadow var(--t-slow) var(--ease-soft);
}
.dr-loading__glyph.is-on {
  opacity: 0.9; transform: scale(1);
  box-shadow: 0 0 16px -5px color-mix(in srgb, var(--chip-accent, #888) 55%, transparent);
  animation: dr-glyph-breathe 3.6s var(--ease-soft) infinite;
}
@keyframes dr-glyph-breathe {
  0%, 100% { opacity: 0.9; }
  50% { opacity: 0.5; }
}
.dr-loading__text {
  font-family: var(--font-mono); font-size: 0.84rem; letter-spacing: 0.08em;
  color: var(--cream-soft); min-height: 1.2em;
}
html[lang="zh"] .dr-loading__text { font-family: var(--font-cjk-sans); letter-spacing: 0.04em; }

/* ---------- closing pending (under the voices, while stage 2 runs) ---------- */
.dr-closing-pending { padding-block: clamp(1.4rem, 4vh, 2.4rem); }
.dr-pending {
  display: flex; align-items: center; justify-content: center; gap: 0.7rem;
  max-width: 640px; margin: 0 auto;
  padding: 1rem 1.2rem;
  border: 1px dashed rgba(201,162,75,0.28);
  border-radius: 12px;
  background: rgba(201,162,75,0.03);
}
.dr-pending__pulse {
  width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto;
  background: var(--lamp);
  box-shadow: 0 0 12px -1px var(--lamp-soft);
  animation: dr-pulse 1.6s var(--ease-soft) infinite;
}
@keyframes dr-pulse {
  0%, 100% { opacity: 0.35; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.15); }
}
.dr-pending__text {
  font-family: var(--font-mono); font-size: 0.78rem; letter-spacing: 0.05em;
  color: var(--cream-soft); margin: 0;
}
html[lang="zh"] .dr-pending__text { font-family: var(--font-cjk-sans); letter-spacing: 0.02em; }

/* ---------- stage-2 failure — inline retry (opening preserved) ---------- */
.dr-closing-fail {
  max-width: 560px; margin: 0 auto; text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 1.1rem;
  padding: 1.6rem clamp(1.2rem, 4vw, 2.2rem);
  background: var(--dr-card-bg);
  border: 1px solid var(--sky-line-2); border-radius: 14px;
}
.dr-closing-fail__text {
  font-family: var(--font-serif); font-size: 0.98rem; line-height: 1.55;
  color: var(--cream-soft); margin: 0;
}
html[lang="zh"] .dr-closing-fail__text { font-family: var(--font-cjk-serif); }

/* ---------- offline / error ---------- */
.dr-offline {
  max-width: 540px; margin: clamp(2rem,8vh,4rem) auto;
  text-align: center;
  padding: 2rem clamp(1.2rem,4vw,2.4rem);
  background: var(--dr-card-bg);
  border: 1px solid var(--sky-line-2);
  border-radius: 16px;
}
.dr-offline__glyph { font-size: 1.8rem; color: var(--lamp); margin-bottom: 0.8rem; }
.dr-offline__title {
  font-family: var(--font-display); font-weight: 700; font-size: 1.2rem;
  color: var(--cream); margin-bottom: 0.6rem;
}
html[lang="zh"] .dr-offline__title { font-family: var(--font-cjk-serif); }
.dr-offline__text {
  font-family: var(--font-serif); font-size: 0.98rem; line-height: 1.6;
  color: var(--cream-soft); margin-bottom: 1.4rem;
}
html[lang="zh"] .dr-offline__text { font-family: var(--font-cjk-serif); }
.dr-offline__btn {
  font-family: var(--font-ui); font-weight: 600; font-size: 0.92rem;
  color: var(--lamp); background: none;
  border: 1px solid var(--lamp-soft); border-radius: 999px;
  padding: 0.6rem 1.4rem; cursor: pointer;
  transition: background var(--t-base) var(--ease-soft), color var(--t-base) var(--ease-soft);
}
html[lang="zh"] .dr-offline__btn { font-family: var(--font-cjk-sans); }
.dr-offline__btn:hover { background: rgba(201,162,75,0.12); }
.dr-offline__btn:focus-visible { outline: 2px solid var(--gilt); outline-offset: 3px; }

/* ============================================================
   ACT HEADINGS — small mono kicker + display heading
   ============================================================ */
.dr-act { padding-block: clamp(2rem, 6vh, 4rem); }
.dr-act__head {
  text-align: center; margin: 0 auto clamp(1.6rem, 4vh, 2.6rem);
  max-width: 44rem;
}
.dr-act__kicker {
  font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--lamp); opacity: 0.85;
}
html[lang="zh"] .dr-act__kicker { font-family: var(--font-cjk-sans); letter-spacing: 0.1em; }
.dr-act__title {
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.12;
  letter-spacing: -0.015em; color: var(--cream);
  margin-top: 0.6rem; text-wrap: balance;
}
html[lang="zh"] .dr-act__title { font-family: var(--font-cjk-serif); font-weight: 600; }

/* ============================================================
   THE TABLE — a luminous elliptical ring on the dark ground,
   seats placed evenly around it. Geometry computed in JS.
   ============================================================ */
.dr-table-stage {
  position: relative;
  width: min(100%, 760px);
  margin: 0 auto;
  aspect-ratio: 1.42 / 1;
}
/* the glowing ring + lamp at the centre */
.dr-table {
  position: absolute;
  left: 6%; top: 8%; right: 6%; bottom: 8%;
  border-radius: 50%;
  border: 1px solid rgba(201,162,75,0.34);
  background:
    radial-gradient(60% 55% at 50% 46%, rgba(201,162,75,0.14) 0%, rgba(201,162,75,0.05) 42%, transparent 72%);
  box-shadow:
    0 0 60px -10px rgba(201,162,75,0.3),
    inset 0 0 50px -12px rgba(201,162,75,0.22);
}
.dr-table::after {
  /* a soft second ring, the table's polished inner edge */
  content: ""; position: absolute; inset: 9%;
  border-radius: 50%;
  border: 1px solid rgba(201,162,75,0.14);
}

/* the reframe sits at the centre of the table */
.dr-reframe {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  width: min(62%, 22rem);
  text-align: center;
  z-index: 4;
  pointer-events: none;
}
.dr-reframe__label {
  font-family: var(--font-mono); font-size: 0.58rem; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--lamp); opacity: 0.85;
  margin-bottom: 0.5rem;
}
html[lang="zh"] .dr-reframe__label { font-family: var(--font-cjk-sans); letter-spacing: 0.08em; }
.dr-reframe__text {
  font-family: var(--font-serif); font-style: italic;
  font-size: clamp(0.92rem, 1.7vw, 1.1rem); line-height: 1.4;
  color: var(--cream); text-wrap: balance;
}
html[lang="zh"] .dr-reframe__text { font-family: var(--font-cjk-serif); font-style: normal; }

/* ---------- a seat around the table ---------- */
.dr-seat {
  position: absolute;
  left: var(--seat-x); top: var(--seat-y);
  transform: translate(-50%, -50%);
  z-index: 5;
  display: flex; flex-direction: column; align-items: center;
  width: max-content; max-width: 8.5rem;
  text-align: center;
  /* entrance: each seat blooms in (delay set inline per seat) */
  opacity: 0;
  transition: opacity 760ms var(--ease-out) var(--seat-delay, 0ms),
              transform 760ms var(--ease-out) var(--seat-delay, 0ms);
}
.dr-seat.is-in { opacity: 1; }
.seat-disc {
  position: relative;
  display: flex; align-items: center; justify-content: center;
  width: 58px; height: 58px; border-radius: 50%;
  font-family: var(--font-serif); font-size: 1.4rem;
  color: var(--seat-accent, var(--cream));
  background: rgba(14,15,20,0.85);
  border: 1.5px solid color-mix(in srgb, var(--seat-accent, #888) 55%, transparent);
  box-shadow: 0 0 18px -4px color-mix(in srgb, var(--seat-accent, #888) 55%, transparent);
  transition: box-shadow var(--t-base) var(--ease-soft),
              border-color var(--t-base) var(--ease-soft),
              transform var(--t-base) var(--ease-soft);
}
.seat-disc::before {
  /* soft halo behind the disc */
  content: ""; position: absolute; inset: -10px; border-radius: 50%; z-index: -1;
  background: radial-gradient(circle, color-mix(in srgb, var(--seat-accent, #888) 32%, transparent) 0%, transparent 70%);
  opacity: 0.5;
  transition: opacity var(--t-base) var(--ease-soft);
}
.dr-seat__name {
  margin-top: 0.5rem;
  font-family: var(--font-display); font-weight: 600; font-size: 0.78rem;
  line-height: 1.2; color: var(--cream); letter-spacing: -0.005em;
  text-shadow: 0 1px 8px rgba(8,9,13,0.85);
}
html[lang="zh"] .dr-seat__name { font-family: var(--font-cjk-serif); }
.dr-seat__fw {
  font-family: var(--font-mono); font-size: 0.56rem; letter-spacing: 0.04em;
  color: var(--cream-mute); margin-top: 0.2rem; line-height: 1.25;
}
html[lang="zh"] .dr-seat__fw { font-family: var(--font-cjk-sans); }

/* when a seat is "speaking" (its voice is revealed) it lights up */
.dr-seat.is-speaking .seat-disc {
  border-color: var(--seat-accent, var(--cream));
  box-shadow: 0 0 30px -2px color-mix(in srgb, var(--seat-accent, #888) 75%, transparent);
  transform: scale(1.06);
}
.dr-seat.is-speaking .seat-disc::before { opacity: 0.95; }

/* ============================================================
   ROUND ONE — the voices (spoken cards)
   ============================================================ */
.dr-voices {
  max-width: 640px; margin: clamp(1.5rem, 4vh, 2.6rem) auto 0;
  display: flex; flex-direction: column; gap: 1rem;
}
.voice {
  display: grid; grid-template-columns: 52px 1fr; gap: 1rem;
  padding: 1.1rem 1.2rem;
  background: var(--dr-card-bg);
  border: 1px solid var(--sky-line-2);
  border-left: 3px solid var(--voice-accent, var(--lamp));
  border-radius: 12px;
  opacity: 0; transform: translateY(10px);
  transition: opacity 560ms var(--ease-out), transform 560ms var(--ease-out);
}
.voice.is-in { opacity: 1; transform: none; }
.voice__glyph {
  display: flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%;
  font-family: var(--font-serif); font-size: 1.3rem;
  color: var(--voice-accent, var(--cream));
  border: 1.5px solid color-mix(in srgb, var(--voice-accent, #888) 50%, transparent);
  background: rgba(255,255,255,0.02);
  align-self: start;
}
.voice__body { min-width: 0; }
.voice__name {
  font-family: var(--font-display); font-weight: 700; font-size: 1rem;
  color: var(--cream); letter-spacing: -0.01em;
}
html[lang="zh"] .voice__name { font-family: var(--font-cjk-serif); }
.voice__fw {
  font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.06em;
  color: var(--voice-accent, var(--cream-mute)); opacity: 0.9;
  margin-left: 0.5em;
}
html[lang="zh"] .voice__fw { font-family: var(--font-cjk-sans); }
.voice__why {
  margin-top: 0.45rem;
  font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.02em;
  color: var(--cream-mute); font-style: normal;
}
html[lang="zh"] .voice__why { font-family: var(--font-cjk-sans); }
.voice__why::before { content: "— "; opacity: 0.6; }
.voice__take {
  margin-top: 0.6rem;
  font-family: var(--font-serif); font-size: 0.98rem; line-height: 1.6;
  color: var(--cream-soft);
}
html[lang="zh"] .voice__take { font-family: var(--font-cjk-serif); }

/* ============================================================
   THE DISAGREEMENT
   ============================================================ */
.dr-tensions {
  max-width: 700px; margin: 0 auto;
  display: flex; flex-direction: column; gap: 1.2rem;
}
.tension {
  padding: 1.3rem 1.4rem;
  background: var(--dr-card-bg);
  border: 1px solid var(--sky-line-2);
  border-radius: 14px;
  position: relative;
}
.tension__pair {
  display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap;
  margin-bottom: 0.85rem;
}
.tension__who {
  display: inline-flex; align-items: center; gap: 0.5rem;
}
.tension__chip {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%;
  font-family: var(--font-serif); font-size: 1rem;
  color: var(--chip-accent, var(--cream));
  border: 1.5px solid color-mix(in srgb, var(--chip-accent, #888) 55%, transparent);
  background: rgba(255,255,255,0.02);
  flex: 0 0 auto;
}
.tension__name {
  font-family: var(--font-display); font-weight: 600; font-size: 0.86rem;
  color: var(--cream);
}
html[lang="zh"] .tension__name { font-family: var(--font-cjk-serif); }
.tension__vs {
  font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.08em;
  color: var(--lamp); text-transform: uppercase;
  padding: 0 0.2rem;
}
.tension__crux {
  font-family: var(--font-serif); font-size: 1rem; line-height: 1.6;
  color: var(--cream-soft);
}
html[lang="zh"] .tension__crux { font-family: var(--font-cjk-serif); }

/* ============================================================
   THE BLIND SPOT
   ============================================================ */
.dr-blindspot {
  max-width: 620px; margin: 0 auto;
  text-align: center;
  padding: clamp(1.8rem, 5vw, 2.6rem);
  background:
    radial-gradient(80% 90% at 50% 0%, rgba(201,162,75,0.1) 0%, transparent 70%),
    var(--dr-card-bg);
  border: 1px solid rgba(201,162,75,0.28);
  border-radius: 18px;
  box-shadow: 0 0 50px -16px rgba(201,162,75,0.3);
}
.blindspot__glyph {
  font-size: 1.6rem; color: var(--lamp); margin-bottom: 0.8rem;
  line-height: 1;
}
.blindspot__label {
  font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--lamp); margin-bottom: 0.9rem;
}
html[lang="zh"] .blindspot__label { font-family: var(--font-cjk-sans); letter-spacing: 0.08em; }
.blindspot__text {
  font-family: var(--font-serif); font-size: clamp(1.05rem, 2vw, 1.22rem);
  line-height: 1.55; color: var(--cream); text-wrap: pretty;
}
html[lang="zh"] .blindspot__text { font-family: var(--font-cjk-serif); }

/* ============================================================
   THE JUDGMENT CARD — the gilt-edged take-away artifact
   ============================================================ */
.dr-card-wrap {
  max-width: 560px; margin: 0 auto;
  display: flex; flex-direction: column; align-items: center; gap: 1.4rem;
}
.judgment-card {
  position: relative; width: 100%;
  padding: clamp(1.6rem, 4vw, 2.4rem);
  background:
    linear-gradient(180deg, rgba(28,25,18,0.96) 0%, rgba(18,17,14,0.96) 100%);
  border-radius: 18px;
  /* the gilt edge */
  border: 1px solid transparent;
  background-clip: padding-box;
  box-shadow:
    0 0 0 1px rgba(216,176,92,0.5),
    0 30px 70px -24px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.04);
}
.judgment-card::before {
  /* gilt corner flourish */
  content: ""; position: absolute; inset: 7px; border-radius: 13px;
  border: 1px solid rgba(216,176,92,0.22);
  pointer-events: none;
}
.card__mast {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; margin-bottom: 1.4rem;
  padding-bottom: 0.9rem;
  border-bottom: 1px solid rgba(216,176,92,0.2);
}
.card__brand {
  font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--gilt);
}
html[lang="zh"] .card__brand { font-family: var(--font-cjk-sans); letter-spacing: 0.08em; }
.card__mark {
  font-family: var(--font-display); font-weight: 800; font-size: 0.8rem;
  color: var(--cream); letter-spacing: -0.01em;
}
.card__mark .hl { color: var(--lamp); }

.card__block { margin-bottom: 1.25rem; }
.card__block:last-of-type { margin-bottom: 0; }
.card__klabel {
  font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--lamp); opacity: 0.9;
  margin-bottom: 0.45rem;
}
html[lang="zh"] .card__klabel { font-family: var(--font-cjk-sans); letter-spacing: 0.06em; }
.card__value {
  font-family: var(--font-serif); font-size: 1.06rem; line-height: 1.5;
  color: var(--cream);
}
html[lang="zh"] .card__value { font-family: var(--font-cjk-serif); }
.card__value--tension { color: var(--cream-soft); font-style: italic; }
html[lang="zh"] .card__value--tension { font-style: normal; }

.card__probes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.65rem; }
.card__probe {
  display: grid; grid-template-columns: 1.3rem 1fr; gap: 0.5rem;
  font-family: var(--font-serif); font-size: 0.98rem; line-height: 1.5;
  color: var(--cream-soft);
}
html[lang="zh"] .card__probe { font-family: var(--font-cjk-serif); }
.card__probe-box {
  width: 16px; height: 16px; margin-top: 0.18rem;
  border: 1.5px solid var(--lamp-soft); border-radius: 4px;
  flex: 0 0 auto;
}
.card__close {
  margin-top: 1.4rem; padding-top: 1.1rem;
  border-top: 1px solid rgba(216,176,92,0.2);
  font-family: var(--font-serif); font-style: italic;
  font-size: 1.02rem; line-height: 1.55; color: var(--cream);
  text-wrap: pretty;
}
html[lang="zh"] .card__close { font-family: var(--font-cjk-serif); font-style: normal; }

/* the seated lineup at the foot of the card */
.card__lineup { margin-top: 1.5rem; }
.card__lineup-label {
  font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--cream-mute); margin-bottom: 0.6rem;
}
html[lang="zh"] .card__lineup-label { font-family: var(--font-cjk-sans); letter-spacing: 0.06em; }
.card__lineup-row { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.card__seat {
  display: inline-flex; align-items: center; gap: 0.4rem;
  padding: 0.3rem 0.6rem 0.3rem 0.35rem;
  border: 1px solid var(--sky-line-2); border-radius: 999px;
}
.card__seat-glyph {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  font-family: var(--font-serif); font-size: 0.78rem;
  color: var(--chip-accent, var(--cream));
  border: 1px solid color-mix(in srgb, var(--chip-accent, #888) 55%, transparent);
}
.card__seat-name {
  font-family: var(--font-display); font-weight: 500; font-size: 0.72rem;
  color: var(--cream-soft);
}
html[lang="zh"] .card__seat-name { font-family: var(--font-cjk-serif); }

/* card actions */
.dr-card-actions { display: flex; gap: 1rem; flex-wrap: wrap; justify-content: center; }
.dr-card-btn {
  font-family: var(--font-ui); font-weight: 600; font-size: 0.9rem;
  border-radius: 999px; padding: 0.65rem 1.4rem; cursor: pointer;
  transition: transform var(--t-fast) var(--ease-soft), background var(--t-base) var(--ease-soft), color var(--t-base) var(--ease-soft);
}
html[lang="zh"] .dr-card-btn { font-family: var(--font-cjk-sans); }
.dr-card-btn--primary {
  color: #1b1710; border: none;
  background: linear-gradient(180deg, #E6CE94 0%, var(--lamp) 70%, var(--lamp-deep) 100%);
  box-shadow: 0 6px 22px -8px rgba(201,162,75,0.55);
}
.dr-card-btn--primary:hover { transform: translateY(-1px); }
.dr-card-btn--ghost {
  color: var(--cream-soft); background: none;
  border: 1px solid var(--sky-line-2);
}
.dr-card-btn--ghost:hover { color: var(--cream); border-color: var(--cream-mute); }
.dr-card-btn:focus-visible { outline: 2px solid var(--gilt); outline-offset: 3px; }
.dr-card-btn.is-copied { color: var(--lamp); }

/* ---- 分享到小红书 — the UGC loop under the card ---- */
.dr-share {
  margin: 1.5rem auto 0;
  max-width: 30rem;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 0.7rem;
  padding-top: 1.3rem;
  border-top: 1px solid var(--sky-line, rgba(234,231,222,0.1));
}
.dr-share__hint {
  font-family: var(--font-serif); font-size: 0.86rem; line-height: 1.5;
  color: var(--cream-mute);
}
html[lang="zh"] .dr-share__hint { font-family: var(--font-cjk-serif); }
.dr-share__btn {
  font-family: var(--font-ui); font-weight: 600; font-size: 0.86rem;
  border-radius: 999px; padding: 0.55rem 1.3rem; cursor: pointer;
  color: #FF6B81; background: rgba(255,79,107,0.08);
  border: 1px solid rgba(255,107,129,0.42);
  transition: transform var(--t-fast) var(--ease-soft), background var(--t-base) var(--ease-soft), border-color var(--t-base) var(--ease-soft);
}
html[lang="zh"] .dr-share__btn { font-family: var(--font-cjk-sans); }
.dr-share__btn:hover { transform: translateY(-1px); background: rgba(255,79,107,0.16); border-color: rgba(255,107,129,0.7); }
.dr-share__btn:focus-visible { outline: 2px solid #FF6B81; outline-offset: 3px; }
.dr-share__btn.is-copied { color: var(--lamp); border-color: var(--lamp); background: rgba(201,162,75,0.1); }

/* ============================================================
   RESPONSIVE — ≤720px: the table collapses to a clean vertical
   sequence (seat monogram + name + take), no horizontal scroll.
   ============================================================ */
/* the mobile reframe block is hidden on desktop (it's inside the table there) */
.dr-reframe-mobile { display: none; }

@media (max-width: 720px) {
  /* hide the elliptical table; the voices list carries the room */
  .dr-table-stage { display: none; }

  /* reframe shown as a standalone block above the voices */
  .dr-reframe-mobile {
    display: block; text-align: center;
    max-width: 34rem; margin: 0 auto clamp(1.4rem, 5vw, 2rem);
    padding: 1.3rem 1.2rem;
    background: var(--dr-card-bg);
    border: 1px solid rgba(201,162,75,0.28);
    border-radius: 14px;
  }
  .voice { grid-template-columns: 44px 1fr; }
  .tension__pair { gap: 0.5rem; }
}

@media (max-width: 420px) {
  .dr-between { flex-direction: column; align-items: stretch; }
  .dr-between__arrow { transform: rotate(90deg); align-self: center; }
  .dr-form__actions { flex-direction: column; align-items: stretch; }
  .dr-seat-btn { width: 100%; }
}

/* ============================================================
   REDUCED MOTION — everything visible at rest, no entrance,
   no spin, no bob. The table still renders; seats are placed.
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .dr-seat, .voice {
    opacity: 1 !important; transform: translate(-50%, -50%) !important;
    transition: none !important;
  }
  .voice { transform: none !important; }
  .dr-hero__cue span { animation: none !important; }
  .dr-loading__glyph { opacity: 0.9 !important; transform: none !important; animation: none !important; transition: none !important; }
  .dr-pending__pulse { animation: none !important; opacity: 0.8 !important; }
}
