:root{
  --bg: #ffffff;
  --text: #0b1220;
  --muted: #56627a;
  --line: #e7ebf3;
  --card: #ffffff;
  --alt: #f6f8fc;
  --accent: #3b82f6; /* world-lines + primary button */
  --accent2: #7c3aed; /* optional secondary */
  --shadow: 0 10px 30px rgba(11,18,32,.08);
  --radius: 16px;
  --max: 1080px;
  --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  --sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
  --hero-card-size: clamp(180px, 28vw, 360px);
}

*{ box-sizing: border-box; }
html,body{ margin:0; padding:0; }
body{
  font-family: var(--sans);
  color: var(--text);
  background: var(--bg);
  line-height: 1.5;
}

a{ color: inherit; text-decoration: none; }
code{ font-family: var(--mono); }

.container{
  width: min(var(--max), calc(100% - 40px));
  margin: 0 auto;
}

.section{ padding: 64px 0; }
.section.alt{ background: var(--alt); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }

h1{ font-size: 40px; line-height: 1.1; margin: 14px 0 10px; letter-spacing: -0.02em; }
h2{ font-size: 26px; margin: 0 0 10px; letter-spacing: -0.01em; }
.lead{ color: var(--muted); max-width: 78ch; margin: 0 0 18px; }
.subtitle{ font-size: 16px; color: var(--muted); max-width: 72ch; }

.topbar{
  position: sticky;
  top: 0;
  background: rgba(255,255,255,.9);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
  z-index: 20;
}
.topbar__inner{
  display:flex; align-items:center; justify-content:space-between;
  height: 56px;
}
.brand{ font-weight: 700; letter-spacing: -0.01em; }
.nav{ display:flex; gap: 14px; color: var(--muted); font-size: 14px; }
.nav a:hover{ color: var(--text); }

.badge{
  display:inline-flex;
  gap:8px;
  align-items:center;
  border: 1px solid var(--line);
  background: #fbfcff;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 12px;
  color: var(--muted);
}

.hero{ padding-top: 54px; }
.hero__grid{
  display:grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 28px;
  align-items: start;
}
.meta{ color: var(--muted); margin: 14px 0 0; }
.authors{ color: var(--text); }
.affils{ color: var(--muted); }

