:root{--color-bg: #f3f6f8;--color-surface: #ffffff;--color-surface-muted: #f6f9fa;--color-border: #e0e7eb;--color-border-strong: #cbd8dd;--color-text: #142027;--color-text-muted: #5c7079;--color-text-faint: #8a9aa1;--color-primary: #0b6f8a;--color-primary-dark: #085a70;--color-primary-soft: rgba(11, 111, 138, .1);--color-primary-soft-strong: rgba(11, 111, 138, .16);--color-danger: #b8402f;--color-danger-soft: #fdf1ef;--color-danger-border: #f1c7bd;--color-success-bg: #ecf8f2;--color-success-border: #bfe3cd;--color-success-text: #1d5c3f;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(20, 32, 39, .05);--shadow-sm: 0 2px 8px rgba(20, 32, 39, .06);--shadow-md: 0 8px 24px rgba(20, 32, 39, .08);--shadow-lg: 0 20px 48px rgba(20, 32, 39, .14);color:var(--color-text);background:var(--color-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}::selection{background:var(--color-primary-soft-strong)}button{border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font:inherit;font-weight:600;padding:10px 16px;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease}button:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-primary-soft-strong)}a.button-link{border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;display:inline-block;font-weight:600;padding:10px 16px;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease}a.button-link:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}a.button-link:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.5}input,select,textarea{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text);font:inherit;min-height:40px;padding:9px 11px;transition:border-color .15s ease,box-shadow .15s ease;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}textarea{resize:vertical}.app-shell{min-height:100vh;padding:32px}.workspace{margin:0 auto;max-width:1180px}.topbar{align-items:center;border-bottom:1px solid var(--color-border);display:flex;gap:20px;justify-content:space-between;margin-bottom:28px;padding-bottom:20px}.eyebrow{align-items:center;color:var(--color-text-muted);display:flex;font-size:13px;font-weight:700;gap:8px;letter-spacing:.02em;margin:0 0 6px;text-transform:uppercase}.swimmer-edit-btn{background:transparent;border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);color:var(--color-primary);font-size:11px;font-weight:600;padding:3px 10px;text-transform:none}.swimmer-edit-btn:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}h1,h2,p{margin-top:0}h1{font-size:30px;font-weight:700;letter-spacing:-.01em;line-height:1.2;margin-bottom:0}h2{font-size:18px;font-weight:700;letter-spacing:-.01em;margin-bottom:0}.muted{color:var(--color-text-muted);font-size:13px}.status{border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);color:var(--color-text-muted);font-size:13px;font-weight:600;padding:6px 12px}.notice{background:var(--color-success-bg);border:1px solid var(--color-success-border);border-radius:var(--radius-md);color:var(--color-success-text);margin-bottom:18px;padding:12px 16px}.notice.error{background:var(--color-danger-soft);border-color:var(--color-danger-border);color:var(--color-danger)}.submit-success{font-size:15px;font-weight:700;padding:16px 18px}.layout{display:grid;gap:20px;grid-template-columns:minmax(0,1fr) 340px}.main-column,.side-column{display:grid;gap:20px}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:24px}.panel--full-bleed{border-left:none;border-radius:0;border-right:none;box-shadow:none;margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:20px;padding-right:20px;width:auto}.panel-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.panel-header-actions{align-items:center;display:flex;gap:10px}.empty-state{align-items:center;border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);color:var(--color-text-muted);display:flex;min-height:320px;padding:24px}.empty-state p{max-width:560px}.session-list{display:grid;gap:10px}.session-row{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);display:flex;justify-content:space-between;min-height:68px;padding:12px 16px;text-align:left;transition:border-color .15s ease,box-shadow .15s ease,transform .05s ease;width:100%}.session-row:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.session-row.active{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-soft)}.session-row strong,.session-row small{display:block}.session-row small{color:var(--color-text-muted);margin-top:4px}.session-row em{color:#8a4f12;font-size:13px;font-style:normal;white-space:nowrap}.form-grid{display:grid;gap:14px}.hearing-grid{gap:18px;grid-template-columns:minmax(0,1fr)}.gform-title-card{background:var(--color-surface);border-radius:var(--radius-lg);border-top:6px solid var(--color-primary);box-shadow:var(--shadow-sm);margin-bottom:20px;padding:28px 28px 24px}.gform-title-card h2{margin-bottom:10px}.gform-title-card .hint+.hint{margin-top:6px}.gform-section-title{margin:10px 4px 0}.gform-section-title:first-child{margin-top:0}.gform-section-title h3{color:var(--color-text);font-size:16px}.gform-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:22px 24px}.gform-card label:has(>input:required,>select:required)>.field-label:after{color:var(--color-danger);content:" *"}.gform-card .radio-fieldset:has(:required)>legend:after{color:var(--color-danger);content:" *"}.radio-fieldset{border:none;display:grid;gap:8px;margin:0;padding:0}.radio-fieldset legend{color:var(--color-text-muted);font-size:13px;font-weight:700;padding:0}.radio-group{display:flex;flex-wrap:wrap;gap:8px 18px}.radio-option{align-items:center;color:var(--color-text);display:flex;font-size:14px;font-weight:400;gap:6px}.radio-option input{min-height:auto;width:auto}.stack-form{display:grid;gap:14px;margin-top:18px}label{color:var(--color-text-muted);display:grid;font-size:13px;font-weight:700;gap:7px}.form-actions{align-items:end;display:flex;justify-content:flex-end}.hint{color:var(--color-text-muted);font-size:13px;margin:0}.raw-data-summary{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-top:16px;padding:12px 14px}.raw-data-summary p{color:var(--color-text-muted);font-size:13px}.eo-credential-row{align-items:center;background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);display:flex;gap:8px;justify-content:space-between;padding:10px 14px}.eo-credential-row+.eo-credential-row{margin-top:8px}.credential-delete-btn{background:transparent;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-danger);font-size:12px;min-height:auto;padding:5px 10px}.credential-delete-btn:disabled{cursor:wait;opacity:.6}.raw-data-summary p+p{margin-top:6px}.form-actions{grid-column:1 / -1}.brand{color:inherit;text-decoration:none}.auth-status{align-items:center;display:flex;gap:12px}.login-link{color:var(--color-primary);font-weight:700}.app-body{margin:0 auto;max-width:1180px;padding:32px}.results-page{max-width:none}.page-narrow{margin:0 auto;max-width:640px;padding:32px}.wizard-toggle{background:transparent;border:1.5px dashed var(--color-primary);color:var(--color-primary);margin-bottom:16px;width:100%}.wizard-toggle:hover:not(:disabled){background:var(--color-primary-soft)}.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}button.primary{background:var(--color-primary);width:100%}.share-url-box{align-items:center;background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;gap:12px;justify-content:space-between;margin:12px 0;padding:10px 14px}.share-url-box code{overflow-wrap:anywhere}.data-source-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.data-source-card{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);display:grid;gap:8px;padding:14px}.results-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.results-actions{display:flex;flex-wrap:wrap;gap:10px}.tabs{background:var(--color-surface-muted);border-radius:var(--radius-pill);display:inline-flex;gap:4px;margin-bottom:16px;padding:4px;width:fit-content}.tabs button{background:transparent;border:none;border-radius:var(--radius-pill);color:var(--color-text-muted);padding:8px 18px}.tabs button:hover:not(.active){background:var(--color-surface);color:var(--color-text)}.tabs button.active{background:var(--color-primary);box-shadow:var(--shadow-xs);color:#fff}.viewer-body{display:flex;gap:14px;margin:0 auto;max-width:1600px}.view-grid{display:flex;flex:1 1 0;flex-direction:column;gap:12px;min-width:0}.view-row{display:grid;gap:12px;grid-template-columns:1fr 1fr;min-width:0}.view-cell{aspect-ratio:16 / 9;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;padding:10px}.view-title{color:var(--color-text-muted);flex:0 0 auto;font-size:12px;font-weight:700;margin:0 0 4px}.view-cell-header{align-items:center;display:flex;flex:0 0 auto;justify-content:space-between;margin-bottom:4px}.view-cell-header .view-title{margin:0}.view-flip-btn{background:var(--color-surface);border:1px solid var(--color-border-strong);color:var(--color-text-muted);font-size:11px;font-weight:600;padding:3px 10px}.view-flip-btn:hover:not(:disabled){background:var(--color-surface-muted);border-color:var(--color-primary);color:var(--color-primary)}.plot-canvas{flex:1 1 0;min-height:0;min-width:0;width:100%}.video-container{align-items:center;background:#000;border-radius:var(--radius-sm);display:flex;flex:1 1 0;justify-content:center;min-height:0;overflow:hidden}.video-container .muted{color:#94a3b8}.sync-video{background:#000;height:100%;object-fit:contain;width:100%}.video-upload-form{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px}.skeleton-tab{display:flex;flex-direction:column;gap:14px}.skeleton-controls-panel{display:flex;flex-direction:column;gap:10px}.skeleton-controls-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.progress-bar-wrap{background:var(--color-surface-muted);border-radius:var(--radius-pill);height:8px;overflow:hidden;width:100%}.progress-bar-fill{background:var(--color-primary);height:100%;transition:width .3s ease}.skeleton-bone-toggle{align-items:center;color:var(--color-text-muted);display:flex;font-size:13px;gap:8px}.skeleton-bone-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.skeleton-bone-grid label{color:var(--color-text-muted);display:flex;flex-direction:column;font-size:12px;gap:4px}.skeleton-viewer-body{max-width:1600px;margin:0 auto}.skeleton-view-row{grid-template-columns:1fr 1fr}.pose3d-canvas{display:block;flex:1 1 0;height:100%;min-height:0;min-width:0;width:100%}.skeleton-scrubber{width:100%}.video-upload-form label{color:var(--color-text-muted);display:flex;flex-direction:column;font-size:11px;gap:2px}.video-upload-form input[type=number]{width:110px}.video-upload-form button{padding:8px 14px}.comment-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);display:flex;flex:0 0 clamp(170px,16vw,220px);flex-direction:column;min-height:0;overflow:hidden;padding:12px}.comment-panel .comment-list{flex:1 1 0;max-height:none;overflow-y:auto}.comment-input-wrap{border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-top:8px}.comment-input-wrap textarea{border-radius:var(--radius-sm);font-family:inherit;font-size:12px;min-height:auto;padding:6px 8px;resize:vertical}.comment-add-btn{align-self:flex-end;border-radius:var(--radius-pill);font-size:11px;padding:6px 14px}.controls{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);margin-top:16px;padding:12px 16px}.controls-row{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:8px}.time-label{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}.offset-label{align-items:center;color:var(--color-text-muted);display:inline-flex;flex-shrink:0;font-size:12px;gap:6px;margin-left:auto;white-space:nowrap}.offset-input{min-height:auto;padding:5px 8px;width:70px}.comparison-delete-btn{background:transparent;border:none;color:var(--color-danger);font-size:11px;min-height:auto;padding:2px 4px}.sync-status{align-items:center;display:inline-flex;flex-shrink:0;font-size:12px;gap:6px;margin:0 0 0 8px;white-space:nowrap}.sync-status--error{color:var(--color-danger)}.play-btn{border-radius:var(--radius-pill);flex-shrink:0;min-width:68px;padding:7px 16px}.play-speed-group{background:var(--color-surface-muted);border-radius:var(--radius-pill);display:inline-flex;flex-shrink:0;gap:2px;padding:3px}.play-speed-btn{background:transparent;border:none;border-radius:var(--radius-pill);color:var(--color-text-muted);min-width:42px;padding:5px 10px}.play-speed-btn:hover:not(.play-speed-btn-active):not(:disabled){background:var(--color-surface);color:var(--color-text)}.play-speed-btn-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.vector-toggle-btn{background:var(--color-surface-muted);flex-shrink:0}.scrubber-wrap{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:grab;height:96px;outline:none;touch-action:none}.scrubber-wrap:focus-visible{box-shadow:0 0 0 3px var(--color-primary-soft-strong)}.fy-chart{display:block;height:100%;width:100%}.vector-controls-row{align-items:center;border-top:1px solid var(--color-border);display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;padding-top:12px}.vector-controls-label{color:var(--color-text-muted);font-size:12px;font-weight:700}.vector-readout{display:flex;flex-direction:column;gap:10px;margin-top:12px}.vector-readout-row{align-items:flex-start;display:flex;gap:14px}.vector-readout-axis{color:var(--color-text-muted);flex:0 0 130px;font-size:12px;font-weight:700;padding-top:3px}.vector-readout-hands{display:flex;flex:1 1 auto;flex-direction:column;gap:6px;min-width:0}.vector-readout-hand{align-items:center;color:var(--color-text-muted);display:flex;flex-wrap:wrap;font-size:12px;font-variant-numeric:tabular-nums;gap:10px}.vector-readout-side{flex:0 0 16px;font-size:12px;font-weight:700}.vector-readout-side.is-left{color:var(--color-primary)}.vector-readout-side.is-right{color:#c2410c}.lvl-meter-wrap{flex:0 0 auto;padding-top:9px;position:relative}.lvl-meter{display:flex;gap:3px}.lvl-seg{background:var(--color-border);border-radius:3px;display:inline-block;height:14px;width:14px}.lvl-seg.is-center{background:var(--color-text-faint)}.lvl-seg.is-filled.is-left{background:var(--color-primary)}.lvl-seg.is-filled.is-right{background:#c2410c}.lvl-comparison-marker{border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid rgba(124,58,237,.95);filter:drop-shadow(0 1px 1px rgba(20,32,39,.25));position:absolute;top:0;transform:translate(-50%);z-index:2}.lvl-comparison-marker.is-right{border-top-color:#db2777f2}.vector-readout-numbers{color:var(--color-text-muted);white-space:nowrap}.vector-readout-numbers strong{color:var(--color-text);font-size:14px}.vector-readout-cmp{color:var(--color-text-faint)}.vector-readout-raw{color:var(--color-text-faint);font-size:11px;margin-left:4px}.comment-list{display:flex;flex-direction:column;gap:6px;list-style:none;margin:0 0 14px;max-height:220px;overflow-y:auto;padding:0}.comment-list li{flex-shrink:0}.comment-list li{align-items:center;background:var(--color-surface-muted);border-radius:var(--radius-sm);display:flex;gap:10px;padding:8px 10px}.comment-list li.comment-item{align-items:stretch;background:var(--color-surface);border-left:2px solid transparent;border-radius:var(--radius-sm);flex-direction:column;gap:1px;padding:7px 9px;transition:background-color .15s ease}.comment-list li.comment-item:hover{background:var(--color-surface-muted)}.comment-list li.comment-item--active{background:var(--color-primary-soft);border-left-color:var(--color-primary)}.comment-list li.comment-item--active:hover{background:var(--color-primary-soft-strong)}.comment-item--active .comment-time{color:var(--color-primary-dark)}.comment-item-head{align-items:center;display:flex;justify-content:space-between}.comment-time{background:transparent;border:none;color:var(--color-primary);font-size:10.5px;font-weight:700;padding:0;white-space:nowrap}.comment-list li span{flex:1}.comment-text{color:var(--color-text-muted);font-size:11.5px;line-height:1.45;white-space:pre-wrap}.comment-empty{background:none;color:var(--color-text-faint);font-size:12px;padding:14px 4px;text-align:center}.comment-delete{background:transparent;border:none;color:var(--color-danger);font-size:10px;opacity:0;padding:2px 4px;transition:opacity .15s ease}.comment-item:hover .comment-delete,.comment-item:focus-within .comment-delete{opacity:.7}.comment-delete:hover{opacity:1!important}.comment-form{display:flex;gap:10px}.report-content{color:var(--color-text);line-height:1.8}.report-content :is(h1,h2,h3,h4){line-height:1.4;margin:1.4em 0 .6em}.report-content :is(h1,h2,h3,h4):first-child{margin-top:0}.report-content h1{border-bottom:2px solid var(--color-primary);font-size:1.5em;padding-bottom:.3em}.report-content h2{border-bottom:1px solid var(--color-border);font-size:1.25em;padding-bottom:.25em}.report-content h3{color:var(--color-primary);font-size:1.05em}.report-content h4{font-size:1em}.report-content p{margin:.8em 0}.report-content :is(ul,ol){margin:.8em 0;padding-left:1.5em}.report-content li{margin:.3em 0}.report-content strong{color:var(--color-primary-dark)}.report-content hr{border:none;border-top:1px solid var(--color-border);margin:1.6em 0}.report-content blockquote{border-left:3px solid var(--color-primary);color:var(--color-text-muted);margin:.8em 0;padding:.2em 1em}.report-content code{background:var(--color-surface-muted);border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;padding:.15em .4em}.report-content pre{background:var(--color-surface-muted);border-radius:var(--radius-sm);overflow-x:auto;padding:12px 14px}.report-content pre code{background:none;padding:0}.table-scroll{margin:1em 0;max-width:100%;overflow-x:auto}.report-content table{border-collapse:collapse;font-size:.92em;white-space:nowrap}.report-content th,.report-content td{border:1px solid var(--color-border);padding:8px 12px;text-align:left}.report-content th{background:var(--color-surface-muted);color:var(--color-primary-dark);font-weight:700;white-space:nowrap}.report-content tbody tr:nth-child(2n){background:var(--color-surface-muted)}.report-content td[align=right],.report-content th[align=right]{text-align:right}.report-content td[align=center],.report-content th[align=center]{text-align:center}.dialog-overlay{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#14202773;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:50}.dialog-panel{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:grid;gap:20px;max-height:85vh;max-width:640px;overflow-y:auto;padding:28px;width:92%}.wizard-dialog{max-width:760px}.dialog-section{border-top:1px solid var(--color-border);display:grid;gap:10px;padding-top:16px}.dialog-section:first-of-type{border-top:none;padding-top:0}.json-preview{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.custom-gpt-link{color:var(--color-primary);font-size:13px;font-weight:700}.dialog-close{background:transparent;border:1px solid var(--color-border-strong);color:var(--color-text-muted);justify-self:end}.dialog-close:hover:not(:disabled){background:var(--color-surface-muted)}@media(max-width:780px){.app-shell{padding:20px}.app-body{padding:16px}.topbar{align-items:flex-start;flex-direction:column}.layout,.hearing-grid{grid-template-columns:1fr}.session-row{align-items:flex-start;flex-direction:column;gap:8px}.data-source-grid,.two-col{grid-template-columns:1fr}.panel--full-bleed{padding-left:12px;padding-right:12px}.viewer-body{flex-direction:column}.view-row{grid-template-columns:1fr}.comment-panel{flex:0 0 auto;max-height:260px}.controls-row{gap:8px}.time-label{margin-left:4px}}
