/* ============================================================
   Disney World transportation guides, card 885
   /guides/disney-minnie-van, /guides/mears-connect, /guides/disney-world-monorail
   Page uses _Layout (site.css Twilight tokens), aliased locally with fallbacks.
   Scoped under .tx. Concept is a traveler's ticket set, one object per ride, each
   carrying that ride's own facts. Minnie Van is a thermal ride receipt with a polka dot
   header, Mears Connect is a boarding pass whose tear-off stub is the fare calculator,
   the monorail is the lit route strip that hangs over the doors. Paper objects carry
   their own ink so they hold contrast on any background. Motion is one entrance per
   object and it is removed under reduced motion.
   ============================================================ */

.tx {
  --tx-ink: var(--ink, oklch(93% 0.03 84));
  --tx-ink-soft: var(--ink-soft, oklch(83% 0.03 84));
  --tx-muted: var(--muted, oklch(72% 0.032 84));
  --tx-hair: var(--hair, oklch(37% 0.05 278));
  --tx-rule: var(--rule, oklch(58% 0.04 282));
  --tx-gold: var(--gold, oklch(84% 0.13 86));
  --tx-panel: var(--paper-2, oklch(29% 0.05 277));
  --tx-paper: oklch(97% 0.012 90);
  --tx-paper-2: oklch(93% 0.02 88);
  --tx-print: oklch(26% 0.03 260);
  --tx-print-soft: oklch(42% 0.03 260);
  --tx-minnie: oklch(56% 0.21 25);
  --tx-mears: oklch(45% 0.13 250);
  --tx-cond: 'Saira Condensed', var(--text, system-ui), sans-serif;
  --tx-serif: 'Libre Caslon Display', var(--display, Georgia), serif;
  --tx-book: 'Spectral', Georgia, serif;
  --tx-accent: var(--tx-gold);
  max-width: 1080px;
  margin: 0 auto;
  padding: var(--space-md, 16px) var(--space-md, 16px) var(--space-3xl, 64px);
  color: var(--tx-ink);
}
.tx--van { --tx-accent: oklch(78% 0.13 20); }
.tx--mears { --tx-accent: oklch(80% 0.1 235); }
.tx--mono { --tx-accent: oklch(80% 0.12 30); }

.tx :where(a) { color: var(--tx-gold); text-decoration: none; border-bottom: 1px solid oklch(84% 0.13 86 / 0.4); }
.tx :where(a:hover) { border-bottom-color: var(--tx-gold); }
.tx :where(a, button, summary, input, [tabindex]):focus-visible { outline: 2px solid var(--tx-gold); outline-offset: 3px; border-radius: 4px; }
.tx-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* ---- hero ------------------------------------------------------------- */
.tx-hero {
  display: grid; gap: clamp(28px, 4vw, 56px); align-items: center;
  padding: clamp(16px, 3vw, 40px) 0 clamp(32px, 4vw, 56px);
}
@media (min-width: 900px) { .tx-hero { grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); } }
.tx-crumb { display: flex; gap: 8px; font-family: var(--tx-cond); font-size: 15px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--tx-muted); }
.tx-crumb a { color: var(--tx-accent); border: 0; }
.tx-h1 { margin: 12px 0 0; font-family: var(--tx-serif); font-weight: 400; font-size: clamp(34px, 5.4vw, 58px); line-height: 1.05; letter-spacing: -0.01em; text-wrap: balance; }
.tx-answer { margin: 20px 0 0; max-width: 62ch; font-size: clamp(17px, 1.6vw, 19px); line-height: 1.65; color: var(--tx-ink-soft); }
.tx-answer strong { color: var(--tx-ink); font-weight: 600; }
.tx-byline { margin: 16px 0 0; font-size: 14px; color: var(--tx-muted); }
.tx-jump { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.tx-jump a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px;
  border-radius: 999px; border: 1px solid var(--tx-hair); color: var(--tx-ink); font-size: 15px; font-weight: 600;
}
.tx-jump a:hover { border-color: var(--tx-accent); }

