:root{--color-bg: #16221f;--color-surface: #223532;--color-text: #f3f8ff;--color-accent: #07bc02;--color-accent-2: #0fa05f;--color-divider: color-mix(in srgb, #f3f8ff 16%, transparent);--color-muted: color-mix(in srgb, #f3f8ff 58%, transparent);--color-faint: color-mix(in srgb, #f3f8ff 40%, transparent);--color-neutral-100: #eef4f3;--color-neutral-700: #485c59;--color-neutral-800: #334441;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--shadow-sm: 0 0 0 1px #334441;--shadow-md: 0 0 0 1px #485c59, 0 6px 18px rgba(0, 0, 0, .55);--shadow-lg: 0 0 0 1px #7f9793, 0 16px 40px rgba(0, 0, 0, .65);--color-danger: #ff8a80;--color-danger-bg: color-mix(in srgb, #ff8a80 14%, transparent);--color-warn: #f0b46a;--color-warn-bg: color-mix(in srgb, #f0b46a 14%, transparent);--color-ok: #5ed350;--color-ok-bg: color-mix(in srgb, #5ed350 14%, transparent);--font-heading: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font:400 15px/1.55 var(--font-heading);-webkit-font-smoothing:antialiased}.app{max-width:1180px;margin:0 auto;padding:2.5rem 1.25rem 3rem}.masthead{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;margin-bottom:2rem}.em-logo{display:inline-flex;align-items:center}.em-wordmark{font-weight:700;letter-spacing:-.03em;line-height:1;color:var(--color-text);white-space:nowrap}.em-wordmark-accent{color:var(--color-accent)}.powered-by-mark{margin-left:auto;display:inline-flex;align-items:center;gap:.6rem}.powered-by-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-faint);white-space:nowrap}header h1{margin:0 0 .35rem;font-weight:500;font-size:2rem;line-height:1.15;letter-spacing:-.02em}header>p{margin:0 0 2rem;color:var(--color-muted);max-width:60ch}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.35rem 1.5rem;margin-bottom:1.25rem}.card>h2{margin:0 0 .3rem;font-weight:500;font-size:1.1rem;letter-spacing:-.01em}.step{display:inline-flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;margin-right:.55rem;border-radius:50%;border:1px solid var(--color-accent);color:var(--color-accent);font-size:.75rem;font-weight:500;vertical-align:.05em}.kicker{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);margin-bottom:.45rem}.hint{color:var(--color-muted);font-size:.86rem;margin:0 0 1rem}.muted{color:var(--color-muted)}.small{font-size:.8rem}.drop{border:1px dashed var(--color-divider);border-radius:var(--radius-md);padding:2rem 1rem;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.drop:hover,.drop.over{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 7%,transparent)}.drop input{display:none}.drop strong{color:var(--color-accent);font-weight:500}.file-line{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.9rem}table{width:100%;border-collapse:collapse;font-size:.88rem}th,td{text-align:left;padding:.55rem .65rem;border-bottom:1px solid var(--color-divider);vertical-align:middle}th{font-weight:500;color:var(--color-faint);font-size:10px;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:last-child td{border-bottom:none}.table-scroll{overflow-x:auto}input[type=text],input[type=number],input[type=time]{width:100%;min-height:34px;padding:5px 9px;font:inherit;font-size:.86rem;color:var(--color-text);caret-color:var(--color-accent);background:var(--color-bg);border:1px solid var(--color-divider);border-radius:var(--radius-md);font-variant-numeric:tabular-nums}input:hover{border-color:color-mix(in srgb,var(--color-text) 45%,transparent)}input:focus-visible{border-color:var(--color-accent);outline:none}select{min-height:34px;padding:5px 9px;font:inherit;font-size:.86rem;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-divider);border-radius:var(--radius-md);cursor:pointer}select:hover{border-color:color-mix(in srgb,var(--color-text) 45%,transparent)}select:focus-visible{border-color:var(--color-accent);outline:none}label.field{display:block;font-size:12px;color:var(--color-muted);margin-bottom:.3rem}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.85rem}button{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font-heading);font-weight:500;font-size:14px;line-height:1.2;color:var(--color-accent);background:transparent;border:1px solid var(--color-accent);border-radius:var(--radius-md);padding:.5rem 1rem;cursor:pointer;transition:background .12s}button:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}button:active{background:color-mix(in srgb,var(--color-accent) 22%,transparent)}button:disabled{opacity:.45;cursor:not-allowed;background:transparent}button.secondary{color:var(--color-text);border-color:var(--color-divider);font-weight:400;padding:.35rem .75rem;font-size:.84rem}button.secondary:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.tag{display:inline-block;padding:.12rem .5rem;border-radius:var(--radius-sm);font-size:.72rem;font-weight:500;white-space:nowrap}.tag.High{background:var(--color-danger-bg);color:var(--color-danger)}.tag.Medium{background:var(--color-warn-bg);color:var(--color-warn)}.tag.Low{background:var(--color-ok-bg);color:var(--color-ok)}.tag.over{background:var(--color-danger-bg);color:var(--color-danger)}.tag.ok{background:var(--color-ok-bg);color:var(--color-ok)}.pill{display:inline-block;padding:.08rem .42rem;margin:0 .22rem .22rem 0;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-accent) 13%,transparent);color:var(--color-accent);font-size:.73rem;font-variant-numeric:tabular-nums;white-space:nowrap}.notice{background:var(--color-warn-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--color-warn) 40%,transparent);border-radius:var(--radius-md);padding:.8rem 1rem;font-size:.85rem;margin-bottom:1.25rem}.notice ul{margin:.45rem 0 0;padding-left:1.1rem}.notice li{margin-bottom:.25rem}.error{background:var(--color-danger-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--color-danger) 45%,transparent);color:var(--color-danger);border-radius:var(--radius-md);padding:.8rem 1rem;font-size:.88rem;margin-bottom:1.25rem}details summary{cursor:pointer;font-size:.86rem;color:var(--color-muted)}.actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.folder-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.5rem}.folder-item{display:flex;align-items:center;gap:.55rem;padding:.5rem .7rem;border:1px solid var(--color-divider);border-radius:var(--radius-md);cursor:pointer;font-size:.86rem}.folder-item:hover{border-color:var(--color-accent)}.folder-item.on{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.folder-item input{margin:0;accent-color:var(--color-accent)}.folder-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-count{color:var(--color-faint);font-variant-numeric:tabular-nums;font-size:.8rem}.renumber-row{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-divider)}.station-name{font-weight:500;white-space:nowrap}.drag-cell{cursor:grab;color:var(--color-faint);-webkit-user-select:none;user-select:none;width:1.6rem;text-align:center;letter-spacing:-.05em}.drag-cell:active{cursor:grabbing}tr.drop-target td{box-shadow:inset 0 2px 0 var(--color-accent)}.colocated{color:var(--color-faint);font-size:.78rem;display:block;margin-top:.15rem}.viz-root{--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #5ed350;--series-7: #9085e9;--series-8: #e66767;--chart-grid: color-mix(in srgb, #f3f8ff 10%, transparent);--chart-baseline: color-mix(in srgb, #f3f8ff 22%, transparent);--chart-peak: #f3f8ff;position:relative}.chart-scroll{position:relative}.grid-line{stroke:var(--chart-grid);stroke-width:1}.baseline{stroke:var(--chart-baseline);stroke-width:1}.peak-cap{fill:var(--chart-peak)}.axis-text{fill:var(--color-faint);font-size:11px;font-variant-numeric:tabular-nums}.row-label{fill:var(--color-text);font-size:12px;font-weight:500}.chart-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.85rem;font-size:.82rem}.legend-item{display:inline-flex;align-items:center;gap:.4rem;color:var(--color-muted)}.legend-swatch{width:11px;height:11px;border-radius:3px;display:inline-block;flex:none}.peak-swatch{background:var(--chart-peak);height:3px;border-radius:1px}.chart-tooltip{position:absolute;pointer-events:none;background:var(--color-bg);box-shadow:var(--shadow-md);border-radius:var(--radius-md);padding:.55rem .7rem;font-size:.8rem;z-index:5;min-width:150px}.chart-tooltip strong{display:block;font-weight:500}.tooltip-table{margin-top:.3rem;font-size:.78rem}.tooltip-table td{padding:.1rem 0;border:none}.tooltip-table td:last-child{padding-left:.9rem}.tooltip-total td{border-top:1px solid var(--color-divider);padding-top:.25rem;font-weight:500}.peak-note{display:inline-block;margin-top:.35rem;font-size:.72rem;font-weight:500;color:var(--color-accent)}.matrix th,.matrix td{text-align:center;border:1px solid var(--color-divider);white-space:nowrap}.matrix th:first-child,.matrix td:first-child{text-align:left;position:sticky;left:0;background:var(--color-surface)}.matrix thead th{color:var(--color-text);font-size:.82rem;text-transform:none;letter-spacing:0;font-weight:500}.matrix .row-head{font-weight:500}.matrix .start-time{color:var(--color-accent);font-weight:500;font-variant-numeric:tabular-nums}.matrix .absent{color:var(--color-faint)}.matrix .km{font-variant-numeric:tabular-nums}.matrix .cot{display:block;font-size:.76rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.matrix tbody tr:hover td{background:color-mix(in srgb,var(--color-text) 4%,transparent)}.matrix tbody tr:hover td:first-child{background:color-mix(in srgb,var(--color-text) 4%,var(--color-surface))}.powered-by{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:3rem;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-faint)}.powered-by .chip{background:var(--color-neutral-100);border-radius:var(--radius-sm);padding:4px 10px;display:inline-flex;align-items:center}.powered-by img{height:16px;display:block}.amenity-col{text-align:center;white-space:nowrap}th.amenity-col{font-size:9px;max-width:74px;white-space:normal;line-height:1.25}button.amenity{width:26px;height:26px;padding:0;font-size:13px;line-height:1;border-radius:var(--radius-sm);border-color:var(--color-divider);background:transparent;color:var(--color-text)}button.amenity:hover{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 10%,transparent)}button.amenity.on{border-color:color-mix(in srgb,var(--color-accent) 55%,transparent);background:color-mix(in srgb,var(--color-accent) 12%,transparent)}tr.total-row td{border-top:1px solid var(--color-divider);font-weight:500;font-variant-numeric:tabular-nums}button.row-remove{width:24px;height:24px;padding:0;font-size:15px;line-height:1;border-color:transparent;color:var(--color-faint);background:transparent}button.row-remove:hover{border-color:color-mix(in srgb,var(--color-danger) 50%,transparent);background:var(--color-danger-bg);color:var(--color-danger)}tr.end-zone td{opacity:.5}.masthead-chip{background:var(--color-neutral-100);border-radius:var(--radius-md);padding:7px 16px;display:inline-flex;align-items:center}.masthead-chip img{height:32px;display:block}.loaded-file{color:var(--color-accent);font-weight:500}button.cta{font-size:15px;font-weight:600;letter-spacing:.08em;padding:.75rem 2.75rem}.note-input{display:block;margin-top:4px;font-size:11px;min-height:24px;max-width:200px;padding:2px 7px;background:transparent;border:1px dashed var(--color-divider);border-radius:var(--radius-sm);color:var(--color-muted)}.note-input:focus-visible{border-style:solid;color:var(--color-text)}.colocated.note{color:var(--color-accent-2)}.cot-final{color:var(--color-accent)}.cot-final strong{font-weight:600}.cot-final-tag{display:inline-block;margin-left:.45rem;padding:.05rem .4rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-accent) 14%,transparent);color:var(--color-accent);font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.race-tabs{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--color-divider)}.race-tab{display:inline-flex;align-items:center;border:1px solid var(--color-divider);border-radius:var(--radius-md);overflow:hidden}.race-tab.active{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.race-tab-label{border:none;background:transparent;color:var(--color-text);font-weight:400;font-size:.86rem;padding:.35rem .75rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.race-tab.active .race-tab-label{color:var(--color-accent);font-weight:500}.race-tab-close{border:none;background:transparent;color:var(--color-faint);padding:.35rem .5rem .35rem 0;font-size:.95rem}.race-tab-close:hover{color:var(--color-danger);background:transparent}.editable{display:inline-flex;align-items:center;gap:2px}.editable input{min-height:28px;padding:3px 6px;font-size:.84rem;border-color:transparent;background:transparent;min-width:64px}.editable input:hover{border-color:var(--color-divider);background:var(--color-bg)}.editable input:focus-visible{border-color:var(--color-accent);background:var(--color-bg)}.editable.edited input{border-color:color-mix(in srgb,var(--color-accent) 45%,transparent);background:color-mix(in srgb,var(--color-accent) 9%,transparent);color:var(--color-accent);font-weight:500}button.revert{border:none;background:transparent;color:var(--color-faint);padding:0 2px;font-size:.8rem;line-height:1}button.revert:hover{color:var(--color-accent);background:transparent}.level-select{min-height:28px;padding:3px 6px;font-size:.8rem;border-color:transparent;background:transparent}.level-select:hover{border-color:var(--color-divider);background:var(--color-bg)}.level-select.edited{border-color:color-mix(in srgb,var(--color-accent) 45%,transparent);background:color-mix(in srgb,var(--color-accent) 9%,transparent);color:var(--color-accent)}
