:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#252b38;background:#f3f4f5;font-size:14px;--accent:#17346d;--muted:#767b84;--line:#e1e3e7;--soft:#eef0f4}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,.button{cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:white;border-radius:8px;padding:11px 15px;font-size:12px;font-weight:600;text-decoration:none;display:inline-block}button:disabled{opacity:.4;cursor:not-allowed}.secondary{background:#fff;color:#3b4455;border-color:#dcdfe4}.text{background:transparent;color:var(--muted);border:none;padding:7px;font-size:12px;text-decoration:none}.primary{width:100%;display:flex;justify-content:space-between;margin-top:20px;padding:15px;font-size:13px}.full{width:100%;margin-top:8px}button:hover:not(:disabled),.button:hover{filter:brightness(.95)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #9aa8c3;outline-offset:3px}a{color:var(--accent)}[hidden]{display:none!important}header{height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;border-bottom:1px solid var(--line);background:#fff}.brand{font-size:24px;font-weight:850;letter-spacing:3px;color:#17243f;text-decoration:none}.brand span{display:inline-block;font-size:9px;letter-spacing:2px;margin-left:10px;border-left:1px solid #c9ced8;padding-left:12px;vertical-align:middle}.header-right{display:flex;gap:22px;align-items:center}.local{font-size:11px;color:var(--muted)}.local i{display:inline-block;width:7px;height:7px;background:#244891;border-radius:50%;margin-right:6px}main{max-width:1480px;margin:auto;padding:40px 5% 20px}.intro{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:30px}.eyebrow{font-size:9px;font-weight:750;letter-spacing:2px;color:var(--muted)}h1{font-size:34px;letter-spacing:-1px;font-weight:650;margin:10px 0}h2{font-size:19px;font-weight:650;margin:8px 0}h3{font-size:15px;margin:0 0 8px}.intro p{font-size:12px;color:var(--muted);max-width:630px;line-height:1.8;margin:0}p{line-height:1.7}.tabs{display:flex;background:#e8eaee;padding:4px;border-radius:10px;flex-shrink:0}.tabs button{background:transparent;color:var(--muted);border:none;min-width:85px}.tabs .active{background:white;color:#252d3e;box-shadow:0 2px 6px #18233a10}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}.card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.viewer-head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px}.viewer-head h2{font-size:16px;margin:6px 0 0;overflow-wrap:anywhere}.muted{color:var(--muted);font-size:11px}.stage{position:relative;background:#141a27;min-height:220px;overflow:hidden}.stage video,.stage img{width:100%;height:auto;display:block}.stage canvas{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}.stage canvas.editing{pointer-events:auto;cursor:crosshair}.empty{min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f5f6f8;color:#434b5b;text-align:center;border:1px dashed #c4c9d3;margin:18px;border-radius:10px}.empty h3{font-size:19px;font-weight:550;margin:20px 0 0}.empty p{font-size:12px;color:var(--muted);margin:8px 0 22px}.empty>span{font-size:10px;color:var(--muted);margin-top:16px}.upload-icon{width:48px;height:48px;border:1px solid #dcdfe6;border-radius:12px;font-size:30px;display:grid;place-items:center;color:var(--accent);background:#fff}.camera-icon{font-size:40px;color:#7a8395}.stage.drag-over{outline:3px solid var(--accent);outline-offset:-3px}.viewer-foot{display:flex;justify-content:space-between;align-items:center;padding:15px 22px;gap:10px;flex-wrap:wrap}.check{display:flex;align-items:center;gap:9px;font-size:12px}.check input,.layer-options input{width:15px;height:15px;accent-color:var(--accent);margin:0}.layer-options{display:flex;flex-wrap:wrap;gap:13px;padding:12px 22px;border-top:1px solid var(--line);background:#fafbfc}.layer-options label{display:flex;gap:6px;align-items:center;font-size:10px;color:#666d7b}.viewer-note{padding:0 22px;font-size:10px;color:var(--muted);line-height:1.7}.controls{padding:25px}.controls h2{margin:10px 0 20px;font-size:18px}.controls label:not(.check){display:block;font-size:11px;color:#656c7a}.controls select,.controls input:not([type=checkbox]),.modal input,.modal select,.zone-edit input{width:100%;padding:10px 11px;border:1px solid #d8dbe2;border-radius:7px;background:#fff;color:#31394a;margin:7px 0 12px;font-size:12px}.file-pick{color:var(--accent)!important;cursor:pointer;font-weight:600;margin-bottom:22px}.model-option{padding-top:15px;border-top:1px solid var(--line);margin-top:15px}.model-option p{font-size:11px;color:var(--muted);margin:7px 0 15px;padding-left:24px;line-height:1.65}.hint{font-size:11px;color:var(--muted);line-height:1.7}.controls .hint{font-size:10px}.controls hr{height:1px;background:var(--line);border:none;margin:25px 0}.progress-head{display:flex;justify-content:space-between;font-size:11px;margin-top:20px}progress{width:100%;height:5px;accent-color:var(--accent)}.zone-edit{padding:18px 22px;background:#eef0f5;border-top:1px solid #d5dae5}.zone-edit p{font-size:11px;margin-top:0}.zone-edit input{max-width:250px;margin-right:10px}.zone-edit button{margin-right:8px}.analysis{margin-top:36px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2{margin:7px 0 0}.model-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.model-card{padding:25px;min-width:0}.model-title{display:flex;gap:12px;align-items:center;margin-bottom:20px}.model-title h3{margin:0 0 4px}.model-title .score,.model-title .badge{margin-left:auto}.model-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;font-weight:700}.x3d{background:#e6eaf2;color:#324873}.qwen{background:#ebf0fb;color:#516fab}.score{font-size:25px;font-weight:650;color:#31405f}.badge{font-size:10px;white-space:nowrap;border-radius:6px;background:var(--soft);padding:7px 9px;color:#586174}.badge.alert{color:#2d57aa;background:#e0eaff}.model-card>p{font-size:12px}.coverage{padding:10px 12px;background:#f2f3f6;border-radius:7px}.score-chart{height:95px;display:flex;gap:5px;align-items:end;background:repeating-linear-gradient(to top,#eff0f3 0px,#eff0f3 1px,transparent 1px,transparent 24px);margin:20px 0;padding-top:10px}.score-chart button{flex:1;min-width:4px;padding:0;border:none;border-radius:3px 3px 0 0;background:#909db8;position:relative;max-width:70px}.score-chart button.alert{background:#80a2e5}.score-chart button:hover{filter:brightness(.85)}summary{font-size:11px;color:var(--muted);cursor:pointer;padding:10px 0}.window-list{display:flex;flex-wrap:wrap;gap:6px;max-height:180px;overflow:auto}.window-list button{font-size:10px;padding:8px;background:#f4f5f8;color:#414b60;border-color:#dadee7}.answer{padding:14px 0;border-top:1px solid var(--line)}.answer p{font-size:12px;margin:9px 0}.answer .hint{font-size:10px}.answer-heading{display:flex;justify-content:space-between;gap:8px;align-items:center}.answer-heading strong{font-size:12px}.event-card{margin-top:22px;padding:24px}.event-card .section-heading{margin-bottom:15px}.table-wrap{overflow:auto;max-height:500px}table{border-collapse:collapse;width:100%;font-size:11px}th,td{padding:14px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:10px;font-weight:550;color:var(--muted);position:sticky;top:0;background:white}td:first-child{white-space:nowrap;color:#626a7b}td:nth-child(4){min-width:200px;max-width:600px;line-height:1.65}.empty-row{text-align:center!important;padding:25px!important;white-space:normal!important}.event-card button{font-size:10px;padding:7px 10px;white-space:nowrap}.event-card td .hint{display:block;font-size:10px}.camera-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.camera-metrics article{padding:20px}.camera-metrics span{display:block;font-size:11px;color:var(--muted)}.camera-metrics strong{font-size:24px;display:block;margin:12px 0 5px;font-weight:550}#cameraEventDetail{margin-top:20px;max-width:850px}#cameraEventVideo{width:100%;border-radius:9px}.modal-backdrop{position:fixed;inset:0;background:#18213365;z-index:10;display:grid;place-items:center;padding:24px}.modal{width:100%;max-width:440px;padding:28px;box-shadow:0 20px 100px #141a2540;max-height:90vh;overflow:auto}.modal label{display:block;font-size:11px;color:var(--muted)}.modal p{font-size:12px}.modal .hint{font-size:10px}.modal .section-heading{margin-bottom:15px}.error-text{color:#375ca6;font-size:11px}#notice{padding:14px 18px;background:#e9f0ff;border:1px solid #c3d1ed;color:#2c4e93;border-radius:9px;font-size:12px;margin-bottom:20px}footer{color:var(--muted);font-size:10px;line-height:1.8;padding:35px 0 15px}#cameraError{color:#33559a}
@media(max-width:1000px){main{padding:30px 24px}.workspace{grid-template-columns:minmax(0,1fr) 265px;gap:16px}.controls,.model-card{padding:20px}.intro{align-items:start}.intro p{max-width:500px}.local{display:none}.viewer-head{flex-wrap:wrap}.score{font-size:21px}}
@media(max-width:760px){header{padding:0 18px;height:66px}.brand{font-size:20px}.brand span{font-size:8px;margin-left:6px;padding-left:8px}.header-right button{font-size:10px;padding:9px}main{padding:27px 16px}.intro{display:block}h1{font-size:28px}.tabs{display:inline-flex;margin-top:20px}.workspace,.model-grid{grid-template-columns:1fr}.controls{padding:22px}.empty{min-height:270px}.viewer-head{padding:18px}.viewer-foot,.layer-options{padding:14px 18px}.camera-metrics{gap:10px;grid-template-columns:1fr 1fr}.camera-metrics article:last-child{grid-column:1 / -1}.camera-metrics strong{font-size:21px}.section-heading{align-items:start;flex-wrap:wrap}.analysis{margin-top:28px}.event-card{padding:18px}.stage{min-height:0}.stage .empty{min-height:260px}.model-title{flex-wrap:wrap}.modal{padding:22px}}