/* ---- the receipt (Minnie Van) ------------------------------------------- */
.tx-receipt {
  margin: 0 auto; width: min(100%, 380px); color: var(--tx-print);
  filter: drop-shadow(0 18px 30px oklch(10% 0.04 276 / 0.55));
  transform: rotate(-1.5deg);
}
.tx-receipt-dots {
  height: 46px; border-radius: 10px 10px 0 0; background-color: var(--tx-minnie);
  background-image: radial-gradient(circle, oklch(98% 0.01 90) 5px, transparent 5.5px);
  background-size: 24px 24px; background-position: 6px 4px;
}
.tx-receipt-body {
  background: var(--tx-paper); padding: 20px 22px 34px;
  /* torn thermal edge */
  -webkit-mask: linear-gradient(#000 0 0) top / 100% calc(100% - 10px) no-repeat, conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) bottom / 16px 10px repeat-x;
  mask: linear-gradient(#000 0 0) top / 100% calc(100% - 10px) no-repeat, conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) bottom / 16px 10px repeat-x;
}
.tx-receipt-brand { margin: 0; font-family: var(--tx-cond); font-weight: 600; font-size: 26px; letter-spacing: 0.06em; text-transform: uppercase; text-align: center; color: var(--tx-minnie); }
.tx-receipt-brand span { display: block; font-size: 13px; letter-spacing: 0.2em; color: var(--tx-print-soft); }
.tx-receipt-trip {
  display: grid; grid-template-columns: 1fr auto 1fr; gap: 8px; align-items: center; margin: 14px 0 6px;
  padding: 10px 0; border-block: 1px dashed oklch(26% 0.03 260 / 0.35);
  font-family: var(--tx-book); font-size: 15px; line-height: 1.3; text-align: center;
}
.tx-receipt-arrow { color: var(--tx-minnie); font-size: 20px; }
.tx-receipt-lines { margin: 0; }
/* label, dotted leader, value */
.tx-receipt-lines div { display: flex; gap: 6px; align-items: baseline; padding: 6px 0; font-size: 15px; }
.tx-receipt-lines dt { flex: none; order: 0; font-family: var(--tx-cond); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; font-size: 14px; color: var(--tx-print-soft); }
.tx-receipt-lines div::before {
  content: ""; order: 1; flex: 1; min-width: 12px; align-self: flex-end; margin-bottom: 5px;
  border-bottom: 2px dotted oklch(26% 0.03 260 / 0.3);
}
.tx-receipt-lines dd { order: 2; margin: 0; text-align: right; font-family: var(--tx-book); }
.tx-receipt-total { margin-top: 12px; padding-top: 12px; border-top: 2px solid var(--tx-print); display: grid; gap: 12px; }
.tx-receipt-total div { display: grid; grid-template-columns: 1fr auto; column-gap: 10px; }
.tx-receipt-total span { font-family: var(--tx-cond); font-weight: 600; font-size: 15px; letter-spacing: 0.1em; text-transform: uppercase; }
.tx-receipt-total b { font-family: var(--tx-cond); font-weight: 600; font-size: 24px; line-height: 1; text-align: right; }
.tx-receipt-total b i { font-style: normal; font-size: 14px; }
.tx-receipt-total small { grid-column: 1 / -1; font-size: 13px; color: var(--tx-print-soft); }
.tx-receipt-foot { margin: 16px 0 0; text-align: center; font-family: var(--tx-cond); font-size: 14px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--tx-print-soft); }
.tx-receipt-foot span { color: var(--tx-minnie); }

/* ---- the boarding pass (Mears Connect) ----------------------------------- */
.tx-pass {
  --notch: 12px;
  margin: 0 auto; width: min(100%, 440px); display: grid; color: var(--tx-print);
  filter: drop-shadow(0 18px 30px oklch(10% 0.04 276 / 0.55));
}
.tx-pass-main, .tx-pass-stub { background: var(--tx-paper); padding: 20px 22px; }
.tx-pass-main { border-radius: 14px 14px 0 0; border-top: 10px solid var(--tx-mears); }
.tx-pass-stub {
  border-radius: 0 0 14px 14px; background: var(--tx-paper-2);
  border-top: 2px dashed oklch(26% 0.03 260 / 0.35);
  -webkit-mask: radial-gradient(circle var(--notch) at 0 0, #0000 98%, #000) top left / 51% 100% no-repeat, radial-gradient(circle var(--notch) at 100% 0, #0000 98%, #000) top right / 51% 100% no-repeat;
  mask: radial-gradient(circle var(--notch) at 0 0, #0000 98%, #000) top left / 51% 100% no-repeat, radial-gradient(circle var(--notch) at 100% 0, #0000 98%, #000) top right / 51% 100% no-repeat;
}
.tx-pass-brand { margin: 0; display: flex; justify-content: space-between; align-items: baseline; font-family: var(--tx-cond); font-weight: 600; font-size: 20px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--tx-mears); }
.tx-pass-brand span { font-size: 13px; letter-spacing: 0.16em; color: var(--tx-print-soft); }
.tx-pass-route { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; margin: 14px 0; }
.tx-pass-route b { display: block; font-family: var(--tx-cond); font-weight: 600; font-size: 46px; line-height: 0.95; letter-spacing: 0.02em; }
.tx-pass-route span { font-size: 13px; color: var(--tx-print-soft); }
.tx-pass-route div:last-child { text-align: right; }
.tx-pass-plane { height: 2px; background: repeating-linear-gradient(90deg, var(--tx-mears) 0 8px, transparent 8px 14px); position: relative; }
.tx-pass-plane::after { content: "›"; position: absolute; right: -4px; top: 50%; transform: translateY(-54%); font-size: 28px; line-height: 1; color: var(--tx-mears); }
.tx-pass-grid { margin: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; border-top: 1px solid oklch(26% 0.03 260 / 0.18); padding-top: 12px; }
.tx-pass-grid dt { font-family: var(--tx-cond); font-weight: 600; font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--tx-print-soft); }
.tx-pass-grid dd { margin: 2px 0 0; font-family: var(--tx-cond); font-weight: 600; font-size: 26px; line-height: 1; }
.tx-pass-fine { margin: 12px 0 0; font-size: 13px; color: var(--tx-print-soft); }
.tx-pass-stub-k { margin: 4px 0 10px; font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--tx-mears); }
.tx-fare-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.tx-fare-row label { font-size: 16px; }
.tx-fare-row input {
  width: 76px; min-height: 44px; padding: 0 10px; border-radius: 8px; border: 1px solid oklch(26% 0.03 260 / 0.35);
  background: var(--tx-paper); color: var(--tx-print); font: inherit; font-size: 18px; text-align: center;
}
.tx-fare-trip { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 6px 0 12px; }
.tx-fare-trip button {
  min-height: 44px; border-radius: 8px; border: 1px solid var(--tx-mears); background: transparent; color: var(--tx-mears);
  font: inherit; font-size: 15px; font-weight: 600; cursor: pointer;
}
.tx-fare-trip button[aria-pressed="true"] { background: var(--tx-mears); color: var(--tx-paper); }
.tx-fare-total { margin: 0; display: flex; justify-content: space-between; align-items: baseline; border-top: 2px solid var(--tx-print); padding-top: 10px; }
.tx-fare-total span { font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.1em; text-transform: uppercase; }
.tx-fare-total b { font-family: var(--tx-cond); font-weight: 600; font-size: 34px; line-height: 1; }
.tx .tx-pass :focus-visible { outline-color: var(--tx-mears); }

