:root{color-scheme:dark;--bg:#141716;--panel:#1b1f1d;--panel2:#222824;--border:#333a34;--text:#f0f3ed;--muted:#a0aaa0;--accent:#c8f36b;--blue:#8fbcf0;--red:#f3a17f;--radius:12px;font-family:Inter,"DejaVu Sans",Arial,sans-serif;font-size:15px;line-height:1.5}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{color:inherit;background:transparent;border:1px solid var(--border);border-radius:7px;padding:9px 14px}button:hover{border-color:#727e69;background:#ffffff08}button:disabled{cursor:wait;opacity:.55}a{color:inherit;text-decoration:none}input,select,textarea{color:var(--text);background:#121613;border:1px solid var(--border);border-radius:7px;padding:10px 12px;min-width:0;max-width:100%}select{cursor:pointer}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}label{display:grid;gap:7px;font-size:14px}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-.7px;font-weight:600;margin-bottom:8px}h2{font-size:19px;font-weight:550;letter-spacing:-.3px;margin-bottom:14px}h3{font-size:16px;font-weight:550;margin-bottom:8px}p{margin-bottom:14px}small,.small{font-size:12px;line-height:1.6}.muted{color:var(--muted)}.eyebrow{font-size:12px;letter-spacing:1.6px;color:var(--accent);margin-bottom:16px}.primary{background:var(--accent);border-color:var(--accent);color:#1a2510;font-weight:600}.primary:hover{background:#d5ff85;border-color:#d5ff85}.compact{padding:9px 15px;font-size:14px}.icon-button{border:0;padding:3px 8px;font-size:20px;color:var(--muted)}.wordmark{font-size:36px;letter-spacing:-2px;font-weight:800;line-height:1.1}.wordmark>span{display:inline-flex;align-items:center;justify-content:center;font-size:13px;border:1px solid #566147;border-radius:6px;width:23px;height:23px;color:var(--accent);vertical-align:top;margin-left:7px;margin-top:5px;letter-spacing:0}.app{display:grid;grid-template-columns:255px minmax(0,1fr);min-height:100vh}.sidebar{border-right:1px solid var(--border);padding:30px 18px 0;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:#101411}.sidebar>.wordmark{margin:0 12px 39px}.workspace-label,.session-heading{font-size:11px;letter-spacing:1.2px;color:#8c978b}.workspace-label{padding:0 13px;margin-bottom:10px}.nav-item{border:0;display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin-bottom:6px;color:var(--muted);padding:10px 13px}.nav-item.active{background:#27311f;color:var(--accent)}.nav-item>span:first-child{font-size:20px}.count{font-size:12px;margin-left:auto;background:#1a2115;padding:0 6px;border-radius:4px}.session-heading{display:flex;align-items:center;justify-content:space-between;margin:28px 12px 8px}.search{display:flex;align-items:center;border-bottom:1px solid var(--border);margin:0 10px 12px}.search span{font-size:25px;color:var(--muted)}.search input{width:100%;border:0;background:none;font-size:13px;padding-left:6px}.session-list{overflow-y:auto;min-height:0;flex:1;padding-bottom:12px}.session-card{border:1px solid transparent;width:100%;display:block;text-align:left;margin-bottom:7px;padding:11px 12px;border-radius:8px}.session-card.selected{border-color:#445033;background:#22291d}.session-card .session-title{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-card .session-sub{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:5px;margin-top:4px}.sidebar-footer{display:flex;align-items:center;border-top:1px solid var(--border);padding:18px 2px;gap:8px}.sidebar-footer #profile{border:0;padding:0;display:flex;align-items:center;gap:10px;flex:1;text-align:left;font-size:13px}.avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#363f2d;color:var(--accent);font-size:12px;flex-shrink:0}.topbar{min-height:77px;padding:20px 36px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);font-size:13px;gap:20px}.separator{margin:0 13px;color:#687162}.content{padding:30px 36px 45px;max-width:1600px;margin:auto}.session-titlebar{display:flex;justify-content:space-between;align-items:center;gap:16px}.session-titlebar p{color:var(--muted);font-size:14px;margin-bottom:0}.title-actions{display:flex;gap:8px}.title-actions button{font-size:13px;white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding:24px 0;margin:12px 0 4px;border-bottom:1px solid var(--border)}.stat-label{font-size:12px;color:var(--muted);margin-bottom:5px}.stat-value{font-size:27px;letter-spacing:-1px;font-variant-numeric:tabular-nums}.stat-value.accent{color:var(--accent)}.stat-unit{font-size:13px;letter-spacing:0;color:var(--muted);margin-left:5px}.tabs{display:flex;gap:26px;border-bottom:1px solid var(--border);margin-bottom:23px;overflow-x:auto}.tab{white-space:nowrap;border:0;border-radius:0;border-bottom:2px solid transparent;padding:15px 0 13px;font-size:14px;color:var(--muted)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab .badge{font-size:11px;padding:1px 5px;background:#33392e;margin-left:4px;border-radius:4px}.compare-controls{display:grid;grid-template-columns:1fr 1.4fr 1fr 100px;gap:12px;margin-bottom:20px}.compare-controls label{font-size:12px;color:var(--muted)}.compare-controls select{font-size:13px;background:var(--panel);padding:10px}.analysis-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:18px;align-items:stretch}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 12px;gap:12px}.panel-head h2{margin:0;font-size:16px}.panel-head select{padding:4px 8px;font-size:12px;background:transparent}.legend{display:flex;gap:17px;font-size:12px;color:var(--muted);padding:0 20px 6px}.legend i{display:inline-block;width:14px;height:3px;margin-right:6px;vertical-align:middle;background:var(--accent)}.legend .reference{background:var(--blue)}.plot{width:100%;display:block;touch-action:pan-y;cursor:crosshair}.plot text{fill:var(--muted);font-size:12px;font-family:inherit}.plot path{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}.plot line.gridline{stroke:#333b34;stroke-width:1;stroke-dasharray:2 5}.plot .cursor{stroke:#b4bea8;stroke-dasharray:4 4;pointer-events:none}.chart-foot{border-top:1px solid var(--border);padding:10px 20px;display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.chart-foot strong{color:var(--text);font-weight:500}.map-wrap{padding:0 12px}.track-map{width:100%;height:252px;display:block}.track-map .route{stroke:#475444;stroke-width:8;fill:none;stroke-linecap:round;stroke-linejoin:round}.track-map .track{stroke:var(--accent);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.map-info{padding:12px 20px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.map-info span{color:var(--accent)}.position-control{display:flex;align-items:center;gap:12px;padding:10px 18px}.position-control input{width:100%;padding:0;accent-color:var(--accent)}.position-control output{font-size:12px;white-space:nowrap;min-width:63px;text-align:right}.delta-value{font-variant-numeric:tabular-nums;color:var(--red)}.gain{color:var(--accent)}.section-heading{display:flex;justify-content:space-between;align-items:baseline;margin:25px 0 13px;gap:15px}.section-heading h2{margin:0}.section-heading p{font-size:12px;color:var(--muted);margin:0}.observations{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.observation{border:1px solid var(--border);border-radius:9px;padding:16px;text-align:left;position:relative;background:#1a1e19}.observation .tag{font-size:11px;letter-spacing:.8px;color:var(--muted);margin-bottom:9px}.observation h3{font-size:16px;color:var(--red);padding-right:12px}.observation p{font-size:13px;color:var(--muted);line-height:1.65;margin:0}.observation .arrow{position:absolute;top:14px;right:14px;color:var(--accent)}.lower-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:18px;margin-top:20px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-weight:400;color:var(--muted);font-size:12px;border-bottom:1px solid var(--border);padding:12px 17px;white-space:nowrap}td{padding:12px 17px;border-bottom:1px solid #2b322b;font-variant-numeric:tabular-nums;white-space:nowrap}tr:last-child td{border:0}tr.selectable{cursor:pointer}tr.selectable:hover,tr.chosen{background:#2a3422}.sector-meter{display:flex;align-items:center;gap:8px}.sector-meter i{display:block;height:4px;background:var(--red);max-width:50px;min-width:2px;border-radius:2px}.subtle-note{font-size:12px;color:var(--muted);margin-top:14px;line-height:1.7}.note-list{padding:0 18px 15px}.note{padding:12px 0;border-bottom:1px solid var(--border)}.note:last-child{border:0}.note p{font-size:14px;margin:6px 0;white-space:pre-wrap;overflow-wrap:anywhere}.note-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:var(--muted)}.note button{padding:3px 8px;font-size:11px}.note.done p{text-decoration:line-through;opacity:.6}.note-meta{font-size:11px;color:var(--muted)}.empty{padding:55px 25px;text-align:center}.empty h2{font-size:23px}.empty p{color:var(--muted);max-width:480px;margin:0 auto 20px}.empty-small{font-size:13px;color:var(--muted);padding:10px 0 20px;line-height:1.7}.quality-item{padding:18px 20px;border-bottom:1px solid var(--border);font-size:14px;display:flex;gap:14px}.quality-item:last-child{border:0}.quality-icon{color:var(--red);font-size:20px}.quality-item p{margin:0}.pill{display:inline-block;border:1px solid #455238;background:#26321e;color:var(--accent);padding:3px 8px;border-radius:5px;font-size:11px}.pill.warning{background:#35291d;border-color:#60482f;color:#efc699}.row-status{font-size:11px;color:var(--muted)}.notice{border:1px solid #555b34;background:#272c1e;border-radius:8px;padding:13px 16px;margin-bottom:20px;font-size:13px;color:#d6dfb7}.error-panel{background:#34221d;color:#ffc5a7;border:1px solid #78513d;border-radius:8px;padding:18px;margin:18px 0}.progress-table{margin-top:20px}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-art{background:#20291b;padding:60px;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-art .race-number{font-size:clamp(150px,23vw,360px);line-height:1;letter-spacing:-25px;color:#bce16b;font-weight:800;font-style:italic;margin:40px 0 25px}.login-art p{font-size:32px;line-height:1.3;font-weight:500}.login-art>.small{margin-top:auto;letter-spacing:2px;color:#a7b696}.login-form{align-self:center;justify-self:center;width:min(400px,100%);padding:30px}.login-form label{margin-top:22px}.login-form .primary{width:100%;display:flex;justify-content:space-between;padding:12px 15px;margin:25px 0}.login-form h1{font-size:29px}.form-error{font-size:13px;color:var(--red);margin:12px 0 0}.login-form p.small{font-size:12px}.form-stack{display:grid;gap:15px}.form-stack .row{display:flex;gap:12px}.form-stack .row>*{flex:1}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-head h2{margin:0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}dialog{width:min(590px,calc(100vw - 30px));max-height:90vh;overflow:auto;background:var(--panel);border:1px solid #5c6757;border-radius:14px;padding:25px;color:var(--text)}dialog::backdrop{background:#030703b8;backdrop-filter:blur(5px)}dialog hr{border:0;border-top:1px solid var(--border);margin:26px 0}#toast{position:fixed;bottom:22px;right:24px;z-index:100;background:#d6f3a1;color:#1c2914;border-radius:9px;padding:13px 20px;max-width:min(500px,calc(100vw - 40px));font-size:14px;box-shadow:0 10px 30px #0004;display:none}#toast.error{background:#f9c3a6;color:#391c0b}.upload-progress{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:80;border:1px solid #637a42;background:#26341c;border-radius:9px;padding:15px 20px;display:flex;gap:12px;align-items:center;box-shadow:0 12px 35px #0005}.spinner{border:2px solid #879471;border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;display:inline-block;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}[hidden]{display:none!important}.skeleton{color:var(--muted);padding:40px}.user-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border);font-size:14px}.print-header{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1600px){.content{padding-top:40px}.track-map{height:280px}}
@media(max-width:1150px){.app{grid-template-columns:220px minmax(0,1fr)}.sidebar{padding-left:12px;padding-right:12px}.content{padding:24px}.topbar{padding:18px 24px}.analysis-grid,.lower-grid{grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr)}.compare-controls{grid-template-columns:1fr 1.4fr}.observations{grid-template-columns:1fr}.observation{display:grid;grid-template-columns:155px 1fr;column-gap:15px}.observation .tag{grid-column:1}.observation h3{grid-column:1}.observation p{grid-column:2;grid-row:1 / 3}.stat-value{font-size:23px}.title-actions button{padding:8px;font-size:12px}}
@media(max-width:900px){.app{grid-template-columns:185px minmax(0,1fr)}.analysis-grid,.lower-grid{grid-template-columns:1fr}.map-wrap .track-map{height:270px}.stats{gap:12px;grid-template-columns:repeat(2,1fr)}.session-titlebar{align-items:flex-start}.title-actions{flex-direction:column}.topbar>div{font-size:12px}.topbar .muted,.topbar .separator{display:none}.content{padding:22px 18px}.sidebar{padding-top:25px}.sidebar>.wordmark{font-size:29px;margin:0 8px 30px}.nav-item{font-size:13px;padding:8px}.workspace-label{font-size:9px;padding-left:8px}.session-card{padding:9px 7px}.session-sub{flex-wrap:wrap}.session-heading{margin-left:8px;margin-right:8px}.sidebar-footer .avatar{display:none}.tabs{gap:21px}}
@media(max-width:600px){.app{display:block}.sidebar{position:relative;width:100%;height:auto;border-right:0;border-bottom:1px solid var(--border);padding:18px;display:grid;grid-template-columns:1fr 1fr;gap:8px}.sidebar>.wordmark{margin:0 0 10px}.workspace-label,.session-heading,.sidebar .search,.sidebar-footer{display:none}.nav-item{width:auto;font-size:13px;grid-row:2}.nav-item:first-of-type{grid-column:1}.nav-item:nth-of-type(2){grid-column:2}.session-list{display:flex;overflow-x:auto;grid-column:1 / -1;padding:5px 0 0;gap:6px}.session-card{min-width:170px;width:170px;flex-shrink:0;margin:0;padding:9px}.session-card .session-sub{display:none}.topbar{padding:14px 18px;min-height:60px}.content{padding:20px 15px}.session-titlebar{display:block}.title-actions{flex-direction:row;margin-top:12px}h1{font-size:25px}.compare-controls{gap:10px}.compare-controls select{font-size:12px}.tabs{gap:22px}.tab{font-size:13px}.legend{gap:12px;font-size:11px}.observation{display:block}.observation h3{margin-bottom:9px}.observation .tag{margin-bottom:5px}.section-heading{align-items:flex-start;flex-direction:column;gap:5px}.chart-foot{font-size:11px;padding:10px 13px}.login{display:block}.login-art{padding:25px;min-height:220px}.login-art .race-number{position:absolute;right:30px;top:10px;font-size:170px;letter-spacing:-15px;margin:0;opacity:.35}.login-art p{font-size:24px;margin:25px 0 0}.login-art>.small{display:none}.login-form{width:100%;max-width:450px;margin:auto;padding:35px 25px}.form-stack .row{flex-direction:column}.topbar .primary{font-size:12px}dialog{padding:20px}.upload-progress{width:calc(100vw - 30px);font-size:13px}}
@media print{body{background:white;color:black}.sidebar,.topbar,.title-actions,.tabs,.compare-controls,.position-control,button,#toast,.upload-progress{display:none!important}.app{display:block}.content{padding:0}.panel,.observation{break-inside:avoid;background:white;border-color:#ccc}.muted,.stat-label,.subtle-note{color:#555}.plot text{fill:#555}.plot path{stroke-width:2}.stats{color:black}.analysis-grid,.lower-grid{display:block}.panel{margin:12px 0}.observations{display:block}.observation{margin-bottom:8px}p,.observation p,.chart-foot,.map-info{color:#333}.stat-value.accent,.gain{color:#385408}.delta-value,.observation h3{color:#8a300a}.print-header{display:block}.track-map{height:240px}}
