: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(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-cloud[data-carousel='true'] { justify-content: center; gap: var(--lane-gap); padding: var(--lane-edge) 0; background-image: radial-gradient(color-mix(in srgb, var(--accent) 18%, transparent) 1px, transparent 1px); background-size: 26px 26px; mask-image: linear-gradient(to right, transparent, #000 4%, #000 96%, transparent); } .route-lane { height: var(--lane-height, 180px); flex-shrink: 0; width: 100%; transform: rotate(var(--lane-angle, -.9deg)); } .route-track { display: flex; width: max-content; animation: routes-scroll 60s linear infinite; will-change: transform; } .route-group { display: flex; gap: 16px; padding-right: 16px; } .route-tile { position: relative; overflow: hidden; width: var(--route-card-width, 300px); height: var(--lane-height, 180px); padding: 14px 18px; display: flex; flex-direction: column; justify-content: center; flex-shrink: 0; border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--line)); border-radius: 22px; background: color-mix(in srgb, var(--accent) 8%, var(--background)); } .route-cloud .route-badge { --row-height: 100px; width: 105px; height: clamp(38px, calc(var(--lane-height, 180px) * .30), 72px); font-size: clamp(30px, calc(var(--lane-height, 180px) * .28), 54px); border-radius: 16px; padding: 0 10px; margin-bottom: 12px; } .route-card-name { width: 100%; flex: 1 1 0; min-width: 0; min-height: 0; display: flex; flex-direction: column; justify-content: center; } .route-tile .destination-heading { width: 100%; font-size: clamp(17px, calc(var(--lane-height, 180px) * .14), 26px); line-height: 1.12; margin: 0; font-weight: 550; letter-spacing: -.025em; flex-shrink: 0; overflow-wrap: anywhere; } .route-card-next { display: flex; align-items: center; flex-wrap: wrap; gap: 5px 8px; margin-top: 10px; font-size: 12px; color: var(--secondary); flex-shrink: 0; } .route-card-next time { display: inline-flex; color: var(--accent); font-size: clamp(21px, calc(var(--lane-height, 180px) * .13), 28px); font-weight: 650; } .route-kind { font-size: 11px; color: var(--muted); margin-left: auto; } .route-cloud[data-carousel='true'][data-horizontal='true'] .route-tile { flex-direction: row; align-items: center; gap: 14px; padding: 10px 14px; } .route-cloud[data-carousel='true'][data-horizontal='true'] .route-badge { width: 72px; height: min(56px, calc(var(--lane-height) - 20px)); font-size: 36px; padding: 0 8px; margin-bottom: 0; } .route-cloud[data-carousel='true'][data-horizontal='true'] .route-card-name { height: 100%; } .route-cloud[data-carousel='true'][data-horizontal='true'] .route-kind { display: none; } .route-cloud[data-carousel='true'][data-horizontal='true'] .route-card-next { margin-top: 6px; } .route-list { flex: 1 1 0; min-height: 0; display: grid; grid-template-rows: repeat(var(--route-rows), minmax(0, 1fr)); gap: 12px; } .route-list .route-tile { width: 100%; height: 100%; flex-direction: row; align-items: center; gap: 14px; padding: 14px; border-radius: 18px; } .route-list .route-badge { width: 70px; height: 62px; font-size: 35px; border-radius: 16px; margin: 0; } .route-list .route-card-name { height: 100%; } .route-list .destination-heading { font-size: clamp(18px, 5cqw, 25px); } .route-list .route-card-next time { font-size: clamp(23px, 6cqw, 30px); } .route-list-pages { display: flex; justify-content: space-between; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; padding-top: 12px; } .route-list-pages > .numeric-text { color: var(--accent); } .route-watermark { position: absolute; right: -18px; bottom: -22px; color: var(--accent); opacity: .06; transform: rotate(-12deg); } @keyframes routes-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } } .weather-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; min-height: 0; } .weather-current { display: flex; align-items: center; gap: 18px; color: var(--accent); } .weather-current strong { font-size: clamp(60px, 5.4vw, 100px); font-weight: 550; line-height: 1; } .weather-info .weather-description { margin: 12px 0; font-size: clamp(20px, 1.7vw, 32px); line-height: 1.2; } .weather-details { display: flex; flex-wrap: wrap; gap: 8px 18px; color: var(--secondary); font-size: clamp(15px, 1.15vw, 23px); } .weather-details > span { display: flex; align-items: center; gap: 6px; } .weather-hours { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; border-top: 1px solid var(--line); padding-top: 14px; } .weather-hours > div { display: flex; flex-direction: column; align-items: center; gap: 10px; } .weather-hours time { color: var(--secondary); font-size: clamp(14px, 1vw, 22px); } .weather-hours svg { color: var(--accent); width: 40px !important; height: 40px !important; } .weather-hours strong { font-size: clamp(22px, 1.8vw, 34px); font-weight: 550; } .precipitation-chance { font-size: clamp(14px, 1vw, 21px); color: var(--secondary); margin-top: 12px; line-height: 1.35; } .weather-attribution { margin-top: auto; padding-top: 16px; display: flex; flex-wrap: wrap; gap: 5px 12px; font-size: clamp(12px, .8vw, 17px); color: var(--muted); } .weather-attribution a { color: inherit; text-underline-offset: 3px; } .weather-now-label, .weather-hour-rain { display: none; } .qr-info { text-align: left; container-name: qr-card; } .qr-content { flex: 1 1 0; min-height: 0; width: 100%; display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); gap: clamp(16px, 2cqw, 36px); } .qr-stage { position: relative; isolation: isolate; min-width: 0; min-height: 0; display: grid; place-items: center; padding: clamp(16px, 2cqw, 32px); border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--line)); border-radius: 24px; background: color-mix(in srgb, var(--accent) 8%, var(--background)); overflow: hidden; container-type: size; } .qr-route-backdrop { position: absolute; inset: 0; overflow: hidden; z-index: -1; } .qr-route-art { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; color: var(--accent); opacity: .22; transform: rotate(-12deg) scale(1.3); } .qr-route-art path { fill: none; stroke: currentColor; stroke-width: 3; stroke-dasharray: 3 12; stroke-linecap: round; animation: qr-route-flow 12s linear infinite; } .qr-route-art circle { fill: var(--background); stroke: currentColor; stroke-width: 3; } .qr-stage-corner { position: absolute; right: 14px; top: 14px; color: var(--accent); } .qr-paper { display: block; position: relative; z-index: 1; width: min(100cqw, 100cqh, 440px); aspect-ratio: 1; flex-shrink: 0; padding: 8px; border: 1px solid var(--outline); border-radius: 24px; background: #fff; box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent); } .passenger-qr { width: 100%; height: 100%; aspect-ratio: 1; } .qr-description { position: relative; min-width: 0; min-height: 0; display: flex; flex-direction: column; justify-content: space-between; gap: 16px; padding: clamp(8px, 1cqw, 18px) 0; } .qr-eyebrow { display: block; color: var(--accent); font-size: clamp(12px, 1.4cqw, 20px); letter-spacing: .12em; margin-bottom: 12px; } .qr-stop { margin: 0; font-size: clamp(26px, 4.3cqw, 70px); line-height: 1.08; letter-spacing: -.04em; font-weight: 600; overflow-wrap: anywhere; } .qr-info .qr-summary { font-size: clamp(18px, 2.2cqw, 32px); line-height: 1.3; margin: 14px 0 0; } .qr-steps { margin: 0; padding: 0; display: grid; gap: clamp(12px, 1.5cqw, 22px); list-style: none; } .qr-steps li { display: flex; align-items: center; gap: 14px; } .qr-step-icon { display: grid; place-items: center; width: clamp(42px, 5cqw, 68px); height: clamp(42px, 5cqw, 68px); color: var(--accent); border: 1px solid var(--line); border-radius: 16px; background: color-mix(in srgb, var(--accent) 5%, var(--background)); flex-shrink: 0; } .qr-steps li > div { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 5px 9px; } .qr-step-number { font-size: clamp(12px, 1.4cqw, 20px); color: var(--accent); align-self: center; } .qr-steps strong { font-size: clamp(17px, 2cqw, 29px); font-weight: 550; line-height: 1.15; } .qr-step-detail { grid-column: 2; color: var(--muted); font-size: clamp(13px, 1.5cqw, 21px); } .passenger-link { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--accent); text-decoration: none; font-size: clamp(18px, 2.1cqw, 30px); font-weight: 550; border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--line)); background: color-mix(in srgb, var(--accent) 8%, var(--background)); border-radius: 16px; padding: 14px 18px; } .passenger-link span { min-width: 0; overflow-wrap: anywhere; } @keyframes qr-route-flow { to { stroke-dashoffset: -150; } } @container qr-card (max-width: 600px) { .qr-content { display: flex; flex-direction: column; gap: 12px; } .qr-stage { flex: 1 1 0; min-height: 0; padding: 12px; border-radius: 20px; } .qr-stage-corner { display: none; } .qr-paper { max-width: 100%; border-radius: 20px; padding: 6px; } .qr-description { padding: 0; gap: 12px; flex-shrink: 0; } .qr-eyebrow { font-size: 11px; margin-bottom: 6px; } .qr-stop { font-size: clamp(22px, 6cqw, 30px); } .qr-info .qr-summary, .qr-step-detail { display: none; } .qr-steps { gap: 8px; } .qr-steps li { gap: 9px; } .qr-step-icon { width: 30px; height: 30px; border: 0; border-radius: 9px; } .qr-step-icon svg { width: 24px; height: 24px; } .qr-steps strong { font-size: 15px; } .qr-step-number { font-size: 11px; } .passenger-link { font-size: 18px; padding: 10px 12px; border-radius: 12px; } } @container qr-card (min-width: 601px) and (max-height: 420px) { .qr-description { gap: 12px; padding: 0; } .qr-eyebrow, .qr-step-detail { display: none; } .qr-stop { font-size: clamp(26px, 3.5cqw, 40px); } .qr-info .qr-summary { font-size: 18px; margin-top: 10px; } .qr-steps { gap: 10px; } .qr-step-icon { width: 42px; height: 42px; } .qr-steps strong { font-size: 20px; } .passenger-link { font-size: 22px; padding: 10px 14px; } } @container qr-card (min-width: 601px) and (max-height: 320px) { .qr-description { gap: 10px; padding: 0; } .qr-eyebrow, .qr-info .qr-summary, .qr-step-detail { display: none; } .qr-stop { font-size: clamp(26px, 3.5cqw, 40px); } .qr-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .qr-steps li { gap: 8px; } .qr-step-icon { width: 36px; height: 36px; border: 0; } .qr-step-icon svg { width: 28px; height: 28px; } .qr-steps li > div { display: flex; flex-direction: column; gap: 3px; } .qr-steps strong { font-size: 17px; } .qr-step-number { align-self: flex-start; font-size: 12px; } .passenger-link { font-size: 22px; padding: 10px 14px; } } @container qr-card (max-width: 600px) and (max-height: 380px) { .qr-content { display: flex; flex-direction: column; } .qr-stage { padding: 10px; } .qr-paper { padding: 5px; border-radius: 16px; } .qr-intro, .qr-steps li:nth-child(2) { display: none; } .qr-description { flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; } .qr-step-number { display: none; } .qr-steps li > div { display: block; } .qr-step-icon { display: none; } .qr-steps strong { font-size: 14px; } .passenger-link { font-size: 14px; padding: 8px; gap: 4px; } .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); position: relative; isolation: isolate; display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 24px; padding: clamp(20px, 2vw, 36px); border: 1px solid color-mix(in srgb, var(--notice-color) 35%, var(--line)); border-radius: 26px; background: color-mix(in srgb, var(--notice-color) 5%, var(--background)); overflow: hidden; } .notice[data-kind='cancellation'], .notice[data-kind='delay'] { --notice-color: var(--warning); } .notice::after { content: ''; position: absolute; z-index: -1; width: 36%; top: -50%; right: -5%; height: 200%; transform: rotate(16deg); background: repeating-linear-gradient(0deg, transparent 0 24px, color-mix(in srgb, var(--notice-color) 5%, transparent) 24px 25px); pointer-events: none; } .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: 76px; height: 76px; border-radius: 23px; background: color-mix(in srgb, var(--notice-color) 16%, var(--background)); border: 1px solid color-mix(in srgb, var(--notice-color) 45%, var(--line)); } .notice-line { width: 2px; flex: 1 1 0; min-height: 30px; margin: 10px 0; background: linear-gradient(var(--notice-color), color-mix(in srgb, var(--notice-color) 20%, transparent)); } .notice[data-kind='cancellation'] .notice-line { background: repeating-linear-gradient(to bottom, var(--notice-color) 0 5px, transparent 5px 11px); } .notice-endpoint { width: 12px; height: 12px; border: 2px solid var(--notice-color); border-radius: 50%; } .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; } .notice-scope { display: flex; align-items: center; gap: 8px; margin-top: 18px; font-size: 14px; color: var(--notice-color); } .notice-watermark { position: absolute; right: -30px; bottom: -50px; color: var(--notice-color); opacity: .04; transform: rotate(-15deg); z-index: -1; } .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(600px, calc(100vw - 28px)); max-height: calc(100dvh - 32px); padding: 0; color: var(--foreground); background: var(--surface); border: 1px solid var(--outline); border-radius: 20px; overflow: auto; box-shadow: 0 25px 90px #0006; } .settings-dialog::backdrop { background: #0009; backdrop-filter: blur(8px); } .settings-dialog { scroll-padding: 56px 14px 14px; } .settings-navigation-hint { position: sticky; top: 0; z-index: 2; margin: 0; padding: 10px 28px; color: var(--secondary); font-size: 12px; line-height: 1.4; background: var(--surface); border-bottom: 1px solid var(--line); } .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 { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 25px 28px; border-bottom: 1px solid var(--line); } .settings-heading h2 { margin: 8px 0 0; font-size: 27px; font-weight: 600; letter-spacing: -.04em; } .settings-heading .eyebrow { font-size: 11px; } .settings-body { padding: 0 28px 20px; } .settings-body section { border-bottom: 1px solid var(--line); padding: 21px 0 14px; } .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-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 20px 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; } @container (max-height: 380px) { .weather-current strong { font-size: 56px; } .weather-info .weather-description { font-size: 20px; margin: 10px 0; } .weather-body { gap: 12px; } .weather-hours > div { display: grid; grid-template-columns: auto auto; justify-content: center; align-items: center; gap: 7px; } .weather-hours time { grid-column: 1 / -1; text-align: center; } .weather-hours strong { font-size: 22px; } .weather-attribution { padding-top: 12px; } } @media (min-width: 701px) { .info-screen[data-compact='true'] .weather-body { flex: 1 1 0; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 32px; } .info-screen[data-compact='true'] .weather-now { height: 100%; min-height: 0; display: flex; flex-direction: column; justify-content: center; padding: clamp(12px, 1.5cqw, 24px); border: 1px solid var(--line); border-radius: 22px; background: color-mix(in srgb, var(--accent) 5%, var(--background)); } .info-screen[data-compact='true'] .weather-now-label { display: block; font-size: clamp(12px, 1.5cqw, 20px); color: var(--muted); letter-spacing: .1em; margin-bottom: 12px; } .info-screen[data-compact='true'] .weather-current { font-size: clamp(48px, min(13cqw, 28cqh), 180px); gap: .16em; } .info-screen[data-compact='true'] .weather-current strong { font-size: 1em; } .info-screen[data-compact='true'] .weather-current svg { width: .8em !important; height: .8em !important; } .info-screen[data-compact='true'] .weather-description { font-size: clamp(20px, 3cqw, 36px); margin: 12px 0; } .info-screen[data-compact='true'] .weather-details { font-size: clamp(16px, 2cqw, 23px); } .info-screen[data-compact='true'] .weather-future { height: 100%; display: flex; flex-direction: column; min-height: 0; } .info-screen[data-compact='true'] .weather-hours { flex: 1 1 0; min-height: 0; padding-top: 0; border: 0; } .info-screen[data-compact='true'] .weather-hours > div { display: flex; justify-content: space-between; min-height: 0; padding: clamp(8px, 1cqw, 18px) 6px; gap: 8px; border: 1px solid var(--line); border-radius: 18px; background: color-mix(in srgb, var(--accent) 5%, var(--background)); } .info-screen[data-compact='true'] .weather-hours time { font-size: clamp(15px, 2cqw, 26px); } .info-screen[data-compact='true'] .weather-hours svg { width: clamp(36px, 5cqw, 64px) !important; height: clamp(36px, 5cqw, 64px) !important; } .info-screen[data-compact='true'] .weather-hours strong { font-size: clamp(26px, 3.5cqw, 48px); } .info-screen[data-compact='true'] .weather-hour-rain { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 2px 4px; font-size: clamp(12px, 1.5cqw, 20px); color: var(--secondary); } .info-screen[data-compact='true'] .precipitation-chance { text-align: center; font-size: 17px; } } @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-current strong { font-size: 58px; } .weather-info .weather-description { font-size: 20px; } .weather-hours { padding-top: 12px; } .weather-body { gap: 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: 290px; min-height: 36px; text-align: left; display: flex; align-items: center; } .info-screen[data-compact='true'] .weather-now-label { margin-bottom: 8px; } .info-screen[data-compact='true'] .weather-description { font-size: 20px; margin: 8px 0; } .info-screen[data-compact='true'] .weather-details { font-size: 15px; } .info-screen[data-compact='true'] .weather-hours strong { font-size: 26px; } .info-screen[data-compact='true'] .weather-hours time { font-size: 15px; } .info-screen[data-compact='true'] .weather-hours svg { width: 36px !important; height: 36px !important; } .info-screen[data-compact='true'] .weather-hour-rain { font-size: 12px; } .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-current strong { font-size: 46px; } .weather-current svg { width: 44px !important; height: 44px !important; } .weather-info .weather-description { font-size: 18px; margin: 8px 0; } .weather-body { gap: 8px; } .weather-hours { padding-top: 8px; } .weather-hours > div { gap: 6px; } .precipitation-chance { margin-top: 8px; } .weather-attribution { padding-top: 8px; font-size: 10px; } .weather-info { padding: 16px; } } ::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; } .route-track { animation: none !important; } .qr-route-art path { animation: none !important; } .route-lane { transform: none; overflow: auto; } .route-group:nth-child(2) { display: none; } }