/* ---- the route strip (monorail) ---------------------------------------- */
.tx-strip {
  margin: 0; padding: 20px 18px 16px; border-radius: 14px; color: oklch(95% 0.01 90);
  background: linear-gradient(180deg, oklch(30% 0.012 250), oklch(22% 0.012 250));
  box-shadow: inset 0 1px 0 oklch(100% 0 0 / 0.12), 0 18px 30px oklch(10% 0.04 276 / 0.55);
}
.tx-strip-title { margin: 0 0 12px; font-family: var(--tx-cond); font-weight: 600; font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase; color: oklch(80% 0.01 250); }
.tx-strip-line { padding: 10px 0 12px; border-top: 1px solid oklch(100% 0 0 / 0.1); }
.tx-strip-name { margin: 0 0 10px; font-family: var(--tx-cond); font-weight: 600; font-size: 17px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--c); filter: brightness(1.35); }
.tx-strip-stops { list-style: none; margin: 0; padding: 0; display: flex; position: relative; }
.tx-strip-stops::before { content: ""; position: absolute; left: 12px; right: 12px; top: 7px; height: 4px; border-radius: 2px; background: var(--c); }
.tx-strip-loop { margin-left: 10px; font-size: 13px; letter-spacing: 0.1em; color: oklch(80% 0.01 250); filter: none; }
.tx-strip-stops li { flex: 1; position: relative; padding-top: 24px; text-align: center; font-size: 13px; line-height: 1.2; }
.tx-strip-stops li:first-child { text-align: left; }
.tx-strip-stops li:last-child { text-align: right; }
.tx-strip-stops li::before {
  content: ""; position: absolute; top: 1px; left: 50%; width: 16px; height: 16px; margin-left: -8px; border-radius: 50%;
  background: oklch(22% 0.012 250); border: 3px solid var(--c); box-sizing: border-box;
}
.tx-strip-stops li:first-child::before { left: 8px; }
.tx-strip-stops li:last-child::before { left: auto; right: 0; margin-left: 0; }
.tx-strip-stops li.is-park::before { background: oklch(92% 0.14 92); border-color: oklch(92% 0.14 92); box-shadow: 0 0 10px oklch(92% 0.14 92 / 0.7); }
.tx-strip-stops li.is-park span { font-weight: 700; color: oklch(92% 0.1 92); }
.tx-strip-stops li.is-hub span { font-family: var(--tx-cond); font-weight: 600; font-size: 15px; letter-spacing: 0.06em; }
.tx-strip-cap { margin: 8px 0 0; font-size: 13px; line-height: 1.5; color: oklch(80% 0.01 250); }
.tx-photo { margin: 0 0 clamp(36px, 5vw, 60px); }
.tx-photo img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 7; object-fit: cover; border-radius: 14px; }
.tx-photo figcaption { margin-top: 8px; font-size: 13px; color: var(--tx-muted); }

