@tailwind base;@tailwind components;@tailwind utilities;body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f3f4f6;color:#111827}nav a button{background:#2563eb;color:#fff;border:none;padding:8px 14px;border-radius:10px;cursor:pointer}nav a button:hover{background:#1d4ed8}table{border-collapse:collapse;width:100%;background:#fff;border-radius:12px;overflow:hidden}th,td{padding:10px 12px}th{background:#f9fafb;text-align:left;font-weight:600}tr:nth-child(2n){background:#f3f4f6}.bg-green-100{background:#dcfce7!important}.text-green-600{color:#16a34a!important}.text-red-600{color:#dc2626!important}.text-gray-500{color:#6b7280!important}body{font-family:system-ui;margin:0;background:#f3f4f6}.menu{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#111827;padding:10px}.menu nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 0;min-width:0}.menu a{color:#fff;margin-right:10px;text-decoration:none}.menu a.active{font-weight:700;text-decoration:underline}.card{background:#fff;margin:16px;padding:16px;border-radius:12px}.space{display:grid;gap:16px}table{width:100%;border-collapse:collapse}td,th{padding:8px;border-bottom:1px solid #e5e7eb}.mapBlock{margin-top:16px}.exportBtn{margin-top:12px;padding:8px 14px;background:#2563eb;color:#fff;border:none;border-radius:8px}.event-info-page{display:grid;gap:12px}.event-info-page h1,.event-info-page h2,.event-info-page p{margin:0}.event-info-map-description{color:#4b5563;font-size:14px}.beermeter-page{margin:16px;display:flex;flex-direction:column;gap:16px}.beermeter-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px}.beermeter-header h1{margin:0;font-size:28px;line-height:1.1}.beermeter-subtitle{margin-top:6px;color:#4b5563;font-size:14px}.beermeter-status{display:flex;flex-direction:column;align-items:flex-end;gap:4px;color:#4b5563;font-size:14px}.beermeter-status-ok,.beermeter-status-error{font-weight:700}.beermeter-status-ok{color:#0f766e}.beermeter-status-error{color:#b91c1c}.beermeter-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.beermeter-stat{min-width:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px}.beermeter-stat span{display:block;color:#6b7280;font-size:13px;font-weight:600}.beermeter-stat strong{display:block;margin-top:6px;color:#111827;font-size:clamp(24px,4vw,40px);line-height:1.05}.beermeter-error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;padding:10px 12px}.beermeter-chart-panel{height:min(58vh,560px);min-height:340px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px}.beermeter-tooltip{background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 8px 24px #1118271f;color:#111827;padding:10px 12px}.beermeter-tooltip-time{color:#6b7280;font-size:12px;margin-bottom:4px}.records-page{margin:16px;min-height:calc(100vh - 76px);box-sizing:border-box;color:#111827;display:flex;flex-direction:column;gap:16px;max-width:none;overflow-x:hidden;padding:0;width:auto}.records-page *{box-sizing:border-box}.records-page h1,.records-page h2,.records-page h3,.records-page p{margin:0}.records-page a{color:inherit;text-decoration:none}.records-page a:hover{text-decoration:underline}.records-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,360px);gap:22px;align-items:end;background:#17201c;border:1px solid #28332e;border-radius:8px;color:#fff;min-width:0;padding:22px}.records-hero>div,.records-section,.records-grid,.records-content-grid{min-width:0}.records-kicker{color:#0f766e;font-size:12px;font-weight:800;text-transform:uppercase}.records-hero .records-kicker{color:#7dd3c7}.records-hero h1{margin-top:8px;font-size:38px;line-height:1}.records-hero-copy{max-width:720px;margin-top:12px;color:#d6ded9;font-size:15px;line-height:1.55;overflow-wrap:anywhere}.records-hero-metric{justify-self:end;width:100%;box-sizing:border-box;background:#ffffff14;border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:14px}.records-hero-metric span,.records-hero-metric a{display:block;color:#d6ded9;font-size:13px;font-weight:700}.records-hero-metric strong{display:block;margin:6px 0;color:#fff;font-size:31px;line-height:1.05}.records-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.records-summary-item,.records-record-card,.records-panel{background:#fff;border:1px solid #e5e7eb;border-radius:8px}.records-summary-item{padding:12px 14px}.records-summary-item span{display:block;color:#6b7280;font-size:13px;font-weight:700}.records-summary-item strong{display:block;margin-top:6px;color:#111827;font-size:27px;line-height:1}.records-section{display:grid;gap:11px}.records-section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.records-section-header h2,.records-panel h2{margin-top:4px;font-size:20px;line-height:1.15}.records-section-header>span{color:#6b7280;font-size:13px;font-weight:700}.records-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.records-record-card{--record-accent: #0f766e;min-width:0;border-top:4px solid var(--record-accent);display:grid;gap:9px;padding:14px}.records-record-card[data-tone=bike]{--record-accent: #2563eb}.records-record-card[data-tone=run]{--record-accent: #16a34a}.records-record-card[data-tone=beer]{--record-accent: #b45309}.records-record-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.records-record-head span{color:var(--record-accent);font-size:12px;font-weight:900;text-transform:uppercase}.records-record-head small{color:#6b7280;font-size:12px;font-weight:700;min-width:0;overflow-wrap:anywhere;text-align:right}.records-record-card h3{color:#111827;font-size:15px;line-height:1.25}.records-record-time{color:#111827;font-size:29px;line-height:1}.records-record-racer{min-width:0;color:#111827;font-size:15px;font-weight:800;overflow-wrap:anywhere}.records-record-card p{color:#6b7280;font-size:13px;font-weight:700}.records-content-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start}.records-panel{min-width:0;padding:14px}.records-panel-main{display:grid;gap:11px}.records-table-wrap{max-width:100%;min-width:0;overflow-x:visible}.records-table{min-width:0;table-layout:fixed;width:100%;border-radius:0;background:transparent}.records-table th{background:#f9fafb;color:#4b5563;font-size:12px;text-transform:uppercase}.records-table th,.records-table td{border-bottom:1px solid #e5e7eb;padding:9px 7px;vertical-align:top}.records-table tr:nth-child(2n){background:#fafafa}.records-table td:first-child{color:#111827}.records-table td a,.records-table td span{display:block}.records-table td a{color:#111827;font-weight:800;overflow-wrap:anywhere}.records-table td span{margin-top:3px;color:#6b7280;font-size:13px;font-weight:700}.records-side-stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.records-legacy-panel{display:grid;gap:12px;align-content:start}.records-legacy-panel ol{list-style:none;margin:0;padding:0;display:grid;gap:8px}.records-legacy-panel li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border-top:1px solid #e5e7eb;padding-top:8px}.records-legacy-panel li:first-child{border-top:0;padding-top:0}.records-legacy-panel a{min-width:0;color:#111827;font-weight:800;overflow-wrap:anywhere}.records-legacy-panel li span{color:#4b5563;font-size:13px;font-weight:800;white-space:nowrap}.records-muted{color:#6b7280;font-weight:700}.result-card-panel{display:grid;gap:12px;max-width:520px;margin:28px 0 0;padding-top:18px;border-top:1px solid #e5e7eb}.result-card-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #e5e7eb;border-radius:8px;background:#f9fafb;padding:12px}.result-card-toolbar h2,.result-card-toolbar p{margin:0}.result-card-toolbar h2{color:#111827;font-size:20px;line-height:1.1}.result-card-toolbar p{margin-top:4px;color:#4b5563;font-size:13px}.result-card-toolbar button:disabled{cursor:not-allowed;opacity:.65}.result-card-error{border:1px solid #fecaca;border-radius:8px;background:#fef2f2;color:#991b1b;padding:10px 12px;font-size:13px;font-weight:700}.result-card-preview{display:block;width:min(100%,300px);aspect-ratio:4 / 5;border-radius:8px;background:#10231f;box-shadow:0 12px 28px #11182729}.racer-detail-lower-layout{display:grid;grid-template-columns:minmax(0,720px) minmax(260px,340px);gap:24px;align-items:start;justify-content:start;margin-top:24px}.racer-detail-main-column{min-width:0}.racer-detail-card-column{justify-self:start;min-width:0;width:100%}.racer-detail-card-column .result-card-panel{position:sticky;top:16px;box-sizing:border-box;width:100%;max-width:340px;margin:0;padding:0;border-top:0}.racer-detail-card-column .result-card-preview{width:min(100%,300px)}@media(max-width:1100px){.records-grid,.records-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.menu{align-items:flex-start;flex-direction:column}.menu nav{justify-content:flex-start}.beermeter-header{flex-direction:column}.beermeter-status{align-items:flex-start}.beermeter-stats{grid-template-columns:1fr}.beermeter-chart-panel{min-height:300px;padding:10px}.result-card-toolbar{align-items:stretch;flex-direction:column}.racer-detail-lower-layout{grid-template-columns:1fr}.racer-detail-card-column .result-card-panel{position:static;max-width:520px}.records-page{padding:9px}.records-hero{grid-template-columns:1fr;gap:16px;padding:16px}.records-hero h1{font-size:29px}.records-hero-metric{justify-self:stretch}.records-hero-metric strong{font-size:25px}.records-section-header{align-items:flex-start;flex-direction:column}.records-table-wrap{overflow:visible}.records-table,.records-table tbody,.records-table tr,.records-table td{display:block;width:100%}.records-table thead{display:none}.records-table tr{border:1px solid #e5e7eb;border-radius:8px;margin-bottom:10px;overflow:hidden}.records-table tr:nth-child(2n){background:#fff}.records-table td{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px;align-items:start;border-bottom:1px solid #e5e7eb}.records-table td:last-child{border-bottom:0}.records-table td:before{content:attr(data-label);color:#6b7280;font-size:12px;font-weight:800;text-transform:uppercase}.records-table td a,.records-table td span,.records-table td strong{min-width:0}.records-side-stack{grid-template-columns:1fr}}@media(max-width:520px){.records-grid,.records-summary-grid{grid-template-columns:1fr}.records-record-time{font-size:26px}.records-panel,.records-record-card,.records-summary-item{padding:11px}}.replay-page{min-height:calc(100vh - 44px);background:#f3f4f6;padding:16px}.replay-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.replay-header h1,.replay-empty h1{margin:0;color:#111827;font-size:28px;line-height:1.1}.replay-header p,.replay-empty p{margin:6px 0 0;color:#4b5563;font-size:14px}.replay-route-summary{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.replay-route-summary span{display:inline-flex;align-items:center;min-height:32px;padding:0 10px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#111827;font-size:13px;font-weight:700}.replay-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:stretch}.replay-map-panel{min-width:0;display:grid;grid-template-rows:minmax(460px,calc(100vh - 210px)) auto;gap:10px}.race-map-shell{position:relative;min-height:460px;overflow:hidden;border:1px solid #d1d5db;border-radius:8px;background:#e5e7eb}.race-map-stage{position:absolute;inset:0}.race-map-stage .race-map{width:100%;height:100%}.race-map-error{position:absolute;top:12px;left:58px;z-index:4;max-width:min(420px,calc(100% - 90px));border:1px solid #fecaca;border-radius:7px;background:#fef2f2f0;color:#991b1b;padding:8px 10px;font-size:13px;font-weight:700}.race-marker-layer{position:absolute;inset:0;z-index:5;pointer-events:none}.race-marker{position:absolute;left:0;top:0;display:grid;place-items:center;width:18px;height:18px;transform:translate(-50%,-50%);border:2px solid white;border-radius:999px;box-shadow:0 7px 16px #11182742;color:#fff;cursor:pointer;font-size:11px;font-weight:900;line-height:1;pointer-events:auto;will-change:transform}.race-marker.focused{min-width:32px;width:auto;height:30px;padding:0 8px;border-width:3px}.start-finish-marker{position:absolute;left:0;top:0;z-index:4;display:grid;place-items:center;width:24px;height:24px;border:2px solid white;border-radius:999px;background:#111827;box-shadow:0 8px 18px #11182738;color:#fff;font-size:9px;font-weight:900;line-height:1;pointer-events:none}.beer-station-marker{position:absolute;left:0;top:0;z-index:4;display:grid;place-items:center;width:22px;height:22px;border:2px solid white;border-radius:999px;background:#b45309;box-shadow:0 8px 18px #11182733;color:#fff;font-size:10px;font-weight:900;line-height:1;pointer-events:none}.event-route-map-shell{min-height:min(62vh,560px)}.event-route-map-legend{position:absolute;right:12px;top:12px;z-index:4;display:grid;gap:8px;border:1px solid rgba(17,24,39,.14);border-radius:8px;background:#fffffff0;box-shadow:0 8px 22px #11182724;color:#111827;padding:10px 12px;font-size:13px;font-weight:800;pointer-events:none}.event-route-map-legend-row{display:flex;align-items:center;gap:8px}.event-route-map-swatch{width:18px;height:5px;flex:0 0 auto;border-radius:999px}.event-route-map-swatch.shared{width:12px;height:12px;border:2px solid white;background:#111827;box-shadow:0 2px 6px #1118272e}.race-marker-label{position:absolute;left:0;top:0;z-index:7;display:flex;flex-direction:column;gap:2px;max-width:220px;transform:translateY(-50%);border:1px solid rgba(17,24,39,.12);border-radius:6px;background:#fffffff0;box-shadow:0 8px 22px #11182724;color:#111827;padding:6px 8px;pointer-events:none;will-change:transform}.race-marker-label strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.race-marker-label span{color:#4b5563;font-size:11px;font-weight:800}.replay-racer-chip{display:grid;place-items:center;width:25px;height:25px;flex:0 0 auto;border:2px solid white;border-radius:999px;box-shadow:0 5px 12px #1118272e;color:#fff;font-size:11px;font-weight:900;line-height:1}.replay-controls{display:grid;grid-template-columns:auto minmax(180px,1fr) auto;gap:12px;align-items:center;border:1px solid #d1d5db;border-radius:8px;background:#fff;padding:10px}.replay-control-buttons,.replay-speed-buttons{display:flex;gap:8px}.replay-controls button{min-height:34px;border:1px solid #d1d5db;border-radius:6px;background:#f9fafb;color:#111827;cursor:pointer;font-size:13px;font-weight:800;padding:0 12px}.replay-controls button:hover:not(:disabled),.replay-controls button.active{border-color:#2563eb;background:#2563eb;color:#fff}.replay-controls button:disabled{cursor:not-allowed;opacity:.55}.replay-scrubber{display:grid;gap:4px;min-width:0}.replay-scrubber span{color:#374151;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:700}.replay-scrubber input{width:100%}.replay-racer-list{min-height:0;max-height:calc(100vh - 140px);overflow:hidden;border:1px solid #d1d5db;border-radius:8px;background:#fff}.replay-list-header{display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid #e5e7eb;padding:14px}.replay-list-header h2{margin:0;color:#111827;font-size:20px;line-height:1.1}.replay-list-header span{color:#4b5563;font-size:13px;font-weight:800}.replay-list-rows{max-height:calc(100vh - 196px);overflow:auto}.replay-list-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;border:0;border-bottom:1px solid #eef2f7;background:#fff;color:#111827;cursor:pointer;padding:10px 12px;text-align:left}.replay-list-row:hover,.replay-list-row.active{background:#f0f7ff}.replay-racer-meta{min-width:0}.replay-racer-meta strong,.replay-racer-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-racer-meta strong{color:#111827;font-size:14px}.replay-racer-meta small{margin-top:2px;color:#6b7280;font-size:12px}.replay-racer-status{color:#374151;font-size:12px;font-weight:900;text-align:right}.replay-empty{border:1px solid #d1d5db;border-radius:8px;background:#fff;padding:18px}@media(max-width:980px){.replay-layout{grid-template-columns:1fr}.replay-map-panel{grid-template-rows:minmax(420px,58vh) auto}.replay-racer-list,.replay-list-rows{max-height:none}}@media(max-width:720px){.replay-page{padding:10px}.replay-header{align-items:flex-start;flex-direction:column}.replay-route-summary{justify-content:flex-start}.replay-controls{grid-template-columns:1fr}.replay-control-buttons,.replay-speed-buttons{flex-wrap:wrap}}