.btnrow{ display:flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.btn{
  border: 1px solid var(--line);
  background: var(--card);
  padding: 10px 12px;
  border-radius: 12px;
  font-size: 14px;
  color: var(--text);
  box-shadow: none;
  cursor: pointer;
}
.btn:hover{ border-color: #dbe3f5; }
.btn[aria-disabled="true"]{ opacity: .55; pointer-events: none; }

.btn.primary{
  background: var(--accent);
  border-color: var(--accent);
  color: white;
}
.btn.primary:hover{ filter: brightness(0.98); }

.btn.small{ padding: 8px 10px; border-radius: 10px; font-size: 13px; }

.hero__note{
  margin-top: 18px;
  border: 1px solid var(--line);
  background: #fbfcff;
  border-radius: var(--radius);
  padding: 14px 14px;
}
.note__title{ font-weight: 650; margin-bottom: 6px; }
.note__body{ color: var(--muted); font-size: 14px; }

.hero__viz .viz__caption{
  margin-top: 10px;
  color: var(--muted);
  font-size: 13px;
}

.worlds{ width: 100%; height: auto; }
.worlds__card{ fill: #ffffff; stroke: var(--line); stroke-width: 1; }
.worlds__title{ font-size: 16px; font-weight: 700; fill: var(--text); }
.worlds__subtitle{ font-size: 12px; fill: var(--muted); }
.worlds__node{ fill: var(--text); }
.worlds__label{ font-size: 12px; fill: var(--text); font-weight: 650; }
.worlds__small{ font-size: 11px; fill: var(--muted); }
.worlds__tag{ font-size: 12px; fill: var(--muted); }
.worlds__line{ fill: none; stroke-width: 3; stroke-linecap: round; }
.worlds__line.factual{ stroke: var(--accent); }
.worlds__line.cf{ stroke: var(--accent2); opacity: .85; }
.worlds__line.faint{ opacity: .35; stroke-width: 2.5; }
.worlds__end{ stroke: #fff; stroke-width: 2; }
.worlds__end.factual{ fill: var(--accent); }
.worlds__end.cf{ fill: var(--accent2); opacity: .9; }
.worlds__outcome{ font-size: 12px; fill: var(--text); }
.worlds__outcome.faint{ opacity: .45; }

.samplebar{
  display:flex; align-items:center; justify-content:space-between;
  gap: 12px;
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: var(--radius);
  padding: 12px;
  margin: 18px 0 14px;
  box-shadow: 0 1px 0 rgba(11,18,32,.02);
}
.samplebar__left{ display:flex; align-items:center; gap: 10px; flex-wrap: wrap; }
.label{ font-size: 13px; color: var(--muted); }
.select{
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 12px;
  font-size: 14px;
  background: #fff;
}
.samplemeta{ color: var(--muted); font-size: 13px; }

.grid4{
  display: grid;
  grid-template-columns: repeat(2, 1fr);  /* 一行两个 */
  gap: 18px;                              /* 稍微加大间距 */
}
.card{
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: 0 1px 0 rgba(11,18,32,.02);
  overflow:hidden;
}
.card__title{
  font-weight: 700;
  padding: 12px 12px 0;
}
.vcard{
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  overflow:hidden;
  position: relative;
}
.vcard__head{
  display:flex; align-items:center; justify-content:space-between;
  gap: 10px;
  padding: 10px 10px 8px;
  border-bottom: 1px solid var(--line);
}
.vcard__label{ font-weight: 700; font-size: 18px; }
.vcard__pill{
  font-size: 12px;
  color: var(--muted);
  border: 1px solid var(--line);
  padding: 4px 8px;
  border-radius: 999px;
  background: #fbfcff;
  white-space: nowrap;
}
.vcard video{
  width: 100%;
  aspect-ratio: 1 / 1;   /* 正方形（和你 HERO 一致） */
  object-fit: cover;
  display:block;
  background: #0b1220;
}
.vcard__foot{
  padding: 10px;
  color: var(--muted);
  font-size: 16px;
}
.vcard:hover{ border-color: #dbe3f5; }
.vcard:hover .hoverinfo{ opacity: 1; transform: translateY(0); }

.hoverinfo{
  position:absolute;
  left: 10px;
  right: 10px;
  bottom: 60px;
  background: rgba(255,255,255,.92);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px;
  font-size: 18px;
  color: var(--text);
  opacity: 0;
  transform: translateY(6px);
  transition: .18s ease;
}

.hint{ margin-top: 10px; color: var(--muted); font-size: 13px; }

.tldr{
  display:grid;
  grid-template-columns: 1.2fr 0.8fr;
  gap: 16px;
  align-items:start;
}
.bullets{ margin: 10px 0 0; padding-left: 18px; color: var(--muted); }
.bullets li{ margin: 10px 0; }
.steps{ margin: 10px 0 0; padding-left: 18px; color: var(--muted); }
.steps li{ margin: 8px 0; }

.twocol{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items:start;
}

.figure{ border: 1px solid var(--line); border-radius: 14px; overflow:hidden; background: #fbfcff; }
.figure img{ width: 100%; display:block; }
.figure__fallback{ padding: 18px; color: var(--muted); font-size: 13px; }
.figure.missing{ border-style: solid; border-color: var(--line); background: #fff; }

.caption{ color: var(--muted); font-size: 13px; margin-top: 10px; }

.code{
  margin: 12px 0 0;
  background: #0b1220;
  color: #e6eefc;
  border-radius: 14px;
  padding: 14px;
  overflow:auto;
  font-family: var(--mono);
  font-size: 13px;
}

.resultslist{
  display:grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  margin-top: 14px;
}
.resultcard{
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  padding: 12px;
}
.resultcard__top{
  display:flex; align-items:baseline; justify-content:space-between; gap: 10px;
  margin-bottom: 10px;
}
.resultcard__title{ font-weight: 750; }
.resultcard__desc{ color: var(--muted); font-size: 13px; }

.footer{
  border-top: 1px solid var(--line);
  background: #fff;
  padding: 26px 0;
}
.footer__inner{
  display:flex; align-items:flex-start; justify-content:space-between; gap: 18px;
}
.footer__title{ font-weight: 700; margin-bottom: 6px; }
.footer__text{ color: var(--muted); font-size: 13px; }

.pill{
  border: 1px solid var(--line);
  background: #fbfcff;
  color: var(--muted);
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
}
.mini__row{ display:flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }

/* responsive */
@media (max-width: 980px){
  .hero__grid{ grid-template-columns: 1fr; }
  .tldr{ grid-template-columns: 1fr; }
  .twocol{ grid-template-columns: 1fr; }
  .grid4{ grid-template-columns: 1fr 1fr; }
  .resultslist{ grid-template-columns: 1fr; }
  .nav{ display:none; }
}
@media (max-width: 520px){
  h1{ font-size: 32px; }
  .grid4{ grid-template-columns: 1fr; }
  .vcard video{ height: 210px; }
}

/* ===== HERO base (dark, full screen) ===== */
.hero.hero--dark{
  position: relative;
  min-height: 100vh;
  background: #070a12;
  overflow: hidden;
}

/* overlay text centered */
.hero__overlay{
  position: relative;
  z-index: 5;                 /* above video background */
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 90px 20px 90px;
  text-align: center;
}

.hero__center{
  width: min(980px, 100%);
}

.hero__title{
  margin: 0 0 10px;
  font-size: clamp(28px, 3.2vw, 46px);
  line-height: 1.08;
  letter-spacing: -0.02em;
  color: rgba(255,255,255,0.96);
}

.hero__subtitle{
  margin: 0 auto;
  max-width: 70ch;
  font-size: 16px;
  color: rgba(255,255,255,0.72);
}

.hero__meta{
  margin: 18px 0 0;
  font-size: 14px;
  color: rgba(255,255,255,0.68);
}

.hero__authors{ color: rgba(255,255,255,0.88); }
.hero__affil{ color: rgba(255,255,255,0.62); }

.hero__btns{
  margin-top: 20px;
  display: inline-flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: center;
}

/* dark button skin (only used in hero) */
.btn.btn--dark{
  border: 1px solid rgba(255,255,255,0.16);
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.90);
  backdrop-filter: blur(10px);
}
.btn.btn--dark:hover{ border-color: rgba(255,255,255,0.26); }
.btn.btn--dark.primary{
  background: rgba(96,165,250,0.20);
  border-color: rgba(96,165,250,0.40);
}
.btn__icon{ display:inline-flex; margin-right: 8px; opacity: 0.95; }

/* ===== HERO dynamic video branching background ===== */
.hero__bg.hero__bg--video{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  overflow: visible; /* allow outcome pills outside */
}

/* stage where the branches animate */
.branch-stage{
  position:absolute;
  inset:0;
  display:block;
  z-index: 1;
}

/* Replace the grid background with a minimal "parallel worlds" cosmos */
.branch-stage::before{
  content:"";
  position:absolute;
  inset:-2px;
  z-index: 0;

  /* 1) star dust 2) nebula 3) subtle light falloff */
  background:
    radial-gradient(1200px 700px at 18% 38%, rgba(96,165,250,0.18), transparent 62%),
    radial-gradient(900px 520px at 78% 46%, rgba(167,139,250,0.14), transparent 64%),
    radial-gradient(900px 560px at 55% 86%, rgba(34,211,238,0.11), transparent 66%),
    radial-gradient(1px 1px at 12% 22%, rgba(255,255,255,0.35) 50%, transparent 55%),
    radial-gradient(1.2px 1.2px at 22% 68%, rgba(255,255,255,0.28) 50%, transparent 55%),
    radial-gradient(1px 1px at 38% 30%, rgba(255,255,255,0.22) 50%, transparent 55%),
    radial-gradient(1.3px 1.3px at 48% 58%, rgba(255,255,255,0.18) 50%, transparent 55%),
    radial-gradient(1px 1px at 62% 26%, rgba(255,255,255,0.25) 50%, transparent 55%),
    radial-gradient(1.4px 1.4px at 74% 72%, rgba(255,255,255,0.18) 50%, transparent 55%),
    radial-gradient(1px 1px at 86% 34%, rgba(255,255,255,0.22) 50%, transparent 55%),
    radial-gradient(1.2px 1.2px at 92% 18%, rgba(255,255,255,0.18) 50%, transparent 55%);

  opacity: 0.95;
  filter: saturate(1.08) contrast(1.03);
}

/* Add a “spacetime ripple” + vignette (no grids) */
.branch-stage::after{
  content:"";
  position:absolute;
  inset:0;
  z-index: 0;

  background:
    /* spacetime ripple rings near the branching origin (left) */
    radial-gradient(420px 320px at 18% 50%,
      rgba(96,165,250,0.18) 0%,
      rgba(167,139,250,0.10) 18%,
      transparent 55%),
    radial-gradient(520px 420px at 18% 50%,
      transparent 40%,
      rgba(255,255,255,0.06) 41%,
      transparent 46%),
    radial-gradient(740px 540px at 18% 50%,
      transparent 52%,
      rgba(255,255,255,0.04) 53%,
      transparent 58%),

    /* gentle dark vignette for cinematic focus */
    radial-gradient(1200px 800px at 50% 50%,
      transparent 52%,
      rgba(0,0,0,0.62) 100%);

  mix-blend-mode: screen;
  opacity: 0.9;
}

/* Optional: slow drifting nebula (very subtle, no distraction) */
@keyframes nebulaDrift{
  0%{ transform: translate3d(0,0,0) scale(1); opacity: 0.92; }
  50%{ transform: translate3d(-1.2%, 0.8%, 0) scale(1.01); opacity: 0.96; }
  100%{ transform: translate3d(0,0,0) scale(1); opacity: 0.92; }
}
.branch-stage::before{
  animation: nebulaDrift 10s ease-in-out infinite;
}

/* Subtle light fan from the shared origin (parallel-world branching vibe) */
.branch-stage{
  overflow: visible; /* allow outcome pills outside */
}
.branch-stage .lightfan{
  position:absolute;
  left: 12vw;
  top: 50%;
  width: 70vw;
  height: 70vh;
  transform: translateY(-50%);
  background:
    conic-gradient(from 180deg at 0% 50%,
      transparent 0deg,
      rgba(96,165,250,0.10) 10deg,
      transparent 22deg,
      rgba(167,139,250,0.08) 34deg,
      transparent 48deg,
      rgba(34,211,238,0.06) 60deg,
      transparent 360deg);
  filter: blur(18px);
  opacity: 0.65;
  pointer-events:none;
  z-index: 0;
}

/* Fixed shared first frame at the origin (left) */
.origin{
  position: absolute;
  left: 12vw;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  width: var(--hero-card-size);
  aspect-ratio: 1 / 1;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.16);
  background: rgba(255,255,255,0.06);
  box-shadow: 0 18px 60px rgba(0,0,0,0.35);
  backdrop-filter: blur(10px);
  z-index: 2;
  overflow: hidden;
}

.origin img{
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.origin__tag{
  position:absolute;
  left: 10px;
  bottom: 10px;
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.70);
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(0,0,0,0.22);
  padding: 6px 10px;
  border-radius: 999px;
}

/* Each branch container is absolutely positioned and moved by JS */
.branch{
  position:absolute;
  left: 12vw;                /* 和 origin 完全一致 */
  top: 50%;
  transform: translate3d(0, -50%, 0);

  width: var(--hero-card-size);
  aspect-ratio: 1 / 1;
  border-radius: 22px;
  overflow: visible;
  border: 1px solid rgba(255,255,255,0.16);
  background: rgba(255,255,255,0.06);
  box-shadow:
    0 18px 60px rgba(0,0,0,0.45),
    0 0 0 1px rgba(255,255,255,0.08) inset;
  backdrop-filter: blur(10px);
  will-change: transform, opacity;
  z-index: 2;
}

.branch{
  box-shadow:
    0 18px 60px rgba(0,0,0,0.45),
    0 0 0 1px rgba(255,255,255,0.08) inset;
}

.branch--factual{
  border-color: rgba(96,165,250,0.35);
}

.branch--counterfactual{
  border-color: rgba(167,139,250,0.35);
}

/* Video */
.branch video{
  width:100%;
  height:100%;
  object-fit: cover;
  display:block;
  filter: contrast(1.02) saturate(1.04);
  clip-path: inset(0 round 22px);  /* keep rounded corners even if parent overflows */
}

/* small tag */
.branch__tag{
  position:absolute;
  left: 10px;
  top: 10px;
  font-size: 12px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.72);
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(0,0,0,0.22);
  padding: 6px 10px;
  border-radius: 999px;
}

/* optional different tint */
.branch--factual{ outline: 1px solid rgba(96,165,250,0.18); }
.branch--counterfactual{ outline: 1px solid rgba(167,139,250,0.16); }

/* Outcome pill attached to each moving branch */
.branch__outcome{
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  opacity: 0;
  pointer-events: none;
  transition: opacity .28s ease, transform .28s ease;
  z-index: 4;
  white-space: normal;
}

/* visible state */
.branch__outcome.is-visible{
  opacity: 1;
  transform: translate(-50%, -50%);
}

/* If screen is narrow, show outcome below instead of right */
@media (max-width: 720px){
  .branch__outcome{
    left: 10px;
    right: 10px;
    top: auto;
    bottom: 10px;
    transform: none;
    width: auto;
    white-space: normal;
  }
  .branch__outcome.is-visible{
    transform: none;
  }
}

.outcome-pill{
  width: auto;
  min-width: 180px;
  max-width: 78%;
  border-radius: 16px;
  padding: 12px 14px;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(7,10,18,0.58);
  backdrop-filter: blur(10px);
  color: rgba(255,255,255,0.92);
  text-align: center;
}
.outcome-pill__k{
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.55);
}
.outcome-pill__v{
  margin-top: 4px;
  font-size: 14px;
  color: rgba(255,255,255,0.88);
}
.outcome-pill--factual{ border-color: rgba(96,165,250,0.28); }
.outcome-pill--cf{ border-color: rgba(167,139,250,0.26); }

/* mobile: keep videos smaller and avoid clutter */
@media (max-width: 640px){
  .branch{
    left: 6vw;
    width: min(320px, 88vw);
  }
  .outcomes{
    right: 4vw;
    gap: 10px;
  }
  .outcome-pill{
    width: min(320px, 88vw);
  }
}

/* ===== Trails (time flow) ===== */
.trails{
  position:absolute;
  inset:0;
  z-index: 1;            /* behind videos (videos are z=2) */
  pointer-events:none;
}

#trailF, #trailC{
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 3.2;
  opacity: 0.95;
  filter: drop-shadow(0 0 10px rgba(255,255,255,0.12));
}

/* factual = bluish */
#trailF{
  stroke: rgba(96,165,250,0.85);
  filter: drop-shadow(0 0 14px rgba(96,165,250,0.25));
}

/* counterfactual = violet/cyan */
#trailC{
  stroke: rgba(167,139,250,0.80);
  filter: drop-shadow(0 0 14px rgba(167,139,250,0.22));
}