:root{--accent:#2563eb;--muted:#8894a7;--line:#e9edf4;--soft:#f0f5ff;background:#f6f8fc;color:#26354c;font-size:14px}body{min-height:100vh}a{text-decoration:none}button,.button{border-radius:9px;padding:11px 16px;font-size:12px;font-weight:600}.secondary{color:#516178;background:white;border-color:#e0e6f0}.text{color:#6d819e}.text:hover,a.text:hover{color:var(--accent)}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.sidebar{position:fixed;inset:0 auto 0 0;width:226px;background:white;border-right:1px solid var(--line);z-index:6;display:flex;flex-direction:column;padding:29px 18px 18px}.brand{display:flex;align-items:center;gap:11px;color:#173d87;font-size:20px;font-weight:800;letter-spacing:1px;margin:0 10px 43px}.brand>span{display:block;border:0;margin:0;padding:0;font-size:inherit;letter-spacing:inherit}.brand .brand-mark{width:39px;height:43px;display:grid;place-items:center;color:#2563eb}.brand-mark svg{width:38px;height:38px}.brand small{display:block;font-size:9px;letter-spacing:4px;margin-top:3px;color:#8a9cb8}.sidebar nav{display:flex;flex-direction:column;gap:5px}.sidebar nav a{display:flex;align-items:center;gap:13px;color:#78879f;font-size:12px;padding:12px 14px;border-radius:9px;min-height:44px;font-weight:500}.sidebar nav a:hover{background:#f8faff;color:#2563eb}.sidebar nav a.active{background:#edf3ff;color:#2563eb;font-weight:650}.sidebar nav svg{width:18px;height:18px}.nav-caption{color:#a3afc2;font-size:9px;letter-spacing:1.8px;margin:26px 14px 10px}.sidebar nav b{margin-left:auto;background:#2563eb;color:white;border-radius:6px;font-size:9px;padding:3px 6px}.sidebar-bottom{margin-top:auto;padding:25px 11px 4px;color:#93a1b6;display:flex;align-items:center;gap:9px;font-size:10px}.version{margin-left:auto;color:#c2cad8}.connection-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4e91f9;flex-shrink:0}.app-shell{margin-left:226px}.topbar{height:78px;padding:0 34px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.breadcrumb{display:flex;align-items:center;gap:17px;font-size:11px;color:#93a0b5}.breadcrumb strong{color:#495c79;font-weight:550}.separator{color:#d1d9e5}.topbar-actions{display:flex;align-items:center;gap:22px}.topbar-divider{width:1px;height:29px;background:#e9edf4}.icon-button{display:grid;place-items:center;width:34px;height:34px;border:none;background:transparent;color:#8191aa;position:relative;padding:0;font-size:24px}.icon-button i{position:absolute;right:7px;top:5px;width:5px;height:5px;border-radius:50%;background:#2563eb;border:1px solid white}.operator{display:flex;align-items:center;gap:10px}.avatar{width:33px;height:33px;border-radius:50%;background:#edf3ff;display:grid;place-items:center;color:#4471c9;font-size:12px;font-weight:650}.operator strong{display:block;font-size:11px;font-weight:650;color:#4a5c78}.operator small{display:block;margin-top:4px;font-size:9px;color:#9ca8ba}main{max-width:1550px;padding:33px 34px 40px;margin:0 auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:27px}.page-heading h1{font-size:27px;letter-spacing:-.6px;font-weight:650;margin:9px 0}.page-heading p{margin:0;color:#95a2b7;font-size:11px}.eyebrow{color:#9aa8bd;letter-spacing:1.7px;font-size:8px}.card{border-color:#e7ecf5;border-radius:12px;box-shadow:0 2px 3px #122e5510}h2{font-size:15px;letter-spacing:-.2px;margin:0;font-weight:650}h3{font-size:13px}p{line-height:1.65}.section-heading{margin-bottom:22px;gap:12px}.section-heading h2{margin:0}.status-label{display:inline-block;font-size:9px;border-radius:6px;background:#f2f5fa;color:#8392aa;padding:5px 8px;white-space:nowrap}.status-label.blue,.status-label.new{background:#edf3ff;color:#386bdd}.status-label.confirmed{background:#e2edff;color:#214fa6}.status-label.dismissed{background:#f2f4f8;color:#7e8aa0}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:25px}.metric{padding:21px 22px;position:relative}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#8898b1;font-size:11px}.metric-icon{width:30px;height:30px;border-radius:8px;color:#6794e7;background:#f2f6ff;display:grid;place-items:center}.metric-icon svg{width:16px;height:16px}.metric strong{font-size:29px;font-weight:650;display:block;margin:13px 0 8px;color:#26416a;letter-spacing:-1px}.metric small{display:block;color:#a2afc1;font-size:9px}.overview-grid{display:grid;grid-template-columns:minmax(0,1fr) 286px;gap:21px;align-items:start}.overview-main{padding:24px;min-height:408px}.overview-aside{display:grid;gap:17px}.system-card{padding:22px}.system-line{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #f0f3f8}.system-line:last-of-type{border-bottom:0}.system-line>.connection-dot,.system-line>.status-label{margin-left:auto}.system-line strong{font-size:11px;display:block;color:#586a85}.system-line small{display:block;font-size:9px;color:#a0aec2;margin-top:4px}.system-icon{width:29px;height:29px;border-radius:8px;background:#f0f5ff;color:#5a87da;display:grid;place-items:center;font-size:10px;font-weight:650}.system-card>a{display:block;font-size:10px;padding-left:0;margin-top:8px}.quick-card{padding:23px;background:linear-gradient(130deg,#fff,#f3f7ff)}.quick-illustration{color:#6999f0;margin:17px 0}.quick-illustration svg{width:28px;height:28px;stroke-width:1.3}.quick-card h3{margin:0;color:#496689}.quick-card p{font-size:10px;color:#91a3bf;margin:7px 0 16px}.quick-card .button{font-size:10px;text-align:left}.recent-row{display:flex;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid #edf1f7;cursor:pointer}.recent-row:last-child{border-bottom:0}.recent-row:hover .recent-title{color:#2563eb}.recent-thumb{width:66px;height:44px;flex-shrink:0;object-fit:cover;border-radius:6px;background:#edf3fc}.recent-info{flex:1;min-width:0}.recent-title{font-size:12px;font-weight:600;color:#49607f;display:block;margin-bottom:5px}.recent-info small{font-size:9px;color:#a1aec1}.recent-info small span{margin-left:8px;color:#94b1df}.recent-row .status-label{margin-left:auto}.row-arrow{color:#b8c6da;padding-left:6px}.library-card{margin-top:23px;padding:23px}.record-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px}.record-card{padding:0;border:none;background:white;color:#526886;text-align:left;overflow:hidden;border-radius:8px;cursor:pointer}.record-card img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;border-radius:8px;filter:saturate(.85)}.record-title{display:flex;justify-content:space-between;align-items:center;padding:12px 0 6px;gap:5px}.record-title strong{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-card small{font-size:9px;color:#a3b0c3}.record-score{font-size:10px;color:#6994de;white-space:nowrap}.workspace{grid-template-columns:minmax(0,1fr) 288px;gap:21px}.viewer-head{padding:20px 22px}.viewer-head h2{font-size:14px;color:#426080}.viewer-head .eyebrow{font-size:8px}.stage{background:#f5f8fd}.empty{background:#f9fbff;border-color:#d5e3fa;color:#5b7ba6;min-height:310px;margin:18px}.empty h3{font-size:16px}.upload-icon{background:white;color:#2563eb}.viewer-foot,.layer-options{padding:14px 20px}.layer-options{background:#fafcff;border-color:#edf1f7}.layer-options label{color:#8a9cb5}.viewer-note{padding:0;font-size:10px}.compact-note{padding:0 20px}.compact-note summary{font-size:10px;color:#99a8be;padding:13px 0}.compact-note p{font-size:10px;color:#98a7bd}.controls{padding:22px}.controls h2{font-size:15px;color:#4e678d}.controls label:not(.check){color:#8799b3;font-size:10px}.controls input,.controls select{color:#4a6386!important;border-color:#dfe7f3!important}.controls .hint{font-size:9px;color:#99a9bf}.controls hr{margin:20px 0}.model-option{padding-top:13px;margin-top:13px;border-color:#eef2f8}.model-option .check strong{font-size:11px;color:#5a7193}.model-option p{font-size:10px;color:#99a9c0}.file-pick{font-size:10px!important}.primary{margin-top:17px;font-size:11px;padding:13px 15px}.check{font-size:11px;color:#62799a}.analysis{margin-top:27px}.analysis>.section-heading{align-items:start}.analysis .muted{max-width:50%;text-align:right}.model-card{padding:23px}.model-title{gap:11px;margin-bottom:19px}.model-title h3{font-size:13px;color:#4d678d}.model-mark{width:34px;height:34px;font-size:12px;border-radius:9px;background:#edf3ff;color:#648ee0}.score{color:#3169c5;font-size:25px}.badge{color:#7e98bf;background:#f0f5fc;font-size:9px}.badge.alert{background:#e8f0ff;color:#3869bf}.coverage{background:#f4f8ff;font-size:10px!important;color:#6685b4}.model-card>p{font-size:11px;color:#7d93b2}.answer p{font-size:11px;color:#627c9f}.answer strong{color:#4c6da0}.score-chart{background:repeating-linear-gradient(to top,#eff3fa 0px,#eff3fa 1px,transparent 1px,transparent 24px)}.score-chart button{background:#a4c0f4}.score-chart button.alert{background:#5688e7}.event-card th{color:#98a8bf;font-size:9px}.event-card td{font-size:10px;color:#7088a8}.camera-metrics strong{color:#4979c4}.camera-metrics span{color:#99aac3}.muted{color:#99a7bb}.journal-card{padding:0}.filter-tabs{display:flex;padding:0 22px;gap:24px;border-bottom:1px solid var(--line)}.filter-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;color:#96a5bb;padding:20px 0 15px;border-radius:0;font-size:11px}.filter-tabs button.active{border-color:#2563eb;color:#2563eb}.filter-tabs b{font-size:9px;margin-left:4px;background:#edf3ff;padding:2px 5px;border-radius:5px}.filters{padding:20px 22px;display:flex;gap:12px}.filters select{border:1px solid #e1e8f3;border-radius:8px;padding:9px 14px;background:white;color:#8499b7;font-size:10px}.search-field{display:flex;gap:10px;align-items:center;padding:9px 12px;background:#fafcff;border:1px solid #e5ebf4;border-radius:8px;max-width:390px;flex:1}.search-field svg{width:16px;height:16px;color:#a8b7cc}.search-field input{border:0;outline:none;background:transparent;width:100%;font-size:10px;color:#536f97}.filters button{font-size:10px;margin-left:auto}.journal-card .table-wrap{max-height:660px}.journal-table th{font-size:9px;font-weight:500;color:#a1afc4;background:#fafcff;padding:15px 22px}.journal-table td{padding:17px 22px;font-size:10px;color:#7f96b7;vertical-align:middle;border-color:#edf1f8}.journal-table td:nth-child(4){min-width:0;max-width:none}.journal-table td:first-child{white-space:normal;min-width:230px}.event-cell{display:flex;align-items:center;gap:11px}.event-cell img{width:55px;height:38px;object-fit:cover;border-radius:5px}.event-cell strong{color:#566f94;font-size:11px;display:block;margin-bottom:4px}.event-cell small{font-size:9px;color:#a4b2c8}.table-footer{display:flex;justify-content:space-between;color:#a7b5ca;font-size:9px;padding:17px 22px}.empty-state{padding:40px;text-align:center;color:#a1b2cc;font-size:12px}.zone-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.zone-card{padding:25px}.zone-card .zone-symbol{width:40px;height:40px;border:1px dashed #83a7e4;background:#f4f8ff;margin-bottom:20px;border-radius:5px}.zone-card h3{color:#567199}.zone-card p{font-size:10px;color:#9cabc2}.zone-card button{margin-top:15px;font-size:10px}.analytics-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:21px}.chart-card{padding:25px}.bar-row{display:grid;grid-template-columns:100px minmax(0,1fr) 62px;align-items:center;gap:15px;margin:24px 0;font-size:11px;color:#8da1be}.bar-track{height:8px;background:#f0f4fa;border-radius:5px;overflow:hidden}.bar-value{height:100%;background:linear-gradient(90deg,#adc8ff,#568aee);border-radius:5px;min-width:2px}.bar-row strong{text-align:right;color:#7394c8;font-size:10px}.donut{width:170px;height:170px;border-radius:50%;position:relative;margin:26px auto}.donut:after{content:'';position:absolute;inset:25px;border-radius:50%;background:white}.donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:1}.donut-center strong{color:#436da8;font-size:26px}.donut-center span{font-size:9px;color:#a3b4cb;margin-top:5px}.legend-row{display:flex;align-items:center;gap:9px;font-size:10px;color:#94a7c3;padding:9px 0}.legend-row i{width:6px;height:6px;border-radius:50%}.legend-row strong{margin-left:auto;color:#617eaa}.differences-card{margin-top:22px;padding:24px}.report-builder{padding:28px;max-width:1040px}.report-builder h2{margin-bottom:25px}.report-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:17px}.report-fields label,.settings-card>label,.operator-decision>label{display:block;color:#8ea1bd;font-size:10px}.report-fields input,.report-fields select,.settings-card input,.operator-decision textarea{display:block;width:100%;background:#fff;border:1px solid #e0e8f5;border-radius:8px;color:#5677a5;padding:12px;margin:8px 0 20px;font-size:11px}.report-types{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:1040px;margin-top:24px}.report-types article{padding:25px}.report-icon{color:#739cea;display:block;margin-bottom:17px}.report-types h3{color:#58749d}.report-types p{font-size:10px;color:#9caec8}.settings-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:22px;max-width:1100px}.settings-card{padding:26px}.settings-card h2{margin-bottom:25px}.settings-model{display:flex;gap:12px;align-items:center;padding:17px 0;border-bottom:1px solid var(--line)}.settings-model strong{display:block;font-size:12px;color:#57729b}.settings-model small{display:block;font-size:9px;color:#9daec7;margin-top:5px}.settings-model>.status-label{margin-left:auto}.settings-details{display:grid;grid-template-columns:1fr auto;gap:15px;margin-top:30px;padding-bottom:20px;color:#a0afc5;font-size:10px}.settings-details strong{font-weight:550;color:#708bb3}.settings-card .compact-note{padding:0}.audit-card{margin-top:22px;padding:25px;max-width:1100px}.audit-row{padding:13px 0;border-bottom:1px solid #eef2f8;color:#8ea3c0;font-size:10px}.audit-row strong{color:#6583af;font-size:10px;font-weight:500}.drawer-backdrop{position:fixed;inset:0;background:#19355844;z-index:20;display:flex;justify-content:end}.event-drawer{width:min(720px,100%);height:100%;overflow:auto;background:white;box-shadow:-15px 0 70px #16336022}.drawer-heading{display:flex;justify-content:space-between;align-items:center;padding:25px 30px}.drawer-heading h2{font-size:20px;color:#46658f;margin-top:8px}.detail-video{background:#eaf1fd}.detail-video video{display:block;width:100%;max-height:330px}.drawer-content{padding:24px 30px}.detail-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:10px;color:#8fa4c1;margin-bottom:22px}.detail-models{display:grid;grid-template-columns:1fr 1fr;gap:14px}.detail-models article{padding:17px;background:#f5f8fd;border-radius:9px}.detail-models span{font-size:10px;color:#99abc4;display:block}.detail-models strong{display:block;color:#557dad;font-size:14px;margin-top:9px}.drawer-content>p{color:#718bab;font-size:12px;line-height:1.8}.drawer-content details{margin-bottom:20px}.drawer-content summary{font-size:10px;color:#91a6c4}.drawer-content details p{font-size:11px;color:#7f98b9}.operator-decision{margin-top:24px;border-top:1px solid var(--line);padding-top:24px}.operator-decision h3{color:#59779f;margin:0}.operator-decision textarea{min-height:82px;resize:vertical;line-height:1.6;margin-bottom:15px}.decision-buttons{display:flex;gap:9px;flex-wrap:wrap}.decision-buttons button{font-size:11px}.detail-footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:25px}.detail-footer button{font-size:10px}.modal-backdrop{z-index:30}.modal{border-color:#dce8fb}.mobile-only{display:none!important}#notice{background:#edf4ff;border-color:#cfdef7;color:#547ab7;font-size:11px}#cameraError,.error-text{color:#4676c6}.modal p,.modal label{color:#8da4c4}.modal h2{color:#4e6b94}
@media(min-width:1500px){main{padding:38px 44px}.overview-grid{grid-template-columns:minmax(0,1fr) 310px}.metrics{gap:20px}}
@media(max-width:1150px){.sidebar{width:196px;padding-inline:12px}.app-shell{margin-left:196px}.brand{font-size:18px;margin-inline:10px}.sidebar nav a{font-size:11px;padding:12px}.topbar{padding:0 25px}main{padding:28px 25px}.overview-grid{grid-template-columns:minmax(0,1fr) 244px}.overview-main,.system-card{padding:20px}.metric{padding:19px 17px}.workspace{grid-template-columns:minmax(0,1fr) 250px}.record-grid{grid-template-columns:repeat(3,1fr)}.record-card:nth-child(4){display:none}.journal-table td,.journal-table th{padding-inline:16px}.metrics{gap:12px}.metric-top{font-size:10px}}
@media(max-width:900px){.sidebar{transform:translateX(-100%);width:225px;transition:transform .18s}.sidebar.open{transform:translateX(0);box-shadow:15px 0 45px #14356725}.app-shell{margin-left:0}.mobile-only{display:grid!important}.topbar{height:67px;padding:0 22px}.breadcrumb{gap:12px}.operator small{display:none}.topbar-actions{gap:12px}.overview-grid{grid-template-columns:minmax(0,1fr) 255px}.workspace{grid-template-columns:1fr 260px}}
@media(max-width:680px){main{padding:23px 18px 35px}.topbar{padding:0 15px}.breadcrumb>span:first-of-type,.breadcrumb .separator{display:none}.topbar-divider{display:none}.operator div{display:none}.topbar-actions{gap:7px}.page-heading{margin-bottom:23px}.page-heading h1{font-size:24px}.page-heading .button,.page-heading button{font-size:10px;padding:10px 12px}.metrics{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.metric{padding:18px}.metric strong{font-size:27px}.overview-grid,.workspace,.model-grid,.analytics-grid,.settings-grid{grid-template-columns:1fr}.overview-main{min-height:0;padding:20px}.overview-aside{grid-template-columns:1fr 1fr;gap:12px}.system-card,.quick-card{padding:18px}.system-card .section-heading{display:block}.system-card .section-heading .status-label{margin-top:7px}.system-line{gap:7px}.system-line small{font-size:8px}.system-line>.status-label{font-size:8px;padding:4px}.quick-card .button{padding:10px 8px;font-size:9px}.record-grid{grid-template-columns:1fr 1fr;gap:15px}.record-card:nth-child(4){display:block}.library-card{padding:20px}.recent-row{gap:10px}.recent-thumb{width:54px;height:37px}.recent-title{font-size:11px}.recent-row .status-label{font-size:8px;padding:5px}.row-arrow{display:none}.section-heading h2{font-size:14px}.section-heading>a{font-size:9px}.filter-tabs{padding:0 17px;gap:16px;overflow:auto}.filter-tabs button{font-size:10px;white-space:nowrap}.filters{padding:17px;gap:10px;flex-wrap:wrap}.search-field{max-width:none;min-width:100%}.filters select{flex:1}.filters button{margin-left:0}.table-footer{font-size:8px}.zone-grid{grid-template-columns:1fr 1fr}.report-fields{grid-template-columns:1fr 1fr}.report-types{grid-template-columns:1fr}.report-builder,.chart-card,.settings-card{padding:23px}.drawer-heading{padding:20px}.drawer-content{padding:20px}.bar-row{grid-template-columns:80px 1fr 58px;gap:12px;font-size:10px}.analysis .muted{max-width:100%;text-align:left}.overview-aside h2{font-size:13px}.empty{min-height:250px}.controls{padding:23px}}
@media(max-width:400px){.overview-aside{grid-template-columns:1fr}.zone-grid{grid-template-columns:1fr}.recent-row{flex-wrap:wrap}.recent-row .status-label{margin-left:64px}.brand{margin-bottom:30px}}

.conversation-top{max-width:none;margin-bottom:24px}.conversation-top select{display:block;width:100%;background:#fff;border:1px solid var(--line);border-radius:8px;color:#5677a5;padding:12px;margin:8px 0 20px}.conversation-actions{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}.conversation-library{padding:26px}.conversation-library>label{display:block;max-width:560px;color:#8ea1bd;font-size:11px}.conversation-library select{display:block;width:100%;padding:12px;margin-top:9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#5677a5}.conversation-library h3{color:#58749d;font-size:14px;margin:22px 0 12px}.conversation-library p{font-size:12px;line-height:1.7;color:#718bab}.conversation-library details{margin-top:22px;border-top:1px solid var(--line);padding-top:18px}.conversation-library summary{cursor:pointer;color:#597da9;font-size:12px}.conversation-transcript{max-height:440px;overflow:auto}.conversation-entry{padding:13px 0;border-bottom:1px solid #edf1f8}.conversation-entry strong{font-size:11px;color:#58749d}.conversation-entry p{margin:7px 0}.conversation-entry .text{font-size:10px;padding:0}.conversation-library audio{width:100%;margin:8px 0 14px}.conversation-recording{display:inline-flex;align-items:center;gap:8px}.conversation-recording:before{content:'';width:7px;height:7px;border-radius:50%;background:#2b66e8} @media(max-width:680px){.conversation-library{padding:20px}.conversation-actions button{flex:1}.conversation-library .section-heading{flex-wrap:wrap}}
.conversation-top .check{display:flex;align-items:center;gap:10px;font-size:11px;color:#58749d;line-height:1.5}.conversation-top .check input{width:16px;height:16px;flex:0 0 auto;padding:0;margin:0}

/* Lesson recordings tab: look follows the approved report mockup (docs/superpowers/specs/2026-10-19-speech-analyzer-mockup.html). */
.speech-tabs{margin:0 0 24px}
#speechView{display:grid;gap:24px}
.speech-upload{padding:26px;max-width:820px}
.speech-upload .section-heading{margin-bottom:14px}
.speech-drop{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:22px;border:1.5px dashed var(--line);border-radius:12px;background:#fafbfd;font-size:12px;color:var(--muted)}
.speech-drop.speech-over{border-color:var(--accent);background:var(--soft)}
.speech-drop.speech-busy{opacity:.6;pointer-events:none}
.speech-drop .hint{flex-basis:100%}
.speech-field{display:block;max-width:560px;margin-top:18px;color:#8ea1bd;font-size:11px}
.speech-field select{display:block;width:100%;padding:12px;margin-top:9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#5677a5}
.speech-upload .check{display:flex;align-items:flex-start;gap:10px;margin-top:16px;max-width:560px;font-size:11px;color:#58749d;line-height:1.5}
.speech-upload .check input{width:16px;height:16px;flex:0 0 auto;padding:0;margin:1px 0 0}
.speech-upload .conversation-actions{align-items:center}
.speech-progress{display:flex;align-items:center;gap:14px;margin-top:20px;font-size:12px;color:#58749d}
.speech-progress strong{font-variant-numeric:tabular-nums}
.speech-error{margin:14px 0 0;color:#b2382d}
.speech-error:empty{display:none}
.speech-report{padding:32px 36px;max-width:820px;color:#252b38;font-size:14px;line-height:1.55;overflow:visible}
.speech-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.speech-head h2{margin:0;font-size:22px;font-weight:600;color:#17346d;letter-spacing:-.01em}
.speech-muted{color:#8a8f98;font-size:13px}
.speech-link{color:#17346d;font-size:13px;text-decoration:none;border-bottom:1px solid #c9d3e6;white-space:nowrap}
.speech-warning{margin:14px 0 0;padding:9px 12px;border-radius:8px;background:#fdf3dc;color:#8a5a00;font-size:13px}
.speech-report audio{display:block;width:100%;margin:18px 0 0}
.speech-marks{position:relative;height:4px;margin:14px 6px 0;background:#eceef1;border-radius:2px}
.speech-tick{position:absolute;top:-3px;width:3px;height:10px;margin-left:-1px;border-radius:2px;cursor:pointer}
.speech-section{border-top:1px solid #eceef1;margin-top:28px;padding-top:22px}
.speech-title{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8a8f98;font-weight:600;margin-bottom:14px}
.speech-section dl{display:grid;grid-template-columns:150px 1fr;gap:10px 18px;margin:0}
.speech-section dt{color:#8a8f98;font-size:13px}
.speech-section dd{margin:0}
.speech-section ul{margin:0;padding-left:18px}
.speech-section li{margin:3px 0}
.speech-step{display:flex;gap:12px;padding:2px 0}
.speech-step>:first-child{color:#17346d;font-variant-numeric:tabular-nums;min-width:62px;flex:none}
.speech-mood{font-size:17px;font-weight:600;margin-bottom:10px}
.speech-strip{display:flex;height:8px;border-radius:4px;overflow:hidden;background:#eceef1}
.speech-g{background:#bfe5c9}.speech-y{background:#f0b43c}.speech-r{background:#e05a4f}
.speech-shares{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:16px}
.speech-shares b{font-weight:600;font-variant-numeric:tabular-nums}
.speech-sub{font-weight:600;margin:20px 0 4px}
.speech-moment{display:grid;grid-template-columns:12px 52px 104px 1fr auto;gap:10px;align-items:baseline;padding:9px 0;border-bottom:1px solid #f2f3f5}
.speech-moment:last-child{border-bottom:0}
.speech-moment.speech-quote{color:#a3a8af}
.speech-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.speech-dot-r{background:#e05a4f}.speech-dot-y{background:#f0b43c}.speech-dot-q{background:#d5d8dc}
.speech-time{color:#17346d;font-weight:600;font-variant-numeric:tabular-nums}
button.speech-time{background:transparent;border:0;padding:0;border-radius:0;font-size:inherit;text-align:left}
.speech-kind{font-weight:600}
.speech-tag{font-size:11px;color:#b2382d;background:#fde8e6;border-radius:8px;padding:1px 7px;margin-left:6px;white-space:nowrap}
button.speech-listen{background:transparent;border:0;padding:0;border-radius:0;color:#17346d;font-size:13px;font-weight:400;white-space:nowrap}
.speech-note{color:#a3a8af;font-size:12px;margin:14px 0 0}
.speech-section .speech-muted{margin:-8px 0 10px}
.speech-transcript{max-height:360px;overflow:auto;padding-right:6px}
.speech-line{display:grid;grid-template-columns:70px 104px 1fr;gap:8px;padding:5px 0 5px 10px;border-left:2px solid transparent}
.speech-line .speech-time{font-weight:400;font-size:13px}
.speech-speaker{color:#8a8f98;font-size:13px}
.speech-line-y{border-left-color:#f0b43c}
.speech-line-r{border-left-color:#e05a4f}
@media(max-width:680px){.speech-upload{padding:20px}.speech-report{padding:22px 18px}.speech-head{flex-wrap:wrap}.speech-section dl{grid-template-columns:1fr;gap:4px}.speech-section dd{margin-bottom:10px}.speech-moment{grid-template-columns:12px 48px 1fr;row-gap:2px}.speech-moment .speech-what,.speech-moment .speech-listen{grid-column:2 / -1}.speech-line{grid-template-columns:64px 1fr}.speech-line>span:last-child{grid-column:1 / -1}}
