mirror of
https://github.com/AmanTahiliani/box-box.git
synced 2026-08-07 19:56:18 -04:00
Merge phase-1 (radio ticker, tyre-deg panel, hero) into event-rail branch
This commit is contained in:
76
frontend/src/styles/delta-graph.css
Normal file
76
frontend/src/styles/delta-graph.css
Normal file
@@ -0,0 +1,76 @@
|
||||
.delta-graph {
|
||||
width: 100%;
|
||||
min-width: 280px;
|
||||
max-width: 640px;
|
||||
}
|
||||
|
||||
.delta-graph-svg {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.delta-graph-empty {
|
||||
padding: 1.5rem 1rem;
|
||||
text-align: center;
|
||||
color: var(--text-3);
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.delta-graph-zero-line {
|
||||
stroke: var(--text-3);
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: 4 3;
|
||||
}
|
||||
|
||||
.delta-graph-grid-line {
|
||||
stroke: var(--border);
|
||||
stroke-width: 0.5;
|
||||
}
|
||||
|
||||
.delta-graph-axis-label {
|
||||
fill: var(--text-3);
|
||||
font-family: var(--f-mono);
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.delta-graph-driver-line {
|
||||
fill: none;
|
||||
stroke-width: 2;
|
||||
stroke-linejoin: round;
|
||||
stroke-linecap: round;
|
||||
}
|
||||
|
||||
.delta-graph-crosshair {
|
||||
stroke: var(--text-2);
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: 3 3;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.delta-graph-hover-layer {
|
||||
cursor: crosshair;
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
.delta-graph-tooltip {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.delta-graph-tooltip-bg {
|
||||
fill: var(--bg-elevated, var(--bg));
|
||||
stroke: var(--border);
|
||||
stroke-width: 1;
|
||||
}
|
||||
|
||||
.delta-graph-tooltip-title {
|
||||
fill: var(--text-1);
|
||||
font-family: var(--f-mono);
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.delta-graph-tooltip-row {
|
||||
fill: var(--text-2);
|
||||
font-family: var(--f-mono);
|
||||
font-size: 9px;
|
||||
}
|
||||
373
frontend/src/styles/hero.css
Normal file
373
frontend/src/styles/hero.css
Normal file
@@ -0,0 +1,373 @@
|
||||
.hero-panel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s4);
|
||||
}
|
||||
|
||||
.hero-card {
|
||||
display: flex;
|
||||
background: var(--surface);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
min-height: 124px;
|
||||
}
|
||||
|
||||
.hero-accent {
|
||||
width: 4px;
|
||||
flex-shrink: 0;
|
||||
box-shadow: 0 0 12px var(--hero-accent, var(--gp-accent));
|
||||
background: var(--hero-accent, var(--gp-accent));
|
||||
}
|
||||
|
||||
.hero-accent--live {
|
||||
animation: hero-pulse 1.4s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes hero-pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.55; }
|
||||
}
|
||||
|
||||
.hero-body {
|
||||
flex: 1;
|
||||
padding: var(--s5);
|
||||
min-width: 0;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background:
|
||||
radial-gradient(ellipse at top right, color-mix(in srgb, var(--gp-accent) 15%, transparent), transparent 60%),
|
||||
linear-gradient(to right, rgba(255, 255, 255, 0.03) 1px, transparent 1px),
|
||||
linear-gradient(to bottom, rgba(255, 255, 255, 0.03) 1px, transparent 1px),
|
||||
var(--surface);
|
||||
background-size: 100% 100%, 20px 20px, 20px 20px, 100% 100%;
|
||||
}
|
||||
|
||||
.hero-body::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.3) 100%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s5);
|
||||
}
|
||||
|
||||
.hero-row {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
gap: var(--s6);
|
||||
min-width: 0;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.hero-identity {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.hero-decal {
|
||||
font-size: 56px;
|
||||
font-weight: 800;
|
||||
line-height: 0.85;
|
||||
letter-spacing: -0.04em;
|
||||
color: color-mix(in srgb, var(--gp-accent) 35%, var(--text-3));
|
||||
opacity: 0.9;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.hero-eyebrow {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.14em;
|
||||
text-transform: uppercase;
|
||||
color: var(--text-3);
|
||||
margin-bottom: var(--s2);
|
||||
}
|
||||
|
||||
.hero-eyebrow--live {
|
||||
color: var(--red);
|
||||
}
|
||||
|
||||
.hero-title {
|
||||
font-size: 28px;
|
||||
font-weight: 800;
|
||||
letter-spacing: -0.02em;
|
||||
line-height: 1.1;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.hero-sub {
|
||||
font-size: 12px;
|
||||
color: var(--text-2);
|
||||
margin-top: var(--s2);
|
||||
}
|
||||
|
||||
.hero-countdown {
|
||||
text-align: right;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.hero-cd-label {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: var(--text-3);
|
||||
margin-bottom: var(--s2);
|
||||
}
|
||||
|
||||
.hero-cd-value {
|
||||
font-size: 22px;
|
||||
font-weight: 700;
|
||||
font-variant-numeric: tabular-nums;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.hero-cd-value--live {
|
||||
color: var(--red);
|
||||
font-size: 28px;
|
||||
letter-spacing: 0.08em;
|
||||
}
|
||||
|
||||
.hero-cd-sub {
|
||||
font-size: 11px;
|
||||
color: var(--text-3);
|
||||
margin-top: var(--s2);
|
||||
}
|
||||
|
||||
.hero-track-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
padding: var(--s2) var(--s3);
|
||||
border-radius: 4px;
|
||||
margin-top: var(--s3);
|
||||
}
|
||||
|
||||
.hero-track-status--green { color: #3dd68c; background: rgba(61, 214, 140, 0.1); }
|
||||
.hero-track-status--yellow { color: #f5c842; background: rgba(245, 200, 66, 0.1); }
|
||||
.hero-track-status--sc,
|
||||
.hero-track-status--vsc { color: #f5a623; background: rgba(245, 166, 35, 0.12); }
|
||||
.hero-track-status--red { color: var(--red); background: rgba(225, 6, 0, 0.12); }
|
||||
.hero-track-status--unknown { color: var(--text-3); background: rgba(255, 255, 255, 0.05); }
|
||||
|
||||
.hero-timing {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s2);
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.hero-timing-row {
|
||||
display: grid;
|
||||
grid-template-columns: 28px 1fr auto;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
padding: var(--s2) var(--s3);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
border-radius: 6px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.hero-timing-pos {
|
||||
font-weight: 700;
|
||||
color: var(--text-3);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.hero-timing-pos--p1 { color: #ffd700; }
|
||||
.hero-timing-pos--p2 { color: #c0c0c0; }
|
||||
.hero-timing-pos--p3 { color: #cd7f32; }
|
||||
|
||||
.hero-timing-bar {
|
||||
width: 3px;
|
||||
height: 14px;
|
||||
border-radius: 2px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.hero-timing-driver {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
font-weight: 600;
|
||||
font-family: var(--f-mono);
|
||||
}
|
||||
|
||||
.hero-timing-gap {
|
||||
font-size: 11px;
|
||||
color: var(--text-3);
|
||||
font-family: var(--f-mono);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.hero-cta {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
color: var(--red);
|
||||
text-decoration: none;
|
||||
transition: opacity 0.1s;
|
||||
}
|
||||
|
||||
.hero-cta:hover {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.hero-cta--primary {
|
||||
padding: var(--s3) var(--s5);
|
||||
background: rgba(225, 6, 0, 0.12);
|
||||
border: 1px solid rgba(225, 6, 0, 0.35);
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.hero-actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--s3);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.hero-secondary-link {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: var(--text-2);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.hero-secondary-link:hover {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.hero-schedule-strip {
|
||||
display: flex;
|
||||
gap: var(--s3);
|
||||
overflow-x: auto;
|
||||
padding-bottom: var(--s2);
|
||||
}
|
||||
|
||||
.hero-schedule-card {
|
||||
flex: 0 0 auto;
|
||||
min-width: 120px;
|
||||
padding: var(--s3) var(--s4);
|
||||
border-radius: 6px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
background: rgba(255, 255, 255, 0.02);
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
transition: background 0.1s, border-color 0.1s;
|
||||
}
|
||||
|
||||
.hero-schedule-card:hover {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.hero-schedule-card.is-next {
|
||||
border-color: color-mix(in srgb, var(--gp-accent) 50%, transparent);
|
||||
background: color-mix(in srgb, var(--gp-accent) 8%, transparent);
|
||||
}
|
||||
|
||||
.hero-schedule-card.is-done {
|
||||
opacity: 0.55;
|
||||
}
|
||||
|
||||
.hero-schedule-card.is-live {
|
||||
border-color: rgba(225, 6, 0, 0.4);
|
||||
background: rgba(225, 6, 0, 0.08);
|
||||
}
|
||||
|
||||
.hero-schedule-abbrev {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.1em;
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
.hero-schedule-name {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin: var(--s2) 0;
|
||||
}
|
||||
|
||||
.hero-schedule-time {
|
||||
font-size: 10px;
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
.hero-schedule-marker {
|
||||
font-size: 9px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
margin-top: var(--s2);
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
.hero-schedule-marker--next { color: var(--gp-accent); }
|
||||
.hero-schedule-marker--live { color: var(--red); }
|
||||
|
||||
.hero-podium {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s2);
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.hero-podium-row {
|
||||
display: grid;
|
||||
grid-template-columns: 32px 1fr;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
padding: var(--s2) var(--s3);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
border-radius: 6px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.hero-podium-pos {
|
||||
font-weight: 700;
|
||||
font-family: var(--f-mono);
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
.hero-podium-pos--p1 { color: #ffd700; }
|
||||
.hero-podium-pos--p2 { color: #c0c0c0; }
|
||||
.hero-podium-pos--p3 { color: #cd7f32; }
|
||||
|
||||
.hero-podium-driver {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
font-weight: 600;
|
||||
font-family: var(--f-mono);
|
||||
}
|
||||
|
||||
.hero-between-next {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s4);
|
||||
}
|
||||
|
||||
.hero-flag {
|
||||
font-size: 32px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
@media (min-width: 700px) {
|
||||
.hero-row {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
}
|
||||
94
frontend/src/styles/stint-timeline.css
Normal file
94
frontend/src/styles/stint-timeline.css
Normal file
@@ -0,0 +1,94 @@
|
||||
.stint-timeline {
|
||||
--stint-left: 48px;
|
||||
--stint-right: 12px;
|
||||
--stint-row-h: 28px;
|
||||
--stint-bar-h: 14px;
|
||||
--stint-axis-h: 20px;
|
||||
}
|
||||
|
||||
.stint-timeline__scroll {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.stint-timeline__svg {
|
||||
width: 100%;
|
||||
min-width: 280px;
|
||||
max-width: 640px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.stint-timeline__label {
|
||||
font-family: var(--f-mono);
|
||||
font-weight: 700;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.stint-timeline__bar {
|
||||
stroke: none;
|
||||
}
|
||||
|
||||
.stint-timeline__bar.tyre-soft { fill: var(--tyre-soft); }
|
||||
.stint-timeline__bar.tyre-medium { fill: var(--tyre-medium); }
|
||||
.stint-timeline__bar.tyre-hard { fill: var(--tyre-hard); stroke: #555; stroke-width: 0.5; }
|
||||
.stint-timeline__bar.tyre-inter { fill: var(--tyre-inter); }
|
||||
.stint-timeline__bar.tyre-wet { fill: var(--tyre-wet); }
|
||||
.stint-timeline__bar.tyre-unknown { fill: var(--surface-2); stroke: var(--border-2); stroke-width: 0.5; }
|
||||
|
||||
.stint-timeline__bar--new {
|
||||
stroke: var(--text);
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: 2 1;
|
||||
}
|
||||
|
||||
.stint-timeline__axis-tick {
|
||||
font-family: var(--f-mono);
|
||||
font-size: 9px;
|
||||
fill: var(--text-3);
|
||||
}
|
||||
|
||||
.stint-timeline__axis-line {
|
||||
stroke: var(--border-2);
|
||||
stroke-width: 1;
|
||||
}
|
||||
|
||||
.stint-timeline__legend {
|
||||
display: flex;
|
||||
gap: var(--s4);
|
||||
flex-wrap: wrap;
|
||||
margin-top: var(--s4);
|
||||
font-size: 11px;
|
||||
color: var(--text-3);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.stint-timeline__legend-swatch {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.stint-timeline__legend-swatch.tyre-hard {
|
||||
border: 1px solid #555;
|
||||
}
|
||||
|
||||
.stint-timeline__legend-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.stint-timeline__meta {
|
||||
margin-left: auto;
|
||||
font-family: var(--f-mono);
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.stint-timeline__empty {
|
||||
padding: var(--s5);
|
||||
color: var(--text-3);
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
border: 1px dashed var(--border-2);
|
||||
border-radius: var(--r2);
|
||||
}
|
||||
82
frontend/src/styles/team-radio.css
Normal file
82
frontend/src/styles/team-radio.css
Normal file
@@ -0,0 +1,82 @@
|
||||
.team-radio {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.team-radio-audio {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.team-radio-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
max-height: 260px;
|
||||
overflow-y: auto;
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
.team-radio-row {
|
||||
display: grid;
|
||||
grid-template-columns: 28px minmax(44px, 56px) minmax(68px, 1fr);
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
min-height: 34px;
|
||||
padding: 6px 0;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
|
||||
.team-radio-row:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.team-radio-play {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
padding: 0;
|
||||
border: 1px solid rgba(255, 255, 255, 0.18);
|
||||
border-radius: 50%;
|
||||
color: var(--text-1);
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.team-radio-play:hover:not(:disabled),
|
||||
.team-radio-play:focus-visible:not(:disabled) {
|
||||
border-color: rgba(255, 255, 255, 0.36);
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
}
|
||||
|
||||
.team-radio-play:disabled {
|
||||
color: var(--text-3);
|
||||
cursor: not-allowed;
|
||||
opacity: 0.55;
|
||||
}
|
||||
|
||||
.team-radio-driver {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 44px;
|
||||
height: 24px;
|
||||
border-left: 3px solid var(--text-3);
|
||||
color: var(--text-1);
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.team-radio-time {
|
||||
min-width: 0;
|
||||
color: var(--text-2);
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
}
|
||||
101
frontend/src/styles/telemetry-trace.css
Normal file
101
frontend/src/styles/telemetry-trace.css
Normal file
@@ -0,0 +1,101 @@
|
||||
.telemetry-trace {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.telemetry-trace-empty {
|
||||
padding: 24px;
|
||||
text-align: center;
|
||||
color: var(--text-3);
|
||||
font-size: 13px;
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.telemetry-trace-legend {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 14px;
|
||||
font-size: 12px;
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
.telemetry-trace-legend-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.telemetry-trace-swatch {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.telemetry-trace-svg {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.telemetry-trace-panel-bg {
|
||||
fill: var(--surface);
|
||||
stroke: var(--border);
|
||||
stroke-width: 1;
|
||||
rx: 4;
|
||||
}
|
||||
|
||||
.telemetry-trace-panel-title {
|
||||
fill: var(--text-2);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
|
||||
.telemetry-trace-axis-max {
|
||||
fill: var(--text-3);
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.telemetry-trace-crosshair {
|
||||
stroke: var(--text-2);
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: 3 3;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.telemetry-trace-readout {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 6px 10px;
|
||||
font-size: 12px;
|
||||
color: var(--text-2);
|
||||
background: var(--surface-h);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.telemetry-trace-readout-index {
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
.telemetry-trace-readout-driver {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.telemetry-trace-readout-label {
|
||||
color: var(--text);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.telemetry-trace-readout-value {
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
84
frontend/src/styles/tyredeg.css
Normal file
84
frontend/src/styles/tyredeg.css
Normal file
@@ -0,0 +1,84 @@
|
||||
/* Live tyre-degradation & pit-window panel (see components/live/TyreDegPanel.tsx) */
|
||||
|
||||
.live-tyredeg-panel {
|
||||
margin-bottom: var(--s5);
|
||||
}
|
||||
|
||||
.tyredeg-toggle {
|
||||
width: 100%;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.tyredeg-chevron {
|
||||
margin-left: auto;
|
||||
font-size: 10px;
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
.tyredeg-rows {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 3px;
|
||||
}
|
||||
|
||||
.tyredeg-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s4);
|
||||
padding: var(--s2) var(--s4);
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 3px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.tyredeg-row .drv-bar { height: 16px; }
|
||||
|
||||
.tyredeg-pos {
|
||||
min-width: 28px;
|
||||
color: var(--text-2);
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.tyredeg-spark { display: block; }
|
||||
.tyredeg-spark-empty { color: var(--text-3); }
|
||||
|
||||
.tyredeg-trend { display: inline-flex; align-items: center; }
|
||||
.tyredeg-trend-improving { color: var(--green); }
|
||||
.tyredeg-trend-stable { color: var(--text-3); }
|
||||
.tyredeg-trend-degrading { color: #ff6b6b; }
|
||||
|
||||
.tyredeg-slope {
|
||||
min-width: 78px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.tyredeg-warmup {
|
||||
color: var(--text-3);
|
||||
font-size: 11px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.tyredeg-rejoin {
|
||||
margin-left: auto;
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
gap: var(--s3);
|
||||
color: var(--text-2);
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tyredeg-rejoin-between {
|
||||
color: var(--text-3);
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.tyredeg-rejoin-between { display: none; }
|
||||
.tyredeg-slope { min-width: 0; }
|
||||
}
|
||||
Reference in New Issue
Block a user