:root {
  color-scheme: dark;
  --bg: #06090d;
  --surface: #0b1016;
  --surface-soft: #10171e;
  --line: rgba(184, 201, 211, 0.13);
  --line-strong: rgba(205, 220, 227, 0.28);
  --text: #e8edf0;
  --muted: #7f8d95;
  --muted-strong: #a9b5bb;
  --accent: #d3a44c;
  --accent-soft: rgba(211, 164, 76, 0.16);
  --cool: #94b7c9;
  --globe-shadow: rgba(0, 0, 0, 0.7);
  --stage-height: min(780px, calc(100vh - 132px));
}

/* Prediction detail: dark editorial instrument, one amber accent. */
.prediction-view{background:#08090b;color:#f2f0eb}
.prediction-shell{max-width:1440px;margin:auto;padding:0 56px}
.prediction-nav{height:72px;border-bottom:1px solid rgba(255,255,255,.12);display:flex;align-items:center;gap:28px}
.prediction-product{font-size:12px;letter-spacing:.08em;color:#9d9b94;text-transform:uppercase}
.prediction-live{margin-left:auto;font-size:11px;color:#b8b5ad;letter-spacing:.04em}.prediction-live i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#c69b5a;margin-right:8px}
.prediction-headline{padding:58px 0 42px;display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid rgba(255,255,255,.12)}
.prediction-identity h1{font-size:clamp(34px,5vw,64px);font-weight:450;letter-spacing:-.06em;margin:10px 0 8px}.prediction-meta,.prediction-intro{color:#8f8d87;font-size:12px}.prediction-intro{font-size:14px}
.prediction-countdown{text-align:right;color:#8f8d87;font-size:11px}.prediction-countdown strong{display:block;font-size:36px;font-weight:400;color:#f2f0eb;margin:8px 0}.prediction-countdown small{font-size:10px}
.forecast-prototype{padding:34px 0}.forecast-toolbar{display:flex;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:18px}.forecast-model-tabs,.forecast-market-tabs{display:flex;gap:20px}.forecast-model-tab,.forecast-market-tab{background:none;border:0;color:#777872;padding:0 0 8px;border-bottom:1px solid transparent}.forecast-model-tab.is-active,.forecast-market-tab.is-active{color:#f0eee8;border-color:#c69b5a}
.forecast-upper{display:grid;grid-template-columns:1fr 220px;gap:42px;padding-top:36px}.probability-stage-head{display:flex;align-items:baseline;gap:15px;color:#8f8d87;font-size:11px}.probability-stage-head strong{color:#f1eee8;font-size:28px;font-weight:400}.probability-stage-head small{margin-left:auto}.forecast-sides{display:grid;grid-template-columns:1fr 180px 1fr;align-items:center;margin-top:28px}.forecast-side{padding:16px 0}.forecast-side:last-child{text-align:right}.forecast-kelly-label{font-size:10px;text-transform:uppercase;letter-spacing:.13em;color:#88867f}.forecast-kelly{font-size:26px;font-weight:400;color:#75b58c}.forecast-kelly:not(.is-positive){color:#cf7770}.forecast-probability{display:block;font-size:64px;letter-spacing:-.07em;font-weight:350;margin:12px 0 2px}.forecast-consensus{font-size:12px;color:#777872}.forecast-side-name{display:block;font-size:13px;color:#bdbab1;margin-top:24px}.balance-scene{height:150px;position:relative;opacity:.9}.balance-beam{position:absolute;left:8%;right:8%;top:52%;height:3px;background:#85715b;transform:rotate(-3deg);transform-origin:center}.balance-fulcrum{position:absolute;left:50%;top:-11px;width:22px;height:22px;border-radius:50%;background:#b18b5d;transform:translateX(-50%)}.balance-pan{position:absolute;top:6px;width:72px;height:42px;border:1px solid #6f6254;border-top:0;border-radius:0 0 40px 40px}.balance-pan-left{left:0}.balance-pan-right{right:0}.balance-pan i{display:block;width:14px;height:14px;border-radius:3px;background:#1e2021;position:absolute;bottom:5px}.balance-pan i:nth-child(1){left:12px}.balance-pan i:nth-child(2){left:29px}.balance-pan i:nth-child(3){left:46px}.balance-pan i:nth-child(4){left:20px;bottom:20px}.balance-pan-right i{background:#d8d4ca}
.line-picker{border-left:1px solid rgba(255,255,255,.12);padding-left:24px}.line-picker-title{display:flex;justify-content:space-between;color:#8f8d87;font-size:11px;margin-bottom:16px}.line-option{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.1);color:#aaa79f;padding:14px 0}.line-option.is-active{color:#f2f0eb}.line-option span{float:right;color:#777872;font-size:10px}
.odds-strip{display:grid;grid-template-columns:auto 1fr auto auto;gap:22px;align-items:center;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12);padding:20px 0}.odds-strip span{display:block;color:#87857e;font-size:10px}.odds-strip strong{font-size:22px;font-weight:400}.odds-strip input{accent-color:#c69b5a}.odds-reset{background:none;border:1px solid rgba(255,255,255,.2);color:#bdbab1;padding:9px 13px;font-size:11px}
@media(max-width:800px){.prediction-shell{padding:0 20px}.prediction-headline{display:block}.prediction-countdown{text-align:left;margin-top:24px}.forecast-upper{display:block}.line-picker{border-left:0;border-top:1px solid rgba(255,255,255,.12);padding:20px 0}.forecast-sides{grid-template-columns:1fr 100px 1fr}.forecast-probability{font-size:45px}.odds-strip{grid-template-columns:1fr 1fr}.odds-strip input{grid-column:1/-1;grid-row:2}}

body[data-theme="mineral"] {
  --bg: #0a0e12;
  --surface: #11171c;
  --surface-soft: #162027;
  --line: rgba(207, 220, 225, 0.14);
  --line-strong: rgba(222, 232, 236, 0.3);
  --text: #eef2f2;
  --muted: #84939b;
  --muted-strong: #b5c1c5;
  --accent: #c6d6d7;
  --accent-soft: rgba(198, 214, 215, 0.15);
  --cool: #8ea9b4;
}

body[data-theme="observatory"] {
  --bg: #050607;
  --surface: #0a0d10;
  --surface-soft: #101418;
  --line: rgba(222, 229, 229, 0.12);
  --line-strong: rgba(222, 229, 229, 0.27);
  --text: #f0f1ed;
  --muted: #7d8587;
  --muted-strong: #aeb4b2;
  --accent: #c9a45b;
  --accent-soft: rgba(201, 164, 91, 0.14);
  --cool: #99a5a6;
}

* { box-sizing: border-box; }

html { min-width: 320px; background: var(--bg); }

body {
  margin: 0;
  min-width: 320px;
  min-height: 100vh;
  overflow-x: hidden;
  background: var(--bg);
  color: var(--text);
  font-family: Inter, "SF Pro Display", "Microsoft YaHei", system-ui, sans-serif;
  letter-spacing: 0;
}

button, a { font: inherit; }
button { color: inherit; }

.app-shell { min-height: 100vh; }

.topbar {
  min-height: 76px;
  padding: 0 3.6vw;
  border-bottom: 1px solid var(--line);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 28px;
  background: rgba(6, 9, 13, 0.96);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  width: max-content;
  color: var(--text);
  text-decoration: none;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.14em;
}

.brand-mark {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid var(--line-strong);
  color: var(--accent);
  font-size: 10px;
  letter-spacing: 0.08em;
}

.brand-name span { color: var(--accent); padding: 0 3px; }

.topbar-center { text-align: center; }

.topbar-kicker, .rail-kicker, .readout-label {
  color: var(--muted);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.21em;
  text-transform: uppercase;
}

.topbar-center h1 {
  margin: 7px 0 0;
  color: var(--text);
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.11em;
}

.topbar-tools {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 15px;
}

.render-profile { color: var(--muted); font-size: 9px; letter-spacing: 0.15em; }

.motion-button {
  min-width: 50px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--muted-strong);
  cursor: pointer;
  font-size: 10px;
  transition: border-color 180ms ease, color 180ms ease;
}

.motion-button:hover, .motion-button[aria-pressed="true"] { border-color: var(--accent); color: var(--accent); }

.atlas-layout {
  width: min(1800px, 100%);
  min-height: var(--stage-height);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(195px, 0.8fr) minmax(560px, 2.8fr) minmax(195px, 0.8fr);
}

.rail {
  min-width: 0;
  min-height: var(--stage-height);
  display: flex;
  flex-direction: column;
  background: var(--surface);
}

.rail-portal-slot { display: none; }

.rail-left { border-right: 1px solid var(--line); }
.rail-right { border-left: 1px solid var(--line); }

.rail-header {
  min-height: 116px;
  padding: 27px 24px 19px;
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 16px;
}

.rail-title-row { display: flex; gap: 13px; align-items: flex-start; }
.rail-number { color: var(--accent); font-size: 10px; letter-spacing: 0.12em; padding-top: 3px; }
.rail-header h2 { margin: 6px 0 0; font-size: 21px; font-weight: 500; letter-spacing: 0.1em; }
.rail-count { color: var(--muted); font-size: 9px; letter-spacing: 0.14em; }

.rail-viewport { position: relative; flex: 1; min-height: 300px; overflow: hidden; }

.rail-scroll {
  position: absolute;
  inset: 0;
  overflow-y: auto;
  padding: 0 0 18px;
  scrollbar-width: none;
  scroll-behavior: auto;
  overscroll-behavior: contain;
}

.rail-scroll::-webkit-scrollbar { display: none; }
.rail-scroll.is-dragging, .rail-scroll.is-dragging * { user-select: none; cursor: grabbing; }

.rail-empty {
  min-height: 210px;
  display: grid;
  place-content: center;
  gap: 9px;
  padding: 28px 20px;
  text-align: center;
  color: var(--muted-strong);
}

.rail-empty span { font-size: 13px; letter-spacing: 0.12em; }
.rail-empty small { color: var(--muted); font-size: 9px; letter-spacing: 0.13em; }

.prediction-view {
  position: fixed;
  inset: 0;
  z-index: 30;
  display: none;
  background: #04070a;
}

.prediction-view.is-open { display: block; }
.prediction-active .atlas-layout, .prediction-active .topbar { visibility: hidden; }

.prediction-shell {
  width: 100%;
  height: 100%;
  background:
    radial-gradient(circle at 72% -10%, rgba(40, 73, 88, .14), transparent 38%),
    linear-gradient(180deg, rgba(7, 11, 15, .99), rgba(4, 7, 10, .995));
}

.prediction-nav {
  height: 64px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 0 clamp(20px, 4vw, 68px);
  border-bottom: 1px solid var(--line);
  background: rgba(5, 8, 11, .88);
}

.prediction-product { color: var(--muted-strong); font-size: 11px; letter-spacing: .05em; }
.prediction-live { justify-self: end; display: inline-flex; align-items: center; gap: 8px; color: var(--muted-strong); font-size: 10px; }
.prediction-live i { width: 6px; height: 6px; border-radius: 50%; background: #59656a; box-shadow: 0 0 0 4px rgba(89,101,106,.09); }
.prediction-live.is-ready i { background: var(--accent); box-shadow: 0 0 0 4px rgba(211,164,76,.1); }

.prediction-close {
  justify-self: start;
  padding: 8px 0;
  border: 0;
  background: transparent;
  color: var(--muted-strong);
  cursor: pointer;
  font-size: 11px;
}
.prediction-close span { display: inline-block; margin-right: 9px; color: var(--accent); transition: transform 180ms ease; }
.prediction-close:hover span { transform: translateX(-3px); }
.prediction-close:focus-visible { outline: 1px solid var(--accent); outline-offset: 6px; }

.prediction-scroll { height: calc(100% - 64px); overflow: auto; padding: clamp(34px, 5vw, 76px) clamp(20px, 6vw, 96px) 48px; }
.prediction-headline { width: min(1240px, 100%); margin: 0 auto; display: grid; grid-template-columns: 1fr auto; gap: 48px; align-items: end; }
.prediction-identity p { margin: 0 0 14px; color: var(--accent); font-size: 11px; }
.prediction-identity h1 { max-width: 900px; margin: 0; color: #f1f3f1; font-size: clamp(34px, 5vw, 68px); font-weight: 420; letter-spacing: -.035em; line-height: 1.04; text-wrap: balance; }
.prediction-intro { display: block; margin-top: 16px; color: var(--muted); font-size: 12px; }
.prediction-countdown { min-width: 158px; padding-left: 24px; border-left: 1px solid rgba(211,164,76,.42); text-align: left; }
.prediction-countdown span, .prediction-countdown small { display: block; color: var(--muted); font-size: 9px; }
.prediction-countdown strong { display: block; margin: 8px 0 7px; color: #e7bd70; font-size: 26px; font-weight: 450; letter-spacing: .01em; font-variant-numeric: tabular-nums; }

.pipeline-ledger { width: min(1240px, 100%); margin: clamp(34px, 5vw, 62px) auto 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.pipeline-ledger li { position: relative; min-width: 0; padding: 17px 12px 16px 25px; border-right: 1px solid var(--line); }
.pipeline-ledger li:last-child { border-right: 0; }
.pipeline-ledger i { position: absolute; left: 6px; top: 22px; width: 6px; height: 6px; border: 1px solid #657078; border-radius: 50%; }
.pipeline-ledger li.is-done i { border-color: var(--accent); background: var(--accent); }
.pipeline-ledger li.is-working i { border-color: var(--accent); animation: observation-pulse 1.6s ease-in-out infinite; }
.pipeline-ledger span { display: block; color: var(--muted-strong); font-size: 11px; }
.pipeline-ledger small { display: block; margin-top: 5px; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }

.prediction-layout { width: min(1240px, 100%); margin: clamp(34px, 5vw, 56px) auto 0; display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; }
.prediction-analysis { min-width: 0; }
.prediction-section-head { display: flex; align-items: end; justify-content: space-between; gap: 24px; padding-bottom: 15px; border-bottom: 1px solid var(--line-strong); }
.prediction-section-head h2, .evidence-title h2 { margin: 0; color: var(--text); font-size: 18px; font-weight: 470; }
.prediction-section-head p { margin: 7px 0 0; color: var(--muted); font-size: 10px; }
.prediction-updated { color: var(--muted); font-size: 9px; white-space: nowrap; }

.prediction-models { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-left: 1px solid var(--line); }
.prediction-model-row { min-width: 0; min-height: 300px; padding: 23px 24px 24px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.012); }
.prediction-model-row:nth-child(-n+2) { border-top: 0; }
.model-row-head { display: grid; grid-template-columns: auto 1fr auto; gap: 11px; align-items: center; }
.model-index { color: var(--muted); font-size: 9px; font-variant-numeric: tabular-nums; }
.model-row-head h3 { margin: 0; color: var(--text); font-size: 13px; font-weight: 520; }
.model-status { color: var(--accent); font-size: 9px; }
.status-input_insufficient .model-status, .status-service_error .model-status, .status-adapter_error .model-status { color: #d58b7f; }
.model-provenance { margin: 9px 0 20px 25px; overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.model-wait { min-height: 130px; display: grid; align-content: center; gap: 8px; color: var(--muted-strong); font-size: 11px; }
.model-wait small { color: var(--muted); line-height: 1.55; }
.model-targets { display: grid; gap: 22px; }
.model-target { display: grid; gap: 13px; }
.target-name { display: flex; justify-content: space-between; color: var(--muted-strong); font-size: 10px; }
.target-name strong { color: #dfe5e5; font-size: 11px; font-weight: 500; }
.market-sides { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 1px solid var(--line); }
.market-side { min-width: 0; padding: 17px 16px 15px; }
.market-side + .market-side { border-left: 1px solid var(--line); }
.side-label { display: block; overflow: hidden; color: var(--muted-strong); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.side-probability { display: block; margin-top: 9px; color: var(--text); font-size: clamp(24px, 1.8vw, 27px); font-weight: 520; letter-spacing: -.02em; line-height: 1.08; font-variant-numeric: tabular-nums; }
.market-side dl { margin: 16px 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.market-side dl div { min-width: 0; display: grid; gap: 5px; }
.market-side dt { color: var(--muted); font-size: 9px; }
.market-side dd { margin: 0; color: var(--text); font-size: clamp(21px, 1.55vw, 24px); font-weight: 540; line-height: 1.08; font-variant-numeric: tabular-nums; }
.market-side dl div:last-child dt { color: #c69e56; }
.market-side dl div:last-child dd { color: #efbd61; font-size: clamp(23px, 1.75vw, 27px); font-weight: 650; line-height: 1.04; }
.model-more { color: var(--muted); font-size: 8px; }

.prediction-evidence { position: sticky; top: 0; padding-top: 2px; }
.evidence-title { display: flex; align-items: center; justify-content: space-between; padding-bottom: 15px; border-bottom: 1px solid var(--line-strong); }
.evidence-title span { color: var(--accent); font-size: 9px; }
.evidence-list { margin: 0; }
.evidence-list > div { padding: 15px 0; border-bottom: 1px solid var(--line); }
.evidence-list dt { color: var(--muted); font-size: 9px; }
.evidence-list dd { margin: 6px 0 0; overflow: hidden; color: var(--muted-strong); font-size: 10px; line-height: 1.55; overflow-wrap: anywhere; }
.source-coverage { margin-top: 25px; }
.coverage-line { display: flex; align-items: center; justify-content: space-between; margin: 15px 0 8px; color: var(--muted); font-size: 9px; }
.coverage-line strong { color: var(--muted-strong); font-weight: 500; font-variant-numeric: tabular-nums; }
.coverage-meter-track { height: 2px; overflow: hidden; background: rgba(190,214,220,.12); }
.coverage-meter-track span { display: block; width: 0; height: 100%; background: var(--accent); transition: width .4s ease; }
.source-list { margin: 22px 0 0; color: var(--muted-strong); font-size: 9px; line-height: 1.75; }
.evidence-note { margin: 18px 0 0; padding-top: 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: 9px; line-height: 1.8; }

.prediction-placeholder {
  display: flex;
  align-items: center;
  gap: 12px;
  width: min(1240px, 100%);
  margin: 38px auto 0;
  padding: 20px 0 0;
  border-top: 1px solid var(--line);
}
.prediction-placeholder > i { width: 7px; height: 7px; border: 1px solid var(--accent); border-radius: 50%; }
.prediction-placeholder.is-working > i { animation: observation-pulse 1.6s ease-in-out infinite; }
.prediction-placeholder span { display: block; color: var(--text); font-size: 13px; }
.prediction-placeholder small { display: block; margin-top: 5px; color: var(--muted); font-size: 9px; }

.forecast-prototype { display: grid; gap: 18px; }
.forecast-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; border-bottom:1px solid var(--line); padding-bottom:14px; }
.forecast-model-tabs,.forecast-market-tabs { display:flex; gap:5px; }
.forecast-model-tab,.forecast-market-tab,.line-option,.odds-reset { border:1px solid var(--line); background:rgba(255,255,255,.025); color:var(--muted-strong); padding:8px 13px; font:inherit; font-size:10px; cursor:pointer; transition:color .2s ease,background .2s ease,border-color .2s ease; }
.forecast-model-tab.is-active,.forecast-market-tab.is-active,.line-option.is-active { color:var(--text); border-color:rgba(211,164,76,.58); background:rgba(211,164,76,.11); }
.forecast-upper { display:grid; grid-template-columns:minmax(0,1fr) 150px; gap:20px; }
.probability-stage { min-height:390px; padding:24px 28px 18px; border:1px solid var(--line); background:rgba(255,255,255,.018); }
.probability-stage-head { display:flex; align-items:baseline; gap:12px; border-bottom:1px solid var(--line); padding-bottom:13px; }
.probability-stage-head span,.probability-stage-head small,.line-picker-title span,.line-picker-title small,.forecast-kelly-label,.forecast-consensus,.odds-strip span,.chart-head p { color:var(--muted); font-size:9px; }
.probability-stage-head strong { color:var(--text); font-size:17px; font-weight:500; }.probability-stage-head small { margin-left:auto; }
.forecast-sides { display:grid; grid-template-columns:minmax(120px,1fr) minmax(250px,1.8fr) minmax(120px,1fr); align-items:center; gap:18px; min-height:325px; }
.forecast-side { display:grid; gap:8px; min-width:0; }.forecast-side:last-child { text-align:right; }.forecast-kelly { color:#79b98b; font-size:26px; font-variant-numeric:tabular-nums; font-weight:600; }.forecast-kelly.is-positive { color:#d78379; }.forecast-probability-wrap { position:relative; display:inline-block; }.forecast-probability { display:block; color:var(--text); font-size:clamp(35px,4vw,58px); line-height:1; font-weight:480; letter-spacing:-.05em; font-variant-numeric:tabular-nums; }.forecast-consensus { display:block; margin-top:8px; color:var(--muted); }.forecast-side-name { color:var(--muted-strong); font-size:11px; }
.balance-scene { position:relative; height:220px; perspective:650px; }.balance-beam { position:absolute; left:5%; right:5%; top:48%; height:7px; background:#98704d; border-radius:6px; transform:rotate(-4deg); box-shadow:0 4px 0 rgba(0,0,0,.2); }.balance-fulcrum { position:absolute; left:50%; top:2px; width:0; height:0; border-left:21px solid transparent; border-right:21px solid transparent; border-bottom:78px solid #6d523d; transform:translate(-50%,4px); }.balance-pan { position:absolute; top:-4px; display:flex; align-items:flex-end; gap:3px; min-width:104px; height:70px; padding:0 7px 5px; border-radius:0 0 42px 42px; border-bottom:4px solid #a77a4f; background:linear-gradient(#8c6748,#4d3a2b); }.balance-pan-left { left:-5px; transform:rotate(4deg); }.balance-pan-right { right:-5px; transform:rotate(-4deg); }.balance-pan i { display:block; width:17px; height:30px; border-radius:7px 7px 3px 3px; background:#1b1d20; box-shadow:inset 2px 0 0 rgba(255,255,255,.12); }.balance-pan i:nth-child(2),.balance-pan i:nth-child(4) { height:22px; background:#bec1bd; }.balance-pan i:nth-child(3) { height:39px; }
.balance-back { position:absolute; top:18px; width:58px; height:58px; border:1px solid rgba(211,164,76,.18); border-radius:50%; opacity:.22; }.balance-back-left { left:4%; }.balance-back-right { right:4%; }
.line-picker { border-left:1px solid var(--line); padding-left:16px; }.line-picker-title { display:grid; gap:6px; padding-bottom:10px; border-bottom:1px solid var(--line); }.line-option { display:flex; align-items:center; justify-content:space-between; width:100%; margin-top:7px; }.line-option span { color:var(--muted); font-size:8px; }
.odds-strip { display:flex; align-items:center; gap:18px; padding:15px 18px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }.odds-strip div { display:grid; gap:5px; min-width:85px; }.odds-strip strong { color:var(--text); font-size:18px; font-variant-numeric:tabular-nums; }.odds-strip input { flex:1; accent-color:var(--accent); }.odds-reset { margin-left:auto; padding:6px 9px; }
.forecast-chart-section { margin-top:8px; padding-top:20px; }.chart-head { display:flex; justify-content:space-between; align-items:end; gap:20px; }.eyebrow { color:var(--accent); font-size:9px; letter-spacing:.16em; }.chart-head h2 { margin:7px 0 0; color:var(--text); font-size:19px; font-weight:470; }.chart-head p { margin:7px 0 0; }.chart-toggles { display:flex; gap:13px; }.chart-toggles label { color:var(--muted-strong); font-size:9px; cursor:pointer; }.chart-toggles input { position:absolute; opacity:0; }.chart-toggles i { display:inline-block; width:8px; height:8px; margin-right:5px; border:1px solid currentColor; vertical-align:-1px; }.chart-toggles input:checked + i { background:currentColor; }.chart-toggles label:nth-child(1){color:#d3a44c}.chart-toggles label:nth-child(2){color:#a88bca}.chart-toggles label:nth-child(3){color:#8196a4}.forecast-chart { margin-top:18px; padding:13px 0 0; border-top:1px solid var(--line); }.forecast-chart svg { display:block; width:100%; height:auto; overflow:visible; }.chart-grid { fill:none; stroke:rgba(190,214,220,.12); stroke-width:1; stroke-dasharray:3 6; }.chart-line { fill:none; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }.chart-line-market{stroke:#8196a4}.chart-line-safe{stroke:#d3a44c}.chart-line-aggressive{stroke:#a88bca}.chart-axis { display:flex; justify-content:space-between; padding:7px 0 0; color:var(--muted); font-size:8px; }
@media (max-width:720px){.forecast-upper{grid-template-columns:1fr}.line-picker{border-left:0;border-top:1px solid var(--line);padding:14px 0 0}.forecast-sides{grid-template-columns:1fr 1.4fr 1fr;gap:7px}.probability-stage{padding:18px 12px}.forecast-probability{font-size:32px}.forecast-kelly{font-size:20px}.chart-head{display:grid}.forecast-toolbar{align-items:flex-start;display:grid}.odds-strip{gap:10px}.odds-strip div{min-width:62px}}

/* Forecast prototype: calm analytical surface, with the balance kept subordinate to the readout. */
.prediction-section, .prediction-placeholder { display:block; }
.prediction-layout { margin-top:clamp(28px,4vw,46px); }
.forecast-prototype { gap:22px; }
.forecast-toolbar { border:0; padding:0 0 4px; }
.forecast-model-tabs,.forecast-market-tabs { background:rgba(12,20,25,.7); padding:4px; border:1px solid rgba(190,214,220,.13); }
.forecast-model-tab,.forecast-market-tab { border:0; background:transparent; padding:8px 14px; color:#7d8b90; border-radius:2px; }
.forecast-model-tab.is-active,.forecast-market-tab.is-active { color:#f0eee7; background:#28352f; box-shadow:inset 0 0 0 1px rgba(211,164,76,.3); }
.forecast-market-tab.is-active { color:#e1bd74; background:rgba(211,164,76,.1); }
.forecast-upper { grid-template-columns:minmax(0,1fr) 178px; gap:28px; }
.probability-stage { min-height:0; padding:25px 30px 20px; border:1px solid rgba(190,214,220,.16); background:linear-gradient(150deg,rgba(18,31,38,.78),rgba(6,12,17,.92)); box-shadow:0 22px 60px rgba(0,0,0,.16); }
.probability-stage-head { border:0; padding-bottom:18px; }.probability-stage-head span { color:#76848a; text-transform:uppercase; letter-spacing:.14em; }.probability-stage-head strong { color:#f0eee7; font-size:19px; letter-spacing:-.03em; }.probability-stage-head small { color:#8c989b; }
.forecast-sides { min-height:310px; grid-template-columns:minmax(115px,.84fr) minmax(260px,1.8fr) minmax(115px,.84fr); gap:20px; }
.forecast-side { align-content:center; gap:12px; }.forecast-side:last-child { text-align:right; }.forecast-kelly-label { color:#69777c; text-transform:lowercase; letter-spacing:.1em; }.forecast-kelly { color:#86ba92; font-size:30px; font-weight:560; letter-spacing:-.04em; }.forecast-kelly.is-positive { color:#d58d80; }.forecast-probability { font-size:clamp(40px,4vw,64px); color:#f3f0e8; }.forecast-consensus { color:#879397; font-size:10px; }.forecast-side-name { color:#b2bab6; font-size:12px; }
.balance-scene { height:182px; opacity:.93; transform:translateY(5px); }.balance-beam { top:49%; height:5px; background:linear-gradient(90deg,#75583f,#b98a57,#75583f); box-shadow:0 3px 0 rgba(0,0,0,.28); }.balance-fulcrum { border-left-width:17px;border-right-width:17px;border-bottom-width:64px;border-bottom-color:#594536; top:2px; }.balance-pan { min-width:91px; height:58px; gap:3px; background:linear-gradient(#765a42,#3e3027); border-bottom-width:3px; }.balance-pan i { width:14px; height:25px; border-radius:5px 5px 2px 2px; }.balance-pan i:nth-child(2),.balance-pan i:nth-child(4){height:18px}.balance-pan i:nth-child(3){height:32px}.balance-pan-left{left:-2px}.balance-pan-right{right:-2px}.balance-back{display:none}
.line-picker { border-left:1px solid rgba(190,214,220,.14); padding-left:20px; }.line-picker-title { padding-bottom:14px; }.line-picker-title span { color:#e7e4dc; font-size:12px; }.line-picker-title small { line-height:1.5; }.line-option { border-color:transparent; background:rgba(255,255,255,.025); color:#a8b0ae; padding:11px 10px; }.line-option.is-active { color:#f1eee5; background:rgba(211,164,76,.12); border-color:rgba(211,164,76,.3); }.line-option span { color:#737e81; }
.odds-strip { padding:16px 20px; border-color:rgba(190,214,220,.15); background:rgba(8,14,18,.45); }.odds-strip div { min-width:100px; }.odds-strip span { color:#798589; text-transform:uppercase; letter-spacing:.08em; }.odds-strip strong { color:#eeeae1; font-size:20px; }.odds-strip input { height:3px; cursor:pointer; }.odds-reset { color:#879397; border-color:rgba(190,214,220,.18); background:transparent; }
.forecast-chart-section { padding:22px 0 0; }.chart-head h2 { color:#e9e6dd; font-size:20px; letter-spacing:-.025em; }.chart-head p { color:#78858a; }.chart-toggles { gap:15px; }.chart-toggles label { color:#a6afad!important; }.chart-toggles label:nth-child(1) i { color:#d3a44c; }.chart-toggles label:nth-child(2) i { color:#a98ac0; }.chart-toggles label:nth-child(3) i { color:#82959e; }.forecast-chart { margin-top:20px; padding-top:14px; border-color:rgba(190,214,220,.13); }.chart-line { stroke-width:2.1; }.chart-line-safe{stroke:#d3a44c}.chart-line-aggressive{stroke:#aa8bc2}.chart-line-market{stroke:#7e969f}.chart-axis { color:#748185; }
.forecast-prototype + .prediction-section { display:block; }
@media (max-width:720px){.forecast-upper{gap:18px}.probability-stage{padding:20px 14px}.forecast-sides{min-height:275px;grid-template-columns:minmax(82px,.8fr) minmax(145px,1.5fr) minmax(82px,.8fr)}.forecast-kelly{font-size:22px}.forecast-probability{font-size:35px}.forecast-consensus{font-size:9px}.odds-strip{flex-wrap:wrap}.odds-strip input{order:5;flex-basis:100%}.odds-reset{margin-left:auto}}

@keyframes observation-pulse { 0%,100% { background: transparent; box-shadow: 0 0 0 0 rgba(211,164,76,0); } 50% { background: var(--accent); box-shadow: 0 0 0 5px rgba(211,164,76,.09); } }

@media (max-width: 720px) {
  .prediction-nav { grid-template-columns: 1fr auto; padding: 0 20px; }
  .prediction-product { display: none; }
  .prediction-scroll { padding: 32px 20px 38px; }
  .prediction-headline { grid-template-columns: 1fr; gap: 28px; }
  .prediction-identity { min-width: 0; }
  .prediction-identity h1 { max-width: 100%; font-size: 34px; line-height: 1.12; overflow-wrap: anywhere; word-break: break-all; white-space: normal; text-wrap: wrap; }
  .prediction-countdown { padding-left: 15px; }
  .pipeline-ledger { grid-template-columns: 1fr; border-bottom: 0; }
  .pipeline-ledger li { padding: 12px 12px 12px 25px; border-right: 0; border-bottom: 1px solid var(--line); }
  .pipeline-ledger i { top: 17px; }
  .prediction-layout { grid-template-columns: 1fr; margin-top: 36px; }
  .prediction-models { grid-template-columns: 1fr; }
  .prediction-model-row { min-height: 228px; padding: 21px 18px; }
  .prediction-section-head { align-items: start; }
  .market-side { padding: 15px 13px 13px; }
  .side-probability { font-size: 23px; }
  .market-side dl { grid-template-columns: 1fr; gap: 9px; }
  .market-side dd { font-size: 20px; }
  .market-side dl div:last-child dd { font-size: 23px; }
}

/* Price focus: the selected side owns the odds range; the balance remains a quiet anchor. */
.forecast-side { cursor:pointer; border:1px solid transparent; border-radius:14px; padding:12px 14px; transition:border-color .25s ease, background .25s ease, transform .25s ease; }
.forecast-side:hover, .forecast-side:focus-visible { border-color:rgba(211,164,76,.38); background:rgba(211,164,76,.055); outline:none; }
.forecast-side.is-price-focus { border-color:rgba(211,164,76,.52); background:linear-gradient(145deg,rgba(211,164,76,.11),rgba(12,25,31,.06)); box-shadow:0 12px 30px rgba(0,0,0,.14); }
.forecast-side.is-price-focus::after { content:"价格调整中"; display:block; margin-top:8px; color:#d3a44c; font-size:10px; letter-spacing:.08em; }
.odds-strip { border-top:1px solid rgba(211,164,76,.2); border-bottom:1px solid rgba(211,164,76,.12); background:rgba(9,20,26,.55); }
.odds-strip input { accent-color:#d3a44c; }
.odds-reset { border-color:rgba(211,164,76,.35); color:#d8b66c; }
.balance-scene::before, .balance-scene::after { content:""; position:absolute; top:13px; width:78px; height:44px; border:1px solid rgba(211,164,76,.25); border-radius:50%; filter:blur(1px); opacity:.3; }
.balance-scene::before { left:2%; transform:scale(.82) rotate(-5deg); }
.balance-scene::after { right:2%; transform:scale(.82) rotate(5deg); }
.balance-back { display:block; position:absolute; top:18px; width:72px; height:52px; border:0; opacity:.2; filter:blur(1.2px); }
.balance-back::before { content:""; position:absolute; top:22px; left:0; right:0; height:3px; background:#9b7449; transform:rotate(-4deg); }
.balance-back::after { content:""; position:absolute; left:31px; top:25px; border-left:6px solid transparent; border-right:6px solid transparent; border-bottom:20px solid #6e523d; }
.balance-back-left { left:1%; }.balance-back-right { right:1%; transform:scaleX(-1); }

/* 2.5D material pass: depth comes from perspective, occlusion and contact shadows, not a fake glow. */
.forecast-prototype { --brass:#b58a56; --brass-light:#d4aa70; --ink:#08151b; --paper:#e8e0d1; --silver:#bfc6c4; --black-weight:#1b2020; }
.forecast-prototype .probability-stage { position:relative; isolation:isolate; overflow:hidden; perspective:900px; border-radius:18px; background:linear-gradient(145deg,#172830 0%,#0b181e 58%,#071016 100%); }
.forecast-prototype .probability-stage::before { content:""; position:absolute; inset:0; z-index:-1; background:radial-gradient(ellipse at 50% 80%,rgba(181,138,86,.14),transparent 43%),linear-gradient(105deg,transparent 0 48%,rgba(255,255,255,.035) 49%,transparent 52%); pointer-events:none; }
.forecast-prototype .forecast-sides { position:relative; }
.forecast-prototype .balance-scene { position:relative; transform:translateY(7px) rotateX(5deg); transform-style:preserve-3d; }
.forecast-prototype .balance-scene::before, .forecast-prototype .balance-scene::after { top:18px; height:48px; border-color:rgba(212,170,112,.24); background:rgba(7,15,19,.22); box-shadow:0 12px 16px rgba(0,0,0,.18); }
.forecast-prototype .balance-beam { transform:rotateZ(-4deg) translateZ(16px); transform-origin:50% 50%; height:7px; border-radius:8px; background:linear-gradient(180deg,#e0b47b 0%,#9b6e42 42%,#523827 100%); box-shadow:0 5px 0 rgba(28,17,10,.42),0 13px 18px rgba(0,0,0,.24); }
.forecast-prototype .balance-fulcrum { transform:translateZ(6px); border-bottom-color:#80603f; filter:drop-shadow(0 9px 4px rgba(0,0,0,.3)); }
.forecast-prototype .balance-pan { transform:translateZ(4px); border:1px solid rgba(222,181,123,.45); border-radius:10px 10px 17px 17px; background:linear-gradient(160deg,#b4814d 0%,#68472f 42%,#2e241d 100%); box-shadow:inset 0 2px 0 rgba(255,220,163,.4),0 12px 15px rgba(0,0,0,.3); }
.forecast-prototype .balance-pan::after { content:""; position:absolute; right:12%; bottom:-7px; left:12%; height:8px; border-radius:50%; background:rgba(0,0,0,.28); filter:blur(5px); }
.forecast-prototype .balance-pan i { position:relative; z-index:1; border:1px solid rgba(255,255,255,.18); border-radius:50% 50% 5px 5px; background:linear-gradient(110deg,#0d1111 0 34%,#343b38 48%,#111616 72%); box-shadow:inset 2px 0 0 rgba(255,255,255,.14),0 4px 5px rgba(0,0,0,.35); transform:translateZ(10px); }
.forecast-prototype .balance-pan-right i:nth-child(2), .forecast-prototype .balance-pan-right i:nth-child(4) { background:linear-gradient(110deg,#7e8986 0 30%,#e3e5df 48%,#707a77 78%); }
.forecast-prototype .balance-pan-left i:nth-child(2), .forecast-prototype .balance-pan-left i:nth-child(4) { background:linear-gradient(110deg,#7e8986 0 30%,#e3e5df 48%,#707a77 78%); }
.forecast-prototype .balance-back { transform:scale(.84) rotateY(-14deg) translateZ(-30px); }
.forecast-prototype .balance-back-right { transform:scale(.78) rotateY(14deg) translateZ(-40px); }
.forecast-prototype .balance-scene { animation:balance-breathe 5s ease-in-out infinite; }
@keyframes balance-breathe { 0%,100%{transform:translateY(7px) rotateX(5deg) rotateZ(-1deg)} 50%{transform:translateY(5px) rotateX(5deg) rotateZ(1deg)} }
.forecast-prototype .odds-strip { border-radius:14px; padding:18px 22px; box-shadow:0 14px 34px rgba(0,0,0,.12); }
.forecast-prototype .odds-strip input { height:5px; border-radius:99px; }
.forecast-prototype .odds-strip input::-webkit-slider-thumb { width:18px; height:18px; border:2px solid #f2e6cc; border-radius:50%; background:#b58a56; box-shadow:0 4px 12px rgba(0,0,0,.35); }
.forecast-prototype .odds-strip input::-moz-range-thumb { width:15px; height:15px; border:2px solid #f2e6cc; border-radius:50%; background:#b58a56; box-shadow:0 4px 12px rgba(0,0,0,.35); }
@media (prefers-reduced-motion: reduce) { .forecast-prototype .balance-scene { animation:none; } }

@media (min-width: 721px) and (max-width: 1040px) {
  .prediction-layout { grid-template-columns: minmax(0, 1fr); }
  .prediction-models { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .pipeline-ledger li.is-working i, .prediction-placeholder.is-working > i { animation: none; background: var(--accent); }
  .coverage-meter-track span, .prediction-close span { transition: none; }
}

.rail-viewport.is-edge-bounce {
  animation: rail-edge-bounce 260ms cubic-bezier(0.22, 0.7, 0.28, 1);
}

.rail-viewport.is-edge-bounce[data-bounce-direction="up"] { --bounce-distance: 6px; }
.rail-viewport.is-edge-bounce[data-bounce-direction="down"] { --bounce-distance: -6px; }

@keyframes rail-edge-bounce {
  0%, 100% { transform: translateY(0); }
  36% { transform: translateY(var(--bounce-distance)); }
  68% { transform: translateY(calc(var(--bounce-distance) * -0.35)); }
}

.rail-entry {
  position: relative;
  min-height: 86px;
  padding: 16px 24px;
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 7px;
  cursor: pointer;
  transition: background 240ms ease, padding 240ms ease;
}

.rail-entry:hover { background: var(--surface-soft); }
.rail-entry.is-active { padding-left: 28px; background: var(--accent-soft); }
.rail-entry.is-active::before { content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 2px; background: var(--accent); }
.rail-entry.match-entry { min-height: 76px; padding-top: 13px; padding-bottom: 13px; padding-left: 42px; }
.rail-entry.match-entry.is-active { padding-left: 46px; }
.rail-entry.match-entry::after { content: ""; position: absolute; left: 27px; top: 0; bottom: 0; border-left: 1px solid var(--line); }

.entry-line { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.entry-title { min-width: 0; overflow: hidden; color: var(--text); font-size: 13px; font-weight: 550; text-overflow: ellipsis; white-space: nowrap; }
.entry-count { flex: none; color: var(--muted); font-size: 9px; letter-spacing: 0.1em; }
.entry-meta { display: flex; align-items: center; gap: 8px; min-width: 0; color: var(--muted-strong); font-size: 10px; }
.entry-meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.entry-subtle { color: var(--muted); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; }
.match-entry .entry-title { font-size: 12px; }
.match-entry .entry-meta { color: var(--muted); }
.match-entry .entry-meta strong { color: var(--accent); font-weight: 500; }

.rail-footer {
  min-height: 47px;
  padding: 0 24px;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: 8px;
  letter-spacing: 0.18em;
}

.rail-footer-dot, .status-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); }

.globe-stage {
  position: relative;
  min-width: 0;
  min-height: var(--stage-height);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: #080d13;
}

.stage-header, .stage-footer {
  position: relative;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}

.stage-header { min-height: 78px; padding: 20px 30px 14px; }
.stage-footer { min-height: 74px; padding: 14px 30px 22px; border-top: 1px solid var(--line); }

.lock-readout { display: flex; align-items: center; gap: 13px; }
.lock-readout strong { display: block; margin-top: 6px; font-size: 17px; font-weight: 500; letter-spacing: 0.08em; }
.lock-readout .status-dot { flex: none; }

.skin-switcher { display: flex; gap: 3px; border: 1px solid var(--line); padding: 3px; }
.skin-button { padding: 6px 9px; border: 0; background: transparent; color: var(--muted); cursor: pointer; font-size: 9px; letter-spacing: 0.06em; transition: color 180ms ease, background 180ms ease; }
.skin-button:hover, .skin-button.is-active { background: var(--accent-soft); color: var(--accent); }

.globe-wrap { position: relative; flex: 1; min-height: 0; overflow: hidden; }
.globe-mount { position: absolute; inset: 0; cursor: grab; }
.globe-mount:active { cursor: grabbing; }
.globe-mount canvas { display: block; outline: none; }
.globe-vignette { position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 120px 42px rgba(0, 0, 0, 0.32); }
.globe-coordinates { position: absolute; right: 30px; bottom: 22px; color: var(--muted); font-size: 9px; letter-spacing: 0.11em; pointer-events: none; }

.globe-loading { position: absolute; inset: 0; z-index: 3; display: flex; align-items: center; justify-content: center; gap: 12px; color: var(--muted); background: #080d13; font-size: 9px; letter-spacing: 0.2em; transition: opacity 650ms ease; pointer-events: none; }
.globe-loading.is-ready { opacity: 0; }
.loading-orbit { width: 18px; height: 18px; border: 1px solid var(--line-strong); border-top-color: var(--accent); border-radius: 50%; animation: spin 1.4s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.stage-footer strong { display: block; max-width: 34vw; margin-top: 6px; overflow: hidden; color: var(--text); font-size: 13px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.stage-foot-meta { display: flex; align-items: center; gap: 12px; color: var(--muted-strong); font-size: 10px; letter-spacing: 0.12em; }
.meta-divider { display: inline-block; width: 22px; height: 1px; background: var(--line-strong); }

.match-sheet { position: fixed; inset: 0; z-index: 20; display: none; }
.match-sheet.is-open { display: block; }
.sheet-backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.58); }
.sheet-panel { position: absolute; right: 0; bottom: 0; left: 0; max-width: 620px; margin: 0 auto; padding: 27px 30px 31px; border: 1px solid var(--line-strong); border-bottom: 0; background: var(--surface); box-shadow: 0 -26px 70px rgba(0, 0, 0, 0.55); }
.sheet-close { position: absolute; top: 18px; right: 21px; width: 30px; height: 30px; border: 1px solid var(--line); background: transparent; color: var(--muted-strong); cursor: pointer; font-size: 18px; line-height: 1; }
.sheet-panel h2 { margin: 14px 38px 0 0; font-size: 23px; font-weight: 500; letter-spacing: 0.02em; }
.sheet-meta { display: flex; align-items: center; gap: 12px; margin-top: 12px; color: var(--muted-strong); font-size: 11px; }
.sheet-lockline { display: flex; align-items: center; gap: 9px; margin-top: 26px; color: var(--accent); font-size: 11px; }
.sheet-cta { width: 100%; margin-top: 26px; padding: 13px 16px; border: 1px solid var(--accent); background: var(--accent); color: #101010; cursor: pointer; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; }
.sheet-cta span { margin-left: 7px; font-size: 14px; }

body.is-static .globe-mount { cursor: default; }
body.is-static .globe-mount canvas { filter: saturate(0.76); }

@media (max-width: 1040px) {
  :root { --stage-height: calc(100vh - 112px); }
  .atlas-layout { grid-template-columns: minmax(165px, 0.75fr) minmax(420px, 2.2fr) minmax(165px, 0.75fr); }
  .rail-header, .rail-entry { padding-right: 17px; padding-left: 17px; }
  .rail-entry.is-active { padding-left: 21px; }
  .rail-entry.match-entry { padding-left: 32px; }
  .rail-entry.match-entry.is-active { padding-left: 36px; }
  .rail-entry.match-entry::after { left: 20px; }
}

@media (max-width: 720px) {
  :root { --stage-height: calc(100svh - 82px); }
  .topbar { min-height: 82px; padding: 0 16px; grid-template-columns: 1fr auto; gap: 8px; }
  .topbar-center { grid-column: 1 / -1; grid-row: 1; text-align: left; padding-left: 42px; }
  .topbar-center h1 { margin-top: 4px; font-size: 14px; letter-spacing: 0.09em; }
  .topbar-kicker { font-size: 8px; }
  .brand { grid-column: 1; grid-row: 1; align-self: start; padding-top: 23px; z-index: 2; }
  .brand-name { display: none; }
  .topbar-tools { grid-column: 2; grid-row: 1; align-self: start; padding-top: 20px; z-index: 2; }
  .render-profile { display: none; }
  .motion-button { min-width: 45px; padding: 7px 8px; }
  .atlas-layout { grid-template-columns: minmax(72px, 20vw) minmax(0, 1fr) minmax(72px, 20vw); min-height: var(--stage-height); }
  .rail { min-height: var(--stage-height); }
  .rail-header { min-height: 89px; padding: 17px 9px 12px; gap: 10px; }
  .rail-title-row { gap: 7px; }
  .rail-number { font-size: 8px; }
  .rail-kicker { overflow: hidden; font-size: 7px; letter-spacing: 0.12em; text-overflow: ellipsis; white-space: nowrap; }
  .rail-header h2 { margin-top: 5px; font-size: 17px; letter-spacing: 0.05em; }
  .rail-count { font-size: 7px; letter-spacing: 0.08em; }
  .rail-entry { min-height: 86px; padding: 13px 8px; gap: 6px; }
  .rail-entry.is-active { padding-left: 11px; }
  .rail-entry.match-entry { min-height: 76px; padding: 12px 6px 12px 16px; }
  .rail-entry.match-entry.is-active { padding-left: 19px; }
  .rail-entry.match-entry::after { left: 10px; }
  .entry-line { display: block; }
  .entry-title { display: block; font-size: 11px; line-height: 1.35; white-space: normal; }
  .entry-count { display: block; margin-top: 3px; font-size: 7px; }
  .entry-meta { display: block; margin-top: 2px; font-size: 8px; line-height: 1.4; }
  .entry-subtle { font-size: 7px; }
  .match-entry .entry-title { font-size: 9px; line-height: 1.35; }
  .match-entry .entry-meta { font-size: 8px; }
  .rail-footer { min-height: 36px; padding: 0 9px; font-size: 6px; letter-spacing: 0.1em; }
  .rail-footer-dot { width: 4px; height: 4px; box-shadow: 0 0 0 3px var(--accent-soft); }
  .stage-header { min-height: 72px; padding: 16px 11px 10px; align-items: flex-start; flex-direction: column; gap: 10px; }
  .lock-readout { gap: 9px; }
  .lock-readout strong { margin-top: 4px; font-size: 14px; }
  .readout-label { font-size: 7px; letter-spacing: 0.13em; }
  .skin-switcher { align-self: stretch; justify-content: space-between; }
  .skin-button { flex: 1; padding: 6px 4px; font-size: 8px; }
  .stage-footer { min-height: 58px; padding: 9px 11px 13px; }
  .stage-footer strong { max-width: 44vw; font-size: 10px; }
  .stage-foot-meta { gap: 6px; font-size: 8px; letter-spacing: 0.06em; }
  .meta-divider { width: 9px; }
  .globe-coordinates { right: 12px; bottom: 12px; font-size: 7px; }
  .globe-vignette { box-shadow: inset 0 0 55px 18px rgba(0, 0, 0, 0.36); }
  .sheet-panel { padding: 24px 20px 24px; }
  .sheet-panel h2 { font-size: 19px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* Desktop art direction: open space, hairline separators, and a quiet globe. */
@media (min-width: 721px) {
  :root {
    --bg: #01040b;
    --surface: transparent;
    --surface-soft: rgba(141, 177, 198, 0.045);
    --line: rgba(157, 190, 209, 0.12);
    --line-strong: rgba(185, 213, 226, 0.24);
    --text: #e7eef2;
    --muted: #768b9a;
    --muted-strong: #b6c8d1;
    --accent: #a9c8d9;
    --accent-soft: rgba(169, 200, 217, 0.1);
    --cool: #8eb1c4;
    --stage-height: 100vh;
  }

  body[data-theme="mineral"] {
    --bg: #050b12;
    --surface: transparent;
    --surface-soft: rgba(185, 211, 218, 0.05);
    --line: rgba(190, 216, 222, 0.13);
    --line-strong: rgba(210, 229, 231, 0.24);
    --text: #edf3f3;
    --muted: #80969f;
    --muted-strong: #bed0d4;
    --accent: #c2d8dc;
    --accent-soft: rgba(194, 216, 220, 0.1);
    --cool: #99bbc4;
  }

  body[data-theme="observatory"] {
    --bg: #010306;
    --surface: transparent;
    --surface-soft: rgba(168, 193, 204, 0.04);
    --line: rgba(177, 201, 211, 0.11);
    --line-strong: rgba(203, 222, 229, 0.22);
    --text: #edf1f1;
    --muted: #78888f;
    --muted-strong: #b6c7cc;
    --accent: #b4ceda;
    --accent-soft: rgba(180, 206, 218, 0.09);
    --cool: #91b2c0;
  }

  html, body { background: var(--bg); }
  body { overflow: hidden; -webkit-font-smoothing: antialiased; }
  .app-shell { min-height: 100vh; background: var(--bg); }

  .topbar {
    position: absolute;
    z-index: 10;
    top: 0;
    right: 0;
    left: 0;
    min-height: 74px;
    padding: 0 44px;
    border-bottom: 0;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    background: transparent;
    pointer-events: none;
  }

  .brand, .topbar-tools { pointer-events: auto; }
  .brand { margin-top: 24px; gap: 10px; color: var(--text); font-size: 11px; letter-spacing: 0.16em; }
  .brand-mark { width: auto; height: auto; border: 0; color: var(--accent); font-size: 11px; letter-spacing: 0.08em; }
  .brand-name span { color: var(--accent); padding: 0 2px; }
  .topbar-tools { margin-top: 24px; gap: 20px; }
  .render-profile { color: var(--muted); font-size: 8px; letter-spacing: 0.16em; opacity: 0.64; }
  .motion-button { min-width: 0; padding: 5px 0; border: 0; background: transparent; color: var(--muted-strong); font-size: 9px; letter-spacing: 0.08em; }
  .motion-button:hover, .motion-button[aria-pressed="true"] { border-color: transparent; background: transparent; color: var(--accent); }

  .atlas-layout {
    position: relative;
    width: 100%;
    margin: 0;
    min-height: 100vh;
    grid-template-columns: clamp(250px, 22vw, 390px) minmax(0, 1fr) clamp(250px, 22vw, 390px);
    background: var(--bg);
  }

  .globe-stage { grid-column: 1 / -1; grid-row: 1; z-index: 1; }
  .rail {
    grid-row: 1;
    min-height: 100vh;
    position: relative;
    z-index: 3;
    background: rgba(18, 34, 44, 0.14);
    border-color: rgba(177, 207, 221, 0.14);
    -webkit-backdrop-filter: blur(18px) saturate(125%);
    backdrop-filter: blur(18px) saturate(125%);
    box-shadow: inset 0 0 34px rgba(160, 196, 208, 0.04);
  }
  .rail-left { grid-column: 1; border-right: 1px solid rgba(177, 207, 221, 0.14); padding-left: 0; }
  .rail-right { grid-column: 3; border-left: 1px solid rgba(177, 207, 221, 0.14); padding-right: 0; }
  .rail-right .rail-portal-slot {
    display: block;
    flex: 0 0 33.333vh;
    min-height: 0;
    border-bottom: 1px solid rgba(177, 207, 221, 0.08);
    background: rgba(2, 8, 14, 0.04);
    pointer-events: none;
  }
  .rail-header { min-height: 146px; padding: 102px 28px 18px; border-bottom: 0; gap: 10px; }
  .rail-right .rail-header { min-height: 126px; padding: 24px 28px 18px; }
  .rail-title-row { gap: 10px; align-items: baseline; }
  .rail-number { display: none; }
  .rail-header h2 { margin: 0; color: var(--text); font-size: 20px; font-weight: 400; letter-spacing: 0.16em; }
  .rail-count { color: var(--muted); font-size: 8px; letter-spacing: 0.14em; opacity: 0.76; }
  .rail-viewport { min-height: 0; margin-top: 4px; }
  .rail-scroll { padding: 0 0 18px; }

  .rail-entry {
    min-height: 78px;
    padding: 15px 28px;
    border-bottom: 1px solid rgba(158, 190, 207, 0.105);
    background: transparent;
    user-select: none;
    gap: 5px;
    opacity: 0.62;
    transition: color 220ms ease, opacity 220ms ease, transform 220ms ease;
  }
  .rail-entry:hover { background: transparent; opacity: 0.9; }
  .rail-entry.is-active { padding-left: 32px; background: transparent; opacity: 1; transform: translateX(2px); }
  .rail-entry.is-active::before { top: 12px; bottom: 12px; width: 1px; background: var(--accent); box-shadow: 0 0 14px rgba(174, 207, 221, 0.5); }
  .rail-entry.match-entry { min-height: 70px; padding: 13px 28px 13px 44px; border-bottom-color: rgba(158, 190, 207, 0.075); }
  .rail-entry.match-entry.is-active { padding-left: 48px; }
  .rail-entry.match-entry::after { display: none; }
  .entry-title { color: var(--text); font-size: 13px; font-weight: 450; }
  .group-entry .entry-title { font-size: 14px; font-weight: 500; }
  .match-entry .entry-title { color: var(--muted-strong); font-size: 12px; font-weight: 400; }
  .match-entry.is-active .entry-title { color: var(--text); }
  .entry-count { color: var(--muted); font-size: 8px; opacity: 0.78; }
  .entry-meta { color: var(--muted); font-size: 9px; gap: 9px; }
  .entry-meta strong, .match-entry .entry-meta strong { color: var(--accent); font-weight: 500; }
  .entry-subtle { color: var(--muted); font-size: 8px; }
  .rail-footer { display: none; }

  .globe-stage { min-height: 100vh; background: var(--bg); }
  .stage-header {
    position: absolute;
    z-index: 4;
    top: 92px;
    right: 0;
    left: 0;
    min-height: 0;
    padding: 0;
    pointer-events: none;
  }
  .lock-readout, .skin-switcher { pointer-events: auto; }
  .lock-readout { gap: 10px; margin-left: 29%; }
  .status-dot { width: 5px; height: 5px; background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft), 0 0 16px rgba(177, 208, 222, 0.32); }
  .readout-label { color: var(--muted); font-size: 8px; letter-spacing: 0.18em; opacity: 0.64; }
  .lock-readout strong { margin-top: 5px; color: var(--text); font-size: 15px; font-weight: 400; letter-spacing: 0.1em; }
  .skin-switcher { display: none; }
  .skin-button { position: relative; padding: 6px 0; border: 0; background: transparent; color: var(--muted); font-size: 8px; letter-spacing: 0.06em; }
  .skin-button:hover, .skin-button.is-active { background: transparent; color: var(--text); }
  .skin-button.is-active::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 1px; background: var(--accent); opacity: 0.8; }
  .globe-wrap { min-height: 0; }
  .globe-vignette { box-shadow: inset 0 0 160px 60px rgba(0, 0, 0, 0.34); }
  .globe-coordinates { right: 38px; bottom: 28px; color: var(--muted); font-size: 8px; opacity: 0.52; }
  .stage-footer { display: none; }
  .globe-loading { background: var(--bg); }
}

/* Transparent city-point Earth is the default product layer. */
.globe-mount { position: absolute; inset: 0; }
.point-earth-canvas { position:absolute; inset:0; width:100%; height:100%; display:block; opacity:0; pointer-events:none; touch-action:none; cursor:grab; transition:opacity .24s ease; z-index:3; }
.point-earth-canvas.dragging { cursor:grabbing; }
.globe-mount.is-point-earth > canvas:not(.point-earth-canvas) { visibility:hidden; }
.globe-mount.is-point-earth .globe-vignette { pointer-events:none; opacity:.42; }
.earth-model-switch { position:absolute; left:50%; transform:translateX(-50%); bottom:clamp(74px,11vh,118px); z-index:20; border:1px solid rgba(185,213,226,.24); background:rgba(9,14,19,.72); color:rgba(225,235,237,.8); padding:8px 11px; font:10px/1.1 ui-monospace,SFMono-Regular,monospace; letter-spacing:.1em; text-transform:uppercase; backdrop-filter:blur(10px); cursor:pointer; pointer-events:auto; }
.earth-model-switch:hover,.earth-model-switch:focus-visible { border-color:rgba(231,181,93,.66); color:#f2d39d; outline:none; }
@media (prefers-reduced-motion: reduce) { .point-earth-canvas { transition:none; } }

/* The production route is fed by completed model records. The earlier
   interaction study stays in source history and never presents synthetic
   probabilities beside a live match. */
.forecast-prototype { display:none; }
.globe-stage::before { content:""; position:absolute; inset:0; z-index:0; pointer-events:none; background:linear-gradient(180deg,rgba(4,8,13,.12),rgba(4,8,13,.42)),url("./assets/night-sky.png") center/cover; opacity:.2; }
.globe-mount,.stage-header,.stage-footer,.earth-model-switch { z-index:1; }

/* Selection surface: make the live window and interaction grammar legible without
   adding a dashboard layer over the Earth. */
.rail-header-meta { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.rail-guide { color:var(--muted); font-size:8px; letter-spacing:.08em; opacity:.72; white-space:nowrap; }
.entry-action { color:var(--muted); font-size:8px; letter-spacing:.04em; opacity:.62; }
.rail-empty { min-height:260px; padding:38px 28px; }
.rail-empty span { color:var(--muted-strong); font-size:12px; letter-spacing:.1em; }
.rail-empty small { max-width:170px; line-height:1.7; }
.stage-scope { margin-left:auto; display:grid; gap:5px; text-align:right; pointer-events:none; }
.stage-scope span { color:var(--muted); font-size:8px; letter-spacing:.18em; }
.stage-scope strong { color:var(--text); font-size:12px; font-weight:450; letter-spacing:.06em; }
.stage-scope small { color:var(--muted); font-size:8px; letter-spacing:.04em; }

@media (min-width:721px) {
  .globe-stage.has-selection .stage-footer {
    position:absolute; right:30px; bottom:27px; left:30px; display:flex;
    min-height:0; padding:0; border-top:0; pointer-events:none;
  }
  .globe-stage.has-selection .stage-footer > div:first-child { max-width:58%; }
  .globe-stage.has-selection .stage-footer strong { color:var(--text); font-size:11px; letter-spacing:.04em; }
  .globe-stage.has-selection .stage-foot-meta { margin-left:auto; color:var(--muted-strong); font-size:8px; }
}

@media (max-width:720px) {
  .rail-header-meta { display:block; }
  .rail-guide { display:block; margin-top:4px; font-size:6px; letter-spacing:.02em; }
  .entry-action { display:none; }
  .stage-scope { width:100%; margin-left:0; text-align:left; }
  .stage-scope strong { font-size:11px; }
  .stage-scope small { font-size:7px; }
}
