:root,[data-theme=dark]{--bg-app: #0B1120;--bg-surface: #0F172A;--bg-surface-2: #131D31;--bg-surface-3: #1E293B;--border: rgba(148,163,184,.12);--border-strong: rgba(148,163,184,.22);--text-primary: #F8FAFC;--text-secondary: #94A3B8;--text-tertiary: #64748B;--brand: #4F46E5;--brand-hover: #6366F1;--brand-active: #4338CA;--brand-fg: #FFFFFF;--brand-text: #A5B4FC;--brand-subtle: rgba(99,102,241,.16);--ring: rgba(99,102,241,.5);--accent-color: #10B981;--accent-text: #6EE7B7;--accent-dot: #34D399;--accent-subtle: rgba(16,185,129,.16);--success: #34D399;--success-bg: rgba(16,185,129,.16);--warning: #FBBF24;--warning-bg: rgba(245,158,11,.16);--danger: #F87171;--danger-bg: rgba(239,68,68,.16);--info: #38BDF8;--info-bg: rgba(14,165,233,.16);--shadow-sm: 0 1px 2px rgba(0,0,0,.4);--shadow-md: 0 4px 16px rgba(0,0,0,.45);--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-pill: 9999px}[data-theme=light]{--bg-app: #F1F5F9;--bg-surface: #FFFFFF;--bg-surface-2: #F8FAFC;--bg-surface-3: #F1F5F9;--border: #E2E8F0;--border-strong: #CBD5E1;--text-primary: #0F172A;--text-secondary: #475569;--text-tertiary: #94A3B8;--brand: #4F46E5;--brand-hover: #4338CA;--brand-active: #3730A3;--brand-fg: #FFFFFF;--brand-text: #4F46E5;--brand-subtle: #EEF2FF;--ring: rgba(79,70,229,.35);--accent-color: #10B981;--accent-text: #047857;--accent-dot: #10B981;--accent-subtle: #ECFDF5;--success: #059669;--success-bg: #ECFDF5;--warning: #D97706;--warning-bg: #FFFBEB;--danger: #DC2626;--danger-bg: #FEF2F2;--info: #0284C7;--info-bg: #F0F9FF;--shadow-sm: 0 1px 2px rgba(15,23,42,.06);--shadow-md: 0 2px 8px rgba(15,23,42,.1)}:root,[data-theme=dark],[data-theme=light]{--bg-console: #0b1220;--text-console: #e2e8f0;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sidebar-w: 248px;--sidebar-w-collapsed: 64px;--t-fast: .15s ease-out;--t-panel: .2s ease-out;--font-ui: Inter, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}@media (prefers-reduced-motion: reduce){:root{--t-fast: 0s;--t-panel: 0s}}*{box-sizing:border-box}html,body{overscroll-behavior:none}body{margin:0;font-family:var(--font-ui);background:var(--bg-app);color:var(--text-primary);font-size:14px;line-height:1.5}code,pre,.mono{font-family:var(--font-mono)}a{color:var(--brand-text);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);padding:8px 14px;border-radius:var(--r-md);transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);display:inline-flex;align-items:center;justify-content:center;gap:6px}button>svg{flex:none}button:hover:not(:disabled){border-color:var(--border-strong);color:var(--text-primary)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-fg);font-weight:500}button.primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover);color:var(--brand-fg)}button.sm{padding:4px 10px;font-size:12px;border-radius:var(--r-sm)}button.danger{background:transparent;border-color:var(--border);color:var(--danger)}button.danger:hover:not(:disabled){background:var(--danger-bg);border-color:var(--danger-bg);color:var(--danger)}button.chip{background:var(--bg-surface-3);border-color:var(--border);color:var(--text-secondary);border-radius:var(--r-sm);font-size:12px;padding:4px 10px}button.chip:hover:not(:disabled){border-color:var(--brand);color:var(--brand-text)}input,select,textarea{font:inherit;background:var(--bg-surface-3);border:1px solid var(--border);color:var(--text-primary);padding:8px 10px;border-radius:var(--r-md);width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}input::placeholder{color:var(--text-tertiary)}input[type=checkbox]{accent-color:var(--brand);width:16px;height:16px;margin:0;flex:none;cursor:pointer}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;max-width:100%}button.switch{flex:none;width:40px;height:22px;padding:0;position:relative;border-radius:var(--r-pill);background:var(--bg-surface-3);border:1px solid var(--border-strong);transition:background var(--t-fast),border-color var(--t-fast)}button.switch .knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--r-pill);background:var(--text-tertiary);transition:left var(--t-fast),background var(--t-fast)}button.switch.on{background:var(--brand);border-color:var(--brand)}button.switch.on .knob{left:20px;background:var(--brand-fg)}button.switch:hover:not(:disabled){border-color:var(--brand)}button.switch.on:hover:not(:disabled){background:var(--brand-hover)}.layout{display:flex;min-height:100vh;align-items:flex-start}.main{flex:1;min-width:0}.sidebar{width:var(--sidebar-w);background:var(--bg-surface);border-right:1px solid var(--border);padding:16px 12px;display:flex;flex-direction:column;transition:width var(--t-panel);position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:8px;font-weight:600;font-size:16px;padding:4px 8px 16px}.brand-icon{color:var(--brand-text);flex:none}.brand-name{flex:1;white-space:nowrap;overflow:hidden}.collapse-btn{margin-left:auto;flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border);background:var(--bg-surface-3);color:var(--text-secondary);border-radius:var(--r-sm)}.nav{flex:1;min-height:0;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-md);color:var(--text-secondary);margin-bottom:2px;transition:background var(--t-fast),color var(--t-fast);border:none;background:none;width:100%;text-align:left}.nav-item:hover{background:var(--bg-surface-3);color:var(--text-primary);text-decoration:none}.nav-item.router-link-active{background:var(--brand-subtle);color:var(--brand-text)}.nav-icon{flex:none}.side-foot{margin-top:auto;padding:12px 4px 4px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px}.side-foot .live{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-tertiary);flex:1}.dot{width:8px;height:8px;border-radius:var(--r-pill);background:var(--text-tertiary);flex:none}.dot.on{background:var(--accent-dot)}.side-actions{display:flex;gap:6px}.side-actions button{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-secondary)}.side-actions button:hover{color:var(--text-primary);border-color:var(--border-strong)}.sidebar.collapsed{width:var(--sidebar-w-collapsed);padding-left:8px;padding-right:8px}.sidebar.collapsed .brand{justify-content:center;padding-left:0;padding-right:0}.sidebar.collapsed .brand-icon,.sidebar.collapsed .brand-name{display:none}.sidebar.collapsed .collapse-btn{margin-left:0;border:none;background:none}.sidebar.collapsed .nav{overflow:visible}.sidebar.collapsed .nav-item{justify-content:center;gap:0;position:relative}.sidebar.collapsed .nav-label{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--bg-surface-3);border:1px solid var(--border-strong);padding:5px 10px;border-radius:var(--r-md);white-space:nowrap;font-size:13px;color:var(--text-primary);box-shadow:var(--shadow-md);z-index:70;pointer-events:none;opacity:0;visibility:hidden;transition:opacity var(--t-fast)}.sidebar.collapsed .nav-item:hover .nav-label{opacity:1;visibility:visible}.sidebar.collapsed .side-foot{flex-direction:column;align-items:center;gap:12px;padding-left:0;padding-right:0}.sidebar.collapsed .side-actions{flex-direction:column}.content{flex:1;min-width:0;padding:28px 32px}h1{font-size:24px;font-weight:600;line-height:1.2;margin:0 0 20px;display:flex;align-items:center;gap:10px}h2{font-size:18px;font-weight:600;margin:0 0 14px}.page-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{margin:0}.spacer{flex:1}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;margin-bottom:18px}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.toolbar input,.toolbar select{max-width:260px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}th{color:var(--text-tertiary);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tbody tr:hover td{background:var(--bg-surface-3)}tr:last-child td{border-bottom:none}td.num{font-family:var(--font-mono);font-size:13px;white-space:nowrap}.row-actions{display:flex;gap:6px;flex-wrap:nowrap}table td:last-child:has(button){width:1%;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-sm);font-size:12px;font-weight:500}.badge.ok{background:var(--accent-subtle);color:var(--accent-text)}.badge.off{background:var(--bg-surface-3);color:var(--text-tertiary)}.badge.warn{background:var(--warning-bg);color:var(--warning)}.badge.err{background:var(--danger-bg);color:var(--danger)}.badge.brand{background:var(--brand-subtle);color:var(--brand-text)}.muted{color:var(--text-secondary)}.dim{color:var(--text-tertiary)}.hint{color:var(--text-secondary);font-size:12px;margin:4px 0 0}.error{color:var(--danger);margin:8px 0}.empty{padding:40px 0;text-align:center;color:var(--text-tertiary)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:14px;flex-wrap:wrap}.tabs button{background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);padding:8px 14px;font-size:14px;border-radius:0}.tabs button:hover{color:var(--text-primary)}.tabs button.active{color:var(--accent-text);border-bottom-color:var(--accent-color)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#02061799;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:50}.modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:22px 24px;width:560px;max-width:100%}.modal h2{margin:0 0 18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}.login-box{width:340px}.login-box h1{justify-content:center}.field{margin-bottom:14px}.field label{display:block;margin-bottom:6px;color:var(--text-secondary)}.chips{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:40}.chip-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:10px 12px;width:300px}.chip-card .top{display:flex;align-items:center;gap:8px;font-size:13px}.chip-card .lbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-card .msg-line{font-size:12px;color:var(--text-secondary);margin-top:4px}.bar{height:4px;border-radius:var(--r-pill);background:var(--bg-surface-3);margin-top:8px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--brand);transition:width var(--t-panel)}.bar.indet>i{width:40%;animation:slide 1.2s ease-in-out infinite}@keyframes slide{0%{margin-left:-40%}to{margin-left:100%}}.toasts{position:fixed;right:20px;top:20px;display:flex;flex-direction:column;gap:8px;z-index:60}.toast{border-radius:var(--r-md);padding:10px 14px;width:320px;display:flex;align-items:flex-start;gap:8px;font-size:13px;border-left:3px solid transparent;box-shadow:var(--shadow-sm)}.toast.success{background:var(--accent-subtle);color:var(--accent-text);border-left-color:var(--accent-color)}.toast.danger{background:var(--danger-bg);color:var(--danger);border-left-color:var(--danger)}.toast.info{background:var(--info-bg);color:var(--info);border-left-color:var(--info)}.toast.warning{background:var(--warning-bg);color:var(--warning);border-left-color:var(--warning)}.toast .x{margin-left:auto;border:none;background:none;color:inherit;padding:0 2px;opacity:.7}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#02061780;z-index:29}.topbar{display:none;align-items:center;gap:10px;padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--bg-surface);position:sticky;top:0;z-index:20;font-weight:600}.burger{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:none;color:var(--text-secondary)}@media (max-width: 860px){.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:30;height:var(--vvh, 100dvh);max-height:var(--vvh, 100dvh);overflow-y:auto;box-shadow:var(--shadow-md);transform:translate(-100%);transition:transform var(--t-panel)}.sidebar.open{transform:translate(0)}.sidebar.collapsed{width:var(--sidebar-w);padding:16px 12px}.sidebar.collapsed .brand{justify-content:flex-start;padding:4px 8px 16px}.sidebar.collapsed .brand-icon,.sidebar.collapsed .brand-name{display:inline}.sidebar.collapsed .nav-item{justify-content:flex-start;gap:10px}.sidebar.collapsed .nav-label{position:static;transform:none;opacity:1;visibility:visible;background:none;border:none;padding:0;box-shadow:none;font-size:inherit;color:inherit}.sidebar.collapsed .side-foot{flex-direction:row;padding:12px 4px 4px}.sidebar.collapsed .side-actions{flex-direction:row}.collapse-btn{display:none}.topbar{display:flex}.content{padding:16px}input,select,textarea{font-size:16px}button:not(.switch),a.chip{min-height:36px}button.sm,button.chip{padding:6px 12px;font-size:13px}.side-actions button{width:36px;height:36px}.toasts{left:12px;right:12px}.toast{width:auto}table.rtable,table.rtable tbody,table.rtable tr,table.rtable td{display:block;width:100%}table.rtable thead{display:none}table.rtable tr{border-bottom:1px solid var(--border);padding:8px 2px 10px}table.rtable td{display:flex;align-items:center;justify-content:space-between;gap:12px;border:none;padding:4px 12px;text-align:right}table.rtable td:before{content:attr(data-label);color:var(--text-tertiary);font-weight:600;font-size:12px;text-align:left}table.rtable td.rt-title{justify-content:flex-start;font-weight:600;font-size:15px;padding:2px 12px 6px}table.rtable td.rt-title:before{content:none}table.rtable td:last-child:has(button){width:100%}table.rtable td.rt-actions{justify-content:flex-start;padding-top:10px}table.rtable td.rt-actions:before{content:none}}.drop{border:1px dashed var(--border-strong);border-radius:var(--r-lg);padding:18px;text-align:center;color:var(--text-secondary);cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast)}.drop:hover,.drop.over{border-color:var(--brand);background:var(--brand-subtle);color:var(--text-primary)}.drop input{display:none}.drop.compact{padding:10px;font-size:13px}.drop .file{color:var(--text-primary);font-family:var(--font-mono);font-size:13px}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.upload-opts{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:14px}.upload-opts .field{margin:0;display:inline-flex;align-items:center;gap:8px}.upload-opts input[type=number]{width:90px}.upload-col{display:flex;flex-direction:column;gap:10px;min-width:0}.col-title{font-size:13px;font-weight:600;color:var(--text-secondary)}.donor-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.file-card{border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;background:var(--bg-surface-2);display:flex;flex-direction:column}.file-card.bad{border-color:var(--danger)}.mini-map{height:150px;width:100%;z-index:0}.mini-empty{display:flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;color:var(--text-tertiary);font-size:13px;text-align:center;background:var(--bg-surface-3)}.file-card.bad .mini-empty{color:var(--danger);background:var(--danger-bg)}.fc-body{padding:8px 10px 10px}.fc-top{display:flex;align-items:center;gap:6px}.fc-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.fc-x{border:none;background:none;padding:4px;color:var(--text-secondary)}.fc-x:hover:not(:disabled){color:var(--danger);background:var(--danger-bg)}.fc-meta{font-size:12px;color:var(--text-secondary);margin-top:2px}.fc-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.stats .card{margin:0}.stat{padding:12px 14px}.stat .lbl{font-size:12px;color:var(--text-tertiary);font-weight:600;text-transform:uppercase;letter-spacing:.06em}.stat .val{font-family:var(--font-mono);font-size:18px;margin-top:4px}.stat .was{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);text-decoration:line-through}.map-wrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px}.map{height:calc(100vh - 330px);min-height:380px;border-radius:var(--r-lg);border:1px solid var(--border);overflow:hidden;z-index:0}.map-side{display:flex;flex-direction:column;gap:12px;min-width:0}.map-side .card{padding:12px 14px}.seg-list{display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 520px);min-height:120px;overflow-y:auto}.seg{text-align:left;display:block;width:100%;padding:8px 10px;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--r-md)}.seg.active{border-color:var(--brand);background:var(--brand-subtle)}.seg .top{display:flex;gap:8px;align-items:center;font-size:13px}.seg .meta{font-size:12px;color:var(--text-secondary);font-family:var(--font-mono);margin-top:2px}.legend{display:flex;flex-direction:column;gap:6px;font-size:13px}.legend .sw{display:inline-block;width:18px;height:3px;border-radius:2px;vertical-align:middle;margin-right:8px}.legend .sw.dash{background:none!important;border-top:2px dashed;height:0}.seg-view{display:inline-flex;border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.seg-view button{border:none;border-radius:0;padding:6px 12px;background:var(--bg-surface)}.seg-view button.on{background:var(--brand-subtle);color:var(--brand-text)}.leaflet-container{background:var(--bg-surface-2);font-family:var(--font-ui)}[data-theme=dark] .leaflet-tile{filter:invert(1) hue-rotate(180deg) brightness(.85) contrast(.9) saturate(.6)}.chart{width:100%;height:320px;display:block}.chart .grid line{stroke:var(--border)}.chart .axis text{fill:var(--text-tertiary);font-size:11px;font-family:var(--font-mono)}.chart .before{stroke:var(--danger);fill:none;stroke-width:1;opacity:.75}.chart .after{stroke:var(--brand);fill:none;stroke-width:1.5}.chart .limit{stroke:var(--warning);stroke-dasharray:4 4}.chart .seg-band{fill:var(--warning-bg)}.banner{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:14px;background:var(--info-bg);color:var(--info);border-radius:var(--r-md);font-size:13px}@media (max-width: 860px){.upload-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.map-wrap{grid-template-columns:1fr}.map{height:55vh;min-height:300px}.seg-list{max-height:none}}a.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-surface-3);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-secondary);font-size:12px;text-decoration:none;white-space:nowrap;transition:border-color var(--t-fast),color var(--t-fast)}a.chip:hover{border-color:var(--brand);color:var(--brand-text);text-decoration:none}.wahoo-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ride-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.ride-card .fc-name{font-family:var(--font-mono)}.ride-card a.fc-x{display:inline-flex;color:var(--text-secondary)}.ride-card a.fc-x:hover{color:var(--brand-text);background:var(--brand-subtle);border-radius:var(--r-sm)}.ride-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.thumb{display:block;width:100%;height:120px;background:var(--bg-surface-3)}.thumb-line{fill:none;stroke:var(--brand);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}@media (max-width: 860px){.chips{left:12px;right:12px;bottom:12px}.chip-card{width:auto}.ride-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.mini-map.big-map{height:360px;border-radius:var(--r-lg);border:1px solid var(--border);margin-bottom:16px}.sim-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 12px}.sim-card{cursor:pointer}.sim-card.chosen{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.reasons{margin:6px 0 4px;padding-left:16px;font-size:12px;color:var(--text-secondary)}.reasons li{margin:1px 0}.thumb-ghost{fill:none;stroke:var(--text-tertiary);stroke-width:4;stroke-linejoin:round;stroke-linecap:round;opacity:.45}.thumb-link{display:block}.ride-link{color:var(--text-primary)}.fix-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;margin-bottom:12px}.src-badges{display:inline-flex;gap:4px;align-items:center}.src{font-size:11px;font-weight:600;padding:1px 6px;border-radius:var(--r-sm);line-height:18px;text-decoration:none}.src-wahoo{background:var(--brand-subtle);color:var(--brand-text)}.src-strava{background:var(--warning-bg);color:var(--warning)}a.src-strava:hover{text-decoration:underline}.src-upload{background:var(--bg-surface-3);color:var(--text-secondary)}.strava-note{position:fixed;left:50%;transform:translate(-50%);bottom:20px;z-index:45;max-width:min(640px,calc(100vw - 32px));display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-md);background:var(--warning-bg);color:var(--warning);box-shadow:var(--shadow-md);font-size:13px}.strava-note a{color:inherit;text-decoration:underline}.settings{padding:0;max-width:760px}.setting{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);cursor:pointer}.setting+.setting{border-top:1px solid var(--border)}.setting.off{cursor:not-allowed}@media (max-width: 860px){.setting{padding:var(--sp-4);align-items:flex-start}}.setting.off .setting-title{color:var(--text-secondary)}.setting-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.setting-title{font-weight:600}.setting-why{color:var(--warning);font-size:12px;margin-top:4px}.mono{font-family:var(--font-mono)}.err-text{color:var(--danger)}.warn-text{color:var(--warning)}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 16px}.meta-line{margin:-12px 0 12px;font-size:13px}.vid-title{word-break:break-word}.grid2{display:flex;gap:12px 16px;flex-wrap:wrap}.grid2 .field{flex:1 1 260px;min-width:0;margin-bottom:4px}.field.grow{flex:1 1 260px;min-width:0}.form-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:4px 0 24px}.linkish{background:none;border:none;padding:0;color:var(--brand-text);text-decoration:underline;cursor:pointer;font:inherit}.picked{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-surface-3)}.picked-name{font-family:var(--font-mono);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.upload-opts .field.grow{margin:0;display:block}.upload-opts .field.grow label{margin-bottom:6px}.progress-card{padding:14px 16px}.progress-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.err-banner{background:var(--danger-bg);color:var(--danger)}.vid-layout{display:grid;grid-template-columns:minmax(280px,2fr) 3fr;gap:20px;align-items:start}.vid-side{position:sticky;top:16px;min-width:0}.vid-main{min-width:0}.player{width:100%;max-height:70vh;background:#000;border-radius:var(--r-lg);border:1px solid var(--border);display:block}.kf-list{display:flex;flex-direction:column;gap:12px}.kf{margin:0;padding:14px 16px;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.kf.now{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.kf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.kf-n{font-weight:600}.kf-time{background:var(--bg-surface-3);border:1px solid var(--border);border-radius:var(--r-sm);padding:3px 8px;font-size:12px;color:var(--text-secondary);cursor:pointer}.kf-time:hover{border-color:var(--brand);color:var(--brand-text)}.kf-img{display:block;width:100%;height:auto;border-radius:var(--r-md);border:1px solid var(--border)}.kf-repeat{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kf-mini{height:56px;width:auto;border-radius:var(--r-sm);border:1px solid var(--border);margin-left:auto}.kf-region{margin-top:10px;font-size:12px}.crops{display:flex;align-items:center;gap:10px;margin-top:6px;flex-wrap:wrap}.crops img{max-width:calc(50% - 18px);max-height:180px;height:auto;border-radius:var(--r-sm);border:1px solid var(--border);background:repeating-conic-gradient(var(--bg-surface-3) 0% 25%,var(--bg-surface) 0% 50%) 50% / 12px 12px}.kf-text{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.tchip{font-size:12px;padding:2px 8px;border-radius:var(--r-sm);max-width:100%;overflow-wrap:anywhere}.tchip.add{background:var(--accent-subtle);color:var(--accent-text)}.tchip.del{background:var(--danger-bg);color:var(--danger);text-decoration:line-through}.kf-ocr{margin-top:10px;font-size:12px}.kf-ocr summary{cursor:pointer}.kf-ocr p{margin:6px 0 0;overflow-wrap:anywhere;color:var(--text-secondary)}.kf-speech{margin:10px 0 0;padding-left:10px;border-left:3px solid var(--border-strong)}.brief-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.md{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--font-mono);font-size:12.5px;line-height:1.55;max-height:70vh;overflow:auto;background:var(--bg-surface-3);padding:12px 14px;border-radius:var(--r-md)}.tseg{display:flex;gap:10px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--border)}.tseg:last-child{border-bottom:none}.backends{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-bottom:16px}.backend{display:flex;flex-direction:column;align-items:stretch;gap:6px;text-align:left;padding:12px 14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text-primary);height:auto}.backend-top{display:flex;align-items:center;gap:8px;font-weight:600}.backend.active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);background:var(--brand-subtle)}.backend.off{opacity:.6}.backend .hint{margin:0}@media (max-width: 860px){.vid-layout{grid-template-columns:1fr}.vid-side{position:static}.player{max-height:45vh}.crops img{max-width:100%}.meta-line{margin-top:-8px}}
