*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:#c8cdd8;color:#1a1a2a;font-family:Segoe UI,system-ui,-apple-system,sans-serif;overflow:hidden}select option{background:#1a1a2e;color:#e0e0e0}#root{width:100vw;height:100vh}.obj-label{background:#000000a6;padding:2px 8px;border-radius:4px;font-size:11px;font-family:monospace;white-space:nowrap;pointer-events:none;border:1px solid rgba(255,255,255,.15);text-shadow:0 1px 3px rgba(0,0,0,.8)}.calib-corner-label{background:#001000bf;padding:1px 6px;border-radius:3px;font-size:9px;font-family:Consolas,SF Mono,monospace;font-weight:600;white-space:nowrap;pointer-events:none;color:#0f0;border:1px solid rgba(0,255,0,.3);text-shadow:0 0 4px rgba(0,255,0,.5);letter-spacing:.03em}.calib-cam-label{color:#f44;background:#100000bf;border-color:#ff44444d;text-shadow:0 0 4px rgba(255,68,68,.5)}.calib-measure-label{background:#000010cc;padding:1px 5px;border-radius:3px;font-size:9px;font-family:Consolas,SF Mono,monospace;font-weight:600;white-space:nowrap;pointer-events:none;color:#fc0;border:1px solid rgba(255,204,0,.35);text-shadow:0 0 4px rgba(255,204,0,.5);letter-spacing:.03em}.hover-stats-panel{background:#080810e0;padding:6px 10px;border-radius:6px;font-family:monospace;font-size:11px;color:#d0d4e0;white-space:nowrap;pointer-events:none;border:1px solid rgba(255,255,255,.18);box-shadow:0 4px 16px #0000008c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);min-width:150px}.hover-stats-overlay{position:fixed;z-index:1000;transform:translate(-50%,-100%)}.hover-stats-title{font-weight:700;font-size:12px;margin-bottom:4px;text-shadow:0 1px 3px rgba(0,0,0,.8)}.hover-stats-row{display:flex;justify-content:space-between;gap:12px;line-height:1.5}.hover-stats-label{color:#8890a8}.hover-stats-value{color:#e0e4f0;text-align:right}.hover-stats-divider{border-top:1px solid rgba(255,255,255,.1);margin:3px 0}.controls-overlay{position:fixed;bottom:20px;left:50%;transform:translate(-50%);width:fit-content;min-width:540px;z-index:100;padding:8px 14px 14px;background:#0c0c12eb;border:1px solid rgba(255,255,255,.13);border-radius:8px;box-shadow:0 4px 24px #0000008c;display:flex;flex-direction:column;gap:8px;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.controls-drag-handle{display:flex;align-items:center;gap:14px;cursor:grab;font-size:11px;font-family:monospace;color:#ffffff80;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.07);-webkit-user-select:none;user-select:none}.controls-drag-handle:active{cursor:grabbing}.drag-grip{font-size:15px;opacity:.45;cursor:grab;line-height:1}.drag-grip:active{cursor:grabbing}.controls-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.controls-row.stats{font-size:11px;font-family:monospace;color:#ffffff8c;gap:16px}.progress-bar-wrap{position:relative;height:5px;background:#ffffff26;border-radius:3px;cursor:pointer;flex-shrink:0;width:100%}.progress-bar-fill{height:100%;background:#4ecdc4;border-radius:3px;pointer-events:none;transition:width .05s linear}.progress-bar-wrap:hover .progress-bar-fill{background:#72e5de}.ctrl-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.18);color:#e8e8e8;padding:5px 12px;border-radius:5px;font-size:13px;cursor:pointer;transition:background .15s;white-space:nowrap;line-height:1.4}.ctrl-btn:hover{background:#fff3}.ctrl-btn:disabled{opacity:.45;cursor:not-allowed}.ctrl-btn:disabled:hover{background:#ffffff1a}.ctrl-btn.active{background:#4ecdc440;border-color:#4ecdc4;color:#4ecdc4}.ctrl-btn.play-btn{min-width:72px;font-size:15px}.speed-display{font-size:12px;font-family:monospace;color:#ffffffb3;min-width:36px;text-align:center}.settings-panel{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:6px 0 0;border-top:1px solid rgba(255,255,255,.07);font-size:12px;color:#fff9}.settings-panel label{display:flex;align-items:center;gap:6px;white-space:nowrap}.settings-panel input[type=range]{width:90px;accent-color:#4ecdc4;cursor:pointer}.settings-panel input[type=checkbox]{accent-color:#4ecdc4;cursor:pointer}.more-options-panel{border-top:1px dashed rgba(255,255,255,.12)}.options-select{margin-left:.5em;background:#1e1e2e;color:#cdd6f4;border:1px solid #45475a;border-radius:4px;padding:2px 4px;font-size:.8rem;cursor:pointer}.splash{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e);color:#e0e0e0}.splash h2{font-size:18px;font-weight:400;color:#ffffffbf;letter-spacing:.3px}.splash p{font-size:13px;color:#ff6464cc;font-family:monospace;max-width:520px;text-align:center}.spinner-ring{width:56px;height:56px;border-radius:50%;border:3px solid rgba(78,205,196,.15);border-top-color:#4ecdc4;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pipeline-spinner .spinner-ring{width:72px;height:72px;border-width:3px;box-shadow:0 0 32px #4ecdc426}.spinner-sub{color:#fff6!important;font-size:12px!important}.spinner-sub code{background:#4ecdc426;color:#4ecdc4;padding:2px 6px;border-radius:3px;font-size:11px}.video-overlay{position:fixed;bottom:12px;left:12px;width:960px;aspect-ratio:320 / 204;min-width:200px;background:#000;border-radius:6px;overflow:auto;border:1px solid rgba(255,255,255,.18);box-shadow:0 4px 24px #0009;z-index:90;pointer-events:auto;resize:horizontal;transition:none}.video-overlay.overlay-expanded{top:0;left:0;width:100vw;height:100vh;aspect-ratio:unset;min-width:unset;background:transparent;border:none;border-radius:0;box-shadow:none;resize:none;overflow:hidden;pointer-events:none}.vo-drag-handle{height:24px;display:flex;align-items:center;gap:8px;padding:0 8px;background:#000c;cursor:grab;pointer-events:auto;-webkit-user-select:none;user-select:none;border-bottom:1px solid rgba(255,255,255,.08)}.vo-drag-handle-floating{position:absolute;top:4px;left:50%;transform:translate(-50%);z-index:10;border-radius:6px;width:auto;background:#000000bf;border:1px solid rgba(255,255,255,.15);border-bottom:1px solid rgba(255,255,255,.15)}.vo-drag-handle:active{cursor:grabbing}.vo-title{font-size:10px;font-family:monospace;color:#ffffff80;white-space:nowrap}.seg-targets-panel{position:fixed;top:0;left:0;width:320px;max-height:400px;background:#121218f2;border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:0 4px 24px #0009;z-index:91;display:flex;flex-direction:column;overflow:hidden;pointer-events:auto;transition:width .2s ease,max-height .2s ease}.seg-targets-panel.collapsed{width:26px;max-height:none;height:auto;border-radius:0 6px 6px 0}.seg-targets-panel.collapsed.side-right{border-radius:6px 0 0 6px}.seg-targets-header{display:flex;align-items:center;gap:6px;padding:4px 8px;background:#0009;-webkit-user-select:none;user-select:none;border-bottom:1px solid rgba(255,255,255,.08);cursor:pointer}.seg-targets-panel.collapsed .seg-targets-header{flex-direction:column;padding:6px 3px;border-bottom:none;border-right:1px solid rgba(255,255,255,.08)}.seg-targets-panel.collapsed.side-right .seg-targets-header{border-right:none;border-left:1px solid rgba(255,255,255,.08)}.seg-targets-panel.collapsed.side-right .seg-targets-collapse-btn{transform:scaleX(-1)}.seg-targets-title-vert{writing-mode:vertical-rl;text-orientation:mixed;font-size:10px;font-family:monospace;color:#fff9;letter-spacing:1px;white-space:nowrap}.seg-targets-count{font-size:10px;color:#00e676b3;font-family:monospace;min-width:12px}.seg-targets-collapse-btn{background:none;border:none;color:#fff6;font-size:10px;cursor:pointer;padding:0 2px;line-height:1}.seg-targets-collapse-btn:hover{color:#ffffffb3}.seg-targets-title{font-size:11px;font-family:monospace;color:#ffffffb3;flex:1}.seg-targets-list{flex:1;overflow-y:auto;padding:4px 0}.seg-targets-empty{padding:16px;text-align:center;font-size:11px;color:#ffffff4d;font-family:monospace}.seg-target-row{display:flex;align-items:center;gap:4px;padding:4px 8px;cursor:pointer;font-family:monospace;font-size:11px;color:#ffffffb3;border-left:3px solid transparent;transition:background .15s}.seg-target-row:hover{background:#ffffff0f}.seg-target-row.active{background:#00c8ff1a;border-left-color:#00c8ff99}.seg-target-type{font-size:14px;flex-shrink:0}.seg-target-class{background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:3px;color:#fff;font-size:9px;font-family:monospace;padding:1px 2px;flex-shrink:0;cursor:pointer;outline:none;max-width:100px}.seg-target-class:focus{border-color:#00c8ff80}.seg-target-class option{background:#1a1a2e;color:#fff}.seg-target-label{background:transparent;border:1px solid transparent;border-radius:2px;color:#fff;font-size:10px;font-family:monospace;padding:1px 4px;width:80px;min-width:50px;outline:none}.seg-target-label:hover{border-color:#fff3}.seg-target-label:focus{border-color:#00c8ff80;background:#ffffff0d}.seg-target-frame{color:#00c8ffb3;font-size:10px;flex-shrink:0}.seg-target-conf{color:#66bb6acc;font-size:10px;flex-shrink:0;margin-left:auto}.seg-target-calib-badge{font-size:11px;opacity:.45;flex-shrink:0;margin-left:4px;cursor:pointer}.seg-target-calib-badge.solved{opacity:1}.reproj-badge{display:inline-flex;align-items:center;gap:4px;margin-left:4px;padding:1px 6px;border-radius:3px;font-family:Consolas,SF Mono,Fira Code,monospace;font-size:9px;letter-spacing:.04em;line-height:1.5;flex-shrink:0;border:1px solid;text-transform:uppercase}.reproj-label{font-weight:700}.reproj-value{opacity:.85}.reproj-good{background:#00c8531f;border-color:#00c85366;color:#4cdf8a}.reproj-warn{background:#ffc1071f;border-color:#ffc10766;color:#ffd54f}.reproj-danger{background:#f443361f;border-color:#f4433666;color:#ff6b6b}.seg-target-remove{background:none;border:none;color:#ffffff40;font-size:14px;cursor:pointer;padding:0 2px;line-height:1;flex-shrink:0}.seg-target-remove:hover{color:#ff6b6b}.seg-targets-generate{margin:6px 8px 8px;padding:6px 12px;background:linear-gradient(135deg,#00c8ff4d,#6432ff4d);border:1px solid rgba(0,200,255,.4);border-radius:4px;color:#fff;font-size:11px;font-family:monospace;cursor:pointer;transition:background .2s}.seg-targets-generate:hover:not(:disabled){background:linear-gradient(135deg,#00c8ff73,#6432ff73)}.seg-targets-generate:disabled{opacity:.5;cursor:wait}.kb-hint{font-size:10px;color:#ffffff4d;font-family:monospace}.controls-divider{color:#ffffff26;font-size:16px;line-height:1;-webkit-user-select:none;user-select:none}.forensic-btn.active{background:#feca5733;border-color:#feca57;color:#feca57}.calibration-overlay{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:420px;max-height:80vh;z-index:200;background:#0c0c12f2;border:1px solid rgba(255,255,255,.13);border-radius:10px;box-shadow:0 8px 40px #000000b3,0 0 80px #4ecdc40f;display:flex;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.cal-drag-handle{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:grab;border-bottom:1px solid rgba(255,255,255,.07);-webkit-user-select:none;user-select:none;background:#0000004d}.cal-drag-handle:active{cursor:grabbing}.cal-title{font-size:13px;font-weight:600;color:#fffc;flex:1}.cal-close{background:none;border:1px solid rgba(255,255,255,.12);color:#ffffff80;width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:all .15s}.cal-close:hover{background:#ff646433;border-color:#ff646466;color:#ff6b6b}.cal-header-btn{background:none;border:1px solid rgba(255,255,255,.12);color:#ffffff80;width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s;line-height:1}.cal-header-btn:hover{background:#ffffff14;border-color:#fff3}.cal-hide-active{background:#ffb74d26;border-color:#ffb74d66;color:#ffb74d}.cal-hide-active:hover{background:#ffb74d40}.cal-body{padding:14px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.cal-intro{font-size:12px;color:#ffffff73;line-height:1.5;margin-bottom:4px}.cal-step{border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:10px 12px;background:#ffffff05;transition:all .2s}.cal-step-active{border-color:#4ecdc44d;background:#4ecdc40a;box-shadow:0 0 16px #4ecdc40f}.cal-step-done{border-color:#4ecdc426}.cal-step-header{display:flex;align-items:center;gap:8px}.cal-step-num{width:22px;height:22px;border-radius:50%;background:#4ecdc426;color:#4ecdc4;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cal-step-done .cal-step-num{background:#4ecdc440}.cal-step-label{font-size:12px;font-weight:600;color:#ffffffb3;flex:1}.cal-check{color:#4ecdc4;font-size:14px}.cal-step-body{margin-top:10px;display:flex;flex-direction:column;gap:8px}.cal-step-summary{margin-top:6px;font-size:11px;font-family:monospace;color:#ffffff80;display:flex;align-items:center;gap:8px}.cal-field{display:flex;align-items:center;gap:8px;font-size:12px;color:#fff9}.cal-field span{min-width:48px;flex-shrink:0}.cal-field input[type=number],.cal-field select{flex:1;background:#1e1e2ee6;color:#cdd6f4;border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:5px 8px;font-size:12px;font-family:monospace;outline:none;transition:border-color .15s}.cal-field input:focus,.cal-field select:focus{border-color:#4ecdc4}.cal-btn-sm{background:#ffffff0f;border:1px solid rgba(255,255,255,.1);color:#ffffff80;padding:3px 8px;border-radius:4px;font-size:10px;cursor:pointer;transition:all .15s;white-space:nowrap}.cal-btn-sm:hover{background:#4ecdc41a;border-color:#4ecdc44d;color:#4ecdc4}.cal-btn{background:#4ecdc41a;border:1px solid rgba(78,205,196,.3);color:#4ecdc4;padding:6px 14px;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;align-self:flex-end}.cal-btn:hover:not(:disabled){background:#4ecdc433;box-shadow:0 0 12px #4ecdc426}.cal-btn:disabled{opacity:.3;cursor:not-allowed}.cal-btn-edit{background:none;border:none;color:#4ecdc499;font-size:10px;cursor:pointer;text-decoration:underline;padding:0}.cal-btn-edit:hover{color:#4ecdc4}.cal-distance-row{display:flex;gap:8px}.cal-distance-input{flex:1;background:#1e1e2ee6;color:#cdd6f4;border:1px solid rgba(255,255,255,.15);border-radius:5px;padding:8px 12px;font-size:16px;font-family:monospace;font-weight:600;outline:none;transition:border-color .15s}.cal-distance-input:focus{border-color:#4ecdc4;box-shadow:0 0 8px #4ecdc426}.cal-unit-select{background:#1e1e2ee6;color:#cdd6f4;border:1px solid rgba(255,255,255,.15);border-radius:5px;padding:6px 10px;font-size:13px;cursor:pointer;outline:none}.cal-unit-select:focus{border-color:#4ecdc4}.cal-btn-apply{width:100%;padding:10px;font-size:13px;text-align:center;margin-top:4px;align-self:stretch}.cal-error{font-size:11px;color:#ff6b6b;padding:6px 10px;background:#ff6b6b14;border:1px solid rgba(255,107,107,.2);border-radius:4px}.cal-success{font-size:11px;color:#4ecdc4;padding:6px 10px;background:#4ecdc414;border:1px solid rgba(78,205,196,.2);border-radius:4px}.audit-panel{position:fixed;right:0;top:0;width:380px;height:100vh;z-index:150;background:#0c0c12f2;border-left:1px solid rgba(255,255,255,.1);box-shadow:-4px 0 32px #00000080;display:flex;flex-direction:column;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:slideInRight .2s ease-out}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.audit-drag-handle{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:grab;border-bottom:1px solid rgba(255,255,255,.07);-webkit-user-select:none;user-select:none;background:#0000004d;flex-shrink:0}.audit-drag-handle:active{cursor:grabbing}.audit-title{font-size:13px;font-weight:600;color:#fffc;flex:1}.audit-count{font-size:10px;font-family:monospace;color:#ffffff59}.audit-eye-all{background:none;border:1px solid rgba(255,255,255,.12);border-radius:4px;font-size:15px;cursor:pointer;padding:2px 6px;transition:all .15s;line-height:1}.audit-eye-all:hover{background:#ffffff14}.audit-eye-all.eye-off{opacity:.4}.audit-overrides{display:flex;gap:8px;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.05);flex-shrink:0}.override-pill{flex:1;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);cursor:grab}.override-label{font-size:10px;color:#fff6;text-transform:uppercase;letter-spacing:.5px}.override-value{font-size:13px;font-family:monospace;font-weight:600;color:#4ecdc4}.audit-list{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.audit-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 20px;text-align:center}.audit-empty-icon{font-size:32px;opacity:.3}.audit-empty p{font-size:12px;color:#ffffff59;margin:0}.audit-empty-hint{font-size:11px!important;color:#ffffff40!important}.audit-entry{position:relative;padding:10px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.06);background:#ffffff05;transition:all .2s}.audit-entry-active{border-color:#4ecdc433;background:#4ecdc408}.audit-entry-inactive{opacity:.5;border-color:#ffffff0a}.audit-entry-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.audit-eye{background:none;border:none;font-size:16px;cursor:pointer;padding:2px;border-radius:3px;transition:all .15s;line-height:1}.audit-eye:hover{background:#ffffff14}.eye-on{opacity:1}.eye-off{opacity:.4}.audit-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:3px;color:#fff9;background:#ffffff0f}.badge-calibration{background:#4ecdc41f;color:#4ecdc4}.badge-scale{background:#45b7d11f;color:#45b7d1}.badge-depth{background:#a29bfe1f;color:#a29bfe}.audit-idx{font-size:10px;font-family:monospace;color:#ffffff40;margin-left:auto}.audit-entry-label{font-size:12px;color:#ffffffb3;line-height:1.4;margin-bottom:4px}.audit-entry-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.audit-time{font-size:10px;font-family:monospace;color:#ffffff4d}.audit-param{font-size:10px;font-family:monospace;color:#4ecdc499;background:#4ecdc40f;padding:1px 5px;border-radius:3px}.audit-param-points{display:flex;align-items:center;gap:2px;flex-wrap:wrap}.audit-gen-method{display:inline-block;font-size:9px;font-weight:700;padding:1px 6px;border-radius:3px;letter-spacing:.5px;margin-bottom:2px}.audit-gen-auto{background:#00c87826;color:#6fa;border:1px solid rgba(0,200,120,.3)}.audit-gen-manual{background:#ff8c0026;color:#fa4;border:1px solid rgba(255,140,0,.3)}.audit-frame-btn{display:inline-flex;align-items:center;gap:2px;background:#4488ff2e;border:1px solid rgba(68,136,255,.4);color:#8bf;font-size:10px;font-family:monospace;padding:1px 6px;border-radius:3px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;position:relative;z-index:1}.audit-frame-btn:hover{background:#48f6;border-color:#4488ffb3;color:#bdf}.audit-restore-btn{margin-top:4px;padding:2px 8px;background:#4caf5026;border-color:#4caf5066;color:#66bb6a}.audit-restore-btn:hover{background:#4caf5059;border-color:#4caf50b3;color:#81c784}.audit-delete{position:absolute;top:8px;right:8px;background:none;border:none;font-size:13px;cursor:pointer;opacity:0;transition:opacity .15s;padding:2px;border-radius:3px}.audit-entry:hover .audit-delete{opacity:.5}.audit-delete:hover{opacity:1!important;background:#ff646426}.badge-keyframe{background:#ffb74d1f;color:#ffb74d}.audit-kf-group{position:relative;border-radius:6px;border:1px solid rgba(255,183,77,.12);background:#ffb74d05;overflow:hidden;transition:all .2s}.audit-kf-group-header{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.audit-kf-group-header:hover{background:#ffffff08}.audit-kf-chevron{font-size:12px;color:#fff6;transition:transform .2s;display:inline-block}.audit-kf-chevron.expanded{transform:rotate(90deg)}.audit-kf-obj-label{font-size:11px;color:#ffffff80;font-family:monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.audit-kf-count{font-size:10px;font-weight:700;color:#ffb74dcc;background:#ffb74d1a;padding:1px 6px;border-radius:8px;margin-left:auto}.audit-kf-children{padding:0 8px 8px;display:flex;flex-direction:column;gap:4px}.audit-kf-child{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:#ffffff05;font-size:11px;transition:background .15s}.audit-kf-child:hover{background:#ffffff0d}.audit-kf-frame{font-family:monospace;font-weight:700;font-size:11px;color:#ffb74d;cursor:pointer;padding:1px 5px;border-radius:3px;transition:background .15s}.audit-kf-frame:hover{background:#ffb74d26}.audit-kf-delete{background:none;border:none;font-size:12px;cursor:pointer;opacity:0;transition:opacity .15s;padding:2px;margin-left:auto}.audit-kf-child:hover .audit-kf-delete{opacity:.5}.audit-kf-delete:hover{opacity:1!important}.audit-kf-delete-all{background:#ff64640f;border:1px solid rgba(255,100,100,.12);color:#ff6464b3;font-size:10px;padding:4px 8px;border-radius:4px;cursor:pointer;margin-top:4px;transition:all .15s}.audit-kf-delete-all:hover{background:#ff64641f;color:#ff6464e6}.badge-visibility{background:#ff6b6b1f;color:#ff6b6b}.audit-vis-group{border-color:#ff6b6b1f;background:#ff6b6b05}.badge-object{background:#feca5726;color:#feca57}.ctx-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:299}.ctx-menu{position:fixed;z-index:300;min-width:160px;background:#0c0c12f2;border:1px solid rgba(255,255,255,.13);border-radius:6px;box-shadow:0 6px 24px #0009;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden;padding:4px 0}.ctx-header{padding:6px 12px;font-size:11px;font-family:monospace;color:#fff6;border-bottom:1px solid rgba(255,255,255,.06);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctx-item{display:block;width:100%;padding:8px 12px;background:none;flex:1;border:none;color:#fffc;font-size:13px;margin:0;cursor:pointer;transition:background .12s}.ctx-item:hover{background:#4ecdc41f;color:#4ecdc4}.objcal-overlay{position:fixed;top:80px;left:50%;transform:translate(-50%);width:400px;max-height:85vh;z-index:210;background:#0c0c12f2;border:1px solid rgba(254,202,87,.25);border-radius:10px;box-shadow:0 8px 40px #000000b3,0 0 60px #feca570d;display:flex;flex-direction:column;overflow:hidden;overflow-y:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.objcal-section{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.04)}.objcal-section:last-child{border-bottom:none}.objcal-section-title{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#ffffff59;margin-bottom:6px;font-weight:600;display:flex;align-items:center;justify-content:space-between}.objcal-reset-btn{background:none;border:1px solid rgba(255,255,255,.15);color:#ffffff80;border-radius:3px;font-size:12px;cursor:pointer;padding:0 4px;line-height:1.4;margin-left:6px}.objcal-reset-btn:hover{color:#feca57;border-color:#feca57}.objcal-uniform{display:flex;align-items:center;gap:4px;font-size:10px;text-transform:none;letter-spacing:0;color:#ffffff73;cursor:pointer;-webkit-user-select:none;user-select:none}.objcal-uniform input[type=checkbox]{accent-color:#feca57;cursor:pointer;margin:0}.objcal-row{display:flex;gap:8px}.objcal-field-group{display:flex;flex-direction:column;align-items:center;flex:1;gap:2px}.objcal-rot90-btns{display:flex;gap:2px;justify-content:center}.objcal-rot90-btn{background:#ffffff12;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#ffffffb3;font-size:14px;width:26px;height:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s;padding:0;line-height:1}.objcal-rot90-btn:hover{background:#feca5726;border-color:#feca5766;color:#feca57}.objcal-field{display:flex;align-items:center;gap:4px;flex:1;font-size:12px;color:#fff9}.objcal-field input[type=number]{width:100%;background:#1e1e2ee6;color:#cdd6f4;border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:5px 6px;font-size:12px;font-family:monospace;outline:none;transition:border-color .15s}.objcal-field input:focus{border-color:#feca57}.objcal-axis{font-size:11px;font-weight:700;min-width:16px;text-align:center}.axis-x{color:#ff6b6b}.axis-y{color:#4ecdc4}.axis-z{color:#45b7d1}.objcal-dims{display:flex;gap:8px}.objcal-dim-pill{flex:1;display:flex;align-items:center;gap:6px;padding:4px 8px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px}.objcal-dim-axis{font-size:10px;font-weight:700;min-width:14px}.objcal-dim-value{font-size:11px;font-family:monospace;color:#feca57}.objcal-actions{display:flex;gap:8px;margin-top:4px}.objcal-cancel{flex:1;background:#ffffff0f!important;border-color:#ffffff1f!important;color:#ffffff80!important}.objcal-cancel:hover:not(:disabled){background:#ff64641a!important;border-color:#ff64644d!important;color:#ff6b6b!important}.objcal-mode-toggle{display:flex;gap:4px}.objcal-frame-badge{font-size:10px;font-family:monospace;color:#4ecdc4;background:#4ecdc41a;padding:1px 6px;border-radius:3px;border:1px solid rgba(78,205,196,.2)}.objcal-keyframe-actions{display:flex;gap:6px;margin-bottom:6px}.objcal-keyframe-btn{flex:1;padding:8px 12px;font-size:12px;text-align:center;align-self:stretch}.objcal-keyframe-btn--remove{flex:0 0 auto;background:#ff6b6b1a!important;border-color:#ff6b6b4d!important;color:#ff6b6b!important}.objcal-keyframe-btn--remove:hover{background:#ff6b6b33!important}.objcal-keyframe-list{display:flex;flex-direction:column;gap:2px;max-height:140px;overflow-y:auto}.objcal-keyframe-item{display:flex;align-items:center;gap:6px;padding:4px 8px;background:#ffffff05;border:1px solid rgba(255,255,255,.06);border-radius:4px;cursor:pointer;transition:all .12s;font-size:11px;font-family:monospace;color:#ffffff80}.objcal-keyframe-item:hover{background:#4ecdc40f;border-color:#4ecdc433}.objcal-keyframe-item.active{background:#feca5714;border-color:#feca574d}.objcal-keyframe-diamond{color:#feca57;font-size:10px;flex-shrink:0}.objcal-keyframe-frame{color:#ffffffb3;font-weight:600;min-width:36px}.objcal-keyframe-pos{flex:1;color:#ffffff59;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.objcal-keyframe-del{background:none;border:none;color:#ffffff40;font-size:10px;cursor:pointer;padding:0 2px;line-height:1;transition:color .12s;flex-shrink:0}.objcal-keyframe-del:hover{color:#ff6b6b}.objcal-vis-row{display:flex;gap:6px;margin-bottom:6px}.objcal-vis-btn{flex:1;padding:7px 10px;font-size:11px;text-align:center;transition:all .15s}.objcal-vis-btn--active{background:#ff6b6b1f!important;border-color:#ff6b6b59!important;color:#ff6b6b!important}.objcal-vis-frame-list{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.objcal-vis-frame-label{font-size:10px;color:#fff6;margin-right:2px}.objcal-vis-frame-tag{display:inline-flex;align-items:center;gap:3px;font-family:monospace;font-size:10px;font-weight:600;color:#ff6b6b;background:#ff6b6b14;padding:2px 6px;border-radius:4px;cursor:pointer;transition:background .15s}.objcal-vis-frame-tag:hover{background:#ff6b6b29}.objcal-vis-frame-tag.active{background:#ff6b6b38;outline:1px solid rgba(255,107,107,.4)}.objcal-vis-frame-del{background:none;border:none;color:#ffffff4d;font-size:9px;cursor:pointer;padding:0 1px;line-height:1}.objcal-vis-frame-del:hover{color:#ff6b6b}.objcal-occl-actions{display:flex;gap:6px;margin-bottom:6px}.objcal-occl-btn{flex:1;padding:7px 10px;font-size:11px;text-align:center;transition:all .15s}.objcal-occl-btn--start{background:#ffb74d14!important;border-color:#ffb74d40!important;color:#ffb74d!important}.objcal-occl-btn--start:hover{background:#ffb74d29!important}.objcal-occl-btn--end{background:#4ecdc414!important;border-color:#4ecdc440!important;color:#4ecdc4!important;animation:occl-pulse 1.5s ease-in-out infinite}.objcal-occl-btn--end:hover{background:#4ecdc429!important}.objcal-occl-btn--end:disabled{opacity:.3;cursor:not-allowed;animation:none}.objcal-occl-btn--cancel{flex:0 0 auto;padding:7px 10px}@keyframes occl-pulse{0%,to{border-color:#4ecdc440}50%{border-color:#4ecdc499}}.objcal-occl-list{display:flex;flex-direction:column;gap:3px;max-height:140px;overflow-y:auto}.objcal-occl-item{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:#ffb74d0a;font-size:11px;transition:background .15s}.objcal-occl-item:hover{background:#ffb74d1a}.objcal-occl-item.active{background:#ffb74d24;outline:1px solid rgba(255,183,77,.3)}.objcal-occl-range{display:flex;align-items:center;gap:4px}.objcal-occl-frame{font-family:monospace;font-weight:700;font-size:11px;color:#ffb74d;cursor:pointer;padding:1px 4px;border-radius:3px;transition:background .15s}.objcal-occl-frame:hover{background:#ffb74d26}.objcal-occl-arrow{color:#ffffff4d;font-size:10px}.objcal-occl-duration{font-size:10px;font-family:monospace;color:#ffffff59;margin-left:auto}.objcal-occl-del{background:none;border:none;color:#ffffff40;font-size:11px;cursor:pointer;padding:2px;opacity:0;transition:opacity .15s}.objcal-occl-item:hover .objcal-occl-del{opacity:.6}.objcal-occl-del:hover{color:#ff6b6b;opacity:1!important}.badge-occlusion{background:#ffb74d1f;color:#ffb74d}.audit-occl-group{border-color:#ffb74d1f;background:#ffb74d05}.badge-pnp{background:#00c8ff1f;color:#4fc3f7}.badge-speed{background:#4caf501f;color:#66bb6a}.timeline-keyframe-marker{position:absolute;top:50%;width:7px;height:7px;background:#feca57;transform:translate(-50%,-50%) rotate(45deg);pointer-events:none;z-index:2;box-shadow:0 0 4px #feca5780;border-radius:1px}.timeline-keyframe-marker.active{background:#ff6b6b;box-shadow:0 0 8px #ff6b6b99;width:9px;height:9px}.measure-label{background:#000000bf;padding:1px 6px;border-radius:3px;font-size:10px;font-family:monospace;white-space:nowrap;pointer-events:none;border:1px solid rgba(254,202,87,.3)}.measure-x{color:#ff6b6b}.measure-y{color:#4ecdc4}.measure-z{color:#45b7d1}.objcal-gizmo-bar{display:flex;gap:4px;margin-bottom:4px}.objcal-mode-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 6px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:5px;color:#ffffff80;cursor:pointer;font-size:11px;transition:all .15s}.objcal-mode-btn:hover{background:#ffffff14;color:#fffc}.objcal-mode-btn.active{background:#feca571f;border-color:#feca5766;color:#feca57}.objcal-mode-icon{font-size:14px}.objcal-mode-label{font-weight:600}.objcal-mode-btn kbd{font-family:monospace;font-size:9px;padding:1px 4px;border-radius:3px;background:#0000004d;border:1px solid rgba(255,255,255,.1);color:#ffffff59}.viewcube-container{position:fixed;top:12px;left:12px;z-index:200;display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:auto}.viewcube-scene{width:100px;height:100px;perspective:200px;perspective-origin:50% 50%;display:flex;align-items:center;justify-content:center;position:relative}.viewcube-cube{width:40px;height:40px;position:relative;transform-style:preserve-3d}.viewcube-face{position:absolute;width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;font-family:system-ui,sans-serif;color:#ffffffd9;text-shadow:0 1px 2px rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.12);cursor:pointer;-webkit-user-select:none;user-select:none;backface-visibility:hidden;transition:background .15s}.viewcube-face:hover{background:#feca5759!important;border-color:#feca5780}.viewcube-front{background:#4ecdc459;transform:translateZ(20px)}.viewcube-back{background:#4ecdc433;transform:rotateY(180deg) translateZ(20px)}.viewcube-right{background:#ff6b6b4d;transform:rotateY(90deg) translateZ(20px)}.viewcube-left{background:#ff6b6b33;transform:rotateY(-90deg) translateZ(20px)}.viewcube-top{background:#a29bfe59;transform:rotateX(90deg) translateZ(20px)}.viewcube-bottom{background:#a29bfe33;transform:rotateX(-90deg) translateZ(20px)}.viewcube-axes-canvas{position:absolute;top:0;left:0;width:100px;height:100px;pointer-events:auto}.viewcube-proj-btn{background:#0c0c12d9;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#ffffffb3;font-size:10px;font-weight:600;padding:3px 10px;cursor:pointer;transition:background .15s,border-color .15s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.viewcube-proj-btn:hover{background:#feca5733;border-color:#feca5780;color:#feca57}.scene-manager{width:100vw;height:100vh;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e);color:#e0e0e0;display:flex;flex-direction:column;overflow-y:auto}.sm-header{display:flex;align-items:center;justify-content:space-between;padding:32px 48px 24px;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.sm-header-text h1{font-size:24px;font-weight:700;color:#ffffffe6;letter-spacing:.5px}.sm-subtitle{font-size:13px;color:#ffffff59;margin-top:2px}.sm-upload-btn{background:linear-gradient(135deg,#4ecdc433,#4ecdc41a);border:1px solid rgba(78,205,196,.4);color:#4ecdc4;padding:10px 22px;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.sm-upload-btn:hover{background:linear-gradient(135deg,#4ecdc44d,#4ecdc433);box-shadow:0 0 20px #4ecdc426}.sm-status{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:80px 20px;text-align:center}.sm-status p{font-size:15px;color:#ffffff80}.sm-status-error p{color:#ff6464cc}.sm-hint{font-size:12px!important;color:#ffffff4d!important;margin-top:-4px}.sm-empty-icon{font-size:48px;opacity:.3}.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:28px 48px;flex:1}.sm-card{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:10px;transition:all .2s}.sm-card.clickable{cursor:pointer}.sm-card.clickable:hover{border-color:#4ecdc44d;background:#4ecdc40a;box-shadow:0 4px 20px #0000004d}.sm-card-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600;color:#0f0f1a;width:fit-content}.sm-card-body{flex:1}.sm-card-title{font-size:15px;font-weight:600;color:#ffffffd9;margin-bottom:4px}.sm-card-title.editable{cursor:text;display:flex;align-items:center;gap:6px}.sm-card-title.editable:hover{color:#fff}.sm-edit-icon{font-size:12px;opacity:0;transition:opacity .15s;color:#fff6}.sm-card-title.editable:hover .sm-edit-icon{opacity:1}.sm-card-title-input{font-size:15px;font-weight:600;color:#fff;background:#ffffff14;border:1px solid rgba(0,200,255,.5);border-radius:4px;padding:2px 6px;margin-bottom:4px;width:100%;outline:none;font-family:inherit}.sm-card-title-input:focus{border-color:#00c8ffcc;box-shadow:0 0 4px #00c8ff4d}.sm-card-id{font-size:11px;font-family:monospace;color:#ffffff40}.sm-card-date{font-size:11px;color:#ffffff59;margin-top:2px}.unified-calib-panel{position:fixed;top:12px;right:12px;left:auto;transform:none;z-index:9000;background:#101020;border:1px solid rgba(0,200,255,.35);border-radius:10px;min-width:660px;max-width:92vw;max-height:92vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #000000b3;font-family:Segoe UI,system-ui,sans-serif;color:#e0e0e0}.unified-calib-header{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#00c8ff14;border-bottom:1px solid rgba(255,255,255,.08);border-radius:10px 10px 0 0;cursor:grab;-webkit-user-select:none;user-select:none}.unified-calib-header:active{cursor:grabbing}.unified-calib-title{flex:1;font-weight:600;font-size:.95rem;color:#00c8ff;letter-spacing:.3px}.unified-calib-close{background:none;border:none;color:#ffffff80;font-size:1.3rem;cursor:pointer;padding:0 4px;line-height:1}.unified-calib-close:hover{color:#ff6b6b}.unified-calib-tabs{display:flex;gap:0;border-bottom:1px solid rgba(255,255,255,.1)}.unified-calib-tab{flex:1;padding:8px 12px;background:#ffffff08;border:none;border-bottom:2px solid transparent;color:#ffffff8c;font-size:.82rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.unified-calib-tab:hover{background:#ffffff0f;color:#fffc}.unified-calib-tab.active{background:#00c8ff14;color:#00c8ff;border-bottom-color:#00c8ff}.unified-calib-content{flex:1;overflow-y:auto;max-height:70vh}.calib-table-panel.calib-embedded,.scene-cp-panel.scene-cp-embedded{position:static!important;transform:none!important;min-width:unset!important;max-width:unset!important;max-height:unset!important;border:none!important;border-radius:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:transparent!important;z-index:unset!important;overflow-y:visible!important}.unified-calib-ties-tab{padding:12px 16px}.unified-ties-hint{font-size:.78rem;color:#ffffff80;margin-bottom:10px;line-height:1.4}.unified-calib-status{display:flex;gap:14px;padding:6px 16px;font-size:.76rem;color:#fff9;border-top:1px solid rgba(255,255,255,.06);background:#00c8ff08}.unified-calib-status span{white-space:nowrap}.unified-calib-status-error{color:#ff6b6b}.unified-calib-propagate-btn{display:block;width:calc(100% - 24px);margin:8px 12px 0;padding:9px 0;border:1px solid rgba(34,197,94,.4);border-radius:6px;background:linear-gradient(135deg,#22c55e1f,#0891b22e);color:#86efac;font-size:.82rem;font-weight:600;cursor:pointer;letter-spacing:.2px;transition:background .2s,border-color .2s,box-shadow .2s}.unified-calib-propagate-btn:hover:not(:disabled){background:linear-gradient(135deg,#22c55e33,#0891b242);border-color:#34d399a6;box-shadow:0 0 16px #22c55e1f}.unified-calib-propagate-btn:disabled{opacity:.45;cursor:not-allowed}.unified-vehicle-selector{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid rgba(255,255,255,.06);background:#00c8ff08}.unified-vehicle-selector-label{font-size:.78rem;color:#ffffff8c;white-space:nowrap}.unified-vehicle-selector-dropdown{flex:1;background:#141423f2;border:1px solid rgba(0,200,255,.3);border-radius:4px;color:#e0e0e0;font-size:.8rem;padding:4px 8px;cursor:pointer}.unified-vehicle-selector-dropdown:focus{border-color:#00c8ff80;outline:none;box-shadow:0 0 6px #00c8ff26}.unified-vehicle-empty{padding:28px 20px;text-align:center;font-size:.82rem;color:#fff6;line-height:1.5}.unified-calib-solve-btn{display:block;width:calc(100% - 24px);margin:8px 12px 12px;padding:10px 0;border:1px solid rgba(0,200,255,.4);border-radius:6px;background:linear-gradient(135deg,#00c8ff26,#0078c833);color:#00c8ff;font-size:.88rem;font-weight:600;cursor:pointer;letter-spacing:.4px;transition:background .2s,border-color .2s,box-shadow .2s}.unified-calib-solve-btn:hover:not(:disabled){background:linear-gradient(135deg,#00c8ff40,#0078c859);border-color:#00c8ff99;box-shadow:0 0 18px #00c8ff26}.unified-calib-solve-btn:disabled{opacity:.5;cursor:not-allowed}.calib-table-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9000;background:#101020f5;border:1px solid rgba(0,200,255,.3);border-radius:10px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);min-width:620px;max-width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px #0009,0 0 80px #00c8ff14;font-family:Segoe UI,system-ui,sans-serif;color:#e0e0e0}.calib-table-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#00c8ff0f;border-bottom:1px solid rgba(255,255,255,.08);border-radius:10px 10px 0 0;cursor:grab;-webkit-user-select:none;user-select:none}.calib-table-header:active{cursor:grabbing}.calib-table-title{font-size:13px;font-weight:600;letter-spacing:.3px}.calib-table-close{margin-left:auto;background:none;border:none;color:#fff6;font-size:20px;cursor:pointer;padding:0 4px;line-height:1}.calib-table-close:hover{color:#ef5350}.calib-table-body{padding:14px}.calib-table-desc{font-size:11px;color:#ffffff80;margin:0 0 12px;line-height:1.5}.calib-mea-warning{background:#ef535026;border:1px solid rgba(239,83,80,.5);border-radius:6px;padding:10px 14px;margin-bottom:14px;font-size:11px;font-weight:500;color:#ef9a9a;line-height:1.6}.calib-table{width:100%;border-collapse:collapse;margin-bottom:12px}.calib-table th{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#00c8ffb3;padding:6px 4px;border-bottom:1px solid rgba(255,255,255,.1);text-align:left}.calib-table td{padding:6px 4px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}.calib-table tr.picking-active{background:#00c8ff14}.calib-table tr.picking-active td{border-bottom-color:#00c8ff26}.calib-row-num{font-size:12px;font-weight:700;color:#00c8ff99;width:24px;text-align:center}.calib-input{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#fff;font-family:monospace;font-size:11px;padding:4px 6px;outline:none;transition:border-color .15s}.calib-input:focus{border-color:#00c8ff80;background:#ffffff14}.calib-label-input{width:130px}.calib-specs-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px 10px;margin-bottom:10px}.calib-spec{display:flex;flex-direction:column;gap:3px;flex:1}.calib-spec>span{font-size:10px;color:#ffffff80;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.calib-spec-input{width:100%!important;box-sizing:border-box}.calib-label-cell{display:flex;flex-direction:column;gap:3px}.calib-label-select{width:160px;background:#1a1a2e;color:#f0f0f0;border:1px solid rgba(255,255,255,.18);border-radius:4px;padding:3px 4px;font-size:11px;font-family:inherit;cursor:pointer}.calib-label-select:focus{border-color:#00c8ff80;outline:none}.calib-label-select option{background:#1a1a2e;color:#e8e8e8;padding:4px 6px}.calib-label-select option:disabled{color:#ffffff40;font-style:italic}.calib-custom-label{width:152px;font-size:10px}.calib-num-input{width:64px;text-align:right}.calib-num-input::-webkit-inner-spin-button,.calib-num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.calib-num-input{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.calib-pixel-cell{min-width:90px;font-size:11px;font-family:monospace}.calib-pixel-value{color:#66bb6a;display:flex;align-items:center;gap:4px}.calib-check{font-size:12px}.calib-pixel-empty{color:#fff3}.calib-snapped{color:#fa0}.calib-snap-badge{font-size:8px;font-weight:700;padding:1px 4px;border-radius:3px;letter-spacing:.5px;margin-left:2px}.calib-snap-ground{background:#fa03;color:#fa0}.calib-snap-center{background:#8cd2ff2e;color:#8cd2ff}.calib-snap-vertex{background:#00c8ff33;color:#00c8ff}.calib-pick-btn{background:#00c8ff1a;border:1px solid rgba(0,200,255,.3);border-radius:4px;color:#00c8ffcc;font-size:14px;cursor:pointer;padding:2px 8px;transition:all .15s}.calib-pick-btn:hover{background:#00c8ff33;border-color:#00c8ff80}.calib-pick-btn.picking{background:#ef535026;border-color:#ef535080;color:#ef9a9a;animation:pulse-pick 1s ease-in-out infinite}.calib-pin-btn{background:transparent;border:1px solid transparent;border-radius:4px;font-size:13px;cursor:pointer;padding:2px 6px;opacity:.5;transition:all .15s}.calib-pin-btn:hover{opacity:.85;background:#ffc80014}.calib-pin-btn.pinned{opacity:1;border-color:#ffc80066;background:#ffc8001a}@keyframes pulse-pick{0%,to{opacity:1}50%{opacity:.6}}.calib-actions-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.calib-autoplace-side-toggle{display:flex;gap:6px;width:100%}.calib-side-btn{flex:1;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:5px;color:#ffffffb8;font-size:10px;font-family:monospace;padding:6px 10px;cursor:pointer;transition:all .15s}.calib-side-btn:hover{background:#ffffff17}.calib-side-btn.active{background:#b478ff29;border-color:#b478ff73;color:#f0dcffeb}.calib-consecutive-btn{background:#00c8ff14;border:1px solid rgba(0,200,255,.25);border-radius:5px;color:#00c8ffcc;font-size:11px;font-family:monospace;padding:6px 12px;cursor:pointer;transition:all .15s;width:100%}.calib-consecutive-btn:hover{background:#00c8ff26}.calib-consecutive-btn.active{background:#00c8ff26;border-color:#00c8ff80;animation:pulse-pick 1.5s ease-in-out infinite}.calib-autoplace-btn{background:#b478ff14;border:1px solid rgba(180,120,255,.25);border-radius:5px;color:#b478ffcc;font-size:11px;font-family:monospace;padding:6px 12px;cursor:pointer;transition:all .15s;width:100%}.calib-autoplace-btn:hover:not(:disabled){background:#b478ff26}.calib-autoplace-btn:disabled{opacity:.35;cursor:not-allowed}.calib-refine-btn{background:#46bed214;border:1px solid rgba(70,190,210,.25);border-radius:5px;color:#78e6f5db;font-size:11px;font-family:monospace;padding:6px 12px;cursor:pointer;transition:all .15s;width:100%}.calib-refine-btn:hover:not(:disabled){background:#46bed226}.calib-refine-btn:disabled{opacity:.35;cursor:not-allowed}.calib-error{background:#ef53501f;border:1px solid rgba(239,83,80,.4);border-radius:4px;padding:8px 12px;margin-bottom:12px;font-size:11px;color:#ef9a9a;font-family:monospace}.calib-focal-slider{margin:8px 0 4px;padding:8px 10px;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:5px}.calib-focal-label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.calib-focal-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#ffffff8c;font-weight:600}.calib-focal-value{font-family:Consolas,SF Mono,monospace;font-size:13px;font-weight:700;color:#00c8ff}.calib-focal-range{width:100%;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff1a;border-radius:2px;outline:none;cursor:pointer}.calib-focal-range::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#00c8ff;border:2px solid #0a0d1a;cursor:grab}.calib-focal-range::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#00c8ff;border:2px solid #0a0d1a;cursor:grab}.calib-focal-ticks{display:flex;justify-content:space-between;font-size:8px;color:#ffffff4d;margin-top:2px;font-family:monospace}.calib-solve-btn{width:100%;padding:10px 16px;background:#00c8ff26;border:1px solid rgba(0,200,255,.4);border-radius:6px;color:#fff;font-size:13px;font-weight:600;letter-spacing:.3px;cursor:pointer;transition:all .2s}.calib-solve-btn:hover:not(:disabled){background:#00c8ff40;border-color:#00c8ff99;box-shadow:0 0 16px #00c8ff26}.calib-solve-btn:disabled{opacity:.35;cursor:not-allowed}.calib-coplanar-warn{margin-bottom:6px;padding:6px 8px;background:#ff50281f;border:1px solid rgba(255,80,40,.35);border-radius:5px;color:#ffb060;font-size:11px;line-height:1.5}.calib-remove-btn{background:none;border:1px solid rgba(255,80,40,.3);color:#ff502899;font-size:14px;font-weight:700;width:20px;height:20px;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:1;transition:all .15s}.calib-remove-btn:hover{background:#ff502826;border-color:#ff502899;color:#ff6b4a}.calib-add-anchor-btn{background:#00c85314;border:1px solid rgba(0,200,83,.3);color:#4cdf8a;font-size:11px;padding:4px 10px;border-radius:4px;cursor:pointer;transition:all .15s}.calib-add-anchor-btn:hover{background:#00c8532e;border-color:#00c85380}.calib-reproj-section{margin:8px 0;padding:8px;background:#64b4ff0f;border:1px solid rgba(100,180,255,.2);border-radius:6px}.calib-reproj-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.calib-reproj-title{font-size:11px;color:#ffffffb3}.calib-reproj-quality{font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:3px}.quality-good{color:#4cdf8a;background:#00c8531f}.quality-warn{color:#ffd54f;background:#ffc1071f}.quality-danger{color:#ff6b6b;background:#f443361f}.calib-reproj-autocalib{font-size:9px;font-weight:700;color:#64b5f6;background:#64b5f61f;padding:2px 6px;border-radius:3px;letter-spacing:.06em}.calib-reproj-points{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}.calib-reproj-point{font-size:10px;font-family:Consolas,SF Mono,monospace;padding:1px 5px;border-radius:3px;white-space:nowrap}.calib-reproj-point.inlier{background:#00c85314;color:#4cdf8ad9}.calib-reproj-point.outlier{background:#f443361f;color:#ff6b6b;border:1px solid rgba(244,67,54,.3)}.calib-reproj-summary{font-size:10px;color:#fff6}.calib-reproj-distortion{color:#64b5f6b3}.calib-distortion-section{margin:10px 0 6px;padding:8px;background:#64b4ff0f;border:1px solid rgba(100,180,255,.2);border-radius:6px}.calib-distortion-row{display:flex;align-items:center;gap:8px;margin-top:6px}.calib-autocalib-section{margin:10px 0 6px;padding:8px;background:#64b4ff14;border:1px solid rgba(100,180,255,.25);border-radius:6px}.calib-autocalib-toggle{display:flex;align-items:center;gap:8px;cursor:pointer}.calib-autocalib-toggle input[type=checkbox]{accent-color:#64b5f6}.calib-autocalib-label{font-size:11px;color:#64b5f6e6;font-weight:600}.calib-temporal-section{margin:10px 0 6px;padding:8px;background:#ffb4000f;border:1px solid rgba(255,180,0,.2);border-radius:6px}.calib-temporal-section h4{margin:0 0 6px;font-size:11px;color:#ffc83ce6;letter-spacing:.6px}.calib-temporal-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.calib-temporal-row label{font-size:11px;color:#ffffff80;white-space:nowrap}.calib-temporal-input{width:64px;background:#00000059;border:1px solid rgba(255,180,0,.3);border-radius:4px;color:#ffc83c;font-size:12px;font-family:Consolas,SF Mono,monospace;padding:3px 6px;text-align:right}.calib-temporal-input:focus{outline:none;border-color:#ffb40099;box-shadow:0 0 6px #ffb40026}.calib-temporal-preset{background:#ffb4001a;border:1px solid rgba(255,180,0,.3);color:#ffc83c;font-size:10px;padding:3px 8px;border-radius:4px;cursor:pointer;transition:background .15s}.calib-temporal-preset:hover{background:#ffb40040}.calib-temporal-preset.active{background:#ffb40040;border-color:#ffb40099;box-shadow:0 0 6px #ffb40026}.calib-temporal-note{font-size:10px;color:#ffffff4d;line-height:1.3}.sgp-temporal-badge{background:#ffb4001a;border:1px solid rgba(255,180,0,.25);border-radius:4px;padding:4px 8px;font-size:11px;color:#ffc83c;margin-top:4px}.sgp-temporal-badge .sgp-temporal-note{color:#ffffff4d;margin-left:6px;font-size:10px}.sgp-frame-setup{display:flex;gap:8px;padding:4px 0}.sgp-frame-label{display:flex;align-items:center;gap:4px;font-size:11px;color:#fff9;flex:1}.sgp-frame-input{width:58px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#fff;font-size:11px;padding:3px 5px;font-family:monospace}.sgp-sync-frame-btn{background:#00c8ff1a;border:1px solid rgba(0,200,255,.3);border-radius:4px;color:#00c8ffcc;font-size:12px;cursor:pointer;padding:2px 6px}.sgp-sync-frame-btn:hover{background:#00c8ff33}.sgp-auto-track-row{display:flex;align-items:center;gap:8px;margin:6px 0}.sgp-auto-track-btn{flex:1;width:100%;padding:8px 14px;background:#00c87826;border:1px solid rgba(0,200,120,.4);border-radius:6px;color:#6fa;font-size:13px;font-weight:600;cursor:pointer;letter-spacing:.3px;transition:all .2s;margin:0}.sgp-auto-track-btn:hover:not(:disabled){background:#00c87840;box-shadow:0 0 16px #00c87826}.sgp-auto-track-btn:disabled{opacity:.35;cursor:not-allowed}.sgp-cancel-btn{flex-shrink:0;padding:8px 10px;border-radius:6px;border:1px solid rgba(255,107,107,.35);background:#ff6b6b1f;color:#ff9f9f;font-size:11px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.sgp-cancel-btn:hover{border-color:#ff6b6b99;background:#ff6b6b38;color:#ffd0d0}.sgp-override-badge{font-size:9px;font-weight:700;padding:2px 6px;border-radius:3px;background:#ff502833;color:#f84;letter-spacing:.5px;margin-left:auto}.sgp-override-marker{font-size:9px;color:#f84;margin-left:4px}.sgp-calc-override{background:#ff8c0026!important;border-color:#ff8c0066!important;color:#fa4!important}.sgp-result-override{border-left:3px solid rgba(255,140,0,.6);padding-left:8px}.sgp-delta-row{display:flex;align-items:center;gap:6px;padding:4px 6px;background:#ffffff0a;border-radius:4px;font-size:11px;color:#ffffffb3;margin:4px 0}.sgp-delta-value{font-weight:700;font-family:monospace}.sgp-delta-value.positive{color:#f64}.sgp-delta-value.negative{color:#4bf}.sgp-method-badge{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:3px;margin-top:6px;letter-spacing:.3px}.sgp-method-auto{background:#00c8781f;color:#6fa;border:1px solid rgba(0,200,120,.3)}.sgp-method-override{background:#ff8c001f;color:#fa4;border:1px solid rgba(255,140,0,.3)}.calib-anchor-marker{transition:left .1s,top .1s}.speed-gun-marker{transition:left .15s ease,top .15s ease}.speed-gun-marker-label{position:absolute;top:-20px;left:10px;font-size:10px;font-weight:700;font-family:monospace;background:#000000bf;padding:1px 5px;border-radius:3px;border:1px solid;white-space:nowrap}.calib-pick-indicator{position:absolute;bottom:8px;left:50%;transform:translate(-50%);background:#00c8ff26;border:1px solid rgba(0,200,255,.4);border-radius:6px;padding:5px 14px;font-size:11px;font-family:monospace;color:#00c8ffe6;pointer-events:none;animation:pulse-pick 1.5s ease-in-out infinite;z-index:10;white-space:nowrap}.sm-card-open{background:#4ecdc41a;border:1px solid rgba(78,205,196,.3);color:#4ecdc4;padding:6px 14px;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;align-self:flex-start}.sm-card-open:hover{background:#4ecdc433}.sm-card-spinner{display:flex;align-items:center;gap:8px;font-size:11px;color:#fff6}.sm-spinner{width:18px;height:18px;border-width:2px}.sm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#0009;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.sm-dialog{width:460px;max-width:90vw;background:#12121cfa;border:1px solid rgba(255,255,255,.12);border-radius:10px;box-shadow:0 8px 48px #000000b3;display:flex;flex-direction:column;overflow:hidden}.sm-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.08)}.sm-dialog-header h2{font-size:16px;font-weight:600;color:#ffffffd9}.sm-dialog-close{background:none;border:1px solid rgba(255,255,255,.12);color:#ffffff80;width:28px;height:28px;border-radius:5px;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.sm-dialog-close:hover{background:#ff646426;border-color:#ff64644d;color:#ff6b6b}.sm-dialog-body{padding:20px;display:flex;flex-direction:column;gap:16px}.sm-field{display:flex;flex-direction:column;gap:6px}.sm-field span{font-size:12px;font-weight:600;color:#ffffff80;text-transform:uppercase;letter-spacing:.5px}.sm-field input[type=text]{background:#1e1e2ee6;border:1px solid rgba(255,255,255,.12);color:#e0e0e0;padding:9px 12px;border-radius:5px;font-size:14px;outline:none;transition:border-color .15s}.sm-field input[type=text]:focus{border-color:#4ecdc4}.sm-field input[type=text]:disabled{opacity:.5}.sm-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 20px;border:2px dashed rgba(255,255,255,.12);border-radius:8px;background:#ffffff05;cursor:pointer;transition:all .2s;text-align:center}.sm-dropzone:hover,.sm-dropzone.dragover{border-color:#4ecdc466;background:#4ecdc40a}.sm-dropzone.has-file{border-color:#4ecdc44d;border-style:solid;background:#4ecdc408}.sm-drop-icon{font-size:32px;opacity:.4}.sm-dropzone p{font-size:13px;color:#ffffff73;margin:0}.sm-drop-hint{font-size:11px!important;color:#ffffff40!important}.sm-file-info{display:flex;align-items:center;gap:10px}.sm-file-icon{font-size:24px}.sm-file-name{font-size:14px;font-weight:600;color:#4ecdc4}.sm-file-size{font-size:12px;color:#ffffff59;font-family:monospace}.sm-error-msg{font-size:12px;color:#ff6b6b;background:#ff6b6b14;border:1px solid rgba(255,107,107,.2);border-radius:5px;padding:8px 12px}.sm-dialog-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid rgba(255,255,255,.06)}.sm-btn-cancel{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#fff9;padding:8px 18px;border-radius:5px;font-size:13px;cursor:pointer;transition:all .15s}.sm-btn-cancel:hover:not(:disabled){background:#ffffff1a}.sm-btn-cancel:disabled{opacity:.4;cursor:not-allowed}.sm-btn-upload{background:linear-gradient(135deg,#4ecdc440,#4ecdc426);border:1px solid rgba(78,205,196,.4);color:#4ecdc4;padding:8px 22px;border-radius:5px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.sm-btn-upload:hover:not(:disabled){background:linear-gradient(135deg,#4ecdc459,#4ecdc440);box-shadow:0 0 16px #4ecdc41f}.sm-btn-upload:disabled{opacity:.35;cursor:not-allowed}.splash-back-btn{margin-top:8px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);color:#fff9;padding:8px 20px;border-radius:5px;font-size:13px;cursor:pointer;transition:all .15s}.splash-back-btn:hover{background:#ffffff24;color:#ffffffd9}.ctrl-btn-back{font-size:11px;padding:3px 8px;background:#ffffff0f;border-color:#ffffff1a;color:#ffffff80}.ctrl-btn-back:hover{background:#ffffff1f;color:#fffc}.video-only-banner{position:fixed;top:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:8px 18px;background:#0c0c12e0;border:1px solid rgba(255,255,255,.12);border-radius:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;font-size:13px;color:#ffffff80;white-space:nowrap}.seg-target-speed-btn{background:none;border:none;cursor:pointer;padding:0 2px;font-size:13px;line-height:1;flex-shrink:0;opacity:.5;transition:opacity .15s}.seg-target-speed-btn:hover{opacity:1}.speed-gun-panel{position:fixed;bottom:80px;left:16px;width:320px;background:#080810f0;border:1px solid rgba(100,200,255,.25);border-radius:8px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:200;font-family:Inter,Segoe UI,sans-serif;color:#ffffffd9;box-shadow:0 8px 32px #0009;overflow:hidden}.sgp-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#64c8ff14;border-bottom:1px solid rgba(100,200,255,.15)}.sgp-title{font-size:13px;font-weight:700;letter-spacing:.04em;color:#64c8ff}.sgp-close{background:none;border:none;color:#fff6;font-size:14px;cursor:pointer;padding:0 4px}.sgp-close:hover{color:#ff6b6b}.sgp-instructions{padding:6px 12px;font-size:11px;color:#fff6;line-height:1.4}.sgp-points{padding:4px 12px 8px}.sgp-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.sgp-pick-btn{padding:4px 10px;font-size:11px;font-weight:600;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:#ffffff0f;color:#ffffffb3;cursor:pointer;min-width:90px;text-align:center;transition:all .15s}.sgp-pick-btn:hover{border-color:#64c8ff;color:#64c8ff}.sgp-pick-btn.active{border-color:#fc0;color:#fc0;background:#ffcc001a;animation:sgp-pulse 1s ease-in-out infinite alternate}.sgp-pick-btn.set{border-color:#66bb6a;color:#66bb6a}@keyframes sgp-pulse{0%{box-shadow:0 0 4px #fc03}to{box-shadow:0 0 12px #ffcc0080}}.sgp-coord{font-size:10px;font-family:Consolas,SF Mono,monospace;color:#fff6}.sgp-track-overrides{margin:0 12px 10px;padding:8px;border:1px solid rgba(100,200,255,.12);border-radius:6px;background:#64c8ff0d}.sgp-track-overrides-title{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64c8ffc7;margin-bottom:4px}.sgp-track-overrides-hint{margin-bottom:8px;line-height:1.4}.sgp-track-overrides-empty{line-height:1.4}.sgp-track-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid rgba(255,255,255,.05)}.sgp-track-row:first-of-type{border-top:none;padding-top:0}.sgp-track-meta{min-width:0;display:flex;flex-direction:column;gap:2px}.sgp-track-label{font-size:11px;font-weight:700;color:#ffffffdb}.sgp-track-coord{font-size:10px;font-family:Consolas,SF Mono,monospace;color:#ffffff85}.sgp-track-source{font-size:10px;color:#ffffff61;text-transform:uppercase;letter-spacing:.05em}.sgp-track-source.manual{color:#ffb347}.sgp-track-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.sgp-track-action-btn{padding:4px 8px;border-radius:4px;border:1px solid rgba(100,200,255,.22);background:#64c8ff14;color:#64c8ffe6;font-size:10px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.sgp-track-action-btn:hover:not(:disabled){background:#64c8ff2e;border-color:#64c8ff6b;color:#ccecff}.sgp-track-action-btn.active{border-color:#fc09;color:#fc0;background:#ffcc001f}.sgp-track-action-btn:disabled{opacity:.35;cursor:not-allowed}.sgp-track-clear-btn{border-color:#ff8c0038;background:#ff8c0014;color:#ffb347}.sgp-track-clear-btn:hover:not(:disabled){border-color:#ff8c006b;background:#ff8c0029;color:#ffd299}.sgp-track-seed-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.sgp-track-seed-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:999px;background:#ffb3471f;border:1px solid rgba(255,179,71,.24);color:#ffcf8b;font-size:10px;font-family:Consolas,SF Mono,monospace}.sgp-track-seed-clear{border:none;background:none;color:inherit;font-size:10px;cursor:pointer;padding:0;line-height:1}.sgp-track-seed-clear:disabled{opacity:.35;cursor:not-allowed}.sgp-actions{padding:0 12px 10px;display:flex;gap:8px}.sgp-calc-btn{flex:1;padding:6px 12px;font-size:12px;font-weight:700;background:linear-gradient(135deg,#64c8ff40,#6432ff40);border:1px solid rgba(100,200,255,.4);border-radius:4px;color:#fff;cursor:pointer;transition:all .15s}.sgp-calc-btn:hover:not(:disabled){border-color:#64c8ff;background:#64c8ff59}.sgp-calc-btn:disabled{opacity:.35;cursor:not-allowed}.sgp-reset-btn{padding:6px 10px;font-size:11px;background:#ffffff0f;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#ffffff80;cursor:pointer}.sgp-reset-btn:hover{border-color:#ffffff4d;color:#fffc}.sgp-error{margin:0 12px 8px;padding:4px 8px;font-size:11px;color:#ff6b6b;background:#ff3c3c1a;border:1px solid rgba(255,60,60,.2);border-radius:4px}.sgp-result{padding:0 12px 12px}.sgp-speed-readout{display:flex;align-items:baseline;gap:6px;padding:8px 0;justify-content:center}.sgp-big-num{font-size:28px;font-weight:800;font-family:Consolas,SF Mono,monospace;color:#0f8;text-shadow:0 0 12px rgba(0,255,136,.4)}.sgp-big-unit{font-size:13px;font-weight:600;color:#0f89}.sgp-divider{color:#ffffff26;font-size:24px;margin:0 4px}.sgp-detail-grid{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;font-size:11px;font-family:Consolas,SF Mono,monospace}.sgp-detail-grid span:nth-child(odd){color:#ffffff59}.sgp-detail-grid span:nth-child(2n){color:#ffffffbf}.sgp-sync-row{display:flex;gap:6px;margin:6px 0}.sgp-sync-btn{flex:1;background:#4488ff1f;border:1px solid rgba(68,136,255,.35);color:#8bf;font-size:11px;font-family:Consolas,SF Mono,monospace;padding:4px 6px;border-radius:4px;cursor:pointer;transition:background .15s,border-color .15s;display:flex;align-items:center;gap:4px;justify-content:center}.sgp-sync-btn:hover{background:#4488ff40;border-color:#48f9}.sgp-sync-btn.active{background:#4488ff4d;border-color:#48f;color:#fff}.sgp-sync-label{font-size:9px;text-transform:uppercase;opacity:.5;letter-spacing:.5px}.scene-cp-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9000;background:#101810f5;border:1px solid rgba(0,230,118,.3);border-radius:10px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);min-width:600px;max-width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px #0009,0 0 80px #00e67614;font-family:Segoe UI,system-ui,sans-serif;color:#e0e0e0}.scene-cp-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#00e6760f;border-bottom:1px solid rgba(255,255,255,.08);border-radius:10px 10px 0 0;cursor:grab;-webkit-user-select:none;user-select:none}.scene-cp-header:active{cursor:grabbing}.scene-cp-title{font-size:13px;font-weight:600;letter-spacing:.3px;color:#a5d6a7}.scene-cp-close{margin-left:auto;background:none;border:none;color:#fff6;font-size:20px;cursor:pointer;padding:0 4px;line-height:1}.scene-cp-close:hover{color:#ef5350}.scene-cp-body{padding:14px}.scene-cp-desc{font-size:11px;color:#ffffff80;margin:0 0 12px;line-height:1.5}.scene-cp-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#00e676b3;padding:8px 0 4px;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:6px}.scene-cp-table{width:100%;border-collapse:collapse;margin-bottom:8px}.scene-cp-table th{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#00e676b3;padding:6px 4px;border-bottom:1px solid rgba(255,255,255,.1);text-align:left}.scene-cp-table td{padding:5px 4px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}.scene-cp-row-num{width:24px;text-align:center;font-weight:700;font-size:11px;color:#00e67699}.scene-cp-table tr.picking-active{background:#00e67614}.scene-cp-table tr.anchor-selected{background:#ffc10714;box-shadow:inset 0 0 0 1px #ffc10738}.scene-cp-table tr.anchor-selected.picking-active{background:linear-gradient(0deg,#ffc10714,#ffc10714),#00e67614}.scene-cp-input{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#fff;font-family:monospace;font-size:11px;padding:4px 6px;outline:none}.scene-cp-input:focus{border-color:#00e67680}.scene-cp-label-input{width:120px}.scene-cp-num{width:64px;text-align:right}.scene-cp-pixel-cell{white-space:nowrap;font-family:monospace;font-size:10px}.scene-cp-pixel-value{color:#a5d6a7}.scene-cp-residual-cell{white-space:nowrap}.scene-cp-residual-badge{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:2px 6px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#ffffffe0;font-family:monospace;font-size:10px;font-weight:700}.scene-cp-residual-badge.good{background:#00e6761f;border-color:#00e67647;color:#9ff5c8}.scene-cp-residual-badge.warn{background:#ffc1071f;border-color:#ffc10747;color:#ffe082}.scene-cp-residual-badge.danger{background:#ff52521f;border-color:#ff52524d;color:#ff9a9a}.scene-cp-pixel-empty{color:#fff3}.scene-cp-pick-btn{background:#00e6761a;border:1px solid rgba(0,230,118,.3);border-radius:4px;color:#00e676cc;font-size:14px;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.scene-cp-pick-btn:hover{background:#00e67633}.scene-cp-pick-btn.picking{background:#00e6764d;border-color:#00e676;color:#fff;animation:pulse-green 1s infinite}.scene-cp-world-pick-btn{background:#60a5fa1f;border:1px solid rgba(96,165,250,.35);border-radius:4px;color:#bfdbfe;font-size:10px;font-weight:700;letter-spacing:.04em;width:40px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.scene-cp-world-pick-btn:hover:not(:disabled){background:#60a5fa38}.scene-cp-world-pick-btn.picking{background:#60a5fa4d;border-color:#93c5fd;color:#fff;animation:pulse-blue 1s infinite}.scene-cp-pick-btn:disabled,.scene-cp-world-pick-btn:disabled{opacity:.35;cursor:not-allowed}@keyframes pulse-green{0%,to{box-shadow:0 0 #00e67666}50%{box-shadow:0 0 0 6px #00e67600}}@keyframes pulse-blue{0%,to{box-shadow:0 0 #60a5fa66}50%{box-shadow:0 0 0 6px #60a5fa00}}.scene-cp-world-pick-status{margin:-2px 0 10px;padding:6px 8px;font-size:11px;line-height:1.45;border-radius:6px;border:1px solid rgba(96,165,250,.2);background:#60a5fa14;color:#bfdbfee6}.scene-cp-world-pick-status.active{border-color:#60a5fa6b;background:#60a5fa24;color:#eff6ff}.scene-cp-world-pick-status.muted{border-color:#ffffff14;background:#ffffff0a;color:#ffffff7a}.scene-cp-uv-tune-block{margin-top:10px;margin-bottom:12px;padding:9px 10px;border-radius:8px;border:1px solid rgba(255,193,7,.16);background:#ffc1070f}.scene-cp-uv-tune-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.scene-cp-uv-tune-btn{padding:7px 12px;background:#ffc1071f;border:1px solid rgba(255,193,7,.28);border-radius:6px;color:#ffe082;font-family:monospace;font-size:11px;cursor:pointer;transition:all .15s}.scene-cp-uv-tune-btn:hover:not(:disabled){background:#ffc1072e}.scene-cp-uv-tune-btn:disabled{opacity:.4;cursor:not-allowed}.scene-cp-uv-tune-target{font-family:monospace;font-size:11px;color:#ffe082e6}.scene-cp-uv-tune-target.selected{color:#fff59dfa}.scene-cp-uv-tune-hint{margin-top:6px;font-size:11px;line-height:1.45;color:#ffffffb8}.scene-cp-uv-tune-status{margin-top:8px;font-size:11px;line-height:1.45}.scene-cp-uv-tune-status.good{color:#9ff5c8}.scene-cp-uv-tune-status.warn{color:#ffe082}.scene-cp-uv-tune-status.danger{color:#ff9a9a}.scene-cp-uv-tune-status.muted{color:#ffffff9e}.scene-cp-remove-btn{background:none;border:1px solid rgba(239,83,80,.3);border-radius:4px;color:#ef535099;font-size:14px;width:24px;height:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.scene-cp-remove-btn:hover{background:#ef535026;color:#ef5350}.scene-cp-actions-row{display:flex;gap:8px;margin-bottom:12px}.scene-cp-consecutive-btn{flex:1;padding:8px 12px;background:#00e67614;border:1px solid rgba(0,230,118,.25);border-radius:6px;color:#00e676cc;font-family:monospace;font-size:11px;cursor:pointer;transition:all .15s}.scene-cp-consecutive-btn:hover{background:#00e67626}.scene-cp-consecutive-btn.active{background:#00e67633;border-color:#00e676;color:#fff}.scene-cp-add-btn{padding:8px 14px;background:#ffffff0d;border:1px dashed rgba(255,255,255,.2);border-radius:6px;color:#ffffff80;font-size:11px;cursor:pointer}.scene-cp-add-btn:hover{border-color:#00e67666;color:#00e676b3}.scene-cp-keyframes{max-height:160px;overflow-y:auto;margin-bottom:8px;border:1px solid rgba(255,255,255,.06);border-radius:6px}.scene-cp-empty-kf{padding:12px;text-align:center;font-size:11px;color:#ffffff4d}.scene-cp-kf-row{display:flex;align-items:center;gap:8px;padding:5px 10px;cursor:pointer;font-family:monospace;font-size:11px;color:#ffffffb3;border-left:3px solid transparent;transition:background .15s}.scene-cp-kf-row:hover{background:#ffffff0a}.scene-cp-kf-row.active{background:#00e67614;border-left-color:#00e67699}.scene-cp-kf-frame{font-weight:700;color:#a5d6a7;min-width:48px}.scene-cp-kf-obs{color:#ffffff80;font-size:10px}.scene-cp-kf-badge{font-size:9px;font-weight:600;padding:1px 6px;border-radius:3px;text-transform:uppercase}.scene-cp-kf-badge.good{background:#00e67633;color:#69f0ae}.scene-cp-kf-badge.warn{background:#ffc10733;color:#ffe082}.scene-cp-kf-badge.danger{background:#ef535033;color:#ef9a9a}.scene-cp-kf-remove{margin-left:auto;background:none;border:none;color:#ffffff4d;font-size:14px;cursor:pointer;padding:0 4px}.scene-cp-kf-remove:hover{color:#ef5350}.scene-cp-kf-actions{display:flex;gap:8px;margin-bottom:12px}.scene-cp-add-kf-btn{flex:1;padding:7px 12px;background:#00e67614;border:1px solid rgba(0,230,118,.25);border-radius:6px;color:#00e676cc;font-size:11px;cursor:pointer}.scene-cp-add-kf-btn:hover{background:#00e67626}.scene-cp-track-btn{flex:1;padding:7px 12px;background:#4488ff14;border:1px solid rgba(68,136,255,.25);border-radius:6px;color:#48fc;font-size:11px;cursor:pointer}.scene-cp-track-btn:hover{background:#4488ff26}.scene-cp-track-btn:disabled{opacity:.4;cursor:not-allowed}.scene-cp-intrinsics{display:flex;gap:12px;align-items:end;margin-bottom:12px;flex-wrap:wrap}.scene-cp-spec{display:flex;flex-direction:column;gap:3px;font-size:10px;color:#ffffff80}.scene-cp-autocalib{display:flex;align-items:center;gap:6px;font-size:11px;color:#00e676b3;cursor:pointer}.scene-cp-error{background:#ef535026;border:1px solid rgba(239,83,80,.4);border-radius:6px;padding:8px 12px;font-size:11px;color:#ef9a9a;margin-bottom:12px}.scene-cp-results{background:#00e6760f;border:1px solid rgba(0,230,118,.2);border-radius:6px;padding:8px 12px;margin-bottom:12px}.scene-cp-results-header{font-size:11px;font-weight:600;color:#a5d6a7;display:flex;align-items:center;gap:8px}.scene-cp-autocalib-badge{font-size:9px;font-weight:700;padding:2px 6px;border-radius:3px;background:#00e67633;color:#69f0ae;text-transform:uppercase}.scene-cp-solve-btn{width:100%;padding:10px;background:linear-gradient(135deg,#00e67633,#00c85326);border:1px solid rgba(0,230,118,.4);border-radius:8px;color:#a5d6a7;font-weight:600;font-size:12px;cursor:pointer;transition:all .15s}.scene-cp-solve-btn:hover:not(:disabled){background:linear-gradient(135deg,#00e6764d,#00c85340);color:#fff}.scene-cp-solve-btn:disabled{opacity:.4;cursor:not-allowed}.seg-targets-scene-row{display:flex;align-items:center;gap:6px;padding:6px 8px;border-top:1px solid rgba(255,255,255,.06)}.seg-targets-scene-btn{flex:1;padding:6px 10px;background:#00e6760f;border:1px solid rgba(0,230,118,.2);border-radius:5px;color:#00e676b3;font-family:monospace;font-size:10px;cursor:pointer;transition:all .15s}.seg-targets-scene-btn:hover{background:#00e6761f}.seg-targets-scene-btn.active{background:#00e67626;border-color:#00e67680;color:#69f0ae}.seg-targets-scene-badge{font-size:9px;font-weight:600;padding:2px 6px;border-radius:3px;background:#00e67626;color:#a5d6a7;white-space:nowrap}.seg-target-scene-promote-btn{background:none;border:none;cursor:pointer;padding:0 2px;font-size:13px;line-height:1;flex-shrink:0;opacity:.5;transition:opacity .15s}.seg-target-scene-promote-btn:hover{opacity:1}.scene-cp-dxf-section{margin-bottom:12px}.scene-cp-dxf-controls{display:flex;gap:6px;align-items:center;margin-bottom:6px}.scene-cp-dxf-import-btn{flex:1;padding:6px 10px;background:#ab47bc1a;border:1px solid rgba(171,71,188,.3);border-radius:5px;color:#ce93d8e6;font-family:monospace;font-size:10px;cursor:pointer;transition:all .15s}.scene-cp-dxf-import-btn:hover{background:#ab47bc33;border-color:#ab47bc80;color:#ce93d8}.scene-cp-dxf-unit{width:70px;font-size:10px;padding:4px 6px}.scene-cp-dxf-file{font-size:10px;color:#ce93d8b3;margin-bottom:6px;padding:4px 8px;background:#ab47bc0f;border-radius:4px}.scene-cp-dxf-features{border:1px solid rgba(171,71,188,.15);border-radius:6px;overflow:hidden}.scene-cp-dxf-features-header{font-size:9px;color:#ce93d899;padding:4px 8px;background:#ab47bc0f;border-bottom:1px solid rgba(171,71,188,.1)}.scene-cp-dxf-list{max-height:180px;overflow-y:auto}.scene-cp-dxf-feat{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:10px;font-family:monospace;color:#ffffffb3;cursor:pointer;transition:background .1s;border-bottom:1px solid rgba(255,255,255,.03)}.scene-cp-dxf-feat:hover{background:#ab47bc1f}.scene-cp-dxf-feat:last-child{border-bottom:none}.scene-cp-dxf-feat-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ce93d8}.scene-cp-dxf-feat-coords{flex-shrink:0;color:#fff6;font-size:9px}.scene-cp-dxf-feat-add{background:none;border:1px solid rgba(171,71,188,.3);border-radius:3px;color:#ce93d8b3;font-size:11px;line-height:1;width:18px;height:18px;cursor:pointer;flex-shrink:0;transition:all .1s}.scene-cp-dxf-feat-add:hover{background:#ab47bc33;color:#ce93d8}.scene-cp-dxf-overflow{font-size:9px;color:#ffffff4d;text-align:center;padding:4px;border-top:1px solid rgba(171,71,188,.1)}.scene-cp-dxf-hint{font-size:9px;color:#ffffff4d;line-height:1.4;padding:4px 0}.scene-cp-coord-mode-toggle{display:inline-flex;gap:2px;margin-left:10px;vertical-align:middle}.scene-cp-mode-btn{background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#fff6;font-size:9px;font-family:monospace;padding:2px 8px;cursor:pointer;border-radius:3px;transition:all .15s}.scene-cp-mode-btn:first-child{border-radius:3px 0 0 3px}.scene-cp-mode-btn:last-child{border-radius:0 3px 3px 0}.scene-cp-mode-btn.active{background:#00e67626;border-color:#00e67666;color:#00e676}.scene-cp-mode-btn:hover:not(.active){background:#ffffff14;color:#fff9}.scene-cp-table-compact th,.scene-cp-table-compact td{padding:3px 4px}.scene-cp-dist-pairs{display:flex;align-items:center;gap:6px;margin:8px 0;padding:6px 8px;background:#ff98000f;border:1px solid rgba(255,152,0,.15);border-radius:5px}.scene-cp-dist-pairs-label{font-size:9px;color:#ffc864b3;white-space:nowrap}.scene-cp-dist-pair-input{width:55px!important}.scene-cp-dist-unit{font-size:9px;color:#ffffff4d}.scene-cp-dist-fill-btn{background:#ff98001f;border:1px solid rgba(255,152,0,.3);border-radius:4px;color:#ffc864e6;font-size:9px;font-family:monospace;padding:3px 8px;cursor:pointer;transition:all .15s;white-space:nowrap}.scene-cp-dist-fill-btn:hover{background:#ff980033;border-color:#ff980080}.scene-cp-dist-matrix-label{font-size:9px;color:#fff6;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.scene-cp-dist-matrix{overflow-x:auto;margin-bottom:8px}.scene-cp-dist-table{width:100%;border-collapse:collapse;font-size:10px;font-family:monospace}.scene-cp-dist-table th,.scene-cp-dist-table td{padding:2px;text-align:center}.scene-cp-dist-th{font-size:8px;color:#fff6;max-width:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}.scene-cp-dist-row-label{font-size:8px;color:#fff6;text-align:right!important;padding-right:4px!important;max-width:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-cp-dist-cell-empty{background:#ffffff03}.scene-cp-dist-cell{padding:1px!important}.scene-cp-dist-input{width:48px!important;text-align:center;font-size:10px!important;padding:3px 2px!important;background:#ff98000f!important;border-color:#ff980026!important}.scene-cp-dist-input:focus{border-color:#ff980080!important;background:#ff98001a!important}.scene-cp-dist-compute-btn{width:100%;padding:8px 10px;background:#ff98001a;border:1px solid rgba(255,152,0,.3);border-radius:5px;color:#ffc864e6;font-family:monospace;font-size:11px;cursor:pointer;transition:all .15s;margin-bottom:6px}.scene-cp-dist-compute-btn:hover{background:#ff98002e;border-color:#ff980080;color:#ffcc80}.scene-cp-dist-result{padding:6px 8px;border-radius:5px;font-size:10px;font-family:monospace;margin-bottom:8px;line-height:1.5}.scene-cp-dist-result.good{background:#00e67614;border:1px solid rgba(0,230,118,.25);color:#00e676e6}.scene-cp-dist-result.warn{background:#ff980014;border:1px solid rgba(255,152,0,.25);color:#ffc864e6}.scene-cp-dist-result.bad{background:#f4433614;border:1px solid rgba(244,67,54,.25);color:#f44336e6}.scene-cp-dist-quality{opacity:.6}.scene-cp-dist-positions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.scene-cp-dist-pos{font-size:9px;color:#ffffff80;background:#ffffff0a;padding:2px 6px;border-radius:3px}.scene-cp-dist-hint{font-size:9px;color:#ffffff4d;line-height:1.4;padding:4px 0}.scene-cp-tie-section{margin-top:10px;padding:8px;border:1px solid rgba(100,181,246,.2);border-radius:6px;background:#64b5f60a}.scene-cp-tie-header{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:600;color:#64b5f6e6;margin-bottom:4px}.scene-cp-tie-add{background:#64b5f61a;border:1px solid rgba(100,181,246,.3);color:#64b5f6e6;border-radius:4px;padding:2px 8px;font-size:10px;cursor:pointer}.scene-cp-tie-add:hover{background:#64b5f633}.scene-cp-tie-hint{font-size:9px;color:#ffffff4d;line-height:1.4;margin-bottom:6px}.scene-cp-tie-row{display:flex;align-items:center;gap:4px;margin-bottom:4px;flex-wrap:wrap}.scene-cp-tie-row-axis{flex-direction:column;align-items:stretch;gap:3px;padding:5px;background:#ffffff05;border-radius:5px;border:1px solid rgba(255,255,255,.05);margin-bottom:6px}.scene-cp-tie-selectors{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.scene-cp-tie-axes{display:flex;align-items:center;gap:6px;padding-left:2px}.scene-cp-tie-axis-label{display:flex;align-items:center;gap:3px;font-size:9px;color:#ffffff80}.scene-cp-tie-axis-label span{font-weight:600;color:#64b5f6b3;font-size:9px;min-width:14px}.scene-cp-tie-axis-input{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#ffffffd9;border-radius:4px;padding:3px 4px;font-size:9px;width:52px;text-align:center}.scene-cp-tie-measured{font-size:9px;color:#ffc10799;padding:1px 3px;letter-spacing:.2px;display:flex;gap:10px;flex-wrap:wrap}.scene-cp-tie-after{color:#64dd78bf}.scene-cp-tie-select{background:#141423f2;border:1px solid rgba(100,181,246,.3);color:#ffffffe6;border-radius:4px;padding:4px 18px 4px 6px;font-size:10px;min-width:0;flex:1 1 90px;max-width:140px;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='rgba(100,181,246,0.6)'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.scene-cp-tie-select:focus{border-color:#64b5f699;outline:none;box-shadow:0 0 6px #64b5f626}.scene-cp-tie-select option{background:#1a1a2e;color:#e0e0e0;padding:4px 8px}.scene-cp-tie-arrow{font-size:11px;color:#64b5f699;flex-shrink:0}.scene-cp-tie-at{font-size:9px;color:#fff6;flex-shrink:0}.scene-cp-tie-frame{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#ffffffd9;border-radius:4px;padding:3px 4px;font-size:9px;width:52px;text-align:center}.scene-cp-tie-dist{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#ffffffd9;border-radius:4px;padding:3px 4px;font-size:9px;width:48px;text-align:center}.scene-cp-tie-unit{font-size:9px;color:#ffffff59;flex-shrink:0}.scene-cp-tie-goto{background:none;border:none;color:#ffffff73;cursor:pointer;font-size:13px;padding:2px 4px;flex-shrink:0}.scene-cp-tie-goto:hover{color:#26c6dae6}.scene-cp-tie-remove{background:none;border:none;color:#f4433699;cursor:pointer;font-size:11px;padding:2px 4px;flex-shrink:0}.scene-cp-tie-remove:hover{color:#f44336e6}.scene-cp-tie-apply{width:100%;margin-top:6px;padding:6px;border-radius:5px;border:1px solid rgba(100,181,246,.3);background:#64b5f61a;color:#64b5f6e6;font-size:10px;font-weight:600;cursor:pointer}.scene-cp-tie-apply:hover{background:#64b5f633;border-color:#64b5f680}.survey-constraint-panel{position:fixed;top:72px;left:28px;z-index:9500;width:min(1420px,calc(100vw - 56px));height:min(820px,calc(100vh - 120px));display:grid;grid-template-rows:auto auto 1fr;background:#050a12f5;border:1px solid rgba(71,85,105,.95);border-radius:14px;box-shadow:0 24px 80px #00000073;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden}.survey-constraint-handle{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;background:linear-gradient(180deg,#0f172af5,#090f1cf0);border-bottom:1px solid rgba(51,65,85,.95);cursor:move}.survey-constraint-title{font-size:15px;font-weight:700;color:#e2e8f0}.survey-constraint-subtitle{margin-top:2px;font-size:11px;color:#94a3b8}.survey-constraint-close{border:1px solid rgba(71,85,105,.95);background:#0f172af2;color:#e2e8f0;border-radius:8px;padding:8px 12px;font-size:12px;font-weight:600;cursor:pointer}.survey-constraint-toolbar{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid rgba(30,41,59,.95)}.survey-toolbar-btn{border:1px solid rgba(71,85,105,.95);background:#0f172af2;color:#dbeafe;border-radius:8px;padding:8px 12px;font-size:12px;font-weight:600;cursor:pointer}.survey-toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.survey-toolbar-meta{margin-left:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.survey-toolbar-meta span{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;color:#bfdbfe;background:#1e293be6;border:1px solid rgba(51,65,85,.95)}.survey-import-error{margin:12px 18px 0;padding:10px 12px;border-radius:10px;background:#7f1d1d52;border:1px solid rgba(220,38,38,.55);color:#fecaca;font-size:12px}.survey-constraint-layout{min-height:0;display:grid;grid-template-columns:320px minmax(0,1fr)}.survey-sidebar{min-height:0;overflow:auto;display:grid;gap:12px;padding:16px 14px 18px 18px;border-right:1px solid rgba(30,41,59,.95)}.survey-sidebar-card{display:grid;gap:10px;padding:14px;border-radius:12px;background:#090f1ceb;border:1px solid rgba(30,41,59,.95)}.survey-sidebar-card h3{margin:0;font-size:12px;font-weight:700;color:#e2e8f0}.survey-sidebar-card p,.survey-unit-readout{margin:0;font-size:12px;line-height:1.45;color:#94a3b8}.survey-layer-actions{display:flex;flex-wrap:wrap;gap:8px}.survey-layer-action-btn{border:1px solid rgba(71,85,105,.95);background:#0f172af2;color:#dbeafe;border-radius:8px;padding:7px 10px;font-size:11px;font-weight:600;cursor:pointer}.survey-layer-action-btn:disabled{opacity:.5;cursor:not-allowed}.survey-layer-action-btn.active{background:#0e7490f2;border-color:#22d3eea6;color:#ecfeff}.survey-layer-list{display:grid;gap:10px}.survey-layer-row{display:grid;gap:8px;padding:10px;border-radius:10px;background:#0f172aad;border:1px solid rgba(30,41,59,.95)}.survey-layer-header-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.survey-layer-toggle{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:11px;color:#e2e8f0}.survey-layer-toggle span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.survey-layer-selectable{flex-shrink:0;color:#93c5fd}.survey-layer-meta,.survey-layer-empty,.survey-selected-feature{font-size:11px;line-height:1.45;color:#94a3b8}.survey-layer-opacity{width:100%;accent-color:#38bdf8}.survey-selected-feature{display:grid;gap:6px}.survey-selected-feature strong{color:#e2e8f0}.survey-ortho-meta{display:grid;gap:6px;font-size:11px;line-height:1.45;color:#94a3b8}.survey-ortho-meta strong{color:#e2e8f0}.survey-ortho-calibration-block{display:grid;gap:10px;padding:12px;border-radius:10px;background:#0f172aad;border:1px solid rgba(51,65,85,.95)}.survey-ortho-calibration-header{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#e2e8f0;font-size:12px}.survey-ortho-point-list{display:grid;gap:6px;font-size:11px;color:#cbd5e1}.survey-status-pill{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#3b82f62e;border:1px solid rgba(59,130,246,.4);color:#bfdbfe;font-size:10px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.survey-status-pill.calibrated{background:#22c55e2e;border-color:#22c55e6b;color:#bbf7d0}.survey-transform-grid{display:grid;gap:10px}.survey-transform-field{display:grid;gap:6px}.survey-transform-field span,.survey-checkbox-row span{font-size:11px;color:#cbd5e1}.survey-transform-field input{border:1px solid rgba(71,85,105,.95);background:#0f172af2;color:#e2e8f0;border-radius:8px;padding:8px 10px;font-size:12px}.survey-checkbox-row{display:flex;align-items:center;gap:8px}.survey-main-pane{min-width:0;min-height:0;padding:16px 18px 18px 14px}.survey-viewport-shell{width:100%;height:100%;min-height:420px;border-radius:14px;overflow:hidden;border:1px solid rgba(51,65,85,.95);background:#07111ffa}@media (max-width: 1200px){.survey-constraint-panel{width:calc(100vw - 24px);height:calc(100vh - 92px);left:12px;top:60px}.survey-constraint-layout{grid-template-columns:290px minmax(0,1fr)}}@media (max-width: 900px){.survey-constraint-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(320px,1fr)}.survey-sidebar{border-right:none;border-bottom:1px solid rgba(30,41,59,.95)}.survey-toolbar-meta{margin-left:0;justify-content:flex-start}.survey-constraint-toolbar{flex-wrap:wrap}}
