/* ── Design tokens ── */ :root { --bg: #0d0d0d; --surface: #141414; --surface-h: #1a1a1a; --surface-2: #1e1e1e; --border: #232323; --border-2: #333; --text: #e0e0e0; --text-2: #909090; --text-3: #484848; --red: #e10600; --green: #39c73a; --yellow: #ffd600; --purple: #c278ff; --tyre-soft: #ff3333; --tyre-medium: #ffd600; --tyre-hard: #d8d8d8; --tyre-inter: #39b54a; --tyre-wet: #0080ff; --f-ui: system-ui, -apple-system, 'Segoe UI', sans-serif; --f-mono: 'JetBrains Mono', 'Cascadia Code', 'Consolas', monospace; --s1: 2px; --s2: 4px; --s3: 6px; --s4: 10px; --s5: 16px; --s6: 24px; --s7: 40px; --nav-h: 44px; } /* ── Reset ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html, body, #root { height: 100%; } body { background: var(--bg); color: var(--text); font-family: var(--f-ui); font-size: 13px; line-height: 1.5; -webkit-font-smoothing: antialiased; overflow-x: hidden; } a { color: inherit; text-decoration: none; } /* ── Nav ── */ .app-nav { position: sticky; top: 0; z-index: 100; height: var(--nav-h); display: flex; align-items: center; gap: var(--s5); padding: 0 var(--s6); background: var(--surface); border-bottom: 1px solid var(--border); overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; } .app-nav::-webkit-scrollbar { display: none; } .nav-logo { font-family: var(--f-mono); font-size: 15px; font-weight: 700; color: var(--text); letter-spacing: -0.02em; flex-shrink: 0; } .nav-logo em { color: var(--red); font-style: normal; } .nav-links { display: flex; gap: 2px; flex-shrink: 0; } .nav-links a { padding: var(--s2) var(--s4); font-size: 12px; font-weight: 500; color: var(--text-2); border-radius: 2px; transition: color 0.1s, background 0.1s; } .nav-links a:hover { color: var(--text); background: var(--surface-h); } .nav-links a.active { color: var(--text); background: var(--surface-2); } /* ── Page ── */ .page { max-width: 1040px; margin: 0 auto; padding: var(--s5) var(--s6); } /* ── Local data navigator ── */ .nav-panel { margin-bottom: var(--s5); padding-bottom: var(--s5); border-bottom: 1px solid var(--border); } .nav-panel-head { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s4); margin-bottom: var(--s5); } .nav-panel-title { font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-3); } .year-list { display: flex; flex-wrap: wrap; gap: 2px; } .year-btn { padding: 3px 10px; font-family: var(--f-mono); font-size: 12px; font-weight: 700; color: var(--text-2); background: var(--surface); border: 1px solid var(--border-2); border-radius: 2px; cursor: pointer; } .year-btn:hover { color: var(--text); border-color: var(--text-3); } .year-btn.active { color: var(--text); border-color: var(--red); background: rgba(225, 6, 0, 0.08); } .nav-section { margin-bottom: var(--s5); } .nav-section:last-child { margin-bottom: 0; } .nav-section-meta { font-size: 12px; font-family: var(--f-mono); color: var(--text-3); padding: var(--s3) 0; } .nav-table td { white-space: normal; } .nav-row-selected { background: var(--surface-h); } .nav-sub { display: block; font-size: 10px; color: var(--text-3); margin-top: 2px; } .nav-action-btn { padding: 3px 10px; font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--text-2); background: var(--surface); border: 1px solid var(--border-2); border-radius: 2px; cursor: pointer; } .nav-action-btn:hover { color: var(--text); border-color: var(--text-3); } .nav-action-btn.active { color: var(--text); border-color: var(--border-2); background: var(--surface-2); } .nav-action-primary { color: #fff; background: var(--red); border-color: var(--red); } .nav-action-primary:hover { color: #fff; background: #c50500; border-color: #c50500; } .coverage-dots { display: inline-flex; gap: 3px; margin-left: var(--s3); vertical-align: middle; } .coverage-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--text-3); opacity: 0.35; } .coverage-dot.on { background: var(--green); opacity: 1; } /* ── Session input bar ── */ .session-bar { display: flex; align-items: center; gap: var(--s3); padding-bottom: var(--s4); border-bottom: 1px solid var(--border); margin-bottom: var(--s5); flex-wrap: wrap; } .session-bar label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-3); } .session-bar input { width: 110px; min-width: 80px; flex: 0 1 auto; padding: 4px var(--s3); background: var(--surface); border: 1px solid var(--border-2); color: var(--text); font-family: var(--f-mono); font-size: 13px; border-radius: 2px; outline: none; } .session-bar input:focus { border-color: var(--red); } .session-bar button { padding: 4px var(--s5); background: var(--red); color: #fff; border: none; font-size: 11px; font-weight: 700; letter-spacing: 0.05em; border-radius: 2px; cursor: pointer; } .session-bar button:hover { background: #c50500; } /* ── Race Hub header ── */ .rh-header { display: flex; align-items: flex-start; flex-wrap: wrap; gap: var(--s4); padding-bottom: var(--s4); border-bottom: 1px solid var(--border); margin-bottom: var(--s4); } .rh-title-group { flex: 1; min-width: 180px; } .rh-meeting { font-size: 20px; font-weight: 700; line-height: 1.2; } .rh-session { font-size: 13px; color: var(--text-2); margin-top: 3px; } .rh-meta { display: flex; align-items: center; gap: var(--s3); flex-wrap: wrap; margin-top: var(--s3); } .rh-meta-item { font-size: 11px; font-family: var(--f-mono); color: var(--text-3); } /* badges */ .badge { display: inline-flex; align-items: center; padding: 1px 6px; font-size: 10px; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; border-radius: 2px; } .badge-local { background: rgba(57,199,58,.12); color: var(--green); border: 1px solid rgba(57,199,58,.25); } .badge-partial { background: rgba(255,214,0,.12); color: var(--yellow); border: 1px solid rgba(255,214,0,.25); } .badge-none { background: rgba(80,80,80,.12); color: var(--text-3); border: 1px solid var(--border); } /* ── Dataset strip ── */ .dataset-strip { display: flex; flex-wrap: wrap; gap: var(--s4); padding: var(--s3) 0; border-bottom: 1px solid var(--border); margin-bottom: var(--s6); } .ds-item { display: flex; align-items: center; gap: 5px; font-size: 10px; font-family: var(--f-mono); color: var(--text-3); } .ds-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; } .ds-dot-local { background: var(--green); } .ds-dot-missing { background: var(--text-3); opacity: 0.5; } /* ── Section header ── */ .sec-header { display: flex; align-items: baseline; gap: var(--s4); margin-bottom: var(--s3); } .sec-title { font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-3); } .sec-meta { font-size: 10px; font-family: var(--f-mono); color: var(--text-3); } /* ── Data sections ── */ .data-section { margin-bottom: var(--s7); } .scroll-x { overflow-x: auto; -webkit-overflow-scrolling: touch; } /* ── Tables ── */ .data-table { width: 100%; border-collapse: collapse; font-size: 12px; } .data-table th { padding: var(--s2) var(--s3); text-align: left; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); border-bottom: 1px solid var(--border); white-space: nowrap; } .data-table th.r { text-align: right; } .data-table th.c { text-align: center; } .data-table td { padding: var(--s2) var(--s3); border-bottom: 1px solid var(--border); vertical-align: middle; white-space: nowrap; } .data-table tbody tr:last-child td { border-bottom: none; } .data-table tbody tr:hover { background: var(--surface-h); } .data-table td.r { text-align: right; font-family: var(--f-mono); } .data-table td.c { text-align: center; } .data-table td.mono { font-family: var(--f-mono); } /* ── Position badges ── */ .pos-p1 { color: #ffd700; font-weight: 700; font-family: var(--f-mono); } .pos-p2 { color: #c0c0c0; font-weight: 700; font-family: var(--f-mono); } .pos-p3 { color: #cd7f32; font-weight: 700; font-family: var(--f-mono); } .pos-n { color: var(--text-2); font-family: var(--f-mono); } .pos-gain { color: var(--green); font-size: 11px; } .pos-loss { color: var(--red); font-size: 11px; } .pos-same { color: var(--text-3); font-size: 11px; } /* ── Driver cell ── */ .drv-cell { display: flex; align-items: center; gap: var(--s2); } .drv-bar { width: 3px; height: 18px; flex-shrink: 0; border-radius: 1px; } .drv-code { font-family: var(--f-mono); font-size: 12px; font-weight: 700; color: var(--text); min-width: 30px; } .drv-num { font-family: var(--f-mono); font-size: 10px; color: var(--text-3); min-width: 18px; } /* ── Status labels ── */ .status-dnf { color: var(--red); font-size: 10px; font-weight: 700; font-family: var(--f-mono); } .status-dns { color: var(--text-3); font-size: 10px; font-weight: 700; font-family: var(--f-mono); } .status-dsq { color: var(--yellow); font-size: 10px; font-weight: 700; font-family: var(--f-mono); } /* ── Empty / loading states ── */ .empty-state { padding: var(--s7) 0; text-align: center; color: var(--text-3); } .empty-state-title { font-size: 14px; font-weight: 600; color: var(--text-2); margin-bottom: var(--s3); } .empty-state-desc { font-size: 12px; line-height: 1.7; } .empty-state-desc code { font-family: var(--f-mono); font-size: 11px; color: var(--text-3); } .loading-state { padding: var(--s7) 0; text-align: center; font-family: var(--f-mono); font-size: 12px; color: var(--text-3); } .error-box { padding: var(--s4) var(--s5); background: rgba(225,6,0,.07); border: 1px solid rgba(225,6,0,.2); border-radius: 2px; color: #ff6b6b; font-size: 12px; margin-bottom: var(--s5); } /* ── Live timing ── */ .live-page { max-width: 1120px; } .live-banner { display: flex; justify-content: space-between; align-items: center; gap: var(--s5); padding-bottom: var(--s4); border-bottom: 1px solid var(--border); margin-bottom: var(--s5); } .live-banner-main { display: flex; align-items: center; gap: var(--s4); min-width: 0; } .live-banner h1 { font-size: 18px; line-height: 1.2; } .live-banner p { color: var(--text-2); font-size: 12px; } .live-banner-meta { display: flex; align-items: center; justify-content: flex-end; gap: var(--s3); flex-wrap: wrap; } .mono { font-family: var(--f-mono); } .live-conn, .live-state, .track-status, .tyre-badge { display: inline-flex; align-items: center; border-radius: 2px; font-size: 10px; font-weight: 700; letter-spacing: 0.07em; line-height: 1; padding: 4px 7px; text-transform: uppercase; white-space: nowrap; } .live-conn-connected, .live-state-on, .track-green { background: rgba(57,199,58,.12); color: var(--green); border: 1px solid rgba(57,199,58,.25); } .live-conn-connecting { background: rgba(255,214,0,.12); color: var(--yellow); border: 1px solid rgba(255,214,0,.25); } .live-conn-disconnected, .live-conn-error, .live-state { background: rgba(225,6,0,.10); color: #ff6b6b; border: 1px solid rgba(225,6,0,.24); } .track-yellow, .track-sc { background: rgba(255,214,0,.12); color: var(--yellow); border: 1px solid rgba(255,214,0,.25); } .track-red { background: rgba(225,6,0,.12); color: #ff6b6b; border: 1px solid rgba(225,6,0,.25); } .track-vsc { background: rgba(194,120,255,.12); color: var(--purple); border: 1px solid rgba(194,120,255,.25); } .live-tower { font-variant-numeric: tabular-nums; } .live-tower .in-pit td { background: rgba(0, 80, 160, 0.14); } .live-tower .pit-out td { background: rgba(57, 199, 58, 0.10); } .live-tower .retired td { opacity: 0.62; } .pos-delta { color: var(--text-3); font-family: var(--f-mono); } .lap-pb { color: var(--green); } .lap-ob { color: var(--purple); } .badge-pit { background: rgba(0,128,255,.14); color: #66aaff; border: 1px solid rgba(0,128,255,.26); } .badge-out { background: rgba(225,6,0,.12); color: #ff6b6b; border: 1px solid rgba(225,6,0,.24); } .tyre-soft { background: var(--tyre-soft); color: #fff; } .tyre-medium { background: var(--tyre-medium); color: #111; } .tyre-hard { background: var(--tyre-hard); color: #111; } .tyre-inter { background: var(--tyre-inter); color: #fff; } .tyre-wet { background: var(--tyre-wet); color: #fff; } .tyre-unknown { background: var(--surface-2); color: var(--text-2); border: 1px solid var(--border-2); } .live-rc { margin-bottom: var(--s7); } .live-rc-list { border-top: 1px solid var(--border); } .live-rc-row { display: flex; align-items: baseline; gap: var(--s3); padding: var(--s3) 0; border-bottom: 1px solid var(--border); font-size: 12px; } .rc-time, .rc-lap { color: var(--text-3); flex-shrink: 0; font-family: var(--f-mono); font-size: 11px; } .rc-flag { flex-shrink: 0; padding: 1px 5px; background: var(--surface-2); border: 1px solid var(--border-2); border-radius: 2px; font-size: 10px; font-weight: 700; letter-spacing: 0.06em; } .missing-notice { padding: var(--s4) var(--s5); background: var(--surface); border: 1px solid var(--border); border-left: 3px solid var(--text-3); font-size: 12px; color: var(--text-2); margin-bottom: var(--s4); } .missing-notice code { font-family: var(--f-mono); font-size: 11px; color: var(--text-3); } /* ── Data Library ── */ .dl-page { max-width: none; padding: 0; min-height: calc(100vh - var(--nav-h)); display: flex; flex-direction: column; } .dl-page-header { padding: var(--s5) var(--s6); border-bottom: 1px solid var(--border); } .dl-page-title { font-size: 16px; font-weight: 700; } .dl-layout { display: grid; grid-template-columns: 220px 1fr; flex: 1; min-height: 0; } .dl-nav { border-right: 1px solid var(--border); padding: var(--s5); overflow-y: auto; display: flex; flex-direction: column; gap: var(--s5); } .season-list { display: flex; flex-direction: column; gap: 1px; } .season-row { display: flex; align-items: center; gap: var(--s2); padding: 7px var(--s3); border-radius: 2px; font-size: 13px; font-weight: 600; color: var(--text-2); background: none; border: none; cursor: pointer; text-align: left; width: 100%; font-family: var(--f-mono); } .season-row:hover { background: var(--surface-h); color: var(--text); } .season-row.active { background: var(--surface-2); color: var(--text); } .dl-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; border: 1px solid var(--border); } .dl-stat { padding: var(--s3); background: var(--surface); display: flex; flex-direction: column; gap: 2px; } .dl-stat-label { font-size: 9px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-3); } .dl-stat-val { font-family: var(--f-mono); font-size: 16px; font-weight: 700; color: var(--text-2); } .dl-stat-full { color: var(--green); } .dl-stat-partial { color: var(--yellow); } .dl-content { display: flex; flex-direction: column; overflow: hidden; min-width: 0; } .dl-content-header { display: flex; align-items: center; gap: var(--s4); padding: var(--s3) var(--s5); background: var(--surface); border-bottom: 1px solid var(--border); flex-shrink: 0; flex-wrap: wrap; } .dl-content-title { font-size: 13px; font-weight: 700; } .dl-content-meta { font-size: 12px; color: var(--text-3); font-family: var(--f-mono); } .dl-content-body { display: grid; grid-template-columns: 1fr 340px; flex: 1; overflow: hidden; min-height: 0; } .dl-round-scroll { overflow-y: auto; border-right: 1px solid var(--border); } .rounds-table tbody tr { cursor: pointer; } .dl-row-selected { background: var(--surface-h); } .session-icons { display: flex; gap: 3px; align-items: center; flex-wrap: wrap; } .session-icon { min-width: 14px; height: 14px; padding: 0 2px; border-radius: 2px; display: inline-flex; align-items: center; justify-content: center; font-size: 8px; font-weight: 700; font-family: var(--f-mono); } .session-icon.si-full { background: rgba(57,199,58,0.2); color: var(--green); } .session-icon.si-partial { background: rgba(255,214,0,0.2); color: var(--yellow); } .session-icon.si-missing { background: rgba(50,50,50,0.5); color: var(--text-3); } .dl-detail-wrap { overflow-y: auto; } .dl-detail { padding: var(--s4); display: flex; flex-direction: column; gap: var(--s4); } .detail-header { display: flex; flex-direction: column; gap: var(--s2); padding-bottom: var(--s4); border-bottom: 1px solid var(--border); } .detail-header-row { display: flex; align-items: center; gap: var(--s3); flex-wrap: wrap; } .detail-title { font-size: 14px; font-weight: 700; } .detail-meta { font-size: 11px; color: var(--text-3); font-family: var(--f-mono); } .session-detail-row { padding-bottom: var(--s4); border-bottom: 1px solid var(--border); } .session-detail-row:last-of-type { border-bottom: none; } .session-detail-head { display: flex; align-items: center; gap: var(--s3); margin-bottom: var(--s3); font-size: 11px; font-weight: 700; color: var(--text-2); flex-wrap: wrap; } .session-detail-key { font-weight: 400; color: var(--text-3); } .session-detail-coverage { font-weight: 400; color: var(--text-2); margin-left: auto; } .ds-detail-table { font-size: 11px; } .ds-detail-table th { font-size: 9px; } .session-cli { margin-top: var(--s3); } .dl-cli-section { margin-top: var(--s3); } .cli-block { background: var(--surface); border: 1px solid var(--border); border-radius: 2px; padding: var(--s4); } .cli-comment { font-family: var(--f-mono); font-size: 10px; color: var(--text-3); margin-bottom: var(--s2); } .cli-cmd-row { display: flex; align-items: center; gap: var(--s3); } .cli-cmd { flex: 1; font-family: var(--f-mono); font-size: 11px; color: var(--text); word-break: break-all; } .cli-copy-btn { flex-shrink: 0; padding: 2px 8px; background: none; border: 1px solid var(--border-2); border-radius: 2px; font-size: 10px; font-weight: 600; color: var(--text-3); letter-spacing: 0.04em; text-transform: uppercase; cursor: pointer; } .cli-copy-btn:hover { border-color: var(--green); color: var(--green); } .cli-spacer { height: var(--s4); } .dl-footer-link { padding: var(--s4) var(--s6); border-top: 1px solid var(--border); font-size: 12px; color: var(--text-3); } .dl-footer-link a:hover { color: var(--text); } .dl-page .empty-state, .dl-page .missing-notice, .dl-page .loading-state, .dl-page .error-box { margin: var(--s5) var(--s6); } .dl-page .dl-cli-section { margin: 0 var(--s6) var(--s6); } /* ── Tab bar ── */ .tab-bar { display: flex; border-bottom: 1px solid var(--border); margin-bottom: var(--s5); overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; } .tab-bar::-webkit-scrollbar { display: none; } .tab-btn { padding: 8px 14px; font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-3); background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer; white-space: nowrap; transition: color 0.1s; margin-bottom: -1px; flex-shrink: 0; } .tab-btn:hover { color: var(--text-2); } .tab-btn.active { color: var(--text); border-bottom-color: var(--red); } /* ── Dataset status view ── */ .ds-legend { display: flex; align-items: center; gap: var(--s5); margin-bottom: var(--s5); font-size: 12px; color: var(--text-2); } .ds-legend code { font-family: var(--f-mono); font-size: 11px; color: var(--text-3); } /* ── Strategy / position views ── */ .analysis-notice { padding: var(--s4) var(--s5); background: var(--surface); border: 1px solid var(--border); border-left: 3px solid var(--border-2); font-size: 12px; color: var(--text-2); margin-bottom: var(--s5); max-width: 560px; } .analysis-notice strong { color: var(--text); } .analysis-notice code { font-family: var(--f-mono); font-size: 11px; color: var(--text-3); } /* ── Command Center ── */ .cc-page { max-width: 1120px; margin: 0 auto; padding: var(--s5) var(--s6); min-height: calc(100vh - var(--nav-h)); } .cc-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s5); margin-bottom: var(--s5); padding-bottom: var(--s5); border-bottom: 1px solid var(--border); } .cc-title { font-size: 16px; font-weight: 700; margin-bottom: 2px; } .cc-subtitle { font-size: 12px; font-family: var(--f-mono); color: var(--text-3); } .cc-live-pill { display: flex; align-items: center; gap: var(--s3); font-size: 11px; font-family: var(--f-mono); color: var(--text-2); white-space: nowrap; } .cc-live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-3); flex-shrink: 0; } .cc-live-dot.live { background: var(--red); box-shadow: 0 0 6px rgba(225, 6, 0, 0.6); } .badge-live { background: rgba(225, 6, 0, 0.15); color: var(--red); border: 1px solid rgba(225, 6, 0, 0.35); } .cc-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; border: 1px solid var(--border); margin-bottom: var(--s5); } .cc-stat { padding: var(--s4); background: var(--surface); display: flex; flex-direction: column; gap: 2px; } .cc-stat-label { font-size: 9px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-3); } .cc-stat-val { font-family: var(--f-mono); font-size: 18px; font-weight: 700; color: var(--text-2); } .cc-stat-full { color: var(--green); } .cc-stat-partial { color: var(--yellow); } .cc-grid { display: grid; grid-template-columns: 1fr; gap: var(--s5); align-items: start; } .cc-panel { background: var(--surface); border: 1px solid var(--border); padding: var(--s5); } .cc-side { display: flex; flex-direction: column; gap: var(--s5); } .cc-focus-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s4); margin-bottom: var(--s4); } .cc-focus-name { font-size: 15px; font-weight: 700; margin-bottom: 2px; } .cc-focus-meta { font-size: 11px; color: var(--text-3); } .cc-circuit { font-size: 11px; color: var(--text-2); padding: 2px 8px; border: 1px solid var(--border); border-radius: 2px; } .cc-focus-status { margin-bottom: var(--s5); display: flex; flex-direction: column; gap: var(--s3); } .cc-status-row { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s3); font-size: 12px; color: var(--text-2); } .cc-status-row.muted { color: var(--text-3); } .cc-status-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-3); } .cc-status-value { font-weight: 600; color: var(--text); } .cc-countdown { font-size: 13px; font-weight: 700; color: var(--red); } .cc-schedule-table { margin-top: var(--s3); } .cc-schedule-table .badge { margin-left: var(--s3); } .cc-session-type { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; padding: 1px 4px; margin-right: var(--s3); font-family: var(--f-mono); font-size: 10px; font-weight: 700; color: var(--text-3); background: var(--surface-2); border: 1px solid var(--border); border-radius: 2px; } .cc-row-live td { background: rgba(225, 6, 0, 0.06); } .cc-row-next td { background: rgba(255, 214, 0, 0.04); } .cc-actions { display: flex; flex-direction: column; gap: 1px; border: 1px solid var(--border); } .cc-action { display: flex; flex-direction: column; gap: 2px; padding: var(--s4); background: var(--surface-h); transition: background 0.1s; } .cc-action:hover { background: var(--surface-2); } .cc-action-label { font-size: 13px; font-weight: 600; color: var(--text); } .cc-action-meta { font-size: 11px; font-family: var(--f-mono); color: var(--text-3); } .cc-session-list { display: flex; flex-direction: column; gap: 1px; border: 1px solid var(--border); } .cc-session-row { display: flex; align-items: center; justify-content: space-between; gap: var(--s4); padding: var(--s3) var(--s4); background: var(--surface-h); transition: background 0.1s; } .cc-session-row:hover { background: var(--surface-2); } .cc-session-row-title { font-size: 12px; font-weight: 600; } .cc-session-row-meta { font-size: 10px; color: var(--text-3); margin-top: 1px; } .cc-side-empty, .cc-cli-section { font-size: 12px; color: var(--text-3); } .mono { font-family: var(--f-mono); } @media (min-width: 1101px) { .cc-grid { grid-template-columns: minmax(0, 1.6fr) minmax(260px, 1fr); } } /* ── Mobile ── */ @media (max-width: 640px) { .page { padding: var(--s3); } .app-nav { padding: 0 var(--s4); gap: var(--s3); } .nav-logo { font-size: 14px; } .nav-links a { padding: var(--s2) var(--s3); font-size: 11px; } .rh-meeting { font-size: 17px; } .session-bar input { flex: 1; max-width: 140px; } .live-banner { flex-direction: column; align-items: flex-start; gap: var(--s3); } .live-banner-meta { justify-content: flex-start; width: 100%; } .live-banner h1 { font-size: 16px; } .dataset-strip { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; gap: var(--s3); padding-bottom: var(--s2); } .dataset-strip::-webkit-scrollbar { display: none; } /* On narrow screens, hide lower-priority table columns */ .hide-mobile { display: none; } .data-table { min-width: 100% !important; } .data-table th, .data-table td { padding: var(--s2); } .drv-code { min-width: 24px; } .drv-num { min-width: 14px; } .dl-layout { grid-template-columns: 1fr; } .dl-nav { border-right: none; border-bottom: 1px solid var(--border); } .season-list { flex-direction: row; flex-wrap: wrap; gap: var(--s2); } .dl-content-body { grid-template-columns: 1fr; } .dl-round-scroll { border-right: none; max-height: 40vh; } .dl-detail-wrap { border-top: 1px solid var(--border); } .dl-content-header { padding: var(--s3) var(--s4); } .dl-content-meta { font-size: 11px; } .cc-page { padding: var(--s4); } .cc-header { flex-direction: column; align-items: flex-start; } .cc-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } }