.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}:root{color-scheme:dark;--font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;font-family:var(--font-body);font-feature-settings:"cv11","ss01";--bg: #0c1118;--bg-elev: #10161f;--panel: #121922;--panel-elev: #19212d;--border: #1f2937;--border-bright: #33415c;--text: #e5ecf2;--text-dim: #b0b8c2;--muted: #6e7681;--accent: #5ab8d8;--accent-strong: #82cce5;--accent-deep: #3a8aaa;--ok: #52c870;--warn: #e6b85c;--err: #e5604a;--enc: #a380d8;--radius-sm: 5px;--radius: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 2px 4px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .25);--ring: 0 0 0 3px rgba(90, 184, 216, .22)}html,body{background:var(--bg);color:var(--text);font-family:var(--font-body)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-size:14px;line-height:1.45}::selection{background:color-mix(in srgb,var(--accent) 35%,transparent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--border-bright)}button,input,select,textarea{font:inherit;color:inherit}input[type=text],input[type=number],input[type=password],input[type=email],input[type=search],input[type=url],input[type=datetime-local],input[type=date],input[type=time],select,textarea{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.55rem .7rem;font-size:.875rem;line-height:1.4;transition:border-color .15s,box-shadow .15s,background .15s;width:100%;max-width:24rem}textarea{min-height:5rem;resize:vertical}input:hover:not(:focus):not(:disabled),select:hover:not(:focus):not(:disabled),textarea:hover:not(:focus):not(:disabled){border-color:var(--border-bright)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}input::placeholder,textarea::placeholder{color:var(--muted)}input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:1rem;height:1rem;cursor:pointer;margin:0}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%237a8497' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='2 4 6 8 10 4'/></svg>");background-repeat:no-repeat;background-position:right .7rem center;padding-right:2rem}button{background:linear-gradient(180deg,var(--accent),var(--accent-deep));color:#fff;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:.55rem 1rem;font-size:.875rem;font-weight:500;letter-spacing:.01em;cursor:pointer;box-shadow:var(--shadow-sm);transition:filter .15s,transform .05s,box-shadow .15s;white-space:nowrap}button:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 2px 6px #1f6feb66}button:active:not(:disabled){transform:translateY(1px);box-shadow:var(--shadow-sm)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible{outline:none;box-shadow:var(--ring)}.link-btn{background:transparent;color:var(--text-dim);border:1px solid var(--border);padding:.35rem .7rem;font-size:.8rem;font-weight:500;border-radius:var(--radius-sm);box-shadow:none}.link-btn:hover:not(:disabled){filter:none;color:var(--text);background:#ffffff0a;border-color:var(--border-bright);box-shadow:none}.muted{color:var(--muted)}.small{font-size:.75rem}code{font-family:var(--font-mono);font-size:.85em;color:var(--text-dim)}.boot{height:100%;display:grid;place-items:center;color:var(--muted)}.login{height:100%;display:grid;place-items:center;background:radial-gradient(circle at 50% 20%,rgba(79,142,255,.18),transparent 55%),radial-gradient(circle at 80% 80%,rgba(163,113,247,.14),transparent 50%),var(--bg)}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2.25rem;width:24rem;box-shadow:var(--shadow)}.login-brand{display:flex;align-items:center;gap:.85rem;margin-bottom:1.5rem}.login-brand h1{margin:0;font-size:1.4rem;font-weight:600}.login-tag{margin:.1rem 0 0;color:var(--muted);font-size:.78rem}.login-sub{color:var(--text-dim);margin:0 0 1.25rem;font-size:.88rem}.login form{display:flex;flex-direction:column;gap:.9rem}.login label{display:flex;flex-direction:column;gap:.3rem;font-size:.78rem;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.login input{max-width:none}.login button{padding:.65rem;font-weight:600}.login-error{color:var(--err);margin:0;font-size:.85rem;padding:.5rem .7rem;background:#f8514914;border:1px solid rgba(248,81,73,.25);border-radius:var(--radius-sm)}.layout{height:100%;display:grid;grid-template-rows:3.25rem 1fr}.topbar{display:flex;align-items:center;gap:1.5rem;background:linear-gradient(180deg,var(--panel-elev),var(--panel));border-bottom:1px solid var(--border);padding:0 1.25rem;box-shadow:var(--shadow-sm)}.brand{display:flex;align-items:center;gap:.6rem;padding-right:1rem;border-right:1px solid var(--border);min-width:13rem}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-name{font-weight:600;font-size:.85rem;letter-spacing:.05em}.brand-model{font-size:.7rem;font-weight:700;letter-spacing:.12em;background:linear-gradient(90deg,var(--accent),var(--enc));-webkit-background-clip:text;background-clip:text;color:transparent}.topbar nav{display:flex;gap:.15rem;flex:1}.topbar nav a{color:var(--text-dim);text-decoration:none;padding:.45rem .85rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;transition:color .15s,background .15s}.topbar nav a:hover{color:#fff;background:#ffffff0a}.topbar nav a.active{color:#fff;background:#4f8eff29;box-shadow:inset 0 0 0 1px #4f8eff4d}.status-pills{display:flex;gap:.5rem;align-items:center}.sensor-picker{background:#4f8eff1f;color:inherit;border:1px solid rgba(79,142,255,.35);border-radius:6px;padding:.25rem .5rem;font-size:.85rem;max-width:12rem}.sensor-picker option{color:initial}.sub-list{list-style:none;margin:0;padding:0;max-width:32rem}.sub-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.3rem 0;border-bottom:1px solid rgba(127,127,127,.18)}.row-check{display:flex;align-items:center;gap:.5rem}.row-check input{width:auto}.topbar-menu{display:contents}.nav-toggle{display:none;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;font-size:1.2rem;line-height:1;padding:.25rem .55rem}.pill{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;padding:.22rem .6rem;border-radius:999px;border:1px solid var(--border);background:var(--bg);color:var(--muted)}.pill.ok{color:var(--ok);border-color:#3fb95066;background:#3fb95012}.pill.warn{color:var(--warn);border-color:#d2992266;background:#d2992212}.pill.err{color:var(--err);border-color:#f8514966;background:#f8514912}main{overflow:auto;height:100%;min-height:0}.live{height:100%;display:grid;grid-template-columns:22rem 1fr}.side{background:var(--panel);border-right:1px solid var(--border);padding:1.25rem;overflow:auto;display:flex;flex-direction:column;gap:1.5rem}.side h2,.side h3{margin:0 0 .6rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.side dl{margin:0;display:grid;grid-template-columns:8rem 1fr;gap:.4rem .75rem;font-size:.85rem}.side dt{color:var(--muted);font-weight:500}.side dd{margin:0;color:var(--text)}.gps-card{border:1px solid #222;border-radius:6px;padding:.65rem .9rem;background:#ffffff05;margin:0 0 .8rem;max-width:32rem}.gps-card h3{margin:0 0 .5rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);display:flex;align-items:center;gap:.5rem}.gps-card dl{margin:0;display:grid;grid-template-columns:8rem 1fr;gap:.35rem .75rem;font-size:.82rem}.gps-card dt{color:var(--muted);font-weight:500}.gps-card dd{margin:0;color:var(--text)}.gps-card dd.warn{color:var(--warn)}.track-list,.alarm-list,.session-list,.zone-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.track-list li{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.55rem .7rem;transition:border-color .15s,background .15s,box-shadow .15s}.track-list li.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.track-list li:hover{border-color:var(--border-bright)}.track-list li.selected{border-color:var(--accent);background:#4f8eff1a;box-shadow:inset 0 0 0 1px #4f8eff4d}.track-list li.black{border-color:#f8514980;background:linear-gradient(180deg,#f8514912,#f8514905)}.track-list li.white{border-color:#3fb95080;background:linear-gradient(180deg,#3fb95012,#3fb95005)}.track-row{display:flex;justify-content:space-between;align-items:center}.track-row strong{font-family:var(--font-mono);font-size:.85rem}.track-badges{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--panel-elev);padding:.12rem .45rem;border-radius:999px}.track-sub{color:var(--text-dim);font-size:.78rem;margin-top:.2rem}.track-metrics{display:flex;flex-wrap:wrap;gap:.2rem .7rem;margin-top:.35rem;font-size:.72rem;color:var(--text-dim);font-variant-numeric:tabular-nums}.track-metrics span{white-space:nowrap}.track-metrics .lbl{font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:.25rem}.track-metrics .stale{color:var(--warn)}.track-metrics .stale .lbl{color:var(--warn);opacity:.85}.alarm-list li{display:flex;justify-content:space-between;align-items:center;padding:.45rem .65rem;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border);border-left:3px solid var(--muted)}.alarm-list li.warning{border-left-color:var(--warn)}.alarm-list li.critical{border-left-color:var(--err);background:#f851490d}.alarm-list li strong{font-size:.8rem}.alarm-list li small{color:var(--muted);font-size:.7rem}.map-wrap{position:relative}.map-wrap .leaflet-container{background:#0a0e14}.drone-dot .dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--bg);box-shadow:0 0 0 1px #fff3,0 2px 8px #00000080;display:grid;place-items:center;color:#fff;font-weight:700;font-size:10px}.sensor-icon .sensor-mark{width:22px;height:22px;background:#fff;border:3px solid var(--accent);border-radius:5px;box-shadow:0 0 0 2px #1f6feb66,0 4px 10px #0006}.vertex-icon .vertex{width:10px;height:10px;background:var(--warn);border-radius:50%;border:2px solid var(--bg)}.page{padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem;height:100%;min-height:0}.page-header{display:flex;justify-content:space-between;align-items:center}.page-header h2{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:-.005em}.actions{display:flex;gap:.5rem}.btn-link{color:var(--text-dim);border:1px solid var(--border);padding:.4rem .8rem;border-radius:var(--radius-sm);text-decoration:none;font-size:.8rem;font-weight:500;background:var(--panel);transition:all .15s}.btn-link:hover{color:var(--text);border-color:var(--accent);background:#4f8eff14}.filter-form{display:flex;gap:.85rem;align-items:flex-end;flex-wrap:wrap;padding:1rem 1.1rem;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.filter-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.7rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.filter-form input,.filter-form select{min-width:10rem;max-width:100%}.filter-form .cb{flex-direction:row;align-items:center;text-transform:none;letter-spacing:0;font-size:.8rem;color:var(--text-dim)}.hint{max-width:65ch;color:var(--muted);font-size:.85rem;line-height:1.55;margin:0}.table-wrap{overflow:auto;flex:1;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);min-height:0}table.data{width:100%;border-collapse:separate;border-spacing:0;font-size:.85rem}table.data thead th{position:sticky;top:0;z-index:1;background:var(--panel-elev);color:var(--muted);font-weight:600;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--border)}table.data td{padding:.55rem .9rem;border-bottom:1px solid rgba(255,255,255,.03)}table.data tbody tr{transition:background .1s}table.data tbody tr:hover{background:#ffffff05}table.data tbody tr.black{background:#f851490f}table.data tbody tr.white{background:#3fb9500f}table.data tbody tr:last-child td{border-bottom:none}table.data tr.editing{background:#6eb4ff0f}table.data tr.editing input{padding:.25rem .4rem;font-size:.85rem;border:1px solid var(--border);border-radius:3px;background:#0f0f0f;color:#d8d8d8;min-width:8rem;width:100%}.row-actions{display:flex;gap:.5rem}.link-btn.muted{color:var(--muted)}.center{text-align:center;padding:1.5rem!important;color:var(--muted)}.redacted{letter-spacing:.15em;color:var(--muted)}.tabs{display:flex;gap:.3rem}.tab{background:var(--panel);border:1px solid var(--border);color:var(--text-dim);padding:.5rem 1rem;border-radius:var(--radius-sm);box-shadow:none;font-weight:500}.tab:hover{background:var(--panel-elev);filter:none;color:var(--text)}.tab.active{color:#fff;border-color:var(--accent);background:#4f8eff29;box-shadow:inset 0 0 0 1px #4f8eff40}.replay{display:grid;grid-template-columns:18rem 1fr;gap:1rem;height:100%;min-height:0}.replay>.side{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.replay-main{display:flex;flex-direction:column;gap:.5rem;min-height:0}.replay-controls{display:flex;gap:.85rem;align-items:center;padding:.75rem;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.replay-controls input[type=range]{flex:1}.replay-controls label{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--muted)}.replay-jammer-stats{position:absolute;top:3.5rem;right:.75rem;z-index:500;width:15rem;max-height:calc(100% - 4.25rem);padding:.5rem .6rem;background:#0a0a0adb;border:1px solid rgba(180,180,180,.25);border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow-y:auto;display:flex;flex-direction:column;gap:.45rem;pointer-events:auto}.replay-jammer-stats h3{margin:0;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#9b9b9b}.replay-jammer-stats-list{display:flex;flex-direction:column;gap:.4rem}.jammer-tile{border:1px solid #2c2c2c;border-left:3px solid #4a4a4a;border-radius:3px;background:#131313;padding:.4rem .5rem;transition:border-color .1s}.jammer-tile.keyed{border-left-color:#f5c84b;background:#1a1810}.jammer-tile.alarmed{border-left-color:#f85149;background:#1a1010}.jammer-tile header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.3rem}.jammer-tile .tile-num{font-size:.85rem;font-weight:600;color:#ececec}.jammer-tile .tile-state{font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:#7a7a7a}.jammer-tile.keyed .tile-state{color:#f5c84b}.jammer-tile.alarmed .tile-state{color:#f85149}.jammer-tile dl{margin:0;display:grid;grid-template-columns:3.4rem 1fr;gap:.15rem .5rem;font-size:.72rem;color:#d0d0d0;font-variant-numeric:tabular-nums}.jammer-tile dt{color:#8a8a8a}.jammer-tile dd{margin:0;text-align:right}.jammer-tile .tile-w{color:#9b9b9b;font-size:.7rem}.jammer-tile .tile-alarm{margin:.3rem 0 0;font-size:.68rem;color:#f85149;letter-spacing:.04em}.replay-snapshots{margin-top:.4rem;padding:.55rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.replay-snapshots header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.35rem}.replay-snapshots h4{margin:0;font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#9b9b9b}.replay-snapshot-scroll{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.25rem}.replay-snap-tile{position:relative;flex:0 0 auto;width:8rem;height:4.5rem;padding:0;border:1px solid #2c2c2c;border-radius:3px;background:#0a0a0a;cursor:pointer;overflow:hidden;transition:border-color .1s}.replay-snap-tile img{width:100%;height:100%;object-fit:cover;display:block}.replay-snap-tile:hover{border-color:#6fb3ff}.replay-snap-tile.active{border-color:#f5c84b;box-shadow:0 0 0 1px #f5c84b66}.replay-snap-tile-ts{position:absolute;bottom:2px;left:3px;padding:.5px 4px;font-size:.62rem;color:#ececec;background:#0009;border-radius:2px;font-variant-numeric:tabular-nums}.replay-snap-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:2000;cursor:zoom-out}.replay-snap-lightbox img{max-width:92vw;max-height:88vh}.replay-snap-lightbox-close{position:absolute;top:1rem;right:1.25rem;background:transparent;border:0;color:#d8d8d8;font-size:2rem;cursor:pointer}.replay-snap-lightbox-meta{position:absolute;bottom:1rem;left:1.25rem;color:#ececec;font-size:.9rem;font-variant-numeric:tabular-nums}.replay-jammers{margin-top:.4rem;padding:.6rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:.4rem}.replay-jammers header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.replay-jammers h4{margin:0;font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#9b9b9b}.replay-jammer-rows{display:flex;flex-direction:column;gap:.25rem}.replay-jammer-row{display:flex;align-items:center;gap:.5rem}.replay-jammer-label{min-width:2.25rem;font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.replay-jammer-strip{position:relative;flex:1;height:12px;background:#0a0a0a;border:1px solid #1f1f1f;border-radius:2px;overflow:hidden}.replay-jammer-bar{position:absolute;top:0;bottom:0;opacity:.85;cursor:help;transition:opacity .1s}.replay-jammer-bar:hover{opacity:1}.replay-jammer-playhead{position:absolute;top:-2px;bottom:-2px;width:2px;background:#ececec;box-shadow:0 0 4px #fff6;pointer-events:none}.progress-bar{background:var(--panel);border:1px solid var(--border);height:4px;border-radius:2px;overflow:hidden}.progress-bar>div{height:100%;background:linear-gradient(90deg,var(--accent),var(--enc));transition:width .1s linear}.session-list li button{width:100%;text-align:left;background:var(--bg);color:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .7rem;cursor:pointer;box-shadow:none;font-weight:500}.session-list li button:hover{background:var(--panel-elev);filter:none}.session-list li.active button{border-color:var(--accent);background:#4f8eff1a;box-shadow:inset 0 0 0 1px #4f8eff40}.replay-main .map-wrap{flex:1;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.replay-page{padding:.9rem 1rem 1rem;gap:.5rem}.replay-page>.page-header{margin:0}.replay-page>.page-header h2{margin:0}.replay-layout{display:grid;grid-template-columns:15rem 1fr;gap:.7rem;flex:1 1 auto;min-height:0}.replay-sessions{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:.4rem}.replay-tracks{position:absolute;top:.75rem;left:.75rem;z-index:500;width:18rem;max-height:calc(100% - 1.5rem);padding:.5rem .6rem;background:#0a0a0adb;border:1px solid rgba(180,180,180,.25);border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow-y:auto;display:flex;flex-direction:column;gap:.4rem;pointer-events:auto}.replay-tracks h3{margin:0;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#9b9b9b}.replay-date-filter{display:flex;flex-wrap:wrap;gap:.35rem;padding:.15rem .15rem .4rem;border-bottom:1px solid rgba(180,180,180,.08)}.replay-date-filter label{display:flex;flex-direction:column;gap:.15rem;flex:1 1 6.5rem;min-width:6.5rem}.replay-date-filter input[type=date]{width:100%;max-width:none;padding:.25rem .4rem;font-size:.78rem;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--text)}.replay-class-filter{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;padding:.15rem 0 .4rem;border-bottom:1px solid rgba(180,180,180,.08)}.replay-class-filter label{display:flex;align-items:center;gap:.3rem;cursor:pointer;font-size:.75rem}.replay-class-filter .class-pill,.replay-track-list .class-pill{padding:.05rem .4rem;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;border-width:1px;border-style:solid;border-radius:3px;font-weight:600}.replay-sessions .session-list{margin:0;padding:0;list-style:none}.replay-sessions .session-list li{display:grid;grid-template-columns:1fr auto;gap:.3rem;margin-bottom:.3rem;align-items:stretch}.replay-del{align-self:stretch;padding:0 .5rem;font-size:.9rem;color:#7b7b7b}.replay-del:hover{color:#f85149}.replay-track-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.35rem}.replay-track-list li{display:flex;flex-direction:column;gap:.3rem;padding:.4rem .5rem;background:var(--bg);border:1px solid var(--border);border-radius:3px}.replay-track-list li.active{border-color:#48c;background:#4488cc0f}.replay-track-toggle{display:grid;grid-template-columns:1rem 1fr auto;gap:.4rem;align-items:center;cursor:pointer}.replay-track-info{display:flex;flex-direction:column;gap:.05rem;min-width:0}.replay-track-serial{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.78rem;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.replay-track-actions{display:flex;gap:.6rem;padding-left:1.4rem;font-size:.72rem}.history-summary{padding:.5rem .6rem .6rem;border-bottom:1px solid var(--border, rgba(255,255,255,.08))}.hs-headline{display:flex;gap:.6rem;margin-bottom:.55rem}.hs-hero{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.05rem;padding:.4rem .55rem;border-radius:6px;background:#ffffff08;border:1px solid var(--border, rgba(255,255,255,.07));line-height:1.05}.hs-big{font-size:1.5rem;font-weight:700;color:var(--text, #e6edf3);font-variant-numeric:tabular-nums}.hs-breakdown{width:100%;border-collapse:collapse;font-size:.78rem}.hs-breakdown td{padding:.2rem;border-top:1px solid rgba(255,255,255,.05)}.hs-breakdown td.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text, #e6edf3)}.hs-breakdown tr.hs-group>td{font-weight:600}.hs-breakdown tr.hs-sub>td:first-child{padding-left:1rem;color:var(--muted);border-top:0}.hs-breakdown tr.hs-sub>td{border-top:0;padding-top:.05rem;padding-bottom:.05rem}.hs-breakdown tr.hs-sub>td.num{color:var(--muted);font-weight:500}.replay-video-charts h4{margin:.3rem 0;font-size:.8rem;color:var(--muted);font-weight:600}.replay-video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.5rem}.replay-video-card{border:1px solid var(--border, rgba(255,255,255,.08));border-radius:6px;padding:.4rem .5rem;background:#ffffff05}.replay-video-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.3rem}.replay-video-svg{width:100%;height:60px;display:block}.replay-video-legend{display:flex;gap:.8rem;margin-top:.2rem}.replay-video-rollup{width:100%;border-collapse:collapse;font-size:.74rem}.replay-video-rollup td{padding:.12rem .2rem;white-space:nowrap}.replay-video-rollup td.num{text-align:right;font-variant-numeric:tabular-nums}.replay-map-wrap{display:flex;flex-direction:column;gap:.4rem;min-height:0;position:relative}.replay-map{flex:1 1 auto;min-height:300px;border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;background:#0a0e14;position:relative}.replay-map .leaflet-container{background:#0a0e14}.replay-page .replay-controls{display:flex;gap:.6rem;align-items:center;padding:.5rem .7rem;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.replay-page .replay-controls input[type=range]{flex:1 1 auto;max-width:none}.replay-time{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;min-width:6.5rem;text-align:right}.replay-speed{display:flex;align-items:center;gap:.35rem}.replay-speed select{width:auto;min-width:0;padding:.25rem .4rem;font-size:.82rem}.replay-no-positions{display:flex;flex-direction:column;gap:.5rem;padding:.6rem .8rem;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.replay-np-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:.5rem}.replay-np-badge{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--warn, #d8a53a);border:1px solid var(--warn, #d8a53a);border-radius:var(--radius-sm);padding:.1rem .45rem;white-space:nowrap}.replay-np-meta{display:flex;flex-wrap:wrap;gap:.35rem 1.5rem;margin:0}.replay-np-meta>div{display:flex;flex-direction:column;gap:.1rem}.replay-np-meta dt{font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.replay-np-meta dd{margin:0;font-size:.85rem;color:var(--text);font-variant-numeric:tabular-nums}@media(max-width:1100px){.replay-layout{grid-template-columns:1fr;grid-auto-rows:min-content}.replay-sessions{max-height:20rem}.replay-tracks{width:min(18rem,60vw)}}.geofence-layout{display:grid;grid-template-columns:18rem 1fr;gap:1rem;flex:1;min-height:0}.geofence-layout>.side{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.zone-list li{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.55rem .7rem;display:flex;justify-content:space-between;align-items:center;gap:.5rem;transition:border-color .15s}.zone-list li:hover{border-color:var(--border-bright)}.zone-list li.off{opacity:.55}.zone-actions{display:flex;gap:.3rem;flex-direction:column}.geofence-layout .map-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.cb{display:inline-flex;flex-direction:row!important;gap:.45rem;align-items:center;color:var(--text-dim);font-size:.82rem;text-transform:none!important;letter-spacing:0!important}.config-page{max-width:76rem;margin:0 auto;width:100%}.config-layout{display:grid;grid-template-columns:12rem 1fr;gap:1.5rem;align-items:start}.config-nav{position:sticky;top:1rem;align-self:start;max-height:calc(100vh - 6rem);overflow-y:auto;padding:.4rem 0;border-right:1px solid rgba(180,180,180,.08)}.config-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.05rem}.config-nav a{display:block;padding:.4rem .6rem;color:#b8b8b8;font-size:.82rem;text-decoration:none;border-left:2px solid transparent;border-radius:0 3px 3px 0;transition:background 90ms ease,color 90ms ease,border-color 90ms ease}.config-nav a:hover{background:#ffffff0a;color:#e8e8e8}.config-nav a.active{background:#6fb3ff1a;color:#e8f3ff;border-left-color:#6fb3ff}.config-content{display:flex;flex-direction:column;gap:1rem;min-width:0}.config-content .config-group-heading{scroll-margin-top:5rem}@media(max-width:900px){.config-layout{grid-template-columns:1fr;gap:.8rem}.config-nav{position:static;max-height:none;border-right:0;border-bottom:1px solid rgba(180,180,180,.08);padding-bottom:.4rem}.config-nav ul{flex-direction:row;flex-wrap:wrap}.config-nav a{border-left:0;border-bottom:2px solid transparent}.config-nav a.active{border-left:0;border-bottom-color:#6fb3ff}}.config-page form{display:flex;flex-direction:column;gap:1rem}.config-page fieldset{border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;background:var(--panel);box-shadow:var(--shadow-sm);position:relative}.config-page legend{padding:.2rem .7rem;color:var(--text-dim);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;background:var(--panel-elev);border:1px solid var(--border);border-radius:999px}.form-row{display:grid;grid-template-columns:15rem 1fr;align-items:center;gap:.5rem 1.5rem;padding:.55rem 0;border-bottom:1px solid rgba(255,255,255,.03)}.form-row:last-child{border-bottom:none}.form-row label{color:var(--text-dim);font-weight:500;font-size:.85rem}.form-row input[type=checkbox]{justify-self:start}.form-row:has(.pem-field){grid-template-columns:15rem 1fr;align-items:start;padding:.85rem 0}.form-row:has(.pem-field) label{padding-top:.4rem}.pem-field{display:flex;flex-direction:column;gap:.4rem;min-width:0}.pem-input{width:100%;max-width:none;font-family:var(--font-mono);font-size:.78rem;line-height:1.45;resize:vertical;min-height:6rem;background:var(--bg-elev)}.pem-meta{display:flex;align-items:center;gap:.6rem}.form-actions{display:flex;gap:.85rem;align-items:center;padding-top:.5rem}.form-inline{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}.config-page hr{border:none;border-top:1px solid var(--border);margin:0}.oneliner{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .75rem;font-family:var(--font-mono);font-size:.75rem;line-height:1.5;white-space:pre-wrap;word-break:break-all;color:var(--text-dim);margin:0;max-width:100%;overflow-x:auto;-webkit-user-select:all;user-select:all}.config-group-heading{margin:1.5rem 0 .25rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);border-bottom:1px solid var(--border);padding-bottom:.5rem}.config-page form{gap:.75rem}.sim-toggle{display:inline-flex;align-items:center;gap:.45rem;background:var(--bg);border:1px solid var(--border);padding:.28rem .7rem .28rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);box-shadow:none;cursor:default;-webkit-user-select:none;user-select:none}.sim-toggle.on{color:var(--ok);border-color:#3fb95073;background:#3fb95012}.sim-toggle .sim-led{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--muted)}.sim-toggle.on .sim-led{background:var(--ok);box-shadow:0 0 6px #3fb950b3,0 0 1px #3fb950;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.sim-count{font-weight:500;color:var(--muted);margin-left:.15rem}.raw-page{gap:.75rem}.raw-filter{align-items:center;gap:.75rem}.type-toggles{display:flex;gap:.25rem;flex-wrap:wrap}.raw-status{display:flex;gap:.5rem;align-items:center;margin-left:auto}.raw-capture{display:flex;flex-direction:column;gap:.4rem;padding:.5rem .6rem;margin-bottom:.4rem;border:1px solid var(--border, rgba(255,255,255,.08));border-radius:6px;background:#ffffff05}.raw-capture-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.raw-capture-files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.1rem;max-height:12rem;overflow:auto}.raw-capture-files li{display:flex;align-items:center;gap:.6rem;padding:.15rem .2rem;border-top:1px solid rgba(255,255,255,.05)}.raw-capture-actions{margin-left:auto;display:flex;gap:.6rem}.link-btn.danger{color:var(--err, #f85149)}.mono{font-family:var(--mono, ui-monospace, "SF Mono", Menlo, Consolas, monospace)}.raw-console{flex:1;min-height:0;overflow:auto;background:#05080d;border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;font-family:var(--font-mono);font-size:.78rem;line-height:1.45}.raw-row{display:grid;grid-template-columns:4.5rem 2.5rem 3.5rem 1fr;gap:.6rem;align-items:baseline;padding:.15rem 0;border-bottom:1px solid rgba(255,255,255,.02);white-space:nowrap;overflow:hidden}.raw-row:hover{background:#ffffff06}.raw-ts{color:var(--muted)}.raw-conn{color:var(--muted);font-size:.7rem}.raw-type{font-size:.65rem;font-weight:700;letter-spacing:.06em;text-align:center;padding:.05rem .3rem;border-radius:3px;background:#ffffff0d;color:var(--muted)}.raw-type.detect{background:#3fb95026;color:var(--ok)}.raw-type.video{background:#e6b85c26;color:var(--warn)}.raw-type.stat{background:#4f8eff26;color:var(--accent-strong)}.raw-type.info{background:#a371f726;color:var(--enc)}.raw-type.hb{background:#ffffff0a;color:var(--muted)}.raw-type.unparsed{background:#f851492e;color:var(--err)}.raw-line{color:var(--text-dim);font-family:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.raw-byte-row{padding:.35rem 0;border-bottom:1px solid rgba(255,255,255,.04)}.raw-byte-row:hover{background:#ffffff06}.raw-byte-header{display:flex;gap:.6rem;align-items:baseline;margin-bottom:.15rem}.raw-byte-payload{display:grid;grid-template-columns:1fr;gap:.15rem;padding-left:.6rem}.raw-byte-ascii{color:var(--text-dim);white-space:pre-wrap;word-break:break-all}.raw-byte-hex{color:var(--muted);font-size:.7rem;white-space:pre-wrap;word-break:break-all}.mqtt-sep{border:0;border-top:1px solid var(--border, #2a2f3a);margin:1rem 0 .5rem}.dirty-dot{color:var(--warn, #d4a017);margin-left:.4rem;font-size:1.1rem;line-height:1;vertical-align:middle}button.primary{background:var(--accent, #4f7ee8);color:#fff;border-color:var(--accent, #4f7ee8)}button.primary:hover:not(:disabled){filter:brightness(1.08)}.mqtt-subhead{margin:0 0 .6rem;text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.page-bottom-spacer{height:4rem}.vpn-logs{margin:.4rem 0 0;font-size:.78rem}.vpn-logs summary{cursor:pointer;color:var(--muted, #98a2b3);-webkit-user-select:none;user-select:none}.vpn-logs summary:hover{color:var(--text, #e6e8ec)}.danger-zone{border-color:var(--err, #b54848)!important}.danger-zone legend{color:var(--err, #b54848)}.danger-btn{background:var(--err, #b54848);color:#fff;border:1px solid var(--err, #b54848)}.danger-btn:hover:not(:disabled){background:#c95252;border-color:#c95252}.danger-btn:disabled{opacity:.5;cursor:not-allowed}.vpn-logs pre{margin:.4rem 0 0;padding:.5rem .7rem;background:var(--panel, #1a1f2a);border:1px solid var(--border, #2a2f3a);border-radius:var(--radius, 6px);font-size:.75rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;color:var(--text, #e6e8ec);max-height:14rem;overflow:auto}.error-screen{padding:2rem;max-width:50rem;margin:0 auto}.error-screen h2{margin-top:0}.error-screen pre{background:var(--panel);border:1px solid var(--err);border-radius:var(--radius);padding:1rem;white-space:pre-wrap;word-break:break-word;font-size:.85rem;color:var(--err)}.jammer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:.75rem;margin-top:.75rem}.jam-skip-confirm{display:flex;align-items:flex-start;gap:.5rem;margin:.6rem 0;font-size:.78rem;line-height:1.4;color:#b0b0b0;max-width:42rem;cursor:pointer}.jam-skip-confirm input{margin-top:.2rem;flex:0 0 auto}.jammer-card{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;display:flex;flex-direction:column;gap:.5rem;background:var(--surface)}.jammer-card.offline{opacity:.6}.jammer-card.jamming{border-color:var(--err)}.jammer-head{display:flex;gap:.75rem;align-items:baseline;font-weight:600}.jammer-head .num{font-size:1.1rem}.jammer-head .band{color:var(--muted)}.jammer-head .state{margin-left:auto;font-size:.8rem}.jammer-head .state-online{color:var(--ok, #5fb85f)}.jammer-head .state-offline{color:var(--muted)}.jammer-head .state-settling,.jammer-head .state-rebooting{color:var(--warn, #d9a23a)}.jammer-ver{font-size:.75rem}.jam-indicator{padding:.4rem .6rem;border-radius:var(--radius);background:var(--surface-2, #2a2a2a);text-align:center;font-weight:600}.jam-indicator.on{background:var(--err);color:#fff}.jam-countdown{font-weight:400;opacity:.9}.jammer-metrics{display:grid;grid-template-columns:1fr 1fr;gap:.25rem .75rem;font-size:.85rem}.jammer-metrics>div{display:flex;justify-content:space-between;gap:.5rem}.jammer-metrics .k{color:var(--muted)}.jammer-metrics .v{font-variant-numeric:tabular-nums}.jammer-metrics .v.warn{color:var(--err);font-weight:600}.jammer-controls{display:flex;flex-direction:column;gap:.4rem;margin-top:.25rem}.jammer-controls .row{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.jammer-controls .row label{font-size:.85rem;color:var(--muted)}.jammer-controls button.danger{background:var(--err);color:#fff;border-color:var(--err)}.jammer-controls button.danger:hover:not(:disabled){filter:brightness(1.1)}.token-issued{border:1px solid var(--warn, #d9a23a);border-radius:var(--radius);padding:.75rem 1rem;margin:.75rem 0;background:#d9a23a14}.token-issued p{margin:.25rem 0}.token-value-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.5rem 0}.token-value{flex:1 1 24rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;padding:.4rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2, #1a1a1a);-webkit-user-select:all;user-select:all;word-break:break-all}.token-table{width:100%;margin-top:.5rem;border-collapse:collapse;font-size:.9rem}.token-table th,.token-table td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--border)}.token-table th{color:var(--muted);font-weight:600;font-size:.8rem}.tactical{display:flex;flex-direction:column;height:calc(100vh - 3.5rem);background:#050505;color:#d8d8d8;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}.tactical-map{flex:1;position:relative;min-height:0}.tactical-overlays{position:absolute;top:3.5rem;right:.75rem;display:flex;flex-direction:row;align-items:flex-start;gap:.5rem;z-index:1200;pointer-events:none}.overlay-panel{pointer-events:auto;background:#0a0a0ad1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(180,180,180,.18);border-radius:4px;padding:.5rem .6rem;min-width:8.5rem;max-width:11rem;box-shadow:0 4px 14px #00000080}.drones-overlay{max-width:none}.overlay-panel h3{margin:0 0 .4rem;font-size:.7rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#9b9b9b}.overlay-stack{display:flex;flex-direction:column;gap:.3rem}.tact-btn{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem .6rem;background:#161616;border:1px solid #2c2c2c;border-radius:3px;color:#d8d8d8;cursor:pointer;font-family:inherit;font-size:.85rem;letter-spacing:.03em;transition:background 90ms ease,border-color 90ms ease}.tact-btn:hover:not(:disabled){background:#232323;border-color:#3a3a3a}.tact-btn:disabled{opacity:.4;cursor:not-allowed}.tact-btn.jammer .band{font-weight:600}.tact-btn.jammer .state{font-size:.75rem;padding:.05rem .4rem;border-radius:2px;background:#2a2a2a;color:#888}.tact-btn.jammer.engaged{background:#f8514938;border-color:#c9362f;color:#ffd8d5}.tact-btn.jammer.engaged .state{background:#f85149;color:#fff;font-weight:700}.tact-btn.jammer.offline{color:#6a6a6a}.tact-btn.jammer .state-ready{background:#3fb9502e;color:#5fb85f}.tact-btn.jammer .state-fail{background:#f8514929;color:#f0857f}.tact-btn.jammer .state-jamming{background:#f85149;color:#fff;font-weight:700}.tact-btn.cam{justify-content:flex-start}.tact-btn.cam .cam-icon{display:inline-block;width:1.1rem;text-align:center;color:#6fb3ff}.tact-btn.cam.active{background:#3264a04d;border-color:#48c;color:#d6ecff}.ptz{margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(180,180,180,.14);display:flex;flex-direction:column;gap:.4rem}.ptz-dpad{display:grid;grid-template-columns:repeat(3,1fr);grid-template-areas:".    up    ." "left home  right" ".    down  .";gap:.25rem;justify-items:center}.ptz-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:#161616;border:1px solid #2c2c2c;border-radius:3px;color:#6fb3ff;cursor:pointer;font-size:.85rem;line-height:1;touch-action:none;-webkit-user-select:none;user-select:none;transition:background 90ms ease,border-color 90ms ease}.ptz-btn:hover:not(:disabled){background:#232323;border-color:#48c}.ptz-btn:active{background:#3264a059;border-color:#48c}.ptz-btn.up{grid-area:up}.ptz-btn.left{grid-area:left}.ptz-btn.home{grid-area:home;color:#9b9b9b;font-size:1rem}.ptz-btn.right{grid-area:right}.ptz-btn.down{grid-area:down}.ptz-zoom{display:flex;align-items:center;justify-content:center;gap:.35rem}.ptz-af{display:flex;justify-content:center;margin-top:.1rem}.ptz-zoom-label{font-size:.6rem;letter-spacing:.15em;color:#7a7a7a}.ptz-sensor{margin-left:.2rem;padding:.15rem .35rem;background:#161616;border:1px solid #2c2c2c;border-radius:3px;color:#9b9b9b;font-size:.6rem;letter-spacing:.1em;cursor:pointer}.ptz-sensor:hover{border-color:#48c;color:#d6ecff}.ptz-readout{display:flex;justify-content:space-between;gap:.3rem;font-size:.62rem;letter-spacing:.06em;color:#8fb6d8;font-variant-numeric:tabular-nums}.ptz-err{margin:.1rem 0 0}.tact-camera{width:12px;height:12px;background:#6fb3ff;border:2px solid #0a0a0a;border-radius:50%;box-shadow:0 0 0 1px #6fb3ff,0 0 6px #6fb3ffcc}.tactical-map.aiming,.tactical-map.aiming .leaflet-container,.tactical-map.aiming .leaflet-grab{cursor:crosshair!important}.tact-btn.cam.aim .cam-icon{color:#f5c84b}.tact-btn.cam.aim.active{background:#f5c84b38;border-color:#f5c84b;color:#feb}.tact-btn.cam.aim.active .cam-icon{color:#feb}.tact-btn.cam.track .cam-icon{color:#3fb950}.tact-btn.cam.track.active .cam-icon{animation:track-pulse 1.4s ease-in-out infinite}@keyframes track-pulse{0%,to{opacity:1}50%{opacity:.4}}.camera-setup{gap:.5rem;padding-top:.9rem}.camera-setup>h2{margin:0}.camera-setup .cam-setup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin-top:.8rem}.camera-setup .cam-setup-card{border:1px solid rgba(180,180,180,.16);border-radius:5px;padding:.7rem .9rem;background:#ffffff04}.camera-setup .cam-setup-card-wide{grid-column:1 / -1}.camera-setup .cam-setup-card h3{margin:0 0 .5rem;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:#9b9b9b;display:flex;align-items:center;gap:.6rem}.cam-stage{display:flex;flex-direction:row-reverse;gap:.8rem;align-items:stretch}.cam-stage-feed{flex:1 1 0;min-width:0;display:flex;flex-direction:column}.cam-stage-map{flex:1 1 0;min-width:0;position:relative;border-radius:4px;overflow:hidden}.cam-stage-feed-wrap{flex:1 1 auto;position:relative;background:#000;border-radius:3px;overflow:hidden;min-height:0}.cam-stage-feed-wrap video{width:100%;height:100%;object-fit:contain}.cam-stage-feed-wrap.thermal{aspect-ratio:4 / 3}.cam-stage-crosshair{position:absolute;top:50%;left:50%;width:200px;height:200px;transform:translate(-50%,-50%);pointer-events:none;background:linear-gradient(to right,transparent calc(50% - 1px),rgba(255,40,40,.95) calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px)),linear-gradient(to bottom,transparent calc(50% - 1px),rgba(255,40,40,.95) calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px));filter:drop-shadow(0 0 1px rgba(0,0,0,.9))}.cam-stage-map .cam-setup-map{height:100%}.cam-stage .cam-setup-feed-label{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#7a7a7a;margin-bottom:.25rem}.cam-stage-footer{display:flex;align-items:center;gap:.8rem;margin-top:.6rem;flex-wrap:wrap}.cam-stage-overlay{position:absolute;top:.5rem;right:.5rem;z-index:10;display:flex;flex-direction:column;gap:.4rem;padding:.5rem .6rem;background:#0a0a0ab8;border:1px solid rgba(180,180,180,.22);border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);width:15rem;pointer-events:auto}.cam-stage-overlay-head{display:flex;align-items:center;gap:.4rem}.cam-mode-toggle{display:flex;gap:0;border-radius:3px;overflow:hidden;border:1px solid #333}.cam-mode-toggle button{background:#141414d9;border:0;border-right:1px solid #333;color:#ccc;font-size:.7rem;padding:.28rem .55rem;letter-spacing:.1em;font-weight:600;cursor:pointer;transition:background 90ms ease,color 90ms ease}.cam-mode-toggle button:last-child{border-right:0}.cam-mode-toggle button:hover{background:#282828e6;color:#fff}.cam-mode-toggle button.active{background:#6fb3ff47;color:#e8f3ff;box-shadow:inset 0 0 0 1px #6fb3ff73}.cam-stage-overlay-toggle{background:transparent;border:1px solid rgba(180,180,180,.3);color:#ccc;padding:.18rem .4rem;border-radius:3px;cursor:pointer;font-size:.85rem;line-height:1;margin-left:auto;min-width:1.8rem}.cam-stage-overlay-toggle:hover{background:#ffffff0f;color:#fff}.cam-stage-overlay-body{display:flex;flex-direction:column;align-items:center;gap:.5rem}.cam-stage-readout{text-align:center;line-height:1.4}.cam-af-pill{display:inline-block;padding:0 .4rem;border-radius:3px;font-size:.68rem;letter-spacing:.06em;border:1px solid}.cam-af-pill.on{color:#6f6;border-color:#4a8;background:#50c8781f}.cam-af-pill.off{color:#fa6;border-color:#a74;background:#c878281f}.camera-setup .cam-stage{min-height:800px}.cam-map-overlay-tabs{position:absolute;top:.6rem;left:.6rem;z-index:1000;display:flex;gap:.3rem}.cam-map-overlay-tabs .tact-btn{font-size:.72rem;padding:.3rem .6rem;background:#0a0a0ad1;border-color:#b4b4b44d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.cam-map-overlay-tabs .tact-btn.active{background:#6fb3ff52;border-color:#6fb3ff;color:#e8f3ff;box-shadow:inset 0 0 0 1px #6fb3ff73}.cam-map-overlay-apply,.cam-map-overlay-hint,.cam-map-overlay-err,.cam-map-overlay-ok{position:absolute;left:.6rem;right:.6rem;bottom:.6rem;z-index:1000;padding:.4rem .7rem;background:#0a0a0ad9;border:1px solid rgba(180,180,180,.25);border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.cam-map-overlay-err{border-color:#f8514999;background:#280a0ad9}.cam-map-overlay-ok{color:var(--ok);border-color:#3fb95080;background:#0a1e0cd9;justify-content:center;font-weight:600}.cam-map-overlay-hint{justify-content:center;color:#d8d8d8;border-color:#f85149bf;border-width:1.5px;box-shadow:0 0 0 1px #f8514926;text-align:center}.cam-map-overlay-hint strong{color:#ffb0aa;font-weight:600;margin-right:.35rem}.cam-map-overlay-position{position:absolute;top:.6rem;right:.6rem;z-index:1000;width:15rem;padding:.5rem .6rem;background:#0a0a0adb;border:1px solid rgba(180,180,180,.25);border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;flex-direction:column;gap:.5rem}.cam-pos-row{display:flex;align-items:center;gap:.4rem;flex-wrap:nowrap}.cam-pos-coord{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;font-size:.7rem;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cam-map-overlay-position .ptz-dpad{align-self:center;gap:.25rem}.cam-pos-dot{color:#6fb3ffb3;font-size:.7rem!important;cursor:default;border-color:#6fb3ff4d}.cam-pos-dot:hover{background:#161616;border-color:#6fb3ff4d}input.cam-pos-height{width:3em;max-width:3em;min-width:0;background:#0a0a0a;border:1px solid #333;color:#ddd;border-radius:3px;padding:.25rem .35rem;font-family:inherit;font-variant-numeric:tabular-nums;flex:0 0 auto;-moz-appearance:textfield}.cam-pos-height::-webkit-outer-spin-button,.cam-pos-height::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cam-pos-save{align-self:flex-end}.cam-pos-gps-toggle{margin-left:auto;padding:.15rem .4rem;font-size:.72rem;color:#a8a8a8;letter-spacing:.06em;text-transform:uppercase}.cam-pos-gps-toggle:hover{color:#ddd}.cam-pos-gps-details .gps-card{border:1px solid rgba(180,180,180,.18);padding:.4rem .5rem;margin:0;background:#00000059;border-radius:3px}.cam-pos-gps-details .gps-card h3{margin:0 0 .35rem;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#b8b8b8;display:flex;align-items:center;gap:.35rem}.cam-pos-gps-details .gps-card h3 .pill{padding:0 .35rem;font-size:.6rem}.cam-pos-gps-details .gps-card dl{display:grid;grid-template-columns:5rem 1fr;gap:.15rem .5rem;margin:0;font-size:.72rem;font-variant-numeric:tabular-nums}.cam-pos-gps-details .gps-card dt{color:#7b7b7b;font-size:.65rem;letter-spacing:.05em;text-transform:uppercase}.cam-pos-gps-details .gps-card dd{margin:0;color:#d8d8d8}.cam-pos-gps-details .gps-card dd .muted{color:#7b7b7b}.cam-pos-gps-details .gps-card dd.warn{color:#f5c84b}.cam-map-pending-icon{background:transparent!important;border:0!important}.cam-map-pending-cross{width:22px;height:22px;position:relative}.cam-map-pending-cross:before,.cam-map-pending-cross:after{content:"";position:absolute;left:50%;top:50%;background:currentColor}.cam-map-pending-cross:before{width:22px;height:2px;transform:translate(-50%,-50%)}.cam-map-pending-cross:after{width:2px;height:22px;transform:translate(-50%,-50%)}.cam-map-pending-icon.aim{color:#6fb3ff;filter:drop-shadow(0 0 4px rgba(111,179,255,.7))}.cam-map-pending-icon.calibrate{color:#f5c84b;filter:drop-shadow(0 0 4px rgba(245,200,75,.7))}.cam-setup-banner{display:flex;align-items:center;gap:.6rem;padding:.6rem .8rem;margin:.8rem 0 0;background:#f5c84b14;border:1px solid rgba(245,200,75,.35);border-radius:4px;flex-wrap:wrap}.cam-setup-feeds{display:flex;gap:.5rem;flex-wrap:wrap}.cam-setup-feed{flex:1 1 0;min-width:12rem}.cam-setup-feed-label{display:block;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#7a7a7a;margin-bottom:.2rem}.cam-setup-feed video{width:100%;border-radius:3px;background:#000}.cam-setup-map{height:320px;border-radius:4px;overflow:hidden;border:1px solid rgba(180,180,180,.16)}.cam-setup-map.aiming .leaflet-container,.cam-setup-map.aiming .leaflet-grab{cursor:crosshair!important}.cam-cal{border-top:1px solid rgba(180,180,180,.14);margin-top:.6rem;padding-top:.6rem}.cam-cal.expanded{padding-bottom:.4rem}.cam-cal-header{display:flex;align-items:center;gap:.6rem;width:100%;background:transparent;border:0;padding:.2rem 0;color:inherit;cursor:pointer;text-align:left}.cam-cal-header:hover .cam-cal-caret{color:#ddd}.cam-cal-title{font-size:1rem;font-weight:600;color:#d8d8d8}.cam-cal-count{flex:1 1 auto}.cam-cal-caret{color:#7b7b7b;font-size:.9rem;padding:0 .4rem;transition:color 90ms ease}.cam-cal-body{display:flex;flex-direction:column;gap:.6rem;margin-top:.6rem}.cam-cal-intro{margin:0}.cam-cal-tabs{display:flex;gap:.3rem}.cam-cal-tabs .tact-btn.active{background:#3264a04d;border-color:#48c;color:#d6ecff}.cam-cal-table{width:100%;border-collapse:collapse;font-size:.85rem;font-variant-numeric:tabular-nums}.cam-cal-table th,.cam-cal-table td{padding:.35rem .6rem;border-bottom:1px solid rgba(180,180,180,.08);text-align:left}.cam-cal-table th{color:var(--muted);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.cam-cal-table td:last-child,.cam-cal-table th:last-child{text-align:right;width:1%;white-space:nowrap}.cam-cal-form{display:flex;flex-wrap:wrap;gap:.6rem .8rem;align-items:flex-end}.cam-cal-field{display:flex;flex-direction:column;gap:.2rem;flex:0 0 auto}.cam-cal-field span{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}input.cam-cal-field~input,.cam-cal-field input[type=number]{width:6rem;max-width:6rem;padding:.35rem .5rem;font-size:.85rem;line-height:1.3}.cam-cal-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-left:auto}.cam-cal-preview{display:flex;align-items:center;gap:.5rem;padding-top:.5rem;border-top:1px solid rgba(180,180,180,.12)}input.cam-cal-preview-input{width:5rem;max-width:5rem;padding:.3rem .5rem;font-size:.85rem}@media(max-width:860px){.camera-setup .cam-setup-grid{grid-template-columns:1fr}}.js-page{padding:1rem 1.25rem 2rem;max-width:1400px;margin:0 auto}.js-panel{display:flex;flex-direction:column;gap:.6rem}.js-head{display:flex;align-items:baseline;gap:.9rem;flex-wrap:wrap;margin-bottom:1rem}.js-head h2{margin:0;font-size:1.05rem;letter-spacing:.04em}.js-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;align-items:start}.js-card{background:#141414;border:1px solid #262626;border-radius:6px;padding:.85rem 1rem 1rem}.js-card-wide{grid-column:1 / -1}.js-diagram{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-top:.5rem}.js-dgm-stick{display:flex;gap:.5rem}.js-dgm-base{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;padding:.6rem;border:1px solid #2a2a2a;border-radius:8px;background:#101010}.js-dgm-btn{display:flex;flex-direction:column;align-items:center;gap:.1rem;width:5.4rem;min-height:3.4rem;padding:.35rem .3rem;border:1px solid #333;border-radius:5px;background:#181818;text-align:center}.js-dgm-btn.pressed{border-color:#3fb950;background:#3fb9502e}.js-dgm-btn.mode{background:#1a1620;border-color:#4a3d5c}.js-dgm-btn.unmapped{opacity:.5}.js-dgm-label{font-size:.72rem;font-weight:600;color:#cbd5e1;letter-spacing:.04em}.js-dgm-fn{font-size:.66rem;color:#8fb7ff;line-height:1.15}.js-dgm-btn.mode .js-dgm-fn{color:#b79fe0}.js-dgm-btn.unmapped .js-dgm-fn{color:#777}.js-dgm-idx{font-size:.58rem;color:#6a6a6a}.js-card h3{margin:0 0 .5rem;font-size:.8rem;letter-spacing:.05em;color:#cbd5e1;text-transform:uppercase}.js-lastbtn{margin:.4rem 0 0}.js-lastbtn strong{color:#6fb3ff}.js-fn-list{display:flex;flex-direction:column;gap:.4rem}.js-fn-row{display:flex;align-items:center;gap:.6rem}.js-fn-label{flex:1 1 auto;font-size:.72rem;color:#c8c8c8}.js-fn-row select{min-width:4.5rem}.js-trim{display:flex;gap:1rem;font-size:.8rem;color:#f5c84b;font-variant-numeric:tabular-nums}.gp-panel h3{display:flex;align-items:center;gap:.5rem}.gp-status{font-size:.62rem;letter-spacing:.06em;color:#6a6a6a}.gp-status.on{color:#3fb950}.gp-flash{color:#f5c84b}.gp-axes{display:flex;flex-direction:column;gap:.35rem;margin:.5rem 0}.gp-axis-actions{display:flex;gap:.8rem;margin:-.2rem 0 .4rem}.gp-axis-debug{display:flex;flex-direction:column;gap:.1rem;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-bottom:.4rem}.gp-axis{display:flex;align-items:center;gap:.5rem}.gp-axis-label{width:3rem;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:#8a8a8a}.gp-axis-track{position:relative;flex:1;height:10px;background:#161616;border:1px solid #2c2c2c;border-radius:5px;overflow:hidden}.gp-axis-fill{position:absolute;top:0;bottom:0;background:#6fb3ff;opacity:.85}.gp-axis-center{position:absolute;left:50%;top:0;bottom:0;width:1px;background:#3a3a3a}.gp-axis-val{width:2.6rem;text-align:right;font-size:.62rem;color:#8fb6d8;font-variant-numeric:tabular-nums}.gp-buttons{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.5rem}.gp-btn-dot{display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem;border-radius:3px;background:#161616;border:1px solid #2c2c2c;color:#6a6a6a;font-size:.6rem}.gp-btn-dot.on{background:#3fb9504d;border-color:#3fb950;color:#d6ffd9}.gp-btn-dot.seen{border-color:#4a7a55;color:#9fce9f}.gp-config{margin-top:.6rem;padding-top:.6rem;border-top:1px solid rgba(180,180,180,.12);display:flex;flex-direction:column;gap:.6rem}.gp-config-grid{display:flex;flex-wrap:wrap;gap:.6rem}.gp-config-row{display:flex;flex-wrap:wrap;gap:.8rem}.gp-field{display:flex;flex-direction:column;gap:.2rem;font-size:.65rem;color:#9b9b9b}.gp-field select,.gp-field input[type=range]{min-width:6rem}.gp-check{display:flex;align-items:center;gap:.3rem;font-size:.7rem;color:#b8b8b8}.gp-live-dot{color:#3fb950;font-size:.8rem;margin-left:.3rem}.cam-overlay{position:absolute;bottom:0;z-index:1100;background:#000;border:1px solid rgba(180,180,180,.25);box-shadow:0 6px 20px #0009;display:flex;flex-direction:column;overflow:hidden;height:min(480px,42vh)}.cam-overlay-visual{left:0;width:min(807px,50vw)}.cam-overlay-thermal{right:0;width:min(568px,36vw)}.cam-fullview{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1001;background:#000}.cam-fullview video{width:100%;height:100%;object-fit:contain}.cam-oor-badge{position:absolute;bottom:.5rem;right:.5rem;z-index:20;padding:.35rem .65rem;border:1px solid rgba(248,81,73,.9);background:#460000d9;color:#ffdcd8;border-radius:3px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;letter-spacing:.06em;text-align:right;animation:cam-oor-pulse 1.8s ease-in-out infinite;pointer-events:none;max-width:60%}.cam-oor-badge-title{font-size:.72rem;font-weight:700;text-transform:uppercase;color:#ff8d85}.cam-oor-badge-sub{font-size:.62rem;margin-top:.15rem;color:#f3c9c5;opacity:.85}@keyframes cam-oor-pulse{0%,to{box-shadow:0 0 #f8514900}50%{box-shadow:0 0 12px #f851498c}}.cam-viewmode{display:flex;gap:1px;margin-top:.4rem;border:1px solid #2c2c2c;border-radius:3px;overflow:hidden}.cam-mode-btn{flex:1;padding:.35rem 0;background:#161616;border:0;color:#9b9b9b;font-family:inherit;font-size:.7rem;letter-spacing:.1em;cursor:pointer;transition:background 90ms ease,color 90ms ease}.cam-mode-btn:hover:not(:disabled){background:#232323;color:#d8d8d8}.cam-mode-btn.active{background:#3264a059;color:#d6ecff}.cam-mode-btn:disabled{opacity:.4;cursor:not-allowed}.cam-overlay-head{display:flex;align-items:center;gap:.5rem;padding:.3rem .6rem;background:#0c0c0cf2;border-bottom:1px solid #1f1f1f;font-size:.75rem;letter-spacing:.08em;color:#d8d8d8;-webkit-user-select:none;user-select:none}.cam-overlay-head strong{font-weight:600}.cam-overlay-snap{margin-left:auto;background:transparent;border:0;color:#9b9b9b;font-size:.95rem;line-height:1;padding:0 .35rem;cursor:pointer;transition:color .1s}.cam-overlay-snap:hover{color:#f5c84b}.cam-overlay-close{background:transparent;border:0;color:#d8d8d8;font-size:1.1rem;line-height:1;padding:0 .3rem;cursor:pointer}.cam-overlay-close:hover{color:#fff}.cam-fullview-snap{position:absolute;top:.75rem;right:.75rem;z-index:1150;width:32px;height:32px;border-radius:50%;background:#0000008c;border:1px solid rgba(180,180,180,.25);color:#d8d8d8;font-size:1rem;cursor:pointer;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transition:background .1s,color .1s}.cam-fullview-snap:hover{background:#f5c84b40;color:#f5c84b}.tact-snap-toast{position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%);padding:.4rem .85rem;border-radius:3px;background:#000000d9;border:1px solid rgba(180,180,180,.35);color:#d8d8d8;font-size:.8rem;letter-spacing:.04em;z-index:1400;pointer-events:none}.tact-snap-toast.ok{border-color:#3fb95080;color:#7de08a}.tact-snap-toast.err{border-color:#f8514980;color:#f85149}.cam-overlay-feed{position:relative;background:#000;flex:1;min-height:0}.palette-bar{position:absolute;top:.3rem;left:50%;transform:translate(-50%);z-index:5;display:flex;gap:3px;padding:2px;border-radius:3px;background:#00000047;opacity:.7;transition:opacity .12s ease}.palette-bar:hover{opacity:1}.palette-swatch{width:16px;height:16px;padding:0;border-radius:2px;border:1px solid rgba(255,255,255,.35);cursor:pointer;box-shadow:0 1px 3px #00000080}.palette-swatch:hover{border-color:#ffffffd9}.palette-swatch.active{border-color:#fff;box-shadow:0 0 0 2px #ffffffa6}.tact-drone-icon,.tact-pilot-icon{background:transparent!important;border:0!important}.tact-drone{width:18px;height:18px;border:2px solid var(--c);background:#0000008c;transform:rotate(45deg);box-shadow:0 0 0 1px #0009,0 0 8px var(--c)}.tact-pilot{width:14px;height:14px;border-radius:50%;border:2px solid #6fb3ff;background:#0000008c;box-shadow:0 0 0 1px #0009,0 0 6px #6fb3ff99}.lang-switcher{position:relative}.lang-switcher-trigger{background:transparent;border:1px solid #2c2c2c;border-radius:3px;color:#d8d8d8;font:inherit;font-size:.8rem;padding:.25rem .55rem;cursor:pointer}.lang-switcher-trigger:hover{background:#232323;border-color:#3a3a3a}.lang-switcher-menu{position:absolute;top:calc(100% + .3rem);inset-inline-end:0;margin:0;padding:.2rem;list-style:none;background:#0c0c0c;border:1px solid #2c2c2c;border-radius:4px;box-shadow:0 6px 18px #0000008c;z-index:2000;min-width:9rem}.lang-switcher-menu li{margin:0}.lang-switcher-menu button{display:flex;width:100%;justify-content:space-between;align-items:center;gap:.6rem;background:transparent;border:0;color:#d8d8d8;font:inherit;font-size:.82rem;padding:.35rem .55rem;cursor:pointer;text-align:start;border-radius:2px}.lang-switcher-menu button:hover{background:#1c1c1c}.lang-switcher-menu button.active{background:#4488cc40;color:#d6ecff}.volume-control{position:relative;display:inline-flex}.volume-pill{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:.18rem .5rem;line-height:1}.volume-menu{position:absolute;top:calc(100% + .3rem);inset-inline-end:0;display:flex;flex-direction:column;gap:.5rem;padding:.6rem;background:#0c0c0c;border:1px solid #2c2c2c;border-radius:4px;box-shadow:0 6px 18px #0000008c;z-index:2000;min-width:11rem}.volume-slider-row{display:flex;align-items:center;gap:.5rem}.volume-slider-row input[type=range]{flex:1 1 auto;min-width:0}.joystick-pill{position:relative;display:inline-flex}.joystick-pill-btn{cursor:pointer;font-family:inherit}.joystick-popup{position:absolute;top:calc(100% + .3rem);inset-inline-end:0;padding:.6rem;background:#0c0c0c;border:1px solid #2c2c2c;border-radius:4px;box-shadow:0 6px 18px #0000008c;z-index:2000;max-width:min(680px,92vw)}.joystick-popup-dev{margin:0 0 .3rem}.joystick-popup .js-diagram{margin-top:0}html[dir=rtl] .topbar nav{flex-direction:row-reverse}.login-lang{position:absolute;top:1rem;inset-inline-end:1rem}.tact-btn.auto-jam .state{font-size:.72rem;font-weight:700;padding:.1rem .45rem;border-radius:2px;background:#2a2a2a;color:#888;letter-spacing:.12em}.tact-btn.auto-jam.armed{background:#f8514938;border-color:#c9362f;color:#ffd8d5}.tact-btn.auto-jam.armed .state{background:#f85149;color:#fff}.tact-btn.jam-all{color:#ffcf8f}.tact-btn.jam-all:hover:not(:disabled){border-color:#d9a23a}.jammer-expand{width:100%;margin-top:.35rem;padding:.25rem .4rem;background:transparent;border:0;color:#8a8a8a;font-family:inherit;font-size:.72rem;letter-spacing:.06em;text-align:left;cursor:pointer}.jammer-expand:hover{color:#cfcfcf}.map-toolbar{position:absolute;top:.75rem;right:.75rem;z-index:1300;display:flex;flex-direction:column;gap:.35rem}.map-tool-wrap{position:relative}.map-tool{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#0a0a0ad9;border:1px solid rgba(180,180,180,.22);border-radius:4px;color:#d8d8d8;cursor:pointer;box-shadow:0 4px 14px #00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.map-tool:hover{border-color:#b4b4b473}.map-tool.active{border-color:#48c;color:#d6ecff}.map-tool[disabled]{opacity:.4;cursor:not-allowed}.map-tool-wide{width:auto;padding:0 .65rem;gap:.45rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.map-tool-pop{position:absolute;top:0;right:44px;min-width:11.5rem;background:#0a0a0af0;border:1px solid rgba(180,180,180,.22);border-radius:4px;padding:.5rem .6rem;box-shadow:0 8px 24px #0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1101}.map-tool-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1250}.pop-section{margin-bottom:.5rem}.pop-section:last-child{margin-bottom:0}.pop-label{font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#8b8b8b;margin-bottom:.25rem}.pop-row{display:flex;align-items:center;gap:.5rem;padding:.18rem 0;font-size:.83rem;cursor:pointer}.pop-row input{accent-color:#4488cc}.draw-toolbar{position:absolute;bottom:.75rem;left:50%;transform:translate(-50%);z-index:1100;min-width:30rem;max-width:90%;display:flex;flex-direction:column;gap:.5rem}.draw-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.draw-row input[type=text],.draw-row select{background:#161616;border:1px solid #2c2c2c;color:#d8d8d8;padding:.3rem .5rem;border-radius:3px;font-family:inherit;font-size:.85rem}.zone-form{display:grid;grid-template-columns:1fr;gap:.4rem}.zone-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.78rem;color:#b8b8b8}.zone-form input,.zone-form select{background:#161616;border:1px solid #2c2c2c;color:#d8d8d8;padding:.35rem .5rem;border-radius:3px;font-family:inherit;font-size:.85rem}.drone-card.classified-white .drone-class-dot{background:#7a7a7a;color:#1a1a1a}.zone-state-pill{display:inline-flex;align-items:center;justify-content:center;min-width:2.1rem;padding:.05rem .3rem;border-radius:2px;font-size:.6rem;font-weight:700;letter-spacing:.12em;border:1px solid currentColor;flex-shrink:0}.zone-state-pill.on{color:#3fb950;background:#3fb95024}.zone-state-pill.off{color:#8b8b8b;background:#7878781f}.zone-create-actions{display:flex;flex-direction:column;gap:.35rem;margin-top:.55rem;padding-top:.55rem;border-top:1px solid rgba(180,180,180,.18)}.zone-create-actions .tact-btn{justify-content:center;font-weight:600;letter-spacing:.05em}.drones-overlay{position:absolute;top:.75rem;left:.75rem;z-index:1200;width:19rem;max-height:calc(100% - 1.5rem);overflow-y:auto}.detection-column{position:absolute;top:.75rem;left:.75rem;z-index:1200;display:flex;flex-direction:column;gap:.5rem;width:19rem;max-height:calc(100% - 1.5rem);pointer-events:none}.detection-column>.drones-overlay{position:static;top:auto;left:auto;width:100%;max-height:calc(50vh - 2rem);pointer-events:auto}.detection-column>.drones-overlay:only-child{max-height:none}.drones-overlay h3{margin:0 0 .4rem;font-size:.7rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#9b9b9b}.drones-stack{display:flex;flex-direction:column;gap:.35rem}.drone-card{border:1px solid #2c2c2c;border-radius:3px;background:#161616;overflow:hidden;transition:border-color .1s ease,background .1s ease}.drone-card.open{border-color:#48c;background:#1c1c1c}.drone-card.cls-1{border-left:3px solid #6fb3ff}.drone-card.cls-2{border-left:3px solid #f5c84b}.drone-card.cls-3{border-left:3px solid #f85149}.drone-head{width:100%;display:flex;flex-direction:column;gap:.18rem;padding:.42rem .55rem;background:transparent;border:0;color:inherit;font-family:inherit;font-size:.83rem;text-align:left;cursor:pointer}.drone-head:hover{background:#ffffff0a}.drone-head-top{display:flex;align-items:center;gap:.35rem;min-width:0}.drone-head-bottom{display:flex;gap:.5rem;color:#b8b8b8;font-variant-numeric:tabular-nums;font-size:.76rem}.drone-head-bottom>span{white-space:nowrap}.drone-model{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.drone-class-dot{display:inline-flex;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;border-radius:50%;font-size:.62rem;font-weight:700;letter-spacing:0;flex-shrink:0}.drone-nogps{flex-shrink:0;font-size:.58rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:.05rem .3rem;border-radius:3px;color:var(--warn, #e6b85c);background:#e6b85c26;border:1px solid rgba(230,184,92,.4)}.drone-class-dot.white{background:#3fb950;color:#08220c;box-shadow:0 0 6px #3fb950b3}.drone-class-dot.black{background:#f85149;color:#2a0707;box-shadow:0 0 6px #f85149b3}.drone-head-bottom .metric-lbl{color:#7b7b7b;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;margin-right:.15rem}.drone-caret{background:transparent;border:0;padding:.05rem .35rem;margin:-.05rem -.35rem -.05rem 0;color:#7b7b7b;font-size:.95rem;line-height:1;font-family:inherit;cursor:pointer;flex-shrink:0;border-radius:3px}.drone-caret:hover{color:#ddd;background:#ffffff0f}.drone-caret:focus-visible{outline:1px solid #4488cc;outline-offset:1px}.drone-card.tracked{border-color:#f5c84b;box-shadow:0 0 0 1px #f5c84b80}.drone-card.lockable .drone-head{cursor:pointer}.drone-card.lockable .drone-head:hover{background:#6eb4ff0f}.drone-track-dot{color:#f5c84b;margin-right:.25rem;flex-shrink:0}.drone-sources{display:inline-flex;gap:.2rem;flex-shrink:0;margin-left:.15rem}.drone-source-chip{font-size:.58rem;letter-spacing:.05em;font-weight:600;padding:.05rem .32rem;border-radius:2.5px;border:1px solid;line-height:1.35}.drone-source-chip.src-rid{color:#6fb3ff;border-color:#6eb4ff66;background:#6eb4ff1a}.drone-source-chip.src-ocu_2_3{color:#7de08a;border-color:#7de08a59;background:#7de08a17}.drone-source-chip.src-ocu_4{color:#f5c84b;border-color:#f5c84b66;background:#f5c84b1a}.drone-body{display:flex;flex-direction:column;gap:.5rem;padding:0;border-top:1px solid #2c2c2c;background:#0000004d}.drone-image{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover;background:#0a0a0e;color:#d8d8d8;border-bottom:1px solid #1f1f1f}.drone-image-svg{padding:.4rem 1rem}.drone-image-svg svg{width:100%;height:100%;display:block}.video-spark-slot{display:block;width:100%;aspect-ratio:4 / 3;background:#0a0a0e;border-bottom:1px solid #1f1f1f}.video-spark{display:block;width:100%;height:100%}.drone-card.cls-video{border-left:3px solid #7de08a}.tactical-overlay-column{pointer-events:none;display:flex;flex-direction:column;gap:.5rem;align-items:stretch;min-width:8.5rem;max-width:11rem}.tactical-overlay-column>*{pointer-events:auto}.cerbo-rows{display:flex;flex-direction:column;gap:.25rem}.cerbo-row{padding:.15rem 0;font-size:.85rem;color:#d8d8d8;font-variant-numeric:tabular-nums}.cerbo-row.stale{color:#7a7a7a}.cerbo-row strong{color:#ececec;font-weight:600}.drone-image-btn{display:block;padding:0;margin:0;border:0;background:transparent;width:100%;cursor:zoom-in}.drone-image-btn:hover .drone-image{filter:brightness(1.06)}.drone-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#050508e0;z-index:3000;display:flex;align-items:center;justify-content:center;padding:2rem;cursor:zoom-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drone-lightbox img{max-width:min(92vw,1024px);max-height:92vh;width:auto;height:auto;border-radius:4px;box-shadow:0 8px 32px #0009;background:#fff}.drone-lightbox-close{position:absolute;top:1.2rem;right:1.4rem;background:#0000008c;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:50%;width:2.2rem;height:2.2rem;font-size:1.4rem;line-height:1;cursor:pointer}.drone-lightbox-close:hover{background:#000c}.drone-meta{display:flex;flex-direction:column;gap:.4rem;min-width:0;padding:.55rem .65rem .7rem}.drone-meta-row{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.drone-meta .badge{font-size:.7rem;font-weight:700;letter-spacing:.12em;padding:.1rem .4rem;border-radius:2px;border:1px solid currentColor;background:#0000004d}.drone-meta .badge.cls-1{color:#6fb3ff}.drone-meta .badge.cls-2{color:#f5c84b}.drone-meta .badge.cls-3{color:#f85149}.sensor-pill{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .4rem;border-radius:2px;font-size:.72rem;font-weight:600;letter-spacing:.08em;border:1px solid #333}.sensor-pill.on{color:#d6ecff;border-color:#48c;background:#4488cc2e}.sensor-pill.off{color:#555}.sensor-pill .sensor-icon{font-size:.85rem;line-height:1}.drone-notes{margin:0}.drone-detail{display:grid;grid-template-columns:auto 1fr;gap:.15rem .6rem;margin:0;font-size:.75rem}.drone-detail dt{color:#7b7b7b;letter-spacing:.06em}.drone-detail dd{margin:0;font-variant-numeric:tabular-nums}.drone-serial{margin:0 0 .25rem;font-size:.75rem;word-break:break-all}.drone-serial-label{color:#7b7b7b;letter-spacing:.06em}.drone-classify{display:flex;gap:.35rem;margin-top:.3rem}.drone-classify .tact-btn.classify{flex:1;justify-content:center;padding:.4rem;font-size:.75rem;font-weight:600;letter-spacing:.08em}.tact-btn.classify.white.active{background:#3fb95038;border-color:#3fb950;color:#d4ffd6}.tact-btn.classify.black.active{background:#f8514938;border-color:#f85149;color:#ffd8d5}.drone-card.classified-white{box-shadow:inset 3px 0 #3fb950}.drone-card.classified-black{box-shadow:inset 3px 0 #f85149}.tact-engage-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1400;background:#00000073;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.tact-engage-modal{width:22rem;max-width:90%;background:#080808f5;border:1px solid #2c2c2c;border-radius:4px;box-shadow:0 12px 40px #000000b3,0 0 0 1px #f851492e;color:#d8d8d8;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}.tact-engage-head{display:flex;align-items:center;justify-content:space-between;padding:.6rem .8rem;border-bottom:1px solid #2c2c2c}.tact-engage-title{color:#f85149;font-size:.78rem;font-weight:700;letter-spacing:.22em}.tact-engage-head .link-btn{font-size:1.2rem;line-height:1;color:#888}.tact-engage-body{padding:.7rem .85rem}.tact-engage-dl{display:grid;grid-template-columns:auto 1fr;gap:.25rem .7rem;margin:0 0 .6rem;font-size:.82rem}.tact-engage-dl dt{color:#8b8b8b}.tact-engage-dl dd{margin:0;font-variant-numeric:tabular-nums}.tact-engage-foot{display:flex;gap:.4rem;padding:.6rem .85rem;border-top:1px solid #2c2c2c}.tact-engage-foot>button{flex:1;justify-content:center}.tact-sensor-icon{background:transparent!important;border:0!important}.tact-sensor{width:20px;height:20px;border:2px solid #6fb3ff;border-radius:50%;background:#00000080;position:relative;box-shadow:0 0 0 1px #0009,0 0 10px #6fb3ffb3}.tact-sensor:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;background:#6fb3ff;border-radius:50%}.tact-flash{position:absolute;top:.75rem;left:50%;transform:translate(-50%);z-index:1500;padding:.5rem 1.1rem;background:#c9362f;color:#fff;font-weight:700;letter-spacing:.18em;font-size:.85rem;border-radius:3px;box-shadow:0 6px 22px #f8514999;animation:tact-flash-banner 3.5s ease-out forwards;pointer-events:none}.tactical .tactical-map:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:3px solid transparent;z-index:900;transition:border-color .2s linear,box-shadow .2s linear}.tactical:has(.tact-flash) .tactical-map:after{animation:tact-flash-border 3.5s ease-out forwards}@keyframes tact-flash-banner{0%{opacity:0;transform:translate(-50%,-8px)}10%{opacity:1;transform:translate(-50%)}80%{opacity:1}to{opacity:0}}@keyframes tact-flash-border{0%,to{border-color:transparent;box-shadow:inset 0 0 #f8514900}10%,60%{border-color:#f85149;box-shadow:inset 0 0 60px #f8514973}35%{border-color:#f8514966;box-shadow:inset 0 0 30px #f8514940}}.tact-flash.ack{animation:tact-flash-in .25s ease-out;pointer-events:auto;display:flex;align-items:center;gap:.8rem}@keyframes tact-flash-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.tact-flash-ack{background:#fff;color:#c9362f;border:0;border-radius:3px;padding:.2rem .6rem;font-family:inherit;font-weight:700;font-size:.72rem;letter-spacing:.1em;cursor:pointer}.tact-flash-ack:hover{background:#ffe3e1}.debug-page{display:flex;flex-direction:column;height:100%;min-height:0;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.debug-bar{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;border-bottom:1px solid #222;background:#0f0f0f;flex-wrap:wrap}.debug-bar h2{margin:0;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:#8a8a8a}.debug-toggle{font-family:inherit;font-size:.7rem;padding:.25rem .6rem;border-radius:3px;border:1px solid;cursor:pointer;letter-spacing:.06em}.debug-toggle.on{color:#6f6;border-color:#4a8;background:#50c87826}.debug-toggle.off{color:#fa6;border-color:#a74;background:#c878281a}.debug-toggle:disabled{opacity:.4;cursor:default}.debug-ws{font-size:.65rem;padding:.15rem .4rem;border-radius:3px;border:1px solid #333;color:#7a7a7a;letter-spacing:.06em}.debug-ws.open{color:#6f6;border-color:#4a8}.debug-ws.closed{color:#f85149;border-color:#a44}.debug-ws.connecting{color:#f5c84b;border-color:#a74}.debug-filter{flex:1 1 240px;min-width:200px;font-family:inherit;font-size:.75rem;background:#161616;border:1px solid #2a2a2a;color:#ddd;padding:.25rem .5rem;border-radius:3px}.debug-filter:focus{outline:none;border-color:#5a5a5a}.debug-pause,.debug-clear{font-family:inherit;font-size:.7rem;padding:.25rem .5rem;border-radius:3px;border:1px solid #333;background:#181818;color:#ccc;cursor:pointer}.debug-pause.active{color:#f5c84b;border-color:#a74}.debug-stats{display:flex;gap:.4rem;font-size:.68rem;color:#888;flex-wrap:wrap}.debug-stats .err{color:#f85149}.debug-stats .cam-pill{border:1px solid #2a2a2a;padding:.05rem .35rem;border-radius:3px}.debug-table-wrap{flex:1 1 auto;overflow:auto;background:#0a0a0a}.debug-table{width:100%;border-collapse:collapse;font-size:.7rem}.debug-table thead th{position:sticky;top:0;background:#161616;color:#888;text-align:left;font-weight:600;font-size:.62rem;letter-spacing:.06em;padding:.35rem .5rem;border-bottom:1px solid #2a2a2a}.debug-table tbody td{padding:.2rem .5rem;border-bottom:1px solid #141414;white-space:nowrap;color:#ccc}.debug-table tbody tr:hover td{background:#131313}.debug-table .t-ts{color:#7a7a7a;width:7.5rem}.debug-table .t-cam{color:#6fb3ff;width:8rem}.debug-table .t-method{color:#a371f7;width:2.5rem}.debug-table .t-url{color:#ddd;max-width:1px;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.debug-table .t-status{width:3.5rem}.debug-table .t-ms{width:4rem;text-align:right;color:#888}.debug-table .t-bytes{width:4rem;text-align:right;color:#666}.tr-status{font-variant-numeric:tabular-nums}.tr-status.ok{color:#6f6}.tr-status.info{color:#6fb3ff}.tr-status.warn{color:#f5c84b}.tr-status.err{color:#f85149}.debug-sys{border-bottom:1px solid #222;padding:.5rem .75rem .6rem;background:#0c0c0c}.debug-sys-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.5rem;margin-top:.3rem}.debug-sys-card{border:1px solid #1c1c1c;border-radius:3px;background:#0a0a0a;padding:.35rem .55rem .4rem;min-height:3.4rem;display:flex;flex-direction:column}.debug-sys-card-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.15rem}.debug-sys-label{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:#7a7a7a}.debug-sys-value{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:1.05rem;font-weight:600;color:#eaeaea}.debug-sys-value.warn{color:#f5c84b}.debug-sys-value.err{color:#f85149}.debug-sys-sub{margin-top:.15rem;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.62rem}.debug-spark{width:100%;height:28px;display:block;overflow:visible}.debug-mtx{border-bottom:1px solid #222;padding:.5rem .75rem .6rem;background:#0c0c0c}.debug-mtx-head{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.3rem}.debug-mtx-head h2{margin:0;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:#8a8a8a}.debug-mtx-err{color:#f5c84b;font-size:.7rem}.debug-mtx-table{table-layout:fixed}.debug-mtx-table td{padding:.2rem .5rem}.debug-drops{margin-top:.4rem}.debug-drops summary{cursor:pointer;font-size:.7rem;color:#888;padding:.2rem 0;display:flex;align-items:center;gap:.4rem}.debug-drops summary::-webkit-details-marker{color:#555}.debug-whep-scroll{max-height:320px;overflow-y:auto;border:1px solid #161616;border-radius:3px}.debug-whep-chips{display:inline-flex;gap:.3rem;margin-left:auto;align-items:center}.debug-chip{font-family:inherit;font-size:.65rem;padding:.15rem .45rem;border-radius:3px;border:1px solid #2a2a2a;background:#181818;color:#888;cursor:pointer;letter-spacing:.04em}.debug-chip.active{color:#6fb3ff;border-color:#4a7;background:#6eb4ff1a}.debug-netbox{margin-top:.6rem;padding:.5rem;border:1px solid #1c1c1c;border-radius:3px;background:#0c0c0c}.debug-netbox-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.ptz-mode-chip{font-family:inherit;font-size:.62rem;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px;border:1px solid;cursor:pointer;margin-top:.3rem;align-self:center}.ptz-mode-chip.continuous{color:#f5c84b;border-color:#a74;background:#f5c84b1a}.ptz-mode-chip.relative{color:#6f6;border-color:#4a8;background:#50c8781f}.gp-mode-toggle{display:inline-flex;gap:.25rem}.gp-mode-btn{font-family:inherit;font-size:.68rem;padding:.2rem .5rem;border-radius:3px;border:1px solid #2a2a2a;background:#181818;color:#888;cursor:pointer;letter-spacing:.04em}.gp-mode-btn.active{color:#6fb3ff;border-color:#4a7;background:#6eb4ff1a}.guide-page{max-width:900px;margin:0 auto;padding:1.25rem 1.5rem 3rem;color:#d0d0d0;line-height:1.5}.guide-head h1{margin:0 0 .2rem;font-size:1.15rem;letter-spacing:.03em}.guide-head{margin-bottom:1.5rem}.guide-section{margin-bottom:1.5rem;padding-bottom:1.2rem;border-bottom:1px solid #1f1f1f}.guide-section:last-child{border-bottom:0}.guide-section h2{margin:0 0 .6rem;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;color:#7fb0ff}.guide-section ul{margin:0;padding-left:1.1rem}.guide-section li{margin:.3rem 0;font-size:.86rem}.guide-section p{font-size:.86rem;margin:.4rem 0}.guide-legend{display:flex;flex-direction:column;gap:.4rem}.guide-legend-row{display:flex;align-items:center;gap:.6rem;font-size:.86rem}.guide-dot{width:14px;height:14px;border-radius:50%;flex:0 0 auto;border:1px solid rgba(255,255,255,.25)}.guide-state-chip{font-weight:700;font-size:.72rem;letter-spacing:.08em;min-width:4.5rem;flex:0 0 auto}.guide-swatches{display:flex;flex-wrap:wrap;gap:.8rem;margin-bottom:.6rem}.guide-swatch-row{display:flex;align-items:center;gap:.4rem}.guide-swatch{width:22px;height:22px;border-radius:3px;border:1px solid rgba(255,255,255,.35)}.guide-diagram-wrap{margin:.6rem 0 .8rem}@media(max-width:1024px){.tactical .detection-column{width:15rem}.tactical .overlay-panel{min-width:7rem;max-width:9.5rem;padding:.4rem .5rem}.tactical .cam-overlay-visual{width:min(807px,46vw)}.tactical .cam-overlay-thermal{width:min(568px,32vw)}.tactical .cam-overlay{height:min(480px,34vh)}.tactical .tact-btn{padding:.35rem .5rem;font-size:.8rem}}@media(max-height:900px){.tactical .tactical-overlays .overlay-panel{max-width:10rem}}@media(max-width:780px){html,body{overflow-x:hidden}.topbar{gap:.5rem;padding:0 .75rem;justify-content:space-between}.brand{min-width:0;padding-right:0;border-right:none}.nav-toggle{display:inline-flex;align-items:center}.topbar-menu{display:none;position:absolute;top:3.25rem;left:0;right:0;flex-direction:column;gap:.25rem;background:var(--panel-elev, #131a26);border-bottom:1px solid var(--border);padding:.5rem .75rem;box-shadow:var(--shadow-sm);z-index:3000;max-height:calc(100vh - 3.25rem);overflow-y:auto}.topbar-menu.open{display:flex}.topbar nav{flex-direction:column;gap:.15rem;flex:none}.topbar nav a{padding:.6rem .7rem;font-size:.95rem}.status-pills{flex-wrap:wrap;gap:.4rem;padding-top:.5rem;margin-top:.25rem;border-top:1px solid var(--border)}.detection-column{left:.4rem;right:.4rem;width:auto;max-height:42vh}.detection-column>.drones-overlay,.detection-column>.drones-overlay:only-child{max-height:42vh}.drones-overlay{width:auto;max-width:calc(100vw - .8rem)}.tactical-overlays{top:auto;bottom:.4rem;right:.4rem;left:auto;flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - .8rem)}.page{padding:.6rem}.replay-map{display:flex;flex-direction:column;gap:.4rem;overflow:visible;border:none;padding:0;min-height:0}.replay-map>.leaflet-container{order:2;height:52vh!important;min-height:240px;border:1px solid var(--border);border-radius:var(--radius)}.replay-tracks,.replay-jammer-stats{position:static;width:auto;max-width:none;background:var(--panel);border-color:var(--border);-webkit-backdrop-filter:none;backdrop-filter:none}.replay-tracks{order:1;max-height:40vh}.replay-jammer-stats{order:3;max-height:32vh}.replay-page .replay-controls{flex-wrap:wrap}.replay-page .replay-controls input[type=range]{flex-basis:100%;order:5}}