/* ---- sections ----------------------------------------------------------- */
.tx-sec { margin: 0 0 clamp(40px, 5vw, 68px); scroll-margin-top: 80px; }
.tx-eyebrow { margin: 0; font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--tx-accent); }
.tx-sec h2 { margin: 6px 0 14px; max-width: 26ch; font-family: var(--tx-serif); font-weight: 400; font-size: clamp(27px, 3.6vw, 40px); line-height: 1.12; text-wrap: balance; }
.tx-lede { margin: 0 0 18px; max-width: 66ch; font-size: 17px; line-height: 1.7; color: var(--tx-ink-soft); }
.tx-note { margin: 14px 0 0; max-width: 70ch; font-size: 16px; line-height: 1.65; color: var(--tx-ink-soft); }
.tx-call { margin: 18px 0 0; font-family: var(--tx-cond); font-weight: 600; font-size: 24px; letter-spacing: 0.02em; }

.tx-steps { list-style: none; counter-reset: tx; margin: 0; padding: 0; display: grid; gap: 12px; }
@media (min-width: 760px) { .tx-steps { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } }
.tx-steps li { counter-increment: tx; position: relative; padding: 18px 18px 18px 64px; border-radius: 12px; background: var(--tx-panel); border: 1px solid var(--tx-hair); }
.tx-steps li::before {
  content: counter(tx); position: absolute; left: 16px; top: 16px; width: 34px; height: 34px; border-radius: 50%;
  display: grid; place-items: center; font-family: var(--tx-cond); font-weight: 600; font-size: 19px;
  background: var(--tx-accent); color: oklch(22% 0.04 276);
}
.tx-steps h3 { margin: 0 0 4px; font-size: 17px; }
.tx-steps p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--tx-ink-soft); }

