:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--bg: #f3f6f8;--surface: #ffffff;--surface-subtle: #eef3f5;--text: #17222b;--muted: #64717d;--line: #dbe3e7;--brand: #0b8390;--brand-dark: #075e67;--green: #21845a;--green-soft: #e2f4eb;--red: #b73b48;--red-soft: #fbe8ea;--amber: #a86408;--amber-soft: #fff1d6;--shadow: 0 8px 24px rgba(28, 47, 58, .07)}*{box-sizing:border-box}html{max-width:100%;overflow-x:hidden}body{margin:0;min-width:320px;background:var(--bg);color:var(--text)}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}.app-shell{min-height:100vh;padding-bottom:78px}.site-header{position:sticky;top:0;z-index:10;border-bottom:1px solid var(--line);background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.header-inner{min-height:66px;padding:9px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand-button{border:0;background:transparent;padding:0;display:flex;align-items:center}.brand-button img{width:132px;max-height:45px;object-fit:contain}.desktop-nav{display:none}.connection-state{min-height:34px;border:1px solid #b8dfce;border-radius:999px;background:var(--green-soft);color:var(--green);padding:0 10px;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:800;white-space:nowrap}.connection-state.offline{border-color:#efc7cc;background:var(--red-soft);color:var(--red)}.connection-state time{display:none;color:var(--muted);font-weight:600}.content{width:min(1280px,100%);margin:0 auto;padding:16px 14px 28px}.page-stack{display:grid;gap:14px}.race-day-intro,.page-heading{padding:8px 2px 2px}.race-day-intro p,.page-heading p{margin:0 0 4px;color:var(--brand);font-size:12px;font-weight:900;text-transform:uppercase}.race-day-intro h1,.page-heading h1{margin:0;font-size:clamp(30px,8vw,48px);line-height:1.05;letter-spacing:0}.race-day-intro>span{display:block;margin-top:8px;color:var(--muted);line-height:1.5}.notice{border:1px solid #e8c984;border-radius:6px;background:var(--amber-soft);color:#744506;padding:11px 12px;margin-bottom:14px}.section{border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);padding:14px;min-width:0}.section.priority-section{border-top:4px solid var(--brand)}.section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px}.section-header h2{margin:0;font-size:19px;letter-spacing:0}.section-header p{margin:4px 0 0;color:var(--muted);font-size:13px}.race-day-grid,.ranking-grid{display:grid;gap:14px}.active-race-list{display:grid;gap:12px}.active-race{border:1px solid #b8dfe2;border-radius:8px;background:#f7fcfc;overflow:hidden}.active-race-main{padding:14px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.race-timer{padding:15px 14px;border-top:1px solid #d5eaec;border-bottom:1px solid #d5eaec;background:#eaf7f8;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.race-timer span{color:var(--muted);font-size:13px}.race-timer strong{font-size:clamp(30px,10vw,48px);color:var(--brand-dark);font-variant-numeric:tabular-nums}.race-details{padding:11px 14px;display:grid;gap:8px;color:var(--muted);font-size:13px}.race-details span{display:flex;align-items:center;gap:7px}.car-name{min-width:0;display:grid;gap:2px}.car-name strong{overflow-wrap:anywhere}.car-name span{color:var(--muted);font-size:13px;overflow-wrap:anywhere}.car-name.large strong{font-size:22px}.status-badge{width:fit-content;border-radius:999px;background:var(--surface-subtle);color:var(--muted);padding:5px 9px;font-size:11px;font-weight:900;text-transform:uppercase;white-space:nowrap}.status-badge.started{background:var(--green-soft);color:var(--green)}.status-badge.finished{background:#e6f0fb;color:#2563a7}.status-badge.cancelled,.status-badge.canceled{background:var(--red-soft);color:var(--red)}.recent-race-list,.results-list{display:grid;gap:8px}.recent-race{min-height:68px;border-bottom:1px solid var(--line);padding:8px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;align-items:center}.recent-race:last-child{border-bottom:0}.recent-race .status-badge{grid-row:2}.recent-race-value{grid-column:2;grid-row:1 / span 2;text-align:right;display:grid;gap:2px}.recent-race-value strong{font-size:19px;font-variant-numeric:tabular-nums}.recent-race-value span{color:var(--muted);font-size:12px}.ranking-list{list-style:none;margin:0;padding:0;display:grid}.ranking-list li{min-height:60px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:30px minmax(0,1fr) auto auto;align-items:center;gap:9px}.ranking-list li:last-child{border-bottom:0}.ranking-list .rank{width:26px;height:26px;border-radius:50%;background:var(--surface-subtle);color:var(--brand-dark);display:grid;place-items:center;font-weight:900}.ranking-list svg{color:var(--amber)}.result-row{border:1px solid var(--line);border-radius:8px;padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.result-row>.car-name{grid-column:1 / -1;padding-bottom:9px;border-bottom:1px solid var(--line)}.result-row>div:not(.car-name){display:grid;gap:3px;min-width:0}.result-row>div>span:first-child{color:var(--muted);font-size:11px;text-transform:uppercase;font-weight:800}.result-row>div>strong{font-size:14px;overflow-wrap:anywhere}.race-results{display:grid;gap:12px}.results-filters{display:grid;gap:10px}.results-filters label{min-width:0;display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:800}.results-filters input,.results-filters select{width:100%;min-width:0;height:44px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text);padding:0 11px;font:inherit}.results-filters input:focus,.results-filters select:focus{outline:2px solid rgba(11,131,144,.2);border-color:var(--brand)}.filter-search>div{position:relative}.filter-search svg{position:absolute;left:11px;top:50%;color:var(--muted);transform:translateY(-50%);pointer-events:none}.filter-search input{padding-left:36px}.clear-filters{width:100%;height:44px;align-self:end;border:1px solid var(--line);border-radius:6px;background:var(--surface-subtle);color:var(--brand-dark);display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:800}.results-count{color:var(--muted);font-size:13px}.pagination{min-height:48px;border-top:1px solid var(--line);padding-top:12px;display:flex;align-items:center;justify-content:center;gap:14px}.pagination button{width:42px;height:42px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--brand-dark);display:grid;place-items:center}.pagination button:disabled{color:#aab4bb;background:var(--surface-subtle);cursor:default}.pagination span{color:var(--muted);font-size:13px}.pagination strong{color:var(--text)}.wind-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.wind-summary>div{min-height:96px;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:12px;display:grid;gap:5px;align-content:center}.wind-summary>div:last-child{grid-column:1 / -1;min-height:72px}.wind-summary svg{color:var(--brand)}.wind-summary span{color:var(--muted);font-size:12px}.wind-summary strong{font-size:24px}.wind-reading-list{display:grid}.wind-reading-list>div{min-height:58px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px}.wind-reading-list>div:last-child{border-bottom:0}.wind-reading-list .direction{display:inline-flex;align-items:center;gap:4px;color:var(--muted)}.wind-chart-shell{display:grid;grid-template-columns:44px minmax(0,1fr);gap:7px}.chart-scale{padding:3px 0 24px;color:var(--muted);font-size:11px;display:flex;flex-direction:column;justify-content:space-between;text-align:right}.chart-area{position:relative;min-width:0}.chart-area svg{width:100%;height:220px;border:1px solid var(--line);border-radius:6px;background:#fbfcfd;touch-action:none}.chart-area line{stroke:#e4eaed;stroke-width:.3}.chart-area path{fill:none;stroke-width:1.35;vector-effect:non-scaling-stroke}.chart-area .hover-line{stroke:#52626d;stroke-width:.5}.chart-tooltip{position:absolute;top:10px;z-index:2;max-width:190px;border:1px solid var(--line);border-radius:6px;background:#fffffff5;box-shadow:var(--shadow);padding:8px;display:grid;gap:4px;font-size:12px;pointer-events:none}.chart-tooltip span,.chart-legend span{display:flex;align-items:center;gap:6px}.chart-tooltip i,.chart-legend i{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.chart-legend{grid-column:1 / -1;display:flex;gap:8px 14px;flex-wrap:wrap;padding-top:6px;color:var(--muted);font-size:12px}.snapshot-grid{display:grid;gap:12px}.snapshot-card{border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}.snapshot-card img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;background:var(--surface-subtle)}.snapshot-card div{padding:11px 12px;display:grid;gap:3px}.snapshot-card span{color:var(--muted);font-size:13px}.empty-state{min-height:150px;border:1px dashed #cbd6db;border-radius:8px;background:#fafcfc;color:var(--muted);display:grid;place-items:center;align-content:center;gap:7px;padding:20px;text-align:center}.empty-state strong{color:var(--text)}.empty-state.compact{min-height:82px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;min-height:68px;border-top:1px solid var(--line);background:#fffffffa;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-item{min-width:0;border:0;background:transparent;color:var(--muted);padding:8px 3px 6px;display:grid;place-items:center;gap:3px}.bottom-nav-item span{max-width:100%;font-size:10px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-nav-item.active{color:var(--brand-dark)}@media(min-width:700px){.app-shell{padding-bottom:0}.header-inner{min-height:76px;padding:10px 24px}.brand-button img{width:168px}.connection-state time{display:inline}.desktop-nav{display:flex;align-items:center;gap:4px;margin-left:auto}.desktop-nav-item{min-height:40px;border:0;border-radius:6px;background:transparent;color:var(--muted);padding:0 12px;font-weight:800}.desktop-nav-item.active,.desktop-nav-item:hover{color:var(--brand-dark);background:var(--surface-subtle)}.bottom-nav{display:none}.content{padding:24px 24px 44px}.race-day-grid,.ranking-grid,.active-race-list,.snapshot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wind-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.wind-summary>div:last-child{grid-column:auto;min-height:96px}.result-row{grid-template-columns:minmax(180px,1.4fr) repeat(6,minmax(105px,1fr));align-items:center}.result-row>.car-name{grid-column:auto;padding:0;border:0}.results-filters{grid-template-columns:minmax(220px,1.5fr) minmax(150px,.7fr) minmax(170px,.8fr) auto;align-items:end}.clear-filters{width:auto;padding:0 14px}}@media(min-width:1100px){.header-inner{width:min(1280px,100%);margin:0 auto}.section{padding:18px}.active-race-list,.snapshot-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.chart-area svg{height:300px}}
