:root{--font-sans:"DM Sans", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--radius-sm:6px;--radius-md:8px;--radius-lg:12px}:root[data-theme=dark]{--bg:#0c0d11;--surface:#13141a;--surface-raised:#1a1b23;--border:#25262f;--hover:#ffffff0a;--text-primary:#e8e9ed;--text-secondary:#a4a6b3;--text-muted:#7e8090;--accent:#4a9eff;--accent-bg:#4a9eff1a;--accent-hover:#4a9eff26;--green:#22c55e;--green-bg:#22c55e1a;--red:#ef4444;--red-bg:#ef44441a;--amber:#f59e0b;--amber-bg:#f59e0b1a;--purple:#a855f7;--purple-bg:#a855f71a;--danger:#ef4444;--danger-bg:#ef444414;--chart-grid:#1e2130}:root[data-theme=light]{--bg:#f7f8fa;--surface:#fff;--surface-raised:#fff;--border:#e5e7eb;--hover:#0000000a;--text-primary:#111827;--text-secondary:#4b5563;--text-muted:#6b7280;--accent:#2563eb;--accent-bg:#2563eb14;--accent-hover:#2563eb1f;--green:#15803d;--green-bg:#15803d1a;--red:#b91c1c;--red-bg:#b91c1c1a;--amber:#b45309;--amber-bg:#b453091a;--purple:#7c3aed;--purple-bg:#7c3aed1a;--danger:#b91c1c;--danger-bg:#b91c1c14;--chart-grid:#e5e7eb}:root:not([data-theme]){--bg:#0c0d11;--surface:#13141a;--surface-raised:#1a1b23;--border:#25262f;--hover:#ffffff0a;--text-primary:#e8e9ed;--text-secondary:#a4a6b3;--text-muted:#7e8090;--accent:#4a9eff;--accent-bg:#4a9eff1a;--accent-hover:#4a9eff26;--green:#22c55e;--green-bg:#22c55e1a;--red:#ef4444;--red-bg:#ef44441a;--amber:#f59e0b;--amber-bg:#f59e0b1a;--purple:#a855f7;--purple-bg:#a855f71a;--danger:#ef4444;--danger-bg:#ef444414;--chart-grid:#1e2130}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);color:var(--text-primary);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.5}#root{min-height:100vh}html,body,.card,.app-nav,.app-main,.input,.select,.btn,.data-table th,.data-table td{transition:background-color .12s,color .12s,border-color .12s}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.spinner{border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen{justify-content:center;align-items:center;min-height:100vh;display:flex}.btn{border-radius:var(--radius-sm);font-family:var(--font-sans);cursor:pointer;border:none;align-items:center;gap:6px;padding:8px 16px;font-size:.875rem;font-weight:500;transition:background .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover);color:#fff}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--hover);color:var(--text-primary)}.btn-danger{background:var(--danger-bg);color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-bg);filter:brightness(1.1)}.input,.select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);outline:none;padding:8px 12px;font-size:.875rem;transition:border-color .15s}.input:focus,.select:focus{border-color:var(--accent)}.input::placeholder{color:var(--text-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-title{color:var(--text-primary);letter-spacing:-.02em;font-size:1.4rem;font-weight:600}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 14px}.data-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:500}.data-table tbody tr{transition:background .1s}.data-table tbody tr:hover{background:var(--hover)}.error-msg{border-radius:var(--radius-md);background:var(--danger-bg);color:var(--danger);padding:12px 16px;font-size:.875rem}.empty-state{text-align:center;color:var(--text-muted);padding:48px 24px}.theme-switcher{border-radius:var(--radius-sm);background:var(--hover);border:1px solid var(--border);align-items:center;gap:2px;padding:2px;display:inline-flex}.theme-switcher__option{appearance:none;color:var(--text-secondary);font-family:var(--font-sans);border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;background:0 0;border:0;padding:4px 10px;font-size:.75rem;font-weight:500;transition:background .15s,color .15s}.theme-switcher__option:hover{color:var(--text-primary)}.theme-switcher__option.is-checked{background:var(--surface);color:var(--text-primary);box-shadow:0 1px 2px #00000026}.theme-switcher__option:focus{outline:none}.theme-switcher__option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-layout{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.app-nav{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:24px;height:56px;padding:0 24px;display:flex}.nav-brand{align-items:center;gap:8px;margin-right:8px;display:flex}.nav-logo{font-size:1.3rem}.nav-title{font-family:var(--font-mono);color:var(--text-primary);letter-spacing:-.02em;font-size:.95rem;font-weight:500}.nav-links{gap:4px;display:flex}.nav-links a{color:var(--text-secondary);border-radius:6px;padding:6px 14px;font-size:.875rem;font-weight:450;text-decoration:none;transition:background .15s,color .15s}.nav-links a:hover{background:var(--hover);color:var(--text-primary)}.nav-links a.active{background:var(--accent-bg);color:var(--accent)}.nav-user{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-email{color:var(--text-secondary);font-size:.8rem}.nav-role{font-size:.7rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;background:var(--accent-bg);color:var(--accent);border-radius:4px;padding:2px 8px}.nav-logout{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px;font-size:.8rem;transition:background .15s,color .15s}.nav-logout:hover{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}.nav-profile-link{border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;padding:4px 10px;font-size:.8rem;text-decoration:none;transition:background .15s,color .15s}.nav-profile-link:hover{background:var(--hover);color:var(--text-primary)}.nav-profile-link.active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.app-main{box-sizing:border-box;flex:1;width:100%;max-width:1280px;margin:0 auto;padding:24px}.app-main:has(.session-detail){width:90vw;max-width:none}@media (width<=768px){.app-nav{flex-wrap:wrap;gap:12px;height:auto;padding:12px 16px}.nav-user{justify-content:flex-end;width:100%}.app-main{padding:16px}}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:380px;padding:32px}.login-header{text-align:center;margin-bottom:24px}.login-logo{margin-bottom:12px;font-size:2.2rem;display:block}.login-title{color:var(--text-primary);margin-bottom:4px;font-size:1.25rem;font-weight:600}.login-subtitle{color:var(--text-secondary);font-size:.85rem}.login-form{flex-direction:column;gap:16px;display:flex}.form-field{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);font-size:.8rem;font-weight:500}.login-form .input{width:100%}.login-btn{justify-content:center;width:100%;margin-top:4px;padding:10px 16px}.login-footer{text-align:center;color:var(--text-muted);margin-top:20px;font-size:.75rem}.spinner-sm{border-width:2px;width:18px;height:18px}.login-card .error-msg{margin-bottom:16px}.filters{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.filter-input{width:180px}.session-count{color:var(--text-muted);font-size:.85rem;font-family:var(--font-mono)}.table-wrap{width:100%;padding:0;overflow:hidden}.table-wrap .data-table{table-layout:fixed;width:100%}.table-wrap .data-table th,.table-wrap .data-table td{white-space:nowrap}.table-wrap .data-table td.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-row{cursor:pointer}.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none}.sortable-th:hover{color:var(--text-secondary)}.sort-arrow{font-size:.75rem}.type-badge{font-size:.75rem;font-family:var(--font-mono);text-transform:capitalize;background:var(--surface-raised);border-radius:4px;padding:2px 8px}.owner-cell{color:var(--text-secondary);font-style:italic}.best-time{font-family:var(--font-mono);color:var(--purple)}.btn-sm{padding:4px 10px;font-size:.78rem}.pagination{justify-content:center;align-items:center;gap:16px;margin-top:16px;display:flex}.pagination-info{color:var(--text-secondary);font-size:.85rem}.modal-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:90%;max-width:400px;padding:24px}.modal-title{color:var(--text-primary);margin-bottom:8px;font-size:1.1rem;font-weight:600}.modal-text{color:var(--text-secondary);margin-bottom:20px;font-size:.875rem;line-height:1.5}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.lap-table{font-family:var(--font-mono);font-size:.875rem}.lap-row{cursor:pointer}.lap-row--selected{background:var(--accent-bg)}.lap-best{color:var(--purple);font-weight:600}.delta-pos{color:var(--red)}.channel-grid{grid-template-columns:1fr;gap:16px;display:grid}.channel-chart{background:var(--surface-raised);border-radius:var(--radius-md);height:260px;padding:14px;position:relative}.track-map{background:var(--surface-raised);border-radius:var(--radius-md);box-sizing:border-box;width:100%;padding:14px}.track-map__svg{width:100%;height:auto;display:block}.track-map-empty{color:var(--text-muted);text-align:center;padding:24px;font-size:.85rem}.track-map__legend{align-items:center;gap:8px;margin-top:8px;font-size:.75rem;display:flex}.track-map__legend-label{color:var(--text-secondary);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;font-weight:500}.track-map__gradient{background:linear-gradient(90deg,#00f,#0f0,red);border-radius:3px;flex:1;height:6px}.track-map__legend-range{width:60px;color:var(--text-muted);font-family:var(--font-mono);justify-content:space-between;font-size:.7rem;display:flex}.telemetry-two-col-card{flex-direction:column;gap:16px;display:flex}.telemetry-two-col__controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.telemetry-two-col{grid-template-columns:minmax(320px,480px) 1fr;align-items:start;gap:24px;display:grid}.telemetry-two-col__sidebar{flex-direction:column;gap:16px;display:flex}.telemetry-two-col__picker{display:block}.telemetry-two-col__traces[data-fill=true]{grid-column:1/-1}@media (width<=1023px){.telemetry-two-col{grid-template-columns:1fr}}.channel-picker{color:var(--text-secondary);flex-direction:column;align-items:stretch;gap:10px;font-size:.85rem;display:flex}.channel-picker__label{font-weight:500}.channel-picker__options{flex-direction:column;gap:6px;display:flex}.channel-picker__option{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 10px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.channel-picker__option:hover{background:var(--hover);color:var(--text-primary)}.channel-picker__option input[type=checkbox]{accent-color:var(--accent);cursor:pointer;margin:0}.channel-picker__option:has(input:checked){border-color:var(--accent);color:var(--text-primary);background:var(--accent-bg)}.channel-picker__option:focus-within,.channel-picker__option input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.coaching-panel{flex-direction:column;gap:16px;display:flex}.coaching-panel__actions{align-items:center;gap:12px;display:flex}.coaching-panel__lap-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;outline:none;padding:6px 10px;font-size:.85rem}.coaching-panel__lap-select:focus{border-color:var(--accent)}.coaching-panel__loading{color:var(--text-secondary);flex-direction:column;align-items:center;gap:12px;padding:40px 24px;font-size:.875rem;display:flex}.coaching-panel__error{border-radius:var(--radius-md);background:var(--danger-bg);color:var(--danger);justify-content:space-between;align-items:center;padding:12px 16px;font-size:.875rem;display:flex}.coaching-panel__error-text{flex:1;margin-right:12px}.coaching-report{flex-direction:column;gap:16px;display:flex}.coaching-report__section{border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);padding:16px}.coaching-report__section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin:0 0 10px;font-size:.8rem;font-weight:600}.coaching-report__section-body{color:var(--text-primary);font-size:.875rem;line-height:1.65}.coaching-report__meta{color:var(--text-muted);flex-wrap:wrap;gap:16px;font-size:.75rem;display:flex}.coaching-report__meta-item{align-items:center;gap:4px;display:flex}.coaching-report__toolbar{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.coaching-report__content{flex-direction:column;gap:16px;display:flex}.coaching-report__header{flex-wrap:wrap;gap:10px;display:flex}.coaching-report__pill{border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);flex-direction:column;flex:1;gap:2px;min-width:120px;padding:10px 14px;display:flex}.coaching-report__pill-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.7rem;font-weight:600}.coaching-report__pill-value{color:var(--text-primary);font-size:.95rem;font-weight:600}.coaching-report__callout{border-radius:var(--radius-md);background:var(--accent-bg);border:1px solid var(--accent);padding:16px 20px}.coaching-report__callout-row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.coaching-report__callout-col{flex-direction:column;gap:2px;display:flex}.coaching-report__callout-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.7rem;font-weight:600}.coaching-report__callout-value{font-variant-numeric:tabular-nums;color:var(--text-primary);font-size:1.4rem;font-weight:700}.coaching-report__callout-value--target{color:var(--accent)}.coaching-report__callout-arrow{color:var(--text-muted);font-size:1.4rem}.coaching-report__callout-delta{font-variant-numeric:tabular-nums;color:var(--success,#2ca96a);margin-left:auto;font-size:1.2rem;font-weight:700}.coaching-report__lhf{border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);padding:16px}.coaching-report__lhf-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.coaching-report__lhf-card{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);gap:12px;padding:12px;display:flex}.coaching-report__lhf-rank{background:var(--accent);width:28px;height:28px;color:var(--accent-contrast,#fff);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.coaching-report__lhf-body{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.coaching-report__lhf-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.coaching-report__lhf-corner{color:var(--text-primary);font-size:.9rem;font-weight:600}.coaching-report__lhf-chip{background:var(--surface-raised);border:1px solid var(--border);color:var(--text-secondary);text-transform:capitalize;border-radius:999px;padding:2px 8px;font-size:.7rem}.coaching-report__lhf-gain{font-variant-numeric:tabular-nums;color:var(--success,#2ca96a);border-radius:var(--radius-sm);background:#2ca96a26;margin-left:auto;padding:2px 8px;font-size:.85rem;font-weight:700}.coaching-report__lhf-fix{color:var(--text-secondary);margin:0;font-size:.85rem;line-height:1.55}.coaching-report__corner-table-wrap{border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);padding:16px;overflow-x:auto}.coaching-report__corner-table{border-collapse:collapse;width:100%;font-size:.82rem}.coaching-report__corner-table th,.coaching-report__corner-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:8px 10px}.coaching-report__corner-th{background:var(--surface);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;font-weight:600}.coaching-report__corner-th:hover{color:var(--text-primary)}.coaching-report__corner-th.is-active{color:var(--accent)}.coaching-report__corner-advice{max-width:360px;line-height:1.5}.coaching-report__corner-cell{white-space:nowrap;min-width:220px;color:var(--text-primary);font-weight:600}.coaching-report__corner-data{color:var(--text-secondary);margin:0;padding-left:16px;font-size:.78rem;line-height:1.5}.coaching-report__corner-gain{font-variant-numeric:tabular-nums;color:var(--success,#2ca96a);white-space:nowrap;font-weight:600}.coaching-panel__progress{border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);flex-direction:column;gap:10px;padding:16px;display:flex}.coaching-panel__progress-title{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-size:.8rem;font-weight:600}.coaching-panel__progress-empty{color:var(--text-secondary);align-items:center;gap:10px;font-size:.85rem;display:flex}.coaching-panel__progress-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.coaching-panel__progress-item{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);align-items:center;gap:10px;padding:8px 10px;font-size:.85rem;display:flex}.coaching-panel__progress-item.is-completed{border-color:var(--success,#2ca96a)}.coaching-panel__progress-item.is-failed{border-color:var(--danger);background:var(--danger-bg)}.coaching-panel__progress-icon{justify-content:center;align-items:center;width:20px;height:20px;font-weight:700;display:inline-flex}.coaching-panel__progress-item.is-completed .coaching-panel__progress-icon{color:var(--success,#2ca96a)}.coaching-panel__progress-item.is-failed .coaching-panel__progress-icon{color:var(--danger)}.coaching-panel__progress-agent{color:var(--text-primary);text-transform:capitalize;font-weight:600}.coaching-panel__progress-detail{font-variant-numeric:tabular-nums;color:var(--text-muted);margin-left:auto;font-size:.8rem}.spinner--sm{border-width:2px;width:14px;height:14px}.coaching-panel__history{flex-direction:column;gap:6px;display:flex}.coaching-panel__history-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:.8rem;font-weight:500}.coaching-panel__history-item{border-radius:var(--radius-sm);border:1px solid var(--border);align-items:center;gap:8px;transition:background .15s;display:flex}.coaching-panel__history-item:hover{background:var(--hover)}.coaching-panel__history-item--active{background:var(--accent-bg);border-color:var(--accent)}.coaching-panel__history-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex:1;justify-content:space-between;align-items:center;padding:8px 12px;font-size:.8rem;display:flex}.coaching-panel__history-item--active .coaching-panel__history-btn{color:var(--accent)}.coaching-panel__history-delete{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-right:6px;font-size:.75rem;transition:background .15s,color .15s;display:flex}.coaching-panel__history-delete:hover{background:var(--danger-bg);color:var(--danger)}.coaching-report__markdown h3,.coaching-report__markdown h4,.coaching-report__markdown h5,.coaching-report__markdown h6{color:var(--text-primary);margin:16px 0 8px;font-size:.9rem;font-weight:600}.coaching-report__markdown h3:first-child,.coaching-report__markdown h4:first-child{margin-top:0}.coaching-report__markdown p{margin:8px 0;line-height:1.65}.coaching-report__markdown ul,.coaching-report__markdown ol{margin:8px 0;padding-left:20px}.coaching-report__markdown li{margin:4px 0;line-height:1.6}.coaching-report__markdown strong{color:var(--text-primary);font-weight:600}.coaching-report__markdown table{border-collapse:collapse;width:100%;margin:12px 0;font-size:.8rem}.coaching-report__markdown th,.coaching-report__markdown td{border:1px solid var(--border);text-align:left;padding:6px 10px}.coaching-report__markdown th{background:var(--surface);color:var(--text-secondary);font-weight:600}.coaching-report__markdown code{background:var(--surface);border-radius:3px;padding:2px 5px;font-size:.8rem}.coaching-report__markdown pre{background:var(--surface);border-radius:var(--radius-sm);padding:12px;font-size:.8rem;line-height:1.5;overflow-x:auto}.coaching-report__markdown blockquote{border-left:3px solid var(--accent);color:var(--text-secondary);margin:12px 0;padding:4px 12px}.chat-panel{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;height:500px;display:flex;overflow:hidden}.chat-panel__conv-bar{border-bottom:1px solid var(--border);background:var(--surface-raised);flex-shrink:0;align-items:center;gap:8px;padding:8px 16px;display:flex}.chat-panel__conv-label{color:var(--text-muted);white-space:nowrap;font-size:.75rem;font-weight:600}.chat-panel__conv-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;outline:none;flex:1;padding:4px 8px;font-size:.8rem}.chat-panel__conv-select:focus{border-color:var(--accent)}.chat-panel__messages{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.chat-panel__empty{color:var(--text-muted);flex:1;justify-content:center;align-items:center;font-size:.875rem;display:flex}.chat-bubble{border-radius:var(--radius-md);white-space:pre-wrap;word-break:break-word;max-width:80%;padding:10px 14px;font-size:.875rem;line-height:1.6}.chat-bubble--user{background:var(--accent);color:#fff;border-bottom-right-radius:2px;align-self:flex-end}.chat-bubble--assistant{background:var(--surface-raised);color:var(--text-primary);border:1px solid var(--border);border-bottom-left-radius:2px;align-self:flex-start}.chat-bubble__role{text-transform:uppercase;letter-spacing:.04em;opacity:.7;margin-bottom:4px;font-size:.7rem;font-weight:600}.chat-typing{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);border-bottom-left-radius:2px;align-self:flex-start;align-items:center;gap:4px;padding:10px 14px;display:flex}.chat-typing__dot{background:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite chat-bounce}.chat-typing__dot:nth-child(2){animation-delay:.15s}.chat-typing__dot:nth-child(3){animation-delay:.3s}@keyframes chat-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.chat-error{border-radius:var(--radius-sm);background:var(--danger-bg);color:var(--danger);align-items:center;gap:10px;padding:8px 12px;font-size:.8rem;display:flex}.chat-error__text{flex:1}.chat-error__resend{border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;padding:4px 10px;font-size:.75rem;transition:background .15s}.chat-error__resend:hover{background:#ef444426}.chat-panel__input-area{border-top:1px solid var(--border);background:var(--surface-raised);align-items:center;gap:8px;padding:12px 16px;display:flex}.chat-panel__input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);resize:none;outline:none;flex:1;min-height:38px;max-height:100px;padding:8px 12px;font-size:.875rem;transition:border-color .15s}.chat-panel__input:focus{border-color:var(--accent)}.chat-panel__input::placeholder{color:var(--text-muted)}.chat-panel__send{border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;transition:background .15s,opacity .15s;display:inline-flex}.chat-panel__send:hover:not(:disabled){background:#3b8de6}.chat-panel__send:disabled{opacity:.4;cursor:not-allowed}.chat-bubble__content{white-space:pre-wrap;word-break:break-word}.chat-bubble__refs{border-top:1px solid #ffffff1a;flex-wrap:wrap;gap:6px;margin-top:8px;padding-top:6px;display:flex}.chat-bubble--assistant .chat-bubble__refs{border-top-color:var(--border)}.chat-ref-link{border-radius:var(--radius-sm);border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;align-items:center;gap:4px;padding:2px 8px;font-size:.7rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.chat-ref-link:hover{background:var(--accent);color:#fff}.session-detail{flex-direction:column;gap:20px;display:flex}.back-link{color:var(--text-secondary);font-size:.85rem;text-decoration:none;transition:color .15s}.back-link:hover{color:var(--accent)}.session-meta{flex-wrap:wrap;gap:24px;display:flex}.section-title{color:var(--text-primary);margin-bottom:14px;font-size:1rem;font-weight:600}.traces-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.traces-header .section-title{margin-bottom:0}.traces-controls{align-items:center;gap:12px;display:flex}.control-label{color:var(--text-secondary);align-items:center;gap:6px;font-size:.85rem;display:flex}.session-tabs{border-bottom:1px solid var(--border);gap:4px;padding-bottom:0;display:flex}.session-tab{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 18px;font-size:.875rem;font-weight:500;transition:color .15s,border-color .15s}.session-tab:hover{color:var(--text-primary)}.session-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.driver-prompt{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.driver-prompt--done{color:var(--green)}.driver-prompt__label{color:var(--amber);margin-bottom:12px;font-size:.9rem}.driver-prompt__actions{flex-direction:column;gap:14px;display:flex}.driver-prompt__assign{flex-direction:column;gap:6px;display:flex}.driver-prompt__assign-row{gap:8px;display:flex}.driver-prompt__assign-row .input{flex:1}.upload-page{max-width:720px;margin:0 auto}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);text-align:center;cursor:pointer;margin-bottom:20px;padding:56px 24px;transition:border-color .2s,background .2s}.drop-zone:hover,.drop-zone--active{border-color:var(--accent);background:var(--accent-bg)}.drop-zone__icon{margin-bottom:12px;font-size:2.5rem;display:block}.drop-zone__text{color:var(--text-primary);margin-bottom:4px;font-size:1rem}.drop-zone__hint{color:var(--text-muted);font-size:.8rem}.drop-zone__uploading{color:var(--text-secondary);flex-direction:column;align-items:center;gap:12px;display:flex}.upload-result{margin-top:20px}.upload-result__title{color:var(--green);margin-bottom:16px;font-size:1.1rem;font-weight:600}.meta-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin-bottom:20px;display:grid}.meta-item{flex-direction:column;gap:2px;display:flex}.meta-item__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;font-weight:500}.meta-item__value{color:var(--text-primary);font-size:.95rem}.missing-meta{border-top:1px solid var(--border);padding-top:16px}.missing-meta__label{color:var(--amber);margin-bottom:12px;font-size:.85rem}.missing-meta__fields{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:14px;display:grid}.missing-meta .input{width:100%}.user-driver-select{flex-direction:column;flex:1;gap:8px;min-width:220px;display:flex}.user-driver-select__label{font-size:.8rem;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.user-driver-select__field{flex-direction:column;gap:4px;display:flex}.user-driver-select__hint{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.user-driver-select .select:disabled{opacity:.55;cursor:not-allowed}.compare-page{max-width:1100px;margin:0 auto}.compare-selectors{flex-wrap:wrap;align-items:flex-end;gap:20px;margin-bottom:20px;display:flex}.compare-col{flex-direction:column;flex:1;gap:8px;min-width:200px;display:flex}.compare-label{font-size:.8rem;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.compare-btn{align-self:flex-end}.compare-track{color:var(--text-secondary);margin-bottom:16px;font-size:.9rem}.compare-results{flex-direction:column;gap:20px;display:flex}.delta-chart-wrap{height:220px;position:relative}.compare-channels .channel-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.compare-channels .channel-chart{background:var(--surface-raised);border-radius:var(--radius-md);height:260px;padding:14px;position:relative}@media (width<=768px){.compare-selectors{flex-direction:column}.compare-channels .channel-grid{grid-template-columns:1fr}}.compare-empty{flex-direction:column;align-items:flex-start;gap:12px;padding:32px;display:flex}.compare-empty__hint{color:var(--text-secondary);margin-bottom:8px;font-size:.95rem}.admin-page{max-width:900px;margin:0 auto}.add-user-form{margin-bottom:20px}.add-user-form .section-title{margin-bottom:12px}.form-row{flex-wrap:wrap;gap:14px;margin-bottom:14px;display:flex}.form-row .form-field{flex:1;min-width:180px}.form-row .input,.form-row .select{width:100%}.role-badge{font-size:.72rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:2px 8px}.role-admin{background:var(--purple-bg);color:var(--purple)}.role-user{background:var(--accent-bg);color:var(--accent)}.admin-row-actions{justify-content:flex-end;gap:8px;display:flex}.admin-edit-modal{flex-direction:column;gap:16px;width:100%;max-width:480px;display:flex}.admin-edit-modal .form-field{flex-direction:column;gap:6px;display:flex}.admin-edit-modal .alias-list__items{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.admin-edit-modal .alias-list__item{background:var(--bg);border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.admin-edit-modal .alias-list__value{color:var(--text-primary);font-size:.9rem;font-family:var(--font-mono)}.admin-edit-modal .alias-list__empty{color:var(--text-muted);margin:0;font-size:.85rem}.admin-edit-modal .alias-list__add{align-items:center;gap:8px;margin-top:8px;display:flex}.admin-edit-modal .alias-list__add .input{flex:1}.profile-page{flex-direction:column;gap:20px;max-width:720px;display:flex}.profile-section{flex-direction:column;gap:16px;display:flex}.section-hint{color:var(--text-secondary);margin:0;font-size:.85rem}.profile-identity{flex-direction:column;gap:10px;margin:0;display:flex}.profile-identity__row{align-items:center;gap:12px;display:flex}.profile-identity__row dt{width:110px;color:var(--text-secondary);margin:0;font-size:.8rem}.profile-identity__row dd{color:var(--text-primary);margin:0;font-size:.9rem}.profile-display-name{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding-top:12px;display:flex}.profile-display-name--editing{flex-direction:column;align-items:stretch}.profile-display-name__value{flex-direction:column;gap:4px;display:flex}.profile-display-name__text{color:var(--text-primary);font-size:.95rem}.profile-display-name__actions{justify-content:flex-end;gap:8px;display:flex}.alias-list{flex-direction:column;gap:12px;display:flex}.alias-list__empty{color:var(--text-muted);margin:0;font-size:.85rem}.alias-list__items{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.alias-list__item{background:var(--bg);border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.alias-list__value{color:var(--text-primary);font-size:.9rem;font-family:var(--font-mono)}.alias-list__add{border-top:1px solid var(--border);align-items:flex-end;gap:12px;padding-top:12px;display:flex}.alias-list__field{flex:1}