.tx-table-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--tx-hair); }
.tx-table { width: 100%; border-collapse: collapse; font-size: 15px; }
@media (max-width: 520px) { .tx-table { font-size: 14px; } .tx-table th, .tx-table td { padding: 10px 10px; } }
.tx-table caption { text-align: left; padding: 12px 16px; font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--tx-muted); }
.tx-table th, .tx-table td { padding: 12px 16px; text-align: left; vertical-align: top; border-top: 1px solid var(--tx-hair); line-height: 1.45; }
.tx-table thead th { font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--tx-muted); background: var(--tx-panel); }
.tx-table tbody th { font-weight: 600; }
.tx-sub { display: block; font-weight: 400; font-size: 13px; color: var(--tx-muted); }
.tx-strong { font-weight: 700; color: var(--tx-accent); }

.tx-grid { display: grid; gap: 12px; }
@media (min-width: 700px) { .tx-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 980px) { .tx-grid:not(.tx-grid--2) { grid-template-columns: repeat(3, 1fr); } }
#worth .tx-grid { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.tx-card { padding: 18px; border-radius: 12px; background: var(--tx-panel); border: 1px solid var(--tx-hair); }
.tx-card h3 { margin: 0 0 6px; font-size: 18px; }
.tx-card p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--tx-ink-soft); }
.tx-card p + p { margin-top: 8px; }
.tx-card p.tx-card-k { font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--tx-accent); }
.tx-card--hi { border-color: var(--tx-accent); }
.tx-card--skip { border-style: dashed; }
.tx-line { border-top: 6px solid var(--c); }

.tx-who { display: grid; gap: 12px; margin: 4px 0 20px; }
@media (min-width: 640px) { .tx-who { grid-template-columns: 1fr 1fr; } }
.tx-who > div { padding: 16px 18px; border-radius: 12px; background: var(--tx-panel); border: 1px solid var(--tx-hair); }
.tx-who h3 { margin: 0 0 8px; font-family: var(--tx-cond); font-weight: 600; font-size: 15px; letter-spacing: 0.12em; text-transform: uppercase; }
.tx-who ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; font-size: 16px; }
.tx-who-yes h3 { color: oklch(82% 0.14 150); }
.tx-who-yes li::before { content: "✓"; margin-right: 8px; color: oklch(82% 0.14 150); }
.tx-who-no h3 { color: oklch(76% 0.13 25); }
.tx-who-no li::before { content: "✕"; margin-right: 8px; color: oklch(76% 0.13 25); }

.tx-window { margin: 0 0 6px; }
.tx-window-bar { height: 14px; border-radius: 7px; background: var(--tx-hair); position: relative; overflow: hidden; }
.tx-window-open { position: absolute; left: 0; width: 88%; top: 0; bottom: 0; background: linear-gradient(90deg, oklch(78% 0.13 20), oklch(82% 0.14 150)); border-radius: 7px; }
.tx-window-marks { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; margin-top: 8px; font-size: 13px; color: var(--tx-muted); }
.tx-window-marks span:nth-child(2) { text-align: right; }
.tx-window-marks span:last-child { text-align: right; min-width: 72px; }
.tx-window-marks b { display: block; font-family: var(--tx-cond); font-weight: 600; font-size: 16px; color: var(--tx-ink); }