/* End labels appear together with predictions */
.trail-labels{
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .28s ease, transform .28s ease;
}
.trail-labels.is-visible{
  opacity: 1;
  transform: translateY(0);
}

.trail-label__bg{
  fill: rgba(255,255,255,0.07);
  stroke: rgba(255,255,255,0.16);
  stroke-width: 1;
}

.trail-label__text{
  fill: rgba(255,255,255,0.86);
  font-size: 12px;
  letter-spacing: 0.02em;
}

/* keep labels readable on small screens */
@media (max-width: 720px){
  #trailF, #trailC{ stroke-width: 2.6; }
  .trail-label__text{ font-size: 11px; }
}

/* scroll hint */
.hero__scrollhint{
  margin-top: 26px;
  font-size: 12px;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

/* ensure next section starts clean after full-screen hero */
.section{ scroll-margin-top: 70px; }

/* on small screens, keep diagram present but not overpowering */
@media (max-width: 640px){
  .hero__bg{ bottom: -70px; opacity: 0.85; }
  .hero__overlay{ padding-bottom: 140px; }
}

.topbar.topbar--on-hero{
  background: rgba(7,10,18,0.35);
  border-bottom-color: rgba(255,255,255,0.10);
}
.topbar.topbar--on-hero .brand,
.topbar.topbar--on-hero .nav{
  color: rgba(255,255,255,0.85);
}
.topbar.topbar--on-hero .nav a:hover{
  color: rgba(255,255,255,0.98);
}

/* ===== Justified text (paper-style) ===== */

#introduction p,
#method p{
  line-height: 1.75;

  text-align: justify;
  text-justify: inter-word;

  hyphens: auto;
  text-align-last: left;
}

