[hidden] { display: none !important; }

body.evidence-page {
  min-width: 72rem;
  background: #eef3f8;
}

.evidence-course { width: 100%; padding: 1rem 0 0; }

.evidence-stage {
  position: relative;
  width: min(calc(100% - 2rem), var(--content-width));
  min-height: 46.5rem;
  margin-inline: auto;
  padding: 1.65rem 2.6rem 2.4rem;
  overflow: hidden;
  border: 1px solid #d8dfeb;
  border-radius: 2rem;
  background:
    linear-gradient(rgb(39 52 112 / 3.5%) 1px, transparent 1px),
    linear-gradient(90deg, rgb(39 52 112 / 3.5%) 1px, transparent 1px),
    linear-gradient(108deg, #fff 7%, #fbfcff 55%, #eefaf8 100%);
  background-size: 4rem 4rem, 4rem 4rem, auto;
  box-shadow: 0 1.5rem 4rem rgb(39 52 112 / 8%);
  isolation: isolate;
}

.shanghai-backdrop {
  position: absolute;
  z-index: -1;
  right: 0;
  bottom: 0;
  width: 46%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
}

.shanghai-backdrop::before {
  position: absolute;
  right: -5%;
  bottom: -5rem;
  width: 110%;
  height: 18rem;
  border-radius: 55% 0 0;
  background: linear-gradient(165deg, rgb(0 174 141 / 4%), rgb(0 174 141 / 18%));
  content: "";
}

.skyline { position: absolute; right: 3.5rem; bottom: 9.5rem; width: 23rem; height: 13rem; opacity: 0.24; }
.skyline span { position: absolute; bottom: 0; display: block; width: 2.5rem; border: 1px solid #087b72; background: rgb(255 255 255 / 50%); }
.skyline span:nth-child(1) { left: 0; height: 5.2rem; }
.skyline span:nth-child(2) { left: 3.2rem; width: 3.1rem; height: 8.4rem; }
.skyline span:nth-child(3) { left: 7.2rem; width: 1.9rem; height: 11.5rem; border-radius: 50% 50% 0 0; }
.skyline span:nth-child(3)::before { position: absolute; top: -4rem; left: 0.82rem; width: 0.22rem; height: 4rem; background: #087b72; content: ""; }
.skyline span:nth-child(4) { left: 10rem; width: 4rem; height: 7rem; }
.skyline span:nth-child(5) { left: 15rem; width: 2.9rem; height: 10rem; }
.skyline span:nth-child(6) { right: 0; width: 4.2rem; height: 6rem; }
.river-line { position: absolute; right: -8%; bottom: 5.5rem; width: 110%; height: 6rem; border-top: 1px solid rgb(0 174 141 / 28%); border-radius: 50%; }

.evidence-journey { position: absolute; z-index: 3; top: 1.5rem; left: 3rem; width: min(25rem, calc(54% - 3rem)); }
.evidence-journey ol { position: relative; display: flex; margin: 0; padding: 0; list-style: none; justify-content: space-between; }
.evidence-journey ol::before { position: absolute; z-index: -1; top: 1rem; right: 1.5rem; left: 1.5rem; height: 2px; background: #dbe0ea; content: ""; }
.evidence-journey li { display: grid; min-width: 3rem; justify-items: center; }
.evidence-journey button { display: grid; padding: 0; border: 0; background: transparent; color: #9aa2ba; cursor: default; justify-items: center; }
.evidence-journey button:not(:disabled) { cursor: pointer; }
.evidence-journey button span { display: grid; width: 2rem; height: 2rem; border: 2px solid #cfd5e2; border-radius: 50%; background: #fff; font-size: 0.8rem; font-weight: 700; place-items: center; }
.evidence-journey button em { margin-top: 0.25rem; font-size: 0.72rem; font-style: normal; font-weight: 600; }
.evidence-journey .is-available button { color: var(--color-primary); }
.evidence-journey .is-available button span { border-color: var(--color-green); }
.evidence-journey .is-active button span { border-color: var(--color-green); background: var(--color-green); color: white; box-shadow: 0 0 0 0.48rem rgb(0 174 141 / 10%); }
.evidence-journey .is-complete button span::after { color: var(--color-green); content: "✓"; }
.evidence-journey .is-complete:not(.is-active) button span { font-size: 0; }
.evidence-journey .is-complete:not(.is-active) button span::after { font-size: 0.82rem; }

.evidence-step { position: relative; z-index: 2; padding-top: 4.6rem; }
.evidence-step__heading { max-width: 62rem; margin-bottom: 1.35rem; }
.evidence-kicker { margin: 0 0 0.35rem; color: #007760; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; }
.evidence-step__heading h1,
.evidence-step__heading h2 { margin: 0; color: var(--color-primary); font-size: 2.55rem; font-weight: 500; letter-spacing: -0.045em; line-height: 1.05; white-space: nowrap; }

.intro-workspace,
.check-workspace,
.repair-workspace,
.correction-workspace { display: grid; gap: 1.3rem; }
.intro-workspace { grid-template-columns: 0.94fr 1.06fr; }
.check-workspace { grid-template-columns: 0.94fr 1.06fr; align-items: stretch; }
.repair-workspace { grid-template-columns: 1.05fr 0.95fr; }
.correction-workspace { grid-template-columns: 0.94fr 1.06fr; align-items: start; }

.ai-card,
.route-board,
.claim-tray,
.evidence-desk,
.repair-panel {
  border: 1px solid #d5dce9;
  border-radius: 0.9rem;
  background: rgb(255 255 255 / 95%);
  box-shadow: 0 0.85rem 2rem rgb(39 52 112 / 7%);
}

.ai-card { display: flex; min-height: 26.2rem; overflow: hidden; flex-direction: column; }
.ai-card__bar { display: flex; min-height: 4rem; padding: 0 1.25rem; border-bottom: 1px solid #d5dce9; align-items: center; gap: 0.7rem; color: var(--color-primary); }
.ai-card__logo { display: grid; width: 2.25rem; height: 2.25rem; border-radius: 0.55rem; background: var(--color-primary); color: white; place-items: center; }
.ai-card__bar strong { font-size: 1rem; }
.ai-card__body { display: flex; padding: 1rem 1.25rem 0.7rem; flex: 1; flex-direction: column; gap: 0.75rem; }
.message { display: flex; margin: 0; }
.message p { margin: 0; font-size: 0.83rem; line-height: 1.45; }
.message--user { justify-content: flex-end; }
.message--user p { max-width: 91%; padding: 0.65rem 0.82rem; border-radius: 1rem 1rem 0.24rem 1rem; background: var(--color-primary); color: white; }
.message--ai { display: block; }
.message--ai > p { color: var(--color-primary); font-weight: 700; }
.ai-itinerary { display: grid; margin: 0.55rem 0 0; padding: 0; list-style: none; gap: 0.38rem; }
.ai-itinerary li { display: grid; min-height: 2.15rem; padding: 0.45rem 0.55rem; border: 1px solid #e0e4ed; border-radius: 0.45rem; background: #fafbfe; grid-template-columns: 3.1rem minmax(0, 1fr); align-items: center; gap: 0.45rem; }
.ai-itinerary time { color: #007760; font-family: var(--font-mono); font-size: 0.66rem; font-weight: 700; }
.ai-itinerary span { font-size: 0.7rem; line-height: 1.32; }
.ai-card__action { padding: 0.75rem 1.25rem 1rem; }
.ai-card--check { min-height: 28rem; }
.ai-card--check .ai-card__body { padding-bottom: 0.85rem; }
.ai-card--check .message--user p { max-width: 94%; }
.check-itinerary { display: grid; margin: 0.6rem 0 0; padding: 0; list-style: none; gap: 0.48rem; }
.check-itinerary li { margin: 0; }

.primary-action,
.secondary-action { display: inline-flex; min-height: 2.8rem; padding: 0.68rem 1.05rem; border: 1px solid var(--color-primary); border-radius: 999px; align-items: center; justify-content: center; gap: 0.7rem; cursor: pointer; font-weight: 700; }
.primary-action { background: var(--color-primary); color: white; }
.secondary-action { background: white; color: var(--color-primary); }
.primary-action span { transition: transform 160ms ease; }
.primary-action:hover span,
.primary-action:focus-visible span { transform: translateX(0.2rem); }
.primary-action:disabled { cursor: default; opacity: 0.48; }

.route-board {
  position: relative;
  min-height: 26.2rem;
  padding: 0;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.city-map {
  --hotel-x: 7%;
  --hotel-y: 18%;
  --west-station-x: 23%;
  --west-station-y: 48%;
  --west-hall-x: 24%;
  --west-hall-y: 78%;
  --east-station-x: 76%;
  --east-station-y: 48%;
  --east-gate-x: 89%;
  --east-gate-y: 31%;
  --east-hall-x: 89%;
  --east-hall-y: 26%;
  position: relative;
  height: 24rem;
  margin-top: 1rem;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: linear-gradient(rgb(39 52 112 / 4%) 1px, transparent 1px), linear-gradient(90deg, rgb(39 52 112 / 4%) 1px, transparent 1px);
  background-size: 2rem 2rem;
}
.city-map::after { position: absolute; top: -15%; left: 55%; width: 4.6rem; height: 130%; border-right: 1px solid rgb(0 135 165 / 20%); border-left: 1px solid rgb(0 135 165 / 20%); background: rgb(117 211 226 / 18%); content: ""; transform: rotate(7deg); }
.map-label { position: absolute; z-index: 1; color: #7290a0; font-family: var(--font-mono); font-size: 0.52rem; font-weight: 700; letter-spacing: 0.08em; }
.map-label--puxi { top: 0.7rem; left: 0.8rem; }
.map-label--pudong { top: 0.7rem; right: 0.8rem; }
.map-river-label { position: absolute; z-index: 2; top: 9.4rem; left: 57%; color: #4e96a7; font-size: 0.5rem; font-weight: 700; transform: rotate(90deg); }
.map-building { position: absolute; z-index: 3; display: grid; width: 7.6rem; min-height: 4.5rem; padding: 0.55rem; border: 1px solid #c9d3e0; border-radius: 0.55rem; background: white; box-shadow: 0 0.45rem 1rem rgb(39 52 112 / 9%); align-content: center; justify-items: center; text-align: center; }
.map-building::before { display: block; width: 2.7rem; height: 1.2rem; margin-bottom: 0.35rem; border: solid var(--color-primary); border-width: 0.25rem 0.12rem 0; background: repeating-linear-gradient(90deg, transparent 0 0.4rem, rgb(39 52 112 / 18%) 0.42rem 0.5rem); content: ""; }
.map-building small { color: var(--color-muted); font-size: 0.53rem; }
.map-building strong { color: var(--color-primary); font-size: 0.68rem; line-height: 1.25; }
.map-building--west { top: calc(var(--west-hall-y) - 4.8rem); left: calc(var(--west-hall-x) - 3.8rem); }
.map-building--east { top: calc(var(--east-hall-y) - 4.8rem); left: calc(var(--east-hall-x) - 6.8rem); border-color: rgb(0 174 141 / 40%); }
.map-start { position: absolute; z-index: 4; top: calc(var(--hotel-y) - 1.1rem); left: calc(var(--hotel-x) - 1.1rem); display: grid; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--color-primary); color: white; font-size: 0.62rem; font-weight: 700; place-items: center; }
.map-pin { position: absolute; z-index: 5; width: 1.4rem; height: 1.4rem; border: 0.2rem solid white; border-radius: 50% 50% 50% 0; background: var(--color-orange); box-shadow: 0 0.25rem 0.5rem rgb(39 52 112 / 20%); transform: rotate(-45deg); }
.map-pin::after { position: absolute; inset: 0.34rem; border-radius: 50%; background: white; content: ""; }
.map-pin--west { top: calc(var(--west-hall-y) - 0.7rem); left: calc(var(--west-hall-x) - 0.7rem); }
.map-pin--east { top: calc(var(--east-hall-y) - 0.7rem); left: calc(var(--east-hall-x) - 0.7rem); background: var(--color-green); }
.metro-stop { position: absolute; z-index: 4; display: flex; max-width: 11rem; align-items: center; gap: 0.38rem; color: var(--color-primary); }
.metro-stop i { display: grid; width: 1.55rem; height: 1.55rem; border: 2px solid white; border-radius: 50%; background: #1677c8; box-shadow: 0 0.25rem 0.55rem rgb(39 52 112 / 18%); color: white; font-size: 0.55rem; font-style: normal; font-weight: 800; place-items: center; }
.metro-stop strong { padding: 0.24rem 0.38rem; border-radius: 0.28rem; background: rgb(255 255 255 / 88%); font-size: 0.56rem; line-height: 1.2; }
.metro-stop--west { top: var(--west-station-y); left: calc(var(--west-station-x) - 0.775rem); transform: translateY(-50%); }
.metro-stop--east { top: var(--east-station-y); left: calc(var(--east-station-x) - 0.775rem); max-width: 8.6rem; transform: translateY(-50%); }
.metro-stop--east strong { width: 6.2rem; }
.map-gate { position: absolute; z-index: 5; display: flex; width: 0.9rem; align-items: center; transform: translate(-50%, -50%); }
.map-gate--east { top: var(--east-gate-y); left: var(--east-gate-x); }
.map-gate--east::before { position: absolute; bottom: 50%; left: 50%; width: 1px; height: 1.2rem; background: #78a9a5; content: ""; }
.map-gate i { position: relative; display: block; width: 0.9rem; height: 0.9rem; border: 2px solid white; border-radius: 50%; background: #78a9a5; box-shadow: 0 0.2rem 0.4rem rgb(39 52 112 / 18%); }
.map-gate strong { position: absolute; right: calc(100% + 0.22rem); padding: 0.15rem 0.3rem; border-radius: 0.25rem; background: rgb(255 255 255 / 94%); color: var(--color-primary); font-size: 0.52rem; white-space: nowrap; }
.map-gate.is-visited::before,
.map-gate.is-visited i { background: var(--color-green); }
.route-svg { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; }
.route-svg path { fill: none; vector-effect: non-scaling-stroke; stroke-linecap: round; stroke-width: 5; opacity: 0; }
.route-svg .route-wrong { stroke: #ef7056; }
.route-svg .route-correct { stroke: #00ae8d; }
.correction-route .route-correct { stroke-dasharray: 1000; stroke-dashoffset: 1000; }
.route-board.is-running:not(.is-corrected) .route-wrong--1 { animation: reveal-route 1.05s ease-in-out 0.12s both; }
.route-board.is-running:not(.is-corrected) .route-wrong--2 { animation: reveal-route 1.05s ease-in-out 1.17s both; }
.route-board.has-arrived:not(.is-corrected) .route-wrong { opacity: 1 !important; }
.route-board.is-running.is-corrected .route-correct--1 { animation: draw-route 1.75s linear 0.1s both; }
.route-board.is-running.is-corrected .route-correct--2 { animation: draw-route 0.7s linear 1.85s both; }
.route-board.is-running.is-corrected .route-correct--3 { animation: draw-route 0.7s linear 2.55s both; }
.route-board.has-arrived.is-corrected .route-correct { opacity: 1 !important; stroke-dashoffset: 0; }
.traveler-dot { position: absolute; z-index: 6; top: calc(var(--hotel-y) - 1rem); left: calc(var(--hotel-x) - 1rem); display: grid; width: 2rem; height: 2rem; border: 0.18rem solid white; border-radius: 50%; background: #ffb548; box-shadow: 0 0.3rem 0.7rem rgb(39 52 112 / 22%); color: var(--color-primary); font-size: 0.9rem; opacity: 0; place-items: center; }
.route-board.is-running .traveler-dot,
.route-board.has-arrived .traveler-dot { opacity: 1; }
.route-board.is-running:not(.is-corrected) .traveler-dot { animation: travel-west 2.25s ease-in-out forwards; }
.route-board.has-arrived:not(.is-corrected) .traveler-dot { top: calc(var(--west-hall-y) - 1rem); left: calc(var(--west-hall-x) - 1rem); }
.route-board.is-running.is-corrected .traveler-dot { animation: travel-east 3.25s ease-in-out forwards; }
.route-board.has-arrived.is-corrected .traveler-dot { top: calc(var(--east-hall-y) - 1rem); left: calc(var(--east-hall-x) - 1rem); }
[data-route-node] { transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, opacity 180ms ease; }
.metro-stop.is-visited strong { background: #edf7ff; color: #0b639f; }
.map-start.is-current,
.metro-stop.is-current i,
.map-gate.is-current i,
.map-pin.is-current { animation: route-node-pulse 720ms ease-out both; }
.map-building.is-current { animation: route-building-pulse 720ms ease-out both; }
.route-board:not(.is-corrected) .map-building--west.is-visited { border-color: #ef9d89; background: #fff7f4; }
.route-board.is-corrected .map-building--east.is-visited { border-color: rgb(0 174 141 / 65%); background: #f1fbf8; }
.route-outcome { position: absolute; z-index: 8; bottom: 2.2rem; left: 9.6rem; max-width: 17rem; padding: 0.58rem 0.7rem; border: 1px solid #ef9d89; border-radius: 0.5rem; background: #fff7f4; color: #9c3722; font-size: 0.64rem; font-weight: 700; line-height: 1.4; }
.route-outcome--success { right: 1rem; bottom: 7.2rem; left: auto; border-color: rgb(0 174 141 / 42%); background: #f1fbf8; color: #007760; }
.evidence-action-row { display: flex; margin-top: 0.95rem; justify-content: center; }

.ai-card--check { min-height: 26.2rem; }
.ai-card--check .ai-card__bar { min-height: 4rem; }
.ai-card--check .ai-card__body { padding: 1rem 1.25rem 0.7rem; gap: 0.75rem; }
.ai-card--check .message p { font-size: 0.83rem; }
.ai-card--check .message--user p { max-width: 91%; padding: 0.65rem 0.82rem; }
.check-itinerary { display: grid; margin: 0.55rem 0 0; padding: 0; list-style: none; gap: 0.38rem; }
.check-itinerary li { margin: 0; }

.plan-choice {
  display: grid;
  width: 100%;
  min-height: 2.15rem;
  padding: 0.45rem 0.55rem;
  border: 1px solid #d9dfeb;
  border-radius: 0.48rem;
  background: #fafbfe;
  color: var(--color-primary);
  cursor: pointer;
  grid-template-columns: 3.1rem minmax(0, 1fr) 8.2rem;
  align-items: center;
  text-align: left;
  gap: 0.45rem;
  transition: border-color 160ms ease, background 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
.plan-choice:hover,
.plan-choice:focus-visible,
.plan-choice[aria-pressed="true"] { border-color: var(--color-amber); background: white; box-shadow: 0 0.35rem 0.9rem rgb(39 52 112 / 8%); transform: translateX(0.12rem); }
.plan-choice time { color: #007760; font-family: var(--font-mono); font-size: 0.66rem; font-weight: 700; }
.plan-choice > span { font-size: 0.7rem; line-height: 1.32; }
.plan-choice em { color: var(--color-muted); font-size: 0.53rem; font-style: normal; font-weight: 750; line-height: 1.3; text-align: right; }
.plan-choice.is-found { border-color: #ef9d89; background: #fff7f4; }
.plan-choice.is-found em { color: #a33d28; }
.plan-choice.is-correct-detail { border-color: rgb(0 174 141 / 48%); background: #f2fbf8; }
.plan-choice.is-correct-detail em { color: #007760; }

.official-brief { margin-top: 0.15rem; padding: 0.55rem 0.65rem 0.5rem; border: 1px solid rgb(0 174 141 / 31%); border-left: 4px solid var(--color-green); border-radius: 0.52rem; background: rgb(241 251 248 / 96%); }
.official-brief header { display: flex; align-items: center; justify-content: space-between; gap: 0.7rem; }
.official-brief header strong { color: #006d58; font-size: 0.68rem; }
.official-brief header span { padding: 0.17rem 0.34rem; border-radius: 999px; background: white; color: #007760; font-size: 0.46rem; font-weight: 800; letter-spacing: 0.05em; }
.official-facts { display: grid; margin-top: 0.42rem; gap: 0.34rem; }
.official-facts section { display: grid; margin: 0; grid-template-columns: 3.3rem minmax(0, 1fr); align-items: start; gap: 0.38rem; }
.official-facts h3 { margin: 0; color: #8d5a12; font-size: 0.54rem; letter-spacing: 0.03em; line-height: 1.35; }
.official-facts p { margin: 0; color: var(--color-primary); font-size: 0.57rem; line-height: 1.38; }
.official-facts p + p { grid-column: 2; }
.official-facts p b { font-weight: 800; }
.official-brief footer { display: flex; margin-top: 0.4rem; padding-top: 0.32rem; border-top: 1px solid rgb(0 174 141 / 18%); align-items: center; flex-wrap: wrap; gap: 0.25rem 0.48rem; }
.official-brief footer span,
.official-brief footer a,
.official-brief footer time { font-size: 0.48rem; font-weight: 700; }
.official-brief footer span,
.official-brief footer time { color: var(--color-muted); }
.official-brief footer time { margin-left: auto; }
.official-brief footer a { color: var(--color-primary); text-decoration-thickness: 1px; text-underline-offset: 0.13rem; }

.find-error-bar { display: flex; margin-top: 0.05rem; min-height: 2rem; padding: 0.38rem 0.5rem; border-radius: 0.4rem; background: #fff7e5; align-items: center; justify-content: space-between; gap: 0.6rem; }
.find-error-bar p { margin: 0; color: var(--color-primary); font-size: 0.64rem; font-weight: 700; }
.find-error-bar strong { color: #8d5a12; font-size: 0.62rem; white-space: nowrap; }
.find-error-feedback { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.find-error-feedback.is-success { color: #007760; }
.find-error-feedback.is-nudge { color: #a33d28; }

.official-theater { display: grid; min-height: 26.2rem; place-items: center; }
.official-location-map { grid-area: 1 / 1; width: 100%; height: 26.2rem; margin: 0; }
.official-brief--focus { z-index: 8; display: flex; width: 84%; max-width: 27.5rem; min-height: 0; margin: 0; padding: 0.72rem 0.85rem 0.56rem; border-left-width: 1px; border-top: 4px solid var(--color-green); grid-area: 1 / 1; flex-direction: column; background: rgb(241 251 248 / 96%); box-shadow: 0 0.85rem 2rem rgb(39 52 112 / 10%); }
.official-brief--focus header { padding-bottom: 0.55rem; border-bottom: 1px solid rgb(0 174 141 / 20%); }
.official-brief--focus header strong { font-size: 0.86rem; }
html[lang="en"] .official-brief--focus:not(.is-collapsed) { width: 94%; max-width: 31rem; }
html[lang="en"] .official-brief--focus header strong { white-space: nowrap; }
html[lang="en"] .official-brief--focus .official-card-toggle { flex-shrink: 0; }
.official-card-toggle { display: inline-flex; padding: 0.22rem 0.38rem; border: 1px solid rgb(0 174 141 / 24%); border-radius: 999px; background: white; align-items: center; gap: 0.28rem; color: #007760; cursor: pointer; font-size: 0.48rem; font-weight: 800; }
.official-card-toggle i { font-size: 0.62rem; font-style: normal; transition: transform 180ms ease; }
.official-card-toggle:hover,
.official-card-toggle:focus-visible { border-color: var(--color-green); box-shadow: 0 0 0 0.16rem rgb(0 174 141 / 10%); }
.official-card-content { display: flex; flex-direction: column; }
.official-brief--focus.is-collapsed { width: max-content; max-width: calc(100% - 1rem); margin-top: -0.85rem; padding: 0.55rem 0.7rem; align-self: start; justify-self: center; background: rgb(255 255 255 / 96%); }
.official-brief--focus.is-collapsed header { padding-bottom: 0; border-bottom: 0; }
.official-brief--focus.is-collapsed header strong { white-space: nowrap; }
.official-brief--focus.is-collapsed .official-card-toggle { white-space: nowrap; }
.official-brief--focus.is-collapsed .official-card-toggle i { transform: rotate(180deg); }
.official-document { display: grid; padding: 0.62rem 0.25rem 0.35rem; align-content: start; gap: 0.52rem; }
.digital-gallery-location { display: flex; margin: 0; padding: 0.4rem 0.5rem; border-radius: 0.4rem; background: #dcf6ef; align-items: center; justify-content: space-between; gap: 0.65rem; }
.digital-gallery-location span { color: #007760; font-size: 0.49rem; font-weight: 800; letter-spacing: 0.05em; white-space: nowrap; }
.digital-gallery-location strong { color: var(--color-primary); font-size: 0.68rem; text-align: right; }
.official-document__section { margin: 0; }
.official-document__section + .official-document__section { padding-top: 0.48rem; border-top: 1px solid rgb(0 174 141 / 20%); }
.official-document__section h3 { margin: 0 0 0.25rem; color: #8d5a12; font-size: 0.7rem; letter-spacing: 0.02em; }
.official-document__section p { margin: 0; color: var(--color-primary); font-size: 0.69rem; line-height: 1.5; }
.official-document__section strong { font-weight: 800; }
.official-evidence { border-radius: 0.2rem; box-decoration-break: clone; -webkit-box-decoration-break: clone; transition: color 180ms ease, background-color 180ms ease, box-shadow 180ms ease; }
.official-evidence.is-highlighted { animation: evidence-highlight 540ms ease both; }
.official-evidence.is-conflict { background: #ffe0d9; box-shadow: 0 0 0 0.14rem #ffe0d9, inset 0 -0.14rem 0 rgb(239 112 86 / 55%); color: #84311f; }
.official-evidence.is-confirmed { background: #cff3e7; box-shadow: 0 0 0 0.14rem #cff3e7, inset 0 -0.14rem 0 rgb(0 174 141 / 48%); color: #006d58; }
.official-evidence-note { display: inline-block; margin-left: 0.42rem; padding: 0.18rem 0.42rem; border-radius: 999px; font-size: 0.58rem; font-weight: 800; line-height: 1.2; vertical-align: 0.08rem; white-space: nowrap; animation: scene-rise 280ms ease both; }
.official-evidence-note.is-conflict { background: #ef7056; color: white; }
.official-evidence-note.is-confirmed { background: var(--color-green); color: white; }
.official-brief--focus footer { margin-top: 0.2rem; padding-top: 0.48rem; }
.official-brief--focus footer span,
.official-brief--focus footer a,
.official-brief--focus footer time { font-size: 0.55rem; }

.error-theater { position: relative; min-height: 30rem; overflow: hidden; }
.official-brief--side { margin: 0 0 0.7rem; padding: 0.65rem 0.78rem 0.58rem; background: rgb(241 251 248 / 92%); }
.official-brief--side .official-facts { gap: 0.38rem; }
.official-brief--side .official-facts section { grid-template-columns: 3.8rem minmax(0, 1fr); }
.official-brief--side .official-facts p { font-size: 0.59rem; }
.error-empty,
.error-scene { min-height: 19rem; }
.error-empty { display: grid; align-content: start; justify-items: stretch; color: var(--color-muted); }
.error-empty__radar { position: relative; width: 8.2rem; height: 8.2rem; margin-bottom: 1rem; border: 1px solid rgb(0 174 141 / 32%); border-radius: 50%; background: radial-gradient(circle, rgb(0 174 141 / 6%) 0 8%, transparent 9% 38%, rgb(0 174 141 / 7%) 39% 40%, transparent 41% 68%, rgb(0 174 141 / 8%) 69% 70%, transparent 71%); }
.error-empty__radar::before,
.error-empty__radar::after { position: absolute; background: rgb(0 174 141 / 20%); content: ""; }
.error-empty__radar::before { top: 50%; left: 0; width: 100%; height: 1px; }
.error-empty__radar::after { top: 0; left: 50%; width: 1px; height: 100%; }
.error-empty__radar span,
.error-empty__radar i,
.error-empty__radar b { position: absolute; z-index: 2; width: 0.65rem; height: 0.65rem; border-radius: 50%; background: var(--color-orange); box-shadow: 0 0 0 0.3rem rgb(255 181 72 / 15%); }
.error-empty__radar span { top: 1.55rem; right: 1.75rem; }
.error-empty__radar i { bottom: 1.45rem; left: 2rem; background: var(--color-green); }
.error-empty__radar b { top: 3.65rem; left: 3.65rem; background: var(--color-primary); }
.error-empty h3 { margin: 0; color: var(--color-primary); font-size: 1.25rem; }
.error-empty p { max-width: 22rem; margin: 0.35rem 0 0; font-size: 0.76rem; }

.error-empty .error-scene__label { justify-self: start; }

.error-scene { display: grid; padding: 1rem 1.15rem 1.1rem; align-content: start; background: linear-gradient(145deg, rgb(247 251 253 / 88%), rgb(244 252 249 / 72%)); }
.error-scene__label { justify-self: start; padding: 0.24rem 0.46rem; border-radius: 999px; background: #fff0eb; color: #a33d28; font-size: 0.55rem; font-weight: 800; letter-spacing: 0.06em; }
.error-scene > h3 { margin: 0.9rem 0 0; color: var(--color-primary); font-size: 1.15rem; }
.error-scene > p { max-width: 30rem; margin: 0.35rem 0 0; color: var(--color-muted); font-size: 0.76rem; line-height: 1.5; }

.station-animation,
.entrance-animation,
.booking-animation { position: relative; height: 13.2rem; margin-top: 0.65rem; overflow: hidden; border-radius: 0.75rem; background-image: linear-gradient(rgb(39 52 112 / 4%) 1px, transparent 1px), linear-gradient(90deg, rgb(39 52 112 / 4%) 1px, transparent 1px); background-size: 1.8rem 1.8rem; }
.station-animation { background-color: #f7fbfd; }
.station-animation::after { position: absolute; z-index: 1; top: -14%; left: 53%; width: 5.8rem; height: 132%; border-inline: 1px solid rgb(0 135 165 / 20%); background: rgb(117 211 226 / 22%); content: ""; transform: rotate(7deg); }
.station-animation svg { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; }
.station-path { fill: none; vector-effect: non-scaling-stroke; stroke-dasharray: 1000; stroke-dashoffset: 1000; stroke-linecap: round; stroke-width: 5; }
.station-path--wrong { stroke: #ef7056; }
.station-path--right { stroke: var(--color-green); }
.station-river { position: absolute; z-index: 3; top: 7.8rem; left: 54.5%; color: #4e96a7; font-size: 0.5rem; font-weight: 800; transform: rotate(90deg); }
.station-point,
.station-target { position: absolute; z-index: 4; padding: 0.38rem 0.52rem; border-radius: 0.4rem; background: white; color: var(--color-primary); font-size: 0.57rem; font-weight: 800; box-shadow: 0 0.35rem 0.8rem rgb(39 52 112 / 13%); }
.station-point::before { display: inline-grid; width: 1.25rem; height: 1.25rem; margin-right: 0.32rem; border-radius: 50%; background: #1677c8; color: white; content: "M"; font-size: 0.5rem; place-items: center; }
.station-point--west { top: 4rem; left: 18%; }
.station-point--east { top: 7.3rem; right: 4%; }
.station-target { top: 1.4rem; right: 3%; border: 1px solid rgb(0 174 141 / 40%); }
.station-target::before { display: inline-block; width: 0.5rem; height: 0.5rem; margin-right: 0.3rem; border-radius: 50%; background: var(--color-green); content: ""; }
.station-traveler { position: absolute; z-index: 5; bottom: 2.7rem; left: 8%; display: grid; width: 1.7rem; height: 1.7rem; border: 0.2rem solid white; border-radius: 50%; background: var(--color-amber); box-shadow: 0 0.35rem 0.8rem rgb(39 52 112 / 16%); color: var(--color-primary); font-size: 0.56rem; place-items: center; }

.error-scene--station.is-playing .station-path--wrong { animation: draw-scene-route 900ms ease 0.1s both; }
.error-scene--station.is-playing .station-point--west { animation: wrong-stop 650ms ease 0.9s both; }
.error-scene--station.is-playing .station-path--right { animation: draw-scene-route 1.35s ease 1.35s both; }
.error-scene--station.is-playing .station-point--east,
.error-scene--station.is-playing .station-target { animation: correct-stop 680ms ease 2.5s both; }
.error-scene--station.is-playing .station-traveler { animation: station-compare-trip 3.15s ease-in-out both; }

.entrance-animation { display: grid; padding: 1rem 1.1rem; background-color: #fffaf1; grid-template-columns: 1fr 3rem 1fr; align-items: center; gap: 0.5rem; }
.entrance-option { position: relative; display: grid; min-height: 9.6rem; padding: 0.8rem; border: 1px solid #d4dce8; border-radius: 0.7rem; background: white; box-shadow: 0 0.65rem 1.3rem rgb(39 52 112 / 9%); align-content: end; justify-items: center; }
.entrance-option::before { position: absolute; top: 1.15rem; left: calc(50% - 2.7rem); width: 5.4rem; height: 5.5rem; border: 0.2rem solid var(--color-primary); border-bottom-width: 0.45rem; background: repeating-linear-gradient(90deg, #edf3fa 0 1.15rem, white 1.16rem 1.3rem); content: ""; }
.entrance-option small { color: var(--color-muted); font-size: 0.5rem; font-weight: 800; }
.entrance-option strong { margin-top: 0.18rem; color: var(--color-primary); font-size: 0.76rem; }
.entrance-option span { position: absolute; z-index: 4; top: 0.6rem; right: 0.6rem; display: grid; width: 2rem; height: 2rem; border-radius: 50%; background: #ef7056; color: white; font-size: 1.2rem; font-weight: 800; opacity: 0; place-items: center; }
.entrance-option--right { border-color: rgb(0 174 141 / 46%); opacity: 0; transform: translateX(1.2rem); }
.entrance-option--right span { background: var(--color-green); }
.entrance-option--right b { position: absolute; z-index: 2; top: 1.35rem; left: calc(50% - 2.45rem); width: 2.35rem; height: 5rem; background: #bfe7e1; transform-origin: left center; }
.entrance-arrow { color: var(--color-orange); font-size: 1.6rem; font-style: normal; font-weight: 800; opacity: 0; text-align: center; }
.error-scene--entrance.is-playing .entrance-option--wrong { animation: entrance-wrong 720ms ease 0.15s both; }
.error-scene--entrance.is-playing .entrance-option--wrong span { animation: scene-pop 420ms ease 0.62s both; }
.error-scene--entrance.is-playing .entrance-arrow { animation: scene-rise 420ms ease 1.05s both; }
.error-scene--entrance.is-playing .entrance-option--right { animation: entrance-right 620ms ease 1.28s both; }
.error-scene--entrance.is-playing .entrance-option--right span { animation: scene-pop 420ms ease 1.75s both; }
.error-scene--entrance.is-playing .entrance-option--right b { animation: entrance-door 600ms ease 1.88s both; }

.booking-animation { background: linear-gradient(140deg, #f4fbfa, #fff8e9); }
.booking-animation .scene-gate { right: 3.2rem; bottom: 2rem; width: 13rem; height: 8rem; }
.booking-animation .scene-visitor { bottom: 2.2rem; left: 3rem; }
.booking-animation .scene-booking-pass { top: 2rem; left: 6rem; }
.booking-animation .scene-booking-note { right: 4.2rem; bottom: 1.3rem; }
.error-scene--booking.is-playing .scene-visitor { animation: visitor-arrive 800ms ease both; }
.error-scene--booking.is-playing .scene-booking-pass { animation: pass-arrive 520ms ease 0.78s both; }
.error-scene--booking.is-playing .scene-gate b { animation: gate-open 520ms ease 1.3s both; }
.error-scene--booking.is-playing .scene-booking-note { animation: scene-rise 420ms ease 1.52s both; }

.scene-gate { position: absolute; right: 4rem; bottom: 1rem; display: grid; width: 12rem; height: 7rem; border: 1px solid #aebbd0; border-radius: 0.55rem 0.55rem 0; background: white; color: var(--color-primary); justify-items: center; }
.scene-gate span { margin-top: 0.65rem; font-size: 0.62rem; font-weight: 800; }
.scene-gate i { position: absolute; bottom: 0; left: 1rem; width: 2.5rem; height: 4.8rem; background: #dbe5f0; }
.scene-gate b { position: absolute; bottom: 2.7rem; left: 3.2rem; width: 7.2rem; height: 0.3rem; border-radius: 999px; background: #ef7056; transform-origin: left center; }
.scene-visitor { position: absolute; z-index: 3; bottom: 1.1rem; left: 2.1rem; width: 2.5rem; height: 5rem; }
.scene-visitor span { position: absolute; top: 0; left: 0.7rem; width: 1.15rem; height: 1.15rem; border-radius: 50%; background: var(--color-primary); }
.scene-visitor i { position: absolute; top: 1.05rem; left: 0.25rem; width: 2rem; height: 3.8rem; border-radius: 1rem 1rem 0.4rem 0.4rem; background: #00ae8d; }
.scene-booking-pass { position: absolute; z-index: 5; top: 1.1rem; left: 5.1rem; display: grid; width: 8.8rem; padding: 0.58rem 0.7rem; border: 1px solid var(--color-green); border-radius: 0.45rem; background: white; box-shadow: 0 0.7rem 1.4rem rgb(39 52 112 / 16%); color: var(--color-primary); opacity: 0; transform: translateY(-1rem) rotate(-3deg); }
.scene-booking-pass small { color: #007760; font-size: 0.48rem; font-weight: 800; letter-spacing: 0.05em; }
.scene-booking-pass strong { font-size: 0.8rem; }
.scene-booking-pass span { color: var(--color-muted); font-size: 0.52rem; }
.scene-booking-note { position: absolute; z-index: 4; right: 4.7rem; bottom: 0.35rem; margin: 0; padding: 0.3rem 0.52rem; border-radius: 999px; background: #eaf8f5; color: #007760; font-size: 0.52rem; font-weight: 800; opacity: 0; }

.evidence-feedback,
.repair-feedback { min-height: 2.2rem; margin: 0.72rem 0 0; color: var(--color-muted); font-size: 0.72rem; font-weight: 600; line-height: 1.45; }
.evidence-feedback.is-success,
.repair-feedback.is-success { color: #007760; }
.evidence-feedback.is-nudge,
.repair-feedback.is-nudge { color: #a33d28; }
.check-complete { display: flex; margin-top: 1rem; padding: 0.8rem 1.15rem; border: 1px solid #f4c6b8; border-left: 6px solid #ef7056; border-radius: 0.65rem; background: #fff5f0; align-items: center; gap: 0.8rem; text-align: left; }
.check-complete h3 { margin: 0; color: #633d38; font-size: 1.4rem; font-weight: 800; line-height: 1.2; white-space: nowrap; }
.check-complete__term { padding: 0 0.16rem; border-radius: 0.2rem; background: #ffd9ca; color: #a62618; font-weight: 900; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.check-complete p { display: grid; min-width: 0; margin: 0; color: #633d38; font-size: 0.8rem; line-height: 1.45; gap: 0.25rem; }
.check-complete p strong { font-weight: 700; }

.correction-chat { position: relative; min-height: 31rem; isolation: isolate; }
.correction-chat::after { position: absolute; z-index: 1; inset: 0; background: rgb(13 27 47 / 9%); opacity: 0; pointer-events: none; content: ""; }
.correction-chat.is-send-guided::after { opacity: 1; transition: opacity 220ms ease; }
.correction-chat .ai-card__body { padding-bottom: 1rem; }
.source-followup-compose { position: relative; z-index: 2; display: flex; margin-top: 2.2rem; min-height: 3.4rem; padding: 0.5rem 0.65rem 0.5rem 0.75rem; border: 1px solid #cbd6e6; border-radius: 0.7rem; background: white; align-items: center; gap: 0.7rem; }
.source-followup-compose:focus-within { border-color: #5581bd; box-shadow: 0 0 0 0.16rem rgb(85 129 189 / 12%); }
.source-followup-compose input { width: 100%; min-width: 0; padding: 0; border: 0; outline: 0; background: transparent; color: var(--color-primary); font: inherit; font-size: 0.72rem; flex: 1; }
.source-followup-compose .primary-action { position: relative; min-height: 2.5rem; padding: 0.5rem 0.9rem; font-size: 0.65rem; flex: 0 0 auto; }
.source-followup-compose .primary-action::before { position: absolute; inset: -6px; border: 2px solid var(--color-green); border-radius: inherit; background: rgb(0 174 141 / 5%); opacity: 0; pointer-events: none; content: ""; }
.is-send-guided .source-followup-compose .primary-action::before { opacity: 1; transition: opacity 220ms ease; }
.source-send-hint { position: fixed; z-index: 50; width: max-content; max-width: min(16rem, calc(100vw - 24px)); padding: 0.4rem 0.65rem; border-radius: 0.45rem; background: #007760; box-shadow: 0 0.25rem 0.7rem rgb(0 91 73 / 16%); color: white; font-size: 0.75rem; font-weight: 700; line-height: 1.4; text-align: center; pointer-events: none; }
.source-send-hint::after { position: absolute; left: var(--send-hint-arrow, 50%); width: 8px; height: 8px; background: inherit; transform: translateX(-50%) rotate(45deg); content: ""; }
.source-send-hint[data-placement="above"]::after { bottom: -4px; }
.source-send-hint[data-placement="below"]::after { top: -4px; }
.source-send-hint.is-entering { animation: send-hint-enter 220ms ease both; }
@keyframes send-hint-enter { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
.source-followup-question p { max-width: 94%; }
.source-followup-answer { display: grid; gap: 0.5rem; }
.source-followup-answer > p { color: var(--color-primary); font-size: 0.72rem; line-height: 1.45; }
.source-followup-answer > p:first-child { font-weight: 700; }
.source-followup-links { display: flex; padding: 0.45rem 0.52rem; border-radius: 0.38rem; background: #eef8f5; align-items: center; flex-wrap: wrap; gap: 0.25rem 0.6rem; }
.source-followup-links a { color: #006d58; font-size: 0.62rem; font-weight: 700; text-decoration-thickness: 1px; text-underline-offset: 0.12rem; }
.correction-side { display: grid; min-height: 31rem; align-content: start; }
.correction-route { min-height: 29rem; }
.correction-route-action { display: flex; margin-top: 0.75rem; justify-content: center; }
.correction-route-action .secondary-action { min-height: 2.55rem; padding: 0.55rem 0.9rem; font-size: 0.67rem; }

.route-board--repair { min-height: 29rem; }
.route-board--repair .city-map { height: 24rem; margin-top: 0; }
.plan-summary { display: grid; position: relative; z-index: 2; margin-top: 0.65rem; grid-template-columns: repeat(3, 1fr); gap: 0.4rem; }
.plan-summary div { display: grid; min-height: 2.7rem; padding: 0.42rem 0.5rem; border: 1px solid rgb(0 174 141 / 25%); border-radius: 0.4rem; background: white; }
.plan-summary small { color: var(--color-muted); font-size: 0.5rem; font-weight: 700; }
.plan-summary strong { overflow: hidden; color: var(--color-primary); font-size: 0.62rem; text-overflow: ellipsis; white-space: nowrap; }
.verified-pass { position: absolute; z-index: 9; right: 1.5rem; bottom: 1.3rem; width: 13rem; padding: 0.7rem; border: 1px solid var(--color-green); border-radius: 0.55rem; background: white; box-shadow: 0 0.8rem 1.5rem rgb(39 52 112 / 16%); transform: rotate(-2deg); }
.verified-pass span { display: block; color: #007760; font-size: 0.55rem; font-weight: 700; letter-spacing: 0.06em; }
.verified-pass strong { display: block; margin-top: 0.16rem; color: var(--color-primary); font-size: 0.72rem; }
.verified-pass small { color: var(--color-muted); font-size: 0.55rem; }

.repair-panel { min-height: 29rem; padding: 1.05rem; }
.repair-list { display: grid; margin-top: 0.7rem; gap: 0.55rem; }
.repair-row { padding: 0.55rem; border: 1px solid #dbe1eb; border-radius: 0.55rem; background: #fafbfe; }
.repair-row__heading { display: flex; margin-bottom: 0.42rem; align-items: center; justify-content: space-between; gap: 0.8rem; }
.repair-row__heading strong { color: var(--color-primary); font-size: 0.72rem; }
.repair-row__state { color: var(--color-muted); font-size: 0.56rem; font-weight: 700; }
.repair-row__state.is-success { color: #007760; }
.repair-row__state.is-nudge { color: #a33d28; }
.repair-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.4rem; }
.repair-options button { min-height: 2.55rem; padding: 0.42rem 0.5rem; border: 1px solid #cad3e2; border-radius: 0.42rem; background: white; color: var(--color-primary); cursor: pointer; font-size: 0.62rem; font-weight: 700; line-height: 1.25; }
.repair-options button:hover,
.repair-options button:focus-visible { border-color: var(--color-primary); }
.repair-options button.is-correct { border-color: var(--color-green); background: var(--surface-green); color: #006d58; }
.repair-options button.is-wrong { border-color: #ef9d89; background: #fff4f1; color: #9c3722; }
.repair-actions { display: flex; margin-top: 0.65rem; align-items: center; justify-content: space-between; gap: 0.7rem; }
.repair-actions .repair-feedback { margin: 0; flex: 1; }
.repair-actions .primary-action { min-height: 2.6rem; padding: 0.55rem 0.82rem; font-size: 0.67rem; white-space: nowrap; }

.final-insight { display: grid; margin-top: 0.75rem; padding: 0.7rem 0.9rem; border: 1px solid rgb(0 174 141 / 38%); border-left: 5px solid var(--color-green); border-radius: 0.7rem; background: rgb(240 252 248 / 97%); grid-template-columns: 13.75rem minmax(0, 1fr) auto; align-items: center; gap: 0.7rem; }
.final-insight div { display: grid; }
.final-insight div span { color: #007760; font-size: 0.66rem; font-weight: 800; }
.final-insight div p { margin: 0.12rem 0 0; color: var(--color-primary); font-size: 1.02rem; font-weight: 800; line-height: 1.24; }
.final-insight ol { display: grid; margin: 0; padding: 0; grid-column: 2; list-style: none; counter-reset: method; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.45rem; }
.final-insight li { display: flex; min-width: 0; color: var(--color-primary); font-size: 0.84rem; font-weight: 700; line-height: 1.3; align-items: center; gap: 0.4rem; counter-increment: method; }
html[lang="zh"] .final-insight li { white-space: nowrap; }
.final-insight li::before { display: grid; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: #d5f1e8; color: #006d58; content: counter(method); flex: 0 0 auto; font-size: 0.69rem; place-items: center; }
.final-insight .secondary-action { min-height: 2.35rem; padding: 0.45rem 0.75rem; grid-column: 3; font-size: 0.7rem; white-space: nowrap; }

.evidence-sources { width: min(calc(100% - 2rem), var(--content-width)); margin: 1rem auto 3rem; color: var(--color-primary); font-size: 0.8rem; }
.evidence-sources summary { cursor: pointer; font-weight: 700; }
.evidence-sources > div { max-width: 52rem; padding: 0.8rem 1rem; color: var(--color-muted); }
.evidence-sources p { margin: 0.4rem 0; }
.evidence-sources ul { margin: 0.6rem 0; padding-left: 1.25rem; }

@keyframes travel-west {
  0%, 5% { top: calc(var(--hotel-y) - 1rem); left: calc(var(--hotel-x) - 1rem); }
  47%, 53% { top: calc(var(--west-station-y) - 1rem); left: calc(var(--west-station-x) - 1rem); }
  100% { top: calc(var(--west-hall-y) - 1rem); left: calc(var(--west-hall-x) - 1rem); }
}

@keyframes travel-east {
  0%, 4% { top: calc(var(--hotel-y) - 1rem); left: calc(var(--hotel-x) - 1rem); }
  55%, 60% { top: calc(var(--east-station-y) - 1rem); left: calc(var(--east-station-x) - 1rem); }
  76%, 80% { top: calc(var(--east-gate-y) - 1rem); left: calc(var(--east-gate-x) - 1rem); }
  100% { top: calc(var(--east-hall-y) - 1rem); left: calc(var(--east-hall-x) - 1rem); }
}

@keyframes reveal-route { from { opacity: 0; } to { opacity: 1; } }
@keyframes draw-route { from { opacity: 1; stroke-dashoffset: 1000; } to { opacity: 1; stroke-dashoffset: 0; } }

@keyframes route-node-pulse {
  0% { box-shadow: 0 0 0 0 rgb(0 174 141 / 0%), 0 0.25rem 0.55rem rgb(39 52 112 / 18%); }
  45% { box-shadow: 0 0 0 0.7rem rgb(0 174 141 / 18%), 0 0.35rem 0.8rem rgb(39 52 112 / 22%); }
  100% { box-shadow: 0 0 0 0 rgb(0 174 141 / 0%), 0 0.25rem 0.55rem rgb(39 52 112 / 18%); }
}

@keyframes route-building-pulse {
  0% { transform: scale(1); box-shadow: 0 0.45rem 1rem rgb(39 52 112 / 9%); }
  45% { transform: scale(1.045); box-shadow: 0 0 0 0.55rem rgb(0 174 141 / 13%), 0 0.65rem 1.2rem rgb(39 52 112 / 15%); }
  100% { transform: scale(1); box-shadow: 0 0.45rem 1rem rgb(39 52 112 / 9%); }
}

@keyframes evidence-highlight {
  from { background: #fff; box-shadow: inset 0 0 0 rgb(255 181 72 / 0%); }
  50% { background: #fff2c9; box-shadow: inset 0 0 2rem rgb(255 181 72 / 16%); }
  to { background: #fffaf0; box-shadow: inset 0 0 0 rgb(255 181 72 / 0%); }
}

@keyframes scene-pop {
  from { opacity: 0; transform: scale(0.72) rotate(-8deg); }
  to { opacity: 1; transform: scale(1) rotate(0); }
}

@keyframes clock-hour {
  from { transform: rotate(-210deg); }
  to { transform: rotate(-60deg); }
}

@keyframes clock-minute {
  from { transform: rotate(-240deg); }
  to { transform: rotate(0); }
}

@keyframes door-left {
  from { transform: rotateY(0); }
  to { transform: rotateY(-62deg); }
}

@keyframes door-right {
  from { transform: rotateY(0); }
  to { transform: rotateY(62deg); }
}

@keyframes scene-rise {
  from { opacity: 0; transform: translateY(0.5rem); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes draw-scene-route {
  from { stroke-dashoffset: 1000; }
  to { stroke-dashoffset: 0; }
}

@keyframes wrong-stop {
  0% { box-shadow: 0 0 0 0 rgb(239 112 86 / 0%); transform: scale(1); }
  50% { box-shadow: 0 0 0 0.55rem rgb(239 112 86 / 18%); transform: scale(1.06); }
  100% { box-shadow: 0 0 0 0 rgb(239 112 86 / 0%); transform: scale(1); }
}

@keyframes correct-stop {
  0% { box-shadow: 0 0 0 0 rgb(0 174 141 / 0%); transform: scale(1); }
  50% { box-shadow: 0 0 0 0.55rem rgb(0 174 141 / 18%); transform: scale(1.06); }
  100% { box-shadow: 0 0 0 0 rgb(0 174 141 / 0%); transform: scale(1); }
}

@keyframes visitor-arrive {
  from { opacity: 0; transform: translateX(-2.2rem); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes pass-arrive {
  from { opacity: 0; transform: translateY(-1rem) rotate(-3deg); }
  to { opacity: 1; transform: translateY(0) rotate(-3deg); }
}

@keyframes gate-open {
  from { background: #ef7056; transform: rotate(0); }
  to { background: var(--color-green); transform: rotate(-70deg); }
}

@keyframes station-compare-trip {
  0% { bottom: 2.7rem; left: 8%; opacity: 1; }
  30% { bottom: 11.4rem; left: 27%; opacity: 1; }
  38% { bottom: 11.4rem; left: 27%; opacity: 0; }
  46% { bottom: 2.7rem; left: 8%; opacity: 0; }
  52% { bottom: 2.7rem; left: 8%; opacity: 1; }
  100% { bottom: 9rem; left: 84%; opacity: 1; }
}

@keyframes entrance-wrong {
  0% { border-color: #d4dce8; transform: translateX(0); }
  55% { border-color: #ef9d89; transform: translateX(-0.3rem); }
  70% { transform: translateX(0.2rem); }
  100% { border-color: #ef9d89; background: #fff7f4; transform: translateX(0); }
}

@keyframes entrance-right {
  from { opacity: 0; transform: translateX(1.2rem); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes entrance-door {
  from { transform: perspective(5rem) rotateY(0); }
  to { transform: perspective(5rem) rotateY(-62deg); }
}

@keyframes correction-nudge {
  0%, 100% { transform: translateX(0); }
  35% { transform: translateX(-0.22rem); }
  70% { transform: translateX(0.16rem); }
}

@media (prefers-reduced-motion: reduce) {
  .source-send-hint,
  .correction-chat::after,
  .source-followup-compose .primary-action::before,
  .plan-choice,
  .route-correct,
  .primary-action span,
  .traveler-dot,
  [data-route-node],
  .official-evidence,
  .error-empty *,
  .error-scene *,
  .error-scene::before,
  .error-scene::after { animation-delay: 0s !important; animation-duration: 0.001ms !important; transition: none !important; }
}
