/* Shared, readable layout across all four ACT stages. */
:root{--line:#35444f;--muted:#a1b2c0;--preview-cyan:#62d9df;--connection-green:#69dfa5}
body{font-family:"Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;font-size:13px;background:#101821;color:#e6eef5;overflow:auto}
.app-shell{height:auto;min-height:100vh}.topbar{min-height:72px;height:auto;padding:14px 22px;background:#17222f;gap:20px;border-bottom:1px solid #344757}.brand small{font-size:11px;color:#9cafbf;letter-spacing:.5px}.brand strong{font-size:19px}.product-tabs{display:flex;align-items:center;gap:10px;margin-left:24px;height:auto}.product-tabs a,.product-tabs>span{padding:10px 14px;color:#aabcce;text-decoration:none;border-radius:8px;font-size:13px}.product-tabs .active{background:#233b48;color:#79e5df}.version{font-size:10px;color:#aabcce}.top-state{gap:12px}.language-switch{display:none}.emergency{border-radius:8px;padding:12px 16px;font-size:13px}.service-state{font-size:11px}
.workflow{height:62px;padding:0 22px;background:#121d29;gap:6px}.workflow button{height:46px;align-self:center;padding:0 22px;border-radius:9px;gap:10px}.workflow button.active{background:#233a49;border-bottom-color:transparent;color:#7ee7df}.workflow button b{font-size:14px}.workflow button span{font-size:12px}.workflow-meta{font-size:11px;color:#9aafbf}
main{height:auto;min-height:calc(100vh - 134px)}.capture-grid.active{height:auto;min-height:calc(100vh - 134px);grid-template-columns:330px minmax(460px,1fr) 240px;align-items:start;gap:16px;padding:18px}.capture-setup,.capture-stage,.capture-inspector{height:auto;overflow:visible;min-height:0}.capture-setup,.capture-inspector{gap:16px}.panel,.workspace-panel,.inference-head{border-radius:12px;overflow:hidden;background:#182430;border:1px solid #354652;box-shadow:0 6px 22px #0002}.panel-head{padding:16px;min-height:64px;background:#1b2a36}.panel-head h1,.panel-head h2{font-size:17px}.kicker{font-size:10px;letter-spacing:1.2px;color:#91aabd}.panel-body{padding:16px}.panel-inset{padding:14px 16px}.setup-panel .panel-body{display:grid;grid-template-columns:1fr;padding:16px;gap:13px}.setup-panel .panel-body>*{grid-column:1}.setup-panel .panel-head{padding:16px}.panel label,.device-card label,.inference-form label,.dataset-manager label{font-size:12px;line-height:1.6;color:#bacbd8;gap:6px}input:not([type=checkbox]):not([type=range]),select{min-height:40px;border-radius:7px;background:#111e2b;font-size:12px;color:#e2ecf4;border:1px solid #425566;padding:8px 10px}input:focus,select:focus{outline:2px solid #60d8df;outline-offset:2px}button{font-family:inherit;border-radius:7px}button.primary,button.secondary,button.ghost,.bind-button{min-height:40px;font-size:12px;padding:9px 12px}button:disabled{opacity:.45;cursor:not-allowed}button:not(:disabled):hover{filter:brightness(1.15)}button:focus-visible,a:focus-visible{outline:2px solid #79e5df;outline-offset:3px}
.device-stack{gap:14px}.device-card{padding:14px;border-radius:10px;background:#13212e;border:1px solid #354957}.device-title strong{font-size:14px}.device-title small{font-size:11px;line-height:1.6}.status-badge,.tag{font-size:10px;padding:5px 8px;border-radius:5px}.device-actions{gap:8px}.form-status,.next-action,.binding-status{font-size:12px!important;line-height:1.7!important;overflow-wrap:anywhere;padding:11px 12px!important;border-radius:8px}.dataset-stats span{font-size:10px;padding:7px}.dataset-actions button{height:auto}.dataset-manager{gap:12px;background:#142230}.camera-view{border-radius:9px}.camera-grid{gap:12px;padding:14px}.camera-view footer{font-size:11px}.camera-empty{font-size:12px}.metric-strip>div span,.metric-strip>div small{font-size:10px}.capture-run-panel{margin:12px 14px;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.capture-run-panel .round-progress-track,.capture-run-panel .round-actions{grid-column:auto}.capture-run-panel>div{background:#182430}.capture-run-panel span,.capture-run-panel label,.capture-run-panel small,.capture-run-panel>p{font-size:10px}.capture-run-panel .round-actions{grid-column:2/4}.quality-note,.quality-grid span,.camera-quality span,.cap-row{font-size:11px;line-height:1.6}.camera-quality b{font-size:10px}.single-view.active{height:auto;min-height:calc(100vh - 134px);padding:20px}.model-list{max-width:1200px}.model-row{padding:16px;border-radius:9px}.model-row h3{font-size:15px}.model-row p,.model-row small{font-size:12px;line-height:1.6}
.inference-view.active{height:auto;min-height:calc(100vh - 134px);padding:18px;overflow:visible}.inference-shell{grid-template-columns:330px minmax(420px,1fr) 280px;gap:16px;min-height:0;align-items:start}.inference-head{padding:16px 20px;min-height:76px}.inference-head h2{font-size:20px}.inference-head p:last-child{font-size:12px;line-height:1.6}.inference-contract-block,.inference-readiness,.inference-launch-zone{padding:16px;gap:13px}.inference-section-head b{font-size:14px}.inference-section-head small{font-size:11px;line-height:1.6}.inference-section-head>span{font-size:11px;width:28px;height:28px;flex-basis:28px;border-radius:6px}.inference-model-readonly{padding:12px;border-radius:8px}.inference-model-readonly strong{font-size:14px}.inference-model-readonly span,.inference-model-readonly small{font-size:11px;line-height:1.6}.inference-gates div{padding:12px}.inference-gates span,.inference-gates b{font-size:11px}.inference-stage,.inference-inspector{gap:16px}.inference-camera{aspect-ratio:4/3;border-radius:10px}.inference-camera img,.camera-view img,.camera-view video{object-fit:contain}.inference-camera-empty,.inference-camera footer{font-size:11px}.inference-performance span{font-size:11px}.inference-performance b{font-size:14px;overflow-wrap:anywhere}.inference-performance div{padding:12px}.inference-joints{grid-template-columns:repeat(4,minmax(0,1fr));border-radius:8px}.inference-joints span,.inference-joints strong{font-size:10px}.inference-joints b{font-size:12px}.inference-wave-stage{min-height:240px}.inference-log-panel pre,.inference-action-panel code{font-size:11px;line-height:1.7}.inference-action-panel span{font-size:11px}.authorization-copy b{font-size:12px}.authorization-copy small{font-size:11px}.inference-launch-authorization>span{font-size:10px}.calibration-modal{max-height:90vh;overflow:auto}
@media(max-width:1400px){.capture-grid.active{grid-template-columns:320px minmax(400px,1fr)}.capture-inspector{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.inference-shell{grid-template-columns:320px minmax(400px,1fr)}.inference-inspector{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto}.topbar{flex-wrap:wrap}.workflow-meta{display:none}}
@media(max-width:900px){.capture-grid.active,.inference-shell{display:grid;grid-template-columns:1fr}.capture-setup{order:0;display:grid;grid-template-columns:1fr 1fr}.capture-stage{order:1}.capture-inspector{order:2;grid-template-columns:1fr 1fr}.inference-head,.inference-setup,.inference-stage,.inference-inspector{grid-column:1}.inference-inspector{grid-template-columns:1fr 1fr}.inference-setup{width:100%}.workflow{overflow:auto;padding:0 10px}.workflow button{padding:0 14px;flex-shrink:0}.product-tabs{margin-left:0}.top-state{margin-left:auto}.service-state{display:block}}
@media(max-width:600px){.topbar{padding:12px;gap:10px}.brand img{width:32px;height:32px}.brand strong{font-size:16px}.brand small{font-size:10px}.product-tabs{display:none}.version{display:none}.top-state{width:100%;justify-content:space-between}.emergency{padding:9px 12px}.workflow button b{font-size:12px}.capture-grid.active,.inference-view.active,.single-view.active{padding:10px}.capture-setup,.capture-inspector,.inference-inspector,.camera-grid,.inference-cameras{grid-template-columns:1fr;display:grid}.capture-run-panel{grid-template-columns:1fr 1fr}.capture-run-panel .round-actions{grid-column:1/-1}.inference-head{align-items:flex-start;gap:12px}.inference-joints{grid-template-columns:repeat(2,minmax(0,1fr))}.workflow{height:58px}.waveform-workspace{grid-template-columns:1fr}}

.inference-camera footer,.camera-view footer{z-index:3}.inference-camera-empty,.camera-view .camera-empty{z-index:2;pointer-events:none}.inference-camera.streaming .inference-camera-empty{display:none}.inference-wave{grid-template-rows:auto 320px}.inference-wave-stage{height:320px}.form-status:empty{display:none}button.secondary{background:#254454;color:#b5f0ef;border:1px solid #4e7c8a}button.primary,.bind-button{background:#1d6970;color:#e6ffff;border:1px solid #3a9fa6}.training-ready-controls label,.training-gate p,.training-gate small,.training-overview span,.training-log-panel pre,.training-checkpoint-list{font-size:12px!important;line-height:1.6}.training-ready-controls{gap:12px}.calibration-dialog{max-height:90vh;overflow:auto;border-radius:12px}.calibration-dialog label,.calibration-dialog p,.calibration-dialog td,.calibration-dialog th{font-size:12px;line-height:1.6}@media(max-width:600px){.inference-wave{grid-template-rows:auto 240px}.inference-wave-stage{height:240px}}

#train label,#train .training-reason,#train small,#models small,#models .notice{font-size:12px;line-height:1.6}.inference-head,.panel-head{flex-wrap:wrap}

/* Desktop columns own their scroll positions; the top bars stay in place. */
@media(min-width:901px){
  html,body{height:100%;overflow:hidden}
  body{height:100dvh}
  .app-shell{height:100dvh;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr)}
  main{height:100%;min-height:0;overflow:hidden}
  .capture-grid.active{height:100%;min-height:0;grid-template-columns:clamp(270px,24vw,330px) minmax(0,1fr) clamp(210px,18vw,260px);grid-template-rows:minmax(0,1fr);align-items:stretch;gap:12px;padding:12px}
  .capture-setup,.capture-stage,.capture-inspector{height:100%;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#506575 #15212a}
  .capture-setup,.capture-inspector{display:flex;flex-direction:column;grid-column:auto;grid-row:auto;gap:12px}
  .capture-setup>.panel,.capture-inspector>.panel{flex:0 0 auto;min-height:0}
  .device-panel,.device-panel .panel-body{overflow:visible;max-height:none;flex:0 0 auto}
  .capture-stage{display:block}
  .inference-view.active{height:100%;min-height:0;overflow:hidden;padding:12px}
  .inference-shell{height:100%;min-height:0;grid-template-columns:clamp(270px,24vw,330px) minmax(0,1fr) clamp(210px,20vw,280px);grid-template-rows:auto minmax(0,1fr);align-items:stretch;gap:12px}
  .inference-head{grid-column:1/-1}
  .inference-setup,.inference-stage,.inference-inspector{height:100%;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#506575 #15212a}
  .inference-inspector{display:flex;flex-direction:column;grid-column:auto;grid-row:auto;gap:12px}
  .inference-inspector>.panel{flex:0 0 auto}
  .inference-stage{display:flex;flex-direction:column;gap:12px}
  .inference-stage>*{flex-shrink:0}
  .single-view.active{height:100%;min-height:0;overflow:auto;padding:12px}
}
.sr-only{position:fixed!important;top:0;left:0;width:1px!important;height:1px!important;min-height:1px!important;min-width:1px!important;overflow:hidden;padding:0!important;margin:-1px!important;clip:rect(0,0,0,0);clip-path:inset(50%);border:0}
/* Refined studio surfaces: restrained contrast, generous rhythm, clear hierarchy. */
:root{--line:#2c3c4f;--muted:#99acc2;--accent:#65d7cf}
body{background:#0b121d;color:#e5edf8;font-family:"Segoe UI","Microsoft YaHei","Noto Sans SC",sans-serif}
.topbar{background:#101b2b;border-color:#273448;padding:15px 24px}.brand strong{letter-spacing:.3px}.brand small{color:#8da1ba}.brand img{padding:5px;background:#192a3d;border:1px solid #2e4259;border-radius:11px;box-sizing:content-box;width:28px;height:28px}.product-tabs .active{background:#1a343d;color:#8de9dc}.version{border:1px solid #304056;border-radius:20px;padding:6px 10px}.emergency{background:#3c222c;border:1px solid #7b3d4b;color:#ffd0d5;min-height:40px}
.workflow{background:#101a28;border-color:#263447;padding:0 24px;height:66px;gap:8px}.workflow button{color:#9babbd;border:1px solid transparent;padding:0 20px}.workflow button>span{border:1px solid #3b4a60;border-radius:6px;padding:3px 5px;font-size:10px}.workflow button.active{background:#1b323b;border:1px solid #355d61;color:#a1f1e5}.workflow button.active>span{border-color:#4c8584;color:#8de9dc}.workflow button b{font-weight:600}
.panel,.workspace-panel,.inference-head{background:#132031;border-color:#2c3c50;border-radius:14px;box-shadow:0 6px 18px #0000001a}.panel-head{background:#172537;border-bottom-color:#2b3b4f;padding:18px 16px}.panel-head h1,.panel-head h2{font-weight:600;font-size:16px;letter-spacing:.2px}.kicker{color:#8ca6c2;letter-spacing:1.6px;font-size:9px;font-weight:600}.panel-body{padding:16px}.device-card{background:#101c2b;border-color:#2d3e53;padding:15px;border-radius:11px}.device-title{gap:10px;margin-bottom:14px}.device-icon{background:#20384a;border:1px solid #345068;color:#8adbd6;border-radius:9px}.device-title strong{font-weight:600}.device-card label+label{margin-top:12px}.device-card>.wide{margin:12px 0}.device-actions{margin-top:12px}input:not([type=checkbox]):not([type=range]),select{background:#0e1928;border-color:#3b4c63;border-radius:8px;min-height:42px;max-width:100%}input::placeholder{color:#72879e}.form-status{color:#a5b8cd;background:#0f1b2a;border:1px solid #293d51;margin:12px 0}.form-status.error{color:#ffabb5;border-color:#72404e;background:#2a1b29}.form-status.success{color:#92e1c3;border-color:#365e57;background:#112c2b}
button.primary,.bind-button{background:#26786f;border:1px solid #4a9a8f;color:#edfffa;font-weight:600;box-shadow:inset 0 1px 0 #ffffff12}button.secondary{background:#20364b;border-color:#3f5b73;color:#c8e4f4}button.ghost{border-color:#35485e;background:#152436;color:#b5c6db}button.danger{border-color:#864452;background:#482531;color:#ffd2d6}button:not(:disabled):hover{filter:brightness(1.12)}.status-badge,.tag{border-radius:6px;letter-spacing:.25px}.stage-head{padding:18px 18px 8px}.stage-head h2{font-size:18px;font-weight:600}.stage-gate>span{font-size:9px;letter-spacing:1px}.capture-stage{background:#101c2a;border:1px solid #2c3c50;border-radius:14px}.camera-grid{padding:16px;gap:14px}.camera-view,.inference-camera{position:relative;background:#0b1522;border:1px solid #30425a;border-radius:12px;overflow:hidden}.camera-view footer,.inference-camera footer{background:#101e2fee;border-top:1px solid #30435b;padding:12px 14px;color:#b6cadd;z-index:4;min-height:42px;box-sizing:border-box}.camera-view footer strong,.inference-camera footer b{font-size:10px;font-weight:500;color:#94acbf}
.camera-empty,.inference-camera-empty{position:absolute;inset:0;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px 12px 56px;box-sizing:border-box;background:radial-gradient(ellipse at 50% 40%,#1b3146 0%,#101d2c 58%,#0c1724 100%);text-align:center;z-index:2;pointer-events:none}.camera-empty:before,.inference-camera-empty:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#718aa509 1px,transparent 1px),linear-gradient(90deg,#718aa509 1px,transparent 1px);background-size:28px 28px;pointer-events:none}.camera-placeholder-icon{display:grid;place-items:center;width:58px;height:58px;background:#21394c;border:1px solid #425c71;border-radius:18px;margin-bottom:3px;z-index:1}.camera-placeholder-icon svg{width:38px;height:38px;stroke:#8bbabf;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.camera-empty b,.inference-camera-empty b{font-size:13px;font-weight:600;color:#d5e3f2;z-index:1}.camera-empty small,.inference-camera-empty small{font-size:11px;color:#94a9c1;line-height:1.65;max-width:240px;z-index:1}.camera-placeholder-tag{font-size:10px;color:#92b4c8;border:1px solid #3b5268;border-radius:20px;padding:4px 10px;background:#15293b;z-index:1}.camera-view.native-streaming .camera-empty,.inference-camera.streaming .inference-camera-empty{display:flex!important}.camera-view.streaming .camera-empty,.camera-view.native-streaming.has-frame .camera-empty,.inference-camera.has-frame .inference-camera-empty{display:none!important}
/* Only successfully decoded frames are visible; empty/loading/failed img elements stay hidden. */
.camera-view .native-preview,.inference-camera .native-preview{visibility:hidden!important;opacity:0!important}.camera-view .native-preview.active.frame-ready,.inference-camera .native-preview.active.frame-ready{visibility:visible!important;opacity:1!important}.native-preview:not([src]){visibility:hidden!important}
.capture-run-panel{margin:0 16px 16px;border:1px solid #30435b;background:#132235;border-radius:11px;gap:12px;padding:14px}.metric-strip{margin:0 16px 16px;border-radius:10px;overflow:hidden}.metric-strip>div{background:#162637}.metric-strip>div b{color:#e6f1fc}.quality-grid,.camera-quality{gap:10px}.dataset-manager{background:#112031}.inference-head{background:linear-gradient(115deg,#182d3e,#142133);padding:18px 22px}.inference-head h2{font-weight:600;font-size:21px}.inference-head p:last-child{color:#9ab0c5}.inference-form{padding:14px;gap:16px}.inference-contract-block,.inference-readiness,.inference-launch-zone{background:#101d2d;border:1px solid #304359;border-radius:11px;padding:15px;gap:14px}.inference-section-head{margin-bottom:4px}.inference-model-readonly{background:#192c3e;border-color:#375267;padding:14px}.inference-model-readonly strong{overflow-wrap:anywhere}.inference-gates{gap:8px}.inference-gates div{border:1px solid #2f4359;background:#142638;border-radius:8px;gap:8px;align-items:flex-start}.inference-gates b{flex-shrink:0}.inference-cameras{gap:14px}.inference-performance div{background:#142435;border-color:#2c4054;border-radius:8px;padding:14px}.inference-performance{gap:9px}.inference-performance b{font-variant-numeric:tabular-nums;font-size:16px;font-weight:600;margin-top:5px}.inference-action-panel code{background:#0c1725;border:1px solid #2c4055;padding:12px;border-radius:8px}.inference-log-panel pre,.training-log-panel pre{background:#0c1725;color:#a9bfd5;padding:16px;border-radius:9px}.inference-joints>div{background:#142536;border-color:#2e4359;padding:12px}.inference-wave-stage{background:#0e1a28}.inference-wave-stage>div{color:#8ea6bf}.operator-confirm{background:#142739;border-color:#375067;border-radius:9px}
.model-workspace{max-width:1380px;margin:0 auto;padding:0 28px 28px}.model-page-head{padding:26px 0!important;background:transparent!important;border-bottom:1px solid #2d3f54;gap:20px;display:flex;align-items:center;justify-content:space-between}.model-page-head h2{font-size:25px;font-weight:600;margin:7px 0}.model-page-head p:last-child{font-size:13px;color:#9bb0c7;margin:10px 0 0;line-height:1.7}.model-import-card{display:flex;align-items:center;gap:24px;padding:26px;margin:26px 0 18px;background:linear-gradient(120deg,#1c3546,#17293c);border:1px solid #3b596e;border-radius:13px}.model-import-symbol{display:grid;place-items:center;width:64px;height:64px;flex:0 0 64px;background:#234859;border:1px solid #497381;border-radius:17px}.model-import-symbol svg{width:32px;height:32px;stroke:#8ae2d2;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.model-import-copy{flex:1;min-width:0}.model-import-copy h3{font-size:19px;font-weight:600;margin:8px 0 10px}.model-import-copy p{font-size:12px;color:#aec3d7;line-height:1.8;margin:0;max-width:640px}.model-import-card>button{padding:12px 24px;min-height:46px;flex-shrink:0}.model-import-steps{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px;align-items:center;color:#b5d0de;font-size:11px}.model-import-steps i{font-style:normal;color:#6f99a9}.model-library-head{display:flex;justify-content:space-between;align-items:center;margin:30px 0 18px;gap:20px}.model-library-head h3{font-size:17px;margin:0 0 7px;font-weight:600}.model-library-head p{color:#95abc2;font-size:12px;margin:0}.model-library-head>span{font-size:9px;letter-spacing:1.5px;color:#8ea7bd}.model-list{max-width:none;gap:14px}.model-row{background:#17283a;border:1px solid #354b63;padding:20px;border-radius:11px}.model-row h3{font-size:16px;font-weight:600}.empty-state{border:1px dashed #3b516b;border-radius:12px;padding:48px 22px;background:#101d2c}.empty-state h2{font-size:17px;font-weight:600}.empty-state p{color:#9bb0c7;font-size:12px;line-height:1.8}.status-mark{background:#1e3b4b;border:1px solid #3e6473;border-radius:12px;color:#8dded4}.training-page-head{padding:24px;background:linear-gradient(120deg,#1b3042,#142235)}.training-page-head h2{font-size:23px;font-weight:600}.training-console{padding:22px;gap:20px}.training-setup-bar{border-color:#334b62;background:#101f2f;border-radius:12px;padding:22px;gap:18px}.training-actions{margin-top:18px;gap:12px}.training-ready{gap:16px;margin-top:20px}.training-kpis>div{background:#142537;border-color:#30485f;border-radius:10px}.training-chart-empty{color:#93acc4}.calibration-dialog{background:#132133;border-color:#375269}.calibration-dialog header{padding:20px}.calibration-dialog table{border-radius:8px;overflow:hidden}
@media(min-width:901px){.capture-grid.active,.inference-view.active,.single-view.active{padding:16px}.capture-grid.active,.inference-shell{gap:14px}.capture-setup,.capture-inspector,.inference-stage,.inference-inspector{gap:14px;scrollbar-color:#405770 #0e1b2b}.inference-setup{scrollbar-color:#405770 #0e1b2b}}
@media(max-width:1100px){.camera-placeholder-icon{width:44px;height:44px;border-radius:13px}.camera-placeholder-icon svg{width:30px;height:30px}.camera-empty,.inference-camera-empty{gap:7px;padding-bottom:48px}.camera-empty small,.inference-camera-empty small{font-size:10px}.model-import-card{gap:18px;padding:20px}.topbar{gap:12px}.product-tabs{margin-left:0}.version{display:none}}
@media(max-width:600px){.topbar{padding:12px}.workflow{padding:0 8px;height:62px}.workflow button{padding:0 10px;gap:7px}.model-workspace{padding:0 16px 20px}.model-page-head{padding:20px 0!important;align-items:flex-start}.model-page-head h2{font-size:22px}.model-import-card{flex-wrap:wrap;padding:18px;gap:16px;margin-top:20px}.model-import-symbol{width:48px;height:48px;flex-basis:48px;border-radius:12px}.model-import-copy{flex-basis:calc(100% - 64px)}.model-import-copy h3{font-size:16px}.model-import-card>button{width:100%}.model-import-steps{gap:7px;font-size:10px}.model-library-head>span{display:none}.model-row{padding:16px}.training-console{padding:14px}.training-page-head{padding:20px}.camera-empty small,.inference-camera-empty small{font-size:11px}.camera-placeholder-icon{width:58px;height:58px}.inference-head{padding:18px}.capture-run-panel{margin:0 12px 12px;padding:12px}.camera-grid{padding:12px}.form-status{font-size:11px!important}}
:root{--panel:#132031;--panel-solid:#132031;--field:#0e1928;--deep:#0b121d;--ink:#e5edf8}
.workflow button:not(.active){background:transparent;border-color:transparent}.workflow button:not(.active):hover{background:#1a293a;border-color:#34465a}.workflow button.active:hover{background:#1b323b;border-color:#355d61}
.inference-form .form-status{margin:0}.inference-form .inference-contract-block,.inference-form .inference-readiness,.inference-form .inference-launch-zone{gap:14px}.model-workspace .model-page-head h2{font-size:25px}.model-workspace .model-page-head p:last-child{margin-top:10px}
/* Original Star Arm identity: purple brand, cyan controls and graphite surfaces. */
:root{--brand-accent:#8641a9;--preview-cyan:#46d1d8;--connection-green:#55d49f;--safety-orange:#e1a64a;--danger:#e33d34;--ink:#f3f5f4;--muted:#94a0a3;--line:#3b474a;--panel:#1b2326;--panel-solid:#1b2326;--field:#151d1f;--deep:#0f1416;--accent:#46d1d8}
html,body{background:#0f1416;color:#edf2f2}.topbar{background:#171d20;border-color:#343e43}.brand img{filter:none;background:#24202b;border-color:#594165}.brand strong{font-weight:600}.brand small{color:#929da4}.product-tabs a,.product-tabs>span{color:#a1adb3}.product-tabs .active{background:#2a2233;color:#d2a9e5;border:1px solid #5b3e70}.version{color:#a1adb3;border-color:#41484d}.workflow{background:#161c1f;border-color:#343e43;gap:12px}.workflow button{border-radius:7px;color:#939fa5;padding:0 18px}.workflow button>span{color:#9da9af;border-color:#4b555c}.workflow button.active,.workflow button.active:hover{background:#2b2234;border:1px solid #66457c;color:#e0c6ef}.workflow button.active>span{border-color:#846298;color:#dab5ed}.workflow button:not(.active):hover{background:#242d32;border-color:#404c54}.workflow-meta{color:#94a0a3}.emergency{background:#392327;border-color:#86434a;color:#ffc5c9;font-weight:600}
.panel,.workspace-panel,.capture-stage{background:#1b2326;border-color:#3b474a;box-shadow:0 5px 16px #0002}.panel-head{background:#20292d;border-color:#3b474a}.panel-head h1,.panel-head h2{font-weight:600}.kicker{color:#91a0a9;letter-spacing:1.4px}.panel-body{padding:17px}.device-card{background:#172023;border-color:#3b474a;padding:16px}.device-title strong{font-weight:600}.device-title small{color:#9ba9ae}.device-icon{background:#2a2233;border-color:#644877;color:#d9b6e9}.device-stack{gap:16px}.panel label,.device-card label,.inference-form label,.dataset-manager label{color:#b7c3c8}input:not([type=checkbox]):not([type=range]),select{background:#11191c;border-color:#445158;color:#e1e9ec;border-radius:7px}input::placeholder{color:#7e8f98}input:focus,select:focus{outline:2px solid #46d1d8;outline-offset:2px}button:focus-visible,a:focus-visible{outline:2px solid #46d1d8;outline-offset:3px}button.primary,.bind-button{background:#46d1d8;color:#0d2225;border:1px solid #69dfe4;font-weight:600;box-shadow:inset 0 1px 0 #ffffff20}button.secondary{background:#27363d;border:1px solid #48616c;color:#bde9ed;font-weight:500}button.ghost{background:#20292d;border-color:#435058;color:#aebec5;font-weight:500}button.danger{background:#43262b;border-color:#92515b;color:#ffc7d1}.form-status,.next-action,.binding-status{background:#172023;border-color:#3a484e;color:#a9bac3;font-weight:400}.form-status.success{background:#173027;border-color:#3f735d;color:#9be1bc}.form-status.error{background:#352126;border-color:#894751;color:#f5aeba}.form-status.pending{border-color:#4c7880;color:#b7e0e5}.next-action.ready{background:#193029;border-color:#47735e;color:#b2e6c9}.tag.cyan{background:#1e3c41;border-color:#39767c;color:#8fe4e9}.status-badge.off,.tag.blocked{background:#282c30;border-color:#4a5056;color:#a5aeb5}.status-badge.on,.tag.ready{background:#20382d;border-color:#3e775d;color:#8ae1b2}.status-badge.pending{background:#3b3323;border-color:#80704b;color:#ead09a}
.capture-stage{border:1px solid #3b474a;border-radius:12px}.stage-head{padding:22px 18px 10px}.stage-head h2{font-weight:600;font-size:19px}.stage-gate>span{color:#99a7ad}.camera-view,.inference-camera{background:#0f171b;border-color:#3a4a52;border-radius:10px}.camera-empty,.inference-camera-empty{background:radial-gradient(ellipse at 50% 35%,#263239,#192126 60%,#121a1e);gap:10px}.camera-empty:before,.inference-camera-empty:before{background-image:none;border:1px solid #73818b0a;inset:12px 12px 54px;border-radius:5px}.camera-placeholder-icon{background:#2b2532;border:1px solid #665174;border-radius:15px;width:54px;height:54px}.camera-placeholder-icon svg{stroke:#c8a7da;width:34px;height:34px;stroke-width:1.4}.camera-empty b,.inference-camera-empty b{color:#d4dee3;font-weight:500;font-size:13px}.camera-empty small,.inference-camera-empty small{color:#98a8b1}.camera-placeholder-tag{color:#a3b5bf;border-color:#475b66;background:#213039;border-radius:5px;font-size:10px}.camera-view footer,.inference-camera footer{background:#182126f2;border-color:#3d4d55;color:#b5c6ce}.camera-view footer strong,.inference-camera footer b{color:#93a8b3}.camera-view footer i{background:#8a979c}.camera-view.streaming footer i,.camera-view.native-streaming.has-frame footer i{background:#55d49f}
.capture-run-panel{background:#202b30;border-color:#405259;border-radius:10px;gap:14px;padding:16px}.capture-run-panel>div{background:transparent}.capture-run-panel span,.capture-run-panel small,.capture-run-panel label{color:#9db1bb}.metric-strip>div{background:#233037;border-color:#3c5059}.metric-strip>div b{font-weight:600;color:#e8f0f3}.metric-strip>div span,.metric-strip>div small{color:#9caeb7}.dataset-manager{background:#192429}.dataset-stats span{background:#22333c;color:#bdd0da;border-color:#3e5762}.quality-grid>div,.camera-quality>div{background:#1d2a31;border-color:#3b505c}.quality-grid b.good,.camera-quality b.good{color:#83d8ab}
.inference-head{background:linear-gradient(115deg,#292333,#1b252a);border-color:#4b4456;padding:22px}.inference-head h2{font-weight:600;font-size:22px}.inference-head p:last-child{color:#a2b0b8}.inference-form{padding:16px!important;gap:16px}.inference-contract-block,.inference-readiness,.inference-launch-zone{background:#172126;border-color:#3b4c55;padding:16px;border-radius:9px;gap:14px}.inference-section-head>span{background:#2c2336;border-color:#6f527f;color:#d2b1e4}.inference-section-head b{font-weight:600}.inference-section-head small{color:#9aaaae}.inference-model-readonly{background:#243138;border-color:#455c68;border-radius:8px;padding:15px}.inference-model-readonly span,.inference-model-readonly small{color:#a4b6c0}.inference-model-readonly strong{font-weight:600}.inference-gates div{background:#202e35;border-color:#3e5460}.inference-gates b.ok{color:#83d8ab}.inference-performance{background:#1b2326;gap:10px}.inference-performance div{background:#233039;border-color:#40525f;border-radius:8px;padding:14px}.inference-performance span{color:#a2b6c3}.inference-performance b{font-size:17px;font-weight:600;color:#e4f2f9}.inference-action-panel code{background:#121c22;border-color:#394e5c;color:#b9d0dc}.inference-action-panel span{color:#9cb1be}.inference-log-panel pre,.training-log-panel pre{background:#121b20;color:#aabfc9}.inference-joints>div{background:#233039;border-color:#405560}.inference-joints b{font-weight:600;color:#e1eef5}.inference-wave-stage,#inference-wave-empty{background:#141e24;color:#91a6b3}.operator-confirm{background:#23313a;border-color:#435e6c}.authorization-copy b{font-weight:600}.operator-confirm input:checked~.authorization-mark{background:#46d1d8;border-color:#78e3e8}.operator-confirm input:checked~.authorization-mark svg{stroke:#123136}
.model-workspace{background:#1b2326;max-width:1320px;padding:0 30px 30px}.model-page-head{padding:28px 0!important;border-color:#3c4b53}.model-workspace .model-page-head h2{font-size:26px;font-weight:600}.model-workspace .model-page-head p:last-child{color:#9faeb6;font-size:12px}.model-import-card{background:linear-gradient(115deg,#2d2537,#22343c);border-color:#5c4d6c;border-radius:11px;gap:24px;padding:28px;margin:28px 0 18px}.model-import-symbol{background:#392b46;border-color:#77548e;border-radius:14px}.model-import-symbol svg{stroke:#d2ace8;stroke-width:1.6}.model-import-copy h3{font-size:20px;font-weight:600}.model-import-copy p{color:#b1c0c9}.model-import-steps{color:#bac9d3;gap:14px;font-size:11px}.model-import-steps i{color:#8e79a0}.model-library-head h3{font-weight:600}.model-library-head p{color:#98a9b2}.model-library-head>span{color:#93a4af}.model-row{background:#212d34;border-color:#40515c;border-radius:9px;padding:20px}.model-row h3{font-weight:600}.model-row p,.model-row small{color:#a2b5c0}.model-row b.good{color:#82d7ab}.empty-state{background:#192329;border-color:#495b67;border-radius:10px}.status-mark{background:#32253e;border-color:#77558c;color:#d2afe5;border-radius:12px;font-weight:600}.empty-state h2{font-weight:600}.empty-state p{color:#a3b5bf}
.training-page-head{background:linear-gradient(115deg,#2a2434,#202c32);padding:26px;border-color:#54475f}.training-page-head h2{font-size:24px;font-weight:600}.training-page-head p{color:#a2b4be}.training-console{padding:24px;gap:20px}.training-setup-bar{background:#1a262d;border-color:#405662;border-radius:10px;padding:24px}.training-status h2{font-weight:600}.training-status p{color:#a4b8c3}.training-kpis>div{background:#223039;border-color:#405763}.training-chart-stage{background:#141e24}.training-chart-empty{color:#95aab6}.training-failure{background:#352127;border-color:#86515b;color:#e6b1bd}.calibration-dialog{background:#1b252b;border-color:#4c606c}.calibration-dialog header{background:#242b34;border-color:#4c606c}
#data-dir-setup{background:rgba(10,12,16,.85)!important}#data-dir-setup>div{background:#1c2027!important;border-color:#3e4855!important}#data-dir-setup .kicker{color:#c9a0df!important}#data-dir-setup input{background:#12161c!important;border-color:#445365!important;color:#e8edf2!important}#data-dir-setup #data-dir-save{background:#46d1d8!important;color:#11272d!important}
@media(min-width:901px){.capture-grid.active,.inference-view.active,.single-view.active{padding:16px}.capture-grid.active,.inference-shell{gap:16px}.capture-setup,.capture-inspector,.inference-stage,.inference-inspector{gap:16px}.capture-setup,.capture-stage,.capture-inspector,.inference-setup,.inference-stage,.inference-inspector{scrollbar-color:#50616b #182228}}
@media(max-width:1100px){.camera-placeholder-icon{width:44px;height:44px}.camera-empty,.inference-camera-empty{gap:7px}.camera-empty small,.inference-camera-empty small{font-size:10px}.model-import-card{padding:22px;gap:18px}}
@media(max-width:600px){.workflow{gap:4px}.workflow button{padding:0 10px}.model-workspace{padding:0 16px 22px}.model-page-head{padding:22px 0!important}.model-import-card{padding:20px;gap:16px;margin-top:22px}.model-import-copy h3{font-size:17px}.model-import-steps{gap:9px}.model-import-symbol{width:48px;height:48px;flex-basis:48px}.training-console{padding:16px}.camera-placeholder-icon{width:54px;height:54px}.camera-empty small,.inference-camera-empty small{font-size:11px}.inference-head{padding:20px}}

/* UI icons retain their shape when button labels change during requests. */
[data-ui-icon="refresh"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%207v5h-5M4%2017v-5h5M6.1%207a7%207%200%200%201%2011.5-2L20%208M4%2016l2.4%203A7%207%200%200%200%2018%2017%22/%3E%3C/svg%3E")}
[data-ui-icon="upload"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2016V4m-4%204%204-4%204%204M4%2016v4h16v-4%22/%3E%3C/svg%3E")}
[data-ui-icon="download"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%204v12m-4-4%204%204%204-4M4%2016v4h16v-4%22/%3E%3C/svg%3E")}
[data-ui-icon="camera"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M8%207l2-3h4l2%203M5%207h14a2%202%200%200%201%202%202v10H3V9a2%202%200%200%201%202-2Z%20M16%2013a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z%22/%3E%3C/svg%3E")}
[data-ui-icon="link"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M9%2015l6-6M7%2014l-2%202a3.5%203.5%200%200%200%205%205l4-4M10%207l4-4a3.5%203.5%200%200%201%205%205l-2%202%22/%3E%3C/svg%3E")}
[data-ui-icon="unlink"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%203l18%2018M7%2014l-2%202a3.5%203.5%200%200%200%205%205l2-2M12%205l2-2a3.5%203.5%200%200%201%205%205l-2%202%22/%3E%3C/svg%3E")}
[data-ui-icon="play"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m8%204%2012%208-12%208V4Z%22/%3E%3C/svg%3E")}
[data-ui-icon="stop"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%206h12v12H6Z%22/%3E%3C/svg%3E")}
[data-ui-icon="check"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m4%2012%205%205L20%206%22/%3E%3C/svg%3E")}
[data-ui-icon="sliders"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%207h7m5%200h4M4%2017h3m5%200h8M11%204v6m-4%204v6%22/%3E%3C/svg%3E")}
[data-ui-icon="close"]{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m6%206%2012%2012M18%206%206%2018%22/%3E%3C/svg%3E")}

[data-ui-icon]::before{content:"";display:inline-block;width:15px;height:15px;margin-right:8px;vertical-align:-3px;flex-shrink:0;background:currentColor;mask:var(--ui-icon) center/contain no-repeat;-webkit-mask:var(--ui-icon) center/contain no-repeat;pointer-events:none}
.icon-button[data-ui-icon]::before{margin:0;width:17px;height:17px}.icon-button[data-ui-icon]{display:grid;place-items:center;min-width:34px;min-height:34px}.ui-inline-icon{width:17px;height:17px;stroke:currentColor;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.model-import-steps i{display:inline-flex;align-items:center}
/* Motion is brief and runs only on interactions, never on live metric or frame refreshes. */
button,a,input,select{transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease,box-shadow 160ms ease,opacity 160ms ease}
button:not(:disabled):hover{filter:none;box-shadow:inset 0 0 0 100px #ffffff09}button.primary:not(:disabled):hover,.bind-button:not(:disabled):hover{background:#69dce1;border-color:#8fe8ec}button.secondary:not(:disabled):hover{background:#30454f;border-color:#648490}button:not(:disabled):active{box-shadow:inset 0 0 0 100px #00000014}button:disabled{box-shadow:none}
.model-row,.device-card{transition:border-color 180ms ease,background-color 180ms ease}.model-row:hover{background:#26353d;border-color:#59707f}.device-card:focus-within{border-color:#63808a}.tag,.status-badge{transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease}
.view.motion-leaving{display:block!important;overflow:hidden!important}.capture-grid.motion-leaving{display:grid!important}.view.motion-leaving *{pointer-events:none!important}.workflow button{transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease}
#toast{transition:opacity 180ms ease,transform 180ms cubic-bezier(.2,.75,.25,1);transform:translateY(7px);border-radius:8px;font-size:12px;padding:14px 17px;box-shadow:0 8px 24px #0004}#toast.show{transform:translateY(0)}
.motion-region{opacity:1;transform:translateY(0);transition:opacity 170ms ease,transform 170ms cubic-bezier(.2,.75,.25,1),display 170ms allow-discrete}.motion-region.hidden{opacity:0;transform:translateY(5px);pointer-events:none}
.calibration-dialog{opacity:0;transform:translateY(10px) scale(.99);transition:opacity 180ms ease,transform 180ms cubic-bezier(.2,.75,.25,1),display 180ms allow-discrete,overlay 180ms allow-discrete}.calibration-dialog[open]{opacity:1;transform:translateY(0) scale(1)}.calibration-dialog::backdrop{background:#090c11aa;opacity:0;transition:opacity 180ms ease,display 180ms allow-discrete,overlay 180ms allow-discrete}.calibration-dialog[open]::backdrop{opacity:1}
.camera-empty,.inference-camera-empty{opacity:1;transition:opacity 180ms ease,display 180ms allow-discrete}.camera-view.streaming .camera-empty,.camera-view.native-streaming.has-frame .camera-empty,.inference-camera.has-frame .inference-camera-empty{opacity:0;pointer-events:none}
@starting-style{.motion-region:not(.hidden){opacity:0;transform:translateY(5px)}.calibration-dialog[open]{opacity:0;transform:translateY(10px) scale(.99)}.calibration-dialog[open]::backdrop{opacity:0}.camera-empty,.inference-camera-empty{opacity:0}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.calibration-dialog,.motion-region{transform:none!important}}
/* Collection session: one coherent card, aligned controls and a true progress rail. */
.capture-run-panel{display:block;background:#1c292f;border:1px solid #41545e;border-radius:12px;margin:0 16px 18px;padding:0;overflow:hidden}
.capture-task-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 20px;border-bottom:1px solid #3d4d56;background:linear-gradient(110deg,#292534,#223138)}.capture-task-head .kicker{margin:0 0 6px;font-size:9px;letter-spacing:1.5px}.capture-task-head h3{margin:0;font-size:16px;font-weight:600;color:#e7edf2}.capture-task-head .ghost{min-height:34px;font-size:11px;padding:7px 11px;background:#233039;border-color:#4b5c6b;flex-shrink:0}
.capture-run-panel>.capture-run-summary{display:grid;grid-template-columns:minmax(0,1fr) 112px 132px;gap:22px;min-height:0;padding:22px 20px;background:transparent;align-items:center}.capture-run-summary>div{min-width:0}.capture-run-panel .active-dataset-copy{display:flex;gap:8px;justify-content:center}.capture-run-panel .active-dataset-copy>span,.capture-run-panel .round-target>label,.capture-run-panel .round-progress-copy>span{font-size:11px;font-weight:400;color:#9eb1bc;line-height:1.5;margin:0}.capture-run-panel .active-dataset-copy>strong{font-size:15px;line-height:1.6;font-weight:600;color:#e5eff5;margin:0;white-space:normal;overflow-wrap:anywhere}.capture-run-panel .active-dataset-copy>small{font-family:inherit;font-size:11px;line-height:1.6;font-weight:400;color:#8ea5b3;margin:0}.capture-run-panel[data-phase="empty"] .active-dataset-copy>strong{color:#b5c6d0;font-weight:500}
.round-target-field{display:flex;align-items:center;gap:8px;margin-top:9px;background:#121d23;border:1px solid #495e69;border-radius:8px;padding:0 10px;min-height:44px}.capture-run-panel .round-target-field input{width:100%;min-width:0;min-height:42px;height:auto;background:transparent;border:0;margin:0;padding:7px 0;font-size:18px;font-weight:500;color:#e3eef5;box-shadow:none}.capture-run-panel .round-target-field>span{font-size:11px;color:#8ea6b5;white-space:nowrap}.round-target-field:focus-within{border-color:#46d1d8;box-shadow:0 0 0 2px #46d1d820}.round-target-field input:focus{outline:0}.capture-run-panel .round-progress-copy strong{display:flex;align-items:baseline;gap:9px;margin-top:10px;font-family:inherit;font-size:26px;font-weight:500;color:#e6f3fa;font-variant-numeric:tabular-nums;line-height:1.2}.capture-run-panel .round-progress-copy strong b{font-size:28px;font-weight:600;color:#d5f4f7}.capture-run-panel .round-progress-copy strong em{font-size:18px;font-style:normal;font-weight:400;color:#94aaba}.capture-run-panel .round-progress-copy strong .round-count-divider{font-size:16px;color:#647e8e}.capture-run-panel .round-progress-copy strong small{font-size:11px;color:#91a6b3}
.capture-run-panel>.round-progress-track{padding:0 20px 20px;min-height:0;background:transparent;position:static}.round-progress-track:before{display:none!important}.round-progress-caption{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.capture-run-panel .round-progress-caption>span{margin:0;font-size:11px;color:#9bb0bd}.round-progress-caption b{font-size:12px;font-weight:500;color:#c3dde5;font-variant-numeric:tabular-nums}.round-progress-rail{height:9px;position:relative;overflow:hidden;border-radius:999px;background:#101b21;box-shadow:inset 0 1px 3px #0004;border:1px solid #344952}.round-progress-track .round-progress-rail i{display:block;position:static;height:100%;max-width:100%;width:0;background:linear-gradient(90deg,#3bafb9,#66dce1);border-radius:999px;transition:width 350ms cubic-bezier(.2,.75,.25,1);box-shadow:0 0 8px #46d1d82b}
.capture-run-panel>.round-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:0;padding:17px 20px;background:#17232a;border-top:1px solid #3c505a}.round-state{display:flex;align-items:center;gap:8px;min-width:0;margin:0;line-height:1.6}.round-state-dot{display:block!important;width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#91a4af}.capture-run-panel .round-state #round-status{font-size:11px;color:#a4b9c5;margin:0;line-height:1.6}.capture-run-panel[data-phase="recording"] .round-state-dot{background:#46d1d8}.capture-run-panel[data-phase="review"] .round-state-dot{background:#e1a64a}.capture-run-panel[data-phase="complete"] .round-state-dot{background:#55d49f}.round-action-buttons{display:flex;gap:9px;align-items:center;flex-shrink:0}.round-actions .round-action-buttons .record{display:inline-block;min-width:168px;height:auto;min-height:42px;border-radius:8px;padding:10px 17px;background:#46d1d8;border:1px solid #6edbe0;color:#10282e;font-size:12px;font-weight:600;box-shadow:inset 0 1px 0 #ffffff20}.round-actions .round-action-buttons .record:disabled{background:#29424c;border-color:#3d5964;color:#90a7b3;opacity:1;box-shadow:none}.round-actions .round-action-buttons .ghost{min-height:42px;height:auto;padding:10px 13px;border-radius:8px;font-size:12px}.capture-run-panel>#episode-control-status{font-size:10px;line-height:1.8;padding:12px 20px;background:#17232a;border:0;color:#7f98a7;margin:0}.capture-run-panel>.review{margin:14px 20px 0;border:1px solid #715e3e;border-radius:8px;background:#302d25;padding:14px;gap:14px}.capture-run-panel>.review h3{font-size:13px}.capture-run-panel>.review p{font-size:11px}.review-actions{gap:8px}
/* Consistent progress treatment for training and environment preparation. */
progress{display:block;width:100%;height:9px;border:1px solid #354c58;border-radius:999px;overflow:hidden;background:#111d25;appearance:none;-webkit-appearance:none}progress::-webkit-progress-bar{background:#111d25;border-radius:999px;box-shadow:inset 0 1px 3px #0004}progress::-webkit-progress-value{background:linear-gradient(90deg,#40afb9,#6cdde1);border-radius:999px;transition:width 350ms ease}progress::-moz-progress-bar{background:linear-gradient(90deg,#40afb9,#6cdde1);border-radius:999px}.training-overall,.training-progress{border-radius:10px;padding:16px 18px;background:#192930;border:1px solid #3d535e}.training-overall>div,.training-progress>div{margin-bottom:11px}.training-overall small{display:block;margin-top:11px;color:#96adbc;font-size:11px}.training-overall b,.training-progress b{font-variant-numeric:tabular-nums;color:#c4e4ea;font-weight:500}
.metric-strip{border:1px solid #3a4f59;border-radius:10px;margin:0 16px 18px;background:#1e2d34;overflow:hidden}.metric-strip>div{padding:15px 16px;background:#1e2d34;border-right:1px solid #384b55;min-width:0}.metric-strip>div:last-child{border-right:0}.metric-strip>div>span{font-size:10px;letter-spacing:.4px;color:#91a9b8;margin-bottom:7px}.metric-strip>div>strong{font-size:18px;font-weight:500;color:#d9eaf3;font-variant-numeric:tabular-nums}.quality-grid>div,.camera-quality>div{border-radius:7px}.model-row{padding:22px}.panel-head{padding:18px}.inference-wave-stage,.training-chart-stage{border-top:1px solid #344851}
@media(max-width:1200px){.capture-run-panel>.capture-run-summary{grid-template-columns:minmax(0,1fr) 104px;gap:18px}.capture-run-summary .active-dataset-copy{grid-column:1/-1}.round-progress-copy{justify-self:end;min-width:115px}.capture-run-panel>.round-actions{flex-wrap:wrap}.round-action-buttons{margin-left:auto}}
@media(max-width:600px){.capture-run-panel{margin:0 12px 14px}.capture-task-head{padding:16px}.capture-run-panel>.capture-run-summary{padding:18px 16px;gap:16px}.capture-run-panel>.round-progress-track{padding:0 16px 18px}.capture-run-panel>.round-actions{padding:15px 16px;gap:12px}.round-action-buttons{width:100%;margin:0}.round-actions .round-action-buttons .record{flex:1;min-width:0}.capture-run-panel>#episode-control-status{padding:0 16px 14px}.capture-run-panel>.review{margin:12px 16px}.metric-strip{margin:0 12px 14px}.metric-strip>div{padding:13px}.capture-task-head .ghost{font-size:10px}.capture-run-panel .active-dataset-copy>strong{font-size:14px}.training-overall,.training-progress{padding:14px}}
/* Keep the live camera pair and Action/State chart together; controls own the right column. */
.capture-inspector>.capture-run-panel{margin:0;width:100%;flex:0 0 auto;border-radius:12px}.capture-inspector .capture-task-head{padding:16px 14px;flex-wrap:wrap;gap:12px}.capture-inspector .capture-task-head h3{font-size:15px}.capture-inspector .capture-task-head .ghost{font-size:10px;padding:7px 9px}.capture-inspector .capture-run-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:18px 14px;gap:18px 14px}.capture-inspector .active-dataset-copy{grid-column:1/-1}.capture-inspector .active-dataset-copy strong{font-size:13px}.capture-inspector .round-progress-copy{justify-self:end;min-width:0}.capture-inspector .round-progress-copy strong{gap:6px}.capture-inspector .round-progress-copy strong b{font-size:25px}.capture-inspector .round-progress-copy strong em{font-size:16px}.capture-inspector .round-target-field{padding:0 9px}.capture-inspector .round-progress-track{padding:0 14px 18px}.capture-inspector .round-actions{display:flex;flex-direction:column;align-items:stretch;padding:15px 14px;gap:12px}.capture-inspector .round-action-buttons{width:100%;margin:0;gap:7px}.capture-inspector .round-actions .record{min-width:0;flex:1;padding:10px 8px;font-size:11px}.capture-inspector .round-actions .ghost{padding:10px 8px;font-size:11px}.capture-inspector .round-state #round-status{font-size:10px}.capture-inspector #episode-control-status{padding:0 14px 14px;font-size:10px}.capture-inspector .review{margin:12px 14px 0;grid-template-columns:1fr;padding:12px}.capture-inspector .review-actions{display:flex;flex-wrap:wrap;gap:7px}.capture-inspector .review-actions button{font-size:10px;padding:8px;flex:1;min-width:80px}
@media(min-width:901px) and (min-height:681px){
 .capture-stage{display:grid;grid-template-rows:auto minmax(145px,.9fr) auto minmax(230px,1fr);gap:12px;padding:14px;overflow:hidden}
 .capture-stage>.stage-head{padding:4px 4px 0;min-height:0;gap:10px}.capture-stage>.stage-head h2{font-size:17px}.capture-stage .stage-head .kicker{margin-bottom:6px}.capture-stage .stage-gate>span{display:none}
 .capture-stage>.camera-grid{height:100%;min-height:0;padding:0;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:minmax(0,1fr)}
 .capture-stage .camera-view{height:100%;min-height:0;aspect-ratio:auto}.capture-stage .camera-view video,.capture-stage .camera-view .native-preview{width:100%;height:calc(100% - 40px);object-fit:contain}.capture-stage .camera-view footer{height:40px;min-height:40px;padding:10px 12px}
 .capture-stage>.metric-strip{margin:0;min-height:0}.capture-stage .metric-strip>div{padding:10px 12px}.capture-stage .metric-strip>div>span{font-size:9px;margin-bottom:5px}.capture-stage .metric-strip>div>strong{font-size:15px}
 .capture-stage>.waveform-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:0;margin:0;padding:12px;border:1px solid #41545f;border-radius:10px;background:#152127;overflow:hidden}
 .capture-stage .waveform-head{min-height:0;margin-bottom:10px;gap:10px}.capture-stage .waveform-head b{font-size:12px}.capture-stage .waveform-head small{font-size:8px}.capture-stage .waveform-mode button{min-height:28px;font-size:10px;padding:6px 10px}.capture-stage .waveform-status{font-size:9px}
 .capture-stage .waveform-workspace{display:grid;grid-template-columns:minmax(0,1fr) 128px;grid-template-rows:minmax(0,1fr);gap:10px;min-height:0;height:100%}
 .capture-stage .waveform-stage{height:100%;min-height:0}.capture-stage .waveform-stage canvas{display:block;width:100%;height:100%;min-height:0}
 .capture-stage .channel-legend{min-height:0;max-height:100%;overflow-y:auto;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;padding:8px;gap:5px;scrollbar-width:thin;scrollbar-color:#50616b #172329}.capture-stage .channel-legend b{font-size:8px;line-height:1.6}.capture-stage .channel-legend label{font-size:9px;padding:3px 0}.capture-stage .channel-legend input{width:11px;height:11px}.capture-stage .channel-legend i{width:6px;height:6px}
 .capture-stage .waveform-controls{margin:8px 0 0;min-height:0;align-items:center;flex-wrap:wrap;gap:8px}.capture-stage .joint-selector button{min-height:26px;padding:4px 7px;font-size:9px}.capture-stage .waveform-controls>small{font-size:8px}
}
@media(min-width:901px) and (min-height:681px) and (max-height:820px){.capture-stage{gap:10px;padding:12px;grid-template-rows:auto minmax(145px,.85fr) auto minmax(230px,1fr)}.capture-stage .camera-placeholder-icon{width:32px;height:32px;border-radius:9px;margin:0}.capture-stage .camera-placeholder-icon svg{width:23px;height:23px}.capture-stage .camera-empty{gap:7px;padding:10px 8px 45px}.capture-stage .camera-placeholder-help{display:none}.capture-stage .camera-empty b{font-size:11px}.capture-stage .camera-placeholder-tag{padding:3px 7px;font-size:9px}.capture-stage .waveform-head small{display:none}.capture-stage .waveform-head{margin-bottom:8px}.capture-stage .waveform-controls>small{display:none}}
@media(max-width:900px){.capture-inspector>.capture-run-panel{grid-column:1/-1}.capture-inspector .capture-run-summary{grid-template-columns:minmax(0,1fr) 112px 132px}.capture-inspector .active-dataset-copy{grid-column:auto}.capture-inspector .round-actions{flex-direction:row;align-items:center}.capture-inspector .round-action-buttons{width:auto;min-width:220px}.capture-stage>.waveform-panel{margin:0 14px 16px}}
@media(max-width:600px){.capture-inspector .capture-run-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.capture-inspector .active-dataset-copy{grid-column:1/-1}.capture-inspector .round-actions{flex-direction:column;align-items:stretch}.capture-inspector .round-action-buttons{width:100%;min-width:0}}
@media(min-width:901px) and (min-height:681px){.capture-stage{grid-template-rows:auto minmax(145px,.75fr) auto minmax(260px,1.1fr);padding:12px;gap:10px}.capture-stage .stage-head h2{font-size:16px}.capture-stage .stage-head .kicker{margin-bottom:4px;font-size:8px}.capture-stage .metric-strip>div{padding:8px 10px}.capture-stage .metric-strip>div>span{font-size:8px;margin-bottom:4px}.capture-stage .metric-strip>div>strong{font-size:14px}.capture-stage>.waveform-panel{grid-template-rows:auto minmax(0,1fr) auto auto}.capture-stage .sync-sources{margin-top:7px;gap:7px;min-height:0}.capture-stage .sync-sources>div{padding:4px 6px;gap:2px}.capture-stage .waveform-controls{margin-top:7px}}
/* Give live vision the majority of the shared viewport in both capture and inference. */
.camera-screen-toolbar{display:none}.inference-head-actions{display:flex;align-items:center;gap:12px}.camera-enlarge{min-height:32px!important;padding:6px 10px!important;font-size:11px!important;white-space:nowrap}.stage-gate{display:flex;align-items:center;gap:10px}.capture-inspector>.sync-sources{display:flex;flex-direction:column;margin:0;border:1px solid #3a505b;border-radius:9px;background:#1b2a32;padding:10px;flex:0 0 auto}.capture-inspector>.sync-sources>div{padding:6px 8px}.capture-inspector .sync-sources span{font-size:10px}.capture-inspector .sync-sources strong{font-size:11px}.inference-inspector>.inference-joints{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;flex:0 0 auto;max-height:none}.inference-inspector .inference-joints>div{padding:12px}.inference-inspector .inference-joints span,.inference-inspector .inference-joints strong{font-size:10px}
@media(min-width:901px) and (min-height:681px){
 .capture-grid.active,.inference-shell{grid-template-columns:clamp(270px,22vw,300px) minmax(0,1fr) clamp(210px,18vw,250px)}
 .capture-stage{grid-template-rows:auto minmax(190px,1.5fr) auto minmax(185px,.8fr);padding:12px;gap:10px}.capture-stage>.waveform-panel{grid-template-rows:auto minmax(0,1fr) auto}.capture-stage .metric-strip>div{padding:6px 10px}.capture-stage .metric-strip>div>span{font-size:8px;margin-bottom:3px}.capture-stage .metric-strip>div>strong{font-size:13px}.capture-stage .waveform-head{margin-bottom:7px}.capture-stage .waveform-controls{margin-top:6px}.capture-stage .camera-view video,.capture-stage .camera-view .native-preview{height:calc(100% - 36px)}.capture-stage .camera-view footer{height:36px;min-height:36px;padding:8px 10px}
 .inference-head{padding:12px 17px;min-height:0}.inference-head h2{font-size:19px}.inference-head .kicker{font-size:8px;margin-bottom:5px}.inference-head p:last-child{font-size:11px;margin:5px 0 0;line-height:1.5}.inference-shell{gap:12px;grid-template-rows:auto minmax(0,1fr)}
 .inference-stage{display:grid;grid-template-rows:minmax(190px,1.5fr) minmax(185px,.8fr);gap:10px;overflow:hidden;height:100%;min-height:0}.inference-stage>*{min-height:0}
 .inference-cameras{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:minmax(0,1fr);min-height:0;height:100%;gap:12px}.inference-camera{height:100%;min-height:0;aspect-ratio:auto}.inference-camera .native-preview{height:calc(100% - 36px);object-fit:contain}.inference-camera footer{height:36px;min-height:36px;padding:8px 10px}
 .inference-stage>.inference-wave{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0;overflow:hidden}.inference-wave .panel-head{padding:12px 14px;min-height:0;gap:6px}.inference-wave .panel-head h2{font-size:14px}.inference-wave .panel-head .kicker{font-size:8px;margin-bottom:4px}.inference-wave .panel-head>span{font-size:9px}.inference-wave-stage{height:100%;min-height:0}.inference-wave-stage canvas{min-height:0;height:100%}
}
@media(min-width:901px) and (max-height:820px){.capture-stage .channel-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:6px}.capture-stage .waveform-workspace{grid-template-columns:minmax(0,1fr) 110px}.inference-head p:last-child{display:none}.inference-head h2{font-size:18px}}
/* Fullscreen reuses the actual video buffers and preserves their full image ratio. */
.camera-grid:fullscreen,.inference-cameras:fullscreen{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:auto minmax(0,1fr)!important;gap:16px!important;width:100vw!important;height:100dvh!important;max-height:none!important;background:#0b1217!important;padding:18px!important;box-sizing:border-box}
.camera-grid:fullscreen .camera-screen-toolbar,.inference-cameras:fullscreen .camera-screen-toolbar{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;color:#b9cbd5;font-size:13px}
.camera-grid:fullscreen .camera-view,.inference-cameras:fullscreen .inference-camera{height:100%!important;min-height:0!important;aspect-ratio:auto!important}.camera-grid:fullscreen .camera-view video,.camera-grid:fullscreen .camera-view .native-preview,.inference-cameras:fullscreen .native-preview{height:calc(100% - 42px)!important;object-fit:contain!important}.camera-grid:fullscreen footer,.inference-cameras:fullscreen footer{height:42px!important;min-height:42px!important}.camera-grid:fullscreen .camera-empty,.inference-cameras:fullscreen .inference-camera-empty{padding-bottom:60px}.camera-grid:fullscreen .camera-placeholder-help{display:block}
[data-ui-icon="maximize"]{--ui-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 3H3v5m13-5h5v5M3 16v5h5m13-5v5h-5'/%3E%3C/svg%3E")}[data-ui-icon="minimize"]{--ui-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h5V3m8 0v5h5M8 21v-5H3m18 0h-5v5'/%3E%3C/svg%3E")}
@media(max-width:600px){.inference-head-actions{gap:8px;flex-wrap:wrap}.camera-enlarge{font-size:10px!important}.stage-gate{gap:6px}.inference-head h2{font-size:18px}.camera-grid:fullscreen,.inference-cameras:fullscreen{grid-template-columns:1fr!important;grid-template-rows:auto minmax(0,1fr) minmax(0,1fr)!important;gap:10px!important;padding:10px!important}}
@media(min-width:901px) and (min-height:681px){.capture-stage{grid-template-rows:auto minmax(190px,1.5fr) auto minmax(200px,.8fr)}.inference-stage{grid-template-rows:minmax(190px,1.5fr) minmax(200px,.8fr)}}
/* Live collection metrics belong to the vision heading rather than a separate row. */
.capture-stage .stage-head{display:grid;grid-template-columns:minmax(130px,1fr) auto auto;align-items:center;gap:14px}.stage-head>.metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;border:0;border-radius:0;background:transparent;overflow:visible;gap:0;min-width:0}.stage-head .metric-strip>div{padding:0 11px;background:transparent;border:0;border-left:1px solid #3c4d57;min-width:60px}.stage-head .metric-strip>div>span{display:block;font-size:8px;line-height:1.5;letter-spacing:.4px;color:#90a8b7;margin:0 0 5px;white-space:nowrap}.stage-head .metric-strip>div>strong{display:block;font-size:12px;font-weight:500;line-height:1.4;color:#d4eaf4;white-space:nowrap;font-variant-numeric:tabular-nums}.stage-head>.stage-gate{gap:8px}.stage-head .camera-enlarge{font-size:10px!important;padding:6px 8px!important}.stage-head .tag{font-size:9px;padding:5px 7px}
@media(min-width:901px) and (min-height:681px){.capture-stage{grid-template-rows:auto minmax(190px,1.5fr) minmax(200px,.8fr)}.capture-stage>.stage-head{gap:10px;padding:4px 2px}.capture-stage .stage-head h2{font-size:15px}.capture-stage .stage-head .metric-strip>div{padding:0 9px}.capture-stage .stage-head .metric-strip>div>strong{font-size:12px}}
@media(min-width:901px) and (max-width:1200px){.capture-stage>.stage-head{grid-template-columns:minmax(0,1fr) auto;row-gap:10px}.stage-head>.metric-strip{grid-column:1/-1;grid-row:2}.stage-head>.stage-gate{grid-column:2;grid-row:1}.stage-head .metric-strip>div{min-width:0}.stage-head .metric-strip>div:first-child{border-left:0;padding-left:0}}
@media(max-width:900px){.capture-stage .stage-head{grid-template-columns:minmax(0,1fr) auto}.stage-head>.metric-strip{grid-column:1/-1;grid-row:2}.stage-head>.stage-gate{grid-column:2;grid-row:1}.stage-head .metric-strip>div{min-width:0;padding:0 10px}.stage-head .metric-strip>div:first-child{border-left:0;padding-left:0}.capture-stage>.camera-grid{padding-top:14px}}
/* Environment preparation: real percentage, brand-color spectrum and a soft moving highlight. */
#training-environment-progress{background:linear-gradient(120deg,#2a2235,#1b3038);border:1px solid #67517b;padding:18px 20px;border-radius:12px;box-shadow:inset 0 1px 0 #ffffff08}#training-environment-progress>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:13px}#training-stage{color:#c8bbd8;font-size:12px;line-height:1.7}#training-percent{font-size:19px;font-weight:600;color:#d8cef1;font-variant-numeric:tabular-nums;letter-spacing:.3px}
.environment-progress-rail{position:relative;width:100%;height:12px;margin:0!important;border-radius:999px;background:#111925;box-shadow:0 0 0 1px #5b4b7038,inset 0 2px 4px #0005;overflow:hidden}.environment-progress-rail #training-progress{margin:0;height:12px;border:0;background:transparent;border-radius:999px}.environment-progress-rail #training-progress::-webkit-progress-bar{background:#111925;box-shadow:none}.environment-progress-rail #training-progress::-webkit-progress-value{background:linear-gradient(90deg,#905ad4 0%,#b57be7 27%,#718cf0 56%,#4fc8df 82%,#6fe2d5 100%);border-radius:999px;box-shadow:0 0 10px #9e78e64d;transition:width 500ms cubic-bezier(.2,.75,.25,1)}.environment-progress-rail #training-progress::-moz-progress-bar{background:linear-gradient(90deg,#905ad4,#b57be7 27%,#718cf0 56%,#4fc8df 82%,#6fe2d5);border-radius:999px}
.environment-progress-glow{position:absolute;left:0;top:0;bottom:0;width:calc(var(--prepare-progress,0)*1%);border-radius:999px;overflow:hidden;pointer-events:none;transition:width 500ms cubic-bezier(.2,.75,.25,1)}.environment-progress-glow:after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 15%,#ffffff05 35%,#ffffff38 50%,#ffffff05 65%,transparent 85%);transform:translateX(-100%);animation:preparation-sheen 2600ms ease-in-out infinite}#training-environment-progress:not([data-running="true"]) .environment-progress-glow:after{animation-play-state:paused;opacity:0}@keyframes preparation-sheen{0%,15%{transform:translateX(-100%)}75%,100%{transform:translateX(100%)}}
/* Rebalance the shared viewport: restore chart depth while keeping the enlarged live video. */
@media(min-width:901px) and (min-height:720px){.capture-stage{grid-template-rows:auto minmax(210px,1.1fr) minmax(240px,.95fr)}}
@media(min-width:901px) and (min-height:681px) and (max-height:719px){.capture-stage{grid-template-rows:auto minmax(175px,1.1fr) minmax(220px,.95fr)}}
@media(min-width:901px) and (max-width:1200px) and (min-height:681px) and (max-height:820px){.capture-stage{grid-template-rows:auto minmax(170px,1.1fr) minmax(220px,.95fr)}}
@media(prefers-reduced-motion:reduce){.environment-progress-glow:after{animation:none!important;transform:none;opacity:.35}}
/* Installation recovery stays compact until the customer needs it. */
.runtime-recovery { margin-top: 12px; border: 1px solid var(--border, #33454e); border-radius: 12px; padding: 12px 14px; }
.runtime-recovery summary { cursor: pointer; color: var(--text, #dce8ef); font-weight: 600; }
.runtime-recovery p { color: var(--muted, #a8bac7); font-size: 12px; line-height: 1.7; margin: 12px 0; }
.runtime-recovery[open] p { animation: runtime-recovery-appear .22s ease both; }
@keyframes runtime-recovery-appear { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .runtime-recovery[open] p { animation: none; } }
