.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}}*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #3b82f6;--primary-dark: #2563eb;--primary-glow: rgba(59, 130, 246, .5);--secondary: #8b5cf6;--success: #10b981;--success-glow: rgba(16, 185, 129, .5);--warning: #f59e0b;--warning-glow: rgba(245, 158, 11, .5);--danger: #ef4444;--danger-glow: rgba(239, 68, 68, .5);--bg: #0f172a;--bg-secondary: #1e293b;--card-bg: rgba(30, 41, 59, .8);--card-bg-solid: #1e293b;--text: #f1f5f9;--text-light: #94a3b8;--text-muted: #64748b;--border: rgba(148, 163, 184, .1);--border-light: rgba(148, 163, 184, .05);--glass-bg: rgba(30, 41, 59, .6);--glass-border: rgba(148, 163, 184, .1);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .3);--gradient-primary: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);--gradient-success: linear-gradient(135deg, #10b981 0%, #059669 100%);--gradient-warning: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);--gradient-danger: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);--gradient-dark: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);--gradient-glow: linear-gradient(135deg, rgba(59, 130, 246, .1) 0%, rgba(139, 92, 246, .1) 100%)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);background-image:radial-gradient(at 0% 0%,rgba(59,130,246,.15) 0%,transparent 50%),radial-gradient(at 100% 0%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(at 100% 100%,rgba(16,185,129,.1) 0%,transparent 50%);background-attachment:fixed;color:var(--text);line-height:1.6;min-height:100vh}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:1rem 2rem;box-shadow:0 2px 10px #0000001a}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:.75rem}.logo-icon{font-size:2rem}.logo h1{font-size:1.5rem;font-weight:600}.nav{display:flex;gap:1rem}.nav-link{color:#fffc;text-decoration:none;padding:.5rem 1rem;border-radius:8px;display:flex;align-items:center;gap:.5rem;transition:all .2s}.nav-link:hover,.nav-link.active{background:#fff3;color:#fff}.main{flex:1;max-width:1400px;margin:0 auto;padding:2rem;width:100%}.footer{background:var(--card-bg);border-top:1px solid var(--border);padding:1rem 2rem;text-align:center;color:var(--text-light)}.card{background:var(--card-bg);border-radius:12px;box-shadow:0 2px 8px #0000000d;padding:1.5rem;border:1px solid var(--border)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.card-title{font-size:1.25rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:1.5rem;border:1px solid var(--glass-border);display:flex;align-items:center;gap:1rem;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent)}.stat-card:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 20px 40px #0000004d;border-color:var(--primary-glow)}.stat-icon{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.75rem}.stat-icon.blue{background:#2563eb1a}.stat-icon.green{background:#22c55e1a}.stat-icon.orange{background:#f59e0b1a}.stat-icon.red{background:#ef44441a}.stat-info h3{color:var(--text-light);font-size:.875rem;font-weight:500;margin-bottom:.25rem}.stat-value{font-size:1.75rem;font-weight:700;color:var(--text)}.table-container{overflow-x:auto}th,td{padding:1rem;text-align:left;border-bottom:1px solid var(--border)}th{background:var(--bg);font-weight:600;color:var(--text-light);font-size:.875rem;text-transform:uppercase}tr:hover{background:var(--bg)}.status{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .75rem;border-radius:20px;font-size:.875rem;font-weight:500}.status.aktif{background:#22c55e1a;color:var(--success)}.status.hata{background:#ef44441a;color:var(--danger)}.status.beklemede{background:#f59e0b1a;color:var(--warning)}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:8px;font-weight:500;cursor:pointer;border:none;transition:all .2s;text-decoration:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;color:var(--text-light)}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.error{background:#ef44441a;border:1px solid var(--danger);color:var(--danger);padding:1rem;border-radius:8px;margin-bottom:1rem}.detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.info-row{display:flex;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid var(--border)}.info-label{color:var(--text-light);font-weight:500}.info-value{font-weight:600}.connection-status{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:8px;font-size:.875rem}.connection-status.connected{background:#22c55e1a;color:var(--success)}.connection-status.disconnected{background:#ef44441a;color:var(--danger)}.page-header{margin-bottom:2rem}.page-header h1{font-size:1.75rem;font-weight:700;margin-bottom:.5rem}.page-header .subtitle{color:var(--text-light);font-size:.95rem}.dashboard-page .stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.25rem;margin-bottom:2rem}.dashboard-page .stat-card{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);display:flex;align-items:center;gap:1rem;transition:transform .2s,box-shadow .2s}.dashboard-page .stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.dashboard-page .stat-card.gradient-blue{border-left:4px solid #3B82F6}.dashboard-page .stat-card.gradient-green{border-left:4px solid #10B981}.dashboard-page .stat-card.gradient-purple{border-left:4px solid #8B5CF6}.dashboard-page .stat-card.gradient-orange{border-left:4px solid #F59E0B}.dashboard-page .stat-card.gradient-cyan{border-left:4px solid #06B6D4}.dashboard-page .stat-card.gradient-red{border-left:4px solid #EF4444}.dashboard-page .stat-icon{font-size:2rem}.dashboard-page .stat-content{display:flex;flex-direction:column}.dashboard-page .stat-value{font-size:1.5rem;font-weight:700}.dashboard-page .stat-label{font-size:.85rem;color:var(--text-light)}.dashboard-page .charts-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:1.5rem;margin-bottom:2rem}.dashboard-page .ai-section{margin-bottom:2rem}.dashboard-page .quick-actions{background:var(--card-bg);border-radius:16px;padding:1.5rem;border:1px solid var(--border);margin-bottom:2rem;margin-top:2rem}.dashboard-page .quick-actions .section-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.dashboard-page .quick-actions .section-header svg{color:var(--primary)}.dashboard-page .quick-actions .section-header h3{font-size:1.1rem;font-weight:600;margin:0}.dashboard-page .action-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem}.dashboard-page .action-card{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:1.5rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text);transition:all .2s;text-align:center}.dashboard-page .action-card:hover{background:#3b82f626;border-color:var(--primary);transform:translateY(-3px);box-shadow:0 8px 20px #3b82f626}.dashboard-page .action-card .action-icon{width:48px;height:48px;background:#3b82f61a;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--primary)}.dashboard-page .action-card.heat .action-icon{background:#ef44441a;color:#ef4444}.dashboard-page .action-card.heat:hover{border-color:#ef4444;box-shadow:0 8px 20px #ef444426}.dashboard-page .action-card span:last-child{font-size:.9rem;font-weight:500;color:var(--text)}.dashboard-page .activity-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.dashboard-page .activity-card{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}.dashboard-page .activity-card h3{margin-bottom:1rem}.dashboard-page .activity-stats{display:flex;gap:2rem}.dashboard-page .activity-item{display:flex;flex-direction:column}.dashboard-page .activity-value{font-size:1.5rem;font-weight:700;color:var(--primary)}.dashboard-page .activity-label{font-size:.8rem;color:var(--text-light)}.dashboard-page .stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;margin-bottom:2rem}.dashboard-stat{background:var(--card-bg);border-radius:12px;padding:1.25rem;border:1px solid var(--border);display:flex;align-items:center;gap:1rem;transition:transform .2s,box-shadow .2s}.dashboard-stat:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.dashboard-stat .icon{font-size:2rem;width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center}.dashboard-stat .icon.blue{background:#3b82f61a}.dashboard-stat .icon.green{background:#10b9811a}.dashboard-stat .icon.orange{background:#f59e0b1a}.dashboard-stat .icon.purple{background:#8b5cf61a}.dashboard-stat .icon.red{background:#ef44441a}.dashboard-stat .icon.cyan{background:#06b6d41a}.dashboard-stat .info .value{font-size:1.5rem;font-weight:700;color:var(--text)}.dashboard-stat .info .label{font-size:.85rem;color:var(--text-light)}.dashboard-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(500px,1fr));gap:1.5rem;margin-bottom:2rem}.chart-card{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}.chart-card h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text)}.chart-card.full-width{grid-column:1 / -1}.quick-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.quick-link{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;background:var(--card-bg);border:1px solid var(--border);border-radius:10px;text-decoration:none;color:var(--text);transition:all .2s}.quick-link:hover{border-color:var(--primary);background:#3b82f60d}.quick-link .icon{font-size:1.5rem}.city-view-page .city-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}.city-card{background:var(--card-bg);border-radius:12px;padding:1.25rem;border:1px solid var(--border);cursor:pointer;transition:all .2s}.city-card:hover,.city-card.selected{border-color:var(--primary);box-shadow:0 4px 12px #3b82f626}.city-card .city-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.city-card .city-name{font-size:1.1rem;font-weight:600}.city-card .city-badge{background:#3b82f61a;color:var(--primary);padding:.25rem .75rem;border-radius:20px;font-size:.8rem;font-weight:500}.city-card .city-stats{display:flex;gap:1.5rem;color:var(--text-light);font-size:.85rem}.city-card .city-stats span{display:flex;align-items:center;gap:.3rem}.districts-panel{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);margin-top:2rem}.districts-panel h3{margin-bottom:1rem}.districts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.district-item{padding:.75rem 1rem;background:var(--bg);border-radius:8px;display:flex;justify-content:space-between;align-items:center}.district-item .name{font-weight:500}.district-item .count{background:var(--primary);color:#fff;padding:.15rem .5rem;border-radius:12px;font-size:.75rem}.site-view-page .filters-bar{display:flex;gap:1.5rem;align-items:flex-end;margin-bottom:2rem;flex-wrap:wrap}.filter-group select,.filter-group input{padding:.6rem 1rem;border:1px solid var(--border);border-radius:8px;font-size:.95rem;background:var(--card-bg);min-width:200px}.filter-info{color:var(--text-light);font-size:.9rem;padding:.6rem 0}.sites-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem}.site-card{background:var(--card-bg);border-radius:12px;padding:1.25rem;border:1px solid var(--border)}.site-card .site-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.site-card .site-header h3{font-size:1rem;font-weight:600}.status-badge{padding:.2rem .6rem;border-radius:12px;font-size:.75rem;font-weight:500}.status-badge.active{background:#10b9811a;color:#10b981}.status-badge.inactive{background:#ef44441a;color:#ef4444}.site-location,.site-address,.site-manager{display:flex;align-items:center;gap:.5rem;color:var(--text-light);font-size:.9rem;margin-bottom:.5rem}.site-location .icon,.site-address .icon,.site-manager .icon{width:18px}.site-stats{display:flex;gap:1.5rem;padding:1rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:.75rem 0}.site-stats .stat{text-align:center}.site-stats .stat-value{font-size:1.1rem;font-weight:700;color:var(--text)}.site-stats .stat-label{font-size:.75rem;color:var(--text-light)}.site-actions{display:flex;gap:.75rem;margin-top:1rem}.btn-sm{padding:.4rem .75rem;font-size:.85rem}.map-view-page .map-container{position:relative}.map-stats{display:flex;gap:2rem;margin-bottom:1rem}.map-stats .stat-item{background:var(--card-bg);padding:.75rem 1.25rem;border-radius:8px;border:1px solid var(--border)}.map-stats .stat-value{font-size:1.25rem;font-weight:700;color:var(--primary)}.map-stats .stat-label{font-size:.8rem;color:var(--text-light)}.map-legend{position:absolute;top:80px;right:20px;background:var(--card-bg);padding:1rem;border-radius:8px;box-shadow:0 2px 8px #00000026;z-index:1000}.map-legend h4{font-size:.85rem;margin-bottom:.75rem}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.8rem;margin-bottom:.4rem}.legend-color{width:14px;height:14px;border-radius:50%}.map-popup h4{margin-bottom:.5rem;font-size:1rem}.map-popup p{margin:.25rem 0;font-size:.85rem}.selected-site-panel{position:absolute;bottom:20px;left:20px;background:var(--card-bg);padding:1.25rem;border-radius:12px;box-shadow:0 4px 15px #00000026;z-index:1000;max-width:300px}.selected-site-panel h3{margin-bottom:.75rem}.selected-site-panel .site-details p{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem;font-size:.9rem}.analytics-page .analytics-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.25rem;margin-bottom:2rem}.summary-card{background:var(--card-bg);border-radius:12px;padding:1.25rem;border:1px solid var(--border);display:flex;align-items:center;gap:1rem}.summary-icon{font-size:2rem}.summary-content .summary-value{font-size:1.25rem;font-weight:700}.summary-content .summary-label{font-size:.8rem;color:var(--text-light)}.period-selector{display:flex;gap:.5rem;margin-bottom:1.5rem}.period-btn{padding:.5rem 1.25rem;border:1px solid var(--border);border-radius:8px;background:var(--card-bg);cursor:pointer;font-weight:500;transition:all .2s}.period-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-bottom:2rem}.analytics-table{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}.analytics-table h3{margin-bottom:1rem}.alerts-page .alerts-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:2rem}.alert-summary-card{background:var(--card-bg);border-radius:12px;padding:1rem 1.25rem;border:1px solid var(--border);display:flex;align-items:center;gap:1rem}.alert-summary-card.high{border-left:4px solid #EF4444}.alert-summary-card.low{border-left:4px solid #F59E0B}.alert-summary-card.error{border-left:4px solid #6366F1}.alert-summary-card.total{border-left:4px solid #3B82F6}.alert-summary-card .alert-icon{font-size:1.75rem}.alert-summary-card .alert-count{font-size:1.5rem;font-weight:700;display:block}.alert-summary-card .alert-label{font-size:.8rem;color:var(--text-light)}.filter-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;flex-wrap:wrap}.filter-tab{padding:.5rem 1rem;border:1px solid var(--border);border-radius:8px;background:var(--card-bg);cursor:pointer;font-size:.9rem;transition:all .2s}.filter-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.alerts-list{display:flex;flex-direction:column;gap:1rem}.alert-item{background:var(--card-bg);border-radius:12px;padding:1.25rem;border:1px solid var(--border);display:flex;gap:1rem;align-items:flex-start}.alert-item.alert-high{border-left:4px solid #EF4444}.alert-item.alert-low{border-left:4px solid #F59E0B}.alert-item.alert-error{border-left:4px solid #6366F1}.alert-icon-container{font-size:1.5rem}.alert-content{flex:1}.alert-header{display:flex;justify-content:space-between;margin-bottom:.5rem}.alert-type{font-weight:600}.alert-meter{color:var(--text-light);font-size:.85rem}.alert-details{display:flex;gap:1.5rem;margin-bottom:.5rem;flex-wrap:wrap}.alert-details .detail{font-size:.9rem;color:var(--text-light)}.alert-stats{display:flex;gap:1.5rem;font-size:.85rem;color:var(--text-light)}.alert-actions{display:flex;gap:.5rem}.no-alerts{text-align:center;padding:3rem;color:var(--text-light)}.no-alerts .icon{font-size:3rem;display:block;margin-bottom:1rem}.info-panel{background:#3b82f60d;border:1px solid rgba(59,130,246,.2);border-radius:12px;padding:1.5rem;margin-top:2rem}.info-panel h3{margin-bottom:.75rem}.info-panel ul{margin-top:1rem;padding-left:1.5rem}.info-panel li{margin-bottom:.5rem}.ai-assistant-page .ai-container{display:grid;grid-template-columns:280px 1fr;gap:1.5rem;height:calc(100vh - 280px);min-height:500px}.ai-sidebar{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);overflow-y:auto}.ai-sidebar h3{font-size:.95rem;margin-bottom:1rem}.sidebar-stats{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.sidebar-stat{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--border)}.sidebar-stat .stat-label{color:var(--text-light);font-size:.85rem}.sidebar-stat .stat-value{font-weight:600}.quick-questions{display:flex;flex-direction:column;gap:.5rem}.quick-question-btn{padding:.6rem .75rem;background:var(--bg);border:1px solid var(--border);border-radius:8px;text-align:left;font-size:.85rem;cursor:pointer;transition:all .2s}.quick-question-btn:hover{border-color:var(--primary);background:#3b82f60d}.chat-container{background:var(--card-bg);border-radius:12px;border:1px solid var(--border);display:flex;flex-direction:column}.messages-area{flex:1;overflow-y:auto;padding:1.5rem}.message{display:flex;gap:.75rem;margin-bottom:1.25rem}.message.user{flex-direction:row-reverse}.message-avatar{width:36px;height:36px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.message-content{max-width:70%}.message-text{background:var(--bg);padding:.75rem 1rem;border-radius:12px;font-size:.95rem;line-height:1.5}.message.user .message-text{background:var(--primary);color:#fff}.message.assistant .message-text{border-bottom-left-radius:4px}.message.user .message-text{border-bottom-right-radius:4px}.typing-indicator{display:flex;gap:4px;padding:.5rem}.typing-indicator span{width:8px;height:8px;background:var(--text-light);border-radius:50%;animation:typing 1.4s infinite ease-in-out}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,to{transform:translateY(0);opacity:.4}50%{transform:translateY(-4px);opacity:1}}.input-area{display:flex;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--border)}.input-area textarea{flex:1;padding:.75rem 1rem;border:1px solid var(--border);border-radius:8px;font-size:.95rem;resize:none;font-family:inherit}.input-area textarea:focus{outline:none;border-color:var(--primary)}.send-btn{width:48px;height:48px;border-radius:8px;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:background .2s}.send-btn:hover:not(:disabled){background:var(--primary-dark)}.send-btn:disabled{opacity:.5;cursor:not-allowed}.mbus-page .reading-controls{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);margin-bottom:2rem}.control-row{display:flex;gap:1.5rem;align-items:flex-end;flex-wrap:wrap}.reading-status{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);margin-bottom:2rem}.progress-bar{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin:1rem 0}.progress-fill{height:100%;background:var(--primary);transition:width .3s}.reading-log{max-height:300px;overflow-y:auto;background:#1e293b;border-radius:8px;padding:1rem;font-family:Monaco,Consolas,monospace;font-size:.85rem;color:#10b981}.log-entry{margin-bottom:.25rem}.log-entry.error{color:#ef4444}.log-entry.success{color:#10b981}.log-entry.info{color:#3b82f6}.billing-card{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}.billing-actions{display:flex;gap:1rem;margin-bottom:2rem}.invoice-table{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}@media (max-width: 1024px){.ai-assistant-page .ai-container{grid-template-columns:1fr}.ai-sidebar{display:none}.charts-grid,.dashboard-charts{grid-template-columns:1fr}}@media (max-width: 768px){.header-content{flex-direction:column;gap:1rem}.nav{flex-wrap:wrap;justify-content:center}.main{padding:1rem}.stats-grid,.stats-row,.city-grid,.sites-grid{grid-template-columns:1fr}.alert-item{flex-direction:column}.alert-actions{width:100%;justify-content:flex-end}}.app-container{display:flex;min-height:100vh}.sidebar{width:260px;background:#0f172af2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-right:1px solid var(--glass-border);color:#fff;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1);position:fixed;height:100vh;z-index:100;box-shadow:4px 0 24px #0000004d}.sidebar.closed{width:70px}.sidebar-header{padding:1.25rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-header .logo{display:flex;align-items:center;gap:.75rem}.sidebar-header .logo-icon{font-size:1.75rem}.sidebar-header h1{font-size:1.1rem;font-weight:600;white-space:nowrap}.toggle-btn{background:#ffffff1a;border:none;color:#fff;width:28px;height:28px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center}.toggle-btn:hover{background:#fff3}.sidebar-nav{flex:1;padding:1rem .75rem;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;color:#ffffffb3;text-decoration:none;border-radius:8px;margin-bottom:.25rem;transition:all .2s}.nav-item:hover{background:#3b82f626;color:#fff;transform:translate(4px)}.nav-item.active{background:var(--gradient-primary);color:#fff;box-shadow:0 0 20px var(--primary-glow)}.nav-icon{font-size:1.25rem;width:24px;text-align:center}.nav-label{font-size:.95rem;white-space:nowrap}.sidebar-footer{padding:1rem;border-top:1px solid rgba(255,255,255,.1)}.version-info{font-size:.75rem;color:#ffffff80;text-align:center;display:flex;flex-direction:column;gap:.5rem;align-items:center}.footer-link{color:var(--primary);text-decoration:none;font-weight:500;transition:all .3s ease;padding:.25rem .5rem;border-radius:4px;background:#3b82f61a}.footer-link:hover{color:#fff;background:var(--primary);text-shadow:0 0 10px rgba(59,130,246,.5)}.main-content{flex:1;margin-left:260px;padding:2rem;background:transparent;min-height:100vh;transition:margin-left .3s ease}.sidebar.closed+.main-content{margin-left:70px}.mbus-page .site-info-box{display:flex;gap:2rem;margin-top:1rem;padding:.75rem 1rem;background:var(--bg);border-radius:8px;font-size:.9rem}.mbus-page .reading-status{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);margin-bottom:2rem}.mbus-page .status-badge{padding:.35rem .75rem;border-radius:20px;font-size:.8rem;font-weight:500}.mbus-page .status-badge.running{background:#3b82f61a;color:#3b82f6}.mbus-page .status-badge.completed{background:#10b9811a;color:#10b981}.mbus-page .stats-row{display:flex;gap:1.5rem;margin:1rem 0}.mbus-page .stat-box{background:var(--bg);padding:.75rem 1.25rem;border-radius:8px;text-align:center}.mbus-page .stat-box .label{font-size:.8rem;color:var(--text-light)}.mbus-page .stat-box.success .value{color:#10b981}.mbus-page .stat-box.error .value{color:#ef4444}.mbus-page .reading-history{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);margin-bottom:2rem}.mbus-page .reading-history h3{margin-bottom:1rem}.mbus-page .success-text{color:#10b981}.mbus-page .error-text{color:#ef4444}.billing-page .billing-controls{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border);margin-bottom:2rem;display:flex;gap:1.5rem;align-items:flex-end;flex-wrap:wrap}.billing-page .billing-result{margin-top:2rem}.billing-page .billing-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.25rem;margin-bottom:2rem}.billing-page .ai-analysis-box{background:#8b5cf60d;border:1px solid rgba(139,92,246,.2);border-radius:12px;padding:1.5rem;margin-bottom:1.5rem}.billing-page .ai-analysis-box h4{margin-bottom:.75rem;color:#8b5cf6}.billing-page .ai-analysis-box p{line-height:1.7;white-space:pre-line}.billing-page .billing-actions{display:flex;gap:1rem;margin-bottom:1.5rem}.billing-page .invoice-table{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}.billing-page .invoice-table h3{margin-bottom:1rem}@media (max-width: 768px){.sidebar{width:70px}.sidebar .nav-label,.sidebar h1,.sidebar .version-info{display:none}.main-content{margin-left:70px}.mbus-page .stats-row{flex-wrap:wrap}.billing-page .billing-controls{flex-direction:column;align-items:stretch}}.city-view-page .city-content{display:grid;grid-template-columns:350px 1fr;gap:1.5rem;min-height:600px}.cities-panel{background:var(--card-bg);border-radius:12px;padding:1.25rem;border:1px solid var(--border);height:fit-content;max-height:700px;overflow:hidden;display:flex;flex-direction:column}.cities-panel h3{margin-bottom:1rem;font-size:1rem;color:var(--text)}.city-list{overflow-y:auto;flex:1}.city-item{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1rem;border-radius:8px;cursor:pointer;transition:all .2s;margin-bottom:.5rem;background:var(--bg)}.city-item:hover{background:#3b82f61a}.city-item.active{background:#3b82f626;border-left:3px solid var(--primary)}.city-info{display:flex;flex-direction:column;gap:.25rem}.city-name{font-weight:600;font-size:.95rem}.city-stats{font-size:.8rem;color:var(--text-light)}.city-arrow{color:var(--text-light);font-size:1rem}.districts-panel{background:var(--card-bg);border-radius:12px;padding:1.5rem;border:1px solid var(--border)}.districts-panel h3{margin-bottom:1.25rem;font-size:1.1rem}.district-chart{margin-bottom:1.5rem;background:var(--bg);border-radius:8px;padding:1rem}.district-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.district-item{background:var(--bg);border-radius:8px;padding:1rem}.district-info{display:flex;flex-direction:column;gap:.5rem}.district-name{font-weight:600;font-size:.95rem}.district-stats{display:flex;gap:1rem;font-size:.8rem;color:var(--text-light)}.district-stats .stat{display:flex;align-items:center;gap:.25rem}.district-stats .icon{font-size:.9rem}.no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:300px;color:var(--text-light);text-align:center}.no-selection .icon{font-size:3rem;margin-bottom:1rem}.no-selection p{font-size:1rem}.billing-page .summary-card{background:var(--card-bg);border-radius:10px;padding:1.25rem;border:1px solid var(--border);display:flex;align-items:center;gap:1rem}.billing-page .summary-icon{font-size:2rem}.billing-page .summary-content{display:flex;flex-direction:column}.billing-page .summary-value{font-size:1.25rem;font-weight:700}.billing-page .summary-label{font-size:.8rem;color:var(--text-light)}@media (max-width: 900px){.city-view-page .city-content{grid-template-columns:1fr}.cities-panel{max-height:350px}}.gateway-page .page-header h1{font-size:1.75rem;font-weight:700}.filter-section{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border)}.filter-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}.search-box input{padding:.625rem 1rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;min-width:280px}.filter-btn{padding:.5rem 1rem;border:1px solid var(--border);background:var(--bg);border-radius:20px;cursor:pointer;font-size:.85rem;transition:all .2s}.filter-btn:hover{border-color:var(--primary);color:var(--primary)}.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.gateway-list-section{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border)}.gateway-list-section h3{margin-bottom:1rem;font-size:1.1rem}.status-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.status-dot.offline{background:var(--danger);opacity:.6}.device-badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.device-badge.orion{background:#dbeafe;color:#1d4ed8}.device-badge.wimbus{background:#fce7f3;color:#be185d}.device-badge.integral{background:#dcfce7;color:#166534}.imei-cell{font-family:monospace;font-size:.8rem;color:var(--text-light)}.action-buttons{display:flex;gap:.375rem}.btn-sm{padding:.25rem .5rem;font-size:.75rem;border:none;border-radius:4px;cursor:pointer;transition:all .2s}.btn-sm.btn-info{background:#e0f2fe;color:#0369a1}.btn-sm.btn-info:hover{background:#0369a1;color:#fff}.btn-sm.btn-success{background:#dcfce7;color:#166534}.btn-sm.btn-success:hover{background:#166534;color:#fff}.scheduled-section{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border)}.scheduled-section h3{margin-bottom:1rem;font-size:1.1rem}.scheduled-card{background:var(--bg);border-radius:10px;padding:1rem;border:1px solid var(--border)}.scheduled-name{font-weight:600;font-size:.95rem}.scheduled-status{font-size:.7rem;padding:.2rem .5rem;border-radius:10px;background:#fee2e2;color:#dc2626}.scheduled-status.active{background:#dcfce7;color:#166534}.empty-state{text-align:center;padding:2rem;color:var(--text-light)}.empty-state .hint{font-size:.85rem;margin-top:.5rem;opacity:.7}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem;margin-top:1rem}.info-item{background:var(--bg);border-radius:8px;padding:1rem}.info-item h4{color:var(--primary);margin-bottom:.5rem;font-size:.95rem}.info-item p{font-size:.85rem;color:var(--text-light);line-height:1.5}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--card-bg);border-radius:16px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.modal-header h3{font-size:1.25rem}.modal-close{font-size:1.5rem;background:none;border:none;cursor:pointer;color:var(--text-light)}.modal-close:hover{color:var(--danger)}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem;margin-bottom:1.5rem}.detail-item label{font-size:.8rem;color:var(--text-light);font-weight:500}.detail-item span{font-size:1rem;font-weight:600}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}.billing-page .billing-controls{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border);display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end}.billing-page .billing-result{background:var(--card-bg);border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid var(--border)}.billing-page .billing-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.billing-page .ai-analysis-box{background:linear-gradient(135deg,#ede9fe,#dbeafe);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid #c7d2fe}.billing-page .ai-analysis-box h4{color:#4f46e5;margin-bottom:.75rem;font-size:1rem}.billing-page .ai-analysis-box p{color:#1e293b;line-height:1.6;font-size:.9rem;white-space:pre-wrap}.billing-page .billing-actions{margin-bottom:1.5rem}.billing-page .invoice-table h3{margin-bottom:1rem;font-size:1.1rem}.mbus-page .reading-controls{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border)}.mbus-page .reading-controls h3{margin-bottom:1rem;font-size:1.1rem}.mbus-page .control-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end}.mbus-page .site-info-box{margin-top:1rem;padding:.75rem 1rem;background:var(--bg);border-radius:8px;display:flex;gap:2rem;font-size:.9rem}.mbus-page .reading-status{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border)}.mbus-page .status-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.mbus-page .progress-bar{height:8px;background:var(--bg);border-radius:4px;overflow:hidden;margin-bottom:1rem}.mbus-page .progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--success));border-radius:4px;transition:width .3s ease}.mbus-page .stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;margin-bottom:1rem}.mbus-page .stat-box{text-align:center;padding:.75rem;background:var(--bg);border-radius:8px}.mbus-page .stat-box .value{font-size:1.5rem;font-weight:700;display:block}.mbus-page .stat-box .label{font-size:.75rem;color:var(--text-light)}.mbus-page .stat-box.success .value{color:var(--success)}.mbus-page .stat-box.error .value{color:var(--danger)}.mbus-page .reading-log{background:#1e293b;color:#94a3b8;border-radius:8px;padding:1rem;max-height:300px;overflow-y:auto;font-family:monospace;font-size:.85rem}.mbus-page .log-entry{padding:.25rem 0}.mbus-page .log-entry.success{color:var(--success)}.mbus-page .log-entry.error{color:var(--danger)}.mbus-page .log-entry.info{color:#60a5fa}.mbus-page .reading-history{background:var(--card-bg);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;border:1px solid var(--border)}.mbus-page .reading-history h3{margin-bottom:1rem;font-size:1.1rem}.notes-page{padding:1.5rem}.notes-page .page-header{margin-bottom:2rem}.notes-page .page-header h1{font-size:1.75rem;font-weight:700;background:linear-gradient(135deg,var(--primary) 0%,#8b5cf6 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.notes-page .subtitle{color:var(--text-light);margin-top:.25rem}.add-note-section{background:var(--card-bg);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid var(--border);box-shadow:0 4px 6px -1px #0000000d}.add-note-section h3{font-size:1.1rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.add-note-section h3:before{content:"✏️"}.note-form{display:flex;flex-direction:column;gap:1rem}.note-form .form-row{display:flex;gap:1rem}.note-form input{flex:1;padding:.75rem 1rem;border:2px solid var(--border);border-radius:10px;font-size:.95rem;transition:all .2s}.note-form input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.note-form select{padding:.75rem 1rem;border:2px solid var(--border);border-radius:10px;font-size:.95rem;background:#fff;cursor:pointer;min-width:140px;transition:all .2s}.note-form select:focus{outline:none;border-color:var(--primary)}.note-form textarea{padding:.75rem 1rem;border:2px solid var(--border);border-radius:10px;font-size:.95rem;resize:vertical;min-height:100px;font-family:inherit;transition:all .2s}.note-form textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.notes-filter{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.5rem}.notes-filter .filter-btn{padding:.5rem 1rem;border:2px solid var(--border);background:var(--card-bg);border-radius:25px;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s}.notes-filter .filter-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.notes-filter .filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.notes-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.25rem}.note-card{background:var(--card-bg);border-radius:16px;padding:1.25rem;border:1px solid var(--border);transition:all .3s ease;position:relative;overflow:hidden}.note-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary),#8b5cf6);opacity:0;transition:opacity .3s}.note-card:hover{transform:translateY(-4px);box-shadow:0 12px 24px #0000001a}.note-card:hover:before{opacity:1}.note-card.pinned{border-color:var(--warning);background:linear-gradient(135deg,#fffbeb,#fef3c7,#fff)}.note-card.pinned:before{background:linear-gradient(90deg,#f59e0b,#eab308);opacity:1}.note-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.note-title-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.pin-icon{font-size:1rem;animation:bounce 1s ease infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.note-card h4{font-size:1.1rem;font-weight:600;color:var(--text)}.category-badge{padding:.2rem .6rem;border-radius:20px;font-size:.7rem;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.5px}.note-actions{display:flex;gap:.25rem}.btn-icon{width:32px;height:32px;border-radius:8px;border:none;background:var(--bg);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-icon:hover{background:var(--border);transform:scale(1.1)}.btn-icon.danger:hover{background:#fee2e2;color:#dc2626}.note-content{font-family:Monaco,Consolas,monospace;font-size:.85rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;background:var(--bg);padding:1rem;border-radius:10px;max-height:200px;overflow-y:auto;margin-bottom:1rem;color:var(--text)}.note-footer{display:flex;justify-content:flex-end}.note-date{font-size:.75rem;color:var(--text-light)}.glass{background:#ffffffb3;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.gradient-blue{background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff}.gradient-green{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.gradient-orange{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.gradient-purple{background:linear-gradient(135deg,#8b5cf6,#6d28d9);color:#fff}.gradient-cyan{background:linear-gradient(135deg,#06b6d4,#0891b2);color:#fff}.gradient-red{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.25rem;margin-bottom:2rem}.stat-card{padding:1.5rem;border-radius:16px;display:flex;align-items:center;gap:1rem;transition:all .3s ease;box-shadow:0 4px 6px -1px #0000001a}.stat-card:hover{transform:translateY(-4px);box-shadow:0 12px 24px #00000026}.stat-icon{font-size:2rem;opacity:.9}.stat-content{display:flex;flex-direction:column}.stat-value{font-size:1.75rem;font-weight:700;line-height:1.2}.stat-label{font-size:.85rem;opacity:.9}.btn{padding:.75rem 1.5rem;border-radius:10px;border:none;cursor:pointer;font-weight:600;font-size:.95rem;display:inline-flex;align-items:center;gap:.5rem;transition:all .3s ease}.btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff}.btn-primary:hover{box-shadow:0 4px 12px #2563eb66}.btn-success{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.btn-success:hover{box-shadow:0 4px 12px #22c55e66}.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.btn-danger:hover{box-shadow:0 4px 12px #ef444466}.btn-secondary{background:var(--bg);color:var(--text);border:2px solid var(--border)}.btn-secondary:hover{background:var(--border)}.table-container{overflow-x:auto;border-radius:12px;border:1px solid var(--border)}table th{background:var(--bg);padding:1rem;text-align:left;font-weight:600;font-size:.85rem;color:var(--text-light);text-transform:uppercase;letter-spacing:.5px}table td{padding:1rem;border-top:1px solid var(--border)}table tbody tr:hover{background:#3b82f60a}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem;color:var(--text-light)}.spinner{width:48px;height:48px;border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.page-header{margin-bottom:2rem;animation:fadeInDown .4s ease}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-light)}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem;color:var(--text)}input,select,textarea{font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}[title]{position:relative}@media (max-width: 640px){.notes-list{grid-template-columns:1fr}.note-form .form-row{flex-direction:column}.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-card{padding:1rem}.stat-value{font-size:1.25rem}}@media print{.sidebar,.btn,.modal-overlay{display:none!important}.main-content{margin-left:0!important}.note-card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}.ai-prediction-card{background:var(--glass-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:20px;padding:1.5rem;border:1px solid var(--glass-border);position:relative;overflow:hidden}.ai-prediction-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-primary)}.ai-prediction-card:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(139,92,246,.05) 0%,transparent 70%);pointer-events:none}.ai-prediction-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;position:relative;z-index:1}.ai-prediction-header .ai-icon{font-size:1.5rem;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.ai-prediction-header h3{flex:1;font-size:1.1rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.ai-prediction-header .refresh-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--glass-border);background:#ffffff0d;cursor:pointer;font-size:1rem;transition:all .3s}.ai-prediction-header .refresh-btn:hover:not(:disabled){background:var(--primary);transform:rotate(180deg)}.ai-prediction-header .refresh-btn:disabled{opacity:.5;cursor:not-allowed}.ai-loading{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;color:var(--text-light)}.ai-pulse{width:60px;height:60px;border-radius:50%;background:var(--gradient-primary);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.7}}.ai-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:12px;padding:1rem;color:var(--danger);text-align:center}.ai-prediction-content{position:relative;z-index:1}.prediction-main{display:flex;justify-content:space-between;align-items:center;padding:1.25rem;background:#ffffff08;border-radius:12px;margin-bottom:1rem}.prediction-value .label{display:block;font-size:.8rem;color:var(--text-muted);margin-bottom:.25rem}.prediction-value .value{font-size:1.75rem;font-weight:700;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.prediction-trend{display:flex;align-items:center;gap:.5rem;font-weight:600}.prediction-trend .trend-icon{font-size:1.5rem}.prediction-alert{display:flex;align-items:center;gap:.75rem;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:12px;padding:1rem;margin-bottom:1rem;color:var(--warning)}.prediction-alert .alert-icon{font-size:1.25rem}.prediction-suggestions{background:#10b9810d;border-radius:12px;padding:1rem;margin-bottom:1rem}.prediction-suggestions h4{font-size:.9rem;color:var(--success);margin-bottom:.75rem}.prediction-suggestions ul{list-style:none;padding:0}.prediction-suggestions li{padding:.5rem 0 .5rem 1.5rem;position:relative;font-size:.9rem;color:var(--text-light);border-bottom:1px solid var(--border-light)}.prediction-suggestions li:last-child{border-bottom:none}.prediction-suggestions li:before{content:"✓";position:absolute;left:0;color:var(--success)}.prediction-confidence{display:flex;align-items:center;gap:.75rem;font-size:.85rem;color:var(--text-muted)}.confidence-bar{flex:1;height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.confidence-fill{height:100%;background:var(--gradient-primary);border-radius:3px;transition:width .5s ease}.ai-empty{text-align:center;padding:2rem;color:var(--text-muted)}.btn-glow{position:relative;overflow:hidden}.btn-glow:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;z-index:0;pointer-events:none}.btn svg,.btn-glow svg,.btn>svg,.btn span,.btn-icon svg,.tab-btn svg,.tab-btn span,.control-btn svg,.filter-btn svg,.action-btn svg,button svg{position:relative;z-index:1;flex-shrink:0}.filter-btn.active svg,.action-btn.active svg,.control-btn.active svg{color:inherit}.btn-glow:hover:before{width:300%;height:300%}.btn-primary{background:var(--gradient-primary);box-shadow:0 4px 15px var(--primary-glow)}.btn-primary:hover{box-shadow:0 6px 25px var(--primary-glow);transform:translateY(-2px)}.btn-success{background:var(--gradient-success);box-shadow:0 4px 15px var(--success-glow)}.btn-danger{background:var(--gradient-danger);box-shadow:0 4px 15px var(--danger-glow)}.table-container{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;border:1px solid var(--glass-border);overflow:hidden}table{width:100%;border-collapse:collapse}table th{background:#0003;padding:1rem;text-align:left;font-weight:600;font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--glass-border)}table td{padding:1rem;border-bottom:1px solid var(--border-light);color:var(--text)}table tbody tr{transition:all .2s}table tbody tr:hover{background:#3b82f60d}table tbody tr:last-child td{border-bottom:none}input,select,textarea{background:#ffffff0d;border:1px solid var(--glass-border);border-radius:10px;padding:.75rem 1rem;color:var(--text);font-size:.95rem;transition:all .3s}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);background:#3b82f60d}select{cursor:pointer}.logo-icon-wrapper{width:40px;height:40px;background:var(--gradient-primary);border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 4px 15px var(--primary-glow)}.sidebar .nav-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;transition:all .2s ease}.sidebar .nav-item:hover .nav-icon,.sidebar .nav-item.active .nav-icon{background:#3b82f626;color:var(--primary)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.header-title{display:flex;align-items:center;gap:1rem}.header-title svg{color:var(--primary)}.header-title h1{font-size:1.75rem;font-weight:700;margin-bottom:.25rem}.header-actions{display:flex;gap:.75rem}.chart-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.chart-header svg{color:var(--primary)}.chart-header h3{font-size:1rem;font-weight:600}.section-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.section-header svg{color:var(--primary)}.section-header h3{font-size:1.1rem;font-weight:600}.card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.card-header svg{color:var(--primary)}.manual-entry-page{padding:2rem;max-width:1200px;margin:0 auto}.message-banner{display:flex;align-items:center;gap:.75rem;padding:1rem 1.5rem;border-radius:12px;margin-bottom:1.5rem;animation:slideIn .3s ease}.message-banner.success{background:#10b98126;border:1px solid rgba(16,185,129,.3);color:#10b981}.message-banner.error{background:#ef444426;border:1px solid rgba(239,68,68,.3);color:#ef4444}.message-banner button{margin-left:auto;background:none;border:none;color:inherit;cursor:pointer;padding:.25rem;border-radius:4px}.message-banner button:hover{background:#ffffff1a}@keyframes slideIn{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.tabs-container{display:flex;gap:.5rem;background:var(--card-bg);padding:.5rem;border-radius:12px;margin-bottom:1.5rem;border:1px solid var(--border)}.tab-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background:transparent;border:none;border-radius:8px;color:var(--text-light);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease}.tab-btn:hover{background:#3b82f61a;color:var(--text)}.tab-btn.active{background:var(--primary);color:#fff;box-shadow:0 2px 10px var(--primary-glow)}.tab-btn.active svg{color:#fff}.form-card{background:var(--card-bg);border-radius:16px;padding:2rem;border:1px solid var(--border)}.form-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.form-header svg{color:var(--primary)}.form-header h2{font-size:1.25rem;font-weight:600}.form-section{margin-bottom:2rem}.form-section h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text);display:flex;align-items:center;gap:.5rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.25rem}.form-group.full-width{grid-column:1 / -1}.form-group label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;color:var(--text-light)}.form-group label svg{color:var(--primary)}.form-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}.reports-page{padding:2rem}.reports-layout{display:grid;grid-template-columns:350px 1fr;gap:1.5rem}.report-config-panel{display:flex;flex-direction:column;gap:1.5rem}.config-card{background:var(--card-bg);border-radius:16px;padding:1.5rem;border:1px solid var(--border)}.config-card h3{display:flex;align-items:center;gap:.75rem;font-size:1rem;font-weight:600;margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.config-card h3 svg{color:var(--primary)}.config-section{margin-bottom:1.5rem}.config-section label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;color:var(--text-light);margin-bottom:.75rem}.config-section label svg{color:var(--primary)}.report-type-grid{display:flex;flex-direction:column;gap:.5rem}.report-type-btn{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem;background:#1e293b80;border:1px solid var(--border);border-radius:10px;color:var(--text-light);cursor:pointer;transition:all .2s ease;text-align:left}.report-type-btn:hover{background:#3b82f61a;border-color:#3b82f64d}.report-type-btn.active{background:#3b82f626;border-color:var(--primary);color:var(--text)}.report-type-btn svg{flex-shrink:0;margin-top:2px}.report-type-btn .type-label{font-weight:600;display:block}.report-type-btn .type-desc{font-size:.75rem;color:var(--text-muted);display:block;margin-top:2px}.date-range-inputs{display:flex;align-items:center;gap:.5rem}.date-range-inputs input{flex:1;padding:.625rem;font-size:.875rem}.date-range-inputs span{color:var(--text-muted)}.quick-date-btns{display:flex;gap:.5rem;margin-top:.75rem}.quick-date-btns button{flex:1;padding:.5rem;background:#3b82f61a;border:1px solid transparent;border-radius:6px;color:var(--primary);font-size:.75rem;cursor:pointer;transition:all .2s ease}.quick-date-btns button:hover{background:#3b82f633}.btn-full{width:100%;justify-content:center}.recent-reports-list{display:flex;flex-direction:column;gap:.75rem}.recent-report-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem;background:#1e293b80;border-radius:8px}.report-info{display:flex;flex-direction:column;gap:.25rem}.report-name{font-size:.875rem;font-weight:500}.report-date{font-size:.75rem;color:var(--text-muted)}.btn-icon{padding:.5rem;background:#3b82f61a;border:none;border-radius:6px;color:var(--primary);cursor:pointer;transition:all .2s ease}.btn-icon:hover{background:#3b82f633}.report-preview-panel{background:var(--card-bg);border-radius:16px;border:1px solid var(--border);min-height:600px}.empty-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:500px;color:var(--text-muted);text-align:center}.empty-preview svg{opacity:.3;margin-bottom:1.5rem}.empty-preview h3{font-size:1.25rem;margin-bottom:.5rem;color:var(--text-light)}.report-preview{padding:2rem}.preview-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.preview-header h2{font-size:1.5rem;font-weight:600}.export-buttons{display:flex;gap:.75rem}.btn-outline{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.875rem;cursor:pointer;transition:all .2s ease}.btn-outline:hover{background:#3b82f61a;border-color:var(--primary)}.btn-outline.danger:hover{background:#ef44441a;border-color:var(--danger);color:var(--danger)}.report-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.report-stat-card{display:flex;align-items:center;gap:1rem;padding:1.25rem;background:#1e293b80;border-radius:12px;border:1px solid var(--border)}.report-stat-card svg{color:var(--primary)}.report-stat-card.success svg{color:var(--success)}.report-stat-card.warning svg{color:var(--warning)}.stat-info .stat-value{font-size:1.5rem;font-weight:700}.stat-info .stat-label{font-size:.75rem;color:var(--text-muted)}.report-section{margin-top:2rem}.report-section h3{font-size:1rem;font-weight:600;margin-bottom:1rem}.top-consumers-list{display:flex;flex-direction:column;gap:.75rem}.consumer-item{display:grid;grid-template-columns:40px 1fr 100px 1fr;align-items:center;gap:1rem;padding:.75rem 1rem;background:#1e293b80;border-radius:8px}.consumer-rank{font-weight:700;color:var(--primary)}.consumer-name{font-size:.875rem}.consumer-value{font-weight:600;text-align:right}.consumer-bar{height:6px;background:#3b82f633;border-radius:3px;overflow:hidden}.consumer-bar-fill{height:100%;background:var(--gradient-primary);border-radius:3px;transition:width .5s ease}.settings-page{padding:2rem}.save-indicator{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#10b98126;border-radius:8px;color:var(--success);font-size:.875rem;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.settings-layout{display:grid;grid-template-columns:250px 1fr;gap:1.5rem}.settings-sidebar{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:var(--card-bg);border-radius:16px;border:1px solid var(--border);height:fit-content}.settings-nav-item{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:transparent;border:none;border-radius:10px;color:var(--text-light);font-size:.9rem;cursor:pointer;transition:all .2s ease;text-align:left}.settings-nav-item:hover{background:#3b82f61a;color:var(--text)}.settings-nav-item.active{background:#3b82f626;color:var(--primary)}.settings-nav-item svg{opacity:.7}.settings-nav-item.active svg{opacity:1}.settings-content{background:var(--card-bg);border-radius:16px;padding:2rem;border:1px solid var(--border)}.settings-section h2{display:flex;align-items:center;gap:.75rem;font-size:1.25rem;font-weight:600;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.settings-section h2 svg{color:var(--primary)}.setting-group{display:flex;flex-direction:column;gap:1rem}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background:#1e293b80;border-radius:12px;border:1px solid var(--border)}.setting-info{display:flex;flex-direction:column;gap:.25rem}.setting-info label{font-weight:500}.setting-desc{font-size:.8rem;color:var(--text-muted)}.setting-item input,.setting-item select{width:200px}.toggle{position:relative;display:inline-block;width:48px;height:26px}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--bg-secondary);border:1px solid var(--border);border-radius:13px;transition:.3s}.toggle-slider:before{position:absolute;content:"";height:20px;width:20px;left:2px;bottom:2px;background:var(--text-muted);border-radius:50%;transition:.3s}.toggle input:checked+.toggle-slider{background:var(--primary);border-color:var(--primary)}.toggle input:checked+.toggle-slider:before{transform:translate(22px);background:#fff}.theme-selector{display:flex;gap:.5rem}.theme-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#1e293b80;border:1px solid var(--border);border-radius:8px;color:var(--text-light);font-size:.8rem;cursor:pointer;transition:all .2s ease}.theme-btn:hover{border-color:var(--primary)}.theme-btn.active{background:#3b82f626;border-color:var(--primary);color:var(--primary)}.info-banner{display:flex;align-items:center;gap:.75rem;padding:1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.2);border-radius:10px;margin-bottom:1.5rem;font-size:.875rem;color:var(--primary)}.info-banner.warning{background:#f59e0b1a;border-color:#f59e0b33;color:var(--warning)}.status-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:20px;font-size:.8rem;font-weight:500}.input-with-suffix{display:flex;align-items:center;gap:.5rem}.input-with-suffix input{width:100px}.input-with-suffix span{font-size:.8rem;color:var(--text-muted)}.action-buttons{display:flex;gap:1rem;margin-top:1.5rem}.settings-footer{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end}@media (max-width: 1024px){.reports-layout,.settings-layout{grid-template-columns:1fr}.settings-sidebar{flex-direction:row;overflow-x:auto;gap:.25rem}.settings-nav-item{white-space:nowrap}.consumer-item{grid-template-columns:40px 1fr 80px}.consumer-bar{display:none}}@media (max-width: 768px){.tabs-container{flex-wrap:wrap}.tab-btn{flex:1;min-width:120px;justify-content:center}.form-grid{grid-template-columns:1fr}}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ml-data-entry-page{padding:1.5rem}.ml-data-entry-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.ml-data-entry-page .header-content{display:flex;align-items:center;gap:1rem}.ml-data-entry-page .header-icon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#8b5cf6,#a855f7);display:flex;align-items:center;justify-content:center;color:#fff}.ml-settings{display:flex;align-items:center;gap:1.5rem}.toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer}.toggle-label input{display:none}.toggle-switch{width:44px;height:24px;background:#ffffff1a;border-radius:12px;position:relative;transition:background .3s}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s}.toggle-label input:checked+.toggle-switch{background:var(--primary)}.toggle-label input:checked+.toggle-switch:after{transform:translate(20px)}.confidence-setting{display:flex;align-items:center;gap:.5rem}.confidence-setting select{background:#ffffff1a;border:1px solid var(--border);border-radius:8px;padding:.5rem;color:var(--text)}.ml-stats-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}.ml-stat{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem;display:flex;align-items:center;gap:1rem}.ml-stat svg{color:var(--primary)}.ml-stat .stat-value{display:block;font-size:1.1rem;font-weight:600}.ml-stat .stat-label{display:block;font-size:.75rem;color:var(--text-muted)}.ml-entry-container{display:grid;grid-template-columns:320px 1fr;gap:1.5rem}.meter-selection-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;overflow:hidden}.meter-selection-panel .panel-header{padding:1rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.meter-selection-panel .panel-header h3{font-size:1rem;margin:0}.meter-count{font-size:.75rem;color:var(--text-muted);background:#ffffff1a;padding:.25rem .75rem;border-radius:12px}.meter-list{max-height:600px;overflow-y:auto}.meter-item{display:flex;align-items:center;gap:.75rem;padding:1rem;border-bottom:1px solid var(--border);cursor:pointer;transition:background .2s}.meter-item:hover{background:#ffffff0d}.meter-item.selected{background:#8b5cf61a;border-left:3px solid var(--primary)}.meter-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center}.meter-icon.large{width:48px;height:48px}.meter-info{flex:1}.meter-name{display:block;font-weight:500}.meter-site{display:block;font-size:.75rem;color:var(--text-muted)}.meter-reading{text-align:right}.reading-value{display:block;font-weight:600}.reading-unit{display:block;font-size:.7rem;color:var(--text-muted)}.meter-item .chevron{color:var(--text-muted)}.ml-analysis-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;min-height:500px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:400px;color:var(--text-muted)}.empty-state svg{opacity:.3;margin-bottom:1rem}.empty-state h3{margin:0 0 .5rem}.empty-state p{font-size:.9rem}.analyzing-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:400px}.analyzing-animation{position:relative;width:120px;height:120px;display:flex;align-items:center;justify-content:center;margin-bottom:1.5rem}.brain-icon{color:var(--primary);z-index:2}.pulse-ring{position:absolute;width:100%;height:100%;border:2px solid var(--primary);border-radius:50%;animation:pulse-ring 1.5s ease-out infinite}.pulse-ring.delay-1{animation-delay:.5s}.pulse-ring.delay-2{animation-delay:1s}@keyframes pulse-ring{0%{transform:scale(.5);opacity:1}to{transform:scale(1.5);opacity:0}}.analyzing-steps{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.analyzing-steps .step{display:flex;align-items:center;gap:.5rem;color:var(--text-muted)}.analyzing-steps .step.active{color:var(--success)}.analyzing-steps .step .spinning{animation:spin 1s linear infinite}.prediction-result{display:flex;flex-direction:column;gap:1.5rem}.prediction-header{display:flex;justify-content:space-between;align-items:center}.selected-meter-info{display:flex;align-items:center;gap:1rem}.selected-meter-info h2{margin:0;font-size:1.25rem}.selected-meter-info span{font-size:.85rem;color:var(--text-muted)}.refresh-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;transition:all .2s}.refresh-btn:hover{background:#ffffff26}.prediction-cards{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:1rem}.prediction-card{background:#ffffff0d;border:1px solid var(--border);border-radius:12px;padding:1rem;display:flex;flex-direction:column;gap:.5rem}.prediction-card.main{background:linear-gradient(135deg,#8b5cf633,#a855f71a);border-color:#8b5cf64d;position:relative}.prediction-card.warning{border-color:var(--warning);background:#f59e0b1a}.prediction-card .card-icon{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#8b5cf6,#a855f7);display:flex;align-items:center;justify-content:center;color:#fff}.prediction-card .card-icon.secondary{background:#ffffff1a;color:var(--text)}.prediction-card .card-label{font-size:.75rem;color:var(--text-muted)}.prediction-card .card-value{font-size:1.5rem;font-weight:700}.prediction-card.main .card-value{font-size:2rem}.prediction-card .card-unit{font-size:.75rem;color:var(--text-muted)}.confidence-badge{position:absolute;top:1rem;right:1rem;display:flex;align-items:center;gap:.25rem;padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.prediction-chart{background:#ffffff08;border-radius:12px;padding:1rem}.prediction-chart h4{margin:0 0 1rem;font-size:.9rem}.impact-factors h4,.similar-readings h4{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.9rem}.factors-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.factor-item{background:#ffffff0d;border-radius:8px;padding:.75rem;text-align:center}.factor-item.positive{border-left:3px solid var(--success)}.factor-item.negative{border-left:3px solid var(--warning)}.factor-name{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem}.factor-impact{font-weight:600}.readings-list{display:flex;flex-direction:column;gap:.5rem}.reading-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#ffffff08;border-radius:8px}.reading-date{color:var(--text-muted);font-size:.85rem}.reading-diff{font-size:.85rem;padding:.25rem .5rem;border-radius:4px}.reading-diff.positive{background:#f59e0b33;color:var(--warning)}.reading-diff.negative{background:#10b98133;color:var(--success)}.data-entry-section{background:#ffffff0d;border-radius:12px;padding:1.5rem}.data-entry-section h4{margin:0 0 1rem}.entry-form{display:flex;flex-direction:column;gap:1rem}.entry-input-group{display:flex;align-items:center;gap:2rem}.last-reading,.new-reading{flex:1}.last-reading .label,.new-reading .label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:.5rem}.last-reading .value{font-size:1.25rem;font-weight:600}.arrow{color:var(--text-muted)}.input-wrapper{display:flex;align-items:center;background:#ffffff1a;border:2px solid var(--border);border-radius:8px;overflow:hidden;transition:border-color .2s}.input-wrapper.valid{border-color:var(--success)}.input-wrapper.warning{border-color:var(--warning)}.input-wrapper.error{border-color:var(--danger)}.input-wrapper input{flex:1;padding:.75rem 1rem;background:transparent;border:none;color:var(--text);font-size:1.25rem}.input-wrapper .unit{padding:.75rem 1rem;background:#ffffff0d;color:var(--text-muted)}.validation-message{display:flex;align-items:center;gap:.5rem;padding:.75rem;border-radius:8px}.validation-message.valid{background:#10b9811a;color:var(--success)}.validation-message.warning{background:#f59e0b1a;color:var(--warning)}.validation-message.error{background:#ef44441a;color:var(--danger)}.entry-actions{display:flex;gap:1rem;justify-content:flex-end}.use-prediction-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;transition:all .2s}.use-prediction-btn:hover{background:#ffffff26}.save-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#8b5cf6,#a855f7);border:none;border-radius:8px;color:#fff;font-weight:500;cursor:pointer;transition:all .2s}.save-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #8b5cf64d}.save-btn:disabled{opacity:.5;cursor:not-allowed}.bulk-site-entry-page{padding:1.5rem}.bulk-site-entry-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.bulk-site-entry-page .header-content{display:flex;align-items:center;gap:1rem}.bulk-site-entry-page .header-icon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#3b82f6,#60a5fa);display:flex;align-items:center;justify-content:center;color:#fff}.site-selection{max-width:1200px;margin:0 auto}.site-selection h2{margin-bottom:1.5rem}.sites-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.site-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;cursor:pointer;transition:all .3s}.site-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000004d;border-color:var(--primary)}.site-card .site-header{display:flex;gap:1rem;margin-bottom:1rem}.site-card .site-icon{width:48px;height:48px;background:linear-gradient(135deg,#3b82f633,#60a5fa1a);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--primary)}.site-card .site-info h3{margin:0 0 .25rem;font-size:1rem}.site-card .site-address{font-size:.75rem;color:var(--text-muted)}.site-card .site-stats{display:flex;gap:1rem;margin-bottom:1rem}.site-card .stat{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-muted)}.completion-bar{margin-bottom:1rem}.completion-bar .bar-header{display:flex;justify-content:space-between;font-size:.75rem;margin-bottom:.5rem}.completion-bar .bar-track{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.completion-bar .bar-fill{height:100%;border-radius:3px;transition:width .3s}.select-site-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;background:linear-gradient(135deg,#3b82f6,#60a5fa);border:none;border-radius:8px;color:#fff;font-weight:500;cursor:pointer;transition:all .2s}.select-site-btn:hover{transform:translateY(-1px)}.bulk-entry-container{display:flex;flex-direction:column;gap:1rem}.entry-header-bar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.site-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:linear-gradient(135deg,#3b82f633,#60a5fa1a);border-radius:8px;color:var(--primary);font-weight:500}.change-site-btn{margin-left:.5rem;padding:.25rem .5rem;background:#ffffff1a;border:none;border-radius:4px;color:var(--text);font-size:.7rem;cursor:pointer}.date-selector{display:flex;align-items:center;gap:.5rem}.date-selector input{padding:.5rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text)}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group select{padding:.5rem 1rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text)}.search-box{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;flex:1;max-width:300px}.search-box input{flex:1;background:transparent;border:none;color:var(--text)}.entry-stats-bar{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem}.entry-stat{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem;display:flex;align-items:center;gap:.75rem}.entry-stat svg{color:var(--text-muted)}.entry-stat.success svg{color:var(--success)}.entry-stat.warning svg{color:var(--warning)}.entry-stat.error svg{color:var(--danger)}.entry-stat .stat-value{display:block;font-size:1.25rem;font-weight:600}.entry-stat .stat-label{display:block;font-size:.7rem;color:var(--text-muted)}.floor-actions{display:flex;gap:.5rem}.floor-actions button{display:flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.8rem;cursor:pointer}.floors-list{display:flex;flex-direction:column;gap:.5rem}.floor-section{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;overflow:hidden}.floor-header{display:flex;align-items:center;gap:1rem;padding:1rem;cursor:pointer;transition:background .2s}.floor-header:hover{background:#ffffff08}.floor-title{display:flex;align-items:center;gap:.5rem;font-weight:500;min-width:150px}.floor-title .meter-count{font-weight:400;font-size:.75rem}.floor-stats{display:flex;gap:.5rem;flex:1}.floor-stats .stat{padding:.25rem .5rem;border-radius:4px;font-size:.75rem}.floor-stats .stat.entered{background:#3b82f633;color:var(--primary)}.floor-stats .stat.valid{background:#10b98133;color:var(--success)}.floor-stats .stat.warning{background:#f59e0b33;color:var(--warning)}.floor-stats .stat.error{background:#ef444433;color:var(--danger)}.floor-progress{display:flex;align-items:center;gap:.5rem;min-width:120px}.floor-progress .progress-track{flex:1;height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.floor-progress .progress-fill{height:100%;background:var(--primary);border-radius:2px}.floor-quick-actions{display:flex;gap:.25rem}.quick-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:6px;color:var(--text-muted);cursor:pointer}.quick-btn:hover{background:#ffffff26;color:var(--text)}.floor-meters{border-top:1px solid var(--border);overflow-x:auto}.meters-table{width:100%;border-collapse:collapse}.meters-table th,.meters-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border)}.meters-table th{font-size:.75rem;font-weight:500;color:var(--text-muted);background:#ffffff05}.meters-table tr.warning{background:#f59e0b0d}.meters-table tr.error{background:#ef44440d}.unit-info{display:flex;flex-direction:column}.unit-name{font-weight:500}.tenant-name{font-size:.75rem;color:var(--text-muted)}.type-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:6px;font-size:.75rem}.reading-cell,.expected-cell{display:flex;align-items:center;gap:.25rem}.reading-cell .unit,.expected-cell .unit{font-size:.7rem;color:var(--text-muted)}.expected-cell .use-expected{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer}.expected-cell .use-expected:hover{background:var(--primary);color:#fff}.input-cell{display:flex;align-items:center;gap:.25rem;padding:.25rem;background:#ffffff0d;border:1px solid var(--border);border-radius:6px}.input-cell.valid{border-color:var(--success)}.input-cell.warning{border-color:var(--warning)}.input-cell.error{border-color:var(--danger)}.input-cell input{width:100px;padding:.25rem;background:transparent;border:none;color:var(--text)}.input-cell .unit{font-size:.7rem;color:var(--text-muted)}.status-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:4px;font-size:.75rem}.status-badge.valid{background:#10b98133;color:var(--success)}.status-badge.warning{background:#f59e0b33;color:var(--warning)}.status-badge.error{background:#ef444433;color:var(--danger)}.save-bar{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;position:sticky;bottom:1rem}.save-summary{display:flex;align-items:center;gap:1.5rem}.saved-info{display:flex;align-items:center;gap:.5rem;color:var(--success)}.save-actions{display:flex;gap:1rem}.live-mbus-page{padding:1.5rem}.live-mbus-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.live-mbus-page .header-content{display:flex;align-items:center;gap:1rem}.live-mbus-page .header-icon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#10b981,#34d399);display:flex;align-items:center;justify-content:center;color:#fff}.connection-status{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#ef444433;border-radius:20px;color:var(--danger)}.connection-status.connected{background:#10b98133;color:var(--success)}.connection-status .signal{display:flex;align-items:center;gap:.25rem;margin-left:.5rem;padding-left:.75rem;border-left:1px solid currentColor}.mbus-container{display:grid;grid-template-columns:300px 1fr 250px;gap:1.5rem;height:calc(100vh - 200px)}.selection-panel{display:flex;flex-direction:column;gap:1rem;overflow-y:auto}.panel-section{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem}.panel-section h3{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.9rem}.panel-section.settings{margin-top:auto}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.select-actions{display:flex;gap:.5rem}.select-actions button{padding:.25rem .5rem;background:#ffffff1a;border:none;border-radius:4px;color:var(--text);font-size:.7rem;cursor:pointer}.selected-count{font-size:.75rem;color:var(--text-muted);margin-bottom:.5rem}.gateway-list{display:flex;flex-direction:column;gap:.5rem}.gateway-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#ffffff08;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .2s}.gateway-item:hover{background:#ffffff0d}.gateway-item.selected{border-color:var(--primary);background:#3b82f61a}.gateway-item.offline{opacity:.5}.gateway-icon{position:relative}.status-dot{position:absolute;bottom:-2px;right:-2px;width:8px;height:8px;border-radius:50%}.status-dot.online{background:var(--success)}.gateway-info{flex:1}.gateway-name{display:block;font-weight:500;font-size:.9rem}.gateway-ip{display:block;font-size:.7rem;color:var(--text-muted)}.gateway-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.gateway-meta .meter-count{font-size:.7rem;color:var(--text-muted)}.gateway-meta .signal-info{color:var(--success)}.connect-btn,.disconnect-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;border:none;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s;margin-top:1rem}.connect-btn{background:linear-gradient(135deg,#10b981,#34d399);color:#fff}.disconnect-btn{background:#ef444433;color:var(--danger)}.meter-list{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.selection-panel .meter-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:6px;cursor:pointer}.selection-panel .meter-item:hover{background:#ffffff0d}.selection-panel .meter-item.selected{background:#10b9811a}.selection-panel .meter-item.inactive{opacity:.5;cursor:not-allowed}.meter-checkbox{color:var(--success)}.empty-check{width:18px;height:18px;border:2px solid var(--border);border-radius:4px}.meter-type{display:flex;align-items:center}.meter-value{margin-left:auto;font-size:.8rem}.live-value{color:var(--success);font-weight:500}.no-data{color:var(--text-muted)}.setting-item{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.setting-item label{font-size:.85rem}.setting-item select{padding:.5rem;background:#ffffff1a;border:1px solid var(--border);border-radius:6px;color:var(--text)}.setting-item.toggle input[type=checkbox]{width:40px;height:20px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff1a;border-radius:10px;cursor:pointer;position:relative}.setting-item.toggle input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.setting-item.toggle input[type=checkbox]:checked{background:var(--primary)}.setting-item.toggle input[type=checkbox]:checked:after{transform:translate(20px)}.live-data-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1rem;display:flex;flex-direction:column;overflow:hidden}.control-bar{display:flex;justify-content:space-between;align-items:center;padding-bottom:1rem;border-bottom:1px solid var(--border);margin-bottom:1rem}.control-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border:none;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s}.control-btn.start{background:linear-gradient(135deg,#10b981,#34d399);color:#fff}.control-btn.stop{background:#ef444433;color:var(--danger)}.control-btn.manual{background:#ffffff1a;color:var(--text)}.control-btn:disabled{opacity:.5;cursor:not-allowed}.reading-indicator{display:flex;align-items:center;gap:.5rem;color:var(--success)}.reading-indicator .pulse{width:12px;height:12px;background:var(--success);border-radius:50%;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.live-data-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;overflow-y:auto;flex:1}.live-data-card{background:#ffffff08;border:1px solid var(--border);border-radius:12px;padding:1rem}.live-data-card .card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.meter-badge{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.current-value{font-size:1.25rem;font-weight:600}.current-value small{font-size:.7rem;font-weight:400;color:var(--text-muted)}.mini-chart{margin:.5rem 0}.live-data-card .card-footer{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted)}.logs-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;transition:width .3s}.logs-panel.closed{width:48px}.logs-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem;border-bottom:1px solid var(--border)}.toggle-logs{display:flex;align-items:center;gap:.5rem;background:none;border:none;color:var(--text);cursor:pointer}.clear-logs{background:none;border:none;color:var(--text-muted);cursor:pointer}.logs-content{flex:1;overflow-y:auto;padding:.5rem;font-family:Monaco,Menlo,monospace;font-size:.75rem}.log-entry{display:flex;gap:.5rem;padding:.25rem;border-radius:4px}.log-entry.success{background:#10b9811a}.log-entry.error{background:#ef44441a}.log-entry.warning{background:#f59e0b1a}.log-entry.data{background:#3b82f61a}.log-time{color:var(--text-muted);flex-shrink:0}.log-icon{flex-shrink:0}.log-message{flex:1;word-break:break-all}.service-work-page{padding:1.5rem}.service-work-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.service-work-page .header-content{display:flex;align-items:center;gap:1rem}.service-work-page .header-icon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#f59e0b,#fbbf24);display:flex;align-items:center;justify-content:center;color:#fff}.work-stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;margin-bottom:1.5rem}.work-stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem}.work-stat-card .stat-icon{width:48px;height:48px;border-radius:12px;background:#ffffff1a;display:flex;align-items:center;justify-content:center}.work-stat-card.pending .stat-icon{background:#f59e0b33;color:var(--warning)}.work-stat-card.progress .stat-icon{background:#3b82f633;color:var(--primary)}.work-stat-card.completed .stat-icon{background:#10b98133;color:var(--success)}.work-stat-card.workers .stat-icon{background:#8b5cf633;color:#8b5cf6}.work-stat-card .stat-content .stat-value{display:block;font-size:1.5rem;font-weight:700}.work-stat-card .stat-content .stat-label{display:block;font-size:.8rem;color:var(--text-muted)}.work-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border);padding-bottom:.5rem}.work-tabs .tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:transparent;border:none;border-radius:8px 8px 0 0;color:var(--text-muted);cursor:pointer;transition:all .2s}.work-tabs .tab:hover{color:var(--text);background:#ffffff0d}.work-tabs .tab.active{color:var(--primary);background:#3b82f61a;border-bottom:2px solid var(--primary)}.filter-bar{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.work-list{display:flex;flex-direction:column;gap:1rem}.work-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;cursor:pointer;transition:all .2s}.work-card:hover{border-color:var(--primary)}.work-card.in_progress{border-left:3px solid var(--primary)}.work-card.completed{border-left:3px solid var(--success);opacity:.8}.work-header{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1rem}.work-type{position:relative;width:40px;height:40px;background:#ffffff1a;border-radius:10px;display:flex;align-items:center;justify-content:center}.priority-dot{position:absolute;top:-4px;right:-4px;width:12px;height:12px;border-radius:50%;border:2px solid var(--bg)}.work-info{flex:1}.work-info h3{margin:0 0 .25rem;font-size:1rem}.work-meta{display:flex;gap:1rem;font-size:.8rem;color:var(--text-muted)}.work-meta span{display:flex;align-items:center;gap:.25rem}.work-assignee{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#ffffff08;border-radius:8px;margin-bottom:1rem}.assignee-avatar{width:36px;height:36px;background:linear-gradient(135deg,#3b82f6,#60a5fa);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600;color:#fff}.assignee-info{flex:1}.assignee-info .name{display:block;font-weight:500}.assignee-info .phone{display:block;font-size:.75rem;color:var(--text-muted)}.assignee-actions{display:flex;gap:.5rem}.assignee-actions button{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:6px;color:var(--text);cursor:pointer}.work-progress{margin-bottom:1rem}.work-progress .progress-header{display:flex;justify-content:space-between;font-size:.8rem;margin-bottom:.5rem}.work-progress .progress-bar{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.work-progress .progress-fill{height:100%;background:var(--primary);border-radius:3px}.work-details{border-top:1px solid var(--border);padding-top:1rem;margin-top:1rem}.detail-section{margin-bottom:1rem}.detail-section h4{font-size:.85rem;color:var(--text-muted);margin:0 0 .5rem}.gateway-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#ffffff0d;border-radius:6px}.updates-timeline{display:flex;flex-direction:column;gap:.5rem}.update-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;background:#ffffff08;border-radius:6px;font-size:.85rem}.update-item.start{border-left:2px solid var(--success)}.update-item.progress{border-left:2px solid var(--primary)}.update-item.note{border-left:2px solid var(--warning)}.update-item.complete{border-left:2px solid var(--success);background:#10b9811a}.update-time{color:var(--text-muted);min-width:50px}.update-message{display:flex;align-items:center;gap:.5rem}.images-grid{display:flex;gap:.5rem}.image-thumb{width:60px;height:60px;background:#ffffff1a;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.detail-actions{display:flex;gap:.5rem;margin-top:1rem}.workers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.worker-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.worker-card.offline{opacity:.6}.worker-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.worker-avatar{width:48px;height:48px;background:linear-gradient(135deg,#3b82f6,#60a5fa);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;color:#fff}.worker-info{flex:1}.worker-info h3{margin:0 0 .25rem}.worker-rating{display:flex;align-items:center;gap:.25rem;color:#f59e0b}.worker-contact{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.worker-contact a{display:flex;align-items:center;gap:.5rem;color:var(--text-muted);text-decoration:none;font-size:.85rem}.worker-contact a:hover{color:var(--primary)}.worker-skills{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.skill-tag{padding:.25rem .75rem;background:#ffffff1a;border-radius:20px;font-size:.75rem}.worker-stats{display:flex;justify-content:center;padding:1rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:1rem}.worker-stats .stat{text-align:center}.worker-stats .value{display:block;font-size:1.5rem;font-weight:700}.worker-stats .label{display:block;font-size:.75rem;color:var(--text-muted)}.current-job{padding:.75rem;background:#3b82f61a;border-radius:8px;margin-bottom:1rem;font-size:.85rem}.current-job .label{color:var(--text-muted)}.current-job .job-name{color:var(--primary);font-weight:500}.worker-actions{display:flex;gap:.5rem}.worker-actions button{flex:1}.analytics-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.new-work-modal{max-width:600px}.new-work-modal .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.new-work-modal .form-group{margin-bottom:1rem}.new-work-modal label{display:block;margin-bottom:.5rem;font-size:.85rem;color:var(--text-muted)}.new-work-modal select,.new-work-modal input,.new-work-modal textarea{width:100%;padding:.75rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text)}.new-work-modal textarea{resize:vertical}.field-worker-portal{padding:1rem;max-width:600px;margin:0 auto}.worker-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;margin-bottom:1rem}.field-worker-portal .worker-avatar{width:48px;height:48px;background:linear-gradient(135deg,#3b82f6,#60a5fa);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;color:#fff}.field-worker-portal .worker-info h2{margin:0;font-size:1rem}.field-worker-portal .worker-stats{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--text-muted);border:none;padding:0;margin:0}.device-status{display:flex;gap:.75rem}.status-item{display:flex;align-items:center;gap:.25rem;font-size:.7rem;color:var(--text-muted)}.worker-tabs{display:flex;gap:.25rem;margin-bottom:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:.25rem}.worker-tabs .tab{flex:1;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;background:transparent;border:none;border-radius:8px;color:var(--text-muted);font-size:.85rem;cursor:pointer}.worker-tabs .tab:disabled{opacity:.5;cursor:not-allowed}.worker-tabs .tab.active{background:var(--primary);color:#fff}.jobs-list{display:flex;flex-direction:column;gap:1rem}.job-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem}.job-card.urgent{border-left:3px solid #ef4444}.job-card.high{border-left:3px solid #f59e0b}.job-card.normal{border-left:3px solid #3b82f6}.job-card.active{background:#3b82f61a;border-color:var(--primary)}.job-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.75rem}.job-type{position:relative;width:40px;height:40px;background:#ffffff1a;border-radius:10px;display:flex;align-items:center;justify-content:center}.priority-indicator{position:absolute;top:-4px;right:-4px;width:10px;height:10px;border-radius:50%;border:2px solid var(--bg)}.job-info h3{margin:0 0 .25rem;font-size:.95rem}.job-site{display:flex;align-items:center;gap:.25rem;font-size:.8rem;color:var(--text-muted)}.active-badge{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#3b82f633;color:var(--primary);border-radius:20px;font-size:.7rem}.job-details{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:1rem}.job-details .detail{display:flex;align-items:center;gap:.25rem;font-size:.8rem;color:var(--text-muted)}.job-actions{display:flex;gap:.5rem}.job-actions button{flex:1}.active-job-view{display:flex;flex-direction:column;gap:1rem}.active-job-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.job-title-section h2{margin:0;font-size:1.1rem}.control-btn.pause{width:44px;height:44px;border-radius:50%;background:#f59e0b33;color:var(--warning)}.control-btn.play{width:44px;height:44px;border-radius:50%;background:#10b98133;color:var(--success)}.control-btn.complete{padding:.75rem 1rem;background:linear-gradient(135deg,#10b981,#34d399)}.progress-section{padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.progress-section .progress-header{display:flex;justify-content:space-between;margin-bottom:.5rem;font-size:.85rem}.progress-section .progress-bar{height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.progress-section .progress-fill{height:100%;background:var(--primary);border-radius:4px;transition:width .3s}.meters-section,.photos-section,.notes-section{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem}.meters-section h3,.photos-section h3,.notes-section h3{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.95rem}.meter-reading-card{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#ffffff08;border:1px solid var(--border);border-radius:10px}.meter-reading-card.completed{border-color:var(--success);background:#10b9810d}.meter-reading-card.has-issue{border-color:var(--warning)}.meter-reading-card .meter-info{display:flex;align-items:center;gap:.75rem}.meter-reading-card .meter-type{width:36px;height:36px;background:#ffffff1a;border-radius:8px;display:flex;align-items:center;justify-content:center}.meter-reading-card .meter-details{flex:1}.meter-reading-card .meter-name{display:block;font-weight:500}.meter-reading-card .meter-location{display:block;font-size:.75rem;color:var(--text-muted)}.meter-reading-card .check-icon{color:var(--success)}.meter-values{display:flex;align-items:center;gap:1rem}.last-value,.new-value{flex:1}.meter-values .label{display:block;font-size:.7rem;color:var(--text-muted);margin-bottom:.25rem}.meter-values .value{font-weight:500}.new-value{display:flex;align-items:center;gap:.25rem;padding:.5rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px}.new-value input{flex:1;background:transparent;border:none;color:var(--text);font-size:1rem}.new-value .unit{color:var(--text-muted);font-size:.8rem}.issue-badge{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#f59e0b33;color:var(--warning);border-radius:4px;font-size:.75rem;align-self:flex-start}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-header h3{margin:0}.add-photo-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer}.photos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.photo-card{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden}.photo-overlay{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:.25rem .5rem;background:#0009}.photo-time{font-size:.7rem}.delete-btn{background:none;border:none;color:var(--danger);cursor:pointer;padding:.25rem}.no-photos{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem;color:var(--text-muted)}.add-note{display:flex;gap:.5rem}.add-note textarea{flex:1;padding:.75rem;background:#ffffff1a;border:1px solid var(--border);border-radius:8px;color:var(--text);resize:none}.send-note-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--primary);border:none;border-radius:8px;color:#fff;cursor:pointer}.note-item{padding:.75rem;background:#ffffff08;border-radius:8px}.note-time{display:block;font-size:.7rem;color:var(--text-muted);margin-bottom:.25rem}.note-text{margin:0;font-size:.9rem}.notes-page .quick-actions{display:flex;gap:.5rem;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.action-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;background:#ffffff0d;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer}.action-btn span{font-size:.75rem}.history-stats .stat-card{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.history-stats .stat-card svg{color:var(--warning)}.history-stats .value{display:block;font-size:1.5rem;font-weight:700}.history-stats .label{display:block;font-size:.75rem;color:var(--text-muted)}.history-section h3{margin:0 0 1rem;font-size:1rem}.history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.history-header h4{margin:0;font-size:.95rem}.history-details{display:flex;gap:1rem;font-size:.8rem;color:var(--text-muted)}@media (max-width: 1024px){.ml-entry-container{grid-template-columns:1fr}.meter-selection-panel{order:2}.mbus-container{grid-template-columns:1fr}.selection-panel{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.logs-panel{display:none}.work-stats-grid,.entry-stats-bar{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.ml-stats-bar{grid-template-columns:repeat(2,1fr)}.prediction-cards{grid-template-columns:1fr}.factors-grid,.work-stats-grid{grid-template-columns:repeat(2,1fr)}.analytics-grid,.new-work-modal .form-row{grid-template-columns:1fr}.entry-stats-bar{grid-template-columns:repeat(2,1fr)}}.nav-section{margin-bottom:.5rem}.section-label{display:block;padding:.5rem 1rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-top:.5rem}.user-management-page,.carbon-page,.goals-page,.maintenance-page,.comparison-page,.performance-page,.payment-page,.budget-page,.tenant-portal{padding:1.5rem;max-width:1600px;margin:0 auto}.user-stats-grid,.goals-stats-grid,.maintenance-stats-grid,.payment-stats-grid,.perf-stat-card{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.user-stat-card,.goal-stat-card,.maint-stat-card,.payment-stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.user-stat-card svg,.goal-stat-card svg,.maint-stat-card svg,.payment-stat-card svg{color:var(--primary)}.user-stat-card.success svg,.goal-stat-card.success svg,.maint-stat-card.success svg,.payment-stat-card.success svg{color:var(--success)}.user-stat-card.warning svg,.goal-stat-card.warning svg,.maint-stat-card.warning svg,.payment-stat-card.warning svg{color:var(--warning)}.user-stat-card.danger svg,.maint-stat-card.danger svg,.payment-stat-card.danger svg{color:var(--danger)}.stat-info{display:flex;flex-direction:column}.stat-info .stat-value{font-size:1.5rem;font-weight:700;color:var(--text)}.stat-info .stat-label{font-size:.85rem;color:var(--text-muted)}.users-table{overflow-x:auto}.users-table table,.budget-table,.comparison-table,.consumption-table{width:100%;border-collapse:collapse}.users-table th,.users-table td,.budget-table th,.budget-table td,.comparison-table th,.comparison-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--border)}.users-table th,.budget-table th,.comparison-table th{font-weight:600;color:var(--text-light);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.users-table tbody tr:hover,.budget-table tbody tr:hover{background:#3b82f60d}.user-cell{display:flex;align-items:center;gap:.75rem}.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.9rem}.contact-info{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--text-light)}.contact-info span{display:flex;align-items:center;gap:.5rem}.role-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600}.roles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.role-card{background:var(--card-bg);border:1px solid var(--border);border-left:4px solid;border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.role-header{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1rem}.role-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.role-info h3{font-size:1.1rem;font-weight:600;margin-bottom:.25rem}.role-info p{font-size:.85rem;color:var(--text-muted)}.role-stats{font-size:.85rem;color:var(--text-light);display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.role-permissions h4{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;margin-bottom:.5rem}.permission-tags{display:flex;flex-wrap:wrap;gap:.5rem}.permission-tag{padding:.25rem .5rem;background:#3b82f61a;border-radius:4px;font-size:.75rem;color:var(--primary)}.activity-log-list{display:flex;flex-direction:column;gap:.5rem}.log-item{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:#1e293b80;border-radius:8px}.log-icon{width:32px;height:32px;border-radius:8px;background:#3b82f61a;display:flex;align-items:center;justify-content:center}.log-content{flex:1;display:flex;align-items:center;gap:.5rem}.log-user{font-weight:600}.log-action{color:var(--text-light)}.log-meta{display:flex;flex-direction:column;align-items:flex-end;font-size:.8rem;color:var(--text-muted)}.carbon-stats-grid{display:grid;grid-template-columns:1fr repeat(3,200px);gap:1rem;margin-bottom:1.5rem}.carbon-main-stat{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:2rem;display:flex;align-items:center;gap:2rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.main-stat-icon{width:80px;height:80px;border-radius:20px;background:#ef44441a;display:flex;align-items:center;justify-content:center;color:var(--danger)}.main-stat-content{display:flex;flex-direction:column}.main-stat-value{font-size:3rem;font-weight:700;line-height:1}.main-stat-unit{font-size:1.5rem;font-weight:500;color:var(--text-muted)}.main-stat-label{font-size:1rem;color:var(--text-light);margin-top:.5rem}.change-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-weight:600;margin-top:.5rem}.change-badge.positive{background:#10b9811a;color:var(--success)}.change-badge.negative{background:#ef44441a;color:var(--danger)}.carbon-stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.stat-icon.electricity{color:var(--primary)}.stat-icon.water{color:var(--success)}.stat-icon.gas{color:var(--warning)}.equivalents-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.equivalents-section h3{font-size:1.1rem;margin-bottom:1rem;color:var(--text-light)}.equivalents-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.equivalent-card{display:flex;align-items:center;gap:1rem;padding:1rem;background:#1e293b80;border-radius:12px}.eq-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.eq-icon.trees{background:#10b9811a;color:var(--success)}.eq-icon.car{background:#ef44441a;color:var(--danger)}.eq-icon.home{background:#3b82f61a;color:var(--primary)}.eq-info .eq-value{font-size:1.5rem;font-weight:700;display:block}.eq-info .eq-label{font-size:.85rem;color:var(--text-muted)}.carbon-charts-row{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-bottom:1.5rem}.achievements-card,.tips-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.achievements-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.achievement-item{display:flex;align-items:center;gap:1rem;padding:1rem;border-radius:12px;background:#1e293b80}.achievement-item.earned{background:#10b9811a;border:1px solid rgba(16,185,129,.3)}.achievement-item.locked{opacity:.5}.achievement-icon{width:40px;height:40px;border-radius:10px;background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;color:#fff}.achievement-title{font-weight:600;display:block}.achievement-desc{font-size:.8rem;color:var(--text-muted)}.tips-list{display:flex;flex-direction:column;gap:.75rem}.tip-item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:#10b9810d;border-radius:8px;font-size:.9rem}.tip-icon{color:var(--success);flex-shrink:0;margin-top:.1rem}.goals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.goal-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.goal-card:hover{transform:translateY(-4px);box-shadow:0 12px 24px #0003}.goal-card.at_risk{border-color:#f59e0b80}.goal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.goal-type{display:flex;align-items:center;gap:.5rem}.goal-site{font-size:.8rem;color:var(--text-muted)}.goal-name{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.goal-progress-section{margin-bottom:1rem}.progress-header{display:flex;align-items:baseline;gap:.25rem;margin-bottom:.5rem}.current-value{font-size:1.25rem;font-weight:700}.target-value{font-size:.9rem;color:var(--text-muted)}.progress-bar-container{height:8px;background:#94a3b833;border-radius:4px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.progress-percent{display:flex;align-items:center;gap:.25rem;font-size:.85rem;font-weight:600;margin-top:.5rem}.goal-dates{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-muted);margin-bottom:1rem}.goal-mini-chart{margin-bottom:1rem;padding:.5rem;background:#1e293b80;border-radius:8px}.goal-actions{display:flex;gap:.5rem}.type-icon.energy{color:var(--primary)}.type-icon.water{color:var(--success)}.type-icon.gas{color:var(--warning)}.type-icon.gateway{color:var(--secondary)}.type-icon.meter{color:var(--primary)}.type-icon.comm{color:var(--warning)}.task-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1rem}.task-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.task-card.high{border-left:4px solid var(--danger)}.task-card.medium{border-left:4px solid var(--warning)}.task-card.low{border-left:4px solid var(--success)}.task-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.task-type{display:flex;align-items:center;gap:.75rem}.task-title{font-size:1rem;font-weight:600;margin-bottom:.5rem}.task-desc{font-size:.85rem;color:var(--text-light);margin-bottom:1rem;line-height:1.5}.task-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:.8rem;color:var(--text-muted);margin-bottom:1rem}.task-meta span{display:flex;align-items:center;gap:.25rem}.task-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid var(--border)}.assignee{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.unassigned{font-size:.85rem;color:var(--text-muted);font-style:italic}.task-actions{display:flex;gap:.5rem}.priority-badge{padding:.25rem .5rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase}.schedules-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.schedule-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.schedule-card.inactive{opacity:.6}.schedule-card.add-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:var(--text-muted);border-style:dashed;cursor:pointer;min-height:200px}.schedule-card.add-card:hover{color:var(--primary);border-color:var(--primary)}.schedule-header{display:flex;justify-content:space-between;margin-bottom:1rem}.schedule-icon{width:48px;height:48px;border-radius:12px;background:#3b82f61a;display:flex;align-items:center;justify-content:center;color:var(--primary)}.badge.active{background:#10b9811a;color:var(--success);padding:.25rem .5rem;border-radius:4px;font-size:.75rem}.badge.inactive{background:#94a3b81a;color:var(--text-muted);padding:.25rem .5rem;border-radius:4px;font-size:.75rem}.schedule-name{font-size:1rem;font-weight:600;margin-bottom:.5rem}.schedule-frequency{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-light);margin-bottom:1rem}.schedule-dates{display:flex;gap:1rem;margin-bottom:1rem}.date-item{flex:1}.date-label{font-size:.75rem;color:var(--text-muted);display:block}.date-value{font-size:.9rem;font-weight:500}.schedule-sites{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-light);margin-bottom:1rem}.schedule-tasks{text-align:center;padding:1rem;background:#3b82f60d;border-radius:8px;margin-bottom:1rem}.tasks-count{font-size:1.5rem;font-weight:700;color:var(--primary);display:block}.tasks-label{font-size:.8rem;color:var(--text-muted)}.schedule-actions{display:flex;gap:.5rem}.comparison-type-selector{display:flex;gap:1rem;margin-bottom:1.5rem}.type-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1.25rem;background:var(--card-bg);border:2px solid var(--border);border-radius:12px;color:var(--text);font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease}.type-btn:hover{border-color:var(--primary)}.type-btn.active{background:#3b82f61a;border-color:var(--primary);color:var(--primary)}.comparison-filters{display:flex;flex-wrap:wrap;gap:1rem;padding:1.5rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;margin-bottom:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{font-size:.85rem;font-weight:500;color:var(--text-light)}.date-range{display:flex;align-items:center;gap:.5rem}.site-checkboxes{display:flex;flex-wrap:wrap;gap:1rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem}.comparison-summary{display:flex;align-items:center;gap:2rem;margin-bottom:1.5rem}.summary-card{flex:1;padding:2rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.summary-card.period1{border-color:#3b82f680}.summary-card.period2{border-color:#10b98180}.summary-card h3{font-size:1rem;color:var(--text-light);margin-bottom:.5rem}.summary-value{font-size:2rem;font-weight:700}.summary-value .unit{font-size:1rem;color:var(--text-muted);font-weight:400;margin-left:.25rem}.summary-avg{font-size:.85rem;color:var(--text-muted);margin-top:.5rem}.summary-arrow{display:flex;flex-direction:column;align-items:center;padding:1rem}.change-indicator{display:flex;flex-direction:column;align-items:center;gap:.25rem}.change-value{font-size:1.5rem;font-weight:700}.change-label{font-size:.85rem}.site-comparison-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;margin-bottom:1.5rem}.site-comparison-card{background:var(--card-bg);border:1px solid var(--border);border-top:4px solid;border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.site-comparison-card h3{font-size:1.1rem;margin-bottom:1rem}.site-total{margin-bottom:1rem}.site-total .value{font-size:2rem;font-weight:700}.site-total .unit{font-size:.9rem;color:var(--text-muted)}.site-details{display:flex;flex-direction:column;gap:.5rem}.detail-item{display:flex;justify-content:space-between;font-size:.9rem}.detail-item .label{color:var(--text-muted)}.efficiency-ranking{display:flex;flex-direction:column;gap:1rem}.rank-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:#1e293b80;border-radius:8px}.rank-badge{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;background:var(--gradient-primary);color:#fff}.rank-item.rank-1 .rank-badge{background:linear-gradient(135deg,gold,orange)}.rank-info{flex:1}.rank-name{font-weight:600;display:block;margin-bottom:.5rem}.rank-bar-container{height:8px;background:#94a3b833;border-radius:4px;overflow:hidden}.rank-bar{height:100%;border-radius:4px}.rank-score{font-weight:700;font-size:1.1rem}.performance-stats-grid{display:grid;grid-template-columns:200px repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.perf-stat-card.main{display:flex;align-items:center;justify-content:center}.perf-score-circle{width:120px;height:120px;border-radius:50%;border:4px solid;display:flex;flex-direction:column;align-items:center;justify-content:center}.score-value{font-size:2.5rem;font-weight:700}.score-label{font-size:.85rem;color:var(--text-muted)}.perf-stat-card.excellent svg{color:#10b981}.perf-stat-card.good svg{color:#3b82f6}.perf-stat-card.warning svg{color:#f59e0b}.performance-row{display:grid;grid-template-columns:1fr 300px;gap:1.5rem;margin-bottom:1.5rem}.filters-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.filters-card h3{display:flex;align-items:center;gap:.5rem;font-size:1rem;margin-bottom:1rem}.filters-card .filter-group{margin-bottom:1rem}.buildings-performance-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.building-perf-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.building-perf-card:hover,.building-perf-card.selected{transform:translateY(-4px);box-shadow:0 12px 24px #0003;border-color:var(--primary)}.perf-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.building-info{display:flex;align-items:center;gap:.75rem}.building-info h3{font-size:1.1rem;margin-bottom:.25rem}.site-label{font-size:.8rem;color:var(--text-muted)}.grade-badge{padding:.5rem 1rem;border-radius:8px;font-size:1.25rem;font-weight:700;color:#fff}.grade-badge.large{font-size:1.5rem;padding:.75rem 1.5rem}.perf-score-section{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem}.score-ring{position:relative;width:100px;height:100px}.score-ring svg{transform:rotate(-90deg)}.score-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.score-text .score-value{font-size:1.5rem;font-weight:700;display:block}.score-text .score-max{font-size:.75rem;color:var(--text-muted)}.trend-indicator{padding:.5rem}.efficiency-bars{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.efficiency-item .eff-header{display:flex;align-items:center;gap:.5rem;font-size:.8rem;margin-bottom:.25rem}.eff-header span:first-of-type{margin-left:.25rem}.eff-value{margin-left:auto;font-weight:600}.eff-bar{height:6px;background:#94a3b833;border-radius:3px;overflow:hidden}.eff-fill{height:100%;border-radius:3px;transition:width .3s ease}.issues-section{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#ef44441a;border-radius:6px;font-size:.85rem;color:var(--danger);margin-bottom:1rem}.payment-charts-row{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-bottom:1.5rem}.recent-payments-mini{display:flex;flex-direction:column;gap:.75rem}.payment-mini-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#1e293b80;border-radius:8px}.payment-info{display:flex;flex-direction:column}.payment-tenant{font-weight:500}.payment-date{font-size:.8rem;color:var(--text-muted)}.payment-amount{font-weight:700;color:var(--success)}.invoices-table{overflow-x:auto}.overdue-row{background:#ef44440d}.tenant-cell,.unit-cell,.date-cell{display:flex;align-items:center;gap:.5rem}.overdue-section{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1rem}.overdue-card{background:var(--card-bg);border:1px solid rgba(239,68,68,.3);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.overdue-header{display:flex;align-items:center;gap:.5rem;color:var(--danger);margin-bottom:1rem}.days-overdue{font-weight:600}.overdue-content{display:flex;justify-content:space-between;margin-bottom:1rem}.overdue-info h3{font-size:1.1rem;margin-bottom:.25rem}.overdue-info p{font-size:.9rem;color:var(--text-light)}.invoice-id{font-size:.8rem;color:var(--text-muted)}.overdue-amount .amount{font-size:1.5rem;font-weight:700;display:block;text-align:right}.overdue-amount .due-date{font-size:.8rem;color:var(--text-muted)}.overdue-actions{display:flex;gap:.5rem;padding-top:1rem;border-top:1px solid var(--border)}.budget-summary-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.budget-summary-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.budget-summary-card.main{grid-row:span 2}.summary-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.year-badge{padding:.25rem .5rem;background:#3b82f61a;border-radius:4px;font-size:.8rem;color:var(--primary)}.summary-progress{margin-top:1rem}.progress-text{font-size:.85rem;color:var(--text-light);margin-top:.5rem}.budget-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.budget-card{background:var(--card-bg);border:1px solid var(--border);border-top:4px solid;border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.budget-card-header{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1rem}.budget-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.budget-info h3{font-size:1rem;margin-bottom:.25rem}.budget-amount{font-size:.85rem;color:var(--text-light)}.budget-progress-section{margin-bottom:1rem}.progress-labels{display:flex;justify-content:space-between;font-size:.85rem;margin-top:.5rem}.budget-forecast{padding:.75rem;border-radius:8px;font-size:.85rem;margin-bottom:1rem}.forecast-warning{display:flex;align-items:center;gap:.5rem;color:var(--warning);background:#f59e0b1a;padding:.75rem;border-radius:8px}.forecast-ok{display:flex;align-items:center;gap:.5rem;color:var(--success);background:#10b9811a;padding:.75rem;border-radius:8px}.budget-comparison{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--text-muted)}.trend.up{color:var(--danger);display:flex;align-items:center;gap:.25rem}.trend.down{color:var(--success);display:flex;align-items:center;gap:.25rem}.monthly-view{display:flex;flex-direction:column;gap:1.5rem}.monthly-chart-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.category-header{display:flex;align-items:center;gap:.75rem}.tenant-info-badge{display:flex;flex-direction:column;align-items:flex-end}.tenant-info-badge .unit{font-weight:600}.tenant-info-badge .meter{font-size:.85rem;color:var(--text-muted)}.tenant-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}.tenant-stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tenant-stat-card.balance{border-color:#ef44444d}.tenant-stat-card.efficiency{border-color:#10b9814d}.rank-badge{padding:.25rem .5rem;background:var(--gradient-success);border-radius:4px;color:#fff;font-weight:600;font-size:.85rem;margin-top:.25rem}.trend{display:flex;align-items:center;gap:.25rem;font-size:.8rem;margin-top:.25rem}.trend.up{color:var(--danger)}.trend.down{color:var(--success)}.tenant-dashboard{display:flex;flex-direction:column;gap:1.5rem}.dashboard-row{display:grid;grid-template-columns:1fr 350px;gap:1.5rem}.recent-invoice-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.invoice-period{font-weight:600}.invoice-amount{text-align:center;margin-bottom:1.5rem}.invoice-amount .amount{font-size:2.5rem;font-weight:700}.invoice-breakdown{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.breakdown-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#1e293b80;border-radius:6px;font-size:.9rem}.breakdown-item span:last-child{margin-left:auto;font-weight:600}.invoice-due{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text-light);margin-bottom:1rem}.tips-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tips-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1rem}.tip-card{padding:1.5rem;background:#10b9810d;border-radius:12px;text-align:center}.tip-card .tip-icon{color:var(--success);margin-bottom:1rem}.tip-card p{font-size:.9rem;color:var(--text-light)}.invoice-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.invoice-main{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.invoice-info{display:flex;flex-direction:column}.invoice-details{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:#1e293b80;border-radius:8px;margin-bottom:1rem}.detail-row{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.detail-row span:last-child{margin-left:auto}.invoice-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid var(--border)}.invoice-total .label{font-size:.85rem;color:var(--text-muted)}.invoice-total .amount{font-size:1.5rem;font-weight:700}.notification-card{display:flex;align-items:flex-start;gap:1rem;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;position:relative;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.notification-icon{width:40px;height:40px;border-radius:10px;background:#3b82f61a;display:flex;align-items:center;justify-content:center}.notification-content h4{font-size:1rem;margin-bottom:.25rem}.notification-content p{font-size:.9rem;color:var(--text-light);margin-bottom:.5rem}.notification-date{font-size:.8rem;color:var(--text-muted)}.unread-dot{position:absolute;top:1rem;right:1rem;width:8px;height:8px;border-radius:50%;background:var(--primary)}.contact-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-top:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.contact-section h3{margin-bottom:1rem}.contact-options{display:flex;gap:1rem}.contact-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem;background:#1e293b80;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;transition:all .3s ease}.contact-btn:hover{background:#3b82f61a;border-color:var(--primary);color:var(--primary)}.text-green{color:var(--success)}.text-red{color:var(--danger)}.text-blue{color:var(--primary)}.text-orange{color:var(--warning)}.text-purple{color:var(--secondary)}.text-gray{color:var(--text-muted)}.full-width{grid-column:1 / -1}.btn-success{background:var(--gradient-success);color:#fff}.btn-icon.success{color:var(--success)}.btn-icon.success:hover{background:#10b9811a}.modal-lg{max-width:800px;width:90%}.modal-title-row{display:flex;align-items:center;gap:1rem}.detail-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.detail-stat{text-align:center;padding:1rem;background:#1e293b80;border-radius:8px}.detail-stat .label{font-size:.85rem;color:var(--text-muted);display:block;margin-bottom:.25rem}.detail-stat .value{font-size:1.25rem;font-weight:700}.detail-section{margin-bottom:1.5rem}.detail-section h3{display:flex;align-items:center;gap:.5rem;font-size:1rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.detail-section.warning{background:#f59e0b0d;padding:1rem;border-radius:8px}.consumption-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.consumption-item{text-align:center;padding:1rem;background:#1e293b80;border-radius:8px}.consumption-item svg{margin-bottom:.5rem;color:var(--primary)}.consumption-item .value{font-size:1.25rem;font-weight:700;display:block;margin-bottom:.25rem}.consumption-item .label{font-size:.85rem;color:var(--text-muted)}.recommendations-list,.issues-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.recommendations-list li,.issues-list li{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#10b9810d;border-radius:6px;font-size:.9rem}.recommendations-list li svg{color:var(--success)}.issues-list li{background:#ef44440d}.issues-list li svg{color:var(--danger)}@media (max-width: 1200px){.carbon-stats-grid{grid-template-columns:1fr 1fr}.performance-stats-grid,.budget-summary-grid,.tenant-stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.carbon-stats-grid,.performance-stats-grid,.budget-summary-grid,.tenant-stats-grid,.carbon-charts-row,.payment-charts-row,.performance-row,.dashboard-row{grid-template-columns:1fr}.comparison-summary{flex-direction:column}.equivalents-grid,.tips-grid{grid-template-columns:1fr}.contact-options{flex-direction:column}}.heat-stats{grid-template-columns:repeat(6,1fr)}.secondary-stats{grid-template-columns:repeat(4,1fr);margin-top:1rem}.stat-card.small{padding:1rem}.stat-card.small .stat-icon{width:36px;height:36px}.stat-card.small .stat-icon.small{width:32px;height:32px}.stat-card.small .stat-value{font-size:1.25rem}.chart-card.wide{grid-column:span 2}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-light)}.heat-status-section{margin-top:2rem}.heat-status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;margin-top:1rem}.heat-status-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.heat-status-card .status-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;font-size:.9rem;color:var(--text-light)}.heat-status-card .status-value{font-size:2rem;font-weight:700;margin-bottom:1rem}.heat-status-card .status-bar{height:8px;background:#94a3b833;border-radius:4px;overflow:hidden;margin-bottom:.75rem}.heat-status-card .bar-fill.blue{background:linear-gradient(90deg,#3b82f6,#06b6d4)}.heat-status-card .bar-fill.cyan{background:linear-gradient(90deg,#06b6d4,#10b981)}.heat-status-card .bar-fill.yellow{background:linear-gradient(90deg,#eab308,#f59e0b)}.heat-status-card .status-range{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted)}.text-red{color:#ef4444}.text-blue{color:#3b82f6}.text-cyan{color:#06b6d4}.text-yellow{color:#eab308}.text-green{color:#10b981}.text-purple{color:#8b5cf6}.activity-card.heat{border-left:3px solid #EF4444}.action-card.heat{border-color:#ef44444d}.action-card.heat:hover{border-color:#ef4444;box-shadow:0 0 20px #ef444433}.meter-list-page{padding:0}.filters-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem}.filter-group{display:flex;gap:1rem;flex-wrap:wrap}.search-input{display:flex;align-items:center;gap:.75rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;padding:0 1rem;min-width:280px}.search-input svg{color:var(--text-muted)}.search-input input{flex:1;border:none;background:transparent;padding:.75rem 0;color:var(--text);font-size:.95rem}.search-input input::placeholder{color:var(--text-muted)}.select-wrapper{display:flex;align-items:center;gap:.75rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;padding:0 1rem}.select-wrapper svg{color:var(--text-muted)}.select-wrapper select{border:none;background:transparent;padding:.75rem 0;color:var(--text);font-size:.95rem;min-width:160px;cursor:pointer}.select-wrapper select option{background:var(--bg-secondary);color:var(--text)}.filter-stats{display:flex;gap:1rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.stat-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#94a3b81a;border-radius:20px;font-size:.85rem;color:var(--text-light)}.stat-badge.success{background:#10b98126;color:var(--success)}.stat-badge.warning{background:#f59e0b26;color:var(--warning)}.stat-badge.danger{background:#ef444426;color:var(--danger)}.table-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;overflow:hidden}.heat-meter-table th{background:#94a3b81a;padding:1rem;text-align:left;font-weight:600;font-size:.85rem;color:var(--text-light);white-space:nowrap;border-bottom:1px solid var(--border)}.heat-meter-table th .th-icon{display:flex;align-items:center;gap:.5rem}.heat-meter-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle}.heat-meter-table tbody tr{transition:background .2s}.heat-meter-table tbody tr:hover{background:#94a3b80d}.heat-meter-table tbody tr.status-warning{border-left:3px solid var(--warning)}.heat-meter-table tbody tr.status-danger{border-left:3px solid var(--danger)}.serial-cell .serial-no{font-weight:600;font-family:JetBrains Mono,monospace;color:var(--text)}.location-cell .location-sub{font-size:.8rem;color:var(--text-muted)}.energy-cell{display:flex;align-items:baseline;gap:.25rem}.energy-value{font-weight:600;font-size:1rem}.energy-value.heat{color:#ef4444}.energy-unit,.volume-unit,.temp-unit,.delta-unit,.flow-unit,.power-unit{font-size:.75rem;color:var(--text-muted)}.volume-cell,.flow-cell,.power-cell{display:flex;align-items:baseline;gap:.25rem}.volume-value,.flow-value,.power-value{font-weight:500;color:var(--text)}.temp-cell{display:flex;align-items:baseline;gap:.25rem}.temp-cell.inlet .temp-value{color:#ef4444;font-weight:600}.temp-cell.outlet .temp-value{color:#3b82f6;font-weight:600}.delta-cell{display:flex;align-items:baseline;gap:.25rem}.delta-value{color:#8b5cf6;font-weight:600}.date-cell{font-size:.85rem;color:var(--text-light)}.status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border-radius:20px;font-size:.8rem;font-weight:500}.status-badge.success{background:#10b98126;color:var(--success)}.status-badge.warning{background:#f59e0b26;color:var(--warning)}.status-badge.danger{background:#ef444426;color:var(--danger)}.status-badge.muted{background:#94a3b826;color:var(--text-muted)}.btn-sm{padding:.375rem .75rem;font-size:.8rem}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-top:1.5rem}.summary-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem}.summary-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.summary-value{font-size:1.25rem;font-weight:700;color:var(--text)}.gradient-red{background:linear-gradient(135deg,#ef444426,#ef44440d);border-color:#ef44444d}.gradient-red .stat-icon{background:#ef444433;color:#ef4444}@media (max-width: 1400px){.heat-stats{grid-template-columns:repeat(3,1fr)}.heat-status-grid{grid-template-columns:repeat(2,1fr)}.dashboard-page .action-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 1024px){.heat-stats,.secondary-stats{grid-template-columns:repeat(2,1fr)}.chart-card.wide{grid-column:span 1}.summary-grid{grid-template-columns:repeat(2,1fr)}.dashboard-page .action-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.heat-stats,.secondary-stats,.heat-status-grid,.summary-grid{grid-template-columns:1fr}.dashboard-page .action-grid{grid-template-columns:repeat(2,1fr)}.filter-group{flex-direction:column}.search-input,.select-wrapper{min-width:100%}.filter-stats{flex-wrap:wrap}.heat-meter-table th,.heat-meter-table td{padding:.75rem .5rem;font-size:.85rem}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden}.login-background{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.bg-shape{position:absolute;border-radius:50%;filter:blur(80px);opacity:.5}.bg-shape.shape-1{width:600px;height:600px;background:#ef444426;top:-200px;left:-200px;animation:float 20s ease-in-out infinite}.bg-shape.shape-2{width:500px;height:500px;background:#3b82f626;bottom:-150px;right:-150px;animation:float 25s ease-in-out infinite reverse}.bg-shape.shape-3{width:400px;height:400px;background:#8b5cf61a;top:50%;left:50%;transform:translate(-50%,-50%);animation:pulse 15s ease-in-out infinite}@keyframes float{0%,to{transform:translate(0)}50%{transform:translate(30px,30px)}}@keyframes pulse{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.1}50%{transform:translate(-50%,-50%) scale(1.1);opacity:.2}}.login-container{display:flex;gap:4rem;align-items:center;z-index:1;padding:2rem}.login-card{background:var(--card-bg);border:1px solid var(--border);border-radius:24px;padding:3rem;width:420px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 25px 50px #0000004d}.login-header{text-align:center;margin-bottom:2.5rem}.login-logo{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1rem}.login-logo .logo-icon{width:56px;height:56px;background:linear-gradient(135deg,#ef4444,#f97316);border-radius:16px;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 8px 20px #ef44444d}.login-logo h1{font-size:1.5rem;font-weight:700;color:var(--text);margin:0}.login-subtitle{color:var(--text-muted);font-size:.95rem;margin:0}.login-form{display:flex;flex-direction:column;gap:1.5rem}.login-error{display:flex;align-items:center;gap:.75rem;padding:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:12px;color:#ef4444;font-size:.9rem}.form-group label{font-size:.9rem;font-weight:500;color:var(--text-light)}.input-wrapper{position:relative;display:flex;align-items:center}.input-wrapper .input-icon{position:absolute;left:1rem;color:var(--text-muted);pointer-events:none}.input-wrapper input{width:100%;padding:.875rem 1rem .875rem 3rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;font-size:1rem;color:var(--text);transition:all .2s}.input-wrapper input::placeholder{color:var(--text-muted)}.input-wrapper input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #3b82f626}.password-toggle{position:absolute;right:1rem;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;transition:color .2s}.password-toggle:hover{color:var(--text)}.login-button{padding:1rem;background:linear-gradient(135deg,#ef4444,#f97316);border:none;border-radius:12px;font-size:1rem;font-weight:600;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.75rem;transition:all .3s;box-shadow:0 4px 15px #ef44444d}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #ef444466}.login-button:disabled{opacity:.7;cursor:not-allowed}.button-spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.login-footer{margin-top:2rem;text-align:center;padding-top:1.5rem;border-top:1px solid var(--border)}.demo-info{color:var(--text-muted);font-size:.85rem;margin-bottom:.75rem}.demo-info strong{color:var(--text-light);background:#94a3b81a;padding:.125rem .5rem;border-radius:4px;font-family:monospace}.login-footer .footer-link{color:var(--primary);text-decoration:none;font-size:.85rem;transition:color .2s}.login-footer .footer-link:hover{color:var(--text)}.login-features{display:flex;flex-direction:column;gap:1.5rem;max-width:320px}.feature-item{display:flex;align-items:flex-start;gap:1rem}.feature-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.feature-icon.heat{background:#ef444426;color:#ef4444}.feature-icon.temp{background:#3b82f626;color:#3b82f6}.feature-icon.energy{background:#eab30826;color:#eab308}.feature-text h4{font-size:1rem;font-weight:600;color:var(--text);margin:0 0 .25rem}.feature-text p{font-size:.85rem;color:var(--text-muted);margin:0;line-height:1.5}.sidebar-footer .footer-content{display:flex;align-items:center;justify-content:space-between;padding:.75rem;background:#94a3b80d;border-radius:12px;margin-bottom:1rem}.sidebar-footer .user-info{display:flex;align-items:center;gap:.75rem}.sidebar-footer .user-avatar{width:36px;height:36px;background:var(--primary);border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff}.sidebar-footer .user-details{display:flex;flex-direction:column}.sidebar-footer .user-name{font-size:.85rem;font-weight:600;color:var(--text)}.sidebar-footer .user-role{font-size:.7rem;color:var(--text-muted)}.sidebar-footer .logout-btn{width:36px;height:36px;background:#ef44441a;border:none;border-radius:10px;color:#ef4444;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.sidebar-footer .logout-btn:hover{background:#ef4444;color:#fff}.sidebar-footer .logout-btn-mini{width:100%;padding:.75rem;background:#ef44441a;border:none;border-radius:10px;color:#ef4444;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-bottom:.5rem}.sidebar-footer .logout-btn-mini:hover{background:#ef4444;color:#fff}body,.app-container,.main-content{color:var(--text)}input,select,textarea{color:var(--text)!important;background:var(--bg-secondary)!important}input::placeholder,textarea::placeholder{color:var(--text-muted)!important}table,table th,table td,.card,.card-content,.card-body{color:var(--text)}label{color:var(--text-light)}h1,h2,h3,h4,h5,h6{color:var(--text)}p{color:var(--text-light)}select option{background:var(--bg-secondary);color:var(--text)}.btn{color:var(--text)}.btn-primary{color:#fff!important}.card-header,.card-title,.stat-value,.metric-value{color:var(--text)}li{color:var(--text-light)}.meter-list .card,.site-view .card,.billing .card,.analytics .card{background:var(--card-bg);color:var(--text)}.recharts-tooltip-wrapper{color:var(--text)!important}@media (max-width: 900px){.login-container{flex-direction:column;gap:2rem}.login-features{flex-direction:row;max-width:100%;gap:1rem}.feature-item{flex:1;flex-direction:column;text-align:center;gap:.5rem}.feature-icon{margin:0 auto}}@media (max-width: 500px){.login-card{width:100%;padding:2rem;border-radius:16px}.login-features{display:none}}.tcp-badge{background:var(--success);color:#fff;font-size:.65rem;padding:.15rem .4rem;border-radius:4px;font-weight:600;text-transform:uppercase}.tcp-warning{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;padding:.5rem .75rem;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:6px;font-size:.75rem;color:var(--warning)}.tcp-warning svg{flex-shrink:0}.empty-gateway-list{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:var(--text-muted);text-align:center;gap:.5rem}.empty-gateway-list p{margin:0;font-weight:500}.empty-gateway-list small{font-size:.75rem;opacity:.7}.live-indicator{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#10b9811a;border:1px solid rgba(16,185,129,.3);border-radius:8px;margin-bottom:.75rem;font-size:.8rem;color:var(--success)}.pulse-dot{width:8px;height:8px;background:var(--success);border-radius:50%;animation:pulse-glow 2s infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 #10b98180}50%{box-shadow:0 0 0 8px #10b98100}}.demo-badge{display:flex;align-items:center;gap:.4rem;padding:.4rem .75rem;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:8px;font-size:.8rem;color:var(--warning)}.connection-actions{display:flex;gap:.5rem;margin-top:.75rem}.connection-actions .disconnect-btn,.connection-actions .scan-btn{flex:1;padding:.6rem 1rem;border:none;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:all .2s}.connection-actions .disconnect-btn{background:#ef44441a;color:var(--danger)}.connection-actions .disconnect-btn:hover{background:var(--danger);color:#fff}.connection-actions .scan-btn{background:#3b82f61a;color:var(--primary)}.connection-actions .scan-btn:hover{background:var(--primary);color:#fff}.connection-actions .scan-btn:disabled{opacity:.5;cursor:not-allowed}.tcp-info{margin-top:1.5rem;padding:1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.2);border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center}.tcp-info svg{color:var(--primary)}.tcp-info p{font-size:.85rem;color:var(--text-light);margin:0}.live-data-card.heat-card .heat-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:.75rem 0;padding:.75rem;background:#94a3b80d;border-radius:8px}.live-data-card.heat-card .heat-stat{text-align:center}.live-data-card.heat-card .heat-stat .label{display:block;font-size:.7rem;color:var(--text-muted);margin-bottom:.25rem}.live-data-card.heat-card .heat-stat .value{font-size:1rem;font-weight:600}.live-data-card.heat-card .heat-stat .value.inlet{color:#ef4444}.live-data-card.heat-card .heat-stat .value.outlet{color:#3b82f6}.live-data-card.heat-card .heat-stat .value.delta{color:#8b5cf6}.session-id{font-size:.75rem;color:var(--text-muted);margin-left:.5rem;font-family:monospace}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.section-header .refresh-btn{width:28px;height:28px;background:#94a3b81a;border:none;border-radius:6px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.section-header .refresh-btn:hover{background:var(--primary);color:#fff}.panel-section input,.panel-section select,.setting-item input,.setting-item select{width:100%;padding:.6rem .75rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.85rem}.panel-section input:focus,.panel-section select:focus,.setting-item input:focus,.setting-item select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 2px var(--primary-glow)}.btn,button{color:var(--text)}.btn-primary,.control-btn.start,.connect-btn{color:#fff!important}.control-btn.stop{background:var(--danger);color:#fff!important}.control-btn.manual{background:#94a3b81a;border:1px solid var(--border);color:var(--text)}.control-btn.manual:hover{background:var(--primary);color:#fff}.gateway-item .gateway-name,.gateway-item .gateway-ip,.gateway-item .meter-count{color:var(--text)}.gateway-item .gateway-ip{color:var(--text-muted);font-size:.75rem}.meter-item .meter-name,.meter-item .meter-location,.meter-item .meter-value{color:var(--text)}.meter-item .meter-location{color:var(--text-muted);font-size:.75rem}.live-data-card .meter-badge span,.live-data-card .current-value{color:var(--text)}.live-data-card .current-value small{color:var(--text-muted)}.log-entry .log-time,.log-entry .log-message{color:var(--text-light)}.log-entry.success .log-icon{color:var(--success)}.log-entry.error .log-icon{color:var(--danger)}.log-entry.warning .log-icon{color:var(--warning)}.log-entry.data .log-icon{color:var(--primary)}.log-entry.info .log-icon{color:var(--text-muted)}.reading-indicator{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#10b9811a;border-radius:8px;color:var(--success);font-size:.85rem}.reading-indicator .pulse{width:10px;height:10px;background:var(--success);border-radius:50%;animation:pulse-glow 1.5s infinite}.control-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;background:var(--card-bg);border-radius:12px;margin-bottom:1rem;flex-wrap:wrap}.control-buttons{display:flex;gap:.5rem}.empty-state h3,.empty-state p{color:var(--text)}.empty-state p{color:var(--text-muted)}.selected-count{font-size:.8rem;color:var(--text-muted);margin-bottom:.75rem;padding:.4rem .75rem;background:#3b82f61a;border-radius:6px;display:inline-block}button:not(:disabled){cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary,.connect-btn,.control-btn.start{background:var(--gradient-primary);border:none;color:#fff!important}.btn-primary:hover:not(:disabled),.connect-btn:hover:not(:disabled),.control-btn.start:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px var(--primary-glow)}.btn-secondary,.control-btn.manual{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text)}.btn-secondary:hover:not(:disabled),.control-btn.manual:hover:not(:disabled){background:var(--primary);border-color:var(--primary);color:#fff}.btn-danger,.control-btn.stop,.disconnect-btn{background:var(--danger);border:none;color:#fff!important}.btn-danger:hover:not(:disabled),.control-btn.stop:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px var(--danger-glow)}.header-actions .btn{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;transition:all .2s}.panel-section h3,.setting-item label,.gateway-item span,.meter-item span,.card h2,.card h3,.card h4{color:var(--text)}.text-muted,.subtitle,.description{color:var(--text-muted)}.value,.stat-value,.metric-value,.reading-value,.chart-card h3,.chart-card .card-header{color:var(--text)}.site-view-page{padding:1.5rem}.site-view-page .page-header{margin-bottom:2rem}.site-view-page .page-header h1{font-size:1.75rem;font-weight:700;color:var(--text);margin-bottom:.5rem}.site-view-page .subtitle{color:var(--text-muted);font-size:.9rem}.filters-bar{display:flex;gap:1.5rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:2rem;padding:1.5rem;background:var(--card-bg);border-radius:16px;border:1px solid var(--border)}.filters-bar .filter-group{display:flex;flex-direction:column;gap:.5rem}.filters-bar .filter-group label{font-size:.8rem;font-weight:500;color:var(--text-light)}.filters-bar .filter-group select,.filters-bar .filter-group input{min-width:200px;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:.9rem}.filters-bar .filter-group select:focus,.filters-bar .filter-group input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px var(--primary-glow)}.filters-bar .filter-info{padding:.75rem 1rem;background:#3b82f61a;border-radius:8px;color:var(--primary);font-size:.85rem;font-weight:500}.sites-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.site-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;transition:all .3s}.site-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px #0000004d;border-color:var(--primary)}.site-card .site-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.site-card .site-header h3{font-size:1.1rem;font-weight:600;color:var(--text);margin:0}.site-card .status-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.site-card .status-badge.active{background:#10b98126;color:var(--success)}.site-card .status-badge.inactive{background:#94a3b826;color:var(--text-muted)}.site-card .site-location,.site-card .site-address,.site-card .site-manager{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-light);margin-bottom:.5rem}.site-card .site-location .icon,.site-card .site-address .icon,.site-card .site-manager .icon{font-size:1rem}.site-card .site-manager .phone{color:var(--text-muted)}.site-card .site-stats{display:flex;gap:1.5rem;margin:1rem 0;padding:1rem;background:#ffffff08;border-radius:10px}.site-card .site-stats .stat{display:flex;flex-direction:column;align-items:center;text-align:center}.site-card .site-stats .stat-value{font-size:1.25rem;font-weight:700;color:var(--primary)}.site-card .site-stats .stat-label{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.site-card .site-actions{margin-top:1rem}.site-card .site-actions .btn{width:100%;padding:.75rem 1rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.gateway-page{padding:1.5rem}.gateway-page .page-header{margin-bottom:2rem}.gateway-page .page-header h1{font-size:1.75rem;font-weight:700;color:var(--text);margin-bottom:.5rem}.gateway-page .subtitle{color:var(--text-muted);font-size:.9rem}.filter-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem}.filter-row{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.filter-section .search-box{flex:1;max-width:350px}.filter-section .search-box input{width:100%;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:.9rem}.filter-section .search-box input::placeholder{color:var(--text-muted)}.filter-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.filter-btn{padding:.6rem 1rem;background:#ffffff0d;border:1px solid var(--border);border-radius:8px;color:var(--text-light);font-size:.85rem;cursor:pointer;transition:all .2s}.filter-btn:hover{background:#3b82f61a;border-color:var(--primary);color:var(--primary)}.filter-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.gateway-list-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem}.gateway-list-section h3{font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.gateway-list-section .table-container{border-radius:12px;overflow:hidden}.gateway-list-section table{width:100%;border-collapse:collapse}.gateway-list-section table th{background:#0003;padding:1rem;text-align:left;font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase}.gateway-list-section table td{padding:1rem;border-bottom:1px solid var(--border);color:var(--text);font-size:.9rem}.gateway-list-section table tbody tr{cursor:pointer;transition:all .2s}.gateway-list-section table tbody tr:hover{background:#3b82f60d}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.status-dot.online{background:var(--success);box-shadow:0 0 8px var(--success)}.status-dot.warning{background:var(--warning)}.status-dot.offline{background:var(--text-muted)}.imei-cell{font-family:Fira Code,monospace;font-size:.85rem;color:var(--text-muted)}.device-badge{padding:.25rem .75rem;border-radius:6px;font-size:.75rem;font-weight:500}.device-badge.orion{background:#3b82f626;color:var(--primary)}.device-badge.wimbus{background:#8b5cf626;color:#8b5cf6}.device-badge.integral{background:#10b98126;color:var(--success)}.action-buttons{display:flex;gap:.5rem}.btn-sm{padding:.4rem .75rem;border-radius:6px;border:none;cursor:pointer;font-size:.85rem;transition:all .2s}.btn-info{background:#3b82f626;color:var(--primary)}.btn-info:hover{background:var(--primary);color:#fff}.btn-success{background:#10b98126;color:var(--success)}.btn-success:hover{background:var(--success);color:#fff}.scheduled-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem}.scheduled-section h3{font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.scheduled-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.scheduled-card{background:#ffffff08;border:1px solid var(--border);border-radius:12px;padding:1rem}.scheduled-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.scheduled-name{font-weight:500;color:var(--text)}.scheduled-status{padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:500;background:#94a3b826;color:var(--text-muted)}.scheduled-status.active{background:#10b98126;color:var(--success)}.scheduled-details{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--text-light)}.info-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.info-panel h3{font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.info-item{padding:1rem;background:#ffffff08;border-radius:12px}.info-item h4{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.info-item p{font-size:.85rem;color:var(--text-muted);margin:0;line-height:1.5}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:var(--card-bg);border:1px solid var(--border);border-radius:20px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--border)}.modal-header h3{font-size:1.25rem;font-weight:600;color:var(--text);margin:0}.modal-close{width:36px;height:36px;border-radius:50%;border:none;background:#ffffff1a;color:var(--text);font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close:hover{background:var(--danger);color:#fff}.modal-body{padding:1.5rem}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:1.5rem}.detail-item{display:flex;flex-direction:column;gap:.25rem}.detail-item label{font-size:.75rem;font-weight:500;color:var(--text-muted);text-transform:uppercase}.detail-item span{font-size:.95rem;color:var(--text);font-weight:500}.modal-actions{display:flex;gap:.75rem;flex-wrap:wrap}.modal-actions .btn{flex:1;min-width:120px;padding:.75rem 1rem}.heat-status-section{margin-top:2rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.heat-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem}.heat-status-card{background:#ffffff08;border:1px solid var(--border);border-radius:12px;padding:1.25rem}.heat-status-card .status-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.heat-status-card .status-header span{font-size:.9rem;font-weight:500;color:var(--text)}.heat-status-card .status-value{font-size:2rem;font-weight:700;margin-bottom:.75rem}.heat-status-card .status-value.text-red{color:#ef4444}.heat-status-card .status-value.text-blue{color:#3b82f6}.heat-status-card .status-value.text-cyan{color:#06b6d4}.heat-status-card .status-value.text-yellow{color:#eab308}.heat-status-card .status-bar{height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden;margin-bottom:.5rem}.heat-status-card .bar-fill{height:100%;border-radius:4px;transition:width .5s ease}.heat-status-card .bar-fill.red{background:linear-gradient(90deg,#ef4444,#f97316)}.heat-status-card .bar-fill.blue{background:linear-gradient(90deg,#3b82f6,#60a5fa)}.heat-status-card .bar-fill.cyan{background:linear-gradient(90deg,#06b6d4,#22d3ee)}.heat-status-card .bar-fill.yellow{background:linear-gradient(90deg,#eab308,#fcd34d)}.heat-status-card .status-range{display:flex;justify-content:space-between;font-size:.7rem;color:var(--text-muted)}.heat-status-card .status-range .optimal{color:var(--success)}.ai-section,.quick-actions{margin-top:2rem}.action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem}.action-card{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:1.5rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text);transition:all .3s}.action-card:hover{transform:translateY(-4px);border-color:var(--primary);box-shadow:0 8px 24px #3b82f626}.action-card.heat:hover{border-color:#ef4444;box-shadow:0 8px 24px #ef444426}.action-card .action-icon{width:48px;height:48px;border-radius:12px;background:#3b82f626;display:flex;align-items:center;justify-content:center;color:var(--primary)}.action-card.heat .action-icon{background:#ef444426;color:#ef4444}.action-card span:last-child{font-size:.9rem;font-weight:500;text-align:center}.activity-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:2rem}.activity-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.activity-card.heat{border-color:#ef44444d}.activity-card .card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.activity-card .card-header svg{color:var(--primary)}.activity-card.heat .card-header svg{color:#ef4444}.activity-card .card-header h3{font-size:1rem;font-weight:600;color:var(--text);margin:0}.activity-stats{display:flex;gap:1.5rem}.activity-item{flex:1;text-align:center}.activity-value{display:block;font-size:1.5rem;font-weight:700;color:var(--text);margin-bottom:.25rem}.activity-label{font-size:.75rem;color:var(--text-muted)}.meter-list-page{padding:1.5rem}.meter-list-page .filters-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;margin-bottom:1.5rem}.meter-list-page .filter-group{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.meter-list-page .search-input{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;flex:1;max-width:300px}.meter-list-page .search-input svg{color:var(--text-muted)}.meter-list-page .search-input input{flex:1;background:transparent;border:none;color:var(--text);font-size:.9rem}.meter-list-page .select-wrapper{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px}.meter-list-page .select-wrapper svg{color:var(--text-muted)}.meter-list-page .select-wrapper select{background:transparent;border:none;color:var(--text);font-size:.9rem;padding:.25rem;min-width:150px}.filter-stats{display:flex;gap:.75rem;margin-top:1rem;flex-wrap:wrap}.stat-badge{display:flex;align-items:center;gap:.4rem;padding:.5rem .75rem;background:#3b82f61a;border-radius:8px;font-size:.8rem;font-weight:500;color:var(--primary)}.stat-badge.success{background:#10b9811a;color:var(--success)}.stat-badge.warning{background:#f59e0b1a;color:var(--warning)}.stat-badge.danger{background:#ef44441a;color:var(--danger)}.table-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;overflow:hidden;margin-bottom:1.5rem}.table-wrapper{overflow-x:auto}.heat-meter-table{width:100%;border-collapse:collapse}.heat-meter-table th{background:#0003;padding:1rem;text-align:left;font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;white-space:nowrap}.heat-meter-table .th-icon{display:flex;align-items:center;gap:.4rem}.heat-meter-table .th-icon svg{color:var(--primary)}.heat-meter-table td{padding:1rem;border-bottom:1px solid var(--border);color:var(--text);font-size:.9rem}.heat-meter-table tbody tr{transition:all .2s}.heat-meter-table tbody tr:hover{background:#3b82f60d}.heat-meter-table tbody tr.status-success{border-left:3px solid var(--success)}.heat-meter-table tbody tr.status-warning{border-left:3px solid var(--warning);background:#f59e0b08}.heat-meter-table tbody tr.status-danger{border-left:3px solid var(--danger);background:#ef444408}.serial-cell .serial-no{font-family:Fira Code,monospace;font-size:.85rem;color:var(--primary);font-weight:500}.location-cell .location-main{font-weight:500;color:var(--text)}.location-cell .location-sub{font-size:.75rem;color:var(--text-muted)}.energy-cell .energy-value{font-weight:600;font-size:1rem}.energy-cell .energy-value.heat{color:#ef4444}.energy-cell .energy-unit,.volume-cell .volume-unit,.temp-cell .temp-unit,.delta-cell .delta-unit,.flow-cell .flow-unit,.power-cell .power-unit{font-size:.7rem;color:var(--text-muted);margin-left:.25rem}.temp-cell.inlet .temp-value{color:#ef4444}.temp-cell.outlet .temp-value{color:#3b82f6}.delta-cell .delta-value{color:#8b5cf6;font-weight:600}.date-cell{color:var(--text-muted);font-size:.85rem}.status-cell .status-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.35rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.status-cell .status-badge.success{background:#10b98126;color:var(--success)}.status-cell .status-badge.warning{background:#f59e0b26;color:var(--warning)}.status-cell .status-badge.danger{background:#ef444426;color:var(--danger)}.status-cell .status-badge.muted{background:#94a3b826;color:var(--text-muted)}.action-cell .btn-sm{padding:.4rem .75rem}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}.summary-card{display:flex;align-items:center;gap:1rem;padding:1.5rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px}.summary-icon{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center}.summary-icon.heat{background:#ef444426;color:#ef4444}.summary-icon.volume{background:#06b6d426;color:#06b6d4}.summary-icon.temp{background:#8b5cf626;color:#8b5cf6}.summary-icon.power{background:#eab30826;color:#eab308}.summary-content{display:flex;flex-direction:column}.summary-value{font-size:1.5rem;font-weight:700;color:var(--text)}.summary-label{font-size:.8rem;color:var(--text-muted)}.text-red{color:#ef4444!important}.text-blue{color:#3b82f6!important}.text-cyan{color:#06b6d4!important}.text-yellow{color:#eab308!important}.text-green{color:#10b981!important}.text-purple{color:#8b5cf6!important}.chart-legend{display:flex;gap:1.5rem;margin-left:auto}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-light)}.legend-color{width:12px;height:12px;border-radius:3px}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%2394a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}.tenant-portal{padding:1.5rem;max-width:1200px;margin:0 auto}.tenant-portal .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.tenant-portal .header-title{display:flex;align-items:center;gap:1rem}.tenant-portal .header-title svg{color:var(--primary)}.tenant-portal .header-title h1{font-size:1.5rem;font-weight:700;color:var(--text);margin:0}.tenant-portal .subtitle{color:var(--text-muted);font-size:.9rem;margin:0}.tenant-info-badge{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.tenant-info-badge .unit{font-weight:600;color:var(--text)}.tenant-info-badge .meter{font-size:.8rem;color:var(--text-muted);font-family:Fira Code,monospace}.tenant-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.tenant-stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem;display:flex;align-items:center;gap:1rem;transition:all .3s}.tenant-stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0003}.tenant-stat-card svg{color:var(--primary);flex-shrink:0}.tenant-stat-card.balance svg{color:#ef4444}.tenant-stat-card.efficiency svg{color:#10b981}.tenant-stat-card .stat-info{display:flex;flex-direction:column;gap:.25rem;flex:1}.tenant-stat-card .stat-value{font-size:1.5rem;font-weight:700;color:var(--text)}.tenant-stat-card .stat-label{font-size:.8rem;color:var(--text-muted)}.tenant-stat-card .trend{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;padding:.15rem .4rem;border-radius:4px;margin-top:.25rem}.tenant-stat-card .trend.up{background:#ef444426;color:#ef4444}.tenant-stat-card .trend.down{background:#10b98126;color:#10b981}.tenant-stat-card .rank-badge{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:linear-gradient(135deg,#10b981,#34d399);color:#fff;border-radius:50%;font-weight:700;font-size:.9rem}.tenant-dashboard .dashboard-row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.5rem}.tenant-dashboard .chart-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.tenant-dashboard .chart-card.full-width{grid-column:1 / -1}.tenant-dashboard .chart-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.tenant-dashboard .chart-header svg{color:var(--primary)}.tenant-dashboard .chart-header h3{font-size:1rem;font-weight:600;color:var(--text);margin:0}.recent-invoice-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.recent-invoice-card .card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.recent-invoice-card .card-header svg{color:var(--primary)}.recent-invoice-card .card-header h3{font-size:1rem;font-weight:600;color:var(--text);margin:0}.invoice-preview .invoice-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.invoice-preview .invoice-period{font-weight:600;color:var(--text)}.invoice-preview .invoice-amount{text-align:center;margin-bottom:1rem}.invoice-preview .invoice-amount .amount{font-size:2rem;font-weight:700;color:var(--primary)}.invoice-breakdown{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:#ffffff08;border-radius:10px;margin-bottom:1rem}.invoice-breakdown .breakdown-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.invoice-breakdown .breakdown-item svg{color:var(--text-muted)}.invoice-breakdown .breakdown-item span:first-of-type{flex:1;color:var(--text-light)}.invoice-breakdown .breakdown-item span:last-of-type{font-weight:500;color:var(--text)}.invoice-preview .invoice-due{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:.75rem;background:#f59e0b1a;border-radius:8px;margin-bottom:1rem;color:var(--warning);font-size:.85rem}.btn-full{width:100%}.tips-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.tips-section .card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.tips-section .card-header svg{color:#10b981}.tips-section .card-header h3{font-size:1rem;font-weight:600;color:var(--text);margin:0}.tips-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.tip-card{padding:1rem;background:#10b9810d;border:1px solid rgba(16,185,129,.2);border-radius:12px;text-align:center}.tip-card .tip-icon{color:#10b981;margin-bottom:.5rem}.tip-card p{font-size:.85rem;color:var(--text-light);margin:0}.invoices-section{display:flex;flex-direction:column;gap:1rem}.invoice-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.invoice-card.pending{border-left:4px solid var(--warning)}.invoice-card.overdue{border-left:4px solid var(--danger)}.invoice-card.paid{border-left:4px solid var(--success)}.invoice-main{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.invoice-info{display:flex;flex-direction:column;gap:.25rem}.invoice-info .invoice-id{font-size:.8rem;color:var(--text-muted);font-family:Fira Code,monospace}.invoice-info .invoice-period{font-weight:600;color:var(--text)}.invoice-details{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:#ffffff08;border-radius:10px;margin-bottom:1rem}.invoice-details .detail-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.invoice-details .detail-row svg{color:var(--text-muted)}.invoice-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.invoice-total .label{font-size:.8rem;color:var(--text-muted);display:block}.invoice-total .amount{font-size:1.5rem;font-weight:700;color:var(--text)}.invoice-actions{display:flex;gap:.5rem}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-outline:hover{background:var(--primary);border-color:var(--primary);color:#fff}.consumption-section .consumption-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:1.5rem}.consumption-table{width:100%;border-collapse:collapse}.consumption-table th,.consumption-table td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border)}.consumption-table th{color:var(--text-muted);font-size:.8rem;font-weight:600;text-transform:uppercase}.consumption-table td{color:var(--text)}.notifications-section{display:flex;flex-direction:column;gap:.75rem}.notification-card{display:flex;align-items:flex-start;gap:1rem;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;position:relative}.notification-card.unread{background:#3b82f60d;border-color:#3b82f64d}.notification-icon{width:40px;height:40px;border-radius:10px;background:#3b82f61a;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-content h4{margin:0 0 .25rem;font-size:.95rem;font-weight:600;color:var(--text)}.notification-content p{margin:0 0 .5rem;font-size:.85rem;color:var(--text-light)}.notification-date{font-size:.75rem;color:var(--text-muted)}.unread-dot{position:absolute;top:1rem;right:1rem;width:8px;height:8px;background:var(--primary);border-radius:50%}.contact-section{margin-top:2rem;padding:1.5rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px}.contact-section h3{font-size:1rem;font-weight:600;color:var(--text);margin:0 0 1rem}.contact-options{display:flex;gap:1rem;flex-wrap:wrap}.contact-btn{flex:1;min-width:150px;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.2);border-radius:12px;color:var(--primary);font-size:.9rem;cursor:pointer;transition:all .2s}.contact-btn:hover{background:var(--primary);color:#fff}@media (max-width: 768px){.tenant-portal{padding:1rem}.tenant-portal .page-header{flex-direction:column;align-items:flex-start}.tenant-info-badge{align-items:flex-start;width:100%;padding-top:.5rem;border-top:1px solid var(--border)}.tenant-stats-grid{grid-template-columns:1fr 1fr;gap:.75rem}.tenant-stat-card{padding:1rem;flex-direction:column;text-align:center;gap:.5rem}.tenant-stat-card .stat-value{font-size:1.25rem}.tabs-container{overflow-x:auto;padding-bottom:.5rem;-webkit-overflow-scrolling:touch}.tab-btn{white-space:nowrap;padding:.6rem .75rem;font-size:.85rem}.tenant-dashboard .dashboard-row,.tips-grid{grid-template-columns:1fr}.invoice-footer{flex-direction:column;align-items:flex-start}.invoice-actions{width:100%}.invoice-actions button{flex:1}.contact-options{flex-direction:column}.contact-btn{width:100%}}@media (max-width: 480px){.tenant-stats-grid{grid-template-columns:1fr}.invoice-preview .invoice-amount .amount{font-size:1.75rem}}.field-worker-portal{min-height:100vh;background:var(--bg)}.worker-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:var(--card-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.worker-profile{display:flex;align-items:center;gap:.75rem}.worker-avatar{width:44px;height:44px;border-radius:12px;background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:1rem}.worker-info h2{margin:0;font-size:1rem;font-weight:600;color:var(--text)}.worker-stats{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-muted)}.worker-stats svg{color:#f59e0b}.device-status{display:flex;align-items:center;gap:1rem}.device-status .status-item{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--text-muted)}.device-status .status-item svg{color:#10b981}.worker-tabs{display:flex;gap:0;padding:0 1rem;background:var(--card-bg);border-bottom:1px solid var(--border);overflow-x:auto;-webkit-overflow-scrolling:touch}.worker-tabs .tab{display:flex;align-items:center;gap:.5rem;padding:1rem 1.5rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.9rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:all .2s}.worker-tabs .tab:hover:not(:disabled){color:var(--text)}.worker-tabs .tab.active{color:var(--primary);border-bottom-color:var(--primary)}.worker-tabs .tab:disabled{opacity:.4;cursor:not-allowed}.jobs-list{padding:1rem;display:flex;flex-direction:column;gap:1rem}.job-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1.25rem;transition:all .3s}.job-card.active{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-glow)}.job-card.urgent{border-left:4px solid #EF4444}.job-card.high{border-left:4px solid #F59E0B}.job-card.normal{border-left:4px solid #3B82F6}.job-card.low{border-left:4px solid #10B981}.job-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.job-type{position:relative;color:var(--text-muted)}.priority-indicator{position:absolute;top:-2px;right:-2px;width:8px;height:8px;border-radius:50%}.job-info{flex:1}.job-info h3{margin:0 0 .25rem;font-size:1rem;font-weight:600;color:var(--text)}.job-site{display:flex;align-items:center;gap:.25rem;font-size:.85rem;color:var(--text-muted);margin:0}.active-badge{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#10b98126;color:#10b981;border-radius:6px;font-size:.75rem;font-weight:500}.job-details{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.job-details .detail{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--text-light)}.job-details .detail svg{color:var(--text-muted)}.job-actions{display:flex;gap:.75rem}.job-actions button{flex:1;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;border-radius:10px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.field-worker-portal .btn-secondary{background:#94a3b81a;border:1px solid var(--border);color:var(--text)}.field-worker-portal .btn-secondary:hover{background:#94a3b833}.field-worker-portal .btn-primary{background:var(--gradient-primary);border:none;color:#fff}.field-worker-portal .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px var(--primary-glow)}.active-job-view{padding:1rem}.active-job-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px;margin-bottom:1rem}.job-title-section h2{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:var(--text)}.job-title-section p{margin:0;font-size:.85rem;color:var(--text-muted)}.job-controls{display:flex;gap:.5rem}.control-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border-radius:10px;border:none;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.control-btn.pause{background:#f59e0b26;color:var(--warning)}.control-btn.play{background:#10b98126;color:var(--success)}.control-btn.complete{background:var(--success);color:#fff}.progress-section{padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px;margin-bottom:1rem}.progress-header{display:flex;justify-content:space-between;font-size:.85rem;color:var(--text);margin-bottom:.5rem}.progress-bar{height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:var(--gradient-primary);border-radius:4px;transition:width .3s}.meters-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1rem;margin-bottom:1rem}.meters-section h3{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;color:var(--text);margin:0 0 1rem}.meters-list{display:flex;flex-direction:column;gap:.75rem}.meter-reading-card{padding:1rem;background:#ffffff08;border:1px solid var(--border);border-radius:12px;transition:all .2s}.meter-reading-card.completed{border-color:#10b98180;background:#10b9810d}.meter-reading-card.has-issue{border-color:#ef444480;background:#ef44440d}.meter-info{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.meter-type{width:36px;height:36px;border-radius:10px;background:#ffffff0d;display:flex;align-items:center;justify-content:center}.meter-details{flex:1}.meter-details .meter-name{display:block;font-weight:500;color:var(--text)}.meter-details .meter-location{display:block;font-size:.8rem;color:var(--text-muted)}.meter-info .check-icon{color:var(--success)}.meter-values{display:flex;gap:1rem;align-items:center}.meter-values .last-value,.meter-values .new-value{flex:1}.meter-values .label{font-size:.75rem;color:var(--text-muted)}.meter-values .value{font-weight:500;color:var(--text)}.new-value{display:flex;align-items:center;gap:.5rem}.new-value input{flex:1;padding:.5rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:1rem}.new-value .unit{font-size:.8rem;color:var(--text-muted)}.issue-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#ef444426;color:var(--danger);border-radius:6px;font-size:.75rem;margin-top:.5rem}.photos-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1rem;margin-bottom:1rem}.photos-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.photos-section h3{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;color:var(--text);margin:0}.add-photo-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--primary);border:none;border-radius:8px;color:#fff;font-size:.85rem;cursor:pointer}.photos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.75rem}.photo-card{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden}.photo-card img{width:100%;height:100%;object-fit:cover}.photo-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(0,0,0,.8),transparent);display:flex;justify-content:space-between;align-items:flex-end;padding:.5rem}.photo-time{font-size:.7rem;color:#fff}.delete-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#ef4444cc;border:none;border-radius:6px;color:#fff;cursor:pointer}.no-photos{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem;color:var(--text-muted);text-align:center}.notes-section{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:1rem;margin-bottom:1rem}.notes-section h3{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;color:var(--text);margin:0 0 1rem}.add-note{display:flex;gap:.5rem;align-items:flex-end}.add-note textarea{flex:1;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;color:var(--text);resize:none}.send-note-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--primary);border:none;border-radius:10px;color:#fff;cursor:pointer}.send-note-btn:disabled{opacity:.5;cursor:not-allowed}.notes-list{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}.note-item{padding:.75rem;background:#ffffff08;border-radius:10px}.note-time{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem}.note-text{margin:0;font-size:.9rem;color:var(--text)}.quick-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;padding:1rem}.action-btn{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;color:var(--text);cursor:pointer;transition:all .2s}.action-btn:hover{background:#3b82f61a;border-color:var(--primary);color:var(--primary)}.action-btn span{font-size:.8rem}.history-section{padding:1rem}.history-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:1.5rem}.history-section .stat-card{display:flex;align-items:center;gap:1rem;padding:1.25rem;background:var(--card-bg);border:1px solid var(--border);border-radius:16px}.history-section .stat-card svg{color:#f59e0b}.history-section .stat-card .value{display:block;font-size:1.5rem;font-weight:700;color:var(--text)}.history-section .stat-card .label{display:block;font-size:.8rem;color:var(--text-muted)}.history-section h3{font-size:1rem;font-weight:600;color:var(--text);margin:0 0 1rem}.history-list{display:flex;flex-direction:column;gap:.75rem}.history-card{padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.history-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.history-header h4{margin:0;font-size:.95rem;font-weight:600;color:var(--text)}.job-rating{display:flex;gap:.125rem}.history-details{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.8rem;color:var(--text-muted)}.history-details span{display:flex;align-items:center;gap:.25rem}@media (max-width: 768px){.worker-header{flex-direction:column;align-items:flex-start;gap:.75rem;padding:1rem}.device-status{width:100%;justify-content:space-between;padding-top:.5rem;border-top:1px solid var(--border)}.worker-tabs .tab{padding:.75rem 1rem;font-size:.85rem}.job-actions{flex-direction:column}.job-actions button{width:100%}.active-job-header{flex-direction:column;gap:1rem}.job-controls{width:100%;justify-content:space-between}.control-btn.complete{flex:1}.meter-values{flex-direction:column;align-items:stretch}.quick-actions{grid-template-columns:1fr 1fr}.history-stats{grid-template-columns:1fr}.photos-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 480px){.jobs-list{padding:.75rem}.job-card{padding:1rem}.meter-reading-card{padding:.75rem}.quick-actions{grid-template-columns:1fr;gap:.5rem}.action-btn{flex-direction:row;justify-content:center}.photos-grid{grid-template-columns:repeat(2,1fr)}}.status-indicator{display:flex;align-items:center;gap:.5rem}.status-indicator.online{color:var(--success)}.status-indicator.warning{color:var(--warning)}.status-indicator.offline{color:var(--text-muted)}.error-banner{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:12px;margin-bottom:1.5rem}.error-banner svg{color:var(--danger);flex-shrink:0}.error-banner span{color:var(--danger);flex:1}.error-banner button{padding:.5rem 1rem;background:var(--danger);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.error-banner button:hover{background:#dc2626}.gateway-status-banner{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:#10b9811a;border:1px solid rgba(16,185,129,.3);border-radius:12px;margin-bottom:1.5rem}.gateway-status-banner.warning{background:#f59e0b1a;border-color:#f59e0b4d}.gateway-status-banner .status-info{display:flex;align-items:center;gap:1rem}.gateway-status-banner .status-info svg{color:var(--success)}.gateway-status-banner.warning .status-info svg{color:var(--warning)}.gateway-status-banner .status-text h4{font-size:1rem;font-weight:600;color:var(--text);margin:0 0 .25rem}.gateway-status-banner .status-text p{font-size:.85rem;color:var(--text-muted);margin:0}.btn-icon{width:36px;height:36px;border-radius:8px;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.btn-icon.info{background:#3b82f626;color:var(--primary)}.btn-icon.info:hover{background:var(--primary);color:#fff}.btn-icon.success{background:#10b98126;color:var(--success)}.btn-icon.success:hover{background:var(--success);color:#fff}.btn-icon.danger{background:#ef444426;color:var(--danger)}.btn-icon.danger:hover{background:var(--danger);color:#fff}.info-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center}.info-icon.orion{background:#3b82f626;color:var(--primary)}.info-icon.wimbus{background:#8b5cf626;color:#8b5cf6}.info-icon.integral{background:#10b98126;color:var(--success)}.gateway-page .header-actions{display:flex;align-items:center;gap:1rem}.gateway-page .header-actions .btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;border-radius:10px;font-weight:500;transition:all .2s}.gateway-page .header-actions .btn-primary{background:var(--gradient-primary);border:none;color:#fff}.gateway-page .header-actions .btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--primary-glow)}.search-box{position:relative;display:flex;align-items:center}.search-box svg{position:absolute;left:1rem;color:var(--text-muted);pointer-events:none}.search-box input{width:100%;padding:.75rem 1rem .75rem 2.75rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:.9rem}.search-box input::placeholder{color:var(--text-muted)}.search-box input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px var(--primary-glow)}.add-gateway-modal .modal-content{max-width:600px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.form-grid .form-group.full-width{grid-column:span 2}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.85rem;font-weight:500;color:var(--text-light)}.form-group input,.form-group select{padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.9rem}.form-group input:focus,.form-group select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px var(--primary-glow)}.form-group input::placeholder{color:var(--text-muted)}.modal-footer{display:flex;gap:1rem;justify-content:flex-end;padding:1.5rem;border-top:1px solid var(--border)}.modal-footer .btn{padding:.75rem 1.5rem;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s}.modal-footer .btn-secondary{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text)}.modal-footer .btn-secondary:hover{background:var(--border)}.modal-footer .btn-primary{background:var(--gradient-primary);border:none;color:#fff}.modal-footer .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px var(--primary-glow)}.gateway-name-cell{display:flex;align-items:center;gap:.75rem}.gateway-name-cell .name{font-weight:500;color:var(--text)}.gateway-name-cell .site{font-size:.8rem;color:var(--text-muted)}.gateway-actions{display:flex;gap:.5rem;justify-content:flex-end}.bulk-site-entry-page .mbus-controls{display:flex;gap:1rem;margin-bottom:1.5rem;padding:1.25rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px}.mbus-controls .btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s}.mbus-controls .btn-mbus{background:var(--gradient-primary);border:none;color:#fff}.mbus-controls .btn-mbus:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px var(--primary-glow)}.mbus-controls .btn-mbus:disabled{opacity:.6;cursor:not-allowed}.mbus-controls .btn-mbus.loading{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.mbus-status{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#ffffff0d;border-radius:8px;font-size:.85rem;color:var(--text-muted)}.mbus-status.reading{color:var(--primary);background:#3b82f61a}.mbus-status.success{color:var(--success);background:#10b9811a}.mbus-status.error{color:var(--danger);background:#ef44441a}.meters-table tbody tr.mbus-failed{background:#ef44440d}.meters-table tbody tr.mbus-failed td{border-left:3px solid var(--danger)}.meters-table tbody tr.mbus-success{background:#10b9810d}.manual-entry-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .5rem;background:#f59e0b26;color:var(--warning);border-radius:4px;font-size:.7rem;font-weight:500}.mbus-read-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .5rem;background:#10b98126;color:var(--success);border-radius:4px;font-size:.7rem;font-weight:500}.reading-progress{margin-top:1rem;padding:1rem;background:#ffffff08;border-radius:8px}.reading-progress .progress-header{display:flex;justify-content:space-between;margin-bottom:.5rem;font-size:.85rem}.reading-progress .progress-header span:first-child{color:var(--text)}.reading-progress .progress-header span:last-child{color:var(--primary);font-weight:600}.reading-progress .progress-bar{height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.reading-progress .progress-bar .fill{height:100%;background:var(--gradient-primary);transition:width .3s ease}.retry-btn{padding:.35rem .65rem;background:#3b82f626;color:var(--primary);border:none;border-radius:4px;font-size:.75rem;cursor:pointer;display:flex;align-items:center;gap:.35rem;transition:all .2s}.retry-btn:hover{background:var(--primary);color:#fff}.bulk-entry-container .entry-stats-bar{display:flex;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;overflow-x:auto}.entry-stat.mbus-read{color:var(--success)}.entry-stat.mbus-read svg{color:var(--success)}.entry-stat.manual-entry{color:var(--warning)}.entry-stat.manual-entry svg{color:var(--warning)}.entry-stat.failed{color:var(--danger)}.entry-stat.failed svg{color:var(--danger)}@media (max-width: 768px){.form-grid{grid-template-columns:1fr}.form-grid .form-group.full-width{grid-column:span 1}.gateway-page .header-actions{flex-wrap:wrap}.mbus-controls,.modal-footer{flex-direction:column}.modal-footer .btn{width:100%}}
