:root { font-family: 'Manrope Variable', Arial, sans-serif; background: #000; font-synthesis: none; color-scheme: dark; } * { box-sizing: border-box; } html, body, #root { margin: 0; width: 100%; height: 100%; } button, input, select, textarea { font: inherit; } button { cursor: pointer; color: inherit; } button, a { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; } svg { display: block; flex-shrink: 0; } .vkuiIcon { display: inline-flex; flex-shrink: 0; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } .board { --background: #000000; --foreground: #f5f5f5; --muted: #b7b7b7; --secondary: #c3c3c3; --line: #303030; --outline: #595959; --surface: #0a0a0a; --input: #141414; --warning: #ffd479; --accent-ink: #000; --hero-height: clamp(110px, 18vh, 230px); --hero-gap: clamp(18px, 2.6vh, 32px); --control-size: 40px; --control-gap: 6px; color-scheme: dark; color: var(--foreground); background: var(--background); height: 100dvh; width: 100%; display: flex; flex-direction: column; overflow: hidden; padding: clamp(14px, 2vh, 28px) clamp(18px, 3vw, 64px) 0; } .board[data-theme='light'] { --background: #FFFFFF; --foreground: #171b23; --muted: #535b68; --secondary: #535b68; --line: #d7dbe2; --outline: #939ba8; --surface: #fff; --input: #f2f4f7; --warning: #8a4300; --accent-ink: #fff; color-scheme: light; } .board[data-row-count='5'], .board[data-row-count='6'] { --hero-height: clamp(100px, 15vh, 180px); } .board-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex: 0 0 auto; border-bottom: 1px solid var(--line); padding-bottom: clamp(12px, 1.8vh, 24px); view-transition-name: board-header; } .stop-heading { min-width: 0; } h1 { font-size: clamp(30px, 3.8vw, 76px); letter-spacing: -.05em; line-height: 1.08; margin: 0; font-weight: 650; overflow-wrap: anywhere; } .stop-meta { display: flex; align-items: center; gap: 10px 24px; flex-wrap: wrap; } .stop-direction { color: var(--muted); display: flex; align-items: center; gap: 10px; font-size: clamp(18px, 1.6vw, 32px); margin-top: 10px; line-height: 1.2; } .stop-direction svg { color: var(--accent); } .weather-summary { display: flex; align-items: center; gap: 9px; margin-top: 10px; color: var(--muted); font-size: clamp(16px, 1.3vw, 26px); line-height: 1.2; } .weather-summary svg, .weather-summary strong { color: var(--accent); } .weather-summary strong { font-size: 1.25em; font-weight: 600; } .weather-summary small { font-size: .7em; } .header-right { display: grid; grid-template-columns: auto auto; column-gap: clamp(20px, 3vw, 64px); align-items: center; flex-shrink: 0; } .brand { grid-row: 1 / 3; display: flex; align-items: center; gap: 12px; font-size: clamp(24px, 2.3vw, 44px); font-weight: 800; letter-spacing: -.07em; white-space: nowrap; } .official-mark { display: block; width: clamp(40px, 3.5vw, 70px); height: auto; flex-shrink: 0; } .official-mark svg { width: 100%; height: auto; } .clock { display: flex; gap: 10px; align-items: flex-end; font-size: clamp(38px, 4.6vw, 90px); font-weight: 550; line-height: 1; font-variant-numeric: tabular-nums; white-space: nowrap; } .clock small { font-size: .42em; color: var(--secondary); font-weight: 500; } .today { grid-column: 2; color: var(--secondary); text-align: right; font-size: clamp(13px, 1.15vw, 22px); margin-top: 8px; white-space: nowrap; } .scene-container { flex: 1 1 0; min-height: 0; min-width: 0; overflow: hidden; } .scene { width: 100%; height: 100%; min-height: 0; animation: scene-in 400ms ease-out both; } .departure-layout { display: flex; flex-direction: column; height: 100%; min-height: 0; padding: clamp(12px, 1.8vh, 24px) 0; } .departure-content { flex: 1 1 0; min-height: 0; min-width: 0; display: grid; grid-template-rows: auto calc(var(--hero-height) + var(--hero-gap)) auto minmax(0, 1fr); } .section-heading, .next-heading { display: flex; align-items: center; justify-content: space-between; gap: 15px; min-width: 0; } .eyebrow { font-size: clamp(12px, 1.05vw, 21px); font-weight: 650; letter-spacing: .12em; color: var(--muted); } .source-label { display: flex; align-items: center; gap: 8px; color: var(--secondary); font-size: clamp(13px, 1.15vw, 23px); white-space: nowrap; } .source-label svg { width: 1.2em; height: 1.2em; } .hero-departure { height: var(--hero-height); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-rows: minmax(0, 1fr); align-items: center; gap: clamp(18px, 2.4vw, 50px); min-height: 0; padding: 10px 0 0; } .route-badge { display: inline-flex; justify-content: center; align-items: center; flex-shrink: 0; border: 1.5px solid var(--outline); border-radius: 14px; width: clamp(64px, 8vw, 150px); height: min(82px, calc(var(--row-height, 96px) * .74)); padding: 0 clamp(10px, 1vw, 18px); font-size: min(50px, calc(var(--row-height, 96px) * .48)); font-weight: 650; line-height: 1; font-variant-numeric: tabular-nums; overflow: hidden; } .route-badge-label { display: flex; align-items: center; flex-shrink: 0; white-space: nowrap; transform-origin: center; } .route-badge-large { width: calc(var(--hero-height) * 1.05); height: calc(var(--hero-height) - 10px); border: 0; background: var(--accent); color: var(--accent-ink); border-radius: calc(var(--hero-height) * .27); padding: 0 clamp(16px, 1.4vw, 28px); font-size: min(130px, calc(var(--hero-height) * .68)); } .route-badge-filled { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); } .hero-destination { min-width: 0; height: 100%; display: flex; flex-direction: column; justify-content: center; } .transport-kind { display: flex; align-items: center; gap: 9px; color: var(--accent); font-size: min(30px, calc(var(--hero-height) * .16)); line-height: 1.2; margin-bottom: 7px; } .hero-destination h2 { flex-shrink: 0; font-size: min(4.7vw, calc(var(--hero-height) * .34)); line-height: 1.08; letter-spacing: -.035em; font-weight: 650; margin: 0; overflow-wrap: anywhere; } .hero-details { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-size: min(27px, calc(var(--hero-height) * .12)); color: var(--secondary); margin-top: 8px; line-height: 1.25; } .hero-details > span { min-width: 0; } .schedule-time { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--outline); border-radius: 6px; padding: 4px 6px; white-space: nowrap; } .departure-day { font-size: .6em; color: var(--muted); white-space: nowrap; } .countdown { display: flex; align-items: flex-end; justify-content: flex-end; min-width: 0; font-variant-numeric: tabular-nums; white-space: nowrap; } .countdown-value { display: inline-flex; align-items: flex-end; gap: .22em; font-size: min(68px, calc(var(--row-height, 92px) * .64)); font-weight: 550; line-height: 1; } .countdown-part { display: inline-flex; align-items: flex-end; gap: .12em; } .countdown-part small { color: var(--secondary); font-size: max(18px, .42em); font-weight: 500; display: flex; align-items: flex-end; line-height: 1; } .countdown[data-long='true'] .countdown-value { font-size: min(54px, calc(var(--row-height, 92px) * .48)); } .countdown-large .countdown-value { color: var(--accent); font-size: min(150px, calc(var(--hero-height) * .9)); } .countdown-large[data-long='true'] .countdown-value { font-size: min(105px, calc(var(--hero-height) * .66)); } .countdown-now { font-size: min(40px, calc(var(--row-height, 92px) * .4)); font-weight: 550; } .countdown-large .countdown-now { color: var(--accent); font-size: min(72px, calc(var(--hero-height) * .44)); } .next-heading { border-top: 1px solid var(--line); padding: clamp(10px, 1.4vh, 18px) 0; } .next-heading svg { color: var(--muted); } .page-indicator { color: var(--accent); font-size: 15px; } .departure-table { min-height: 0; display: grid; grid-template-rows: repeat(var(--rows), minmax(0, 1fr)); overflow: hidden; } .departure-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; align-items: center; gap: clamp(16px, 2.2vw, 44px); min-height: 0; padding: 5px 0; border-bottom: 1px solid var(--line); } .departure-row:last-child { border-bottom: 0; } .row-destination { min-width: 0; min-height: 0; height: 100%; display: flex; flex-direction: column; justify-content: center; } .row-destination h3 { flex-shrink: 0; font-size: min(54px, 3.5vw, calc(var(--row-height) * .4)); font-weight: 600; line-height: 1.1; letter-spacing: -.025em; margin: 0; overflow-wrap: anywhere; } .row-destination p { margin: 6px 0 0; font-size: min(24px, 1.35vw, calc(var(--row-height) * .2)); line-height: 1.2; color: var(--secondary); } .departure-table[data-rows='5'] .row-destination p, .departure-table[data-rows='6'] .row-destination p { display: none; } .row-time { display: flex; flex-direction: column; align-items: flex-end; gap: 7px; color: var(--secondary); font-size: min(42px, calc(var(--row-height) * .36)); font-variant-numeric: tabular-nums; } .row-time-compact { display: none; } .transport-notice { display: flex; align-items: center; gap: 10px; color: var(--warning); padding-top: 10px; font-size: clamp(15px, 1.4vw, 26px); flex: 0 0 auto; } .empty-departures { display: flex; flex-direction: column; justify-content: center; min-height: 0; } .empty-departures > svg { color: var(--accent); } .empty-departures h2 { font-size: clamp(24px, 3vw, 54px); font-weight: 550; margin: 10px 0; letter-spacing: -.04em; } .empty-departures p, .empty-following { color: var(--secondary); font-size: clamp(14px, 1.5vw, 28px); margin: 0; line-height: 1.4; } .quiet-placeholder { display: none; } .offline-banner { display: flex; align-items: center; gap: 9px; color: var(--warning); font-size: clamp(13px, 1.2vw, 22px); padding-top: 9px; flex: 0 0 auto; } .offline-banner button { color: inherit; border: 0; background: none; display: flex; padding: 3px; margin-left: auto; } /* Cards switch to one panel when the actual available area is too small. */ .info-screen { height: 100%; min-height: 0; display: flex; flex-direction: column; padding: 16px 0; overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--outline) var(--background); } .info-intro { flex-shrink: 0; display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 16px; } .info-intro h2 { margin: 0; font-size: clamp(28px, 3vw, 56px); letter-spacing: -.045em; font-weight: 550; } .information-tabs { display: none; gap: 8px; } .information-tabs button { font-size: 14px; border: 1px solid var(--outline); background: transparent; padding: 8px 12px; border-radius: 10px; color: var(--secondary); } .information-tabs button[aria-current='page'] { color: var(--accent-ink); border-color: var(--accent); background: var(--accent); } .info-grid { flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: repeat(var(--info-columns, 3), minmax(0, 1fr)); gap: 24px; } .info-card { min-width: 0; min-height: 0; border: 1px solid var(--line); border-radius: 24px; padding: clamp(18px, 1.7vw, 32px); display: flex; flex-direction: column; overflow: auto; container-type: size; } .info-card > * { flex-shrink: 0; } .info-card h3 { font-size: clamp(23px, 2vw, 38px); line-height: 1.15; font-weight: 600; letter-spacing: -.03em; margin: 0 0 18px; } .card-icon { color: var(--accent); margin-bottom: 16px; } .card-icon svg { width: 32px; height: 32px; } .info-card p { color: var(--secondary); font-size: clamp(18px, 1.75vw, 32px); line-height: 1.4; margin: 0 0 16px; } .info-caption { display: flex; align-items: center; gap: 9px; font-size: clamp(14px, 1.3vw, 23px); color: var(--secondary); margin-top: auto; line-height: 1.4; } .route-cloud { flex: 1 1 0; min-height: 0; min-width: 0; display: flex; flex-direction: column; overflow: hidden; } .route-list { flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: repeat(var(--route-columns), minmax(0, 1fr)); grid-template-rows: repeat(var(--route-rows), minmax(0, 1fr)); gap: 8px 24px; } .route-tile { min-width: 0; min-height: 0; display: flex; align-items: center; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); } .route-list .route-badge { width: 72px; height: 60px; font-size: 35px; border-radius: 16px; margin: 0; padding: 0 8px; } .route-card-name { flex: 1 1 0; min-width: 0; height: 100%; display: flex; flex-direction: column; justify-content: center; } .route-list .destination-heading { width: 100%; font-size: clamp(22px, 3cqw, 30px); line-height: 1.2; margin: 0; font-weight: 550; letter-spacing: -.025em; overflow-wrap: anywhere; } .route-list-pages { display: flex; justify-content: flex-end; color: var(--muted); font-size: 16px; padding-top: 10px; } .service-info { container-name: service-card; } .service-window { flex: 1 1 0; min-height: 0; display: grid; grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 20px; } .service-boundary { min-width: 0; min-height: 0; display: flex; flex-direction: column; justify-content: center; gap: 12px; } .service-boundary + .service-boundary { border-top: 1px solid var(--line); padding-top: 20px; } .service-label { display: flex; flex-wrap: wrap; gap: 4px 10px; color: var(--secondary); font-size: clamp(17px, 3cqw, 24px); line-height: 1.25; } .service-label span { color: var(--muted); font-size: .8em; align-self: center; } .service-boundary > time { display: block; color: var(--accent); font-size: clamp(44px, min(17cqw, 19cqh), 112px); font-weight: 600; line-height: 1; } .service-trip { min-width: 0; display: flex; align-items: center; gap: 12px; font-size: clamp(18px, 4cqw, 26px); line-height: 1.2; } .service-trip .route-badge { flex-shrink: 0; width: 72px; height: 48px; border-radius: 14px; font-size: 32px; padding: 0 8px; } .service-trip > span:last-child { overflow-wrap: anywhere; } .service-info .service-empty { margin: 0; font-size: 20px; } .service-info .service-unavailable { margin-block: auto; text-align: center; font-size: 22px; } @container service-card (min-width: 600px) { .service-window { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr); gap: 32px; } .service-boundary + .service-boundary { border-top: 0; border-left: 1px solid var(--line); padding-top: 0; padding-left: 32px; } } @container service-card (max-height: 380px) { .service-window { gap: 12px; } .service-boundary { gap: 8px; } .service-boundary + .service-boundary { padding-top: 12px; } .service-label { font-size: 17px; } .service-boundary > time { font-size: clamp(40px, min(14cqw, 25cqh), 72px); } .service-trip { font-size: 18px; } .service-trip .route-badge { width: 60px; height: 40px; font-size: 28px; border-radius: 12px; } } @container service-card (min-width: 600px) and (max-height: 380px) { .service-boundary + .service-boundary { padding-top: 0; padding-left: 20px; } } .weather-info { container-name: weather-card; } .weather-body { flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr); align-content: center; align-items: center; justify-items: center; gap: 24px; } .weather-now { min-width: 0; display: flex; flex-direction: column; align-items: center; } .weather-current { display: flex; align-items: center; gap: .18em; color: var(--accent); font-size: clamp(64px, min(22cqw, 32cqh), 144px); } .weather-current strong { font-size: 1em; font-weight: 550; line-height: 1; } .weather-current svg { width: .8em !important; height: .8em !important; } .weather-info .weather-description { margin: 12px 0 0; font-size: clamp(22px, 3cqw, 34px); line-height: 1.2; text-align: center; } .weather-hours { width: 100%; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; border-top: 1px solid var(--line); padding-top: 20px; } .weather-hours > div { min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 10px; } .weather-hours time { color: var(--secondary); font-size: clamp(16px, 3cqw, 22px); } .weather-hours svg { color: var(--accent); width: clamp(40px, min(12cqw, 16cqh), 64px) !important; height: clamp(40px, min(12cqw, 16cqh), 64px) !important; } .weather-hours strong { font-size: clamp(24px, 6cqw, 40px); font-weight: 550; } .weather-attribution { flex-shrink: 0; padding-top: 16px; display: flex; flex-wrap: wrap; justify-content: center; gap: 5px 12px; font-size: 12px; color: var(--muted); } .weather-attribution a { color: inherit; text-underline-offset: 3px; } .weather-info .weather-empty { margin-block: auto; text-align: center; } @container weather-card (min-width: 600px) { .weather-body[data-forecast='true'] { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; } .weather-hours { border: 0; padding: 0; } } @container weather-card (max-height: 300px) { .weather-body { gap: 12px; } .weather-current { font-size: clamp(44px, min(18cqw, 20cqh), 84px); } .weather-info .weather-description { font-size: 20px; margin-top: 8px; } .weather-hours { gap: 8px; padding-top: 12px; } .weather-hours > div { display: grid; grid-template-columns: auto auto; align-items: center; justify-content: center; gap: 6px; } .weather-hours time { grid-column: 1 / -1; text-align: center; } .weather-hours svg { width: 40px !important; height: 40px !important; } .weather-hours strong { font-size: 24px; } .weather-attribution { padding-top: 10px; } } @container weather-card (max-width: 599px) and (max-height: 380px) { .weather-body { gap: 16px; } .weather-hours { padding-top: 14px; gap: 8px; } .weather-hours > div { display: grid; grid-template-columns: auto auto; align-items: center; justify-content: center; gap: 6px; } .weather-hours time { grid-column: 1 / -1; text-align: center; } .weather-hours svg { width: 40px !important; height: 40px !important; } .weather-hours strong { font-size: 24px; } } .qr-info { container-name: qr-card; } .qr-content { flex: 1 1 0; min-height: 0; min-width: 0; display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 16px; } .qr-stage { min-width: 0; min-height: 0; display: grid; place-items: center; padding: 4px; container-type: size; } .qr-paper { display: block; width: min(100cqw, 100cqh, 440px); aspect-ratio: 1; padding: 6px; border-radius: 20px; background: #fff; border: 1px solid var(--outline); } .passenger-qr { width: 100%; height: 100%; aspect-ratio: 1; } .qr-description { min-width: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 12px; text-align: center; } .qr-info .qr-description p { font-size: clamp(18px, 3cqw, 40px); line-height: 1.25; margin: 0; } .passenger-link { display: inline-flex; align-items: center; gap: 8px; color: var(--accent); text-decoration: none; font-size: clamp(18px, 2.5cqw, 30px); font-weight: 550; } .passenger-link span { min-width: 0; overflow-wrap: anywhere; } @container qr-card (min-width: 601px) { .qr-content { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); gap: 32px; } .qr-description { align-items: flex-start; text-align: left; } } @container qr-card (max-width: 600px) and (max-height: 300px) { .qr-description { gap: 6px; } .qr-info .qr-description p, .passenger-link { font-size: 16px; } .passenger-link svg { width: 18px; height: 18px; } } .info-screen[data-compact='true'] .info-grid { grid-template-columns: minmax(0, 1fr); } .info-screen[data-compact='true'] .information-tabs { display: flex; } .info-screen[data-compact='true'] .info-card:not([data-active='true']) { display: none; } .info-screen[data-compact='true'] .card-icon { display: none; } .info-status { display: flex; align-items: center; gap: 10px; flex-shrink: 0; color: var(--secondary); font-size: clamp(14px, 1.2vw, 22px); padding-top: 14px; line-height: 1.3; } .info-status svg { color: var(--accent); } .info-notices { display: grid; gap: 18px; } .notice { --notice-color: var(--accent); display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 20px; padding: clamp(20px, 2vw, 32px); border: 1px solid var(--line); border-radius: 24px; background: var(--background); overflow: hidden; } .notice[data-kind='cancellation'], .notice[data-kind='delay'] { --notice-color: var(--warning); } .notice-graphic { display: flex; flex-direction: column; align-items: center; color: var(--notice-color); padding: 2px 0; } .notice-signal { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 14px; background: color-mix(in srgb, var(--notice-color) 10%, var(--background)); } .notice-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 9px 18px; margin-bottom: 16px; } .notice-type { color: var(--notice-color); font-size: clamp(14px, 1.2vw, 22px); font-weight: 650; } .notice-period { color: var(--secondary); font-size: clamp(13px, 1vw, 18px); } .notice-routes { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; } .notice-routes .route-badge { width: auto; min-width: 54px; height: 42px; padding: 0 14px; font-size: 26px; border-radius: 12px; background: var(--notice-color); border-color: var(--notice-color); } .notice h3 { font-size: clamp(25px, 2.6vw, 46px); font-weight: 600; line-height: 1.12; margin: 0 0 14px; letter-spacing: -.035em; overflow-wrap: anywhere; } .notice p { font-size: clamp(18px, 1.65vw, 30px); line-height: 1.45; color: var(--secondary); margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; } .persistent-next { display: flex; align-items: center; gap: 18px; border-top: 1px solid var(--line); padding: 14px 0; flex: 0 0 auto; --row-height: 72px; } .persistent-next .route-badge { width: 78px; height: 50px; font-size: 31px; padding: 0 10px; border-radius: 14px; } .persistent-destination { min-width: 0; display: flex; flex-direction: column; gap: 7px; } .persistent-destination strong { font-weight: 600; font-size: clamp(21px, 2.2vw, 40px); line-height: 1.1; } .persistent-destination time { display: flex; align-items: center; gap: 8px; font-size: clamp(14px, 1.2vw, 23px); color: var(--secondary); } .persistent-next .countdown { margin-left: auto; } .persistent-next .countdown-value { font-size: 40px; } .persistent-next .countdown[data-long='true'] .countdown-value { font-size: 34px; } .ad-screen { padding: 4vh 0; height: 100%; overflow-y: auto; } .ad-screen h2 { font-size: clamp(44px, 7vw, 135px); color: var(--accent); line-height: 1.06; letter-spacing: -.055em; font-weight: 550; margin: 4vh 0 3vh; overflow-wrap: anywhere; } .ad-screen p { font-size: clamp(22px, 2.7vw, 50px); color: var(--secondary); line-height: 1.4; margin: 0; } .ad-signature { display: flex; align-items: center; gap: 15px; color: var(--muted); margin-top: 4vh; font-size: 22px; } .board-footer { flex: 0 0 auto; position: relative; border-top: 1px solid var(--line); view-transition-name: board-footer; } .cycle-progress { position: absolute; top: -1px; width: 100%; height: 1px; } .cycle-progress > span { display: block; width: 100%; height: 1px; background: var(--accent); transform-origin: left; transition: transform 1s linear; } .footer-main { display: flex; align-items: center; min-height: 60px; padding: 8px 0; } .scene-navigation { display: flex; align-items: center; gap: 22px; flex-shrink: 0; } .scene-navigation button { border: 0; padding: 4px 0; background: none; color: var(--secondary); display: flex; align-items: center; gap: 9px; font-size: clamp(13px, 1.05vw, 20px); white-space: nowrap; } .scene-navigation button.active { color: var(--foreground); } .scene-index { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--outline); border-radius: 50%; font-size: 13px; } .active .scene-index { color: var(--accent-ink); background: var(--accent); border-color: var(--accent); } .footer-status { display: flex; align-items: center; justify-content: flex-end; gap: 8px; color: var(--muted); margin-left: auto; padding-left: 16px; text-align: right; font-size: clamp(12px, .95vw, 18px); min-width: 0; } .board-controls { display: flex; gap: var(--control-gap); width: calc(4 * var(--control-size) + 3 * var(--control-gap)); margin-left: 14px; flex-shrink: 0; min-width: 0; overflow: hidden; opacity: 1; transition: width 280ms ease, margin-left 280ms ease, opacity 200ms ease; } .controls-idle, .controls-idle * { cursor: none; } .controls-idle .board-controls { width: 0; margin-left: 0; opacity: 0; pointer-events: none; } .icon-button { display: inline-flex; justify-content: center; align-items: center; flex-shrink: 0; width: var(--control-size, 40px); height: var(--control-size, 40px); color: var(--secondary); border: 1px solid transparent; border-radius: 9px; background: none; } .icon-button:hover { color: var(--foreground); border-color: var(--outline); } .toast { position: fixed; bottom: 80px; left: 50%; transform: translateX(-50%); max-width: 90vw; z-index: 20; padding: 15px 22px; background: var(--surface); color: var(--foreground); border: 1px solid var(--outline); border-radius: 12px; font-size: 15px; } /* Measured ink bounds remove font leading from digits and share one baseline with units. */ .numeric-text { display: inline-flex; vertical-align: baseline; height: var(--numeric-height, .8em); line-height: 1; letter-spacing: 0; } .numeric-track { display: inline-flex; align-items: flex-start; height: 100%; overflow: hidden; white-space: nowrap; } .numeric-glyph { position: relative; display: inline-block; width: .62em; height: 100%; overflow: hidden; text-align: center; flex-shrink: 0; } .numeric-symbol { display: block; position: relative; top: var(--numeric-offset, -.13em); line-height: 1em; } .numeric-current { display: block; position: relative; top: var(--numeric-offset, -.13em); height: 1em; line-height: 1em; } .numeric-old { position: absolute; left: 0; top: var(--numeric-offset, -.13em); width: 100%; height: 1em; line-height: 1em; } .numeric-glyph[data-rolling='true'] .numeric-current { animation: digit-up-in 380ms cubic-bezier(.22,.8,.22,1) both; } .numeric-glyph[data-rolling='true'] .numeric-old { animation: digit-up-out 380ms cubic-bezier(.22,.8,.22,1) both; } .numeric-glyph[data-direction='down'][data-rolling='true'] .numeric-current { animation-name: digit-down-in; } .numeric-glyph[data-direction='down'][data-rolling='true'] .numeric-old { animation-name: digit-down-out; } .numeric-vanish { width: 0; animation: digit-collapse 380ms ease both; } @keyframes digit-up-in { from { transform: translateY(105%); } to { transform: translateY(0); } } @keyframes digit-up-out { from { transform: translateY(0); } to { transform: translateY(-105%); } } @keyframes digit-down-in { from { transform: translateY(-105%); } to { transform: translateY(0); } } @keyframes digit-down-out { from { transform: translateY(0); } to { transform: translateY(105%); } } @keyframes digit-collapse { from { width: .62em; } to { width: 0; } } @keyframes scene-in { from { opacity: 0; } to { opacity: 1; } } .destination-heading { position: relative; overflow: hidden; } .destination-current { display: block; } .destination-current[data-changing='true'] { animation: destination-up-in 380ms cubic-bezier(.22,.8,.22,1) both; } .destination-old { position: absolute; inset: 0 0 auto; display: block; animation: destination-up-out 380ms cubic-bezier(.22,.8,.22,1) both; } @keyframes destination-up-in { from { transform: translateY(105%); } to { transform: translateY(0); } } @keyframes destination-up-out { from { transform: translateY(0); } to { transform: translateY(-105%); } } .settings-dialog { width: min(640px, calc(100vw - 28px)); height: min(660px, calc(100vh - 32px)); height: min(660px, calc(100dvh - 32px)); max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); padding: 0; color: var(--foreground); background: var(--surface); border: 1px solid var(--outline); border-radius: 20px; overflow: hidden; box-shadow: 0 25px 90px #0006; } .settings-dialog::backdrop { background: #0009; backdrop-filter: blur(8px); } .settings-dialog form { height: 100%; min-height: 0; display: flex; flex-direction: column; } .settings-navigation-hint { flex: 1; margin: 0; color: var(--secondary); font-size: 12px; line-height: 1.4; } .settings-dialog[data-remote-navigation='true'] [data-tv-focus] { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 8px; } .settings-dialog[data-remote-editing='true'] :focus { outline: 3px solid var(--accent); outline-offset: 3px; background: color-mix(in srgb, var(--accent) 12%, var(--input)); } .settings-heading { flex-shrink: 0; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 20px 28px; border-bottom: 1px solid var(--line); } .settings-heading-actions { display: flex; gap: 8px; } .settings-heading-actions .icon-button { width: 44px; height: 44px; } .settings-heading h2 { margin: 8px 0 0; font-size: 27px; font-weight: 600; letter-spacing: -.04em; } .settings-heading .eyebrow { font-size: 11px; } .settings-sections { flex-shrink: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 14px 28px; border-bottom: 1px solid var(--line); } .settings-sections button { min-height: 46px; padding: 8px 4px; border: 1px solid var(--outline); border-radius: 10px; background: var(--input); color: var(--secondary); font-size: 14px; } .settings-sections button[aria-current='page'] { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); } .settings-body { flex: 1 1 0; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scroll-padding: 14px; padding: 0 28px 16px; scrollbar-width: thin; scrollbar-color: var(--outline) var(--surface); } .settings-body section { padding: 21px 0 0; } .settings-body .settings-validation { color: var(--warning); margin: 16px 0 0; } .settings-body h3 { margin: 0 0 17px; font-size: 18px; font-weight: 650; } .settings-body h4 { margin: 20px 0 14px; font-size: 14px; font-weight: 600; } .settings-note { color: var(--secondary); font-size: 13px; margin-bottom: 18px; } .settings-body label { display: flex; flex-direction: column; gap: 9px; font-size: 14px; color: var(--secondary); margin: 17px 0; } .settings-body select, .settings-body input:not([type='checkbox']):not([type='radio']), .settings-body textarea { width: 100%; color: var(--foreground); background: var(--input); border: 1px solid var(--outline); border-radius: 8px; padding: 12px; font-size: 15px; } .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .settings-body .switch-row { flex-direction: row; align-items: center; justify-content: space-between; gap: 15px; color: var(--foreground); } .switch-row small { display: block; color: var(--muted); margin-top: 5px; font-size: 12px; line-height: 1.5; } .switch-row input { appearance: none; position: relative; flex-shrink: 0; margin: 0; width: 40px; height: 24px; background: var(--line); border: 1px solid var(--outline); border-radius: 20px; transition: background 180ms; cursor: pointer; } .switch-row input::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: var(--secondary); transition: transform 180ms; } .switch-row input:checked { background: var(--accent); border-color: var(--accent); } .switch-row input:checked::after { transform: translateX(16px); background: var(--accent-ink); } .theme-picker { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .settings-body .theme-option { flex-direction: row; align-items: center; gap: 10px; padding: 12px; margin: 0; border: 1px solid var(--outline); border-radius: 9px; cursor: pointer; } .theme-option:has(input:checked) { border-color: var(--accent); color: var(--foreground); } .theme-option input { accent-color: var(--accent); margin: 0; width: 16px; height: 16px; } .theme-swatch { width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0; } .tiny-tag { font-size: 9px; color: var(--accent); border: 1px solid var(--outline); border-radius: 4px; padding: 3px 5px; margin-left: 7px; letter-spacing: .07em; } .text-button { display: inline-flex; align-items: center; gap: 9px; border: 0; background: none; color: var(--secondary); font-size: 14px; padding: 10px 0; } .settings-body > .text-button { margin-top: 15px; } .form-hint { font-size: 12px; color: var(--muted); line-height: 1.6; } .settings-scroll-controls { flex-shrink: 0; display: flex; align-items: center; gap: 8px; padding: 10px 28px; border-top: 1px solid var(--line); } .settings-scroll-button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-width: 92px; min-height: 44px; padding: 10px 12px; border: 1px solid var(--outline); border-radius: 10px; background: var(--input); color: var(--foreground); font-size: 14px; } .settings-scroll-button:disabled { opacity: .35; cursor: default; } .settings-actions { flex-shrink: 0; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 28px; border-top: 1px solid var(--line); } .primary-button { display: inline-flex; align-items: center; gap: 8px; background: var(--accent); color: var(--accent-ink); border: 0; border-radius: 9px; padding: 13px 22px; font-size: 15px; font-weight: 650; } @media (max-width: 480px), (max-height: 540px) { .settings-heading { padding: 12px 18px; } .settings-heading h2 { font-size: 23px; } .settings-sections { padding: 10px 18px; gap: 6px; } .settings-sections button { font-size: 12px; } .settings-body { padding-inline: 18px; } .settings-scroll-controls, .settings-actions { padding-inline: 18px; } .settings-navigation-hint { font-size: 11px; } .settings-scroll-button { min-width: 78px; padding-inline: 8px; } } @media (max-width: 1100px) { .brand-word { display: none; } .header-right { column-gap: 18px; } .scene-navigation button > span:last-child { display: none; } .hero-details > span { display: none; } .hero-departure { gap: 20px; } .hero-destination h2 { font-size: min(4.5vw, calc(var(--hero-height) * .34)); } } @media (max-width: 1000px) { .departure-row { grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px; } .row-time, .row-destination p { display: none; } .row-time-compact { display: flex; align-items: center; gap: 6px; margin-top: 8px; color: var(--secondary); font-size: min(20px, calc(var(--row-height) * .21)); flex-shrink: 0; } .row-time-compact .departure-day { font-size: .8em; } .row-destination h3 { font-size: min(36px, 4vw, calc(var(--row-height) * .36)); } .countdown[data-long='true'] .countdown-value { font-size: min(40px, calc(var(--row-height) * .42)); } .countdown-large[data-long='true'] .countdown-value { font-size: calc(var(--hero-height) * .62); } } @media (max-height: 750px) { .info-screen { padding: 12px 0; } .info-intro { margin-bottom: 12px; } .info-intro h2 { font-size: 30px; } .info-card { padding: 18px; } .card-icon { display: none; } .info-card h3 { font-size: 26px; margin-bottom: 14px; } .info-status { font-size: 14px; padding-top: 12px; } .persistent-next { padding: 11px 0; } .weather-attribution { font-size: 11px; } } @media (orientation: portrait), (max-width: 700px) { .board { padding: 16px 20px 0; } h1 { font-size: clamp(28px, 5.7vw, 62px); } .stop-direction { font-size: clamp(15px, 3vw, 28px); } .clock { font-size: clamp(32px, 6.2vw, 68px); } .today { font-size: clamp(12px, 2vw, 20px); } .brand-word { display: none; } .info-intro { flex-direction: column; align-items: flex-start; gap: 10px; } .info-grid { grid-template-columns: minmax(0, 1fr); } .info-card:not([data-active='true']) { display: none; } .information-tabs { display: flex; } .persistent-next > .eyebrow { display: none; } } @media (max-width: 700px) { .board { --control-size: 32px; --control-gap: 3px; --hero-height: clamp(100px, 16vh, 150px); --hero-gap: 18px; padding: 12px 16px 0; } .board[data-row-count='5'], .board[data-row-count='6'] { --hero-height: 95px; } .board-header { gap: 12px; padding-bottom: 12px; } .header-right { column-gap: 9px; } .official-mark { width: 30px; } .clock { font-size: clamp(27px, 6.8vw, 44px); gap: 4px; } h1 { font-size: clamp(25px, 6.5vw, 42px); } .today { font-size: 10px; } .stop-meta { gap: 5px 12px; } .stop-direction { font-size: 14px; margin-top: 7px; gap: 7px; } .weather-summary { font-size: 13px; gap: 6px; margin-top: 7px; } .weather-summary svg { width: 20px; height: 20px; } .weather-summary > span { display: none; } .source-label { font-size: 12px; gap: 5px; } .eyebrow { font-size: 10px; } .hero-departure { gap: 12px; } .transport-kind { font-size: 11px; gap: 5px; margin-bottom: 5px; } .transport-kind svg { width: 16px; height: 16px; } .hero-details { margin-top: 7px; font-size: 12px; } .hero-destination h2 { font-size: min(6vw, calc(var(--hero-height) * .30)); } .route-badge-large { width: calc(var(--hero-height) * .70); padding: 0 10px; font-size: calc(var(--hero-height) * .54); } .countdown-large .countdown-value { font-size: calc(var(--hero-height) * .62); } .countdown-large[data-long='true'] .countdown-value { font-size: min(34px, calc(var(--hero-height) * .36)); } .countdown-large .countdown-now { font-size: 5vw; } .departure-row { gap: 10px; } .departure-row .route-badge { width: 60px; padding: 0 8px; } .row-destination h3 { font-size: min(5.7vw, calc(var(--row-height) * .36)); } .row-time-compact { font-size: min(15px, calc(var(--row-height) * .19)); margin-top: 6px; } .countdown .countdown-value { font-size: min(40px, calc(var(--row-height) * .6)); } .countdown[data-long='true'] .countdown-value { font-size: min(27px, calc(var(--row-height) * .38)); } .countdown-part small { font-size: max(14px, .42em); } .countdown-large .countdown-value { font-size: calc(var(--hero-height) * .62); } .countdown-large[data-long='true'] .countdown-value { font-size: 32px; } .scene-navigation { gap: 12px; } .footer-main { min-height: 50px; padding: 6px 0; } .footer-status { font-size: 10px; padding-left: 10px; } .board-controls { margin-left: 8px; } .board-controls svg { width: 21px; height: 21px; } .persistent-next { --row-height: 54px; gap: 10px; padding: 10px 0; } .persistent-next .route-badge { height: 42px; width: 60px; font-size: 27px; } .persistent-destination strong { font-size: 17px; } .persistent-destination time { font-size: 13px; } .persistent-next .countdown-value { font-size: 29px; } .persistent-next .countdown[data-long='true'] .countdown-value { font-size: 25px; } .persistent-next .countdown-now { font-size: 19px; } .info-intro h2 { font-size: 28px; } .information-tabs { gap: 7px; } .information-tabs button { font-size: 12px; padding: 7px 10px; } .info-card { padding: 18px; } .info-card h3 { font-size: 24px; margin-bottom: 12px; } .weather-attribution { padding-top: 12px; } .info-status { font-size: 12px; padding-top: 10px; } .notice { grid-template-columns: 44px minmax(0, 1fr); gap: 14px; padding: 18px 14px; border-radius: 20px; } .notice-signal { width: 44px; height: 44px; border-radius: 14px; } .notice-signal svg { width: 28px; height: 28px; } .notice-meta { margin-bottom: 12px; } .notice-routes { margin-bottom: 12px; } .notice-routes .route-badge { height: 35px; min-width: 42px; padding: 0 10px; font-size: 23px; } .notice h3 { font-size: 25px; } .notice p { font-size: 17px; } .transport-notice, .offline-banner { font-size: 12px; } .settings-heading, .settings-body, .settings-actions { padding-left: 20px; padding-right: 20px; } } @media (max-height: 620px) and (min-width: 701px) { .board { --hero-height: 110px; --hero-gap: 18px; padding-top: 10px; } .board[data-row-count='5'], .board[data-row-count='6'] { --hero-height: 95px; } .board-header { padding-bottom: 10px; } .clock { font-size: 40px; } h1 { font-size: 32px; } .official-mark { width: 35px; } .today { font-size: 12px; } .info-screen { padding: 10px 0; } .info-intro h2 { font-size: 28px; } .info-card { padding: 16px 20px; } .info-card h3 { font-size: 25px; margin-bottom: 10px; } .info-screen[data-compact='true'][data-cards='true'] { position: relative; } .info-screen[data-compact='true'][data-cards='true'] .info-intro { position: absolute; top: 27px; right: 20px; z-index: 1; margin: 0; } .info-screen[data-compact='true'][data-cards='true'] .info-intro h2 { display: none; } .info-screen[data-compact='true'][data-cards='true'] .info-card > h3 { padding-right: var(--info-tabs-width, 290px); min-height: 36px; text-align: left; display: flex; align-items: center; } .info-status { font-size: 13px; padding-top: 10px; } .persistent-next > .eyebrow { display: none; } .persistent-next { padding: 10px 0; } } @media (max-width: 700px) and (max-height: 740px) { .info-intro h2 { font-size: 25px; } .info-intro { gap: 8px; } .weather-attribution { padding-top: 8px; font-size: 10px; } .weather-info { padding: 16px; } } /* Viewing distance raises type sizes; pagination preserves the available height. */ .board { --reading-scale: 1; } .board[data-profile='street'], .board[data-distance='medium'], .board[data-distance='far'] { --hero-height: clamp(125px, calc(18vh * var(--reading-scale)), 270px); } .board h1 { font-size: clamp(30px, calc(3.8vw * var(--reading-scale)), 90px); } .board .clock { font-size: clamp(38px, calc(4.6vw * var(--reading-scale)), 108px); } .board .eyebrow { font-size: clamp(12px, calc(1.05vw * var(--reading-scale)), 26px); } .board .source-label { font-size: clamp(13px, calc(1.15vw * var(--reading-scale)), 28px); } .board .hero-destination h2 { font-size: min(calc(4.7vw * var(--reading-scale)), calc(var(--hero-height) * .34)); } .board .row-destination h3 { font-size: min(calc(54px * var(--reading-scale)), calc(3.5vw * var(--reading-scale)), calc(var(--row-height) * .4)); } .board .row-time { font-size: min(calc(42px * var(--reading-scale)), calc(var(--row-height) * .36)); } .board .info-card h3 { font-size: clamp(23px, calc(2vw * var(--reading-scale)), 44px); } .departure-content[data-next='true']:not([data-long-wait='true']) { --hero-height: clamp(134px, calc(18vh * var(--reading-scale) + 24px), 260px); } .board[data-row-count='5'] .departure-content[data-next='true']:not([data-long-wait='true']), .board[data-row-count='6'] .departure-content[data-next='true']:not([data-long-wait='true']) { --hero-height: clamp(118px, calc(15vh * var(--reading-scale) + 24px), 224px); } .hero-next { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin-top: 8px; color: var(--secondary); font-size: min(calc(22px * var(--reading-scale)), max(15px, calc(var(--hero-height) * .13))); line-height: 1.2; } .hero-next time { color: var(--accent); display: inline-flex; align-items: baseline; gap: 6px; font-weight: 650; } .departure-status { min-width: 0; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 6px; } .departure-change { color: var(--warning); font-size: clamp(12px, calc(1.1vw * var(--reading-scale)), 20px); line-height: 1.2; } .cancelled-label { display: inline-flex; align-items: center; gap: 8px; color: var(--warning); font-size: min(calc(26px * var(--reading-scale)), calc(var(--row-height, 96px) * .31), 5.5vw); font-weight: 650; white-space: nowrap; } .cancelled-label svg { width: .9em; height: .9em; } .departure-row[data-status='cancelled'] .route-badge { color: var(--warning); border-color: var(--warning); } .departure-row[data-status='cancelled'] h3 { color: var(--secondary); } .empty-departures[data-cancelled='true'] > svg { display: none; } .empty-departures[data-cancelled='true'] h2 { color: var(--warning); font-size: clamp(22px, calc(2.8vw * var(--reading-scale)), 44px); } .departure-content[data-long-wait='true'] { --hero-height: clamp(142px, calc(24vh * var(--reading-scale)), 300px); } .long-wait-time { min-width: 0; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 8px; } .long-wait-time > span:first-child { color: var(--secondary); font-size: clamp(17px, calc(2vw * var(--reading-scale)), 34px); } .long-wait-time > time { color: var(--accent); font-size: min(calc(144px * var(--reading-scale)), calc(9vw * var(--reading-scale)), calc(var(--hero-height) * .7)); line-height: 1; font-weight: 600; white-space: nowrap; } .board[data-motion='calm'] .numeric-old, .board[data-motion='calm'] .destination-old { display: none; } .board[data-motion='calm'] .numeric-current, .board[data-motion='calm'] .destination-current { transform: none !important; } .board[data-motion='calm'] .numeric-glyph[data-rolling] .numeric-current, .board[data-motion='calm'] .destination-current[data-changing='true'], .board[data-motion='calm'] .scene { animation: calm-in 180ms ease-out both; } @keyframes calm-in { from { opacity: .35; } to { opacity: 1; } } @media (max-width: 1000px) { .board .row-destination h3 { font-size: min(calc(42px * var(--reading-scale)), calc(4vw * var(--reading-scale)), calc(var(--row-height) * .36)); } .board .row-time-compact { font-size: min(calc(20px * var(--reading-scale)), calc(var(--row-height) * .21)); } } @media (max-height: 620px) and (min-width: 701px) { .board h1 { font-size: calc(32px * var(--reading-scale)); } .board .clock { font-size: calc(40px * var(--reading-scale)); } } @media (max-width: 700px) { .board h1 { font-size: clamp(25px, calc(6.5vw * var(--reading-scale)), 54px); } .board .clock { font-size: clamp(27px, calc(6.8vw * var(--reading-scale)), 56px); } .board .eyebrow { font-size: calc(10px * var(--reading-scale)); } .board .source-label { font-size: calc(12px * var(--reading-scale)); } .board .hero-destination h2 { font-size: min(calc(6vw * var(--reading-scale)), calc(var(--hero-height) * .3)); } .board .row-destination h3 { font-size: min(calc(42px * var(--reading-scale)), calc(5.7vw * var(--reading-scale)), calc(var(--row-height) * .36)); } .board .info-card h3 { font-size: min(calc(24px * var(--reading-scale)), 7vw); } .hero-next { font-size: 15px; gap: 4px 7px; margin-top: 6px; } .departure-status { gap: 4px; } .departure-change { font-size: 12px; } .hero-departure[data-long-wait='true'] { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; gap: 8px 12px; } .hero-departure[data-long-wait='true'] > .route-badge { grid-row: 1 / 3; width: min(calc(var(--hero-height) * .7), 110px); height: min(calc(var(--hero-height) - 10px), 160px); } .hero-departure[data-long-wait='true'] .transport-kind { display: none; } .long-wait-time { grid-column: 2; align-items: flex-start; gap: 4px; } .long-wait-time > span:first-child { font-size: 16px; } .long-wait-time > time { font-size: min(56px, 14vw); } .board[data-distance='far'] .hero-departure:not([data-long-wait='true']) { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; gap: 8px 12px; } .board[data-distance='far'] .departure-content:not([data-long-wait='true']) { --hero-height: clamp(142px, calc(19vh * var(--reading-scale)), 220px); } .board[data-distance='far'] .hero-departure:not([data-long-wait='true']) > .route-badge { grid-row: 1 / 3; width: 110px; height: min(calc(var(--hero-height) - 10px), 160px); } .board[data-distance='far'] .hero-departure:not([data-long-wait='true']) .transport-kind { display: none; } .board[data-distance='far'] .hero-departure > .departure-status { grid-column: 2; align-items: flex-start; } .board[data-distance='far'] .hero-departure .countdown-large .countdown-value { font-size: 64px; } } ::view-transition { pointer-events: none; } ::view-transition-old(root), ::view-transition-new(root) { animation-duration: 320ms; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; animation-delay: 0ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; } .numeric-old { visibility: hidden; } .numeric-current { transform: none !important; } .destination-old { visibility: hidden; } .destination-current { transform: none !important; } }