#introduction p:first-of-type,
#method p:first-of-type{
  text-align: left;
}

/* ===== Introduction video strip ===== */

.intro-video{
  margin: 18px 0 22px;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid var(--line);
  background: #000;
  box-shadow: 0 6px 20px rgba(11,18,32,.06);
}

.intro-video video{
  width: 100%;
  height: auto;
  display: block;
  object-fit: cover;
}

.intro-video__caption{
  width: 90%;
  margin: 8px auto 0; /* 上 8px，左右 auto 实现居中 */
  font-family: "Times New Roman", Times, serif;
  font-size: 18px;
  color: white;
  margin-top: 8px;
  line-height: 1.6;
  text-align: justify;
}

.method-float-figure{
  float: right;
  width: min(420px, 42%);
  margin: 6px 0 16px 24px;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 1px 0 rgba(11,18,32,.02);
}

.method-float-figure img{
  display: block;
  width: 100%;
  height: auto;
}

.method-clear{
  clear: both;
}

#method p{
  line-height: 1.75;
}

@media (max-width: 900px){
  .method-float-figure{
    float: none;
    width: 100%;
    max-width: 640px;
    margin: 20px 0;
  }
}

.method-float-caption{
  font-family: "Times New Roman", Times, serif;
  font-size: 18px;
  line-height: 1.5;
  color: var(--muted);
  padding: 10px 12px 12px;
  background: #fbfcff;
  border-top: 1px solid var(--line);
}

