@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";#loading-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#0a0a0a,#111,#0a0a0a);z-index:9999;display:flex;align-items:center;justify-content:center;transition:opacity .5s ease,visibility .5s ease}#loading-screen.hidden{opacity:0;visibility:hidden;pointer-events:none}.loading-content{display:flex;flex-direction:column;align-items:center;gap:40px}.loading-logo{text-align:center}.loading-logo .logo-box{width:100px;height:100px;background:linear-gradient(135deg,#1a1a1a,#2a2a2a);border:2px solid #3a3a3a;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;letter-spacing:4px;color:#fff;margin:0 auto 16px;box-shadow:0 0 30px #ffffff1a;animation:logo-pulse 2s ease-in-out infinite}.loading-logo .logo-subtitle{font-size:14px;font-weight:600;letter-spacing:4px;color:#666;text-transform:uppercase}@keyframes logo-pulse{0%,to{box-shadow:0 0 30px #ffffff1a}50%{box-shadow:0 0 50px #fff3}}.loading-animation{position:relative;width:200px;height:200px}.radar-sweep{position:absolute;top:50%;left:50%;width:100%;height:100%;transform:translate(-50%,-50%);background:conic-gradient(from 0deg,transparent 0deg,rgba(68,170,68,.3) 30deg,rgba(68,170,68,.1) 60deg,transparent 90deg);border-radius:50%;animation:radar-rotate 2s linear infinite}@keyframes radar-rotate{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}.radar-ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border:1px solid rgba(68,170,68,.3);border-radius:50%}.radar-ring.ring-1{width:60px;height:60px;animation:ring-pulse 2s ease-out infinite}.radar-ring.ring-2{width:120px;height:120px;animation:ring-pulse 2s ease-out .5s infinite}.radar-ring.ring-3{width:180px;height:180px;animation:ring-pulse 2s ease-out 1s infinite}@keyframes ring-pulse{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.2)}}.radar-center{position:absolute;top:50%;left:50%;width:12px;height:12px;background:#4a4;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 20px #4a4c;animation:center-glow 1s ease-in-out infinite}@keyframes center-glow{0%,to{box-shadow:0 0 20px #4a4c}50%{box-shadow:0 0 40px #4a4}}.loading-status{width:280px;text-align:center}.loading-bar{height:4px;background:#1a1a1a;border:1px solid #2a2a2a;margin-bottom:16px;overflow:hidden}.loading-progress{height:100%;width:0%;background:linear-gradient(90deg,#4a4,#6c6);transition:width .3s ease;box-shadow:0 0 10px #44aa4480}.loading-text{font-family:JetBrains Mono,monospace;font-size:11px;color:#666;letter-spacing:1px;text-transform:uppercase}:root{--bg-primary: #0a0a0a;--bg-secondary: #111111;--bg-tertiary: #1a1a1a;--bg-card: #141414;--bg-panel: #0f0f0f;--bg-header: #0c0c0c;--text-primary: #ffffff;--text-secondary: #a0a0a0;--text-muted: #666666;--accent-primary: #ffffff;--accent-secondary: #cccccc;--accent-success: #4a4a4a;--accent-warning: #888888;--accent-danger: #cc0000;--border-color: #2a2a2a;--border-light: #3a3a3a;--font-main: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Consolas", monospace;--radius-sm: 1px;--radius-md: 2px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-main);background:var(--bg-primary);color:var(--text-primary);overflow:hidden;height:100vh;-webkit-user-select:none;user-select:none}#app{display:grid;grid-template-columns:280px 1fr 260px;height:100vh}#header-bar{position:fixed;top:0;left:0;right:0;height:44px;background:var(--bg-header);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 20px;z-index:200}#header-bar .logo{display:flex;align-items:center;gap:12px}#header-bar .logo-icon{width:32px;height:32px;background:var(--bg-tertiary);border:1px solid var(--border-light);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:10px;letter-spacing:1px;color:var(--text-primary)}#header-bar .logo-text{font-size:13px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--text-primary)}#header-bar .logo-text span{color:var(--text-muted);font-weight:400;font-size:11px;margin-left:8px}#header-bar .status-bar{display:flex;gap:16px;font-size:11px;color:var(--text-secondary);font-family:var(--font-mono)}#header-bar .status-item{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color)}#header-bar .status-dot{width:6px;height:6px;border-radius:50%;background:#4a4}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.mode-toggle-container{display:flex;gap:2px;background:var(--bg-tertiary);padding:3px;border:1px solid var(--border-color)}.mode-toggle-btn{display:flex;align-items:center;gap:6px;padding:6px 16px;background:transparent;border:none;color:var(--text-muted);font-size:11px;font-weight:600;font-family:var(--font-main);cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.5px}.mode-toggle-btn .mode-icon{font-size:12px}.mode-toggle-btn:hover{color:var(--text-secondary);background:var(--bg-card)}.mode-toggle-btn.active{background:var(--accent-primary);color:var(--bg-primary)}.mode-toggle-btn.active .mode-icon{animation:none}#mode-canli-btn.active{background:#c00;color:#fff}#mode-canli-btn.active .mode-icon{animation:pulse 1s infinite}#canli-mode-container{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:#000}#canli-mode-container.active,body.canli-mode #canli-mode-container{display:block!important}#canli-map-view{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important;z-index:1!important}#canli-map-view .cesium-viewer{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}#canli-map-view .cesium-viewer-cesiumWidgetContainer,#canli-map-view .cesium-widget,#canli-map-view .cesium-widget canvas{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}body.canli-mode #canvas-container>canvas{display:block!important}body.canli-mode #canli-mode-container{position:absolute!important;width:350px!important;height:250px!important;top:auto!important;bottom:20px!important;right:20px!important;left:auto!important;border:2px solid #4ecdc4;border-radius:8px;overflow:hidden;z-index:100!important;box-shadow:0 4px 20px #00000080}body.canli-mode #canli-map-view{width:100%!important;height:100%!important}body.canli-mode #canli-map-view canvas{display:block!important}body.canli-mode #canli-connection-overlay,body.canli-mode #canli-zoom-controls{display:none!important}body.canli-mode #crosshair{display:block}#control-panel,#data-panel{background:var(--bg-panel);padding:52px 10px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;border-right:1px solid var(--border-color)}#data-panel{border-right:none;border-left:1px solid var(--border-color)}.panel-section{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;overflow:hidden;box-shadow:0 10px 28px #0000002e}.panel-header{background:linear-gradient(180deg,#1e293beb,#0f172adb);padding:8px 12px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.panel-header h3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-primary)}.panel-header .badge{font-size:9px;font-family:var(--font-mono);padding:2px 8px;background:#4a4;color:#000;letter-spacing:.5px;font-weight:600}.panel-content{padding:10px}.control-group{margin-bottom:12px}.control-group label{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text-secondary);margin-bottom:4px;font-family:var(--font-mono)}.control-group label span{color:var(--text-primary);font-weight:600}.control-group input[type=range]{width:100%;height:4px;background:var(--bg-tertiary);border:1px solid var(--border-color);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.control-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;background:var(--text-primary);border:1px solid var(--border-light);cursor:pointer}.range-labels{display:flex;justify-content:space-between;font-size:9px;color:var(--text-muted);font-family:var(--font-mono);margin-top:2px}.control-hint{text-align:center;margin-top:8px;padding:6px 8px;background:var(--bg-tertiary);border:1px solid var(--border-color)}.control-hint small{font-size:9px;color:var(--text-muted);font-family:var(--font-mono)}.fire-button-container,.demo-button-container{margin-bottom:6px}#fire-laser-btn{width:100%;padding:12px 16px;background:#c00;border:1px solid #990000;color:#fff;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all .15s ease}#fire-laser-btn:hover{background:#a00}#fire-laser-btn:active,#fire-laser-btn.firing{background:#800}#demo-btn{width:100%;padding:6px 12px;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-secondary);font-size:9px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .15s ease}#demo-btn:hover{background:var(--border-light);color:var(--text-primary)}.reset-button-container{margin-bottom:6px;display:flex;flex-direction:column;gap:4px}#reset-laser-btn{width:100%;padding:6px 12px;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-muted);font-size:9px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:not-allowed;transition:all .15s ease;opacity:.5}#reset-laser-btn:disabled{cursor:not-allowed;opacity:.4}#reset-laser-btn.active{background:#888;color:#000;border-color:#666;cursor:pointer;opacity:1}#reset-laser-btn.active:hover{background:#999}#reset-laser-btn.resetting{background:#777}@keyframes pulse-reset{0%,to{box-shadow:0 0 #fbbc0466}50%{box-shadow:0 0 0 6px #fbbc0400}}.action-toolbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border-color)}.toolbar-btn{min-height:32px;padding:7px 8px;background:linear-gradient(180deg,#1f2937f5,#111827f5);border:1px solid rgba(148,163,184,.18);border-radius:6px;color:var(--text-secondary);font-size:9px;font-weight:700;font-family:var(--font-mono);letter-spacing:.45px;cursor:pointer;transition:all .15s ease}.toolbar-btn:hover{background:linear-gradient(180deg,#334155fa,#1e293bfa);color:var(--text-primary);border-color:#94a3b861}.toolbar-btn.active{background:linear-gradient(180deg,#38bdf8,#0ea5e9);color:#001018;border-color:#7dd3fc;box-shadow:0 0 18px #0ea5e947}.toolbar-btn.running{background:linear-gradient(180deg,#fbbf24,#f59e0b);color:var(--bg-primary);border-color:var(--accent-warning)}@media (max-width: 1100px){.action-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}}.test-status{font-size:9px;font-family:var(--font-mono);color:var(--text-muted);text-align:center;padding:4px 0;min-height:14px}.test-status.running{color:#f59e0b}.sensor-placement-container{margin-bottom:6px}#sensor-placement-btn{width:100%;padding:8px 12px;background:linear-gradient(180deg,#059669,#047857);border:1px solid #10b981;border-radius:var(--radius-md);color:#d1fae5;font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s ease}#sensor-placement-btn:hover{background:linear-gradient(180deg,#10b981,#059669);border-color:#34d399;box-shadow:0 0 15px #10b9814d}#sensor-placement-btn.active{background:linear-gradient(180deg,#f59e0b,#d97706);border-color:#fbbf24;color:#fff;animation:pulse-sensor 1s infinite}@keyframes pulse-sensor{0%,to{box-shadow:0 0 10px #f59e0b4d}50%{box-shadow:0 0 20px #f59e0b99}}.test-status.complete{color:#22c55e}#open-calc-modal-btn{width:100%;padding:8px 12px;background:var(--bg-tertiary);border:1px solid var(--border-light);color:var(--text-secondary);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;gap:8px}#open-calc-modal-btn:hover{background:var(--border-light);color:var(--text-primary)}#open-calc-modal-btn:active{background:var(--border-color)}.lock-status{font-size:8px;font-family:var(--font-mono);text-align:center;color:var(--text-muted);padding:2px 0;transition:all .2s ease}.lock-status.locked{color:var(--accent-warning);font-weight:500}.lock-status.warning{color:var(--accent-danger);font-weight:600;animation:flash-warning .3s ease infinite}@keyframes flash-warning{0%,to{opacity:1}50%{opacity:.5}}#fire-laser-btn.locked{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed;border:1px solid var(--border-color)}#fire-laser-btn.locked:hover{background:var(--bg-tertiary)}#fire-laser-btn:disabled{cursor:not-allowed}:root{--bg-primary: #070a0f;--bg-secondary: #0c1118;--bg-tertiary: #151c26;--bg-card: rgba(17, 24, 34, .94);--bg-panel: #0b1017;--bg-header: rgba(7, 10, 15, .92);--text-primary: #f5f7fb;--text-secondary: #b6c0ce;--text-muted: #697789;--accent-primary: #7dd3fc;--accent-secondary: #22c55e;--accent-success: #22c55e;--accent-warning: #f59e0b;--accent-danger: #ef4444;--border-color: rgba(148, 163, 184, .18);--border-light: rgba(203, 213, 225, .34);--radius-sm: 4px;--radius-md: 8px}body{background:linear-gradient(135deg,#06080d,#0b1017,#090d12);color:var(--text-primary)}#app{grid-template-columns:292px minmax(0,1fr) 280px}#header-bar{height:46px;padding:0 18px;background:linear-gradient(180deg,#0b0f16f5,#05080df0);border-bottom:1px solid rgba(148,163,184,.22);box-shadow:0 12px 32px #00000061;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}#header-bar .logo-icon{border-radius:6px;background:linear-gradient(145deg,#1e293bf2,#0f172af2);border-color:#7dd3fc57;box-shadow:inset 0 1px #ffffff14,0 0 20px #38bdf814}#header-bar .logo-text{letter-spacing:1.4px}#header-bar .logo-text span{color:#748094}#header-bar .status-bar{gap:10px}#header-bar .status-item,.mode-toggle-container{border-radius:6px;background:#0f172ac7;border-color:#94a3b833;box-shadow:inset 0 1px #ffffff0a}#header-bar .status-dot{background:#22c55e;box-shadow:0 0 12px #22c55ea6}.mode-toggle-btn{border-radius:4px}.mode-toggle-btn.active{background:linear-gradient(180deg,#7dd3fc,#38bdf8);color:#03131d}#control-panel,#data-panel{padding-top:58px;padding-left:12px;padding-right:12px;gap:12px;background:linear-gradient(180deg,#0f172af5,#070a0ffa);scrollbar-color:rgba(125,211,252,.36) rgba(15,23,42,.7)}#control-panel{border-right-color:#94a3b833}#data-panel{border-left-color:#94a3b833}.panel-section{background:linear-gradient(180deg,#111822f5,#090d14f5);border-color:#94a3b82e;border-radius:8px;box-shadow:0 16px 38px #00000052,inset 0 1px #ffffff0b}.panel-header{min-height:32px;background:linear-gradient(180deg,#192332fa,#0d131ef5);border-bottom-color:#94a3b82e;position:relative}.panel-header:before{content:"";width:3px;height:16px;border-radius:999px;background:linear-gradient(180deg,#7dd3fc,#22c55e);margin-right:8px;flex:0 0 auto}.panel-header h3{color:#eef5ff;letter-spacing:1.2px}.panel-header .badge{border-radius:999px;background:#22c55e29;color:#86efac;border:1px solid rgba(34,197,94,.34)}#canvas-container{margin-top:46px;background:linear-gradient(180deg,#090d14,#04070c);border-color:#94a3b838;box-shadow:inset 0 0 0 1px #ffffff06}.action-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding-top:12px;border-top-color:#94a3b82e}.action-toolbar .toolbar-btn,.action-toolbar #open-calc-modal-btn,.action-toolbar #sensor-placement-btn{width:100%;min-height:34px;padding:8px 9px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:7px;border:1px solid rgba(148,163,184,.2);background:linear-gradient(180deg,#1e293beb,#0f172af0);color:#cbd5e1;font-size:9px;font-weight:700;line-height:1.1;letter-spacing:.5px;text-transform:uppercase;box-shadow:inset 0 1px #ffffff0e}.action-toolbar .toolbar-btn:before,.action-toolbar #open-calc-modal-btn:before,.action-toolbar #sensor-placement-btn:before{font-family:var(--font-mono);font-size:11px;color:#7dd3fc;line-height:1}#open-calc-modal-btn:before{content:"i"}#toggle-sensor-fov-btn:before{content:"F"}#sensor-placement-btn:before{content:"+"}#vehicle-upload-btn:before{content:"^"}#vehicle-reset-btn:before{content:"R"}#start-blind-spot-test-btn:before{content:"!"}#export-pdf-btn:before{content:"P"}.action-toolbar .toolbar-btn:hover,.action-toolbar #open-calc-modal-btn:hover,.action-toolbar #sensor-placement-btn:hover{transform:translateY(-1px);background:linear-gradient(180deg,#334155fa,#182332fa);border-color:#7dd3fc6b;color:#f8fafc;box-shadow:0 10px 24px #00000042,inset 0 1px #ffffff14}.action-toolbar .toolbar-btn.active,.action-toolbar #sensor-placement-btn.active{background:linear-gradient(180deg,#38bdf8,#0ea5e9);border-color:#bae6fdbf;color:#03131d;animation:none;box-shadow:0 0 0 1px #38bdf82e,0 0 24px #0ea5e957}.action-toolbar .toolbar-btn.running{background:linear-gradient(180deg,#f59e0b,#d97706);color:#fff7ed;border-color:#fbbf24b3}@media (max-width: 1180px){#app{grid-template-columns:280px minmax(0,1fr) 260px}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}#fire-laser-btn.shake{animation:shake .5s ease}.beam-visual-large{margin-bottom:8px}.beam-svg{width:100%;height:50px;background:var(--bg-tertiary);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.beam-source-svg{filter:drop-shadow(0 0 3px #ea4335)}.beam-svg-labels{display:flex;justify-content:space-between;font-size:8px;color:var(--text-muted);margin-top:4px;font-family:var(--font-mono)}.beam-svg-labels small{color:var(--accent-secondary)}.beam-analysis,.result-grid{margin-bottom:8px}.analysis-row,.result-row{display:flex;justify-content:space-between;align-items:center;padding:5px 8px;background:var(--bg-tertiary);margin-bottom:1px;font-family:var(--font-mono);font-size:10px;border-left:2px solid transparent}.analysis-row label,.result-row label{color:var(--text-secondary);font-size:9px}.analysis-row .value,.result-row .value{color:var(--text-primary);font-weight:500}.analysis-row.highlight,.result-row.highlight{border-left-color:var(--text-primary)}.result-row.success{border-left-color:#4a4}.result-row.success .value{color:#4a4}.analysis-row.warning{border-left-color:#a80}.atm-effects-section{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border-color)}.atm-effects-section .section-title{font-size:8px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:4px;font-family:var(--font-mono)}.atm-effect-row{display:flex;justify-content:space-between;align-items:center;padding:3px 6px;background:var(--bg-tertiary);margin-bottom:1px;font-family:var(--font-mono);font-size:8px;border-left:2px solid transparent}.atm-effect-row .effect-label{color:var(--text-secondary)}.atm-effect-row .effect-value{color:var(--text-primary);font-weight:500}.atm-effect-row.highlight{border-left-color:var(--accent-success);background:#34a85314}.atm-effect-row.highlight .effect-value{color:var(--accent-success)}#weather-badge{font-size:7px;padding:2px 5px}#weather-badge.clear{background:var(--accent-success)}#weather-badge.hazy{background:var(--accent-warning)}#weather-badge.foggy{background:#8b5cf6}#weather-badge.dusty{background:#f97316}#weather-badge.rainy{background:#06b6d4}#early-detection.detectable{color:var(--accent-success)!important;font-weight:600}#early-detection.not-detectable{color:var(--text-muted)!important}.trig-compact{display:grid;grid-template-columns:1fr 1fr;gap:2px}.trig-row{display:flex;justify-content:space-between;padding:4px 6px;background:var(--bg-tertiary);font-family:var(--font-mono);font-size:9px}.trig-row .formula{color:var(--text-muted)}.trig-row .value{color:var(--accent-secondary);font-weight:500}.accuracy-display{display:flex;align-items:center;gap:12px;padding:10px;background:var(--bg-tertiary);border:1px solid var(--border-color)}.accuracy-circle{width:44px;height:44px;border-radius:50%;border:2px solid #44aa44;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-card)}.accuracy-circle.medium{border-color:#a80}.accuracy-circle.low{border-color:#c00}.accuracy-circle .percent{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--text-primary)}.accuracy-circle .label{font-size:7px;color:var(--text-muted);text-transform:uppercase}.accuracy-info .grade{font-size:11px;font-weight:600;font-family:var(--font-mono)}.accuracy-info .grade.high{color:#4a4}.accuracy-info .grade.medium{color:#a80}.accuracy-info .grade.low{color:#c00}.accuracy-info .desc{font-size:9px;color:var(--text-muted)}.sensor-scroll{max-height:600px;overflow-y:auto}.sensor-grid{display:flex;flex-direction:column;gap:4px}.device-sensors{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:6px}.device-sensors.active{border-color:#666;background:#1a1a1a}.device-header{display:flex;justify-content:space-between;margin-bottom:4px;padding-bottom:3px;border-bottom:1px solid var(--border-color);font-family:var(--font-mono)}.device-header .name{font-size:9px;font-weight:600;color:var(--text-primary)}.device-header .angle{font-size:9px;color:var(--text-muted)}.sensor-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:2px}.sensor-bar{text-align:center}.sensor-bar .bar-container{height:24px;background:var(--bg-card);border:1px solid var(--border-color);position:relative;overflow:hidden;margin-bottom:2px}.sensor-bar .bar-fill{position:absolute;bottom:0;left:0;right:0;background:#4a4;transition:height .2s ease}.sensor-bar .bar-fill.medium{background:#ca0}.sensor-bar .bar-fill.high{background:#f80}.sensor-bar .bar-fill.saturated{background:#c00}.sensor-bar .label{font-size:7px;color:var(--text-muted);font-family:var(--font-mono)}.sensor-bar .irradiance{font-family:var(--font-mono);font-size:7px;color:var(--text-secondary)}#canvas-container{position:relative;background:#0a0a0a;margin-top:44px;border:1px solid var(--border-color);overflow:hidden}#canvas-container #canli-mode-container{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100%!important;z-index:5}#crosshair{position:absolute;pointer-events:none;z-index:10;display:none}#crosshair .h-line,#crosshair .v-line{position:absolute;background:#fff9}#crosshair .h-line{width:16px;height:1px;top:50%;left:50%;transform:translate(-50%,-50%)}#crosshair .v-line{width:1px;height:16px;top:50%;left:50%;transform:translate(-50%,-50%)}#crosshair .center{position:absolute;width:4px;height:4px;border:1px solid rgba(255,255,255,.8);top:50%;left:50%;transform:translate(-50%,-50%)}#legend{position:fixed;bottom:8px;right:270px;display:flex;gap:12px;padding:6px 10px;background:var(--bg-secondary);border:1px solid var(--border-color);z-index:10;font-family:var(--font-mono)}.legend-item{display:flex;align-items:center;gap:4px;font-size:8px;color:var(--text-muted)}.legend-color{width:8px;height:8px}.legend-color.tank{background:#3d4f3d}.legend-color.lws{background:#666}.legend-color.sensor{background:#4a4}.legend-color.laser{background:#c00}.legend-color.beam-spot{background:#a00;border-radius:50%}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-light)}@media (max-width: 1100px){#app{grid-template-columns:240px 1fr 220px}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;z-index:1000;display:flex;align-items:center;justify-content:center}.modal-container{background:var(--bg-secondary);border:1px solid var(--border-color);width:90%;max-width:800px;max-height:85vh;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.modal-header h2{font-size:12px;font-weight:600;letter-spacing:.5px;color:var(--text-primary)}.modal-close{width:28px;height:28px;background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.modal-close:hover{background:#c00;border-color:#c00;color:#fff}.modal-body{padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.calc-section{background:var(--bg-card);border:1px solid var(--border-color);padding:12px}.calc-section-header{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}.calc-section-header .section-icon{font-size:10px;font-weight:700;font-family:var(--font-mono);width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary);border:1px solid var(--border-light);color:var(--text-primary)}.calc-section-header h3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-primary)}.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.calc-item{background:var(--bg-tertiary);padding:8px;text-align:center;border:1px solid var(--border-color)}.calc-item label{display:block;font-size:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-family:var(--font-mono)}.calc-item .calc-value{font-size:13px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono)}.calc-item .calc-value.highlight{color:var(--text-primary)}.calc-formula{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:8px 12px;text-align:center}.calc-formula code{font-family:var(--font-mono);font-size:11px;color:var(--text-primary)}.calc-formula.centered{display:flex;flex-direction:column;align-items:center;gap:4px}.calc-formula .formula-desc{font-size:9px;color:var(--text-muted);font-family:var(--font-mono)}.gaussian-visual{margin-bottom:10px}.gaussian-svg{width:100%;height:120px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.sensor-calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.sensor-calc-card{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:10px;text-align:center}.sensor-calc-card.detecting{border-color:#666}.sensor-calc-card.saturated{border-color:#c00}.sensor-calc-card .sensor-id{font-size:10px;font-weight:600;color:var(--text-secondary);margin-bottom:6px;font-family:var(--font-mono)}.sensor-calc-card .sensor-value{font-size:14px;font-weight:700;color:#4a4;font-family:var(--font-mono);margin-bottom:4px}.sensor-calc-card.detecting .sensor-value{color:#a80}.sensor-calc-card.saturated .sensor-value{color:#c00}.sensor-calc-card .sensor-detail{font-size:8px;color:var(--text-muted);font-family:var(--font-mono)}.position-calc{margin-bottom:12px}.calc-formula-large{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:12px;margin-bottom:10px}.formula-block{display:flex;align-items:center;justify-content:center;gap:12px}.formula-block .formula-label{font-size:10px;color:var(--text-secondary);font-family:var(--font-mono)}.formula-block code{font-size:13px;color:#4a4;font-family:var(--font-mono)}.calc-steps{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:10px;font-family:var(--font-mono);font-size:10px;max-height:120px;overflow-y:auto}.calc-step{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px dotted var(--border-color)}.calc-step:last-child{border-bottom:none}.calc-step .step-label{color:var(--text-secondary)}.calc-step .step-value{color:var(--text-primary)}.calc-step.total{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-light);border-bottom:none}.calc-step.total .step-label,.calc-step.total .step-value{color:var(--text-primary);font-weight:600}.calc-result{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.result-item{background:var(--bg-tertiary);padding:10px;text-align:center;border:1px solid var(--border-color)}.result-item.primary{border-color:#4a4}.result-item label{display:block;font-size:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-family:var(--font-mono)}.result-item .value{font-size:14px;font-weight:700;color:var(--text-primary);font-family:var(--font-mono)}.result-item.primary .value{color:#4a4}.atm-breakdown{padding:8px}.atm-bar-chart{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.atm-bar{display:flex;align-items:center;gap:10px}.atm-bar .bar-fill{flex:1;height:20px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);position:relative;overflow:hidden}.atm-bar .bar-fill:after{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--fill-width, 0%);background:var(--fill-color, var(--accent-primary));transition:width .3s ease}#atm-bar-rayleigh .bar-fill{--fill-color: #06b6d4}#atm-bar-mie .bar-fill{--fill-color: #f97316}#atm-bar-absorption .bar-fill{--fill-color: #8b5cf6}.atm-bar .bar-label{width:90px;font-size:10px;color:var(--text-secondary);font-family:var(--font-mono)}.atm-bar .bar-value{width:60px;text-align:right;font-size:11px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono)}.atm-total{display:flex;justify-content:space-between;align-items:center;padding:10px;background:#ea43351a;border:1px solid rgba(234,67,53,.3);border-radius:var(--radius-sm)}.atm-total .label{font-size:10px;color:var(--text-secondary);font-family:var(--font-mono)}.atm-total .value{font-size:14px;font-weight:700;color:var(--accent-danger);font-family:var(--font-mono)}.legend-item.clickable{cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm);transition:all .15s ease}.demo-modal{max-width:900px;width:95%}.demo-modal .modal-header{display:flex;align-items:center;gap:20px}.demo-phase-indicator{display:flex;gap:8px;margin-left:auto;margin-right:20px}.demo-phase-indicator .phase{padding:4px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:10px;font-family:var(--font-mono);color:var(--text-muted);transition:all .3s ease}.demo-phase-indicator .phase.active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.demo-phase-indicator .phase.completed{background:var(--accent-success);border-color:var(--accent-success);color:#fff}.demo-body{padding:16px}.demo-3d-container{position:relative;width:100%;height:400px;background:linear-gradient(135deg,#0a0d12,#101418);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;margin-bottom:16px}.demo-3d-container canvas{width:100%!important;height:100%!important}.demo-info-overlay{position:absolute;z-index:10;pointer-events:none}.demo-info-overlay.top-left{top:12px;left:12px}.demo-info-overlay.bottom-right{bottom:50px;right:12px}.demo-info-overlay .info-panel{background:#0f1218eb;border:1px solid rgba(48,54,61,.8);border-radius:var(--radius-sm);padding:10px 14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:160px}.demo-info-overlay .panel-header{font-size:9px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(48,54,61,.5);font-family:var(--font-mono)}.demo-info-overlay .panel-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0}.demo-info-overlay .panel-row .label{font-size:10px;color:var(--text-secondary);font-family:var(--font-mono)}.demo-info-overlay .panel-row .value{font-size:11px;font-weight:600;color:var(--accent-secondary);font-family:var(--font-mono)}.status-panel{min-width:180px}.status-indicator{display:flex;align-items:center;gap:8px;padding:6px 0}.status-indicator .status-icon{font-size:16px}.status-indicator .status-text{font-size:11px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono)}.status-indicator.detecting .status-text{color:var(--accent-warning)}.status-indicator.detected .status-text{color:var(--accent-success)}.detected-angle{margin-top:8px;padding-top:8px;border-top:1px solid rgba(48,54,61,.5);text-align:center}.detected-angle .angle-label{display:block;font-size:9px;color:var(--text-muted);margin-bottom:4px;font-family:var(--font-mono)}.detected-angle .angle-value{font-size:18px;font-weight:700;color:var(--accent-success);font-family:var(--font-mono)}.demo-progress-bar{position:absolute;bottom:12px;left:12px;right:12px;height:24px;background:#0f1218d9;border:1px solid rgba(48,54,61,.6);border-radius:12px;overflow:hidden;display:flex;align-items:center}.demo-progress-bar .progress-fill{position:absolute;left:0;top:0;bottom:0;width:0%;background:linear-gradient(90deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);border-radius:12px;transition:width .3s ease}.demo-progress-bar .progress-label{position:relative;z-index:1;width:100%;text-align:center;font-size:10px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono);text-shadow:0 1px 2px rgba(0,0,0,.5)}.demo-phase-description{display:flex;align-items:center;gap:16px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:12px 16px;margin-bottom:16px}.demo-phase-description .phase-icon{font-size:24px;min-width:40px;text-align:center}.demo-phase-description .phase-text h4{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.demo-phase-description .phase-text p{font-size:11px;color:var(--text-secondary);margin:0}.demo-controls{display:flex;justify-content:flex-end;gap:10px}.demo-btn{padding:8px 16px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:11px;font-family:var(--font-mono);cursor:pointer;transition:all .15s ease}.demo-btn:hover{background:var(--bg-card);border-color:var(--accent-secondary)}.demo-btn.secondary{color:var(--text-muted)}.demo-btn.primary{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.demo-btn.primary:hover{background:var(--accent-secondary)}@keyframes laserPulse{0%,to{opacity:.8}50%{opacity:1}}@keyframes sensorDetect{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes ringExpand{0%{r:8;opacity:1}to{r:25;opacity:0}}@keyframes particleFade{0%{opacity:0}50%{opacity:.8}to{opacity:0}}@keyframes directionDash{0%{stroke-dashoffset:0}to{stroke-dashoffset:30}}.demo-laser-animated{animation:laserPulse .5s ease-in-out infinite}.demo-sensor-detected{animation:sensorDetect .4s ease-out}.demo-ring-expand{animation:ringExpand 1s ease-out forwards}.demo-particle{animation:particleFade 2s ease-in-out infinite}.demo-direction-animated{animation:directionDash .5s linear infinite}.calc-step.formula{background:#1a73e814;border-left:2px solid var(--accent-primary);margin:4px 0;padding:6px 8px}.calc-step.formula .step-label{color:var(--accent-secondary)}.calc-step .step-value.highlight{color:var(--accent-success);font-weight:700;font-size:11px}.calc-section-header{display:flex;justify-content:space-between;align-items:center;padding:8px 6px;margin:12px 0 6px;background:#ffffff08;border-left:3px solid var(--accent-primary);font-family:var(--font-mono)}.calc-section-header:first-child{margin-top:0}.calc-section-header span:first-child{font-size:10px;font-weight:600;color:var(--text-primary)}.calc-section-header span:last-child{font-size:8px;color:var(--text-muted)}.confidence-bar-container{position:relative;height:24px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);overflow:hidden}.confidence-bar{height:100%;transition:width .3s ease}.confidence-value{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:10px;font-weight:600;font-family:var(--font-mono);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}#position-calc-steps{max-height:400px;overflow-y:auto}.legend-color.calculated{background:gold;border-radius:50%}.system-architecture{display:flex;gap:20px;flex-wrap:wrap}.arch-diagram{flex:1;min-width:250px;display:flex;flex-direction:column;gap:8px}.arch-row{display:flex;gap:8px;justify-content:center}.arch-box{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:8px 12px;text-align:center;border-radius:var(--radius-sm);min-width:80px}.arch-box .box-title{font-size:9px;font-weight:600;color:var(--accent-primary);font-family:var(--font-mono)}.arch-box .sensor-mini{font-size:7px;color:var(--text-muted);margin-top:4px;font-family:var(--font-mono)}.arch-center{text-align:center;padding:15px 0}.arch-center .tank-icon{font-size:12px;font-weight:700;font-family:var(--font-mono);color:var(--text-primary);background:linear-gradient(135deg,#374151,#4b5563);padding:10px 20px;border-radius:4px;border:1px solid var(--border-light);letter-spacing:2px;text-transform:uppercase}.arch-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;flex:1;min-width:150px}.stat-item{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:12px;text-align:center;border-radius:var(--radius-sm)}.stat-item.highlight{border-color:var(--accent-success);background:#34a8531a}.stat-item .stat-value{display:block;font-size:24px;font-weight:700;color:var(--text-primary);font-family:var(--font-mono)}.stat-item.highlight .stat-value{color:var(--accent-success)}.stat-item .stat-label{display:block;font-size:8px;color:var(--text-muted);margin-top:4px;text-transform:uppercase;letter-spacing:.5px}.algorithm-steps{display:flex;flex-direction:column;gap:12px}.alg-step{display:flex;gap:12px;align-items:flex-start}.step-num{width:28px;height:28px;background:var(--accent-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}.step-content{flex:1;background:var(--bg-tertiary);border:1px solid var(--border-color);padding:12px;border-radius:var(--radius-sm)}.step-content h4{font-size:11px;font-weight:600;color:var(--text-primary);margin-bottom:6px}.step-content p{font-size:10px;color:var(--text-secondary);line-height:1.5;margin-bottom:8px}.step-content code{display:block;background:var(--bg-card);color:var(--accent-secondary);padding:6px 10px;font-size:10px;font-family:var(--font-mono);border-radius:var(--radius-sm);border-left:2px solid var(--accent-primary)}.code-container{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);overflow:hidden}.code-tabs{display:flex;border-bottom:1px solid var(--border-color);background:#0000004d}.code-tab{padding:8px 16px;background:none;border:none;color:var(--text-secondary);font-size:10px;font-family:var(--font-mono);cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease}.code-tab:hover{color:var(--text-primary);background:#ffffff08}.code-tab.active{color:var(--accent-secondary);border-bottom-color:var(--accent-primary);background:#1a73e81a}.code-block{margin:0;padding:16px;overflow-x:auto;max-height:400px;overflow-y:auto;background:#0d1117}.code-block.hidden{display:none}.code-block code{font-family:var(--font-mono);font-size:11px;line-height:1.6;color:#c9d1d9;white-space:pre}.code-block code .keyword{color:#ff7b72}.code-block code .type{color:#79c0ff}.code-block code .comment{color:#8b949e;font-style:italic}.code-block code .string{color:#a5d6ff}.code-block code .number{color:#79c0ff}.legend-item.clickable{cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);transition:background .2s ease}.legend-item.clickable:hover{background:var(--accent-primary);color:#fff}.device-sensor-card{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);margin-bottom:10px;overflow:hidden}.device-sensor-card.active{border-color:var(--accent-warning);background:#fbbc040d}.device-card-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#0003;border-bottom:1px solid var(--border-color);font-family:var(--font-mono)}.device-card-header .device-name{font-size:11px;font-weight:600;color:var(--text-primary)}.device-card-header .device-angle{font-size:10px;color:var(--accent-secondary)}.device-card-header .device-status{font-size:9px;color:var(--text-muted)}.device-card-header .device-status.detecting{color:var(--accent-success)}.device-sensor-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:8px}.sensor-mini-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:6px;text-align:center}.sensor-mini-card.detecting{border-color:var(--accent-warning);background:#fbbc041a}.sensor-mini-card.saturated{border-color:var(--accent-danger);background:#ea43351a}.sensor-mini-header{font-size:9px;font-weight:600;color:var(--text-secondary);font-family:var(--font-mono);margin-bottom:4px}.sensor-mini-bar{height:24px;background:#0000004d;border-radius:2px;position:relative;margin-bottom:4px;overflow:hidden}.sensor-mini-bar .sensor-bar-fill{position:absolute;bottom:0;left:0;right:0;background:var(--accent-success);transition:height .2s ease}.sensor-mini-card.detecting .sensor-bar-fill{background:var(--accent-warning)}.sensor-mini-card.saturated .sensor-bar-fill{background:var(--accent-danger)}.sensor-mini-value{font-size:12px;font-weight:700;color:var(--text-primary);font-family:var(--font-mono)}.sensor-mini-card.detecting .sensor-mini-value{color:var(--accent-warning)}.sensor-mini-card.saturated .sensor-mini-value{color:var(--accent-danger)}.sensor-mini-irradiance{font-size:7px;color:var(--text-muted);font-family:var(--font-mono);margin-top:2px}.sensor-mini-status{font-size:7px;font-weight:600;color:var(--text-muted);text-transform:uppercase;margin-top:2px}.sensor-mini-card.detecting .sensor-mini-status{color:var(--accent-success)}.sensor-mini-card.saturated .sensor-mini-status{color:var(--accent-danger)}.device-signal-summary{display:flex;justify-content:space-around;padding:6px 12px;border-top:1px solid var(--border-color);background:#34a8530d;font-family:var(--font-mono);font-size:9px;color:var(--accent-success)}#sensor-calc-details{max-height:350px;overflow-y:auto}.panel-section.collapsible .panel-header{cursor:pointer;display:flex;justify-content:space-between;align-items:center}.collapse-icon{font-size:10px;color:var(--text-muted);transition:transform .2s ease}.panel-section.collapsed .collapse-icon{transform:rotate(-90deg)}.panel-section.collapsed .panel-content{display:none}.param-group{background:var(--bg-tertiary);border-radius:var(--radius-md);padding:10px;margin-bottom:10px;border:1px solid var(--border-color)}.param-group.calculated{background:#1a73e814;border-color:#1a73e84d}.param-group-title{font-size:10px;font-weight:600;text-transform:uppercase;color:var(--accent-primary);margin-bottom:10px;letter-spacing:.5px}.param-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding:4px 0}.param-row:last-child{margin-bottom:0}.param-row label{font-size:11px;color:var(--text-secondary);flex:1}.param-row.readonly{opacity:.85}.param-row.readonly label{color:var(--text-muted)}.param-input{display:flex;align-items:center;gap:4px}.param-input input[type=number]{width:70px;padding:4px 6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:11px;text-align:right}.param-input input[type=number]:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 2px #1a73e833}.param-input .unit{font-size:10px;color:var(--text-muted);min-width:30px}.param-value{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--accent-secondary);text-align:right}.param-row select{width:120px;padding:4px 6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:11px;cursor:pointer}.param-row select:focus{outline:none;border-color:var(--accent-primary)}.param-actions{display:flex;gap:8px;margin-top:12px}.apply-btn{flex:1;padding:8px 12px;background:var(--accent-primary);border:none;border-radius:var(--radius-md);color:#fff;font-size:11px;font-weight:600;cursor:pointer;transition:all .2s ease}.apply-btn:hover{background:var(--accent-secondary)}.reset-btn-small{padding:8px 12px;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .2s ease}.reset-btn-small:hover{border-color:var(--accent-warning);color:var(--accent-warning)}#control-panel{overflow-y:auto;max-height:calc(100vh - 36px)}.settings-button-container{padding:12px}.settings-btn{width:100%;padding:12px 16px;background:linear-gradient(180deg,#1a3a5c,#0d2137);border:1px solid #2a5a8c;border-radius:4px;color:#7cb3d9;font-size:12px;font-weight:600;letter-spacing:1px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s ease;text-transform:uppercase}.settings-btn:hover{background:linear-gradient(180deg,#2a4a6c,#1a3147);border-color:#4a8acc;color:#9dd3f9;box-shadow:0 0 15px #4a8acc4d}.settings-btn .settings-icon{font-size:16px}#settings-modal.modal-overlay{background:#000a144d;justify-content:flex-start;align-items:stretch}.settings-modal{width:480px;max-width:50vw;height:100vh;max-height:100vh;background:linear-gradient(180deg,#0a1520,#061018);border:none;border-right:2px solid #1a4a7c;border-radius:0;box-shadow:10px 0 40px #00285080;animation:slideInLeft .3s ease-out;overflow-y:auto}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(180deg,#0d2030,#081520);border-bottom:1px solid #1a3a5c}.settings-header .header-left{display:flex;align-items:center;gap:12px}.settings-header .modal-icon{font-size:24px;color:#4a9eff}.settings-header .header-title h2{font-size:16px;font-weight:600;color:#c9d9e9;letter-spacing:2px;margin:0}.settings-header .subtitle{font-size:10px;color:#5a7a9a;letter-spacing:.5px}.settings-header .header-right{display:flex;align-items:center;gap:16px}.settings-header .classification{padding:4px 12px;background:#ea433526;border:1px solid rgba(234,67,53,.4);border-radius:2px;font-size:9px;font-weight:700;color:#ea4335;letter-spacing:1px}.settings-header .modal-close{width:28px;height:28px;background:#ffffff0d;border:1px solid #2a4a6c;border-radius:4px;color:#7a9ab0;font-size:18px;cursor:pointer;transition:all .2s}.settings-header .modal-close:hover{background:#ea433533;border-color:#ea4335;color:#ea4335}.settings-body{padding:16px;overflow-y:auto;max-height:calc(100vh - 140px)}.settings-grid,.settings-column{display:flex;flex-direction:column;gap:16px}.settings-section{background:#0a1e3280;border:1px solid #1a3a5c;border-radius:4px;overflow:hidden}.section-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:linear-gradient(180deg,#0d2538,#081828);border-bottom:1px solid #1a3a5c}.section-header .section-icon{color:#4a9eff;font-size:12px}.section-header h3{font-size:11px;font-weight:600;color:#7ab3d9;letter-spacing:1.5px;margin:0}.param-card{padding:14px;border-bottom:1px solid rgba(26,58,92,.5)}.param-card:last-child{border-bottom:none}.card-title{font-size:10px;font-weight:600;color:#5a8ab0;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;padding-bottom:6px;border-bottom:1px dashed rgba(90,138,176,.3)}.param-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.param-item{display:flex;flex-direction:column;gap:4px}.param-item label{font-size:10px;color:#7a9ab0;font-weight:500}.param-item .input-group{display:flex;align-items:center;gap:6px}.param-item input[type=number]{width:80px;padding:6px 8px;background:#061018;border:1px solid #2a4a6c;border-radius:3px;color:#c9d9e9;font-family:var(--font-mono);font-size:12px;text-align:right}.param-item input[type=number]:focus{outline:none;border-color:#4a9eff;box-shadow:0 0 8px #4a9eff4d}.param-item .unit{font-size:10px;color:#5a7a9a;min-width:30px}.param-item .param-hint{font-size:9px;color:#4a6a8a;font-style:italic}.param-item.readonly{opacity:.9}.param-item .value-display{padding:6px 10px;background:#4a9eff1a;border:1px solid rgba(74,158,255,.3);border-radius:3px;color:#7cb3ff;font-family:var(--font-mono);font-size:12px;font-weight:600}.param-item .value-display.large{font-size:14px;color:#4aff9e;background:#4aff9e1a;border-color:#4aff9e4d}.param-item.highlight .value-display{animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 5px #4aff9e4d}50%{box-shadow:0 0 15px #4aff9e80}}.weather-selector{margin-bottom:12px}.weather-selector select{width:100%;padding:10px 12px;background:#061018;border:1px solid #2a4a6c;border-radius:3px;color:#c9d9e9;font-size:11px;font-weight:500;cursor:pointer}.weather-selector select:focus{outline:none;border-color:#4a9eff}.weather-params{display:flex;flex-direction:column;gap:8px}.weather-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#00142880;border-radius:3px}.weather-label{font-size:10px;color:#6a8aa0}.weather-value{font-family:var(--font-mono);font-size:11px;font-weight:600;color:#9ac9e9}.threat-card{border:1px solid #4a2a2a!important;background:linear-gradient(135deg,#280a0a4d,#14050580)!important}.threat-selector{margin-bottom:12px}.threat-selector select{width:100%;padding:10px 12px;background:#180808;border:1px solid #6c2a2a;border-radius:3px;color:#e9c9c9;font-size:11px;font-weight:500;cursor:pointer}.threat-selector select:focus{outline:none;border-color:#ff4a4a}.threat-info{display:flex;flex-direction:column;gap:8px}.threat-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#280a0a80;border-radius:3px}.threat-label{font-size:10px;color:#a06a6a}.threat-value{font-family:var(--font-mono);font-size:11px;font-weight:600;color:#e99a9a}.threat-level-indicator{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#3c141499;border-radius:3px;margin-top:4px}.level-label{font-size:10px;color:#a06a6a;font-weight:500}.level-badge{padding:4px 10px;border-radius:3px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.level-badge.low{background:#1a4a1a;color:#4aff4a;border:1px solid #2a6a2a}.level-badge.medium{background:#4a4a1a;color:#ffff4a;border:1px solid #6a6a2a}.level-badge.critical{background:#6a1a1a;color:#ff4a4a;border:1px solid #8a2a2a;animation:pulse-danger 1s infinite}.level-badge.extreme{background:#8a0a0a;color:#fff;border:1px solid #aa2a2a;animation:pulse-danger .5s infinite}.level-badge.recon{background:#1a3a4a;color:#4affff;border:1px solid #2a5a6a}@keyframes pulse-danger{0%,to{opacity:1}50%{opacity:.6}}.threat-analysis-panel{border:1px solid #4a2a2a!important;background:linear-gradient(135deg,#1e0a0acc,#0f0505e6)!important}.threat-badge{background:#6a1a1a!important;color:#ff6a6a!important}.threat-waiting{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px;text-align:center}.waiting-icon{font-size:48px;margin-bottom:12px;animation:radar-pulse 2s infinite}.waiting-text{font-size:14px;font-weight:600;color:#8a9a9a;margin-bottom:6px}.waiting-subtext{font-size:10px;color:#5a6a6a;line-height:1.4}@keyframes radar-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.threat-identification{display:flex;flex-direction:column;align-items:center;padding:12px;background:#280f0f99;border-radius:4px;margin-bottom:12px}.threat-icon-large{font-size:32px;margin-bottom:6px}.threat-name-large{font-size:14px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:1px}.threat-level-display{margin-top:8px}.level-indicator{padding:4px 12px;border-radius:3px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.level-indicator.low{background:#1a4a1a;color:#4aff4a;border:1px solid #2a6a2a}.level-indicator.medium{background:#4a4a1a;color:#ffff4a;border:1px solid #6a6a2a}.level-indicator.critical{background:#6a1a1a;color:#ff4a4a;border:1px solid #8a2a2a;animation:pulse-danger 1s infinite}.level-indicator.extreme{background:#8a0a0a;color:#fff;border:1px solid #aa2a2a;animation:pulse-danger .5s infinite}.level-indicator.recon{background:#1a3a4a;color:#4affff;border:1px solid #2a5a6a}.pulse-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.pulse-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#280f0f80;border-radius:3px;border:1px solid rgba(100,40,40,.3)}.pulse-label{font-size:9px;color:#a06a6a}.pulse-value{font-family:var(--font-mono);font-size:10px;font-weight:600;color:#e99a9a}.pulse-graph-container{background:#140505cc;border:1px solid rgba(100,40,40,.4);border-radius:4px;padding:10px;margin-bottom:12px}.pulse-graph-title{font-size:10px;color:#a06a6a;margin-bottom:8px;text-align:center;text-transform:uppercase;letter-spacing:1px}#pulse-pattern-canvas{width:100%;height:60px;background:#0a0505;border-radius:2px}.pulse-graph-labels{display:flex;justify-content:space-between;font-size:8px;color:#6a4a4a;margin-top:4px}.threat-action{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#3c141499;border-radius:4px;border-left:3px solid #ff4a4a}.action-icon{font-size:16px}.action-text{font-size:10px;color:#e9a0a0;line-height:1.4}.calc-display{padding:14px;display:flex;flex-direction:column;gap:10px}.calc-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:linear-gradient(90deg,#4a9eff0d,#4a9eff1a);border:1px solid rgba(74,158,255,.2);border-radius:3px}.calc-label{font-size:10px;color:#7a9ab0;font-weight:500}.calc-value{font-family:var(--font-mono);font-size:12px;font-weight:600;color:#7cb3ff}.calc-value.status{color:#4aff9e}.settings-footer{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:linear-gradient(180deg,#081520,#050d15);border-top:1px solid #1a3a5c}.footer-info{display:flex;gap:20px}.info-item{font-size:10px;color:#5a7a9a}.info-item strong{color:#8ab3d9}.footer-actions{display:flex;gap:10px}.action-btn{display:flex;align-items:center;gap:6px;padding:10px 20px;border-radius:4px;font-size:11px;font-weight:600;letter-spacing:1px;cursor:pointer;transition:all .2s ease}.action-btn.secondary{background:transparent;border:1px solid #3a5a7c;color:#7a9ab0}.action-btn.secondary:hover{border-color:#fbbf24;color:#fbbf24}.action-btn.primary{background:linear-gradient(180deg,#1a6a3a,#0d4020);border:1px solid #2a8a4a;color:#8fd9a9}.action-btn.primary:hover{background:linear-gradient(180deg,#2a7a4a,#1a5030);border-color:#4aaa6a;color:#aff9c9;box-shadow:0 0 15px #4aaa6a66}@media (max-width: 900px){.settings-grid{grid-template-columns:1fr}.settings-modal{width:95vw}}.label-row{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}.label-row.compact{margin-bottom:0}.help-btn{width:16px;height:16px;padding:0;background:#4a9eff26;border:1px solid rgba(74,158,255,.4);border-radius:50%;color:#4a9eff;font-size:10px;font-weight:700;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;flex-shrink:0}.help-btn:hover{background:#4a9eff4d;border-color:#4a9eff;transform:scale(1.1);box-shadow:0 0 8px #4a9eff80}.help-btn.small{width:14px;height:14px;font-size:9px}.help-modal-overlay{z-index:10001}.help-modal{width:500px;max-width:90vw;max-height:80vh;background:linear-gradient(180deg,#0c1a28,#081018);border:1px solid #2a5a8c;border-radius:8px;box-shadow:0 0 40px #003c7899,0 0 100px #4a9eff33;overflow:hidden}.help-modal-header{display:flex;align-items:center;gap:12px;padding:16px 20px;background:linear-gradient(180deg,#0d2538,#081828);border-bottom:1px solid #2a5a8c}.help-modal-header .help-icon{font-size:24px}.help-modal-header h3{flex:1;font-size:14px;font-weight:600;color:#c9d9e9;letter-spacing:1px;margin:0}.help-close{width:28px;height:28px;background:#ffffff0d;border:1px solid #3a5a7c;border-radius:4px;color:#7a9ab0;font-size:18px;cursor:pointer;transition:all .2s}.help-close:hover{background:#ea433533;border-color:#ea4335;color:#ea4335}.help-modal-body{padding:20px;max-height:50vh;overflow-y:auto;color:#a9c9e9;font-size:13px;line-height:1.7}.help-modal-body h4{color:#7cb3ff;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin:16px 0 8px;padding-bottom:6px;border-bottom:1px dashed rgba(124,179,255,.3)}.help-modal-body h4:first-child{margin-top:0}.help-modal-body p{margin:0 0 12px}.help-modal-body ul{margin:8px 0;padding-left:20px}.help-modal-body li{margin:4px 0}.help-modal-body code{background:#4a9eff26;border:1px solid rgba(74,158,255,.3);border-radius:3px;padding:2px 6px;font-family:var(--font-mono);font-size:11px;color:#7cb3ff}.help-modal-body .formula{display:block;background:#0a1e32cc;border:1px solid #1a3a5c;border-radius:4px;padding:12px 16px;margin:12px 0;font-family:var(--font-mono);font-size:13px;color:#4aff9e;text-align:center}.help-modal-body .highlight-box{background:#fbbf241a;border:1px solid rgba(251,191,36,.3);border-radius:4px;padding:10px 14px;margin:12px 0;color:#fbbf24;font-size:12px}.help-modal-body .highlight-box strong{color:#fcd34d}.help-modal-body table{width:100%;border-collapse:collapse;margin:12px 0;font-size:11px}.help-modal-body th,.help-modal-body td{padding:8px 10px;border:1px solid #1a3a5c;text-align:left}.help-modal-body th{background:#4a9eff1a;color:#7cb3ff;font-weight:600}.help-modal-body td{background:#0a1e3280}.help-modal-footer{padding:14px 20px;background:linear-gradient(180deg,#081520,#050d15);border-top:1px solid #1a3a5c;display:flex;justify-content:flex-end}.help-ok-btn{padding:10px 24px;background:linear-gradient(180deg,#1a5a8a,#0d3a5a);border:1px solid #2a7aaa;border-radius:4px;color:#9dd3f9;font-size:11px;font-weight:600;letter-spacing:1px;cursor:pointer;transition:all .2s ease}.help-ok-btn:hover{background:linear-gradient(180deg,#2a6a9a,#1a4a6a);border-color:#4a9acc;color:#bdf3ff}.param-grid.two-col{grid-template-columns:1fr 1fr}@media (max-width: 768px){.settings-modal{width:100vw;max-width:100vw}}.mode-selector{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border-color)}.mode-selector label{display:block;margin-bottom:8px;font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.mode-buttons{display:flex;gap:4px}.mode-btn{flex:1;padding:8px 6px;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-secondary);font-size:10px;font-weight:500;cursor:pointer;transition:all .2s ease;font-family:var(--font-mono)}.mode-btn:hover{background:var(--bg-card);color:var(--text-primary)}.mode-btn.active{background:var(--accent-danger);border-color:var(--accent-danger);color:#fff}#fixed-controls .fixed-info{margin-top:12px;padding:10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-left:3px solid var(--accent-danger)}#fixed-controls .info-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:11px}#fixed-controls .info-row span:first-child{color:var(--text-secondary)}#fixed-controls .info-row span:last-child{font-family:var(--font-mono);color:var(--text-primary);font-weight:600}#accuracy-test-panel .test-badge{background:#c60;color:#fff}#accuracy-test-panel .test-info{padding:8px;background:var(--bg-tertiary);border-left:2px solid #cc6600;margin-bottom:10px}#accuracy-test-panel .test-info small{color:var(--text-secondary);font-size:10px;line-height:1.4}.test-controls{display:flex;gap:6px;margin-bottom:10px}.test-btn{flex:1;padding:8px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);font-size:10px;font-weight:600;cursor:pointer;transition:all .2s ease;font-family:var(--font-mono)}.test-btn:hover{background:var(--bg-card);border-color:var(--border-light)}.test-btn.secondary{color:var(--text-secondary)}.test-results{max-height:150px;overflow-y:auto;margin-bottom:10px}.test-result-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;background:var(--bg-tertiary);border:1px solid var(--border-color);margin-bottom:4px;font-size:10px;font-family:var(--font-mono)}.test-result-item .shot-num{color:var(--text-secondary);min-width:30px}.test-result-item .shot-input{color:var(--text-primary)}.test-result-item .shot-calc{color:#fa0}.test-result-item .shot-error{font-weight:600}.test-result-item .shot-error.good{color:#0c6}.test-result-item .shot-error.moderate{color:#fa0}.test-result-item .shot-error.poor{color:#c00}.test-summary{padding:10px;background:var(--bg-card);border:1px solid var(--border-color)}.test-summary .summary-row{display:flex;justify-content:space-between;padding:4px 0;font-size:11px}.test-summary .summary-row span:first-child{color:var(--text-secondary)}.test-summary .summary-row span:last-child{font-family:var(--font-mono);font-weight:600}.test-summary .summary-row.highlight{margin-top:6px;padding-top:8px;border-top:1px solid var(--border-color)}.test-summary .summary-row.highlight span:last-child{color:#0c6;font-size:13px}.fixed-source-marker{position:absolute;pointer-events:none}#sensor-angle-modal{display:none;position:fixed;top:80px;right:20px;z-index:9999;pointer-events:none}#sensor-angle-modal.active{display:block}.sensor-angle-modal-content{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;width:320px;box-shadow:0 10px 40px #000c;pointer-events:auto;animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.sensor-angle-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--bg-header);border-bottom:1px solid var(--border-color);border-radius:8px 8px 0 0;cursor:grab;-webkit-user-select:none;user-select:none}.sensor-angle-header:active{cursor:grabbing}.sensor-angle-header h3{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}.sensor-angle-body{padding:16px}.sensor-info-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:12px}.sensor-info-label{color:var(--text-secondary)}.sensor-info-value{font-family:var(--font-mono);font-weight:600;color:#0f8}.sensor-preview-container{margin:12px 0;background:#000;border:1px solid var(--border-color);border-radius:4px;overflow:hidden}#sensor-preview-canvas{display:block;width:100%;height:auto}.sensor-angle-controls{display:flex;align-items:center;justify-content:center;gap:6px;margin:12px 0}.angle-btn{background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);padding:8px 10px;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;transition:all .15s ease}.angle-btn:hover{background:var(--border-light);border-color:#0f8}.angle-btn:active{transform:scale(.95)}.angle-left-10,.angle-right-10{background:var(--bg-secondary)}.angle-display{background:#000;border:2px solid #00ff88;padding:8px 16px;border-radius:4px;min-width:80px;text-align:center}.angle-display span{font-family:var(--font-mono);font-size:18px;font-weight:700;color:#0f8}.sensor-angle-range{margin:12px 0}.sensor-angle-range input[type=range]{width:100%;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-tertiary);border-radius:3px;outline:none}.sensor-angle-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;background:#0f8;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0f86}.sensor-angle-actions{display:flex;gap:10px;margin-top:16px}.action-btn{flex:1;padding:10px 16px;border:none;border-radius:4px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}.reset-btn{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color)}.reset-btn:hover{background:var(--border-light);color:var(--text-primary)}.save-btn{background:#0f8;color:#000}.save-btn:hover{background:#00cc6a;box-shadow:0 4px 12px #00ff884d}.export-pdf-container{margin-top:10px}.export-pdf-btn{width:100%;padding:12px 16px;background:linear-gradient(135deg,#3498db,#2980b9);border:none;border-radius:6px;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .3s ease}.export-pdf-btn:hover{background:linear-gradient(135deg,#2980b9,#1f6dad);box-shadow:0 4px 12px #3498db66;transform:translateY(-1px)}.export-pdf-btn:active{transform:translateY(0)}.coverage-analysis-container{margin-top:10px}.coverage-analysis-btn{width:100%;padding:12px 16px;background:linear-gradient(135deg,#9b59b6,#8e44ad);border:none;border-radius:6px;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .3s ease}.coverage-analysis-btn:hover{background:linear-gradient(135deg,#8e44ad,#7d3c98);box-shadow:0 4px 12px #9b59b666;transform:translateY(-1px)}.coverage-analysis-btn.active{background:linear-gradient(135deg,#27ae60,#2ecc71);box-shadow:0 0 15px #2ecc7180}.coverage-panel{position:fixed;top:60px;right:280px;width:320px;max-height:calc(100vh - 80px);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;z-index:150;box-shadow:0 8px 32px #00000080;overflow:hidden}.coverage-panel-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.coverage-panel-header h3{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}.coverage-panel-header .panel-close{width:24px;height:24px;background:transparent;border:1px solid var(--border-color);border-radius:4px;color:var(--text-secondary);cursor:pointer;font-size:16px;line-height:1;transition:all .2s ease}.coverage-panel-header .panel-close:hover{background:var(--accent-danger);border-color:var(--accent-danger);color:#fff}.coverage-panel-body{padding:16px;overflow-y:auto;max-height:calc(100vh - 160px)}.coverage-radar-container{position:relative;width:280px;height:280px;margin:0 auto 16px}#coverage-radar-canvas{width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,#1a1a2e,#0a0a14)}.radar-center-info{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.radar-center-info span{display:block;font-family:var(--font-mono);font-size:24px;font-weight:700;color:#0f8}.radar-center-info small{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}.critical-angles-section{margin-bottom:16px}.critical-angles-section h4{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border-color)}.critical-list{max-height:100px;overflow-y:auto}.critical-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#ff64641a;border-left:3px solid #ff6464;margin-bottom:4px;border-radius:0 4px 4px 0}.critical-item.warning{background:#ffc8641a;border-left-color:#ffc864}.critical-item .angle-range{font-family:var(--font-mono);font-size:12px;color:var(--text-primary)}.critical-item .overlap-count{font-size:11px;color:var(--text-muted)}.no-critical{padding:10px;text-align:center;color:#0f8;font-size:12px;background:#00ff881a;border-radius:4px}.coverage-stats{background:var(--bg-tertiary);border-radius:6px;padding:12px;margin-bottom:16px}.stat-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border-color)}.stat-row:last-child{border-bottom:none}.stat-row .stat-label{font-size:11px;color:var(--text-secondary)}.stat-row .stat-value{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--text-primary)}.stat-row .stat-value.danger{color:#ff6464}.angle-detail-section{margin-bottom:16px}.angle-detail-section h4{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.angle-input-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.angle-input-row label{font-size:12px;color:var(--text-muted)}.angle-input-row input{width:70px;padding:6px 10px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);font-family:var(--font-mono);font-size:13px;text-align:center}.angle-input-row span{color:var(--text-muted);font-size:12px}.angle-detail-info{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;padding:10px;font-size:11px}.angle-detail-info .detail-row{display:flex;justify-content:space-between;padding:3px 0}.angle-detail-info .detail-row .label{color:var(--text-muted)}.angle-detail-info .detail-row .value{font-family:var(--font-mono);color:var(--text-primary)}.angle-detail-info .sensors-list{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color)}.angle-detail-info .sensor-badge{display:inline-block;padding:2px 6px;margin:2px;background:#0f83;border:1px solid rgba(0,255,136,.4);border-radius:3px;font-size:10px;color:#0f8}.refresh-btn{width:100%;padding:10px 16px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.refresh-btn:hover{background:var(--border-light);border-color:#0f8;color:#0f8}.smoke-badge{background:#ffa50033!important;color:orange!important;border:1px solid rgba(255,165,0,.4)!important}.smoke-launcher-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.smoke-launcher-item{background:#ffa5000d;border:1px solid rgba(255,165,0,.15);border-radius:6px;padding:8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.smoke-launcher-label{font-size:10px;font-weight:700;color:orange;letter-spacing:1px;font-family:JetBrains Mono,monospace}.smoke-tubes-visual{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:4px}.tube-dot{width:12px;height:12px;border-radius:50%;background:radial-gradient(circle,#3a3a3a 40%,#1a1a1a);border:1.5px solid #555;display:inline-block;transition:all .3s ease}.smoke-launcher-item.fired .tube-dot{background:radial-gradient(circle,#222 40%,#111);border-color:#333;box-shadow:inset 0 0 3px #000c}.smoke-status{font-size:10px;font-weight:700;font-family:JetBrains Mono,monospace;padding:2px 8px;border-radius:3px;letter-spacing:.5px}.smoke-status.ready{color:#0f8;background:#00ff881a;border:1px solid rgba(0,255,136,.3)}.smoke-status.fired{color:#f44;background:#ff44441a;border:1px solid rgba(255,68,68,.3)}.smoke-fire-side-btn{width:100%;padding:4px 8px;background:#ffa50026;border:1px solid rgba(255,165,0,.3);border-radius:4px;color:orange;font-size:10px;font-weight:700;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .2s ease;letter-spacing:1px}.smoke-fire-side-btn:hover{background:#ffa5004d;border-color:orange;box-shadow:0 0 8px #ffa50033}.smoke-fire-side-btn:disabled{opacity:.3;cursor:not-allowed}.smoke-info-row{text-align:center;margin-bottom:8px}.smoke-info-row small{color:#888;font-size:10px;font-family:JetBrains Mono,monospace}.smoke-actions{display:flex;gap:6px}.smoke-fire-btn{flex:2;padding:8px 12px;background:linear-gradient(135deg,#ff8c004d,#ff50004d);border:1px solid rgba(255,140,0,.5);border-radius:6px;color:#ff8c00;font-size:11px;font-weight:700;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .3s ease;letter-spacing:1px;text-transform:uppercase}.smoke-fire-btn:hover{background:linear-gradient(135deg,#ff8c0080,#ff500080);border-color:#ff8c00;box-shadow:0 0 15px #ff8c004d;transform:translateY(-1px)}.smoke-fire-btn:active{transform:translateY(0);box-shadow:0 0 20px #ff8c0080}.smoke-fire-btn:disabled{opacity:.3;cursor:not-allowed;transform:none;box-shadow:none}.smoke-reload-btn{flex:1;padding:8px 10px;background:#64646433;border:1px solid rgba(100,100,100,.3);border-radius:6px;color:#aaa;font-size:10px;font-weight:600;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .2s ease}.smoke-reload-btn:hover:not(:disabled){background:#64646466;border-color:#aaa;color:#fff}.smoke-reload-btn:disabled{opacity:.3;cursor:not-allowed}.panel-header-actions{display:flex;align-items:center;gap:6px}.smoke-settings-icon{width:28px;height:22px;background:#ffa5001f;border:1px solid rgba(255,165,0,.3);border-radius:3px;color:#ff8c00;font-size:8px;font-weight:800;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .25s ease;display:flex;align-items:center;justify-content:center;letter-spacing:.5px}.smoke-settings-icon:hover{background:#ffa50040;border-color:#ff8c00;box-shadow:0 0 8px #ff8c004d;color:#fa0}.smoke-settings-modal{max-width:960px;width:95%}.smoke-settings-header{background:linear-gradient(135deg,#1a1008,#2a1a0a)!important;border-bottom:2px solid rgba(255,140,0,.3)!important}.smoke-icon{background:linear-gradient(135deg,#ff8c00,#e65100)!important;color:#fff!important}.smoke-settings-body{padding:16px;max-height:70vh;overflow-y:auto}.smoke-settings-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.smoke-settings-column{display:flex;flex-direction:column;gap:14px}.smoke-param-section{background:#ff8c0008;border:1px solid rgba(255,140,0,.12);border-radius:8px;overflow:hidden}.smoke-section-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#ff8c0014;border-bottom:1px solid rgba(255,140,0,.1)}.smoke-section-icon{width:22px;height:22px;background:linear-gradient(135deg,#ff8c00,#e65100);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;font-family:JetBrains Mono,monospace;flex-shrink:0}.smoke-section-header h3{font-size:10px;font-weight:700;color:#ff8c00;letter-spacing:.8px;margin:0;font-family:JetBrains Mono,monospace}.smoke-param-grid{padding:10px;display:flex;flex-direction:column;gap:8px}.smoke-param-item{display:flex;flex-direction:column;gap:3px}.smoke-param-item label{font-size:10px;color:#999;font-weight:500;font-family:Inter,sans-serif}.smoke-input-group{display:flex;align-items:center;gap:4px}.smoke-input-group input,.smoke-input-group select{flex:1;background:#0006;border:1px solid rgba(255,140,0,.2);border-radius:4px;padding:5px 8px;color:#e0e0e0;font-size:12px;font-family:JetBrains Mono,monospace;font-weight:500;transition:border-color .2s;outline:none}.smoke-input-group input:focus,.smoke-input-group select:focus{border-color:#ff8c00;box-shadow:0 0 0 1px #ff8c0026}.smoke-input-group select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:20px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23ff8c00'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.smoke-input-group .unit{font-size:10px;color:#666;font-family:JetBrains Mono,monospace;min-width:28px;text-align:right;font-weight:600}.smoke-settings-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#0000004d;border-top:1px solid rgba(255,140,0,.12);margin:14px -16px -16px;border-radius:0 0 12px 12px}.smoke-footer-info{display:flex;align-items:center;gap:6px}.smoke-footer-label{font-size:9px;color:#666;font-weight:600;font-family:JetBrains Mono,monospace;letter-spacing:.5px}.smoke-footer-value{font-size:9px;color:#888;font-family:JetBrains Mono,monospace}.smoke-footer-actions{display:flex;gap:8px}.smoke-apply-btn{padding:8px 24px;background:linear-gradient(135deg,#ff8c0066,#ff500066);border:1px solid rgba(255,140,0,.6);border-radius:6px;color:#ff8c00;font-size:12px;font-weight:700;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .25s ease;letter-spacing:1px}.smoke-apply-btn:hover{background:linear-gradient(135deg,#ff8c0099,#ff500099);border-color:#ff8c00;box-shadow:0 0 15px #ff8c004d;transform:translateY(-1px)}.smoke-cancel-btn{padding:8px 18px;background:#64646433;border:1px solid rgba(100,100,100,.3);border-radius:6px;color:#888;font-size:11px;font-weight:600;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all .2s ease}.smoke-cancel-btn:hover{background:#64646466;border-color:#999;color:#ccc}@media (max-width: 900px){.smoke-settings-grid{grid-template-columns:1fr}}.z-axis-btn{background:linear-gradient(135deg,#1a4a5a,#0d3a4a);border-color:#2a7a8a;margin-bottom:10px}.z-axis-btn:hover{background:linear-gradient(135deg,#2a5a6a,#1a4a5a);border-color:#3a9aaa}.z-axis-modal{width:550px;max-width:90vw;background:linear-gradient(180deg,#0c1a28,#081018);border:1px solid #2a5a8c;border-radius:8px;box-shadow:0 0 40px #003c7899}.z-axis-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(180deg,#0d2538,#081828);border-bottom:1px solid #2a5a8c}.z-axis-modal .modal-header h3{margin:0;color:#4ecdc4;font-size:14px;letter-spacing:1px;font-weight:600}.z-axis-modal .modal-close{width:28px;height:28px;background:#ffffff0d;border:1px solid #3a5a7c;border-radius:4px;color:#7a9ab0;font-size:18px;cursor:pointer;transition:all .2s}.z-axis-modal .modal-close:hover{background:#ea433533;border-color:#ea4335;color:#ea4335}.z-axis-modal .modal-body{padding:20px;display:flex;flex-direction:column;align-items:center}#z-axis-2d-canvas{border:1px solid #1a3a5c;border-radius:8px;background:#050a10;box-shadow:0 0 20px #001e3c80}.z-axis-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid #1a3a5c}.legend-item{display:flex;align-items:center;gap:6px;font-size:11px;color:#a9c9e9}.legend-color{width:12px;height:12px;border-radius:2px}:root{--bg-primary: #e7edf3;--bg-secondary: #f7f9fc;--bg-tertiary: #e8eef5;--bg-card: #ffffff;--bg-panel: #eef3f8;--bg-header: #f8fafc;--text-primary: #16202e;--text-secondary: #485669;--text-muted: #7a8797;--accent-primary: #315a7d;--accent-secondary: #1f7a4d;--accent-success: #18804c;--accent-warning: #b7791f;--accent-danger: #b42318;--border-color: rgba(79, 96, 117, .22);--border-light: rgba(79, 96, 117, .36);--radius-sm: 4px;--radius-md: 8px}body{background:#e7edf3;color:var(--text-primary)}#loading-screen{background:linear-gradient(180deg,#f8fafc,#e6edf5)}.loading-logo .logo-box{background:#fff;border-color:#b7c4d2;color:#203044;box-shadow:0 16px 40px #2d3c4e24}.loading-logo .logo-subtitle,.loading-text{color:#64748b}.loading-bar{background:#dbe3ec;border-color:#bfccd9}.loading-progress{background:linear-gradient(90deg,#315a7d,#1f7a4d);box-shadow:none}.radar-ring{border-color:#315a7d47}.radar-sweep{background:conic-gradient(from 0deg,transparent 0deg,rgba(49,90,125,.22) 35deg,rgba(49,90,125,.08) 70deg,transparent 100deg)}.radar-center{background:#315a7d;box-shadow:0 0 18px #315a7d61}#app{grid-template-columns:304px minmax(0,1fr) 292px}#header-bar{height:48px;background:#f8fafcf5;border-bottom:1px solid rgba(95,113,134,.24);box-shadow:0 8px 26px #212d3d1f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}#header-bar .logo-icon{background:#fff;border-color:#aebccc;color:#213247;border-radius:6px;box-shadow:inset 0 1px #ffffffe6}#header-bar .logo-text{color:#142033;letter-spacing:1.2px}#header-bar .logo-text span{color:#68778a}#header-bar .status-bar{gap:8px}#header-bar .status-item,.mode-toggle-container{background:#fff;border:1px solid rgba(95,113,134,.26);border-radius:6px;color:#405066;box-shadow:0 1px 2px #212d3d0f}#header-bar .status-dot{background:#1f7a4d;box-shadow:none}.system-link{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:5px;background:#edf4fa;border:1px solid #b7c7d6;color:#264a66;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.4px}.system-link:hover{background:#e0edf7;border-color:#8da8bf}.project-form{display:grid;gap:7px;padding:10px;margin-bottom:10px;background:#f6f9fc;border:1px solid rgba(95,113,134,.24);border-radius:7px}.project-form-title{color:#213247;font-size:11px;font-weight:800;letter-spacing:.8px;text-transform:uppercase}.project-picker{display:grid;gap:6px;padding:8px;background:#eef4f9;border:1px solid rgba(95,113,134,.2);border-radius:6px}.project-picker label{color:#5c6a7d;font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}.project-picker-row,.project-picker-actions{display:flex;gap:6px}.project-picker select{min-width:0;flex:1;min-height:30px;padding:0 8px;background:#fff;border:1px solid #bcc9d8;border-radius:5px;color:#172235;font-family:var(--font-mono);font-size:10px}.project-picker button{min-height:30px;padding:0 8px;background:#fff;border:1px solid #b9c7d5;border-radius:5px;color:#24445f;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.35px;cursor:pointer;white-space:nowrap}.project-picker-actions button{flex:1}.project-picker button:disabled,.project-picker select:disabled{cursor:not-allowed;opacity:.55}#project-picker-status{min-height:14px;color:#667588;font-size:10px;line-height:1.35}.project-form input,.save-panel input[type=password]{width:100%;min-height:32px;padding:0 9px;background:#fff;border:1px solid #bcc9d8;border-radius:5px;color:#172235;font-family:var(--font-mono);font-size:11px}.project-form .project-option-toggle input{width:14px;height:14px;min-height:0;padding:0;margin:0}.project-form input:focus,.save-panel input[type=password]:focus{outline:2px solid rgba(49,90,125,.18);border-color:#6f8ea8}.project-option-toggle{display:flex;align-items:center;gap:8px;min-height:30px;padding:7px 8px;background:#fff;border:1px solid rgba(95,113,134,.2);border-radius:5px;color:#32445b;font-size:11px;font-weight:700}.project-option-toggle input{width:14px;height:14px;min-height:0;padding:0;margin:0}#project-save-btn{min-height:34px;width:100%;margin-top:2px;border:1px solid #1f7a4d;border-radius:5px;background:#1f7a4d;color:#fff;font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:.45px;cursor:pointer}#project-save-btn:hover{background:#17643e;border-color:#17643e}#project-save-btn:disabled{cursor:not-allowed;opacity:.62}.project-meta-row,.project-link-actions{display:flex;gap:6px;align-items:center}.project-meta-row{justify-content:space-between;color:#627086;font-size:10px;font-family:var(--font-mono)}.project-link-actions button,.project-action-row button,.project-title-actions button,.project-password-card button{min-height:30px;padding:0 10px;border:1px solid #b9c7d5;border-radius:5px;background:#fff;color:#24445f;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.35px;cursor:pointer}.project-link-actions button{flex:1}.project-link-actions button:disabled,.project-action-row button:disabled,.project-title-actions button:disabled{cursor:not-allowed;opacity:.48}.project-summary-card{display:grid;grid-template-columns:1fr 1fr;gap:7px}.project-summary-card>div{min-width:0;padding:8px;background:#f6f9fc;border:1px solid rgba(95,113,134,.18);border-radius:6px}.project-summary-card span,.project-metrics span,.project-meta-list span{display:block;color:#6b7788;font-size:9px;font-weight:700;letter-spacing:.45px;text-transform:uppercase}.project-summary-card strong,.project-metrics strong,.project-meta-list strong{display:block;margin-top:4px;color:#172235;font-size:12px;line-height:1.25;overflow-wrap:anywhere}.project-action-row{display:flex;gap:7px;margin-top:9px}.project-action-row button{flex:1}.runtime-project-picker{display:grid;gap:7px;margin-top:9px;padding:9px;background:#eef4f9;border:1px solid rgba(95,113,134,.2);border-radius:6px}.runtime-project-picker label{color:#5c6a7d;font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}.runtime-project-picker-row{display:flex;gap:6px}.runtime-project-picker select{min-width:0;flex:1;min-height:30px;padding:0 8px;background:#fff;border:1px solid #bcc9d8;border-radius:5px;color:#172235;font-family:var(--font-mono);font-size:10px}.runtime-project-picker button{min-height:30px;padding:0 8px;background:#fff;border:1px solid #b9c7d5;border-radius:5px;color:#24445f;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.35px;cursor:pointer;white-space:nowrap}#runtime-project-load-btn{width:100%;background:#315a7d;border-color:#315a7d;color:#fff}.runtime-project-picker button:disabled,.runtime-project-picker select:disabled{cursor:not-allowed;opacity:.55}.project-runtime-status{margin-top:8px;color:#6a7888;font-size:11px;line-height:1.35}.project-page-body{min-height:100vh;background:#e9f0f6;color:#172235;overflow:auto}#project-page{min-height:100vh}.project-topbar{position:sticky;top:0;z-index:20;height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:#f8fafcf5;border-bottom:1px solid rgba(95,113,134,.24);box-shadow:0 8px 24px #212d3d1a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.project-brand{display:flex;align-items:center;gap:12px}.project-brand .logo-icon{width:42px;height:32px;display:grid;place-items:center;background:#fff;border:1px solid #aebccc;border-radius:6px;color:#213247;font-family:var(--font-mono);font-weight:800;letter-spacing:1px}.project-brand strong{display:block;font-size:13px;letter-spacing:1px}.project-brand span{display:block;margin-top:2px;color:#657386;font-size:11px}.project-nav{display:flex;gap:8px}.project-nav a{min-height:30px;display:inline-flex;align-items:center;padding:0 12px;background:#edf4fa;border:1px solid #b7c7d6;border-radius:5px;color:#264a66;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.4px}.project-shell{width:min(1380px,calc(100vw - 32px));margin:0 auto;padding:24px 0 30px}.project-title-band{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:22px 0 18px}.project-kicker{color:#315a7d;font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:1.2px}.project-title-band h1{margin:6px 0;color:#142033;font-size:44px;font-weight:800;letter-spacing:0;line-height:1.02}.project-title-band p{max-width:760px;margin:0;color:#5f6d7e;font-size:14px;line-height:1.45}.project-title-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.project-title-actions button{min-height:34px;background:#fff}.project-title-actions button:last-child{background:#315a7d;border-color:#315a7d;color:#fff}.project-password-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;margin-bottom:14px;background:#fff8ea;border:1px solid #e8c775;border-radius:8px}.project-manager-card{display:grid;grid-template-columns:minmax(220px,.55fr) minmax(420px,1fr);align-items:center;gap:14px;padding:14px;margin-bottom:14px;background:#fff;border:1px solid rgba(95,113,134,.24);border-radius:8px;box-shadow:0 10px 24px #212d3d12}.project-manager-card strong{display:block;color:#1a2738;font-size:13px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}.project-manager-card span{display:block;margin-top:4px;color:#667588;font-size:12px;line-height:1.35}.project-manager-controls{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px}.project-manager-controls select{min-width:0;min-height:34px;padding:0 10px;background:#f8fafc;border:1px solid #bcc9d8;border-radius:5px;color:#172235;font-family:var(--font-mono);font-size:11px}.project-manager-controls button{min-height:34px;padding:0 12px;border:1px solid #b9c7d5;border-radius:5px;background:#fff;color:#24445f;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.35px;cursor:pointer;white-space:nowrap}.project-manager-controls button:last-child{background:#315a7d;border-color:#315a7d;color:#fff}.project-manager-controls button:disabled,.project-manager-controls select:disabled{cursor:not-allowed;opacity:.55}.project-password-card[hidden]{display:none}.project-password-card strong{display:block;color:#5c4213}.project-password-card span{display:block;margin-top:3px;color:#7c642e;font-size:12px}.project-password-card form{display:flex;gap:8px}.project-password-card input{min-width:230px;min-height:34px;padding:0 10px;border:1px solid #d3b65d;border-radius:5px;background:#fff}.project-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:stretch}.project-viewer-panel,.project-detail-panel{min-width:0;background:#fff;border:1px solid rgba(95,113,134,.24);border-radius:8px;box-shadow:0 12px 28px #212d3d14;overflow:hidden}.project-panel-header{min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;background:#f4f7fa;border-bottom:1px solid rgba(95,113,134,.2)}.project-panel-header h2{margin:0;color:#1a2738;font-size:12px;font-weight:800;letter-spacing:.8px;text-transform:uppercase}.project-panel-header span{color:#315a7d;font-family:var(--font-mono);font-size:10px;font-weight:800}#project-viewer{height:min(68vh,720px);min-height:520px;background:#e9f0f6}#project-viewer canvas{display:block;width:100%;height:100%}.project-detail-panel{padding-bottom:12px}.project-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px}.project-metrics>div,.project-meta-list>div{min-width:0;padding:10px;background:#f7f9fc;border:1px solid rgba(95,113,134,.18);border-radius:6px}.project-divider{height:1px;margin:0 14px 12px;background:#5f71862e}.project-meta-list{display:grid;gap:8px;padding:0 14px 14px}.project-sensor-list{display:grid;gap:7px;max-height:280px;overflow:auto;padding:0 14px}.project-sensor-row{padding:9px 10px;background:#f7f9fc;border:1px solid rgba(95,113,134,.18);border-radius:6px}.project-sensor-row strong,.project-sensor-row span,.project-sensor-row em{display:block}.project-sensor-row strong{color:#1d3047;font-size:12px}.project-sensor-row span,.project-sensor-row em{margin-top:4px;color:#657386;font-family:var(--font-mono);font-size:10px;font-style:normal}@media (max-width: 960px){.project-topbar,.project-title-band,.project-password-card,.project-manager-card{align-items:flex-start;flex-direction:column}.project-topbar{height:auto;padding:12px 16px}.project-grid{grid-template-columns:1fr}.project-manager-card{display:flex}.project-manager-controls{width:100%;grid-template-columns:1fr}.project-title-actions,.project-password-card form{width:100%;justify-content:stretch}.project-title-actions button,.project-password-card button,.project-password-card input{flex:1;min-width:0}#project-viewer{min-height:420px}.project-title-band h1{font-size:32px}}#control-panel,#data-panel{padding:60px 12px 12px;max-height:none;gap:12px;background:linear-gradient(180deg,#eef3f8,#e4ebf3);border-color:#5f71863d;scrollbar-color:#aab8c8 #eef3f8}#canvas-container{position:relative;margin-top:48px;background:#dfe7ef;border:1px solid rgba(95,113,134,.28);overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff9e}.panel-section{background:#fff;border:1px solid rgba(95,113,134,.24);border-radius:8px;box-shadow:0 10px 26px #212d3d14;flex-shrink:0}.panel-header{min-height:34px;background:#f4f7fa;border-bottom:1px solid rgba(95,113,134,.2)}.panel-header:before{background:#315a7d;box-shadow:none}.panel-header h3{color:#1a2738;letter-spacing:1px}.panel-header .badge,.smoke-badge{background:#e8f4ee;border:1px solid #b8d8c8;color:#17643e;border-radius:999px}.panel-content{padding:12px}.control-group label,.analysis-row label,.result-row label,.range-labels,.control-hint small,.test-status,.sensor-mini-header,.sensor-mini-irradiance,.sensor-mini-status,.legend-item{color:var(--text-secondary)}.control-group label span,.analysis-row .value,.result-row .value,.sensor-mini-value{color:var(--text-primary)}.control-group input[type=range]{height:6px;background:#dce5ee;border:1px solid #c3cfdc;border-radius:999px}.control-group input[type=range]::-webkit-slider-thumb{width:14px;height:14px;background:#315a7d;border:2px solid #ffffff;border-radius:50%;box-shadow:0 1px 4px #212d3d3d}.control-hint,.beam-svg,.analysis-row,.result-row,.atm-effect-row,.sensor-mini-card,.device-sensor-card{background:#f5f8fb;border-color:#5f718633}.result-row,.analysis-row{border-radius:4px;margin-bottom:3px}.result-row.highlight,.analysis-row.highlight{border-left-color:#315a7d}.result-row.success,.result-row.success .value,.atm-effect-row.highlight{border-left-color:#1f7a4d;color:#1f7a4d}.mode-buttons{background:#e8eef5;border:1px solid #c8d3df;border-radius:6px;padding:3px}.mode-btn{background:transparent;color:#536276;border:0;border-radius:4px}.mode-btn:hover{background:#fff;color:#26364a}.mode-btn.active{background:#315a7d;color:#fff;box-shadow:none}#fire-laser-btn{background:#b42318;border:1px solid #991b1b;border-radius:6px;box-shadow:none}#fire-laser-btn:hover{background:#991b1b}#reset-laser-btn,#demo-btn,.reset-btn,.reset-btn-small{background:#edf2f7;border:1px solid #c8d3df;border-radius:6px;color:#617084}#reset-laser-btn.active,.reset-btn:hover,.reset-btn-small:hover{background:#dbe6f0;color:#24364a;border-color:#aab8c8}.engagement-panel{margin:12px 0 8px;padding:11px;background:#f7fafc;border:1px solid #cbd6e2;border-radius:8px;box-shadow:inset 0 1px #fffc}.engagement-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:#536276}.engagement-header strong{padding:3px 8px;border-radius:999px;background:#e8f4ee;border:1px solid #b8d8c8;color:#17643e;font-size:9px}.engagement-panel.armed .engagement-header strong{background:#fff8e8;border-color:#e4c778;color:#8a5a12}.engagement-panel.locked .engagement-header strong{background:#edf2f7;border-color:#c3cfdc;color:#405066}.engagement-panel.detected .engagement-header strong{background:#e8f4ee;border-color:#9fcdb8;color:#17643e}.engagement-panel.missed .engagement-header strong{background:#fff1f0;border-color:#e9a6a2;color:#991b1b}.engagement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:9px}.engagement-grid div{min-width:0;padding:7px 8px;background:#fff;border:1px solid #d3dde8;border-radius:6px}.engagement-grid span,.engagement-meta{display:block;color:#6b7889;font-family:var(--font-mono);font-size:8px;letter-spacing:.35px;text-transform:uppercase}.engagement-grid strong{display:block;margin-top:3px;overflow:hidden;color:#1f2e3f;font-family:var(--font-mono);font-size:10px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.laser-progress{height:5px;margin-bottom:9px;overflow:hidden;background:#dbe4ee;border-radius:999px}.laser-progress span{display:block;width:0%;height:100%;background:linear-gradient(90deg,#315a7d,#b42318);border-radius:inherit;transition:width .2s ease}.engagement-panel.armed .laser-progress span{width:65%}.engagement-panel.detected .laser-progress span,.engagement-panel.missed .laser-progress span,.engagement-panel.locked .laser-progress span{width:100%}.engagement-panel .fire-button-container{margin-bottom:7px}.engagement-panel #fire-laser-btn{display:flex;min-height:48px;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 12px;background:#a92b22;border-color:#8f231c}.engagement-panel #fire-laser-btn:hover{background:#8f231c}.engagement-panel #fire-laser-btn.locked,#fire-laser-btn.locked{background:#dbe3ec;border-color:#c3cfdc;color:#7a8797}.fire-btn-title{font-size:11px;font-weight:800;letter-spacing:.8px}.fire-btn-subtitle{font-size:8px;font-weight:600;letter-spacing:.2px;opacity:.86;text-transform:none}.engagement-panel #reset-laser-btn{min-height:30px;border-radius:6px}.engagement-meta{min-height:28px;padding:7px 8px;background:#fff;border:1px solid #d3dde8;border-radius:6px;line-height:1.45;text-transform:none}.action-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding-top:12px;border-top:1px solid rgba(95,113,134,.2)}.action-toolbar .toolbar-btn,.action-toolbar #open-calc-modal-btn,.action-toolbar #sensor-placement-btn{width:100%;min-height:34px;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1px solid #c3cfdc;border-radius:6px;color:#304156;box-shadow:0 1px 2px #212d3d0f}.action-toolbar .toolbar-btn:before,.action-toolbar #open-calc-modal-btn:before,.action-toolbar #sensor-placement-btn:before{content:none;display:none}.action-toolbar .toolbar-btn:hover,.action-toolbar #open-calc-modal-btn:hover,.action-toolbar #sensor-placement-btn:hover{transform:none;background:#edf4fa;border-color:#8fa8be;color:#1f344c;box-shadow:0 2px 6px #212d3d14}.action-toolbar .toolbar-btn.active,.action-toolbar #sensor-placement-btn.active,.toolbar-btn.running{background:#315a7d;color:#fff;border-color:#315a7d;box-shadow:none;animation:none}.accuracy-circle{background:#f6f9fc;border-color:#c8d3df;color:#315a7d;box-shadow:none}.accuracy-circle .percent{color:#1d3348}.accuracy-info .grade.high,.accuracy-info .grade.medium,.accuracy-info .grade.low{color:#315a7d}.sensor-mini-bar{background:#e2eaf2;border:1px solid #cbd6e2}.sensor-mini-bar .sensor-bar-fill{background:#315a7d}.sensor-mini-card.detecting,.device-sensor-card.active{background:#fff8e8;border-color:#e4c778}.sensor-mini-card.saturated{background:#fff1f0;border-color:#e9a6a2}.smoke-launcher-item{background:#f7fafc;border:1px solid #c8d3df;border-radius:8px}.smoke-launcher-label{color:#314356}.tube-dot{background:#dbe3ec;border-color:#aebccc}.smoke-status.ready{background:#e8f4ee;color:#17643e;border-color:#b8d8c8}.smoke-status.fired{background:#fff1f0;color:#991b1b;border-color:#e9a6a2}.smoke-status.disabled{background:#eef2f6;color:#6b7788;border-color:#c8d3df}.panel-section.smoke-project-disabled{opacity:.72}.panel-section.smoke-project-disabled .panel-content:after{content:"Bu projede sis atarı tanımlı değil";display:block;margin-top:8px;padding:7px 8px;background:#eef4f9;border:1px solid rgba(95,113,134,.22);border-radius:5px;color:#4f6074;font-size:11px;line-height:1.3}.smoke-fire-side-btn,.smoke-fire-btn,.settings-btn,.smoke-reload-btn,.smoke-settings-icon{background:#fff;border:1px solid #c3cfdc;color:#304156;box-shadow:none}.smoke-fire-side-btn:hover,.smoke-fire-btn:hover,.settings-btn:hover,.smoke-reload-btn:hover:not(:disabled),.smoke-settings-icon:hover{background:#edf4fa;border-color:#8fa8be;color:#1f344c;transform:none}#legend{bottom:10px;right:304px;padding:7px 10px;background:#ffffffe0;border:1px solid rgba(95,113,134,.26);border-radius:7px;box-shadow:0 8px 22px #212d3d1f;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.legend-color{width:9px;height:9px;border-radius:2px}.modal-container,.settings-modal,.demo-modal,.sensor-angle-modal-content,.smoke-settings-modal,.z-axis-modal{background:#fff;border:1px solid #b7c4d2;color:var(--text-primary);box-shadow:0 28px 70px #212d3d38}.modal-header,.settings-header,.demo-modal .modal-header,.smoke-settings-header,.z-axis-modal .modal-header,.sensor-angle-header{background:#f4f7fa;border-bottom:1px solid #c8d3df}.modal-header h2,.settings-header .header-title h2,.help-modal-header h3,.z-axis-modal .modal-header h3,.sensor-angle-header h3{color:#1a2738}.modal-close,.settings-header .modal-close,.z-axis-modal .modal-close{background:#fff;border:1px solid #c8d3df;color:#536276;border-radius:6px}.modal-close:hover,.settings-header .modal-close:hover,.z-axis-modal .modal-close:hover{background:#fff1f0;border-color:#e9a6a2;color:#991b1b}.param-input input[type=number],.param-row select,.param-item input[type=number],.weather-selector select,.threat-selector select,.smoke-input-group input,.smoke-input-group select,.angle-input-row input{background:#fff;border:1px solid #c3cfdc;color:#1f2937;border-radius:6px}.param-input input[type=number]:focus,.param-row select:focus,.param-item input[type=number]:focus,.weather-selector select:focus,.threat-selector select:focus,.smoke-input-group input:focus,.smoke-input-group select:focus,.angle-input-row input:focus{border-color:#315a7d;box-shadow:0 0 0 3px #315a7d1f}::-webkit-scrollbar-track{background:#eef3f8}::-webkit-scrollbar-thumb{background:#b2bfce;border-radius:999px}@media (max-width: 1180px){#app{grid-template-columns:288px minmax(0,1fr) 268px}#legend{right:280px}}.drone-report-open{overflow:hidden}.drone-report-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12000;display:none;align-items:center;justify-content:center;padding:18px;background:#121c2a5c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.drone-report-modal.active{display:flex}.drone-report-shell{width:min(1480px,96vw);max-height:min(900px,94vh);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;background:#f7fafc;border:1px solid rgba(104,121,141,.32);border-radius:10px;box-shadow:0 28px 70px #19253438}.drone-report-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;background:#fff;border-bottom:1px solid #d4dde7}.drone-report-kicker{display:block;margin-bottom:4px;color:#315a7d;font-family:var(--font-mono);font-size:10px;font-weight:900;letter-spacing:.08em}.drone-report-header h2{margin:0;color:#172235;font-size:20px;letter-spacing:0}.drone-report-header p{margin:4px 0 0;color:#59687b;font-size:12px;line-height:1.45}.drone-report-close{width:34px;height:34px;border:1px solid #c7d2df;border-radius:7px;background:#fff;color:#536276;font-size:22px;cursor:pointer}.drone-report-close:hover{background:#fff1f0;border-color:#e9a6a2;color:#991b1b}.drone-report-body{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:14px;padding:14px;background:#eef3f8}.drone-report-view{min-height:460px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#dfe8f1;border:1px solid rgba(104,121,141,.26);border-radius:8px}.drone-report-renderer{width:100%;height:100%;display:block;object-fit:contain}.drone-report-panel{display:grid;align-content:start;gap:9px;padding:12px;overflow:auto;background:#fff;border:1px solid rgba(104,121,141,.25);border-radius:8px}.drone-report-panel-title{padding-bottom:8px;border-bottom:1px solid #d9e2ec;color:#172235;font-family:var(--font-mono);font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.drone-report-metric{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:36px;padding:8px 9px;background:#f4f7fa;border:1px solid #d7e0ea;border-radius:6px}.drone-report-metric span{color:#667487;font-size:11px}.drone-report-metric strong{color:#172235;font-family:var(--font-mono);font-size:12px;text-align:right}.drone-report-sensors{display:grid;gap:7px;margin-top:2px}.drone-report-sensor-row{display:grid;grid-template-columns:52px minmax(0,1fr) 38px;align-items:center;gap:8px;color:#26364a;font-family:var(--font-mono);font-size:10px}.drone-report-sensor-row div{height:8px;overflow:hidden;background:#e3eaf2;border-radius:999px}.drone-report-sensor-row i{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#f59e0b,#ef4444);border-radius:inherit}.drone-report-empty,.drone-report-phase,.drone-report-assessment{padding:9px;background:#f6f9fc;border:1px solid #d7e0ea;border-radius:6px;color:#526174;font-size:11px;line-height:1.45}.drone-report-assessment{background:#fff;color:#334155}.drone-report-progress{height:7px;overflow:hidden;background:#dce6ef;border-radius:999px}.drone-report-progress span{display:block;width:0;height:100%;background:linear-gradient(90deg,#315a7d,#22c55e);border-radius:inherit;transition:width .18s linear}.drone-report-footer{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;border-top:1px solid #d4dde7}.drone-report-btn{min-height:34px;padding:0 14px;border:1px solid #bfccd9;border-radius:6px;background:#fff;color:#26364a;font-family:var(--font-mono);font-size:11px;font-weight:900;letter-spacing:.03em;cursor:pointer}.drone-report-btn.primary{border-color:#1f7a4d;background:#1f7a4d;color:#fff}.drone-report-btn:hover{border-color:#315a7d;color:#172235}.drone-report-btn.primary:hover{border-color:#17643e;background:#17643e;color:#fff}#drone-report-record-status{margin-left:auto;color:#667487;font-size:11px}@media (max-width: 980px){.drone-report-body{grid-template-columns:1fr}.drone-report-panel{max-height:250px}}
