.deploy-layout{display:flex;height:calc(100vh - 4rem);overflow:hidden;background:#0a0a0a}.deploy-panel{width:320px;min-width:320px;min-height:0;background:#2a2a2a;border-right:1px solid rgba(245,230,211,.1);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;display:flex;flex-direction:column;z-index:10}.deploy-map-container{flex:1;position:relative}#deploy-map{width:100%;height:100%}.leaflet-control-attribution{background:#1a1a1ad9!important;color:#f5e6d366!important;font-family:JetBrains Mono,monospace!important;font-size:.6rem!important}.leaflet-control-attribution a{color:#e89b4d80!important}.leaflet-control-zoom a{background:#2a2a2a!important;color:#f5e6d3!important;border-color:#f5e6d326!important}.leaflet-control-zoom a:hover{background:#3a3a3a!important;color:#e89b4d!important}.deploy-label-tiles{filter:brightness(.72) contrast(.9) sepia(.35) saturate(.5) hue-rotate(-10deg);mix-blend-mode:screen}.deploy-tooltip{background:#2a2a2a!important;border:1px solid rgba(232,155,77,.3)!important;color:#f5e6d3!important;font-family:JetBrains Mono,monospace!important;font-size:.7rem!important;padding:3px 8px!important;border-radius:0!important;box-shadow:0 2px 8px #00000080!important}.deploy-tooltip:before{border-top-color:#e89b4d4d!important}.mode-selector{display:flex;border-bottom:1px solid rgba(245,230,211,.1)}.mode-tab{flex:1;padding:.625rem .5rem;text-align:center;font-family:JetBrains Mono,monospace;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#f5e6d399;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .2s}.mode-tab:hover{color:#f5e6d3d9;background:#f5e6d308}.mode-tab.active{color:#e89b4d;border-bottom-color:#e89b4d}.panel-section{padding:1rem;border-bottom:1px solid rgba(245,230,211,.06)}.panel-section-title{font-family:Bebas Neue,sans-serif;font-size:.85rem;text-transform:uppercase;letter-spacing:.15em;color:#f5e6d3b3;margin-bottom:.75rem}.deploy-select,.deploy-input{width:100%;background:#3a3a3a;border:1px solid rgba(245,230,211,.12);color:#f5e6d3;font-family:JetBrains Mono,monospace;font-size:.75rem;padding:.5rem .75rem;transition:border-color .2s}.deploy-select:focus,.deploy-input:focus{outline:none;border-color:#e89b4d80}.deploy-select option{background:#3a3a3a}.deploy-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;border:1px solid;cursor:pointer;transition:all .2s}.deploy-btn-primary{background:#e89b4d;border-color:#e89b4d;color:#0a0a0a}.deploy-btn-primary:hover{background:#d4893f;border-color:#d4893f}.deploy-btn-secondary{background:transparent;border-color:#f5e6d340;color:#f5e6d3d9}.deploy-btn-secondary:hover{border-color:#f5e6d380;background:#f5e6d30d}.deploy-btn-danger{background:transparent;border-color:#a84a3266;color:#a84a32}.deploy-btn-danger:hover{background:#a84a321a;border-color:#a84a3299}.deploy-btn:disabled{opacity:.3;cursor:not-allowed}.device-list{list-style:none;margin:0;padding:0}.device-list-item{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;border-bottom:1px solid rgba(245,230,211,.04);font-size:.7rem;color:#f5e6d3b3}.device-list-item:last-child{border-bottom:none}.device-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.device-dot-throwie{background:#e6cfa3}.device-dot-sink{background:#d4e6f1}.device-list-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-list-coords{color:#f5e6d373;font-size:.6rem}.device-list-remove{background:none;border:none;color:#f5e6d333;cursor:pointer;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:.8rem;line-height:1;flex-shrink:0;border-radius:2px}.device-list-remove:hover{color:#a84a32;background:#a84a321a}.coord-lat{color:#f5e6d3}.coord-lon{color:#e89b4d}.device-list-summary{display:flex;align-items:center;gap:.5rem;padding:.75rem 0;font-size:.65rem;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.08em;color:#f5e6d3b3;list-style:none}.device-list-summary strong{color:#e89b4d}.device-list-expand{background:none;border:none;color:#e89b4d99;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.6rem;margin-left:auto}.device-list-expand:hover{color:#e89b4d}.stats-bar{display:flex;gap:1rem;padding:.75rem 1rem;background:#f5e6d308;border-top:1px solid rgba(245,230,211,.06);font-size:.65rem}.stat-item{display:flex;flex-direction:column;gap:.15rem}.stat-value{color:#e89b4d;font-weight:700;font-size:.8rem}.stat-label{color:#f5e6d380;text-transform:uppercase;letter-spacing:.08em}.analysis-overlay{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);background:#1a1a1aeb;border:1px solid rgba(232,155,77,.3);padding:.75rem 1.5rem;font-family:Playfair Display,serif;font-style:italic;font-size:.85rem;color:#f5e6d3cc;z-index:1000;pointer-events:none;white-space:nowrap}@keyframes radar-sweep{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.analysis-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(232,155,77,.2);border-top-color:#e89b4d;border-radius:50%;animation:radar-sweep 1s linear infinite;margin-right:.5rem;vertical-align:middle}@keyframes typewriter-cursor{0%,to{opacity:1}50%{opacity:0}}.analysis-cursor{display:inline-block;width:2px;height:1em;background:#e89b4d;margin-left:2px;animation:typewriter-cursor .8s step-end infinite;vertical-align:text-bottom}.search-container{position:relative}.search-results{position:absolute;top:100%;left:0;right:0;background:#2a2a2a;border:1px solid rgba(232,155,77,.25);border-top:none;max-height:200px;overflow-y:auto;z-index:100;box-shadow:0 6px 16px #0009}.search-result-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid rgba(245,230,211,.06)}.search-result-item:hover{background:#e89b4d1f}.search-result-primary{font-size:.75rem;color:#f5e6d3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-secondary{font-size:.65rem;color:#f5e6d380;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.selection-glow-container{position:relative;pointer-events:none}.selection-pulse{position:absolute;border-radius:50%;background:#e89b4d26;animation:selection-pulse-expand 2s ease-out infinite;will-change:transform,opacity}.selection-pulse:nth-child(1){animation-delay:0s}.selection-pulse:nth-child(2){animation-delay:1s}@keyframes selection-pulse-expand{0%{transform:scale(.3);opacity:.5}to{transform:scale(2);opacity:0}}.lasso-rect{position:absolute;border:2px dashed #e89b4d;background:#e89b4d14;pointer-events:none;z-index:1000}.selection-toolbar{position:absolute;bottom:1rem;left:50%;transform:translate(-50%) translateY(100%);background:#1a1a1af2;border:1px solid rgba(232,155,77,.4);padding:.5rem .75rem;display:flex;align-items:center;gap:.5rem;z-index:1001;font-family:JetBrains Mono,monospace;font-size:.7rem;transition:transform .25s ease;box-shadow:0 4px 16px #00000080}.selection-toolbar.visible{transform:translate(-50%) translateY(0)}.selection-count{color:#e89b4d;font-weight:700;padding:0 .25rem;white-space:nowrap}.selection-toolbar .deploy-btn{padding:.375rem .625rem;font-size:.6rem}.selection-toolbar .deploy-btn-danger{min-width:60px}.rich-tooltip{position:absolute;min-width:200px;max-width:240px;background:#2a2a2a;border:1px solid rgba(232,155,77,.4);box-shadow:0 4px 16px #0009;padding:.625rem .75rem;font-family:JetBrains Mono,monospace;font-size:.7rem;z-index:1002;pointer-events:none}.rich-tooltip.pinned{pointer-events:auto}.rich-tooltip-close{position:absolute;top:4px;right:4px;background:none;border:none;color:#f5e6d366;cursor:pointer;font-size:.75rem;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:2px}.rich-tooltip-close:hover{color:#f5e6d3;background:#f5e6d314}.rich-tooltip-actions{display:flex;gap:.375rem;margin-top:.5rem;padding-top:.375rem;border-top:1px solid rgba(245,230,211,.08)}.rich-tooltip-actions .deploy-btn{padding:.25rem .5rem;font-size:.55rem}.rich-tooltip-header{display:flex;align-items:baseline;gap:.5rem;margin-bottom:.375rem}.rich-tooltip-type{color:#f5e6d366;font-size:.6rem;text-transform:uppercase;letter-spacing:.1em}.rich-tooltip-label{color:#e89b4d;font-weight:700}.rich-tooltip-row{color:#f5e6d3cc;font-size:.65rem;line-height:1.6}.rich-tooltip-row.dim{color:#f5e6d373}.rich-tooltip-swatch{display:inline-block;width:8px;height:8px;border-radius:2px;vertical-align:middle;margin-right:.25rem}.undo-toast{position:absolute;bottom:4rem;left:50%;transform:translate(-50%);background:#1a1a1aeb;border:1px solid rgba(245,230,211,.15);padding:.5rem 1rem;font-family:JetBrains Mono,monospace;font-size:.65rem;color:#f5e6d3b3;z-index:999;pointer-events:none;opacity:0;transition:opacity .3s}.undo-toast.visible{opacity:1}.user-location-marker{background:none!important;border:none!important}.user-loc-pulse{position:absolute;width:24px;height:24px;border-radius:50%;background:#e89b4d26;animation:user-loc-pulse 2s ease-out infinite}.user-loc-glow{position:absolute;top:5px;left:5px;width:14px;height:14px;border-radius:50%;background:#e89b4d80}.user-loc-dot{position:absolute;top:8px;left:8px;width:8px;height:8px;border-radius:50%;background:#e89b4d;box-shadow:0 0 6px #e89b4d}@keyframes user-loc-pulse{0%{transform:scale(1);opacity:.6}to{transform:scale(2.5);opacity:0}}.placement-config{display:flex;flex-direction:column;gap:.5rem}.placement-checkbox{display:flex;align-items:center;gap:.5rem;font-size:.65rem;color:#f5e6d3b3;cursor:pointer}.placement-checkbox input[type=checkbox]{accent-color:#e89b4d}.saturation-slider{display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem}.saturation-slider label{display:flex;justify-content:space-between;align-items:center;font-size:.65rem;color:#f5e6d3b3}.saturation-slider input[type=range]{width:100%;height:4px;appearance:none;background:#f5e6d326;outline:none;border-radius:2px}.saturation-slider input[type=range]::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:#e89b4d;cursor:pointer;border:2px solid #2a2a2a}.saturation-slider input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#e89b4d;cursor:pointer;border:2px solid #2a2a2a}.saturation-estimate{font-size:.6rem;color:#f5e6d373;font-style:italic}.env-inference-banner{padding:.5rem .75rem;font-size:.6rem;color:#f5e6d380;text-transform:uppercase;letter-spacing:.05em}.env-inference-apply{color:#e89b4d;cursor:pointer;background:none;border:none;font-family:JetBrains Mono,monospace;font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.env-inference-apply:hover{text-decoration:underline}.group-header{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;cursor:pointer;font-size:.7rem;color:#f5e6d3cc;border-bottom:1px solid rgba(245,230,211,.06)}.group-header:hover{color:#f5e6d3}.group-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0;cursor:pointer}.group-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-name-input{flex:1;background:#3a3a3a;border:1px solid rgba(232,155,77,.4);color:#f5e6d3;font-family:JetBrains Mono,monospace;font-size:.7rem;padding:.125rem .375rem;outline:none}.group-count{color:#f5e6d366;font-size:.6rem}.group-collapse{background:none;border:none;color:#f5e6d366;cursor:pointer;font-size:.7rem;width:20px;text-align:center}.group-delete{background:none;border:none;color:#a84a3266;cursor:pointer;font-size:.75rem;width:20px;text-align:center;opacity:0;transition:opacity .15s}.group-header:hover .group-delete{opacity:1}.group-delete:hover{color:#a84a32}.group-devices{padding-left:1.25rem}.group-show-all{background:none;border:none;color:#e89b4d80;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.6rem;padding:.25rem 0}.group-show-all:hover{color:#e89b4d}.color-picker-inline{display:flex;align-items:center;gap:4px;padding:.25rem 0}.color-picker-swatch{width:12px;height:12px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:border-color .15s}.color-picker-swatch:hover,.color-picker-swatch.active{border-color:#f5e6d399}.color-picker-hex{width:64px;background:#3a3a3a;border:1px solid rgba(245,230,211,.12);color:#f5e6d3;font-family:JetBrains Mono,monospace;font-size:.6rem;padding:.125rem .25rem;margin-left:4px}.group-filter{width:100%;margin-bottom:.5rem}.panel-accordion-toggle{cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none;margin-bottom:0}.panel-accordion-toggle:hover{color:#f5e6d3e6}.accordion-chevron{font-size:.7rem;color:#f5e6d366;transition:transform .15s}.panel-accordion-body{margin-top:.75rem}.portrait-block{display:none;position:fixed;inset:0;z-index:9999;background:#0a0a0a;color:#f5e6d3d9;font-family:JetBrains Mono,monospace;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center;padding:2rem}@media(max-width:1023px)and (orientation:portrait){.portrait-block{display:flex}}.portrait-block-icon{font-size:4rem;color:#e89b4d;line-height:1}.portrait-block-title{font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:#f5e6d3d9}.portrait-block-text{font-size:.8rem;color:#f5e6d380;max-width:280px}.stats-bar{order:99;margin-top:auto}@media(max-height:500px){header{display:none!important}.deploy-layout{height:100dvh;margin-top:0!important;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.deploy-panel{width:280px;min-width:280px}.stats-bar{order:unset;margin-top:0;padding:.375rem .75rem;gap:.75rem;border-top:none;border-bottom:1px solid rgba(245,230,211,.06)}.stat-value{font-size:.7rem}.stat-label{font-size:.55rem}.panel-section{padding:.5rem .75rem}.panel-section-title{font-size:.75rem;margin-bottom:.375rem}.placement-config{gap:.25rem}.placement-checkbox,.saturation-slider label{font-size:.6rem}.deploy-select,.deploy-input{padding:.375rem .5rem;font-size:.65rem}.deploy-btn{padding:.375rem .625rem;font-size:.6rem}#panel-devices{flex:0 1 auto!important;overflow-y:visible!important}.selection-toolbar{bottom:2rem}}@media(pointer:coarse){.group-delete{opacity:1}}.network-item{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;cursor:pointer;font-size:.7rem;color:#f5e6d3cc;border-bottom:1px solid rgba(245,230,211,.04)}.network-item:last-child{border-bottom:none}.network-item:hover{color:#f5e6d3}.network-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.network-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:text}.network-badge{display:inline-block;padding:.1rem .35rem;border-radius:2px;font-size:.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#0a0a0a;white-space:nowrap;flex-shrink:0}.map-context-menu{position:absolute;background:#2a2a2a;border:1px solid rgba(232,155,77,.4);box-shadow:0 4px 16px #0009;z-index:1003;font-family:JetBrains Mono,monospace;font-size:.7rem;min-width:140px;display:none}.map-context-menu-divider{height:1px;background:#e89b4d33;margin:.25rem .5rem}.map-context-menu-shapes{display:flex;justify-content:center;gap:.25rem;padding:.375rem .5rem}.map-context-menu-shape{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:1px solid rgba(245,230,211,.1);border-radius:3px;color:#e89b4db3;font-size:.85rem;cursor:pointer;transition:background .15s,border-color .15s}.map-context-menu-shape:hover{background:#e89b4d1f;border-color:#e89b4d66;color:#e89b4d}.map-context-menu-item{padding:.5rem .75rem;color:#f5e6d3d9;cursor:pointer;display:flex;align-items:center;gap:.5rem;border:none;background:none;width:100%;font-family:inherit;font-size:inherit;text-align:left}.map-context-menu-item:hover{background:#e89b4d1f}.map-context-menu-item .ctx-icon{color:#e89b4db3;font-size:.65rem;width:14px;text-align:center}.edge-distance-label{font-family:JetBrains Mono,monospace;font-size:.55rem;color:#e89b4dbf;text-shadow:-1px -1px 0 #0a0a0a,1px -1px 0 #0a0a0a,-1px 1px 0 #0a0a0a,1px 1px 0 #0a0a0a;text-align:center;line-height:14px;pointer-events:none;background:none!important;border:none!important}@media(prefers-reduced-motion:reduce){.analysis-spinner{animation:none;border-color:#e89b4d}.analysis-cursor{animation:none;opacity:1}.user-loc-pulse{animation:none;opacity:.3}.selection-pulse{animation:none;opacity:.15}}