@media (max-width: 900px){
  :root{
    --hero-card-size: clamp(150px, 30vw, 240px);
  }

  .origin,
  .branch{
    left: 6vw;
  }

  .branch__outcome{
    max-width: min(180px, 28vw);
    white-space: normal;
  }
}

@media (max-width: 640px){
  :root{
    --hero-card-size: clamp(110px, 26vw, 160px);
  }

  .origin,
  .branch{
    left: 4vw;
  }

  .branch__tag,
  .origin__tag{
    font-size: 10px;
    padding: 4px 8px;
  }

  .outcome-pill{
    width: auto;
    min-width: 120px;
    max-width: 38vw;
    padding: 8px 10px;
  }

  .outcome-pill__v{
    font-size: 12px;
  }
}

/* 标题：强描边 + glow */
.hero__title{
  text-shadow:
    -1px -1px 0 rgba(0,0,0,0.9),
     1px -1px 0 rgba(0,0,0,0.9),
    -1px  1px 0 rgba(0,0,0,0.9),
     1px  1px 0 rgba(0,0,0,0.9),
     0 0 10px rgba(59,130,246,0.45);
}

/* 副标题：轻一点 */
.hero__subtitle{
  text-shadow:
    0 0 2px rgba(0,0,0,0.8),
    0 0 6px rgba(59,130,246,0.25);
}

/* 作者信息：更轻 */
.hero__meta{
  text-shadow:
    0 0 1px rgba(0,0,0,0.7);
}

/* Scroll 按钮 */
.hero__scrollhint{
  text-shadow:
    0 0 2px rgba(0,0,0,0.8);
}