.tx-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.tx-chips li { padding: 7px 12px; border-radius: 999px; border: 1px solid var(--tx-hair); background: var(--tx-panel); font-size: 14px; }
.tx-hotels { display: grid; gap: 22px; }
@media (min-width: 860px) { .tx-hotels { grid-template-columns: 1.6fr 1fr; } }
.tx-hotels h3 { margin: 0 0 10px; font-family: var(--tx-cond); font-weight: 600; font-size: 15px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--tx-muted); }

.tx-faq h2 { margin-bottom: 10px; }
.tx-faq details { border-top: 1px solid var(--tx-hair); }
.tx-faq details:last-of-type { border-bottom: 1px solid var(--tx-hair); }
.tx-faq summary { cursor: pointer; list-style: none; padding: 16px 36px 16px 0; position: relative; font-size: 17px; font-weight: 600; min-height: 44px; }
.tx-faq summary::-webkit-details-marker { display: none; }
.tx-faq summary::after { content: "+"; position: absolute; right: 6px; top: 12px; font-size: 24px; color: var(--tx-accent); }
.tx-faq details[open] summary::after { content: "−"; }
.tx-faq details p { margin: 0 0 18px; max-width: 70ch; font-size: 16px; line-height: 1.7; color: var(--tx-ink-soft); }

/* ---- ticket rail -------------------------------------------------------- */
.tx-rail { margin: 0 0 28px; }
.tx-rail-k { margin: 0 0 10px; font-family: var(--tx-cond); font-weight: 600; font-size: 14px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--tx-muted); }
.tx-rail ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
@media (min-width: 760px) { .tx-rail ul { grid-template-columns: repeat(4, 1fr); } }
.tx .tx-rail-tk {
  display: block; padding: 14px 16px; border-radius: 10px; border: 1px solid var(--tx-hair); border-left: 4px solid var(--tx-gold);
  background: var(--tx-panel); color: var(--tx-ink);
}
.tx .tx-rail-tk b { display: block; font-size: 16px; }
.tx .tx-rail-tk span { font-size: 13px; color: var(--tx-muted); }
.tx .tx-rail-tk:hover { border-color: var(--tx-gold); }
.tx .tx-rail-tk.is-here { background: var(--tx-paper); color: var(--tx-print); border-color: var(--tx-paper); border-left-color: var(--tx-accent); }
.tx .tx-rail-tk.is-here span { color: var(--tx-print-soft); }

.tx-next { display: grid; gap: 10px; margin: 0 0 28px; }
.tx-next a { display: inline-flex; align-items: center; min-height: 44px; font-size: 17px; font-weight: 600; border: 0; }
.tx-foot { border-top: 1px solid var(--tx-hair); padding-top: 16px; }
.tx-foot p { margin: 0; max-width: 80ch; font-size: 14px; line-height: 1.6; color: var(--tx-muted); }

/* ---- small screens ------------------------------------------------------ */
@media (max-width: 420px) {
  .tx-receipt-body { padding: 18px 16px 32px; }
  .tx-pass-main, .tx-pass-stub { padding: 18px 16px; }
  .tx-pass-route b { font-size: 40px; }
  .tx-pass-grid { grid-template-columns: repeat(2, 1fr); row-gap: 12px; }
  .tx-strip { padding: 18px 12px 14px; }
  .tx-strip-stops li { font-size: 12px; }
}

/* ---- one entrance per object ------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
  .tx-receipt { animation: tx-print 0.7s cubic-bezier(.2, .7, .2, 1) both; }
  .tx-pass, .tx-strip { animation: tx-rise 0.6s cubic-bezier(.2, .7, .2, 1) both; }
  .tx-strip-stops li.is-park::before { animation: tx-lit 2.4s ease-in-out infinite alternate; }
}
@keyframes tx-print { from { opacity: 0; transform: translateY(-24px) rotate(-1.5deg); } to { opacity: 1; transform: translateY(0) rotate(-1.5deg); } }
@keyframes tx-rise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes tx-lit { from { box-shadow: 0 0 4px oklch(92% 0.14 92 / 0.4); } to { box-shadow: 0 0 14px oklch(92% 0.14 92 / 0.85); } }
