.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}}@font-face{font-family:Space Grotesk Fallback;src:local("Inter"),local("Helvetica Neue"),local("Arial");font-display:swap;size-adjust:96%}:root{color-scheme:light;font-family:Space Grotesk,Space Grotesk Fallback,system-ui,-apple-system,sans-serif;--bg-body: #f7f4ef;--bg-gradient: radial-gradient(circle at top left, #fff8ef 0%, #f7f4ef 35%, #efe7db 100%);--bg-surface: #ffffff;--bg-surface-muted: #fff7ef;--bg-surface-soft: #f7f0e6;--bg-toggle-indicator: linear-gradient(135deg, rgba(255, 255, 255, .7), rgba(255, 255, 255, .35));--bg-topbar: rgba(235, 225, 214, .95);--bg-overlay: rgba(17, 18, 23, .35);--ink: #111217;--ink-strong: #1b1b20;--text: #101316;--text-muted: #5a5f66;--text-subtle: #6a5c50;--text-inverse: #fef7ef;--border: #eadac9;--border-soft: #ece3d7;--border-strong: #d9c5ad;--accent: #ff7a1a;--accent-dark: #d25a03;--accent-soft: color-mix(in srgb, var(--accent) 12%, transparent);--accent-border: color-mix(in srgb, var(--accent) 55%, transparent);--accent-text: #b14a08;--success: #2ecc71;--success-dark: #24b863;--danger: #ff3b30;--danger-text: #b24a2c;--danger-bg: #ffe9e3;--danger-border: #ffd1c2;--warn: #ff9f1a;--status-online: #2ecc71;--status-offline: #ff3b30;--shadow-sm: 0 8px 18px rgba(30, 18, 5, .12);--shadow-md: 0 12px 28px rgba(30, 18, 5, .14);--shadow-lg: 0 20px 50px rgba(30, 18, 5, .12);--shadow-card: 0 1px 2px rgba(20, 18, 10, .06), 0 8px 20px rgba(20, 18, 10, .05);--shadow-card-hover: 0 2px 4px rgba(20, 18, 10, .08), 0 12px 28px rgba(20, 18, 10, .08);--shadow-modal: 0 24px 60px rgba(17, 18, 23, .22);--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-2xl: 20px;--radius-pill: 999px;--topbar-height: 64px;--page-padding-x: clamp(16px, 6vw, 72px);--transition-fast: .18s ease;--transition-med: .32s cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-emphasis: cubic-bezier(.16, 1, .3, 1);--dur-1: .12s;--dur-2: .2s;--dur-3: .32s;--dur-4: .46s;--slide-ease: cubic-bezier(.32, .72, 0, 1);--slide-dur: .42s;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-8: 48px;--focus-ring: 0 0 0 3px rgba(255, 122, 26, .35);--focus-ring-offset: 2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes stagger-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}:where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}:root.theme-dark{color-scheme:dark;--bg-body: #0f151d;--bg-gradient: radial-gradient(circle at top left, #17212d 0%, #0f151d 45%, #0b1118 100%);--bg-surface: #161c24;--bg-surface-muted: #1b2430;--bg-surface-soft: #1d2633;--bg-toggle-indicator: linear-gradient(135deg, rgba(56, 70, 90, .9), rgba(37, 48, 63, .9));--bg-topbar: rgba(15, 21, 30, .94);--bg-overlay: rgba(0, 0, 0, .5);--ink: #e6edf7;--ink-strong: #f2f7ff;--text: #dfe7f3;--text-muted: #a9b3c1;--text-subtle: #95a3b7;--text-inverse: #111924;--border: #2c3643;--border-soft: #223040;--border-strong: #3a475b;--accent-soft: rgba(255, 122, 26, .16);--accent-text: #ffb27d;--danger: #8b2217;--danger-bg: rgba(255, 77, 79, .18);--danger-text: #ffb8b8;--danger-border: rgba(255, 77, 79, .35);--shadow-sm: 0 8px 18px rgba(5, 8, 12, .32);--shadow-md: 0 10px 24px rgba(5, 8, 12, .4);--shadow-lg: 0 20px 46px rgba(4, 8, 12, .35);--shadow-card: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 20px rgba(0, 0, 0, .25);--shadow-card-hover: 0 2px 4px rgba(0, 0, 0, .35), 0 12px 28px rgba(0, 0, 0, .35);--shadow-modal: 0 24px 60px rgba(0, 0, 0, .6);--focus-ring: 0 0 0 3px rgba(255, 178, 125, .45)}:root.theme-tactical{color-scheme:dark;--bg-body: #1c1c1c;--bg-gradient: #1c1c1c;--bg-surface: #242424;--bg-surface-muted: #1f1f1f;--bg-surface-soft: #2a2a2a;--bg-toggle-indicator: #3a3a3a;--bg-topbar: #181818;--bg-overlay: rgba(0, 0, 0, .65);--ink: #d0d0d0;--ink-strong: #e6e6e6;--text: #bababa;--text-muted: #828282;--text-subtle: #5e5e5e;--text-inverse: #1c1c1c;--border: #333333;--border-soft: #2a2a2a;--border-strong: #4a4a4a;--accent: #a0a0a0;--accent-dark: #888888;--accent-soft: rgba(160, 160, 160, .1);--accent-border: #5a5a5a;--accent-text: #d0d0d0;--success: #b0b0b0;--success-dark: #909090;--status-online: #c0c0c0;--status-offline: #4a4a4a;--warn: #b89060;--warn-soft: rgba(184, 144, 96, .1);--danger: #c43030;--danger-text: #d05858;--danger-bg: rgba(196, 48, 48, .1);--danger-border: rgba(196, 48, 48, .5);--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--shadow-card: none;--shadow-card-hover: none;--shadow-modal: 0 4px 16px rgba(0, 0, 0, .5);--radius-sm: 0;--radius-md: 0;--radius-lg: 0;--radius-xl: 0;--radius-2xl: 0;--radius-pill: 0;--topbar-height: 40px;--transition-fast: 0ms;--transition-med: 0ms;--focus-ring: 0 0 0 1px #909090;--tactical-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;background:var(--bg-gradient);color:var(--text);font-family:Space Grotesk,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.no-scroll{overflow:hidden}pre{white-space:pre-wrap;word-break:break-word}.muted{color:var(--text-muted);font-size:13px}.app{min-height:100vh}.intro-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:var(--bg-gradient);animation:intro-fade 1.4s cubic-bezier(.22,1,.36,1) forwards}.intro-logo{font-size:clamp(40px,10vw,120px);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);animation:intro-logo 1.4s cubic-bezier(.22,1,.36,1) forwards;display:inline-flex;gap:.06em;align-items:center}.intro-logo-icon{width:clamp(28px,6vw,72px);height:clamp(28px,6vw,72px);object-fit:contain;margin-right:.12em;filter:drop-shadow(0 10px 18px rgba(30,18,5,.18))}.intro-logo span{display:inline-block;opacity:0;transform:translateY(12px);animation:intro-letter .52s ease forwards;animation-delay:var(--intro-delay, 0ms)}@keyframes intro-logo{0%,70%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:0}}@keyframes intro-fade{0%,85%{opacity:1}to{opacity:0;pointer-events:none}}@keyframes intro-letter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:where(button,a,input,select,textarea,[tabindex]):focus{outline:none}:where(button,a,[role=button],[role=tab],[tabindex]):focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-md)}:where(input,select,textarea):focus-visible{outline:none;border-color:var(--accent-border);box-shadow:var(--focus-ring)}:where(button,a,input,select,textarea):disabled,:where(button,a,[role=button])[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}.ghost-button{border:1px solid var(--border);background:transparent;color:var(--text-subtle);padding:8px 14px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast)}.ghost-button:hover:not(:disabled){border-color:var(--border-strong);color:var(--ink-strong)}.ghost-button:disabled{opacity:.55;cursor:not-allowed}.ghost-button--active{border-color:var(--border-strong);background:var(--ink-strong);color:var(--text-inverse)}.ghost-button--active:hover:not(:disabled){color:var(--text-inverse)}:root.theme-dark .ghost-button{color:var(--text)}.primary-button{border:none;background:var(--ink-strong);color:var(--text-inverse);padding:12px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:transform var(--transition-fast),opacity var(--transition-fast)}.primary-button:hover:not(:disabled){transform:translateY(-1px)}.primary-button:disabled{opacity:.55;cursor:not-allowed}:root.theme-dark .primary-button{background:var(--ink);color:var(--text-inverse)}.danger-button{border-color:var(--danger-border);color:var(--danger-text)}.danger-button:disabled{opacity:.55;cursor:not-allowed}.segmented{--segmented-count: 2;display:grid;grid-template-columns:repeat(var(--segmented-count),minmax(0,1fr));gap:0;background:var(--bg-surface-soft);border:1px solid var(--border);border-radius:var(--radius-pill);padding:4px;position:relative;overflow:hidden}.segmented:before{content:"";position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / var(--segmented-count));border-radius:var(--radius-pill);background:var(--bg-toggle-indicator);box-shadow:inset 0 0 0 1px #ffffffa6,var(--shadow-sm);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%);transform:translate(calc(var(--segmented-active, 0) * 100%));transition:transform var(--transition-med)}:root.theme-dark .segmented:before{box-shadow:inset 0 0 0 1px #a0b4cd29,0 8px 18px #05080c52}.segmented button{border:none;background:transparent;padding:6px 14px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);cursor:pointer;position:relative;z-index:1;text-align:center;white-space:nowrap;transition:color var(--transition-fast)}.segmented button.active{color:var(--ink-strong)}:root.theme-dark .segmented button.active{color:var(--ink-strong)}.segmented button:disabled{opacity:.55;cursor:not-allowed}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--bg-surface-muted);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.status-pill-dot{width:8px;height:8px;border-radius:var(--radius-pill);background:#9aa3ad}.status-pill-dot.online{background:var(--status-online);box-shadow:0 0 6px #2ecc71b3;animation:breathing-pulse 2.4s ease-in-out infinite}@keyframes breathing-pulse{0%,to{box-shadow:0 0 4px #2ecc7180;transform:scale(1)}50%{box-shadow:0 0 10px #2ecc71d9;transform:scale(1.08)}}.status-pill-dot.offline{background:var(--status-offline);box-shadow:0 0 6px #ff3b3099}.status-pill-dot.checking{background:var(--warn);box-shadow:0 0 6px #ff9f1a99;animation:pulse-dot 1.4s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.status-dot{width:16px;height:16px;border-radius:var(--radius-pill);background:var(--bg-surface-soft);display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px #11121714;flex:0 0 auto}.status-dot-inner{width:8px;height:8px;border-radius:var(--radius-pill)}.status-dot-inner.online{background:var(--status-online);box-shadow:0 0 8px #2ecc7199;animation:breathing-pulse 2.4s ease-in-out infinite}.status-dot-inner.offline{background:var(--ink-strong);box-shadow:0 0 8px #11121759}:root.theme-dark .status-dot{background:#222d3a;box-shadow:inset 0 0 0 1px #d3dfed1f}:root.theme-dark .status-dot-inner.offline{background:#0d1117}.field{display:grid;gap:6px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;font-size:14px;font-family:inherit;background:var(--bg-surface);color:var(--text);transition:border-color var(--transition-fast)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent-border)}.field input[aria-invalid=true],.field select[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--danger-border)}.field input[aria-invalid=true]:focus-visible,.field select[aria-invalid=true]:focus-visible,.field textarea[aria-invalid=true]:focus-visible{border-color:var(--danger);box-shadow:0 0 0 3px #ff3b3040}.form-error{background:var(--danger-bg);color:var(--danger-text);border-radius:var(--radius-md);padding:10px 12px;font-size:12px;margin-top:4px}.form-hint{background:var(--bg-surface-muted);color:var(--text-muted);border-radius:var(--radius-md);padding:10px 12px;font-size:12px;margin-top:4px}.state-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:28px 20px;border-radius:var(--radius-lg);border:1px dashed var(--border);background:var(--bg-surface-muted);color:var(--text-muted);text-align:center}.state-block--error{border-style:solid;border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-text)}.state-block-title{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text)}.state-block--error .state-block-title{color:var(--danger-text)}.state-block-text{font-size:13px;line-height:1.5;max-width:38ch}.skeleton{position:relative;overflow:hidden;background:var(--bg-surface-soft);border-radius:var(--radius-md);min-height:14px}.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.45) 50%,transparent 100%);animation:skeleton-shimmer 1.4s ease-in-out infinite;transform:translate(-100%)}:root.theme-dark .skeleton:after{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.08) 50%,transparent 100%)}.skeleton-row{height:14px;margin-bottom:8px}.skeleton-row:last-child{margin-bottom:0}@keyframes skeleton-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:spinner-rotate .8s linear infinite;display:inline-block;vertical-align:middle}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.modal-backdrop{position:fixed;inset:0;background:var(--bg-overlay);display:grid;place-items:center;padding:24px;z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-card{background:var(--bg-surface);border-radius:var(--radius-2xl);padding:24px;width:min(420px,100%);box-shadow:var(--shadow-modal);border:1px solid var(--border);animation:modal-rise .22s ease}.modal-card h3{font-size:18px;margin-bottom:8px;color:var(--text)}.modal-text{color:var(--text-muted);font-size:13px;margin-bottom:18px;line-height:1.5}.modal-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}@keyframes modal-rise{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:520px){.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.qr-scanner-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009;padding:20px}.qr-scanner-modal{width:100%;max-width:360px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg, 12px);overflow:hidden;box-shadow:var(--shadow-lg)}.qr-scanner-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-weight:600;color:var(--text);border-bottom:1px solid var(--border)}.qr-scanner-close{appearance:none;border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:4px;line-height:0}.qr-scanner-close svg{width:20px;height:20px;stroke:currentColor;stroke-width:2;stroke-linecap:round;fill:none}.qr-scanner-video-wrap{position:relative;aspect-ratio:1;background:#000}.qr-scanner-video{width:100%;height:100%;object-fit:cover}.qr-scanner-frame{position:absolute;inset:18%;border:2px solid rgba(255,255,255,.85);border-radius:12px;box-shadow:0 0 0 9999px #00000040}.qr-scanner-error{padding:24px 16px;color:var(--danger-text);font-size:14px;text-align:center}.scan-splash{position:fixed;inset:0;z-index:1100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center;color:var(--text);background:var(--bg-surface);animation:scan-splash-in .18s ease-out}.scan-splash--added{--splash-accent: #3a9d6e;background:var(--bg-surface)}.scan-splash--already{--splash-accent: #6b7785}.scan-splash--invalid{--splash-accent: #c0564f}@keyframes scan-splash-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.scan-splash-icon svg{width:104px;height:104px}.scan-splash-circle{stroke:var(--splash-accent);stroke-width:3;stroke-dasharray:151;stroke-dashoffset:151;animation:scan-splash-circle .5s ease-out forwards}.scan-splash-mark{stroke:var(--splash-accent);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:60;stroke-dashoffset:60;animation:scan-splash-mark .35s .42s ease-out forwards}@keyframes scan-splash-circle{to{stroke-dashoffset:0}}@keyframes scan-splash-mark{to{stroke-dashoffset:0}}.scan-splash-text{font-size:24px;font-weight:700;letter-spacing:.01em}.scan-splash-sub{font-size:14px;color:var(--text-muted)}.bottom-tabbar{display:none}@media(max-width:720px){.bottom-tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:900;padding:0 12px calc(2px + env(safe-area-inset-bottom)/2);background:transparent;border-top:0;pointer-events:none}.bottom-tabbar-seg{position:relative;flex:1;display:flex;padding:5px;border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--bg-surface) 65%,transparent);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);box-shadow:0 8px 30px #00000024,inset 0 1px #ffffff59;pointer-events:auto}.map-open .bottom-tabbar-seg{background:color-mix(in srgb,var(--bg-surface) 38%,transparent);backdrop-filter:saturate(200%) blur(30px);-webkit-backdrop-filter:saturate(200%) blur(30px);border-color:color-mix(in srgb,var(--border) 45%,transparent)}.bottom-tab-indicator{position:absolute;top:5px;bottom:5px;left:5px;width:calc((100% - 10px) / var(--tab-count, 3));border-radius:var(--radius-pill);background:var(--bg-surface);box-shadow:var(--shadow-card);transform:translate(calc(var(--tab-active, 0) * 100%));transition:transform var(--slide-dur) var(--slide-ease);pointer-events:none}.bottom-tab{position:relative;z-index:1;flex:1 1 0;appearance:none;border:0;background:transparent;display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:4px;color:var(--text-subtle);cursor:pointer;border-radius:var(--radius-pill);transition:color var(--dur-2) var(--ease-out)}.bottom-tab-icon{width:18px;height:18px;flex:0 0 auto}.bottom-tab-label{font-size:13px;font-weight:600;letter-spacing:.02em}.bottom-tab.active{color:var(--text)}.app-main,main,.device-list-section,.region-list,.admin-section{padding-bottom:calc(78px + env(safe-area-inset-bottom))!important}}.region-list,.admin-section,.map-section{animation:rise-in var(--dur-3) var(--ease-emphasis) both}button:not(:disabled){transition:transform var(--dur-1) var(--ease-out),background-color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}button:not(:disabled):active{transform:scale(.97)}.bottom-tab:active,.status-dot-btn:active,.region-delete-button:active,.device-rename-button:active{transform:none}@media(max-width:720px){.bottom-tab--more{color:var(--text-subtle)}.bottom-tab--more.active{color:var(--text)}}.more-sheet-backdrop{position:fixed;inset:0;z-index:1100;background:var(--bg-overlay, rgba(17, 18, 23, .35));backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:flex-end;animation:fade-in var(--dur-2) var(--ease-out)}.more-sheet{width:100%;background:var(--bg-surface);border-radius:22px 22px 0 0;border-top:1px solid var(--border);padding:8px 12px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -8px 40px #0000002e;animation:sheet-up var(--dur-3) var(--ease-emphasis)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.more-sheet-handle{width:38px;height:4px;border-radius:999px;background:var(--border-strong);margin:6px auto 12px}.more-sheet-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;appearance:none;border:0;background:transparent;padding:15px 12px;border-radius:var(--radius-md);color:var(--text);font-size:16px;font-weight:500;text-align:left;cursor:pointer;transition:background var(--dur-1) var(--ease-out)}.more-sheet-item:not(:last-child){border-bottom:1px solid var(--border-soft);border-radius:0}.more-sheet-item:active{background:var(--bg-surface-soft)}.more-sheet-value{color:var(--text-muted);font-size:14px;font-weight:600}.more-sheet-item--danger{color:var(--danger)}.more-sheet-seg-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-bottom:1px solid var(--border-soft)}.more-sheet-seg-label{font-size:14px;font-weight:500;color:var(--text)}.more-seg{display:inline-flex;padding:3px;border-radius:var(--radius-pill);background:var(--bg-surface-muted);border:1px solid var(--border)}.more-seg button{appearance:none;border:0;background:transparent;color:var(--text-subtle);font-size:13px;font-weight:600;padding:6px 16px;border-radius:var(--radius-pill);cursor:pointer;transition:color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.more-seg button.active{color:var(--text);background:var(--bg-surface);box-shadow:var(--shadow-card)}.topbar{position:sticky;position:-webkit-sticky;top:0;z-index:110;background:var(--bg-topbar);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);padding:12px var(--page-padding-x);display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--topbar-height);transition:background var(--transition-base, .25s ease),border-color var(--transition-base, .25s ease)}.topbar--offline{background:var(--danger);border-bottom-color:var(--danger-dark, #a01818);color:#fff}.topbar--offline .brand-title,.topbar--offline .topbar h1,.topbar--offline .status-pill{color:#fff}.topbar--offline .status-pill{background:#ffffff24;border-color:#ffffff59}.topbar--offline .ghost-button{color:#fff;border-color:#ffffff80}.topbar--offline .ghost-button:hover:not(:disabled){border-color:#fff;color:#fff}:root.theme-dark .topbar{border-bottom-color:var(--border)}.topbar-brand{display:inline-flex;align-items:center;gap:12px;min-width:0}.topbar h1{font-size:20px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}.topbar-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.topbar-hint{font-size:12px;color:var(--text-subtle);background:var(--bg-surface-muted);border:1px dashed var(--border);border-radius:var(--radius-lg);padding:6px 10px;white-space:nowrap}.status-strip{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.status-pill-version{font-size:11px;letter-spacing:.06em;text-transform:none}.logout-button{border-color:var(--accent-border);color:var(--accent-text);background:var(--accent-soft)}.logout-button:hover:not(:disabled){background:#ff7a1a33}.theme-toggle-button{min-width:76px}.topbar-menu-wrap{position:relative;display:none}.topbar-menu-button{width:38px;height:38px;padding:0;display:inline-grid;place-items:center}.topbar-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:250;min-width:220px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:4px;display:flex;flex-direction:column}.topbar-menu-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:transparent;border:0;font:inherit;font-size:14px;color:var(--text);text-align:left;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.topbar-menu-item:hover:not(:disabled){background:var(--bg-surface-soft)}.topbar-menu-item--danger{color:var(--danger-text)}.topbar-menu-item--danger:hover:not(:disabled){background:var(--danger-bg)}.topbar-menu-value{font-size:12px;color:var(--text-subtle);letter-spacing:.04em}.region-filter-open-button{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 8px;cursor:pointer;color:var(--text);display:inline-flex;align-items:center;transition:border-color var(--transition-fast),color var(--transition-fast)}.region-filter-open-button svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.region-filter-open-button:hover{border-color:var(--border-strong);color:var(--accent)}.page{padding:24px var(--page-padding-x) 60px}.map-open .topbar{border-bottom-color:transparent}.auth-panel{min-height:calc(100vh - var(--topbar-height));display:grid;place-items:center;padding:32px var(--page-padding-x)}.auth-card{width:min(480px,100%);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-2xl);padding:32px;box-shadow:var(--shadow-lg)}.auth-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.auth-header h2{font-size:20px;color:var(--text)}.auth-card form{display:grid;gap:16px}.auth-card form .primary-button{margin-top:8px}.admin-section,.changelog-page{padding:24px var(--page-padding-x) 60px}.changelog-page{display:grid;place-items:start center}.changelog-card,.admin-card{width:100%;max-width:900px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:24px;box-shadow:var(--shadow-lg)}.changelog-card{display:grid;gap:16px}.changelog-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.changelog-header h2{font-size:22px;color:var(--text)}.changelog-list{display:grid;gap:10px}.changelog-item{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-surface-muted);padding:12px 14px}.changelog-item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;flex-wrap:wrap}.changelog-item summary::-webkit-details-marker{display:none}.changelog-version{font-size:14px;font-weight:700;color:var(--text)}.changelog-date{font-size:12px;color:var(--text-subtle)}.changelog-item ul{margin:10px 0 4px;padding-left:20px;display:grid;gap:6px}.changelog-item li{font-size:14px;color:var(--text)}.list-page-layout{position:relative;padding:24px var(--page-padding-x) 60px}.region-list{display:grid;gap:28px}.list-empty-text{margin:40px auto;color:var(--text-subtle);text-align:center;max-width:480px}.region-drawer-backdrop{position:fixed;inset:0;z-index:200;background:#11121740;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.region-filter-sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;background:var(--bg-surface);border-right:1px solid var(--border);box-shadow:4px 0 32px #11121726;display:flex;flex-direction:column;gap:12px;padding:18px 16px;z-index:201;transform:translate(-100%);transition:transform .22s ease;overflow:hidden}.region-filter-sidebar--open{transform:translate(0)}.region-filter-header-row{display:flex;align-items:center;justify-content:space-between}.region-filter-header{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text)}.region-filter-close{background:none;border:none;cursor:pointer;color:var(--text-subtle);padding:4px;display:inline-flex;align-items:center;border-radius:var(--radius-sm);transition:color var(--transition-fast),background var(--transition-fast)}.region-filter-close:hover{color:var(--text);background:var(--bg-surface-soft)}.region-filter-close svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.region-filter-search{width:100%;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-surface-muted);font-size:13px;color:var(--text);font-family:inherit;outline:none;transition:border-color var(--transition-fast)}.region-filter-search:focus{border-color:var(--accent-border)}.region-filter-toggle-all{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);cursor:pointer;text-align:left;transition:border-color var(--transition-fast),color var(--transition-fast)}.region-filter-toggle-all:hover{border-color:var(--border-strong);color:var(--text)}.region-filter-list{list-style:none;display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1;margin:0 -4px;padding:0 4px}.region-filter-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:13px;color:var(--text);padding:6px 4px;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.region-filter-label:hover{background:var(--bg-surface-soft)}.region-filter-checkbox{accent-color:var(--accent);width:16px;height:16px;flex-shrink:0;cursor:pointer}.region-block{display:grid;gap:16px}.region-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.region-title-row--bare{gap:0}.region-title-row:before,.region-title-row:after{content:"";flex:1;height:1px;background:var(--border)}.region-title{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text);padding:6px 14px;border-radius:var(--radius-pill);background:var(--bg-surface-muted);border:1px solid var(--border)}.region-delete-button{appearance:none;border:0;background:transparent;padding:5px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:var(--text-subtle);cursor:pointer;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast),background var(--transition-fast)}.region-block:hover .region-delete-button,.region-delete-button:focus-visible{opacity:1}.region-delete-button:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}@media(hover:none){.region-delete-button{opacity:.55}}.region-gateway-badge{width:28px;height:28px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--bg-surface-muted);color:var(--text);font-size:12px;font-weight:700;line-height:1}.region-gateway-badge-online{background:var(--success);border-color:var(--success-dark);color:#fff}.region-gateway-badge-offline{background:var(--danger);border-color:#e2342a;color:#fff}.region-list-toolbar{display:flex;justify-content:flex-end;gap:8px;margin-bottom:8px}.region-group-tag{font-size:11px;font-weight:600;color:var(--text-muted);padding:2px 8px;border:1px solid var(--border);border-radius:var(--radius-pill);white-space:nowrap}.region-groups-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0000008c;padding:20px}.region-groups-modal{width:100%;max-width:520px;max-height:85vh;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg);padding:20px}.region-groups-head{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px}.region-groups-hint{margin:0 0 16px;font-size:12px;color:var(--text-muted)}.region-groups-list{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:14px}.region-groups-item{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface-muted)}.region-groups-name{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text);font-size:14px;font-weight:600}.region-groups-name:focus{outline:none;border-color:var(--accent-border)}.region-groups-chips{display:flex;flex-wrap:wrap;gap:6px}.region-chip{appearance:none;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-muted);font-size:12px;font-weight:600;padding:5px 10px;border-radius:var(--radius-pill);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast)}.region-chip:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.region-chip.active{background:var(--ink-strong);color:var(--text-inverse);border-color:var(--ink-strong)}.region-chip:disabled{opacity:.4;cursor:not-allowed}.region-groups-new{display:grid;gap:10px;padding-top:16px;border-top:1px solid var(--border)}.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:16px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:12px;animation:stagger-rise var(--dur-4) var(--ease-emphasis) both;position:relative;overflow:hidden;transition:transform var(--dur-2) var(--ease-spring),box-shadow var(--dur-2) var(--ease-out),padding var(--dur-2) var(--ease-out),gap var(--dur-2) var(--ease-out)}.card:nth-child(1){animation-delay:0ms}.card:nth-child(2){animation-delay:40ms}.card:nth-child(3){animation-delay:80ms}.card:nth-child(4){animation-delay:.12s}.card:nth-child(5){animation-delay:.16s}.card:nth-child(n+6){animation-delay:.2s}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card-hover)}.card:active{transform:translateY(-1px) scale(.998)}.card.fresh:before{content:"";position:absolute;top:0;left:0;bottom:0;width:3px;background:var(--accent);animation:fresh-ripple 1.6s ease-out;pointer-events:none}@keyframes fresh-ripple{0%{opacity:0;box-shadow:0 0 0 0 var(--accent)}20%{opacity:1;box-shadow:0 0 12px 2px var(--accent)}to{opacity:0;box-shadow:0 0 0 0 transparent}}:root.density-compact .card{padding:12px 14px;gap:8px}:root.density-compact .grid{gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}:root.density-compact .device-title{font-size:16px}:root.density-compact .card-action-button{width:26px;height:26px}:root.density-compact .device-subrow{flex-wrap:nowrap;overflow:hidden}:root.density-compact .battery-shell{display:none}:root.density-compact .gateway-badge{gap:2px}:root.density-compact .gateway-icon{width:10px;height:10px}.card-alert{background:var(--danger);border-color:var(--danger);color:var(--text-inverse);box-shadow:0 20px 50px #ff3b3059}.card-alert .muted,.card-alert .device-version{color:#fef7efd9}.card-alert .status-dot{background:#fff3;box-shadow:inset 0 0 0 1px #ffffff4d}.card-alert .status-dot-inner.offline{background:#111217;box-shadow:0 0 8px #1112178c}.card-alert .card-action-button{background:#ffffff29;border-color:#fff6}.card-alert .card-action-button svg{stroke:#fff}.card-head{display:flex;flex-direction:column;gap:8px;min-width:0}.card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-width:0}.device-title{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0;font-size:18px;font-weight:600;color:inherit}.device-name-button{appearance:none;border:0;background:transparent;padding:0;font:inherit;color:inherit;text-align:left;white-space:normal;overflow-wrap:anywhere;line-height:1.2;cursor:pointer;min-width:0;flex:1}.device-name-button:hover,.device-name-button:focus-visible{text-decoration:underline;text-underline-offset:3px;outline:none}.device-name-static{min-width:0;flex:1;line-height:1.2;overflow-wrap:anywhere}.device-rename-button{appearance:none;border:0;background:transparent;padding:4px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-subtle);cursor:pointer;border-radius:8px;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast),background var(--transition-fast);flex-shrink:0}.card:hover .device-rename-button,.device-rename-button:focus-visible{opacity:1}.device-rename-button:hover{color:var(--ink-strong);background:var(--bg-surface-soft)}@media(hover:none){.device-rename-button{opacity:.6}}.alias-input{border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font-size:18px;font-weight:600;line-height:1.2;min-width:120px;font-family:inherit;color:inherit;background:var(--bg-surface);flex:1}.alias-input:focus{outline:none;border-color:var(--accent-border)}.device-subrow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12px}.device-version{color:var(--text-subtle);font-size:11px}.device-dot-sep{color:#11121738}.gateway-badge{display:inline-flex;align-items:center;gap:3px;color:var(--text-muted);font-size:12px}.gateway-icon{width:12px;height:12px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.selfcheck-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em;padding:1px 6px;border-radius:6px;white-space:nowrap}.selfcheck-badge.pass{color:var(--success);background:color-mix(in srgb,var(--success) 14%,transparent)}.selfcheck-badge.fail{color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent)}:root.theme-dark .device-dot-sep{color:#e6edf74d}.card-actions{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}.card-action-button{border:1px solid rgba(17,18,23,.12);background:var(--bg-surface);border-radius:var(--radius-md);width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color var(--transition-fast),transform var(--transition-fast);flex:0 0 auto}.card-action-button:hover{border-color:var(--border-strong);transform:translateY(-1px)}.card-action-button svg{width:16px;height:16px;stroke:var(--ink-strong);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}.card-action-button img{width:16px;height:16px;object-fit:contain}:root.theme-dark .card-action-button{background:var(--bg-surface-muted);border-color:var(--border-strong)}:root.theme-dark .card-action-button svg{stroke:var(--text)}.card-action-button.heating{border-color:transparent}.card-action-button.heating.heat-on{background:#ff8a1c;box-shadow:0 6px 14px #ff8a1c47}.card-action-button.heating.heat-off{background:#2f7cff;box-shadow:0 6px 14px #2f7cff40}.card-action-button.heating img{filter:brightness(0) invert(1)}.card-action-button.success{animation:ota-pulse .7s ease;border-color:var(--success);box-shadow:0 0 0 6px #2ecc712e}.card-action-button.success svg{stroke:var(--success)}.card-action-button.has-update{border-color:var(--warn);box-shadow:0 0 0 6px #ff9f1a33}.card-action-button.has-update svg{stroke:var(--warn)}.card-action-button.danger-button{border-color:var(--danger-border)}.card-action-button.danger-button svg{stroke:var(--danger-text)}@keyframes ota-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.update-hint{font-size:12px;color:var(--accent);font-weight:600;letter-spacing:.04em}.card-alert .update-hint{color:#ffffffe6}.device-version.updating{color:var(--accent);font-weight:600}.ota-progress{margin-top:8px;padding:8px 10px;border-radius:8px;background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);display:flex;flex-direction:column;gap:6px}.ota-progress-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;color:var(--accent)}.ota-progress-track{width:100%;height:8px;background:#0000001f;border-radius:999px;overflow:hidden}:root.theme-dark .ota-progress-track{background:#ffffff1f}.ota-progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .6s ease;background-image:linear-gradient(90deg,color-mix(in srgb,var(--accent) 75%,white) 0%,var(--accent) 50%,color-mix(in srgb,var(--accent) 75%,white) 100%);background-size:200% 100%;animation:ota-progress-shimmer 1.6s linear infinite}@keyframes ota-progress-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ota-progress-fill.applying{animation:ota-progress-shimmer .8s linear infinite,ota-progress-pulse 1.2s ease-in-out infinite}@keyframes ota-progress-pulse{0%,to{opacity:1}50%{opacity:.6}}.ota-progress-warn{font-size:11px;font-weight:600;color:var(--warning, #b8860b);letter-spacing:.02em}.card-alert .ota-progress{background:#ffffff26;border-color:#ffffff59}.card-alert .ota-progress-head,.card-alert .ota-progress-warn{color:#fffffff2}.battery-pill{display:inline-flex;align-items:center;gap:5px;color:var(--ink-strong);font-weight:600;font-size:12px}:root.theme-dark .battery-pill{color:var(--text)}.battery-shell{position:relative;width:28px;height:14px;border:2px solid currentColor;border-radius:4px;padding:1px;display:flex;align-items:center}.battery-cap{position:absolute;right:-4px;top:3px;width:3px;height:6px;background:currentColor;border-radius:2px}.battery-level{width:100%;height:100%;background:#0000001f;border-radius:2px;overflow:hidden}:root.theme-dark .battery-level{background:#ffffff26}.battery-fill{height:100%;background:var(--success);transition:width .2s ease}.battery-fill.mid{background:#f5a623}.battery-fill.low{background:var(--danger)}.battery-text{min-width:26px;text-align:right}.temp-pill{display:inline-flex;align-items:center;gap:4px;color:var(--ink-strong);font-weight:600;font-size:12px;padding:2px 8px;border-radius:999px;background:var(--bg-surface-muted)}:root.theme-dark .temp-pill{color:var(--text)}.temp-pill.temp-hot{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.temp-warn-icon{flex-shrink:0}.batt-config-select{font:inherit;font-size:.85em;appearance:none;-webkit-appearance:none;padding:3px 22px 3px 9px;border:1px solid var(--border);border-radius:8px;background-color:var(--bg-surface-soft);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%238a8276' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;color:var(--ink);cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast)}.batt-config-select:hover{border-color:var(--border-strong)}.batt-config-select:focus-visible{outline:none;border-color:var(--accent-border, var(--border-strong))}:root.theme-dark .batt-config-select{border-color:#e6edf740}.telemetry-corner{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:var(--radius-md);background:var(--bg-surface-muted)}.telemetry-inline{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;color:var(--text);font-size:12px}.telemetry-inline.telemetry-inline-power{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.telemetry-inline-item{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.telemetry-inline-power .telemetry-inline-item{flex-direction:column;justify-content:flex-start;align-items:flex-start;text-align:left;gap:3px}.telemetry-inline-power .telemetry-inline-item:last-child{align-items:flex-end;text-align:right}.telemetry-inline-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle);font-size:9px;font-family:Space Grotesk,sans-serif}.telemetry-inline-value{font-size:13px;font-weight:500;color:var(--text);font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums}.telemetry-gateway{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.telemetry-empty{color:var(--text-muted);font-size:12px;font-style:italic}.device-meta-row{margin-top:2px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.device-ip{color:var(--text-muted);font-size:10px}.device-coords{display:inline-flex;align-items:baseline;gap:5px;font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums;white-space:nowrap}.device-coords-label{font-family:Space Grotesk,sans-serif;font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.device-coords-value{font-size:12px;font-weight:500;color:var(--text)}.device-coords-value+.device-coords-label{margin-left:6px}.map-section{position:relative;height:calc(100vh - var(--topbar-height))}.map{position:absolute;inset:0;height:100%;width:100%;z-index:1}.map-empty-text{position:absolute;inset:0;display:grid;place-items:center;padding:32px;color:var(--text-subtle);text-align:center}.map-coord-readout{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:500;border:1px solid color-mix(in srgb,var(--border) 60%,transparent);background:color-mix(in srgb,var(--bg-surface) 55%,transparent);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);box-shadow:0 8px 30px #00000024,inset 0 1px #ffffff59;border-radius:var(--radius-pill);padding:7px 16px;font-size:12px;color:var(--text);letter-spacing:.02em;pointer-events:none;font-variant-numeric:tabular-nums;display:flex;gap:16px;white-space:nowrap;max-width:calc(100% - 28px)}.map-coord-readout>span:nth-child(3){display:none}.map-coord-readout-label{color:var(--text-subtle);font-size:10px;text-transform:uppercase;letter-spacing:.12em;margin-right:4px;font-weight:600}.map-control-column{position:absolute;top:14px;right:14px;z-index:500;display:grid;gap:10px;justify-items:end;width:min(92vw,380px);pointer-events:none}.map-control-column>*{pointer-events:auto}@media(min-width:721px){.map-control-column{width:auto;min-width:0}.map-tools{width:auto;justify-items:stretch}.map-control-column .map-layer-toggle,.map-control-column .map-history-panel.live-mode .map-history-mode-toggle{display:flex;width:220px}.map-control-column .map-layer-toggle button,.map-control-column .map-history-mode-toggle button{flex:1;text-align:center;justify-content:center}.map-history-panel.live-mode{padding:0;border:0;background:transparent;box-shadow:none;width:220px}.map-history-panel.live-mode .map-history-mode-toggle{width:100%}.map-gps-fab{top:110px;right:14px;bottom:auto}.map-section:has(.map-history-panel.history-mode) .map-gps-fab{top:auto;bottom:14px}}.map-tools{display:grid;gap:10px;width:100%;justify-items:end}.map-panel{display:grid;gap:10px;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--border);background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);width:100%;max-width:100%}:root.theme-dark .map-panel{background:#161c24eb}.map-history-panel{justify-self:end;width:fit-content;display:grid;gap:10px;padding:10px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-surface);box-shadow:var(--shadow-sm)}.map-history-panel.history-mode{width:100%}.map-history-panel.history-mode .map-history-mode-toggle{border:1px solid var(--border);background:var(--bg-surface-soft);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}.map-history-controls{display:grid;gap:10px;min-width:min(300px,72vw)}.map-history-date,.map-history-slider{display:grid;gap:4px}.map-history-date span,.map-history-slider span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-subtle)}.map-history-date input[type=date],.map-coord-grid input{border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 10px;font-size:13px;font-family:inherit;background:var(--bg-surface);color:var(--text);outline:none;transition:border-color var(--transition-fast)}.map-history-date input[type=date]:focus,.map-coord-grid input:focus{border-color:var(--accent-border)}.map-history-slider input[type=range]{width:100%;accent-color:var(--accent)}.map-history-error,.map-coord-error,.map-location-error{font-size:12px;color:var(--danger-text);border-radius:var(--radius-sm);padding:6px 8px;background:var(--danger-bg)}.map-geolocate-button{width:40px;height:40px;padding:0;border:1px solid var(--border);background:#fffffff2;color:var(--text);box-shadow:var(--shadow-sm);border-radius:var(--radius-pill);display:inline-grid;place-items:center;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}:root.theme-dark .map-geolocate-button{background:#161c24f2;border-color:var(--border-strong)}.map-geolocate-button:hover{transform:translateY(-1px)}.map-geolocate-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.map-geolocate-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.map-coord-editor-title{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-subtle)}.map-coord-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.map-coord-grid label{display:grid;gap:4px}.map-coord-grid span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-subtle)}.leaflet-tooltip{border:1px solid rgba(32,36,42,.12);border-radius:var(--radius-sm);padding:4px 8px;background:#fffffff2;color:#20242a;font-weight:600;box-shadow:0 6px 14px #1112171f}.leaflet-popup-content-wrapper{border:1px solid rgba(32,36,42,.12);border-radius:var(--radius-md);box-shadow:0 10px 22px #11121726}.leaflet-popup-content{margin:10px 12px;line-height:1.4}:root.theme-dark .leaflet-control-zoom a,:root.theme-dark .leaflet-popup-content-wrapper,:root.theme-dark .leaflet-popup-tip,:root.theme-dark .leaflet-tooltip{background:#1a2230;color:#dce6f5;border-color:#324055}.map-gps-fab{position:absolute;z-index:500;right:12px;bottom:12px;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:color-mix(in srgb,var(--bg-surface) 65%,transparent);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);color:var(--text);box-shadow:0 8px 30px #00000024,inset 0 1px #ffffff59;cursor:pointer;transition:transform var(--dur-1) var(--ease-spring),border-color var(--dur-2) var(--ease-out)}.map-gps-fab:hover{border-color:var(--border-strong)}.map-gps-fab:active{transform:scale(.92)}.map-gps-fab svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}@media(max-width:720px){.map-control-column .map-tools{display:none}.map-gps-fab{bottom:calc(62px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--bg-surface) 38%,transparent);backdrop-filter:saturate(200%) blur(30px);-webkit-backdrop-filter:saturate(200%) blur(30px);border-color:color-mix(in srgb,var(--border) 45%,transparent)}}@media(max-width:720px){.map-history-mode-toggle,.map-history-panel.live-mode{display:none}}.leaflet-control-attribution{background:transparent!important;color:var(--text-subtle)!important;font-size:9px!important;opacity:.55;padding:0 4px!important;box-shadow:none!important}.leaflet-control-attribution a{color:var(--text-subtle)!important;text-decoration:none}.leaflet-control-attribution:hover{opacity:.9}.leaflet-control-attribution>a[href*=leafletjs],.leaflet-control-attribution>a[href*=leafletjs]+span[aria-hidden=true]{display:none!important}@media(max-width:720px){.leaflet-control-attribution{font-size:8px!important;margin-bottom:calc(74px + env(safe-area-inset-bottom))!important}}@media(max-width:720px){.leaflet-control-zoom{display:none!important}}.admin-section{display:grid;place-items:start center}.admin-card{width:100%;max-width:1040px;margin:0 auto}.admin-header-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid var(--border)}.admin-header-row h2{margin:0;font-size:22px;color:var(--text);letter-spacing:.02em}.admin-setting{display:inline-flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.pill-on{background:var(--success);color:#fff;border-color:var(--success-dark)}.pill-on:hover:not(:disabled){background:var(--success-dark);color:#fff}.pill-off{background:transparent}.admin-table{display:grid;gap:8px}.admin-row{display:grid;grid-template-columns:minmax(160px,1.4fr) minmax(80px,.6fr) minmax(120px,.9fr) minmax(200px,1.6fr) auto;gap:16px;align-items:center;padding:12px 16px;border-radius:var(--radius-md)}.admin-header{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);padding:4px 16px;background:transparent;border:0}.admin-row:not(.admin-header){background:var(--bg-surface-muted);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out)}.admin-row:not(.admin-header):hover{border-color:var(--border-strong);background:var(--bg-surface)}.admin-cell{display:flex;align-items:center;min-width:0;color:var(--text);font-size:14px}.admin-cell span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-presence{display:inline-flex;align-items:center;gap:8px}.admin-presence-dot{width:9px;height:9px;border-radius:50%;background:#7c8b9a;flex:0 0 auto}.admin-presence-dot.online{background:var(--success);box-shadow:0 0 6px #2ecc7180}.admin-presence-label{font-size:13px;color:var(--text-muted)}.admin-actions{display:inline-flex;gap:8px;flex-wrap:nowrap;justify-content:flex-end;justify-self:end}.admin-actions .ghost-button{padding:7px 12px;font-size:11px}.admin-row input{width:100%;border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 12px;font-size:13px;font-family:inherit;background:var(--bg-surface);color:var(--text);outline:none;transition:border-color var(--transition-fast)}.admin-row input:focus{border-color:var(--accent-border)}.admin-hint{margin:0 0 12px;font-size:13px;color:var(--text-muted)}.admin-row.invite-row{grid-template-columns:minmax(200px,2.2fr) minmax(110px,.8fr) auto}.admin-row.invite-row .admin-actions{flex-wrap:wrap}.invite-link-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.invite-status{font-size:12px;font-weight:600}.invite-status.active{color:var(--success)}.invite-status.used{color:var(--text-muted)}.invite-summary{margin-top:10px;font-size:12px}.admin-carousel-tabs{position:relative;width:100%;max-width:1040px;margin:0 auto 22px;display:flex;gap:0;padding:5px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-surface-muted)}.admin-tab-indicator{position:absolute;top:5px;bottom:5px;left:5px;width:calc((100% - 10px) / var(--tab-count, 3));border-radius:var(--radius-pill);background:var(--bg-surface);box-shadow:var(--shadow-card);transform:translate(calc(var(--tab-active, 0) * 100%));transition:transform var(--slide-dur) var(--slide-ease);pointer-events:none}.admin-carousel-tab{position:relative;z-index:1;flex:1;appearance:none;border:0;background:transparent;color:var(--text-subtle);font-size:13px;font-weight:600;letter-spacing:.02em;padding:10px 16px;border-radius:var(--radius-pill);cursor:pointer;transition:color var(--dur-2) var(--ease-out)}.admin-carousel-tab:hover,.admin-carousel-tab.active{color:var(--text)}.admin-carousel-viewport{width:100%;max-width:1040px;margin:0 auto;overflow:hidden}.admin-carousel-track{display:flex;transition:transform var(--transition-base, .3s ease)}.admin-carousel-slide{flex:0 0 100%;min-width:0}.admin-carousel-slide .admin-card{max-width:none;box-shadow:none}.region-invite-form{display:inline-flex;gap:8px;align-items:center}.region-invite-input{width:140px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text);font-size:13px}.region-invite-input:focus{outline:none;border-color:var(--accent-border)}select.region-invite-input{appearance:none;-webkit-appearance:none;width:auto;min-width:160px;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%238a8276' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.qr-canvas{border-radius:6px;background:#fff;padding:6px}.admin-row.region-invite-row{grid-template-columns:minmax(180px,2fr) minmax(80px,.7fr) minmax(70px,.6fr) auto}.admin-row.region-invite-row .admin-actions{flex-wrap:wrap}.invite-region-tag{display:inline-block;font-weight:600;font-size:12px;color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--radius-pill);padding:3px 10px;letter-spacing:.02em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-claims-toggle{appearance:none;border:0;background:transparent;color:var(--text-muted);font-size:12px;font-weight:600;cursor:pointer;padding:2px 4px;text-decoration:underline;text-underline-offset:2px}.invite-claims-toggle:disabled{cursor:default;text-decoration:none;opacity:.7}.invite-claims{list-style:none;margin:-2px 0 4px;padding:8px 12px;display:grid;gap:4px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);max-height:160px;overflow-y:auto}.invite-claim{display:flex;justify-content:space-between;gap:12px;font-size:12px}.invite-claim-user{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-claim-date{color:var(--text-muted);flex:0 0 auto}.qr-offscreen{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);pointer-events:none}.invite-toolbar{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.invite-toolbar-sep{width:1px;height:22px;background:var(--border)}.invite-count-input{width:64px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text);font-size:13px}.invite-count-input:focus{outline:none;border-color:var(--accent-border)}.user-search{width:100%;padding:10px 12px;margin-bottom:12px;background:var(--bg-surface-muted);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:14px}.user-search:focus{outline:none;border-color:var(--accent-border)}.user-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.user-list-item{width:100%;display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--bg-surface-muted);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);cursor:pointer;text-align:left;transition:border-color var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-spring),box-shadow var(--dur-2) var(--ease-out)}.user-list-item:hover{border-color:var(--border-strong);background:var(--bg-surface);transform:translateY(-1px);box-shadow:var(--shadow-card)}.user-list-item:active{transform:translateY(0)}.user-list-name{font-weight:600;flex:1 1 auto}.user-list-counts{color:var(--text-muted);font-size:12px;white-space:nowrap}.user-list-chevron{color:var(--text-subtle);font-size:18px}.user-list-empty{color:var(--text-muted);padding:12px;text-align:center}.role-tag{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:var(--radius-sm);background:var(--bg-surface-muted);border:1px solid var(--border);color:var(--text-muted)}.role-tag.role-admin{color:var(--success-dark);border-color:var(--success)}.user-detail-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.user-detail-title{display:flex;align-items:center;gap:10px;flex:1 1 auto}.user-detail-title h3{margin:0}.user-detail-group{margin-bottom:18px}.user-detail-group h4{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.user-detail-group .muted{color:var(--text-subtle);font-weight:400}.user-detail-actions{display:flex;gap:10px;margin-top:8px}.access-chips{display:flex;flex-wrap:wrap;gap:8px}.access-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;background:var(--bg-surface-muted);border:1px solid var(--border);border-radius:999px;color:var(--text-muted);font-size:13px;font-weight:500;cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-spring)}.access-chip:hover{border-color:var(--border-strong);color:var(--text)}.access-chip:active{transform:scale(.96)}.access-chip.checked{color:var(--accent-text);border-color:var(--accent-border);background:var(--accent-soft)}.access-chip-box{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:1px solid var(--border-strong);font-size:11px;line-height:1}.access-chip.checked .access-chip-box{background:var(--accent);border-color:var(--accent);color:#fff}.access-picker-search{margin-top:10px;margin-bottom:8px}.access-picker-results{padding:8px;background:var(--bg-surface-muted);border:1px solid var(--border);border-radius:var(--radius-md)}.invite-subtabs{position:relative;display:flex;gap:0;padding:4px;margin-bottom:16px;width:fit-content;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-surface-muted)}.invite-subtab-indicator{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / var(--tab-count, 2));border-radius:var(--radius-pill);background:var(--bg-surface);box-shadow:var(--shadow-card);transform:translate(calc(var(--tab-active, 0) * 100%));transition:transform var(--slide-dur) var(--slide-ease);pointer-events:none}.invite-subtab{position:relative;z-index:1;appearance:none;border:0;background:transparent;color:var(--text-subtle);font-size:13px;font-weight:600;padding:8px 22px;border-radius:var(--radius-pill);cursor:pointer;transition:color var(--dur-2) var(--ease-out)}.invite-subtab.active{color:var(--text)}.invite-form-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.invite-form-row .region-invite-input{flex:1 1 180px;width:auto}.invite-form-row .region-search-select{flex:1 1 180px}.region-search-select{position:relative}.region-search-select .region-invite-input{width:100%;box-sizing:border-box}.region-search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:40;max-height:240px;overflow-y:auto;background:var(--bg-surface, #fff);border:1px solid var(--border, #ddd);border-radius:var(--radius-md, 8px);box-shadow:var(--shadow-card, 0 8px 24px rgba(0, 0, 0, .12));padding:4px}.region-search-empty{padding:8px 10px;font-size:13px;color:var(--text-muted, #888)}.region-search-option{display:block;width:100%;text-align:left;appearance:none;border:0;background:none;padding:8px 10px;font-size:13px;color:var(--text, #222);border-radius:var(--radius-sm, 6px);cursor:pointer}.region-search-option.is-active{background:var(--bg-hover, rgba(0, 0, 0, .06))}.region-search-option.is-selected{font-weight:600}.invite-list{display:flex;flex-direction:column;gap:8px}.invite-row{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--bg-surface-muted);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out)}.invite-row:hover{border-color:var(--border-strong);background:var(--bg-surface)}.invite-row-tag{flex:1 1 auto;min-width:0}.invite-row-used{flex:0 0 auto;white-space:nowrap}.invite-row-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}@media(max-width:600px){.invite-row{flex-wrap:wrap;gap:8px}.invite-row-tag{flex:1 1 60%}.invite-row-actions{flex:1 1 100%;justify-content:flex-start;border-top:1px solid var(--border-soft);padding-top:8px}}.brand-title{font-size:20px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin:0}.topbar-actions-guest{justify-content:flex-end}.view-toggle{position:relative;display:inline-flex;background:var(--bg-surface-soft);border:1px solid var(--border);border-radius:var(--radius-pill);padding:4px;gap:0;overflow:hidden}.view-toggle:before{content:"";position:absolute;top:4px;bottom:4px;left:var(--toggle-left, 4px);width:var(--toggle-width, 0);border-radius:var(--radius-pill);background:var(--bg-surface);box-shadow:var(--shadow-card);transition:left var(--slide-dur) var(--slide-ease),width var(--slide-dur) var(--slide-ease);pointer-events:none}.view-toggle-button{border:none;background:transparent;padding:8px 16px;border-radius:var(--radius-pill);font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--text-subtle);cursor:pointer;position:relative;z-index:1;white-space:nowrap;transition:color var(--dur-2) var(--ease-out)}.view-toggle-button:hover,.view-toggle-button.active{color:var(--text)}.view-toggle-button:disabled{opacity:.5;cursor:not-allowed}.auth-switch{position:relative;display:inline-flex;background:var(--bg-surface-soft);border:1px solid var(--border);border-radius:var(--radius-pill);padding:4px;overflow:hidden}.auth-switch:before{content:"";position:absolute;top:4px;bottom:4px;left:var(--auth-toggle-left, 4px);width:var(--auth-toggle-width, 0);border-radius:var(--radius-pill);background:var(--bg-toggle-indicator);box-shadow:inset 0 0 0 1px #ffffffa6,var(--shadow-sm);transition:left var(--transition-med),width var(--transition-med);pointer-events:none}:root.theme-dark .auth-switch:before{box-shadow:inset 0 0 0 1px #a0b4cd29,0 8px 18px #05080c52}.auth-switch button{border:none;background:transparent;padding:6px 14px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-subtle);cursor:pointer;position:relative;z-index:1;white-space:nowrap;transition:color var(--transition-fast)}.auth-switch button.active{color:var(--ink-strong)}.auth-switch button:disabled{opacity:.5;cursor:not-allowed}.field-password input{letter-spacing:.2em}.card-head-main{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}.alias-input-inline{margin-left:0}.telemetry-corner{display:grid;gap:8px}.telemetry-inline-time{grid-column:1 / -1}.region-filter-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.region-filter-search-wrap{display:block}.region-filter-item{list-style:none}.region-filter-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-coord-editor{display:grid;gap:10px;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--border);background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);width:100%}:root.theme-dark .map-coord-editor{background:#161c24eb}.map-layer-toggle,.map-history-mode-toggle{position:relative;display:inline-flex;border-radius:var(--radius-pill);padding:4px;overflow:hidden;border:1px solid color-mix(in srgb,var(--border) 60%,transparent);background:color-mix(in srgb,var(--bg-surface) 55%,transparent);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);box-shadow:0 8px 30px #00000024,inset 0 1px #ffffff59}.map-layer-toggle:before,.map-history-mode-toggle:before{content:"";position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:var(--radius-pill);background:var(--bg-surface);box-shadow:var(--shadow-card);transition:transform var(--slide-dur) var(--slide-ease);pointer-events:none;z-index:0}.map-layer-toggle.satellite-active:before,.map-history-mode-toggle.history-active:before{transform:translate(100%)}.map-layer-toggle button,.map-history-mode-toggle button{position:relative;z-index:1;flex:1;border:none;background:transparent;padding:6px 16px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-subtle);cursor:pointer;white-space:nowrap;transition:color var(--dur-2) var(--ease-out)}.map-layer-toggle button:hover:not(.active),.map-history-mode-toggle button:hover:not(.active){color:var(--text)}.map-layer-toggle button.active,.map-history-mode-toggle button.active{color:var(--text)}@media(max-width:960px){.admin-row{grid-template-columns:1fr 1fr;gap:10px}.admin-header{display:none}.admin-cell{flex-direction:column;align-items:flex-start;gap:4px}.admin-cell:before{content:attr(data-label);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-subtle)}.admin-cell span{white-space:normal}.admin-actions{grid-column:1 / -1}}@media(max-width:860px){.admin-card{padding:18px}.admin-header-row{margin-bottom:16px;padding-bottom:14px}.admin-header-row h2{font-size:18px}.admin-row{grid-template-columns:1fr 1fr;gap:8px 12px;padding:12px 14px}.admin-cell{flex-direction:column;align-items:flex-start;gap:2px;font-size:13px}.admin-actions{grid-column:1 / -1;justify-self:stretch;justify-content:flex-end}.admin-actions:before{display:none}.admin-row input{padding:6px 10px;font-size:12px}}@media(max-width:720px){.topbar{display:none}.topbar-brand{gap:8px;flex:0 0 auto;min-width:0}.topbar{position:sticky}.topbar .brand-title{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;pointer-events:none}.topbar h1,.brand-title{font-size:15px}.topbar .status-strip,.topbar-hint{display:none}.topbar-actions{flex:1 1 auto;width:auto;justify-content:flex-end;gap:6px;flex-wrap:nowrap;min-width:0}.topbar-actions-secondary{display:none!important}.topbar-menu-wrap,.topbar .region-filter-open-button,.topbar-actions .view-toggle{display:none}.grid{grid-template-columns:1fr}.card{padding:14px}.card-action-button{width:40px;height:40px}.map-control-column{top:auto;bottom:calc(62px + env(safe-area-inset-bottom));right:10px;left:10px;width:auto;justify-items:stretch}.map-coord-grid{grid-template-columns:1fr 1fr}.region-filter-sidebar{width:min(320px,84vw)}.auth-panel{min-height:auto;padding:24px 14px 40px}.map-open .map-section{position:fixed;inset:0;height:100lvh;min-height:0;z-index:1}.map-open{background:#0c1116}html:has(.map-open){background:#0c1116}.auth-card{padding:24px}.map-open,.map-open .app-main,.map-open main{height:100dvh;overflow:hidden;overscroll-behavior:none;touch-action:none}.map-open .map{touch-action:none}.map-open .map-control-column,.map-open .bottom-tabbar,.map-open .leaflet-control-container{touch-action:auto}}@media(max-width:520px){:root{--page-padding-x: 12px}.topbar{padding:8px 12px;gap:8px}.topbar h1,.brand-title{font-size:15px}.status-pill{font-size:10px;padding:4px 7px}.status-pill-version,.topbar-hint{display:none}.theme-toggle-button{min-width:0;padding:8px 10px}.card{padding:12px;gap:10px;border-radius:var(--radius-lg)}.card h2,.device-title{font-size:15px}.telemetry-inline{font-size:11px;padding:8px 10px;gap:6px 12px}.telemetry-inline-label{font-size:8px}.card-actions{gap:6px}.region-title{font-size:11px;padding:5px 10px;letter-spacing:.16em}.modal-card{padding:18px;border-radius:var(--radius-lg);width:100%}.region-delete-button{font-size:10px}.auth-card{padding:22px 18px;border-radius:var(--radius-xl);box-shadow:none}.auth-header h2{font-size:18px}.admin-card{padding:14px;border-radius:var(--radius-lg)}.admin-row{grid-template-columns:1fr;padding:10px 12px;gap:6px}.admin-cell{flex-direction:row;justify-content:space-between;align-items:center;gap:10px;font-size:13px;min-height:20px}.admin-cell:before{font-size:10px;color:var(--text-subtle)}.admin-cell span{text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-cell.admin-actions{justify-content:flex-end;padding-top:6px;border-top:1px solid var(--border);margin-top:4px}.admin-actions .ghost-button{padding:6px 10px;font-size:11px}.admin-row input{flex:1;max-width:60%;text-align:right}.admin-row.invite-row,.admin-row.region-invite-row{grid-template-columns:1fr}.admin-row.admin-header.invite-row,.admin-row.admin-header.region-invite-row,.admin-table .admin-row.admin-header{display:none}.admin-row.invite-row .admin-cell[data-label=Link],.admin-row.region-invite-row .admin-cell[data-label=Link]{flex-direction:column;align-items:stretch;gap:4px}.admin-row.invite-row .invite-link-text,.admin-row.region-invite-row .invite-link-text{white-space:normal;word-break:break-all;text-align:left;font-size:12px}.admin-row.invite-row .admin-actions,.admin-row.region-invite-row .admin-actions{flex-wrap:wrap;justify-content:flex-start}.admin-header-row{gap:10px}.admin-header-row h2{font-size:17px}.admin-setting{font-size:10px;gap:8px}.map-history-panel{width:100%}.map-history-mode-toggle{display:flex}.map-history-mode-toggle button{flex:1}.map-layer-toggle{display:flex}.map-layer-toggle button{flex:1}.map-coord-readout{bottom:auto;top:calc(8px + env(safe-area-inset-top));left:50%;right:auto;transform:translate(-50%);width:max-content;max-width:calc(100% - 16px);padding:9px 16px;font-size:13px;gap:12px;justify-content:center;flex-wrap:nowrap;border:1px solid color-mix(in srgb,var(--border) 45%,transparent);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--bg-surface) 38%,transparent);backdrop-filter:saturate(200%) blur(30px);-webkit-backdrop-filter:saturate(200%) blur(30px);box-shadow:0 8px 30px #00000024,inset 0 1px #ffffff59}.map-coord-readout .map-coord-readout-label{font-size:11px}.toast-container{bottom:12px;right:8px;left:8px;max-width:none}.toast{font-size:12px;padding:10px 12px}}@media(max-width:480px){.topbar h1,.brand-title{display:inline-flex;font-size:14px}.primary-button,.danger-button{min-height:40px}.card-action-button{width:42px;height:42px}.topbar{padding:6px 10px;gap:6px}.topbar-menu-button{width:36px;height:36px}}@media(max-width:400px){:root{--page-padding-x: 10px}.telemetry-inline{grid-template-columns:1fr;gap:6px}.map-control-column{bottom:calc(62px + env(safe-area-inset-bottom));left:8px;right:8px;gap:8px}.map-history-panel,.map-coord-editor,.map-tools,.map-layer-toggle,.map-history-mode-toggle{width:100%}.map-geolocate-button{width:100%;border-radius:var(--radius-md);height:38px}.topbar{padding:6px 8px;gap:4px}.topbar-actions{gap:4px}.topbar-actions .view-toggle-button{padding:5px 7px;font-size:10px}.modal-card{padding:16px}.auth-card{padding:18px 14px;border-radius:var(--radius-md)}}@media(max-width:360px){.device-title{font-size:14px}.card{padding:10px}.telemetry-inline{font-size:10px}.card-action-button{width:38px;height:38px}.topbar h1,.brand-title{font-size:14px}.topbar .region-filter-open-button{padding:5px 6px}.ghost-button,.primary-button{font-size:11px;padding:8px 10px}}@media(max-width:720px){:root.theme-tactical .topbar{height:auto;min-height:0}:root.theme-tactical .card.card-alert{animation:none}}html,body{overflow-x:hidden}@media(max-width:720px){html:has(.map-open),body:has(.map-open){overflow:hidden;height:100dvh;overscroll-behavior:none}}@media(max-width:720px){.map-open .topbar{flex-wrap:wrap}.map-section{height:calc(100dvh - 52px);min-height:360px}}@media(max-width:400px){.region-filter-sidebar{width:88vw;max-width:320px}}@media(max-width:520px){.map-history-controls{min-width:0}.map-history-date input[type=date]{font-size:14px}.map-coord-grid input,.field input,.field select,.field textarea{font-size:16px}}@media(max-width:720px){.region-list,.admin-section,.auth-panel{padding-top:calc(16px + env(safe-area-inset-top))}}@media(max-width:720px){.view-list .topbar{display:flex!important;position:sticky;top:0;z-index:50;min-height:0;padding:calc(8px + env(safe-area-inset-top)) 12px 8px;background:color-mix(in srgb,var(--bg-body) 80%,transparent);backdrop-filter:saturate(160%) blur(16px);-webkit-backdrop-filter:saturate(160%) blur(16px);justify-content:center;align-items:center;border-bottom:0!important}.view-list .topbar>*:not(.topbar-brand){display:none!important}.view-list .topbar .topbar-brand{position:static;justify-content:center}.view-list .topbar .brand-title{position:static;transform:none;font-size:17px}.view-list .region-list{padding-top:12px}}.toast-container{position:fixed;bottom:24px;right:24px;z-index:3000;display:flex;flex-direction:column;gap:10px;max-width:min(380px,calc(100vw - 32px));pointer-events:none}.toast{pointer-events:auto;background:var(--bg-surface);border:1px solid var(--border);border-left:3px solid var(--text-subtle);border-radius:var(--radius-md);padding:12px 14px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-md);animation:toast-in .28s cubic-bezier(.22,1,.36,1);font-size:13px;color:var(--text)}.toast--success{border-left-color:var(--success)}.toast--error{border-left-color:var(--danger)}.toast--warn{border-left-color:var(--warn)}.toast--info{border-left-color:var(--accent)}.toast-message{flex:1;min-width:0;line-height:1.4}.toast-action{flex:0 0 auto;background:transparent;border:0;color:var(--accent-text);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm)}.toast-action:hover{background:var(--accent-soft)}.toast-close{flex:0 0 auto;background:transparent;border:0;color:var(--text-subtle);font-size:18px;line-height:1;cursor:pointer;padding:0 4px}.toast-close:hover{color:var(--text)}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@media(max-width:480px){.toast-container{bottom:12px;right:12px;left:12px;max-width:none}}.context-menu{position:fixed;z-index:2500;min-width:200px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-modal);padding:6px;animation:modal-rise .16s ease}.context-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;background:transparent;font:inherit;font-size:13px;color:var(--text);text-align:left;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.context-menu-item:hover:not(:disabled),.context-menu-item:focus-visible{background:var(--accent-soft)}.context-menu-item.danger{color:var(--danger-text)}.context-menu-item.danger:hover:not(:disabled){background:var(--danger-bg)}.context-menu-icon{width:18px;text-align:center;opacity:.7;flex:0 0 auto}.context-menu-hint{margin-left:auto;font-size:11px;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.06em}.context-menu-divider{height:1px;background:var(--border);margin:4px 0}.alert-banner{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;padding:10px 18px;background:linear-gradient(90deg,var(--danger) 0%,color-mix(in srgb,var(--danger) 80%,black) 100%);color:#fff;font-size:13px;box-shadow:0 4px 14px #ff3b3059;animation:rise .28s ease}.alert-banner-pulse{width:10px;height:10px;border-radius:50%;background:#fff;flex:0 0 auto;animation:alert-banner-pulse 1.2s ease-in-out infinite}@keyframes alert-banner-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.alert-banner-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-banner-list{opacity:.9}.alert-banner-action{flex:0 0 auto;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);color:#fff;padding:6px 12px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:background var(--transition-fast)}.alert-banner-action:hover{background:#ffffff47}.region-legend{position:absolute;top:12px;left:12px;z-index:500;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:180px;max-width:240px;padding:6px;font-size:12px}.region-legend.collapsed{min-width:0}.region-legend-toggle{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:0;padding:6px 8px;font:inherit;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-subtle);cursor:pointer;border-radius:var(--radius-sm)}.region-legend-toggle:hover{background:var(--bg-surface-soft);color:var(--text)}.region-legend-list{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto}.region-legend-button{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:0;padding:6px 8px;font:inherit;font-size:12px;color:var(--text);cursor:pointer;border-radius:var(--radius-sm);text-align:left}.region-legend-button:hover{background:var(--accent-soft)}.region-legend-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.region-legend-dot.all{background:var(--success)}.region-legend-dot.partial{background:var(--warn)}.region-legend-dot.none{background:var(--danger)}.region-legend-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.region-legend-stat{flex:0 0 auto;color:var(--text-subtle);font-variant-numeric:tabular-nums;font-size:11px}:root.theme-tactical body{font-feature-settings:"tnum"}:root.theme-tactical .telemetry-inline,:root.theme-tactical .device-version,:root.theme-tactical .map-coord-readout,:root.theme-tactical .tactical-clock,:root.theme-tactical kbd,:root.theme-tactical [data-tabular]{font-family:var(--tactical-mono);font-variant-numeric:tabular-nums}:root.theme-tactical .topbar{height:var(--topbar-height);min-height:var(--topbar-height);padding:0 14px;background:var(--bg-topbar);border-bottom:1px solid var(--border)}:root.theme-tactical .brand-title{font-size:13px;font-weight:600;letter-spacing:.04em;color:var(--ink-strong);text-transform:none}:root.theme-tactical .status-strip{font-size:11px}:root.theme-tactical .status-pill{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:10px;padding:3px 7px;color:var(--text-muted);text-transform:none;letter-spacing:0;font-weight:500}.tactical-clock{display:inline-flex;align-items:baseline;gap:6px;font-size:11px;color:var(--text)}.tactical-clock .tc-label{color:var(--text-subtle);font-size:10px;letter-spacing:0;text-transform:none;font-weight:500}.tactical-clock .tc-value{color:var(--ink-strong);letter-spacing:0}.tactical-clock .tc-divider{color:var(--text-subtle);opacity:.5}.tactical-stamp{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted);text-transform:none;letter-spacing:0}.tactical-stamp strong{color:var(--ink);font-weight:600}.tactical-stamp-divider{width:1px;height:11px;background:var(--border-strong)}:root.theme-tactical .ghost-button{border-radius:0;border-color:var(--border-strong);background:var(--bg-surface);color:var(--ink);font-size:12px;padding:6px 12px;font-weight:500;text-transform:none;letter-spacing:0}:root.theme-tactical .ghost-button:hover:not(:disabled){border-color:var(--text-muted);color:var(--ink-strong);background:var(--bg-surface-soft)}:root.theme-tactical .primary-button{border-radius:0;background:var(--bg-surface-soft);border:1px solid var(--border-strong);color:var(--ink-strong);font-weight:500;text-transform:none;letter-spacing:0}:root.theme-tactical .primary-button:hover:not(:disabled){transform:none;background:var(--border-strong);border-color:var(--text-muted);box-shadow:none}:root.theme-tactical .danger-button{border-color:var(--danger-border);color:var(--danger-text);background:transparent}:root.theme-tactical .danger-button:hover:not(:disabled){border-color:var(--danger);background:var(--danger-bg)}:root.theme-tactical .segmented,:root.theme-tactical .view-toggle{border-radius:0;background:var(--bg-surface);border-color:var(--border-strong);padding:2px}:root.theme-tactical .segmented:before,:root.theme-tactical .view-toggle:before{border-radius:0;background:var(--border-strong);box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}:root.theme-tactical .segmented button,:root.theme-tactical .view-toggle-button{text-transform:none;letter-spacing:0;font-weight:500;font-size:12px;color:var(--text-muted);border-radius:0}:root.theme-tactical .segmented button.active,:root.theme-tactical .view-toggle-button.active{color:var(--ink-strong)}:root.theme-tactical .card{border-radius:0;border:1px solid var(--border);background:var(--bg-surface);box-shadow:none;padding:12px 14px;transition:none;animation:none;overflow:visible}:root.theme-tactical .card:hover{transform:none;border-color:var(--border-strong);box-shadow:none}:root.theme-tactical .card:before,:root.theme-tactical .card:after,:root.theme-tactical .card.fresh:before{display:none}:root.theme-tactical .card.card-alert{background:var(--bg-surface);border:1px solid var(--danger);color:var(--ink);animation:none;box-shadow:none}:root.theme-tactical .card.card-alert .muted,:root.theme-tactical .card.card-alert .device-version{color:var(--text-muted)}:root.theme-tactical .device-title{font-weight:600;font-size:14px;color:var(--ink-strong);text-transform:none;letter-spacing:0}:root.theme-tactical .telemetry-inline,:root.theme-tactical .device-version{font-size:11px;color:var(--text-muted)}:root.theme-tactical .status-dot,:root.theme-tactical .status-pill-dot{border-radius:0;animation:none!important}:root.theme-tactical .status-dot{background:var(--bg-surface-soft);box-shadow:inset 0 0 0 1px var(--border-strong)}:root.theme-tactical .status-dot-inner.online{background:var(--ink-strong);box-shadow:none;animation:none!important;border-radius:0}:root.theme-tactical .status-dot-inner.offline{background:var(--text-subtle);box-shadow:none;border-radius:0}:root.theme-tactical .status-dot{border-radius:0}:root.theme-tactical .status-pill-dot.online{background:var(--ink-strong);box-shadow:none;animation:none!important;border-radius:0}:root.theme-tactical .status-pill-dot.offline{background:var(--text-subtle);border-radius:0}:root.theme-tactical .field input,:root.theme-tactical .field select,:root.theme-tactical .field textarea,:root.theme-tactical .admin-row input{background:var(--bg-body);border-color:var(--border-strong);border-radius:var(--radius-sm);font-size:13px;color:var(--ink-strong);padding:8px 10px;font-family:inherit}:root.theme-tactical .field input:focus,:root.theme-tactical .field select:focus,:root.theme-tactical .field textarea:focus{border-color:var(--accent);box-shadow:none}:root.theme-tactical .field>span,:root.theme-tactical .map-coord-editor-title,:root.theme-tactical .map-history-date span,:root.theme-tactical .map-history-slider span{text-transform:none;letter-spacing:0;font-size:11px;color:var(--text-muted);font-weight:500}:root.theme-tactical .auth-card{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-surface);box-shadow:var(--shadow-modal)}:root.theme-tactical .auth-card:before{display:none}:root.theme-tactical .modal-card{border-radius:0;border:1px solid var(--border-strong);background:var(--bg-surface)}:root.theme-tactical .modal-backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}:root.theme-tactical .admin-row:not(.admin-header){border-radius:var(--radius-sm);background:var(--bg-surface);border-color:var(--border)}:root.theme-tactical .admin-row:not(.admin-header):hover{border-color:var(--border-strong)}:root.theme-tactical .admin-presence-dot{border-radius:50%}:root.theme-tactical .admin-header{text-transform:none;letter-spacing:0;font-size:11px;color:var(--text-muted)}:root.theme-tactical .toast{border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-strong);font-size:12px;letter-spacing:0}:root.theme-tactical .alert-banner{background:var(--danger);border-bottom:1px solid var(--danger);letter-spacing:0;text-transform:none;font-size:12px;font-weight:500;color:#fff;box-shadow:none;border-radius:0}:root.theme-tactical .alert-banner-pulse{animation:none;border-radius:0}:root.theme-tactical .alert-banner-action{border-radius:0;text-transform:none;letter-spacing:0;font-weight:500;background:#ffffff1f;border-color:#ffffff4d}:root.theme-tactical .leaflet-container{background:#0d0f11}:root.theme-tactical .map-coord-readout{background:var(--bg-topbar);border-color:var(--border-strong);border-radius:var(--radius-sm);font-size:11px;color:var(--ink-strong);letter-spacing:0}:root.theme-tactical .map-coord-readout-label{font-size:10px;letter-spacing:0;text-transform:none;font-weight:500;color:var(--text-muted)}:root.theme-tactical .leaflet-grab,:root.theme-tactical .leaflet-interactive{cursor:crosshair!important}:root.theme-tactical .map-layer-toggle,:root.theme-tactical .map-history-mode-toggle{background:var(--bg-surface);border-color:var(--border-strong);border-radius:var(--radius-sm);padding:2px}:root.theme-tactical .map-layer-toggle button,:root.theme-tactical .map-history-mode-toggle button{border-radius:var(--radius-sm);text-transform:none;letter-spacing:0;font-size:11px;font-weight:500;padding:5px 10px;color:var(--text-muted)}:root.theme-tactical .map-layer-toggle button:hover:not(.active),:root.theme-tactical .map-history-mode-toggle button:hover:not(.active){color:var(--ink);background:transparent}:root.theme-tactical .map-layer-toggle button.active,:root.theme-tactical .map-history-mode-toggle button.active{background:var(--bg-surface-soft);color:var(--ink-strong);border:1px solid var(--border-strong);box-shadow:none}:root.theme-tactical .map-history-panel{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:none}:root.theme-tactical .map-history-panel .map-history-mode-toggle{background:var(--bg-surface-muted)}:root.theme-tactical .map-coord-editor{background:var(--bg-surface);border-color:var(--border-strong);border-radius:var(--radius-sm);box-shadow:none}:root.theme-tactical .map-geolocate-button{background:var(--bg-surface);border-color:var(--border-strong);color:var(--ink);border-radius:0}:root.theme-tactical .map-geolocate-button:hover{border-color:var(--text-muted);background:var(--bg-surface-soft);transform:none}:root.theme-tactical .map-layer-toggle button:hover:not(.active),:root.theme-tactical .map-history-mode-toggle button:hover:not(.active){color:var(--ink-strong);background:var(--bg-surface-muted)}:root.theme-tactical .region-filter-sidebar{background:var(--bg-surface);border-right:1px solid var(--border)}:root.theme-tactical .region-title{border-radius:0;background:var(--bg-surface);border:1px solid var(--border-strong);letter-spacing:.08em;font-size:12px;text-transform:uppercase;color:var(--text);font-weight:500;padding:4px 10px}:root.theme-tactical .region-title-row:before,:root.theme-tactical .region-title-row:after{background:var(--border)}:root.theme-tactical .region-gateway-badge{border-radius:0}:root.theme-tactical .topbar-menu{border-radius:0;border-color:var(--border-strong)}:root.theme-tactical .topbar-menu-item{border-radius:0;font-size:13px;font-weight:500}:root.theme-tactical .topbar-menu-button{border-radius:0}:root.theme-tactical .region-filter-open-button{border-radius:0;border-color:var(--border-strong)}:root.theme-tactical .region-filter-search,:root.theme-tactical .region-filter-toggle-all,:root.theme-tactical .region-filter-close{border-radius:0}:root.theme-tactical .region-filter-checkbox{accent-color:var(--ink)}:root.theme-tactical .toast{border-radius:0}:root.theme-tactical .toast-action,:root.theme-tactical .toast-close{border-radius:0;text-transform:none;letter-spacing:0;font-weight:500;color:var(--ink-strong)}:root.theme-tactical .toast-action:hover{background:var(--bg-surface-soft)}:root.theme-tactical .form-error{border-radius:0}:root.theme-tactical .state-block{border-radius:0;border-style:solid;background:var(--bg-surface-muted)}:root.theme-tactical .logo-mark circle:nth-child(3){fill:var(--ink-strong)}:root.theme-tactical .logo-mark{color:var(--text-muted)}:root.theme-tactical *:focus-visible{box-shadow:none!important;outline:1px solid var(--text-muted);outline-offset:1px}:root.theme-tactical .battery-pill{border-radius:0;background:var(--bg-surface-soft);border:1px solid var(--border)}:root.theme-tactical .map-history-date input[type=date],:root.theme-tactical .map-coord-grid input,:root.theme-tactical .region-filter-search,:root.theme-tactical .alias-input{border-radius:0;background:var(--bg-body);border-color:var(--border-strong)}:root.theme-tactical .form-error{background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--radius-sm);font-size:12px;letter-spacing:0}:root.theme-tactical .logo-mark circle:nth-child(3){fill:var(--accent)}:root.theme-tactical .logo-text{letter-spacing:.04em;text-transform:none}:root.theme-tactical .skeleton{background:var(--bg-surface-soft);border-radius:var(--radius-sm)}:root.theme-tactical .admin-cell:before{text-transform:none;letter-spacing:0;font-size:11px;color:var(--text-muted);font-weight:500}.ddp-backdrop{position:fixed;inset:0;z-index:1200;background:#11121773;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;animation:ddp-fade .14s ease}@keyframes ddp-fade{0%{opacity:0}to{opacity:1}}.ddp-modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:20px;box-shadow:0 32px 80px #00000038,0 6px 24px #0000001a;width:100%;max-width:1300px;height:82vh;display:flex;flex-direction:column;overflow:hidden;animation:ddp-rise .18s cubic-bezier(.22,.68,0,1.2)}@keyframes ddp-rise{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.ddp-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:20px 24px 18px;border-bottom:1px solid var(--border-soft);flex-shrink:0}.ddp-header-left{display:flex;align-items:center;gap:10px;min-width:0}.ddp-status-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}.ddp-status-dot.online{background:var(--success);box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 25%,transparent)}.ddp-status-dot.offline{background:var(--text-muted)}.ddp-title{font-size:20px;font-weight:700;color:var(--ink-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ddp-close{background:none;border:1px solid transparent;cursor:pointer;padding:7px;color:var(--text-muted);display:flex;align-items:center;border-radius:10px;transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast);flex-shrink:0}.ddp-close:hover{color:var(--ink-strong);background:var(--bg-surface-soft);border-color:var(--border-soft)}.ddp-close svg{width:17px;height:17px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}.ddp-body{display:grid;grid-template-columns:300px 1fr;overflow:hidden;flex:1;min-height:0}.ddp-left-col{border-right:1px solid var(--border-soft);padding:22px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.ddp-col-title{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);margin-bottom:6px}.ddp-col-title--gap{margin-top:20px}.ddp-col-title-count{font-weight:400;opacity:.65;text-transform:none;letter-spacing:0}.ddp-info-rows{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}.ddp-info-rows dt{color:var(--text-muted);white-space:nowrap}.ddp-info-rows dd{margin:0;color:var(--ink);word-break:break-all;font-weight:500}.ddp-telem-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ddp-telem-card{background:var(--bg-surface-soft);border:1px solid var(--border-soft);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:3px}.ddp-telem-label{font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.ddp-telem-value{font-size:15px;font-weight:700;color:var(--ink-strong);word-break:break-all}.ddp-telem-value--row{display:flex;align-items:center;gap:5px}.ddp-da-cell{display:inline-flex;align-items:center;gap:4px}.ddp-telem-card:has(.ddp-telem-value[data-wide]){grid-column:span 2}.ddp-selfcheck{margin-top:20px}.ddp-selfcheck-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.ddp-selfcheck-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:10px;border:1px solid var(--border-soft);background:var(--bg-surface-soft)}.ddp-selfcheck-item.pass{border-color:color-mix(in srgb,var(--success) 35%,transparent)}.ddp-selfcheck-item.fail{border-color:color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 8%,var(--bg-surface-soft))}.ddp-selfcheck-name{font-size:12px;color:var(--text)}.ddp-selfcheck-badge{font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.06em;padding:2px 7px;border-radius:6px;white-space:nowrap}.ddp-selfcheck-item.pass .ddp-selfcheck-badge{color:var(--success);background:color-mix(in srgb,var(--success) 14%,transparent)}.ddp-selfcheck-item.fail .ddp-selfcheck-badge{color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent)}.ddp-log-col{display:flex;flex-direction:column;padding:22px 20px 0;overflow:hidden;min-height:0}.ddp-log-scroll{flex:1;min-height:180px;overflow-y:auto;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -20px;padding:0 20px 20px}.ddp-log-table{min-width:max-content}.ddp-charts{flex-shrink:0;display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:8px}.ddp-chart{min-width:0}.ddp-chart .ddp-col-title--gap{margin-top:8px}.ddp-chart-svg{width:100%;height:auto;max-height:150px;display:block}@media(max-width:720px){.ddp-charts{grid-template-columns:1fr}}.ddp-chart-grid{stroke:var(--border);stroke-width:1}.ddp-chart-axis{fill:var(--text-subtle);font-size:9px;font-family:IBM Plex Mono,monospace}.ddp-chart-area{fill:var(--chart-color, var(--accent));opacity:.12}.ddp-chart-line{fill:none;stroke:var(--chart-color, var(--accent));stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}.ddp-chart-dot{fill:var(--chart-color, var(--accent))}.ddp-log-placeholder{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--text-muted);font-size:13px;font-style:italic;padding-bottom:40px}.ddp-log-error{color:var(--danger);font-style:normal}.ddp-spinner{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:ddp-spin .7s linear infinite}@keyframes ddp-spin{to{transform:rotate(360deg)}}.ddp-live-badge{display:inline-flex;align-items:center;margin-left:8px;padding:1px 7px;border-radius:99px;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:color-mix(in srgb,var(--success) 15%,transparent);color:var(--success-dark);border:1px solid color-mix(in srgb,var(--success) 35%,transparent);vertical-align:middle}.ddp-live-badge:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--success);margin-right:4px;animation:ddp-pulse 1.4s ease-in-out infinite}@keyframes ddp-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.ddp-log-tr-live td{background:color-mix(in srgb,var(--success) 5%,transparent);animation:ddp-row-flash 1.2s ease-out forwards}@keyframes ddp-row-flash{0%{background:color-mix(in srgb,var(--success) 18%,transparent)}to{background:color-mix(in srgb,var(--success) 5%,transparent)}}.ddp-log-raw{font-family:SF Mono,Fira Mono,Menlo,monospace;font-size:11px;color:var(--text-muted)}.ddp-log-table{width:100%;border-collapse:collapse;font-size:12.5px;white-space:nowrap}.ddp-log-table thead{position:sticky;top:0;z-index:1}.ddp-log-table th{background:var(--bg-surface-muted);color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:7px 12px;border-bottom:1px solid var(--border)}.ddp-log-table tbody tr:hover td{background:var(--bg-surface-soft)}.ddp-log-table tbody tr:not(:last-child) td{border-bottom:1px solid var(--border-soft)}.ddp-log-td-time{padding:7px 12px;color:var(--text-muted);font-size:11.5px;white-space:nowrap}.ddp-log-td{padding:7px 12px;color:var(--ink);font-size:12.5px}.ddp-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--bg-surface-soft);color:var(--text-subtle);border:1px solid var(--border-soft);white-space:nowrap}.ddp-badge--telem{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text);border-color:var(--accent-border)}.ddp-badge--region{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent-text);border-color:var(--accent-border)}.ddp-badge--protocol{background:var(--bg-surface-soft);color:var(--text-subtle);border-color:var(--border-soft);text-transform:uppercase}.ddp-empty{font-size:13px;color:var(--text-muted);font-style:italic}.status-dot-btn{background:none;border:none;padding:0;cursor:pointer;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;transition:box-shadow var(--transition-fast)}.status-dot-btn:hover{box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 22%,transparent)}@media(max-width:700px){.ddp-backdrop{padding:0;align-items:flex-end}.ddp-modal{max-width:100%;height:90vh;border-radius:20px 20px 0 0;animation:ddp-sheet .22s cubic-bezier(.22,.68,0,1.1)}@keyframes ddp-sheet{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.ddp-body{grid-template-columns:1fr;grid-template-rows:auto 1fr}.ddp-left-col{border-right:none;border-bottom:1px solid var(--border-soft);max-height:40vh}.ddp-charts{grid-template-columns:1fr}}.ddp-header-actions{display:flex;align-items:center;gap:8px}.device-invite-pop,.printer-picker-pop{background:var(--bg-surface, #fff);border-radius:var(--radius-lg, 14px);padding:20px;width:min(320px,90vw);display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 16px 48px #00000040;animation:pop-in var(--dur-3) var(--ease-spring) both}.printer-picker-pop .admin-hint{width:100%;text-align:center;margin:0}.printer-picker-pop .primary-button{width:100%}.device-invite-pop-head{display:flex;align-items:center;justify-content:space-between;width:100%;font-weight:600}.device-invite-link{width:100%;font-size:12px;word-break:break-all;text-align:center;color:var(--text-muted, #666)}.device-invite-print{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:100%}.device-invite-print:disabled{opacity:.6;cursor:progress}.device-invite-print-error{margin:0;font-size:12px;text-align:center;color:var(--danger, #d33)}.device-invite-print-ok{margin:0;font-size:12px;text-align:center;color:var(--success, #2a8)}.device-invite-port-row{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;font-size:11px}.device-invite-port-ok{color:var(--success, #2a8)}.device-invite-port-link{appearance:none;border:0;background:none;padding:0;font-size:11px;color:var(--text-muted, #888);text-decoration:underline;cursor:pointer}.device-invite-port-link:hover{color:var(--text, #222)}.ddp-invite-btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ddp-invite-icon{flex:0 0 auto}@media(max-width:600px){.ddp-invite-btn{gap:0;width:40px;height:40px;padding:0;justify-content:center}.ddp-invite-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.ddp-log-td--empty{color:var(--text-subtle, #b8b0a4);opacity:.5}
