:root { color: var(--color-text); background: var(--color-bg); font-family: var(--font-body), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } * { box-sizing: border-box; } html, body { overflow-x: hidden; } body { min-width: 320px; min-height: 100vh; margin: 0; background: var(--color-bg); } button, input { border-radius: var(--radius-default); font: inherit; } button { min-height: 44px; border: 1px solid var(--color-border-light); color: var(--color-text); background: var(--color-surface); font-weight: 700; } button:hover, button.active { border-color: var(--color-accent); color: var(--color-bg); background: var(--color-accent); } input { min-width: 0; min-height: 46px; border: 1px solid var(--color-border-light); color: var(--color-text); background: var(--color-input-bg); padding: 0 14px; } #app { width: min(100%, 1120px); min-height: 100vh; margin: 0 auto; padding: 24px; } .topbar, .panel-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; } .topbar { margin-bottom: 16px; } .eyebrow, h1, h2, p { margin: 0; } .eyebrow { margin-bottom: 8px; color: var(--color-accent-warning); font-size: 0.78rem; font-weight: 800; text-transform: uppercase; } h1 { font-size: clamp(1.8rem, 5vw, 3.4rem); line-height: 1; } h2 { font-size: 1.05rem; } .pill { flex: 0 0 auto; border: 1px solid var(--color-accent); border-radius: 999px; padding: 8px 12px; color: var(--color-accent); font-weight: 800; } .searchbar, .tabs, .status-grid { display: grid; gap: 12px; } .searchbar { grid-template-columns: 1fr 92px 92px; } .tabs { grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: 12px; } .layout { display: grid; grid-template-columns: minmax(280px, 0.95fr) minmax(360px, 1.35fr); gap: 16px; margin-top: 16px; min-height: 0; } .panel { min-height: 0; max-height: calc(100vh - 286px); overflow: hidden; border: 1px solid var(--color-border); border-radius: var(--radius-default); background: var(--color-surface); padding: 16px; } .stop-list, .departure-list { max-height: calc(100vh - 370px); overflow-y: auto; overscroll-behavior: contain; margin: 14px 0 0; padding: 0; list-style: none; } .stop-list li, .departure-list li { border-top: 1px solid var(--color-border); padding: 12px 0; } .stop-list button { width: 100%; min-height: 0; border: 0; color: inherit; background: transparent; padding: 0; text-align: left; } .stop-list li.selected, .departure-list li.selected { border-left: 4px solid var(--color-accent); background: var(--color-accent-alpha); padding-left: 10px; } .stop-title, .dep-route { display: block; color: var(--color-text-highlight); font-weight: 800; } .stop-subtitle, .dep-meta, #stopMeta, .message { color: var(--color-text-dim); line-height: 1.45; } .mode-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; } .mode-chip { border: 1px solid var(--color-border-light); border-radius: 999px; padding: 2px 7px; color: var(--color-accent-warning); font-size: 0.78rem; font-weight: 800; } .dep-row { display: grid; grid-template-columns: 74px 1fr 70px; gap: 10px; align-items: start; } .dep-time { color: var(--color-accent-warning); font-size: 1.2rem; font-variant-numeric: tabular-nums; font-weight: 900; } .status-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 16px; } .status-grid div { border: 1px solid var(--color-border); border-radius: var(--radius-default); background: var(--color-surface); padding: 12px; } .status-grid span { display: block; color: var(--color-accent-warning); font-weight: 900; overflow-wrap: anywhere; } .status-grid small { color: var(--color-text-dim); text-transform: uppercase; } .message { margin-top: 14px; } .hint { margin-top: 8px; color: var(--color-text-muted); font-size: 0.9rem; } @media (max-width: 820px) { #app { padding: 16px; } .topbar, .panel-head { align-items: start; flex-direction: column; } .layout, .searchbar, .tabs, .status-grid { grid-template-columns: 1fr; } .panel { max-height: none; } .layout { grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); min-height: 0; } .stop-list, .departure-list { max-height: calc((100vh - 410px) / 2); } }