.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}}*{box-sizing:border-box;scrollbar-color:#3a3d2e #1a1c14}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:#1a1c14}*::-webkit-scrollbar-thumb{background:#3a3d2e;border-radius:4px}*::-webkit-scrollbar-thumb:hover{background:#4a4d3e}html,body,#root{margin:0;padding:0;width:100%;height:100%;font-family:Arial,sans-serif;background:#121410;color:#d4d4c8}.app-auth-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:8px 12px;border-bottom:1px solid var(--ui-border);background:var(--ui-panel-soft);color:var(--ui-text)}.app-main-tabs{margin-right:auto;display:inline-flex;align-items:center;gap:8px}.app-main-tabs button{border:1px solid var(--ui-button-border);border-radius:999px;padding:5px 12px;background:var(--ui-button-bg);color:var(--ui-text);font-size:12px;cursor:pointer}.app-main-tabs button:hover{background:var(--ui-button-hover)}.app-main-tabs button.active{border-color:var(--ui-accent);background:var(--ui-filter-active-bg)}.app-auth-bar button{border:1px solid var(--ui-button-border);border-radius:6px;padding:5px 10px;background:var(--ui-button-bg);color:var(--ui-text);cursor:pointer}.app-auth-bar button:hover{background:var(--ui-button-hover)}.app-auth-user{font-size:12px;color:var(--ui-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.app-root-shell .app-auth-bar{background:#1a1c17;border-bottom-color:#46483d;color:#e4e4d8}.app-root-shell .app-auth-user{color:#b4b5a4}.app-root-shell .app-main-tabs button,.app-root-shell .app-auth-bar button{background:#2d2f28;border-color:#57594b;color:#e4e4d8}.app-root-shell .app-main-tabs button:hover,.app-root-shell .app-auth-bar button:hover{background:#383b31}.app-root-shell .app-main-tabs button.active{border-color:#9a916d;background:#43433a}.auth-page{width:100%;height:100%;display:grid;place-items:center;background:var(--ui-bg);color:var(--ui-text);padding:16px}.auth-page.auth-page-dark{position:relative;overflow:hidden;padding:22px 16px 62px;background:radial-gradient(circle at 14% 18%,rgba(96,100,78,.2),transparent 36%),radial-gradient(circle at 86% 8%,rgba(89,84,66,.16),transparent 42%),radial-gradient(circle at 72% 84%,rgba(123,98,72,.12),transparent 36%),linear-gradient(145deg,#0f110d,#161813 52%,#1f201b);color:#d4d4c8}.auth-page.auth-page-dark:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:28px 28px;pointer-events:none}.auth-ambient{position:absolute;width:290px;height:290px;border-radius:999px;filter:blur(45px);opacity:.38;pointer-events:none}.auth-ambient-left{top:-120px;left:-60px;background:#595d48}.auth-ambient-right{right:-60px;bottom:-120px;background:#5e5540}.auth-card{width:min(420px,100%);border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-panel);box-shadow:var(--ui-shadow);padding:16px}.auth-page.auth-page-dark .auth-card{position:relative;z-index:1;border-color:#3d4035;background:#121410de;box-shadow:0 18px 40px #00000073;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.auth-welcome{margin:0 0 8px;font-family:Palatino Linotype,Book Antiqua,Palatino,serif;font-size:26px;line-height:1.2;letter-spacing:.3px;background:linear-gradient(90deg,#cbc9ad,#a7a07e 45%,#c8ac86);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 24px rgba(168,152,111,.2)}.auth-card h1{margin:0 0 8px;font-size:24px}.auth-subtitle{margin:0 0 14px;color:var(--ui-muted);font-size:13px}.auth-form{display:grid;gap:10px}.auth-form label{display:grid;gap:5px;font-size:13px}.auth-form input{width:100%;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel-soft);color:var(--ui-text);padding:8px 10px}.auth-page.auth-page-dark .auth-subtitle,.auth-page.auth-page-dark .auth-form label{color:#c8c8b8}.auth-page.auth-page-dark .auth-form input{border-color:#5b5c4c;background:#1b1c18;color:#ececdf;color-scheme:dark}.auth-page.auth-page-dark .auth-form input::placeholder{color:#a1a08e}.auth-page.auth-page-dark .auth-form input:focus-visible{outline:2px solid #9b9472;outline-offset:1px}.auth-page.auth-page-dark .auth-form input:-webkit-autofill,.auth-page.auth-page-dark .auth-form input:-webkit-autofill:hover,.auth-page.auth-page-dark .auth-form input:-webkit-autofill:focus,.auth-page.auth-page-dark .auth-form input:-webkit-autofill:active{-webkit-text-fill-color:#ececdf;-webkit-box-shadow:0 0 0 1000px #1b1c18 inset;box-shadow:0 0 0 1000px #1b1c18 inset;caret-color:#ececdf;transition:background-color 9999s ease-in-out 0s}.auth-form button{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:9px 12px;cursor:pointer}.auth-form button:hover{background:var(--ui-button-hover)}.auth-page.auth-page-dark .auth-form button{border-color:#595a4a;background:linear-gradient(120deg,#575640,#695c43);color:#efefe3;font-weight:600}.auth-page.auth-page-dark .auth-form button:hover{background:linear-gradient(120deg,#4a4a36,#5a4f3a)}.auth-form button:disabled{opacity:.7;cursor:not-allowed}.auth-error{margin:0;color:#dc2626;font-size:12px}.auth-page.auth-page-dark .auth-error{color:#fca5a5}.auth-copyright{position:absolute;left:50%;bottom:18px;transform:translate(-50%);margin:0;font-size:12px;letter-spacing:.45px;color:#b5b29e;opacity:.9;z-index:1}.app-shell{display:grid;grid-template-columns:320px 1fr 360px;grid-template-rows:auto 1fr;height:100%;background:var(--ui-bg);color:var(--ui-text)}.hydro-page{position:relative;height:100%;overflow:auto;background:var(--ui-bg);color:var(--ui-text);padding:14px;display:grid;gap:12px}.hydro-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid var(--ui-border);border-radius:12px;padding:12px;background:var(--ui-panel)}.hydro-header h2{margin:0 0 4px}.hydro-header p{margin:0;font-size:13px;color:var(--ui-muted)}.hydro-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.hydro-controls label{display:grid;gap:4px;font-size:12px}.hydro-controls input,.hydro-controls select{border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel-soft);color:var(--ui-text);padding:7px 9px}.hydro-controls button{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:7px 11px;cursor:pointer}.hydro-controls button:hover{background:var(--ui-button-hover)}.hydro-loading,.hydro-error{border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel);padding:10px;font-size:13px}.hydro-error{border-color:#7f1d1d;background:#451a1a;color:#fca5a5}.hydro-tabs{display:flex;gap:0;border:1px solid var(--ui-border);border-radius:10px;overflow:hidden;background:var(--ui-panel)}.hydro-tab{flex:1;border:none;background:transparent;color:var(--ui-muted);padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.hydro-tab:not(:last-child){border-right:1px solid var(--ui-border)}.hydro-tab:hover{background:var(--ui-button-hover)}.hydro-tab.active{background:var(--ui-button-bg);color:var(--ui-text)}.hydro-grid-layout{min-height:460px;display:grid;grid-template-columns:260px minmax(0,1fr) 260px;gap:12px}.hydro-side-panel,.hydro-chart-panel{border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-panel);box-shadow:var(--ui-shadow-soft)}.hydro-side-panel{padding:12px;display:grid;align-content:start;gap:8px}.hydro-side-panel h3,.hydro-chart-title h3{margin:0}.hydro-stat-card{border:1px solid var(--ui-border);border-left:4px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);padding:9px;display:grid;gap:3px}.hydro-stat-card span{font-size:12px;color:var(--ui-muted)}.hydro-stat-card strong{font-size:20px}.hydro-stat-card strong.pos{color:#4ade80}.hydro-stat-card strong.neg{color:#fb7185}.hydro-stat-card strong.zone-low{color:#38bdf8}.hydro-stat-card strong.zone-normal{color:#a3e635}.hydro-stat-card strong.zone-high{color:#f87171}.hydro-stat-card small{font-size:11px;color:var(--ui-muted)}.hydro-chart-panel{padding:12px;display:grid;gap:10px}.hydro-chart-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.hydro-chart-title span{font-size:12px;color:var(--ui-muted)}.hydro-chart{width:100%;height:auto;aspect-ratio:860 / 466;display:block;touch-action:none}.hydro-chart-bg{fill:#1a1c16;stroke:var(--ui-border)}.hydro-zone-high{fill:var(--hydro-zone-high)}.hydro-zone-normal{fill:var(--hydro-zone-normal)}.hydro-zone-low{fill:var(--hydro-zone-low)}.hydro-chart-grid{stroke:#47493d99;stroke-width:.75;stroke-dasharray:4 5}.hydro-chart-y-label{fill:var(--ui-muted);font-size:11px}.hydro-chart-x-label{fill:#a3a896;font-size:12px}.hydro-chart-line{fill:none;stroke:var(--hydro-line);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px var(--hydro-line-glow))}.hydro-cursor-line{stroke:var(--ui-accent);stroke-width:1.5;stroke-dasharray:5 4}.hydro-cursor-dot{fill:var(--hydro-line);stroke:#1a1c16;stroke-width:2;filter:drop-shadow(0 0 3px var(--hydro-line-glow))}.hydro-cursor-tooltip rect{fill:#1d1f19;stroke:#84cc164d;stroke-width:1;opacity:.96}.hydro-cursor-tooltip-main{fill:var(--ui-text);font-size:12px;font-weight:700}.hydro-cursor-tooltip-sub{fill:var(--ui-muted);font-size:10px}.hydro-chart-foot{display:flex;justify-content:center;gap:12px;font-size:12px;color:var(--ui-muted)}.hydro-cursor-readout{color:var(--ui-text);font-weight:600}.hydro-temp-chart{aspect-ratio:860 / 346}.hydro-temp-chart-line{fill:none;stroke:var(--hydro-temp-line);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px var(--hydro-temp-line-glow))}.hydro-temp-cursor-dot{fill:var(--hydro-temp-line);stroke:#1a1c16;stroke-width:2;filter:drop-shadow(0 0 3px var(--hydro-temp-line-glow))}.hydro-temp-cursor-tooltip rect{fill:#1d1f19;stroke:#f59e0b4d;stroke-width:1;opacity:.96}.hydro-stat-card strong.temp-value{color:var(--hydro-temp-line)}.camera-page{position:relative;height:100%;overflow:auto;background:var(--ui-bg);color:var(--ui-text);padding:14px;display:flex;flex-direction:column;gap:12px}.camera-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid var(--ui-border);border-radius:12px;padding:12px;background:var(--ui-panel)}.camera-header h2{margin:0 0 4px}.camera-header p{margin:0;font-size:13px;color:var(--ui-muted)}.camera-header-fav-count{color:#eab308}.camera-controls{display:flex;gap:8px;align-items:center}.camera-filter-select{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:7px 11px;font-size:13px;cursor:pointer;color-scheme:dark}.camera-filter-select:hover{background:var(--ui-button-hover)}.camera-controls button{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:7px 11px;cursor:pointer}.camera-controls button:hover{background:var(--ui-button-hover)}.camera-tabs{display:flex;gap:0;border:1px solid var(--ui-border);border-radius:10px;overflow:hidden;background:var(--ui-panel);position:sticky;top:0;z-index:5;flex-shrink:0}.camera-tab{flex:1;border:none;background:transparent;color:var(--ui-muted);padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.camera-tab:not(:last-child){border-right:1px solid var(--ui-border)}.camera-tab:hover{background:var(--ui-button-hover)}.camera-tab.active{background:var(--ui-button-bg);color:var(--ui-text)}.camera-mobile-tabs{display:none;position:fixed;left:0;right:0;bottom:0;z-index:900;align-items:center;justify-content:space-around;gap:0;padding:2px 4px;padding-bottom:max(2px,env(safe-area-inset-bottom));border-top:1px solid var(--ui-border);background:var(--ui-panel)}.camera-mobile-tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:48px;border:none;background:transparent;color:var(--ui-muted);font-size:9px;cursor:pointer;border-radius:8px;padding:4px 2px}.camera-mobile-tabs button.active{color:var(--ui-accent);background:var(--ui-filter-active-bg)}.camera-mobile-tab-icon{font-size:18px;line-height:1}.camera-error{border:1px solid #7f1d1d;border-radius:8px;background:#451a1a;color:#fca5a5;padding:10px;font-size:13px}.camera-empty{border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel);padding:40px 24px;text-align:center;color:var(--ui-muted)}.camera-empty-icon{font-size:48px;margin-bottom:8px;opacity:.6}.camera-empty p{margin:0;font-size:15px;font-weight:600;color:var(--ui-text)}.camera-empty-hint{margin-top:6px!important;font-size:13px!important;font-weight:400!important;color:var(--ui-muted)!important}.camera-pending-bar{background:var(--warning-bg, #fff3cd);color:var(--warning-fg, #856404);border:1px solid var(--warning-border, #ffc107);border-radius:8px;padding:8px 14px;font-size:.9rem;display:flex;align-items:center;justify-content:center;gap:12px;animation:pendingPulse 2s ease-in-out infinite;position:relative;z-index:0}.camera-pending-cancel{background:#dc3545;color:#fff;border:none;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s;animation:none}.camera-pending-cancel:hover{background:#b02a37}.camera-species-filter{display:flex;flex-wrap:wrap;gap:6px;position:relative;z-index:4}.camera-species-chip{border:1px solid var(--ui-border);border-radius:16px;background:var(--ui-panel);color:var(--ui-muted);padding:5px 14px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.camera-species-chip:hover{background:var(--ui-button-hover);color:var(--ui-text)}.camera-species-chip.active{background:var(--ui-accent);color:#000;border-color:var(--ui-accent)}.camera-no-detection-actions{display:flex;gap:8px}.camera-btn-delete-no-detection{border:1px solid #7f1d1d;border-radius:8px;background:#451a1a;color:#fca5a5;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.camera-btn-delete-no-detection:hover{background:#611a1a}.camera-no-detection-hint{font-size:13px;color:var(--ui-muted);padding:6px 0;font-style:italic}@keyframes pendingPulse{0%,to{opacity:1}50%{opacity:.7}}.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.camera-card{border:1px solid var(--ui-border);border-radius:10px;background:var(--ui-panel);overflow:hidden;display:grid;grid-template-rows:auto auto auto;position:relative}.camera-card.camera-card-fav{border-color:#b8a44e;box-shadow:0 0 0 1px #b8a44e,0 2px 8px #b8a44e26}.camera-fav-badge{position:absolute;top:6px;right:6px;z-index:1;background:#0009;color:#f5c842;font-size:16px;line-height:1;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;pointer-events:none}.camera-ai-icon{position:absolute;top:6px;left:6px;z-index:1;background:#0009;font-size:14px;line-height:1;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;pointer-events:none}.camera-ai-detail{display:flex;align-items:center;gap:8px;padding:4px 10px;background:#22783c33;border-radius:4px;font-size:13px;color:#c8e6c0}.camera-ai-detail[data-label=Fahrzeug]{background:#3250a033;color:#c0d0f5}.camera-ai-detail-icon{font-size:16px}.camera-ai-detail-label{font-weight:600}.camera-ai-detail-conf{opacity:.7}.camera-ai-detail-model{margin-left:auto;opacity:.5;font-size:11px}.camera-card-img{aspect-ratio:4 / 3;overflow:hidden;cursor:pointer;background:#0d0f0b}.camera-card-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .15s ease}.camera-card-img:hover img{transform:scale(1.04)}.camera-card-info{padding:8px 10px 4px;display:grid;gap:2px}.camera-card-date{font-size:12px;color:var(--ui-muted)}.camera-card-cam{font-size:13px;font-weight:600}.camera-card-actions{display:flex;gap:4px;padding:4px 8px 8px}.camera-card-actions button{border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);padding:4px 8px;font-size:13px;cursor:pointer}.camera-card-actions button:hover{background:var(--ui-button-hover)}.camera-btn-fav.active{color:#eab308}.camera-btn-delete{color:#f87171!important}.camera-btn-delete:hover{background:#451a1a!important}.camera-btn-dismiss-ai{font-size:.8rem;opacity:.7}.camera-btn-dismiss-ai:hover{opacity:1}.camera-btn-dismiss-ai.active{opacity:.5}.camera-pagination{display:flex;justify-content:center;align-items:center;gap:12px;padding:8px}.camera-pagination button{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:6px 14px;cursor:pointer}.camera-pagination button:hover{background:var(--ui-button-hover)}.camera-pagination button:disabled{opacity:.4;cursor:not-allowed}.camera-pagination span{font-size:13px;color:var(--ui-muted)}.camera-lightbox{position:fixed;inset:0;z-index:9000;background:#000000e0;display:grid;place-items:center;padding:20px;touch-action:none;-webkit-tap-highlight-color:transparent}.camera-page:has(.camera-lightbox){overflow:hidden}.camera-lightbox-inner{position:relative;max-width:90vw;max-height:90vh;display:grid;grid-template-rows:1fr auto;background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:12px;overflow:hidden}.camera-lightbox-counter{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:3;background:#0009;color:#fff;font-size:12px;padding:3px 10px;border-radius:10px;pointer-events:none}.camera-lightbox-close{position:absolute;top:8px;right:8px;z-index:5;width:36px;height:36px;border:none;border-radius:50%;background:#0009;color:#fff;font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:background .15s}.camera-lightbox-close:hover{background:#000000d9}.camera-lightbox-inner>img{max-width:90vw;max-height:calc(90vh - 56px);object-fit:contain;display:block;background:#0d0f0b}.camera-lightbox-img-wrap{position:relative;display:flex;align-items:center;justify-content:center;align-self:center;justify-self:center;background:#0d0f0b;touch-action:none;transition:transform .1s ease-out;overflow:hidden;will-change:transform}.camera-lightbox-img-sizer{position:relative;display:flex;max-width:100%;max-height:100%}.camera-lightbox-img-sizer>img{max-width:90vw;max-height:calc(90vh - 56px);display:block}.camera-detection-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.camera-lightbox-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;border-top:1px solid var(--ui-border);background:var(--ui-panel-soft);position:relative;z-index:10}.camera-lightbox-meta{display:flex;align-items:center;gap:12px;font-size:13px}.camera-lightbox-meta span{color:var(--ui-muted)}.camera-lightbox-actions{display:flex;gap:6px;margin-left:auto}.camera-btn-more{display:none}.camera-lightbox-actions button{border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);padding:5px 10px;font-size:12px;cursor:pointer}.camera-lightbox-actions button:hover{background:var(--ui-button-hover)}.camera-lightbox-nav{position:absolute;top:50%;transform:translateY(-70%);border:none;background:#00000080;color:#fff;font-size:36px;line-height:1;padding:8px 14px;cursor:pointer;border-radius:8px}.camera-lightbox-nav:hover{background:#000000bf}.camera-lightbox-prev{left:8px}.camera-lightbox-next{right:8px}.camera-ai-toggle{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-size:.85rem;padding:4px 10px;border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);-webkit-user-select:none;user-select:none}.camera-ai-toggle input{accent-color:#4ade80;cursor:pointer}.camera-btn-analyze-all{font-size:12px;white-space:nowrap}.camera-img-placeholder{width:100%;height:100%;background:linear-gradient(90deg,#1a1c16 25%,#252820,#1a1c16 75%);background-size:200% 100%;animation:camera-shimmer 1.4s ease-in-out infinite}@keyframes camera-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.app-statusbar{grid-column:1 / -1;grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid var(--ui-border);background:var(--ui-panel);position:relative;z-index:20}.app-status-meta{display:inline-flex;align-items:center;gap:10px;font-size:12px;color:var(--ui-muted)}.app-modal-backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:10000;touch-action:none;-webkit-tap-highlight-color:transparent}.app-modal{border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-panel);color:var(--ui-text);box-shadow:var(--ui-shadow)}.app-modal.sm{width:min(430px,calc(100vw - 30px))}.app-modal.md{width:min(560px,calc(100vw - 30px))}.app-modal-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;border-bottom:1px solid var(--ui-border)}.app-modal-header h3{margin:0;font-size:16px}.app-modal-header button{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:6px 10px;cursor:pointer}.app-modal-body{padding:12px;font-size:13px}.app-modal-body p{margin:0 0 6px}.app-help-list{margin:0;padding-left:18px;display:grid;gap:5px;font-size:12px;color:var(--ui-text)}.app-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:0 12px 12px}.app-modal-footer button{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:6px 11px;cursor:pointer}.app-modal-footer button:hover{background:var(--ui-button-hover)}.app-modal-footer .confirm-ok.danger{border-color:#b91c1c;background:#dc2626;color:#fff}.app-modal-footer .confirm-ok.danger:hover{background:#b91c1c}.api-error-banner{position:fixed;top:12px;left:12px;right:12px;z-index:2000;border:1px solid #7f1d1d;background:#451a1a;border-radius:8px;padding:10px;font-size:13px;color:#fca5a5}.api-error-main{display:flex;justify-content:space-between;align-items:center}.api-error-close{border:none;background:transparent;font-size:18px;cursor:pointer}.api-error-details{margin-top:6px;display:grid;gap:4px}.low-battery-alert{position:fixed;top:84px;left:12px;z-index:1990;max-width:400px;border:1px solid #92400e;background:#422006;border-radius:8px;padding:10px;box-shadow:0 3px 10px #00000040;font-size:13px;color:#fde68a}.low-battery-title{font-weight:700;margin-bottom:6px}.low-battery-alert ul{margin:0 0 8px 16px;padding:0}.low-battery-alert button{border:1px solid var(--ui-button-border);background:var(--ui-button-bg);border-radius:6px;padding:4px 10px;cursor:pointer;color:var(--ui-text)}.undo-banner{position:fixed;top:188px;left:12px;z-index:1980;display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--ui-accent);background:#111827;color:#f9fafb;border-radius:8px;font-size:13px;transition:border-color .3s}.undo-banner[data-urgency=low]{border-color:var(--ui-accent)}.undo-banner[data-urgency=mid]{border-color:#eab308}.undo-banner[data-urgency=high]{border-color:#ef4444}.undo-banner button{border:1px solid #374151;background:#1f2937;color:#f9fafb;border-radius:6px;padding:4px 10px;cursor:pointer}.sidebar{grid-column:1;grid-row:2;padding:12px;border-right:1px solid var(--ui-border);overflow-y:auto;background:var(--ui-panel)}.sidebar h2{margin:0 0 10px;font-size:18px}.hint,.status,.error{margin:6px 0;font-size:13px}.status{color:#0b6e2d}.error{color:#b10000}.trap-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.empty-hint{color:var(--ui-muted);font-size:.82rem;font-style:italic;padding:4px 0}.trap-item{border:1px solid var(--ui-border);border-radius:6px;padding:8px}.trap-item.triggered{animation:trap-list-triggered-blink 1.1s ease-in-out infinite;border-color:#dc2626}.trap-item.just-updated{animation:trap-slide-flash 2.5s ease-out;border-color:#f59e0b}.trap-item.triggered.just-updated{animation:trap-slide-flash-triggered 2.5s ease-out;border-color:#dc2626}@keyframes trap-slide-flash{0%{transform:translate(-20px);opacity:.4;background:var(--ui-update-flash, #fef3c7);box-shadow:0 0 12px var(--ui-update-glow, rgba(245, 158, 11, .5))}20%{transform:translate(4px);opacity:1}35%{transform:translate(0);background:var(--ui-update-flash, #fef3c7);box-shadow:0 0 8px var(--ui-update-glow, rgba(245, 158, 11, .3))}to{background:transparent;box-shadow:none}}@keyframes trap-slide-flash-triggered{0%{transform:translate(-20px);opacity:.4;background:#fecaca;box-shadow:0 0 16px #dc262699}20%{transform:translate(4px);opacity:1}35%{transform:translate(0);background:#fecaca;box-shadow:0 0 12px #dc262666}to{background:var(--ui-trigger-bg-start);box-shadow:none}}@keyframes trap-list-triggered-blink{0%,to{background:var(--ui-trigger-bg-start)}50%{background:var(--ui-trigger-bg-pulse)}}.trap-title{font-weight:600;margin-bottom:4px;display:flex;align-items:center;gap:6px}.trap-item.triggered .trap-title:before{content:"";width:8px;height:8px;border-radius:50%;background:#dc2626;box-shadow:0 0 6px 2px #dc26268c;flex-shrink:0;animation:trap-dot-pulse 1.5s ease-in-out infinite}@keyframes trap-dot-pulse{0%,to{opacity:1;box-shadow:0 0 6px 2px #dc26268c}50%{opacity:.5;box-shadow:0 0 2px 1px #dc262640}}.trap-item.acknowledged{border-color:#7e57c2;background:#7e57c214}.trap-item.acknowledged .trap-title:before{content:"";width:8px;height:8px;border-radius:50%;background:#7e57c2;box-shadow:0 0 4px 1px #7e57c266;flex-shrink:0}.trap-meta{font-size:12px;color:var(--ui-muted);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trap-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.trap-actions button{font-size:12px;border:1px solid var(--ui-button-border);background:var(--ui-button-bg);border-radius:4px;padding:4px 8px;cursor:pointer;color:var(--ui-text)}.trap-actions button:hover{background:var(--ui-button-hover)}.trap-ack-section{margin-top:6px}.trap-ack-btn{font-size:12px;border:1px solid #7e57c2;background:#7e57c2;color:#fff;border-radius:4px;padding:4px 12px;cursor:pointer;transition:background .15s}.trap-ack-btn:hover{background:#6a3fb5}.trap-ack-btn.acknowledged{background:transparent;color:#b39ddb;border-color:#b39ddb;font-style:italic}.trap-ack-btn.acknowledged:hover{background:#7e57c21f}.inline-edit-box{margin-top:8px;padding-top:8px;border-top:1px solid var(--ui-border);display:grid;gap:6px}.inline-edit-box label{font-size:12px;display:grid;gap:3px}.inline-edit-box input,.inline-edit-box select{border:1px solid var(--ui-border);border-radius:4px;padding:5px 7px;font-size:12px;background:var(--ui-panel);color:var(--ui-text)}.inline-edit-actions{display:flex;gap:8px}.no-pos{font-size:12px;color:#777}.create-trap-box{margin:10px 0;padding:8px;border:1px solid var(--ui-border);border-left:3px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);box-shadow:var(--ui-shadow)}.create-trap-box>button{font-size:12px;border:1px solid var(--ui-button-border);background:var(--ui-button-bg);border-radius:4px;padding:5px 8px;cursor:pointer;color:var(--ui-text)}.create-trap-form{margin-top:8px;display:grid;gap:8px}.create-trap-form label{font-size:12px;display:grid;gap:3px}.create-trap-form input,.create-trap-form select{border:1px solid var(--ui-border);border-radius:4px;padding:5px 7px;font-size:12px;background:var(--ui-panel);color:var(--ui-text)}.create-trap-form button{justify-self:start;font-size:12px;border:1px solid var(--ui-button-border);background:var(--ui-button-bg);border-radius:4px;padding:5px 10px;cursor:pointer;color:var(--ui-text)}.spot-legend{margin:10px 0;padding:8px;border:1px solid var(--ui-border);border-left:3px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);box-shadow:var(--ui-shadow)}.spot-legend-title{font-size:12px;font-weight:700;margin-bottom:6px}.spot-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;margin-bottom:4px}.spot-legend-divider{height:1px;background:var(--ui-border);margin:8px 0 6px}.spot-legend-subtitle{font-size:11px;font-weight:700;color:var(--ui-muted);margin-bottom:6px}.legend-shape{width:16px;height:16px;border-radius:4px;background:#2e3a24;color:#d4d4c8;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.legend-falle{border-radius:999px}.legend-kanzel{border-radius:4px}.legend-fuetterung{border-radius:2px}.legend-bodensitz{border-radius:3px}.legend-salzlecke{border-radius:999px}.legend-status-dot{width:10px;height:10px;border-radius:999px;display:inline-block}.legend-status-dot.status-triggered{background:#dc2626}.legend-status-dot.status-acknowledged{background:#7e57c2}.legend-status-dot.status-low-battery{background:#c2410c}.legend-status-dot.status-daily-good{background:#16a34a}.legend-status-dot.status-daily-normal{background:#eab308}.legend-status-dot.status-daily-bad{background:#f97316}.legend-status-dot.status-unknown{background:#6b7280}.map-wrap{grid-column:2;grid-row:2;height:100%}.map-container{width:100%;height:100%}.app-shell[data-set-position=true] .map-container{cursor:crosshair}.set-position-banner{position:fixed;top:54px;left:50%;transform:translate(-50%);z-index:1970;display:flex;align-items:center;gap:10px;padding:8px 14px;border:1px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel);color:var(--ui-text);font-size:13px;box-shadow:var(--ui-shadow);animation:set-pos-pulse-desktop 2s ease-in-out infinite;white-space:nowrap}.set-position-banner button{border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);padding:4px 10px;font-size:12px;cursor:pointer;flex-shrink:0}.set-position-banner button:hover{background:var(--ui-button-hover)}@keyframes set-pos-pulse-desktop{0%,to{border-color:var(--ui-accent)}50%{border-color:var(--ui-border)}}.trap-divicon-wrapper{background:transparent;border:none}.trap-divicon{width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--trap-marker-color);border:2px solid rgba(200,200,190,.55);box-shadow:0 2px 7px #00000073}.trap-divicon-inner{width:12px;height:12px;border-radius:999px;background:#dcdcd2d1;color:#1a1d17;font-size:8px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;line-height:1}.trap-divicon.spot-falle .trap-divicon-inner{border-radius:999px}.trap-divicon.spot-kanzel .trap-divicon-inner{border-radius:4px}.trap-divicon.spot-bodensitz .trap-divicon-inner{border-radius:3px}.trap-divicon.spot-fuetterung .trap-divicon-inner{width:12px;height:12px;border-radius:2px}.trap-divicon.spot-salzlecke .trap-divicon-inner{width:12px;height:12px;border-radius:999px}.trap-divicon.spot-default .trap-divicon-inner{border-radius:999px}.trap-divicon.blink-triggered{animation:trap-triggered-blink 1.1s ease-in-out infinite}@keyframes trap-triggered-blink{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.12)}}.popup-title{margin-bottom:4px}.battery-row{display:flex;align-items:center;gap:6px}.battery-bar{display:inline-block;width:68px;height:8px;border-radius:999px;background:var(--ui-border);overflow:hidden}.battery-bar>span{display:block;height:100%;background:#16a34a}.signal-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;font-size:11px;color:#fff}.signal-badge.good{background:#16a34a}.signal-badge.normal{background:#ca8a04}.signal-badge.bad{background:#ea580c}.signal-badge.na{background:#6b7280}.trap-drawer{grid-column:3;grid-row:2;border-left:1px solid var(--ui-border);background:var(--ui-panel);display:flex;flex-direction:column;overflow:hidden}.drawer-just-updated .trap-drawer{animation:drawer-flash 2.5s ease-out}.app-shell>div:has(>.trap-drawer){grid-column:3;grid-row:2;min-height:0;overflow:hidden;display:flex;flex-direction:column}.app-shell>div:has(>.trap-drawer)>.trap-drawer{flex:1 1 auto;min-height:0}@keyframes drawer-flash{0%{transform:translate(20px);opacity:.5;box-shadow:inset 0 0 20px var(--ui-update-glow, rgba(245, 158, 11, .5))}20%{transform:translate(-3px);opacity:1}35%{transform:translate(0);box-shadow:inset 0 0 12px var(--ui-update-glow, rgba(245, 158, 11, .3))}to{box-shadow:none}}.trap-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border-bottom:1px solid var(--ui-border)}.trap-drawer-header h3{margin:0;font-size:16px}.trap-drawer-close-btn{background:var(--ui-button-bg);color:var(--ui-text);border:1px solid var(--ui-button-border);border-radius:6px;padding:4px 12px;cursor:pointer;font-size:13px}.drawer-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;flex-wrap:wrap}.drawer-telemetry-panel{display:inline-grid;gap:6px;font-size:13px}.drawer-telemetry-row{display:inline-flex;align-items:center;gap:6px}.drawer-mini-battery{display:inline-block;width:68px;height:8px;border-radius:999px;background:var(--ui-border);overflow:hidden}.drawer-mini-battery>span{display:block;height:100%;background:#16a34a}.drawer-mini-battery>span.battery-high{background:#16a34a}.drawer-mini-battery>span.battery-medium{background:#ca8a04}.drawer-mini-battery>span.battery-low{background:#dc2626}.drawer-mini-battery>span.battery-na{background:#6b7280}.drawer-chip{display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;font-size:11px;border:1px solid var(--ui-border);background:var(--ui-panel-soft);color:var(--ui-text)}.status-chip{margin-top:4px;display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;background:var(--ui-panel-soft);color:var(--ui-text)}.status-chip.triggered{background:#4a2020;color:#fca5a5}.status-chip.acknowledged{background:#2d1b4e;color:#b39ddb}.status-chip.daily_report,.status-chip.alarm_canceled{background:#1a3a1a;color:#86efac}.status-chip.low_battery{background:#422006;color:#fed7aa}.status-chip.unknown{background:var(--ui-panel-soft);color:var(--ui-muted)}.trap-drawer-body{padding:12px;overflow-y:auto;flex:1 1 auto;min-height:0}.trap-drawer-body h4{margin:0 0 6px;font-size:14px}.map-object-note{margin:0 0 12px;word-break:break-word;white-space:pre-wrap;line-height:1.5;font-size:13px}.drawer-note-section{margin-bottom:12px}.drawer-note-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.drawer-note-header h4{margin:0;font-size:14px}.drawer-note-edit-btn{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);padding:4px 10px;font-size:12px;cursor:pointer}.drawer-note-edit-btn:hover{background:var(--ui-button-hover)}.drawer-note-edit{display:flex;flex-direction:column;gap:8px}.drawer-note-textarea{width:100%;border:1px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);color:var(--ui-text);padding:8px 10px;font-size:14px;font-family:inherit;line-height:1.5;resize:vertical;color-scheme:dark;box-sizing:border-box}.drawer-note-textarea:focus-visible{outline:2px solid var(--ui-accent);outline-offset:1px}.drawer-note-edit-actions{display:flex;gap:8px}.drawer-note-save-btn{border:1px solid var(--ui-accent);border-radius:8px;background:var(--ui-accent);color:#fff;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer}.drawer-note-save-btn:hover{opacity:.9}.drawer-note-save-btn:disabled{opacity:.5;cursor:not-allowed}.drawer-note-cancel-btn{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:8px 16px;font-size:13px;cursor:pointer}.drawer-note-cancel-btn:hover{background:var(--ui-button-hover)}.drawer-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.drawer-filters button{border:1px solid var(--ui-button-border);background:var(--ui-button-bg);padding:4px 8px;border-radius:5px;font-size:12px;cursor:pointer;color:var(--ui-text)}.drawer-filters button.active{border-color:var(--ui-accent);background:var(--ui-filter-active-bg)}.include-unknown{font-size:12px;display:inline-flex;align-items:center;gap:4px;color:var(--ui-text)}.include-unknown input[type=checkbox]{color-scheme:dark;accent-color:var(--ui-accent)}.drawer-status-legend{margin:0 0 10px;padding:8px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel-soft)}.drawer-status-legend-title{font-size:11px;font-weight:700;color:var(--ui-muted);margin-bottom:6px}.drawer-status-legend-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px}.drawer-status-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ui-text);white-space:nowrap}.drawer-status-legend .legend-shape{flex-shrink:0}.area-io-row{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.area-io-row .secondary-toggle{font-size:.78rem;padding:3px 8px}.import-label{cursor:pointer;text-align:center}.hidden-file-input{display:none}.area-stats-box{margin-top:10px;border-top:1px dashed var(--ui-border);padding-top:8px}.area-stats-row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--ui-text);padding:2px 0}.area-stats-row.total{margin-top:5px;padding-top:6px;border-top:1px solid var(--ui-border)}.event-counter{color:var(--ui-muted);font-size:.8rem;padding:4px 0 8px}.event-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.event-item{border:1px solid var(--ui-border);border-left:4px solid #6b7280;border-radius:8px;padding:8px;font-size:12px}.event-item.triggered{border-left-color:#dc2626}.event-item.daily_report,.event-item.alarm_canceled{border-left-color:#16a34a}.event-item.low_battery{border-left-color:#c2410c}.event-main{display:flex;justify-content:space-between;gap:8px}.event-meta{color:var(--ui-muted);margin-top:3px}.event-item pre{white-space:pre-wrap;margin:6px 0 0;font-size:11px;color:var(--ui-text)}.drawer-actions{margin-top:10px;display:flex;flex-direction:column;gap:6px;padding-bottom:16px}.drawer-actions button{width:100%;padding:8px 12px;border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);font-size:13px;cursor:pointer;transition:background .15s}.drawer-actions button:hover{background:var(--ui-button-hover)}.drawer-actions button:disabled{opacity:.5;cursor:default}.stats-page{position:relative;height:100%;overflow:auto;background:var(--ui-bg);color:var(--ui-text);padding:14px;display:grid;gap:12px;align-content:start}.stats-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid var(--ui-border);border-radius:12px;padding:12px;background:var(--ui-panel)}.stats-header h2{margin:0 0 4px}.stats-header p{margin:0;font-size:13px;color:var(--ui-muted)}.stats-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;flex-shrink:0}.stats-controls label{display:grid;gap:4px;font-size:12px}.stats-controls select{border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel-soft);color:var(--ui-text);padding:7px 9px;font-size:13px;color-scheme:dark}.stats-btn-add{border:1px solid var(--ui-accent);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.stats-btn-add:hover{background:var(--ui-button-hover)}.stats-btn-refresh{border:1px solid var(--ui-button-border);border-radius:8px;background:var(--ui-button-bg);color:var(--ui-text);padding:6px 8px;cursor:pointer;display:grid;place-items:center}.stats-btn-refresh:hover{background:var(--ui-button-hover)}.stats-card{border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-panel);padding:14px}.stats-form-card h3{margin:0 0 12px;font-size:15px}.stats-form{display:grid;gap:10px;grid-template-columns:1fr 1fr}.stats-form label{display:grid;gap:4px;font-size:12px}.stats-form label:first-child{grid-column:1 / -1}.stats-form label:last-of-type{grid-column:1 / -1}.stats-form input,.stats-form select{border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel-soft);color:var(--ui-text);padding:8px 10px;font-size:14px;color-scheme:dark}.stats-form input:focus-visible,.stats-form select:focus-visible{outline:2px solid var(--ui-accent);outline-offset:1px}.stats-optional{color:var(--ui-muted);font-weight:400}.stats-btn-save{grid-column:1 / -1;border:1px solid var(--ui-accent);border-radius:8px;background:var(--ui-accent);color:#fff;padding:10px;font-size:14px;font-weight:600;cursor:pointer}.stats-btn-save:hover{opacity:.9}.stats-btn-save:disabled{opacity:.5;cursor:not-allowed}.stats-grand-total{display:flex;align-items:center;gap:14px;background:var(--ui-panel-soft);border-left:4px solid var(--ui-accent)}.stats-total-label{font-size:13px;color:var(--ui-muted)}.stats-total-value{font-size:28px;font-weight:700;color:var(--ui-text);letter-spacing:-.5px}.stats-total-sub{font-size:12px;color:var(--ui-muted);margin-left:auto}.stats-year-card{padding:0;overflow:hidden}.stats-year-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--ui-border);background:var(--ui-panel-soft);cursor:pointer;user-select:none;-webkit-user-select:none}.stats-year-header:active{background:var(--ui-panel)}.stats-year-header h3{margin:0;font-size:16px}.stats-year-header-right{display:flex;align-items:center;gap:8px}.stats-year-total{font-size:13px;font-weight:600;color:var(--ui-accent)}.stats-year-chevron{display:flex;align-items:center;color:var(--ui-muted);transition:transform .2s ease}.stats-year-collapsed .stats-year-chevron{transform:rotate(-90deg)}.stats-year-collapsed .stats-year-header{border-bottom:none}.stats-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.stats-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.stats-table th:nth-child(1){width:22%}.stats-table th:nth-child(2){width:7%}.stats-table th:nth-child(3){width:13%}.stats-table th:nth-child(4){width:13%}.stats-table th:nth-child(5){width:7%}.stats-table th:nth-child(6){width:24%}.stats-table th:nth-child(7){width:14%}.stats-table th{text-align:left;padding:8px 14px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--ui-muted);border-bottom:1px solid var(--ui-border)}.stats-table td{padding:8px 14px;border-bottom:1px solid rgba(61,64,53,.3);vertical-align:middle}.stats-table tbody tr:last-child td{border-bottom:none}.stats-table tbody tr:hover{background:#6b8f4a0f}.stats-count{font-weight:700;font-variant-numeric:tabular-nums}.stats-gender{text-align:center;font-size:15px}.stats-note{color:var(--ui-muted);font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-actions{display:flex;gap:4px;white-space:nowrap;justify-content:flex-end}.stats-table th:last-child,.stats-table td:last-child{text-align:right;white-space:nowrap}.stats-btn-inline{border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);padding:4px 7px;cursor:pointer;display:inline-grid;place-items:center;min-width:28px;min-height:28px}.stats-btn-inline:hover{background:var(--ui-button-hover)}.stats-btn-delete:hover{border-color:#dc2626;color:#fca5a5}.stats-row-editing td{padding:4px 6px}.stats-row-editing input{width:100%;border:1px solid var(--ui-accent);border-radius:6px;background:var(--ui-panel-soft);color:var(--ui-text);padding:5px 7px;font-size:13px;color-scheme:dark}.stats-row-editing input[type=number]{width:70px}.stats-error{display:flex;align-items:center;justify-content:space-between;border:1px solid #7f1d1d;border-radius:8px;background:#451a1a;color:#fca5a5;padding:10px;font-size:13px}.stats-error-close{border:none;background:transparent;color:#fca5a5;font-size:16px;cursor:pointer;padding:0 4px}.stats-empty{text-align:center;padding:32px 14px}.stats-empty p{margin:0 0 6px;color:var(--ui-muted);font-size:14px}@media (max-width: 768px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.app-statusbar{grid-column:1;grid-row:1;flex-wrap:wrap;gap:6px;padding:6px 10px;z-index:700}.app-status-meta{display:none}.map-wrap{grid-column:1;grid-row:2;min-height:0}.sidebar{position:fixed;left:0;right:0;bottom:calc(var(--pwa-tab-height) + var(--safe-bottom));z-index:800;max-height:calc(85vh - var(--pwa-tab-height) - var(--safe-bottom));border:none;border-top:1px solid var(--ui-border);border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #0000002e;transform:translateY(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;will-change:transform;pointer-events:none;padding-bottom:16px}.sidebar>*{flex-shrink:0}.app-shell[data-mobile-panel=sidebar] .sidebar{pointer-events:auto}.sidebar:before,.trap-drawer:before{content:"";display:block;width:36px;height:4px;margin:8px auto 4px;border-radius:999px;background:var(--ui-muted);opacity:.45;flex-shrink:0}.app-shell[data-mobile-panel=sidebar] .sidebar{transform:translateY(0)}.trap-drawer,.drawer-just-updated .trap-drawer{position:fixed;left:0;right:0;bottom:calc(var(--pwa-tab-height) + var(--safe-bottom));z-index:800;max-height:calc(85dvh - var(--pwa-tab-height) - var(--safe-bottom));border:none;border-top:1px solid var(--ui-border);border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #0000002e;transform:translateY(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);overflow:hidden;display:flex;flex-direction:column;will-change:transform;pointer-events:none;overscroll-behavior:none;touch-action:pan-y}.trap-drawer-header{flex-shrink:0}.trap-drawer-body{flex:1 1 auto;min-height:0;overflow-y:scroll;-webkit-overflow-scrolling:touch;overscroll-behavior-y:none;touch-action:pan-y;padding-bottom:calc(52px + max(20px,env(safe-area-inset-bottom,16px)))}.app-shell[data-mobile-panel=drawer] .trap-drawer,.app-shell[data-mobile-panel=drawer] .drawer-just-updated .trap-drawer{transform:translateY(0);pointer-events:auto}.mobile-backdrop{display:block;position:fixed;inset:0;bottom:calc(var(--pwa-tab-height) + var(--safe-bottom));z-index:790;background:#00000059;touch-action:none;-webkit-tap-highlight-color:transparent}.app-page-content:has([data-mobile-panel=sidebar]),.app-page-content:has([data-mobile-panel=drawer]){overflow:hidden;touch-action:none}.app-shell[data-mobile-panel=sidebar],.app-shell[data-mobile-panel=drawer]{overflow:hidden}.app-shell[data-mobile-panel=sidebar] .map-wrap,.app-shell[data-mobile-panel=drawer] .map-wrap{pointer-events:none}.set-position-banner{left:8px;right:8px;transform:none;justify-content:center;animation:set-pos-pulse 2s ease-in-out infinite}@keyframes set-pos-pulse{0%,to{border-color:var(--ui-accent)}50%{border-color:var(--ui-border)}}.facility-group-toggle{padding:12px 14px;font-size:14px;min-height:44px}.triggered-badge{font-size:11px;padding:2px 8px}.facility-group>.trap-list{padding:8px}.mobile-toolbar{display:flex;grid-column:1;grid-row:3;z-index:810;align-items:center;justify-content:space-around;gap:4px;padding:4px 8px;padding-bottom:max(4px,env(safe-area-inset-bottom));border-top:1px solid var(--ui-border);background:var(--ui-panel)}.mobile-toolbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:48px;border:none;background:transparent;color:var(--ui-muted);font-size:9px;cursor:pointer;border-radius:8px;padding:6px 2px}.mobile-toolbar button.active{color:var(--ui-accent);background:var(--ui-filter-active-bg)}.mobile-toolbar button.has-triggered{color:#fca5a5;position:relative;animation:mobile-btn-triggered-pulse 1.6s ease-in-out infinite}.toolbar-alert-dot{position:absolute;top:4px;right:calc(50% - 16px);width:8px;height:8px;border-radius:50%;background:#dc2626;animation:triggered-badge-blink 1.1s ease-in-out infinite}@keyframes mobile-btn-triggered-pulse{0%,to{background:transparent}50%{background:#dc262626}}.mobile-toolbar button:hover{background:var(--ui-button-hover)}.trap-actions button,.create-trap-box>button,.create-trap-form button,.drawer-filters button,.secondary-toggle,.accordion-toggle,.inline-edit-actions button{min-height:44px;padding:10px 12px;font-size:13px}.trap-item{padding:12px}.trap-main-action{min-height:44px;padding:4px 0}.event-item{padding:12px;font-size:13px}.search-box input{min-height:44px;font-size:16px}.create-trap-form input,.create-trap-form select,.inline-edit-box input,.inline-edit-box select{min-height:44px;font-size:16px;padding:8px 10px}.help-toggle{width:44px;height:44px}.low-battery-alert{inset:auto 8px 66px;max-width:none;z-index:1990}.undo-banner{inset:auto 8px 130px;z-index:1980}.toast-banner{right:8px;left:8px;bottom:194px;z-index:2050}.api-error-banner{top:8px;left:8px;right:8px}.app-auth-bar{flex-wrap:wrap;gap:8px;padding:8px 10px}.app-auth-user{order:3;width:100%;max-width:none;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-main-tabs{gap:4px}.app-main-tabs button{padding:8px 10px;font-size:13px;min-height:44px}.app-modal.sm,.app-modal.md{width:calc(100vw - 16px)}.app-modal-body{max-height:min(60vh,calc(100vh - 120px));overflow-y:auto}.hydro-page{padding:10px}.hydro-header{flex-direction:column;gap:10px}.hydro-header h2{font-size:18px}.hydro-controls{width:100%}.hydro-controls label{flex:1;min-width:0}.hydro-controls input,.hydro-controls select,.hydro-controls button{min-height:44px;font-size:16px;width:100%}.hydro-tabs{border-radius:10px}.hydro-tab{min-height:44px;font-size:14px;padding:10px 12px}.hydro-grid-layout{grid-template-columns:1fr;min-height:auto}.hydro-side-panel{padding:8px;gap:6px;display:grid;grid-template-columns:1fr 1fr}.hydro-side-panel h3{grid-column:1 / -1;font-size:14px}.hydro-stat-card{padding:7px;gap:2px}.hydro-stat-card span{font-size:11px}.hydro-stat-card strong{font-size:16px}.hydro-stat-card small{font-size:10px}.hydro-chart-panel{padding:10px;gap:8px}.hydro-chart-title{flex-wrap:wrap;gap:4px}.hydro-chart-title h3{font-size:14px}.hydro-chart{aspect-ratio:auto;height:260px;touch-action:pan-y}.hydro-chart-foot{flex-direction:column;gap:4px;font-size:11px}.hydro-temp-chart{height:200px}.auth-card{width:100%}.auth-welcome{font-size:22px}.auth-form input,.auth-form button{min-height:48px;font-size:16px;padding:12px}.auth-copyright{position:static;transform:none;text-align:center;margin-top:16px}.auth-page.auth-page-dark{padding:16px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.camera-page{padding:10px 10px 24px;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.camera-tabs{display:none}.camera-mobile-tabs{display:flex}.camera-header{flex-direction:column;gap:8px;padding:10px}.camera-header h2{font-size:18px}.camera-controls{width:100%;flex-wrap:wrap}.camera-filter-select{flex:1 1 100%;min-height:44px}.camera-tabs{position:sticky;top:0;z-index:10;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.camera-tabs::-webkit-scrollbar{display:none}.camera-tab{min-height:44px;font-size:12px;padding:8px 10px;flex:0 0 auto;white-space:nowrap}.camera-controls button{flex:1;min-height:44px;font-size:13px}.camera-species-chip{min-height:36px;padding:6px 12px;font-size:12px;flex-shrink:0}.camera-pending-bar{flex-direction:column;gap:8px;text-align:center;font-size:.82rem}.camera-pending-cancel{align-self:center}.camera-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.camera-card-actions{flex-wrap:wrap;justify-content:center}.camera-card-actions button{min-width:44px;min-height:44px;padding:8px;font-size:15px}.camera-ai-icon{width:22px;height:22px;font-size:12px;top:4px;left:4px}.camera-fav-badge{width:22px;height:22px;font-size:13px;top:4px;right:4px}.camera-pagination button{min-height:44px;padding:8px 16px}.app-page-content:has(.camera-lightbox)~.pwa-tab-bar{display:none}.app-root-shell:has(.camera-lightbox){padding-bottom:var(--safe-bottom)}.camera-lightbox{padding:0;place-items:stretch}.camera-lightbox-inner{max-width:none;max-height:none;width:100%;height:100%;border-radius:0;border:none;display:flex;flex-direction:column;overflow:hidden}.camera-lightbox-close{top:max(8px,env(safe-area-inset-top,8px));right:max(8px,env(safe-area-inset-right,8px));width:44px;height:44px;font-size:20px;background:#000000b3}.camera-lightbox-counter{top:max(10px,env(safe-area-inset-top,10px))}.camera-lightbox-img-wrap{min-height:0;flex:1 1 0;overflow:hidden;display:flex;align-items:center;justify-content:center}.camera-lightbox-inner>img{max-width:100%;max-height:calc(100% - 110px)}.camera-lightbox-img-sizer{max-height:100%}.camera-lightbox-img-sizer>img{max-width:100%;max-height:100%;user-select:none;-webkit-user-select:none}.camera-lightbox-bar{flex:0 0 auto;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:6px;padding:8px 10px;padding-bottom:max(10px,env(safe-area-inset-bottom,10px))}.camera-lightbox-meta{flex-wrap:wrap;gap:6px;font-size:11px}.camera-lightbox-actions{display:flex;flex-wrap:nowrap;gap:6px;margin-left:0}.camera-lightbox-actions button,.camera-lightbox-actions .camera-btn-analyze-pending{min-height:40px;padding:6px 10px;font-size:13px;flex:0 0 auto;white-space:nowrap;border-radius:8px}.camera-lightbox-actions .camera-btn-more{display:none}.camera-lightbox-nav{font-size:28px;padding:10px 12px;top:50%;transform:translateY(-60%);z-index:20;background:#00000073;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.camera-lightbox-prev{left:4px}.camera-lightbox-next{right:4px}.stats-page{padding:10px 10px 24px}.stats-header{flex-direction:column;gap:10px}.stats-header h2{font-size:18px}.stats-controls{width:100%}.stats-controls select{flex:1;min-height:44px;font-size:16px}.stats-btn-add{flex:1;min-height:44px;font-size:14px;text-align:center}.stats-btn-refresh{min-height:44px;min-width:44px}.stats-form{grid-template-columns:1fr}.stats-form input,.stats-form select{min-height:44px;font-size:16px}.stats-btn-save{min-height:48px;font-size:16px}.stats-grand-total{flex-direction:column;text-align:center;gap:4px}.stats-total-value{font-size:36px}.stats-total-sub{margin-left:0}.stats-year-header{padding:14px;min-height:48px;-webkit-tap-highlight-color:transparent}.stats-year-header h3{font-size:17px}.stats-year-chevron svg{width:18px;height:18px}.stats-year-card,.stats-table-wrap{overflow:visible}.stats-table{table-layout:auto}.stats-table thead,.stats-table colgroup{display:none}.stats-table,.stats-table tbody{display:block;width:100%}.stats-table tbody tr{display:block;padding:12px 72px 12px 14px;border-bottom:1px solid var(--ui-border);position:relative;line-height:1.5}.stats-table tbody tr:last-child{border-bottom:none}.stats-table td{display:inline;padding:0;border-bottom:none;font-size:12px}.stats-table td:first-child{display:block;font-weight:700;font-size:15px;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-table td.stats-gender{font-size:14px;color:var(--ui-text);margin-right:2px}.stats-table td.stats-cause,.stats-table td.stats-age,.stats-table td.stats-count{color:var(--ui-muted)}.stats-table td.stats-cause:before{content:" · "}.stats-table td.stats-age:before{content:" · "}.stats-table td.stats-count:before{content:" × ";font-weight:600}.stats-table td.stats-note{display:block;max-width:none;white-space:normal;overflow:visible;text-overflow:unset;color:var(--ui-muted);font-size:12px;font-style:italic;margin-top:2px}.stats-table td.stats-actions{position:absolute;top:50%;right:10px;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px;align-items:center;width:auto;text-align:right}.stats-btn-inline{min-width:38px;min-height:38px}.stats-table tbody tr.stats-row-editing{display:flex;flex-direction:column;gap:6px;padding:12px 14px}.stats-row-editing td{display:block;padding:0;border-bottom:none}.stats-row-editing input,.stats-row-editing select{width:100%;min-height:44px;font-size:15px;box-sizing:border-box;border:1px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);color:var(--ui-text);padding:8px 10px;color-scheme:dark}.stats-row-editing input[type=number]{width:100%}.stats-row-editing td.stats-actions{position:static;transform:none;display:flex;flex-direction:row;gap:8px;padding-top:4px}.stats-row-editing .stats-btn-inline{flex:1;min-height:44px;font-size:16px}}@media (min-width: 769px){.mobile-toolbar,.mobile-backdrop{display:none}}:root{--ui-bg: #121410;--ui-panel: #1a1d17;--ui-panel-soft: #24271f;--ui-border: #3d4035;--ui-text: #d4d4c8;--ui-muted: #9a9b8c;--ui-button-bg: #2a2d25;--ui-button-border: #4a4d40;--ui-button-hover: #343830;--ui-accent: #6b8f4a;--ui-shadow: 0 2px 10px rgba(0, 0, 0, .45);--ui-shadow-soft: 0 1px 6px rgba(0, 0, 0, .32);--ui-filter-active-bg: #262e1e;--ui-trigger-bg-start: #24271f;--ui-trigger-bg-pulse: #462222;--ui-update-flash: #3a3320;--ui-update-glow: rgba(245, 158, 11, .35);--hydro-zone-high: rgba(239, 68, 68, .13);--hydro-zone-normal: rgba(132, 204, 22, .09);--hydro-zone-low: rgba(56, 189, 248, .11);--hydro-line: #84cc16;--hydro-line-glow: rgba(132, 204, 22, .45);--hydro-temp-line: #f59e0b;--hydro-temp-line-glow: rgba(245, 158, 11, .45)}.app-shell{background:var(--ui-bg);color:var(--ui-text)}.sidebar,.trap-drawer{background:var(--ui-panel);border-color:var(--ui-border)}.create-trap-box,.spot-legend,.trap-item,.event-item{background:var(--ui-panel-soft);border-color:var(--ui-border)}.create-trap-box,.spot-legend,.shortcut-help,.drawer-status-legend{border-left:3px solid var(--ui-accent);box-shadow:var(--ui-shadow-soft)}.trap-item.active{border-color:var(--ui-accent)}.trap-meta,.hint,.event-meta,.search-box,.include-unknown{color:var(--ui-muted)}.trap-actions button,.create-trap-box>button,.create-trap-form button,.drawer-filters button,.help-toggle,.reset-toggle{background:var(--ui-button-bg);border-color:var(--ui-button-border);color:var(--ui-text)}.trap-actions button:hover,.help-toggle:hover,.reset-toggle:hover,.drawer-filters button:hover,.create-trap-box>button:hover,.create-trap-form button:hover{background:var(--ui-button-hover)}.create-trap-form input,.create-trap-form select,.inline-edit-box input,.inline-edit-box select,.search-box input{background:var(--ui-panel);color:var(--ui-text);border-color:var(--ui-border)}.sidebar-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar-tools{display:inline-flex;gap:6px}.theme-toggle{display:none}.help-toggle{width:34px;height:34px;border-radius:8px;cursor:pointer;font-weight:700}.reset-toggle,.help-toggle{background:var(--ui-button-bg);border:1px solid var(--ui-button-border);color:var(--ui-text)}.reset-toggle:hover,.help-toggle:hover{background:var(--ui-button-hover)}.search-box{margin:8px 0 10px;display:grid;gap:4px;font-size:12px}.search-input-wrap{position:relative;display:flex}.search-box input{border-radius:8px;padding:7px 28px 7px 9px;width:100%}.search-clear{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:22px;height:22px;border:none;border-radius:50%;background:var(--ui-button-bg);color:var(--ui-muted);font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.search-clear:hover{background:var(--ui-button-hover);color:var(--ui-text)}.shortcut-help{margin:0 0 10px;padding:8px;border:1px solid var(--ui-border);border-left:3px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);box-shadow:var(--ui-shadow-soft);display:grid;gap:6px}.accordion-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);font-size:12px;padding:6px 8px;cursor:pointer}.accordion-toggle:hover{background:var(--ui-button-hover)}.secondary-toggle{margin-top:8px;border:1px solid var(--ui-button-border);border-radius:6px;background:var(--ui-button-bg);color:var(--ui-text);font-size:12px;padding:5px 8px;cursor:pointer}.secondary-toggle:hover{background:var(--ui-button-hover)}.type-filter-list{margin-top:8px;display:grid;gap:6px}.type-filter-item{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ui-text)}.type-filter-item.all{padding-bottom:6px;border-bottom:1px solid var(--ui-border);margin-bottom:2px;font-weight:700}.shortcut-help-title{font-size:12px;font-weight:700}.shortcut-help-item{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ui-muted)}.shortcut-help-item kbd{min-width:26px;border:1px solid var(--ui-border);border-bottom-width:2px;border-radius:6px;padding:2px 6px;text-align:center;font-size:11px;font-family:Arial,sans-serif;background:var(--ui-panel);color:var(--ui-text)}.trap-main-action{width:100%;text-align:left;border:none;background:transparent;color:inherit;cursor:pointer;padding:0}.bulk-actions-bar{display:flex;gap:8px;align-items:center;padding:6px 0}.bulk-actions-bar .danger-btn{background:#991b1b;color:#fef2f2;border:none;border-radius:6px;padding:4px 10px;font-size:.82rem;cursor:pointer}.bulk-checkbox{flex-shrink:0;display:flex;align-items:center;padding:0 4px 0 0}.trap-item.bulk-selected{border-color:var(--ui-accent);background:#6b8f4a1f}.facility-groups{margin-top:10px;display:grid;gap:8px}.facility-group{border:1px solid var(--ui-border);border-left:3px solid var(--ui-accent);border-radius:8px;background:var(--ui-panel-soft);overflow:hidden}.facility-group-toggle{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;font-size:13px;font-weight:700;color:var(--ui-text);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--ui-button-bg);border:none;border-bottom:1px solid transparent;width:100%;text-align:left}.facility-group-toggle::-webkit-details-marker{display:none}.facility-group-toggle:hover{background:var(--ui-button-hover)}.facility-group.is-open>.facility-group-toggle{border-bottom-color:var(--ui-border)}.facility-group.has-triggered{border-color:#dc2626;border-left-color:#dc2626;animation:facility-group-triggered-pulse 1.6s ease-in-out infinite}.facility-group.has-triggered>.facility-group-toggle{background:#3b1111}.triggered-badge{display:inline-block;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:700;border-radius:9px;background:#dc2626;color:#fff;animation:triggered-badge-blink 1.1s ease-in-out infinite}@keyframes facility-group-triggered-pulse{0%,to{border-color:#dc2626}50%{border-color:#7f1d1d}}@keyframes triggered-badge-blink{0%,to{opacity:1}50%{opacity:.5}}.facility-group-arrow{font-size:11px;color:var(--ui-muted)}.facility-group>.trap-list{margin:0;padding:6px}.toast-banner{position:fixed;right:14px;bottom:16px;z-index:2050;border-radius:8px;padding:9px 12px;font-size:13px;box-shadow:var(--ui-shadow)}.toast-banner.info{background:#1f2937;color:#f9fafb}.toast-banner.success{background:#14532d;color:#dcfce7}.toast-banner.error{background:#7f1d1d;color:#fee2e2}.loading-overlay{position:absolute;inset:0;z-index:50;display:grid;place-items:center;background:#12141080;pointer-events:none}.loading-spinner{width:32px;height:32px;border:3px solid var(--ui-border);border-top-color:var(--ui-accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.area-vertex-icon{width:14px;height:14px;border-radius:50%;background:var(--ui-accent);border:2px solid rgba(200,200,190,.55);box-shadow:0 0 6px #00000080;cursor:grab}.area-vertex-icon:active{cursor:grabbing}.area-midpoint-icon{width:10px;height:10px;border-radius:50%;background:var(--ui-accent);opacity:.45;border:1.5px solid rgba(200,200,190,.4);box-shadow:0 0 4px #0000004d;cursor:pointer;transition:opacity .15s,transform .15s}.area-midpoint-icon:hover{opacity:.85;transform:scale(1.4)}.area-vertex-popup{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:90px}.area-vertex-popup span{font-size:12px;font-weight:600}.area-vertex-delete{border:1px solid #7f1d1d;border-radius:5px;background:#451a1a;color:#fca5a5;font-size:11px;padding:4px 8px;cursor:pointer}.area-vertex-delete:hover{background:#7f1d1d;color:#fee2e2}.leaflet-popup-content-wrapper{background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow);border-radius:8px}.leaflet-popup-tip{background:var(--ui-panel);border:1px solid var(--ui-border);border-top:none;border-right:none}.leaflet-popup-close-button{color:var(--ui-muted)!important}.leaflet-popup-close-button:hover{color:var(--ui-text)!important}.leaflet-tooltip{background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-soft);border-radius:6px;padding:4px 8px;font-size:12px}.leaflet-tooltip-top:before{border-top-color:var(--ui-border)}.leaflet-tooltip-bottom:before{border-bottom-color:var(--ui-border)}.leaflet-tooltip-left:before{border-left-color:var(--ui-border)}.leaflet-tooltip-right:before{border-right-color:var(--ui-border)}.weather-check-section{padding:4px 8px 8px}.weather-check-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:10px 14px;border:1px solid var(--ui-accent);border-radius:8px;background:#2563eb1a;color:var(--ui-accent);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.weather-check-btn:hover{background:#2563eb33}.weather-check-btn.active{background:var(--ui-accent);color:#fff}.weather-check-icon{font-size:16px}.weather-banner{background:var(--ui-accent)}.weather-marker-icon{background:none!important;border:none!important}.weather-popup .leaflet-popup-content-wrapper{padding:0;overflow:hidden}.weather-popup .leaflet-popup-content{margin:0;min-width:210px}.weather-overlay{padding:12px 14px;font-size:13px;line-height:1.4;position:relative;border-radius:8px;transition:border-color .3s;border-left:4px solid var(--ui-border)}.weather-zone-freezing{border-left-color:#60a5fa}.weather-zone-cold{border-left-color:#38bdf8}.weather-zone-mild{border-left-color:#4ade80}.weather-zone-warm{border-left-color:#fbbf24}.weather-zone-hot{border-left-color:#ef4444}.weather-overlay-close{position:absolute;top:4px;right:6px;background:none;border:none;color:var(--ui-muted);cursor:pointer;font-size:14px;padding:2px 4px;line-height:1}.weather-overlay-close:hover{color:var(--ui-text)}.weather-overlay-loading{text-align:center;padding:16px;color:var(--ui-muted)}.weather-overlay-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.weather-emoji{font-size:20px}.weather-label{font-weight:600;color:var(--ui-text)}.weather-overlay-temp{font-size:28px;font-weight:700;color:var(--ui-text);margin:2px 0}.weather-overlay-feels{font-size:12px;color:var(--ui-muted);margin-bottom:8px}.weather-overlay-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}.weather-stat{display:flex;flex-direction:column;gap:1px}.weather-stat-label{font-size:10px;text-transform:uppercase;color:var(--ui-muted);letter-spacing:.3px}.weather-stat-value{font-size:13px;font-weight:600;color:var(--ui-text)}.weather-wind-section{display:flex;align-items:center;justify-content:space-between;padding-top:6px;border-top:1px solid var(--ui-border)}.weather-wind-info{display:flex;flex-direction:column;gap:1px}.weather-wind-gusts{font-size:11px;color:var(--ui-muted)}.weather-wind-beaufort{font-size:11px;color:var(--ui-accent);font-weight:600}.weather-wind-arrow{color:var(--ui-accent);transition:transform .3s ease;flex-shrink:0}.weather-overlay-footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.weather-overlay-time{font-size:11px;color:var(--ui-muted)}.weather-cached-badge{font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:var(--ui-muted);background:var(--ui-bg);padding:1px 5px;border-radius:4px;border:1px solid var(--ui-border)}.weather-wind-changes{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;padding-top:6px;border-top:1px solid var(--ui-border)}.weather-change-badge{display:flex;flex-direction:column;gap:0;padding:3px 6px;border-radius:4px;font-size:11px;line-height:1.3;flex:1;min-width:80px}.weather-change-badge.forecast{background:#3b82f61f;border:1px solid rgba(59,130,246,.3)}.weather-change-badge.observed{background:#eab3081f;border:1px solid rgba(234,179,8,.3)}.weather-change-label{font-size:9px;text-transform:uppercase;letter-spacing:.3px;color:var(--ui-muted)}.weather-change-value{font-weight:600;color:var(--ui-text)}.weather-forecast{margin-top:8px;padding-top:6px;border-top:1px solid var(--ui-border)}.weather-forecast-title{font-size:10px;text-transform:uppercase;letter-spacing:.3px;color:var(--ui-muted);margin-bottom:4px}.weather-forecast-scroll{display:flex;flex-direction:column;gap:2px;max-height:140px;overflow-y:auto}.weather-forecast-hour{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0;border-bottom:1px solid rgba(255,255,255,.04)}.weather-forecast-hour:last-child{border-bottom:none}.wfh-time{color:var(--ui-muted);width:38px;flex-shrink:0;font-size:11px}.wfh-emoji{width:18px;flex-shrink:0;text-align:center}.wfh-temp{width:32px;flex-shrink:0;font-weight:600;color:var(--ui-text)}.wfh-wind{width:55px;flex-shrink:0;color:var(--ui-text)}.wfh-wind small{font-size:9px;color:var(--ui-muted)}.wfh-arrow{color:var(--ui-accent);flex-shrink:0;transition:transform .3s ease}.wfh-rain{color:var(--ui-muted);font-size:11px;margin-left:auto}@media (max-width: 768px){.weather-popup .leaflet-popup-content-wrapper{max-width:min(300px,85vw)}.weather-popup .leaflet-popup-content{min-width:min(200px,65vw);max-width:min(290px,82vw);max-height:55vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.weather-overlay{font-size:11px;padding:8px 10px}.weather-overlay-header{gap:4px;margin-bottom:2px}.weather-emoji{font-size:16px}.weather-overlay-temp{font-size:18px;margin:1px 0}.weather-overlay-feels{font-size:10px;margin-bottom:4px}.weather-overlay-close{min-width:36px;min-height:36px;display:flex;align-items:center;justify-content:center;font-size:16px;top:0;right:0}.weather-overlay-grid{gap:4px;margin-bottom:4px}.weather-stat-label{font-size:9px}.weather-stat-value{font-size:12px}.weather-wind-section{padding-top:4px}.weather-change-badge{padding:2px 4px;font-size:10px}.weather-change-label{font-size:8px}.weather-change-value{font-size:11px}.weather-forecast{margin-top:4px;padding-top:4px}.weather-forecast-scroll{max-height:120px;-webkit-overflow-scrolling:touch}.weather-forecast-hour{padding:2px 0;min-height:28px;align-items:center;font-size:11px}.weather-overlay-footer{flex-wrap:wrap;gap:4px;margin-top:4px}}.moon-page{max-width:1100px;margin:0 auto;padding:20px 16px 40px;color:var(--ui-text);height:100%;overflow:auto}.moon-hero{display:flex;align-items:center;gap:20px;padding:24px;background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:12px;margin-bottom:16px}.moon-hero-info{display:flex;flex-direction:column;gap:2px}.moon-hero-title{font-size:22px;font-weight:700;margin:0;color:var(--ui-text)}.moon-hero-date{font-size:13px;color:var(--ui-muted);margin:0}.moon-hero-phase{font-size:15px;margin:4px 0 0;display:flex;align-items:center;gap:6px}.moon-hero-emoji{font-size:20px}.moon-hero-hunting{display:flex;align-items:center;gap:8px;margin-top:4px}.moon-hero-hunting-label{font-size:13px;font-weight:600;color:#eab308e6}.moon-hunting-rating{display:inline-flex;gap:1px;font-size:14px}.moon-star-filled{color:#eab308}.moon-star-empty{color:#ffffff26}.moon-quick-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.moon-fact-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 10px;background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:10px;text-align:center}.moon-fact-emoji{font-size:24px}.moon-fact-label{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-muted)}.moon-fact-value{font-size:14px;font-weight:600;color:var(--ui-text)}.moon-tip{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:#eab30814;border:1px solid rgba(234,179,8,.25);border-radius:10px;margin-bottom:16px}.moon-tip-icon{font-size:24px;flex-shrink:0;margin-top:2px}.moon-tip-text{margin:0;font-size:13px;line-height:1.5;color:var(--ui-text)}.moon-body{display:grid;grid-template-columns:1fr 300px;gap:16px;align-items:start}.moon-calendar-section{background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:12px;padding:16px}.moon-cal-nav{display:flex;align-items:center;gap:8px;margin-bottom:12px}.moon-cal-nav-btn{background:none;border:1px solid var(--ui-border);color:var(--ui-text);border-radius:6px;padding:4px 10px;cursor:pointer;font-size:14px}.moon-cal-nav-btn:hover{background:var(--ui-bg)}.moon-cal-title{flex:1;text-align:center;font-size:16px;font-weight:700;margin:0}.moon-cal-today-btn{font-size:12px;padding:4px 10px;border:1px solid var(--ui-border);border-radius:6px;background:none;color:var(--ui-muted);cursor:pointer}.moon-cal-today-btn:hover{color:var(--ui-text);background:var(--ui-bg)}.moon-cal-header{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.moon-cal-hdr{font-size:11px;font-weight:600;text-transform:uppercase;text-align:center;color:var(--ui-muted);padding:4px 0}.moon-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.moon-cal-day{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px;border:1px solid transparent;border-radius:8px;background:none;color:var(--ui-text);cursor:pointer;transition:background .15s,border-color .15s}.moon-cal-day:hover{background:var(--ui-bg);border-color:var(--ui-border)}.moon-cal-day--outside{opacity:.3}.moon-cal-day--today{border-color:var(--ui-accent);background:#3b82f614}.moon-cal-day--selected{border-color:var(--ui-accent);background:#3b82f626}.moon-cal-day--major .moon-cal-emoji{font-size:14px}.moon-cal-num{font-size:13px;font-weight:600;line-height:1}.moon-cal-emoji{font-size:11px;line-height:1}.moon-sidebar{display:flex;flex-direction:column;gap:12px}.moon-detail-card{display:flex;align-items:center;gap:14px;padding:16px;background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:12px}.moon-disc{flex-shrink:0;border-radius:50%;box-shadow:0 0 12px #f0e68c40}.moon-detail-info{display:flex;flex-direction:column;gap:2px}.moon-detail-date{margin:0;font-size:14px;font-weight:700}.moon-detail-phase{margin:0;font-size:13px}.moon-detail-illum,.moon-detail-age{margin:0;font-size:12px;color:var(--ui-muted)}.moon-detail-hunting{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:12px;font-weight:600;color:#eab308e6}.moon-detail-tip{margin:4px 0 0;font-size:12px;line-height:1.4;color:var(--ui-muted)}.moon-upcoming{background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:12px;padding:14px 16px}.moon-section-title{margin:0 0 10px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--ui-muted)}.moon-event-list{display:flex;flex-direction:column;gap:6px}.moon-event-row{display:flex;align-items:center;gap:8px;font-size:13px;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.04)}.moon-event-row:last-child{border-bottom:none}.moon-event-emoji{font-size:16px;width:24px;text-align:center;flex-shrink:0}.moon-event-label{flex:1;color:var(--ui-text)}.moon-event-date{color:var(--ui-muted);font-size:12px;white-space:nowrap}@media (max-width: 768px){.moon-page{padding:12px 10px 32px}.moon-hero{flex-direction:column;text-align:center;padding:18px 14px}.moon-hero-info{align-items:center}.moon-quick-facts{grid-template-columns:1fr 1fr;gap:8px}.moon-fact-card{flex-direction:column;text-align:center;padding:8px 6px;gap:2px}.moon-body{grid-template-columns:1fr}.moon-cal-nav-btn{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:16px}.moon-cal-today-btn{min-height:44px;padding:8px 14px;font-size:14px}.moon-cal-day{padding:6px 2px;min-height:44px;justify-content:center}.moon-cal-num,.moon-cal-emoji{font-size:12px}.moon-calendar-section{padding:12px 8px}.moon-cal-title{font-size:14px}.moon-upcoming{padding:12px}.moon-detail-card{flex-direction:column;text-align:center}.moon-detail-info{align-items:center}.moon-event-row{padding:8px 0;min-height:44px}}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--pwa-tab-height: 0px}.app-root-shell{width:100%;height:100vh;height:100dvh;display:grid;grid-template-rows:auto 1fr;background:var(--ui-bg);color:var(--ui-text);overflow:hidden}.app-page-content{min-height:0;overflow:hidden;position:relative}.pwa-tab-bar{display:none}.pwa-install-banner{position:fixed;bottom:calc(var(--pwa-tab-height) + var(--safe-bottom) + 12px);left:12px;right:12px;z-index:2500;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:var(--ui-panel);border:1px solid var(--ui-accent);border-radius:14px;box-shadow:0 8px 32px #00000080;animation:pwa-install-slide-up .4s cubic-bezier(.2,0,0,1)}@keyframes pwa-install-slide-up{0%{transform:translateY(100px);opacity:0}to{transform:translateY(0);opacity:1}}.pwa-install-banner-text{display:flex;flex-direction:column;gap:2px}.pwa-install-banner-text strong{font-size:14px;color:var(--ui-text)}.pwa-install-banner-text span{font-size:12px;color:var(--ui-muted)}.pwa-install-banner-actions{display:flex;gap:8px;flex-shrink:0}.pwa-install-banner-actions button{border:1px solid var(--ui-accent);border-radius:10px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;background:var(--ui-accent);color:#fff;min-height:44px}.pwa-install-banner-actions .pwa-install-dismiss{background:transparent;color:var(--ui-muted);border-color:var(--ui-border)}.pwa-loading-spinner{width:32px;height:32px;border:3px solid var(--ui-border);border-top-color:var(--ui-accent);border-radius:50%;animation:pwa-spin .8s linear infinite;margin:0 auto}@keyframes pwa-spin{to{transform:rotate(360deg)}}@media (hover: none) and (pointer: coarse){button,[role=tab],[role=button],.trap-item,.camera-card,.moon-cal-day,summary{-webkit-tap-highlight-color:transparent;transition:transform .1s ease,opacity .1s ease}button:active,[role=tab]:active,[role=button]:active,summary:active{transform:scale(.97);opacity:.85}.trap-item:active,.camera-card:active{transform:scale(.985);opacity:.9}}html{overflow-x:hidden}body{overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (max-width: 768px){:root{--pwa-tab-height: 56px}.app-auth-bar{display:none}.app-root-shell{grid-template-rows:1fr;padding-top:var(--safe-top);padding-bottom:calc(var(--pwa-tab-height) + var(--safe-bottom))}.app-page-content{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.pwa-tab-bar{display:flex;align-items:stretch;justify-content:space-around;gap:0;background:#1a1d17eb;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:.5px solid rgba(255,255,255,.08);padding:6px 0 0;padding-bottom:max(6px,var(--safe-bottom));z-index:900;position:fixed;bottom:0;left:0;right:0}.pwa-tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:50px;border:none;background:transparent;color:var(--ui-muted);cursor:pointer;padding:4px 0;position:relative;-webkit-tap-highlight-color:transparent;min-width:0}.pwa-tab-item svg{width:22px;height:22px;flex-shrink:0;transition:color .2s ease}.pwa-tab-label{font-size:10px;font-weight:500;letter-spacing:.01em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.pwa-tab-item.active{color:var(--ui-accent)}.pwa-tab-item.active svg{filter:drop-shadow(0 0 4px rgba(107,143,74,.4))}.pwa-tab-item:active{transform:scale(.92);opacity:.8}.app-shell{height:100%}.app-shell .mobile-toolbar{display:none}.app-shell .map-context-toolbar{display:flex;position:fixed;bottom:calc(var(--pwa-tab-height) + var(--safe-bottom) + 8px);left:50%;transform:translate(-50%);z-index:820;background:#1a1d17eb;backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border:.5px solid rgba(255,255,255,.1);border-radius:16px;padding:4px 8px;gap:2px;box-shadow:0 4px 20px #0006;min-height:auto;width:auto}.map-context-toolbar button{flex:none;min-height:44px;min-width:56px;border-radius:12px;padding:6px 10px}.leaflet-control-attribution{font-size:9px!important;max-width:min(52vw,220px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.5}.low-battery-alert{bottom:calc(var(--pwa-tab-height) + var(--safe-bottom) + 12px)}.undo-banner{bottom:calc(var(--pwa-tab-height) + var(--safe-bottom) + 20px)}.toast-banner{bottom:calc(var(--pwa-tab-height) + var(--safe-bottom) + 84px)}.hydro-page,.camera-page,.moon-page{padding-bottom:24px;min-height:auto;height:auto;overflow:visible}.camera-mobile-tabs{display:none}.camera-tabs{display:flex;position:sticky;top:0;z-index:10;border-radius:0;margin:0 -10px;padding:0;border-left:none;border-right:none;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.camera-tabs::-webkit-scrollbar{display:none}.app-modal-backdrop{padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left)}.app-modal.sm,.app-modal.md{max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px);overflow-y:auto}.app-modal-body{max-height:none}}.app-root-shell[data-pwa-standalone=true]{padding-top:var(--safe-top)}.app-root-shell[data-pwa-standalone=true] img{-webkit-touch-callout:none}.app-root-shell[data-pwa-standalone=true] .pwa-tab-bar,.app-root-shell[data-pwa-standalone=true] .app-auth-bar,.app-root-shell[data-pwa-standalone=true] .app-statusbar,.app-root-shell[data-pwa-standalone=true] .mobile-toolbar{user-select:none;-webkit-user-select:none}@media (min-width: 769px){.app-root-shell[data-pwa-standalone=true] .app-page-content{overflow-y:auto;-webkit-overflow-scrolling:touch}.app-root-shell[data-pwa-standalone=true] .camera-page,.app-root-shell[data-pwa-standalone=true] .hydro-page,.app-root-shell[data-pwa-standalone=true] .moon-page,.app-root-shell[data-pwa-standalone=true] .stats-page{height:auto;overflow:visible;min-height:100%}.app-root-shell[data-pwa-standalone=true] .camera-tabs{display:flex;position:sticky;top:0;z-index:10}}@media (max-width: 768px) and (min-height: 900px){.hydro-chart{height:300px}.hydro-temp-chart{height:240px}}@media (max-width: 400px){.pwa-tab-item svg{width:20px;height:20px}.pwa-tab-label{font-size:9px}.camera-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}}.notif-overlay{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;background:#00000080;padding:var(--safe-top) 16px calc(var(--pwa-tab-height) + var(--safe-bottom) + 16px) 16px}.notif-settings{background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:16px;overflow:hidden;max-width:440px;width:100%}.notif-settings-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--ui-border)}.notif-settings-header h3{margin:0;font-size:17px;font-weight:600}.notif-close{border:none;background:var(--ui-button-bg);color:var(--ui-muted);width:32px;height:32px;border-radius:999px;font-size:14px;cursor:pointer;display:grid;place-items:center}.notif-settings-body{padding:16px;display:flex;flex-direction:column;gap:16px}.notif-hint{padding:14px;border-radius:12px;background:#6b8f4a1a;border:1px solid rgba(107,143,74,.2);font-size:13px;line-height:1.5}.notif-hint strong{display:block;margin-bottom:6px}.notif-hint p{margin:4px 0 0}.notif-hint-warn{background:#f59e0b1a;border-color:#f59e0b33;color:#fde68a}.notif-enable-section{text-align:center;padding:12px 0}.notif-enable-section p{margin:0 0 16px;font-size:14px;color:var(--ui-muted)}.notif-enable-btn{border:none;background:var(--ui-accent);color:#fff;padding:14px 28px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;min-height:48px;width:100%}.notif-enable-btn:active{transform:scale(.97);opacity:.9}.notif-loading{display:grid;place-items:center;padding:24px}.notif-error{padding:12px;border-radius:10px;background:#dc26261f;border:1px solid rgba(220,38,38,.2);color:#fca5a5;font-size:13px}.notif-success{padding:12px;border-radius:10px;background:#16a34a1f;border:1px solid rgba(22,163,74,.2);color:#86efac;font-size:14px;font-weight:500;text-align:center}.notif-pref-list{display:flex;flex-direction:column;gap:2px}.notif-pref-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 4px;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer}.notif-pref-item:last-child{border-bottom:none}.notif-pref-text{display:flex;flex-direction:column;gap:2px}.notif-pref-label{font-size:15px;font-weight:500;color:var(--ui-text)}.notif-pref-desc{font-size:12px;color:var(--ui-muted)}.notif-toggle{position:relative;width:51px;height:31px;border-radius:999px;border:none;background:#39393d;cursor:pointer;flex-shrink:0;transition:background .25s ease;padding:0}.notif-toggle.on{background:var(--ui-accent)}.notif-toggle-thumb{position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:999px;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.notif-toggle.on .notif-toggle-thumb{transform:translate(20px)}.notif-disable-btn{border:1px solid rgba(220,38,38,.3);background:transparent;color:#fca5a5;padding:12px;border-radius:10px;font-size:14px;cursor:pointer;text-align:center;min-height:44px}.notif-disable-btn:active{background:#dc26261a}.notif-logout-btn{margin-top:12px;border:1px solid var(--ui-button-border);background:var(--ui-button-bg);color:var(--ui-text);padding:12px;border-radius:10px;font-size:14px;cursor:pointer;text-align:center;min-height:44px;width:100%}.notif-logout-btn:active{background:var(--ui-button-hover)}.pwa-tab-badge{position:absolute;top:2px;right:calc(50% - 18px);min-width:18px;height:18px;border-radius:999px;background:#dc2626;color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;padding:0 4px;line-height:1}@media (max-width: 768px){.notif-overlay{place-items:end center}.notif-settings{max-width:none;border-radius:16px 16px 0 0}}
