.navbar{align-items:center;background:linear-gradient(180deg,#fff,#f8fafb);border-bottom:1px solid #e8ecf1;display:flex;height:72px;justify-content:space-between;left:240px;left:var(--sidebar-width,240px);padding:0 24px;position:fixed;right:0;top:0;transition:left .3s ease;z-index:1000}.navbar-left{justify-content:center;min-width:50px}.sidebar-toggle-btn{flex-shrink:0}@media (max-width:768px){.navbar{margin-left:0}}.navbar-left{align-items:center;display:flex;flex:0 0 auto;gap:20px}.sidebar-toggle-btn{align-items:center;background:linear-gradient(135deg,#1e5a96,#0d3b66);border:none;border-radius:12px;box-shadow:0 2px 8px #1e5a9626;color:#fff;cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;transition:all .3s cubic-bezier(.4,0,.2,1);width:44px}.sidebar-toggle-btn:hover{box-shadow:0 8px 24px #1e5a9640;transform:translateY(-2px)}.sidebar-toggle-btn:active{transform:translateY(0)}@media (max-width:768px){.sidebar-toggle-btn{display:flex}}.navbar-center{align-items:center;display:flex;flex:1 1;justify-content:center;padding:0;pointer-events:none}.navbar-logo-wrapper{align-items:center;display:flex;gap:12px}.navbar-logo-icon{align-items:center;animation:float 3s ease-in-out infinite;display:none;font-size:28px;justify-content:center}@media (max-width:768px){.navbar-logo-icon{display:flex}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.navbar-logo-text{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e5a96,#0d3b66);-webkit-background-clip:text;background-clip:text;color:#1a3a52;display:none;font-size:20px;font-weight:800;letter-spacing:-.3px}@media (max-width:768px){.navbar-logo-text{display:block}}.navbar-right{align-items:center;display:flex;flex:0 0 auto;gap:16px}.navbar-logo-img{height:30px;object-fit:contain;width:auto}.profile-container{position:relative}.profile-trigger{align-items:center;background:linear-gradient(135deg,#f0f4f9,#e9ecf1);border:1px solid #dce3ec;border-radius:12px;box-shadow:0 1px 4px #00000005;cursor:pointer;display:flex;gap:8px;gap:10px;padding:6px 10px;transition:all .3s cubic-bezier(.4,0,.2,1)}.profile-trigger:hover{background:linear-gradient(135deg,#e3ecf3,#dae6f0);border-color:#c0d8f0;box-shadow:0 6px 18px #1e5a962e}.profile-avatar{align-items:center;background:linear-gradient(135deg,#1e5a96,#0d3b66);border-radius:10px;box-shadow:0 2px 8px #1e5a9640;color:#fff;display:flex;font-size:12px;font-weight:800;height:38px;justify-content:center;transition:all .3s ease;width:38px}.profile-trigger:hover .profile-avatar{box-shadow:0 4px 12px #1e5a9659;transform:scale(1.08)}.profile-chevron{color:#1e5a96;transition:transform .3s cubic-bezier(.4,0,.2,1)}.profile-trigger:hover .profile-chevron{transform:rotate(180deg)}.profile-dropdown-menu{animation:menu-slide-in .3s cubic-bezier(.4,0,.2,1);background:#fff;border:1px solid #f0f2f5;border-radius:16px;box-shadow:0 20px 64px #0000001f;overflow:hidden;position:absolute;right:0;top:60px;width:300px;z-index:1001}@keyframes menu-slide-in{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.profile-menu-header{align-items:center;background:linear-gradient(135deg,#f8fafb,#f0f4f9);border-bottom:1px solid #f0f2f5;display:flex;gap:14px;padding:20px 24px}.profile-menu-avatar{align-items:center;background:linear-gradient(135deg,#1e5a96,#0d3b66);border-radius:12px;box-shadow:0 3px 12px #1e5a964d;color:#fff;display:flex;flex-shrink:0;font-size:14px;font-weight:800;height:48px;justify-content:center;transition:all .3s ease;width:48px}.profile-menu-header:hover .profile-menu-avatar{transform:scale(1.08)}.profile-menu-info{flex:1 1;min-width:0}.profile-menu-name{color:#1a3a52;font-size:15px;font-weight:800;letter-spacing:-.2px;margin:0 0 4px}.profile-menu-name,.profile-menu-role{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-menu-role{color:#8a9aaa;font-size:12px;font-weight:600;margin:0;text-transform:capitalize}.profile-menu-divider{background:linear-gradient(90deg,#0000,#f0f2f5 50%,#0000);height:1px}.profile-menu-item{align-items:center;background:none;border:none;color:#1a3a52;cursor:pointer;display:flex;font-size:14px;font-weight:700;gap:12px;padding:14px 20px;text-align:left;transition:all .2s ease;width:100%}.profile-menu-item:hover{background:linear-gradient(135deg,#f8fafc,#f5f8fd);color:#1e5a96;transform:translateX(4px)}.profile-menu-item svg{color:currentColor;flex-shrink:0;transition:all .3s ease}.profile-menu-item:hover svg{transform:scale(1.15)}.profile-menu-logout{border-top:1px solid #f5f7fb;color:#ef4444}.profile-menu-logout:hover{background:linear-gradient(135deg,#fff5f5,#ffe8e8);color:#dc2626}.sidebar-overlay{animation:overlay-fade-in .25s ease-out;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000059;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.sidebar{background:linear-gradient(180deg,#0d3b66,#1a5490);box-shadow:2px 0 16px #0d3b661f;display:flex;flex-direction:column;height:100vh;left:0;position:fixed;top:0;transition:width .3s cubic-bezier(.4,0,.2,1);width:240px;z-index:999}.sidebar.collapsed{width:70px}@media (max-width:768px){.sidebar{box-shadow:8px 0 40px #0000001a;left:-240px;position:fixed;transition:left .3s cubic-bezier(.4,0,.2,1)}.sidebar.open{left:0}}.sidebar-header{background:#1a4d84;border-bottom:1px solid #ffffff14;height:72px}.sidebar-header,.sidebar-menu-btn{align-items:center;display:flex;justify-content:center}.sidebar-menu-btn{background:#ffffff26;border:none;border-radius:14px;color:#fff;cursor:pointer;height:45px;transition:all .3s ease;width:45px}.sidebar-menu-btn:hover{background:#ffffff40}.sidebar-logo{align-items:center;color:#fff;display:flex;font-size:16px;font-weight:800;gap:12px;letter-spacing:-.3px;transition:all .3s ease}.sidebar-logo.collapsed{gap:0;justify-content:center;width:100%}.sidebar-logo-icon{flex-shrink:0;font-size:28px}.sidebar-logo-text,.sidebar-tooltip{transition:opacity .3s ease;white-space:nowrap}.sidebar-tooltip{background:#0d3b66f2;border-radius:8px;color:#fff;font-size:12px;font-weight:700;left:100%;margin-left:8px;opacity:0;padding:8px 12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);z-index:1}.sidebar:hover .sidebar-tooltip{opacity:1}.sidebar-nav{flex:1 1;overflow-y:auto;padding:20px 8px}.nav-section{margin-bottom:12px}.nav-section-title{color:#ffffff80;font-size:11px;font-weight:800;letter-spacing:.8px;margin:0;padding:12px 16px 8px;text-transform:uppercase}.sidebar-link{align-items:center;border-radius:12px;color:#fff;display:flex;font-size:14px;font-weight:700;gap:12px;justify-content:center;margin:6px 0;padding:14px;position:relative;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.navbar-year-filter{align-items:center;display:flex;gap:10px}.navbar-year-filter label{color:#64748b;font-size:13px;font-weight:700}.navbar-year-filter select{background:#fff;border:1px solid #d1d5db;border-radius:10px;font-weight:600;height:40px;padding:0 16px}.nav-icon{flex-shrink:0;font-size:20px;transition:all .3s ease}.nav-label{flex:1 1;white-space:nowrap}.nav-tooltip{background:#0d3b66f2;border-radius:8px;color:#fff;font-size:12px;font-weight:700;left:100%;margin-left:8px;opacity:0;padding:8px 12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:opacity .3s ease;white-space:nowrap;z-index:10}.sidebar.collapsed .sidebar-link:hover .nav-tooltip{opacity:1}.sidebar-link:hover{background:#ffffff26;color:#fff;transform:translateX(2px)}.sidebar-link:hover .nav-icon{transform:scale(1.15)}.sidebar-link.active{background:linear-gradient(135deg,#1e5a96,#0d3b66cc);border-left:4px solid #fffc;box-shadow:0 4px 16px #ffffff26;color:#fff;font-weight:800;position:relative}.sidebar.collapsed .sidebar-link.active{border-left:0;border-radius:10px}.nav-divider{background:linear-gradient(90deg,#0000,#0066cc1a 50%,#0000);height:1px;margin:12px 0}.sidebar-footer{background:linear-gradient(135deg,#f8fafb,#f0f4f9);border-top:1px solid #f0f2f5;padding:20px;text-align:center}.sidebar-footer p{color:#8a9aaa;font-size:12px;font-weight:700;margin:0 0 10px}.support-link{color:#06c;font-size:13px;font-weight:800;text-decoration:none;transition:all .3s ease}.support-link:hover{color:#0052a3;text-decoration:underline}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-track{background:#0000}.sidebar-nav::-webkit-scrollbar-thumb{background:#0066cc26;border-radius:3px}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:#0066cc4d}@media (max-width:768px){.navbar{height:64px;padding:0 16px}.navbar-logo-text{display:none}.navbar-logo-icon{font-size:24px}.notification-dropdown{right:-12px;width:340px}.profile-dropdown-menu{right:-12px;width:280px}.notification-btn,.profile-trigger,.sidebar-toggle-btn{height:40px;width:40px}.sidebar-toggle-btn svg{height:18px;width:18px}.navbar-right{gap:12px}.profile-avatar{height:34px;width:34px}.navbar-center{pointer-events:none}}@media (max-width:480px){.navbar{height:60px;padding:0 12px}.notification-btn,.profile-trigger,.sidebar-toggle-btn{height:38px;width:38px}.profile-avatar{font-size:10px;height:32px;width:32px}.navbar-right{gap:10px}.notification-dropdown{right:-8px;width:300px}.profile-dropdown-menu{right:-8px;width:260px}.navbar-logo-icon{font-size:20px}}.dashboard-page{background:linear-gradient(135deg,#f8fafc,#f1f5f9);margin-left:var(--sidebar-width);min-height:100vh;padding-top:72px;transition:margin-left .3s ease}.dashboard-container{margin:0 auto;max-width:1400px;padding:28px 32px}.stats-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card{background:#fff;border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 4px 14px #0f172a0d;display:flex;flex-direction:column;gap:8px;justify-content:center;min-height:110px;overflow:hidden;padding:20px 22px;position:relative;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.stat-card:before{background:linear-gradient(90deg,#2563eb,#1d4ed8);content:"";height:4px;left:0;position:absolute;right:0;top:0}.stat-card-online:before{background:linear-gradient(90deg,#10b981,#059669)}.stat-card-offline:before{background:linear-gradient(90deg,#ef4444,#dc2626)}.stat-card-pending:before{background:linear-gradient(90deg,#f59e0b,#d97706)}.stat-card-closed:before{background:linear-gradient(90deg,#8b5cf6,#7c3aed)}.stat-card:hover{border-color:#d1d5db;box-shadow:0 12px 28px #0f172a1a;transform:translateY(-4px)}.stat-label{color:#64748b;font-size:13px;font-weight:600;line-height:1.3}.stat-value{color:#0f172a;font-size:30px;font-weight:800;letter-spacing:-.7px;line-height:1.1}.charts-grid{grid-gap:22px;display:grid;gap:22px;grid-template-columns:repeat(2,minmax(0,1fr))}.chart-card{background:#fff;border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 4px 14px #0f172a0d;overflow:hidden;padding:26px;position:relative;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.chart-card:before{background:linear-gradient(90deg,#2563eb,#1d4ed8);content:"";height:4px;left:0;position:absolute;right:0;top:0}.chart-card:hover{border-color:#d1d5db;box-shadow:0 12px 28px #0f172a17;transform:translateY(-3px)}.chart-card-devices:before{background:linear-gradient(90deg,#10b981,#059669)}.chart-title{color:#1e293b;font-size:18px;font-weight:700;margin:0 0 22px}.dashboard-container>p{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 3px 10px #0f172a0a;color:#64748b;font-size:14px;padding:20px;text-align:center}@media (max-width:1200px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.charts-grid{grid-template-columns:1fr}}@media (max-width:768px){.dashboard-page{margin-left:0}.dashboard-container{padding:22px 20px}.stats-grid{gap:14px}.stat-card{min-height:100px;padding:18px}.stat-value{font-size:27px}.charts-grid{gap:18px}.chart-card{padding:22px}.chart-title{font-size:16px}}@media (max-width:520px){.dashboard-container{padding:18px 14px}.stats-grid{grid-template-columns:1fr}.stat-card{min-height:95px}.stat-label{font-size:12px}.stat-value{font-size:26px}.chart-card{padding:18px 14px}.chart-title{font-size:15px;margin-bottom:18px}}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{left:0;position:absolute;top:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.leaflet-tile::selection{background:#0000}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{height:1600px;-webkit-transform-origin:0 0;width:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-height:none!important;max-width:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-height:none!important;max-width:none!important;padding:0;width:auto}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{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{box-sizing:border-box;height:0;width:0;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{height:1px;width:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{pointer-events:visiblePainted;pointer-events:auto;position:relative;z-index:800}.leaflet-bottom,.leaflet-top{pointer-events:none;position:absolute;z-index:1000}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{clear:both;float:left}.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;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.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{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;color:#000;display:block;height:26px;line-height:26px;text-align:center;text-decoration:none;width:26px}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{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:none;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.leaflet-bar a.leaflet-disabled{background-color:#f4f4f4;color:#bbb;cursor:default}.leaflet-touch .leaflet-bar a{height:30px;line-height:30px;width: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{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.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);height:36px;width: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{height:44px;width: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{background:#fff;color:#333;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{overflow-x:hidden;overflow-y:scroll;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{border-top:1px solid #ddd;height:0;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{color:#333;line-height:1.4;padding:0 5px}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;height:.6669em;vertical-align:initial!important;width:1em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{background:#fffc;border:2px solid #777;border-top:none;box-sizing:border-box;line-height:1.1;padding:2px 5px 1px;text-shadow:1px 1px #fff;white-space:nowrap}.leaflet-control-scale-line:not(:first-child){border-bottom:none;border-top:2px solid #777;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{margin-bottom:20px;position:absolute;text-align:center}.leaflet-popup-content-wrapper{border-radius:12px;padding:1px;text-align:left}.leaflet-popup-content{font-size:13px;font-size:1.08333em;line-height:1.3;margin:13px 24px 13px 20px;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{height:20px;left:50%;margin-left:-20px;margin-top:-1px;overflow:hidden;pointer-events:none;position:absolute;width:40px}.leaflet-popup-tip{height:17px;margin:-10px auto 0;padding:1px;pointer-events:auto;transform:rotate(45deg);width:17px}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;box-shadow:0 3px 14px #0006;color:#333}.leaflet-container a.leaflet-popup-close-button{background:#0000;border:none;color:#757575;font:16px/24px Tahoma,Verdana,sans-serif;height:24px;position:absolute;right:0;text-align:center;text-decoration:none;top:0;width:24px}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678,M12=0.70710678,M21=-0.70710678,M22=0.70710678);margin:0 auto;width:24px}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.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{background-color:#fff;border:1px solid #fff;border-radius:3px;box-shadow:0 1px 3px #0006;color:#222;padding:6px;pointer-events:none;position:absolute;-webkit-user-select:none;user-select:none;white-space:nowrap}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{background:#0000;border:6px solid #0000;content:"";pointer-events:none;position:absolute}.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{border-top-color:#fff;bottom:0;margin-bottom:-12px}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-left:-6px;margin-top:-12px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;left:0;margin-left:-12px}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.map-container{background:#fff;border:1px solid #e9ecf1;border-radius:12px;box-shadow:0 2px 8px #0000000d;height:600px;margin-bottom:20px;overflow:hidden;position:relative;width:100%}.map-view{height:100%;width:100%;z-index:1}.map-empty-state{align-items:center;display:flex;flex-direction:column;gap:12px;left:50%;pointer-events:none;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);z-index:2}.empty-icon{font-size:64px;opacity:.3}.empty-message{color:#7a8fa0;font-size:14px;font-weight:500;margin:0;opacity:.7}.marker-popup{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.popup-name{color:#1a3a52;font-size:13px;font-weight:700;letter-spacing:.2px;margin-bottom:5px}.popup-email{color:#667eea;margin-bottom:3px;word-break:break-all}.popup-email,.popup-phone{font-size:11px;font-weight:600}.popup-phone{color:#2c3e50;margin-bottom:5px}.popup-coords{background:#667eea14;border:1px solid #667eea26;border-radius:4px;color:#667eea;font-family:Courier New,monospace;font-size:10px;font-weight:700;letter-spacing:.3px;margin-top:5px;padding:4px 8px}@media (max-width:768px){.map-container{height:450px;margin-bottom:24px}.empty-icon{font-size:48px}.empty-message,.popup-name{font-size:13px}.popup-email,.popup-phone{font-size:11px}.popup-coords{font-size:10px}}@media (max-width:480px){.map-container{height:350px;margin-bottom:20px}.empty-icon{font-size:40px}.empty-message,.popup-name{font-size:12px}.popup-name{margin-bottom:4px}.popup-email,.popup-phone{font-size:10px}.popup-coords{font-size:9px;padding:3px 6px}}.users-page{background:linear-gradient(135deg,#f9fafb,#f3f4f6);box-sizing:border-box;margin-left:var(--sidebar-width);min-height:100vh;padding:90px 30px 30px;transition:margin-left .3s ease}.users-container{margin:0 auto;max-width:1400px}.btn-add-user,.btn-download,.btn-toggle-view{border:none;border-radius:10px;cursor:pointer;font-size:14px;font-weight:600;padding:11px 18px;transition:all .3s ease;white-space:nowrap}.btn-toggle-view{background:#fff;border:2px solid #e5e7eb;color:#374151}.btn-toggle-view.active,.btn-toggle-view:hover{background:#fef3c7;border-color:#f59e0b;color:#f59e0b}.users-table{border-collapse:collapse;font-size:14px;width:100%}.users-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb}.users-table th{color:#374151;font-size:12px;font-weight:700;letter-spacing:.3px;padding:16px 14px;text-align:center;text-transform:uppercase}.users-table tbody tr{border-bottom:1px solid #e5e7eb;transition:all .2s ease}.users-table tbody tr:hover{background:#f9fafb;box-shadow:inset 0 0 4px #2563eb0d}.users-table td{color:#1f2937;padding:16px 14px;text-align:center}.user-uuid{color:#9ca3af;font-family:monospace;font-size:12px}.user-name{color:#1f2937;font-weight:600}.customer-name-link{background:#0000;border:none;color:#2563eb;cursor:pointer;font-family:inherit;font-size:14px;font-weight:700;padding:0;transition:color .2s ease,transform .2s ease}.customer-name-link:hover{color:#1d4ed8;text-decoration:underline}.customer-name-link:focus{outline:none}.user-email{color:#6b7280}.user-address{color:#6b7280;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-coords{font-size:13px}.coords-badge{background:#dbeafe;border-radius:8px;color:#1e40af;display:inline-block;font-family:monospace;font-size:12px;font-weight:600;padding:6px 12px}.coords-empty{color:#d1d5db}.modal-body{padding:32px}.form-section{margin-bottom:32px}.section-title{color:#374151;font-size:14px;font-weight:700;letter-spacing:.3px;margin:0 0 20px;padding-bottom:12px;text-transform:uppercase}.form-label{letter-spacing:.2px}@media (max-width:768px){.users-page{padding:24px}.page-title{font-size:26px}.controls-section{flex-direction:column;gap:16px}.search-container{width:100%}.action-buttons{flex-wrap:wrap;width:100%}.btn-add-user,.btn-download,.btn-toggle-view{flex:1 1;min-width:120px}.modal-content{width:95%}.modal-body,.modal-header{padding:24px}.form-row{gap:16px;grid-template-columns:1fr}.users-table{font-size:12px}.users-table td,.users-table th{padding:12px 10px}.pagination-container{flex-direction:column;gap:16px}}@media (max-width:480px){.users-page{padding:16px}.page-title{font-size:22px}.controls-section{flex-direction:column;gap:12px;padding:16px}.action-buttons{flex-direction:column;gap:10px;width:100%}.btn-add-user,.btn-download,.btn-toggle-view{width:100%}.modal-content{max-height:95vh;width:95%}.modal-header{padding:20px 16px}.modal-title{font-size:18px}.modal-body{padding:20px 16px}.form-section{margin-bottom:24px}.form-row{gap:12px;grid-template-columns:1fr}.form-input{font-size:13px;padding:10px 12px}.modal-footer{flex-direction:column-reverse;padding:16px}.btn-cancel,.btn-save{font-size:13px;padding:10px 16px;width:100%}.users-table{font-size:11px}.users-table td,.users-table th{padding:10px 8px}.actions-cell{flex-direction:column}.btn-delete,.btn-edit{width:100%}.pagination-container{flex-direction:column;gap:12px;padding:16px}.pagination-info{font-size:12px}}.form-hint{color:#64748b;display:block;margin-top:6px}.devices-page{background:linear-gradient(135deg,#f9fafb,#f3f4f6);box-sizing:border-box;margin-left:var(--sidebar-width);min-height:100vh;padding:90px 30px 30px;transition:margin-left .3s ease}.devices-container{margin:0 auto;max-width:1400px}.controls-section{align-items:center;background:#fff;border-radius:14px;box-shadow:0 1px 3px #0000000d;display:flex;gap:20px;justify-content:space-between;margin-bottom:32px;padding:24px}.search-container{flex:1 1;position:relative}.search-input{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;font-size:14px;padding:12px 16px;transition:all .3s ease;width:90%}.search-input::placeholder{color:#9ca3af}.search-input:hover{border-color:#d1d5db}.search-input:focus{background:#fff;border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a;outline:none}.action-buttons{align-items:center;display:flex;gap:12px}.btn-add-user,.btn-download{border:none;border-radius:10px;cursor:pointer;font-size:14px;font-weight:600;padding:11px 18px;transition:all .3s ease;white-space:nowrap}.btn-download{background:#fff;border:2px solid #e5e7eb;color:#374151}.btn-download:hover{background:#dbeafe;border-color:#2563eb;color:#2563eb}.btn-add-user{background:linear-gradient(135deg,#2563eb,#1e40af);border:none;color:#fff}.btn-add-user:hover{box-shadow:0 6px 20px #2563eb4d;transform:translateY(-2px)}.table-wrapper{background:#fff;border-radius:14px;box-shadow:0 1px 3px #0000000d;margin-bottom:32px;overflow-x:auto;padding:24px}.user-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:#fff;border:2px solid #d1d5db;border-radius:14px;color:#1f2937;cursor:pointer;font-size:15px;font-weight:600;height:58px;padding:0 18px;transition:all .3s ease;width:100%}.user-select:hover{border-color:#60a5fa}.user-select:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb26;outline:none}.user-select option{background:#fff;color:#1f2937;font-weight:500;padding:12px}.tech-not-assigned{background:#f3f4f6;color:#4b5563}.tech-pending{background:#fef3c7;color:#92400e}.tech-accepted{background:#dcfce7;color:#166534}.tech-rejected{background:#fee2e2;color:#991b1b}.tech-installed{background:#dbeafe;color:#1d4ed8}.devices-table{border-collapse:collapse;font-size:14px;width:100%}.devices-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb}.devices-table th{color:#374151;font-size:12px;font-weight:700;letter-spacing:.3px;padding:16px 14px;text-align:center;text-transform:uppercase}.devices-table tbody tr{border-bottom:1px solid #e5e7eb;transition:all .2s ease}.devices-table tbody tr:hover{background:#f9fafb;box-shadow:inset 0 0 4px #2563eb0d}.devices-table td{color:#1f2937;padding:16px 14px;text-align:center}.device-name,.device-owner{color:#1f2937;font-weight:600}.created-on{color:#6b7280}.actions-cell{display:flex;gap:8px;justify-content:center}.btn-delete,.btn-edit{border:none;border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;padding:8px 12px;transition:all .3s ease;white-space:nowrap}.btn-edit{background:#dbeafe;border:1px solid #93c5fd;color:#1e40af}.btn-edit:hover{background:#bfdbfe;border-color:#60a5fa;box-shadow:0 4px 12px #1e40af33;transform:translateY(-2px)}.btn-delete{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.btn-delete:hover{background:#fecaca;border-color:#f87171;box-shadow:0 4px 12px #991b1b33;transform:translateY(-2px)}.status-badge{border-radius:8px;display:inline-block;font-size:12px;font-weight:600;padding:6px 12px;text-align:center}.badge-active{background:#d1fae5;color:#065f46}.badge-inactive{background:#fee2e2;color:#991b1b}.badge-maintenance{background:#fef3c7;color:#92400e}.cleaning-cell{align-items:flex-start;display:flex;flex-direction:column;gap:6px}.cleaning-cell .btn-edit{font-size:11px;padding:4px 10px}.no-data{color:#9ca3af;padding:40px;text-align:center}.pagination-container{align-items:center;background:#fff;border-radius:14px;box-shadow:0 1px 3px #0000000d;display:flex;justify-content:space-between;padding:20px}.pagination-info{color:#6b7280;font-size:13px;font-weight:500}.pagination{align-items:center;display:flex;gap:8px}.pagination-btn{background:#fff;border:2px solid #e5e7eb;border-radius:8px;color:#374151;cursor:pointer;font-size:13px;font-weight:600;padding:8px 14px;transition:all .3s ease}.pagination-btn:hover:not(:disabled){background:#dbeafe;border-color:#2563eb;color:#2563eb}.pagination-btn:disabled{cursor:not-allowed;opacity:.5}.pagination-number{background:#fff;border:2px solid #e5e7eb;border-radius:8px;color:#374151;cursor:pointer;font-size:13px;font-weight:600;min-width:40px;padding:8px 12px;text-align:center;transition:all .3s ease}.pagination-number:hover{border-color:#2563eb;color:#2563eb}.pagination-number.active{background:linear-gradient(135deg,#2563eb,#1e40af);border-color:#1e40af;color:#fff}.modal-overlay{align-items:center;animation:fadeInModal .3s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeInModal{0%{opacity:0}to{opacity:1}}.modal-content{animation:slideInModal .3s ease;background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000026;max-height:90vh;max-width:700px;overflow-y:auto;width:90%}@keyframes slideInModal{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{align-items:center;background:linear-gradient(135deg,#f9fafb,#fff);border-bottom:2px solid #e5e7eb;display:flex;justify-content:space-between;padding:28px 32px}.device-modal-content{max-width:620px}.device-modal-header{align-items:flex-start}.device-modal-header-info{align-items:flex-start;display:flex;gap:14px}.device-modal-icon{align-items:center;background:linear-gradient(135deg,#2563eb,#1e40af);border-radius:13px;box-shadow:0 6px 14px #2563eb4d;color:#fff;display:flex;flex-shrink:0;height:46px;justify-content:center;width:46px}.device-modal-subtitle{color:#6b7280;font-size:13px;font-weight:500;margin:4px 0 0}.device-form-error{align-items:center;background:#fee2e2;border:2px solid #fca5a5;border-radius:10px;display:flex;gap:10px;margin-bottom:24px;padding:13px 16px}.device-form-error span{flex-shrink:0;font-size:16px}.device-form-error p{color:#7f1d1d;font-size:13px;font-weight:600;margin:0}.status-pill-group{display:flex;flex-wrap:wrap;gap:10px}.status-pill-button{align-items:center;background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#4b5563;cursor:pointer;display:flex;font-size:13px;font-weight:700;gap:8px;padding:10px 18px;transition:all .2s ease}.status-pill-button:hover{background:#f9fafb;border-color:#d1d5db}.status-pill-button.selected{border-width:2px}.status-pill-dot{border-radius:50%;flex-shrink:0;height:8px;width:8px}.device-user-dropdown-container{min-width:0;position:relative;width:100%}.device-user-search-wrapper{align-items:center;display:flex;position:relative}.device-user-search-icon{color:#9ca3af;left:14px;pointer-events:none;position:absolute}.device-user-search-input{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;font-family:inherit;font-size:14px;padding:12px 40px;transition:all .2s ease;width:100%}.device-user-search-input:hover{border-color:#d1d5db}.device-user-search-input:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a;outline:none}.device-user-clear-button{align-items:center;background:#0000;border:none;border-radius:50%;color:#9ca3af;cursor:pointer;display:flex;justify-content:center;padding:4px;position:absolute;right:12px;transition:all .2s ease}.device-user-clear-button:hover{background:#f3f4f6;color:#4b5563}.device-user-dropdown-list{background:#fff;border:2px solid #e5e7eb;border-radius:12px;box-shadow:0 12px 28px #0f172a1f;left:0;max-height:240px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 6px);z-index:20}.device-user-dropdown-item{align-items:center;border-bottom:1px solid #f3f4f6;cursor:pointer;display:flex;gap:10px;padding:11px 14px;transition:background .15s ease}.device-user-dropdown-item:last-child{border-bottom:none}.device-user-dropdown-item:hover{background:#f0f9ff}.device-user-dropdown-item.selected{background:#eff6ff}.device-user-avatar{align-items:center;background:linear-gradient(135deg,#2563eb,#1e40af);border-radius:50%;color:#fff;display:flex;flex-shrink:0;height:30px;justify-content:center;width:30px}.device-user-dropdown-item-info{display:flex;flex-direction:column;gap:2px;min-width:0}.device-user-name{color:#1f2937;font-size:13.5px;font-weight:700}.device-user-phone{color:#9ca3af;font-size:11.5px}.device-user-no-results{color:#9ca3af;font-size:13px;padding:18px 14px;text-align:center}.device-btn-spinner{animation:device-spin .7s linear infinite}@keyframes device-spin{to{transform:rotate(1turn)}}.btn-cancel:disabled,.btn-save:disabled{cursor:not-allowed;opacity:.6;transform:none!important}.btn-save{align-items:center;display:inline-flex;gap:8px;justify-content:center}.modal-title{color:#111827;font-size:22px;font-weight:800;margin:0}.modal-close{align-items:center;background:#fff;border:2px solid #e5e7eb;border-radius:8px;color:#9ca3af;cursor:pointer;display:flex;font-size:24px;height:40px;justify-content:center;transition:all .3s ease;width:40px}.modal-close:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.modal-body{padding:40px}.form-section{margin-bottom:40px}.form-section:last-child{margin-bottom:0}.section-title{border-bottom:2px solid #e5e7eb;color:#1e3a8a;font-size:18px;font-weight:800;margin-bottom:32px;padding-bottom:14px}.form-row{grid-gap:50px;display:grid;gap:50px;grid-template-columns:1fr 1fr;margin-bottom:20px}.form-row:last-child{margin-bottom:0}.form-group{gap:10px;margin-bottom:24px}.form-label{color:#1f2937;letter-spacing:.5px;margin-bottom:4px}.form-input{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;font-family:inherit;font-size:14px;padding:12px 14px;transition:all .3s ease}.form-input::placeholder{color:#9ca3af}.form-input:hover{border-color:#d1d5db}.form-input:focus{background:#fff;border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a;outline:none}.form-input:read-only{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.modal-footer{border-top:2px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding:24px 32px}.btn-cancel,.btn-save{border:none;border-radius:10px;cursor:pointer;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.btn-cancel{background:#fff}.btn-cancel:hover{background:#f9fafb;border-color:#d1d5db;transform:translateY(-2px)}.btn-save{background:linear-gradient(135deg,#2563eb,#1e40af);border:none;color:#fff}.btn-save:hover{box-shadow:0 6px 20px #2563eb4d;transform:translateY(-2px)}.device-view-button{align-items:center;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;color:#2f80ed;cursor:pointer;display:inline-flex;font:600 12px inherit;gap:7px;padding:9px 13px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.device-view-button:hover{background:#dbeafe;box-shadow:0 5px 14px #2f80ed2e;transform:translateY(-1px)}.device-detail-overlay{animation:fadeInModal .22s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0f172a7a;display:grid;inset:0;padding:24px;place-items:center;position:fixed;z-index:1100}.device-detail-modal{animation:slideInModal .25s ease;background:#fff;border-radius:20px;box-shadow:0 24px 70px #0f172a3d;max-height:calc(100vh - 48px);overflow:hidden auto;width:min(760px,100%)}.device-detail-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px 26px 20px}.device-detail-eyebrow{color:#6b7280;display:block;font-size:12px;font-weight:700;letter-spacing:.06em;margin-bottom:5px;text-transform:uppercase}.device-detail-title{color:#111827;font-size:21px;font-weight:800;margin:0}.device-detail-close{background:#fff;border:1px solid #e5e7eb;border-radius:12px;color:#6b7280;cursor:pointer;display:grid;height:38px;place-items:center;transition:background .2s ease,color .2s ease,transform .2s ease;width:38px}.device-detail-close:hover{background:#eff6ff;color:#2f80ed;transform:rotate(90deg)}.device-detail-tabs{border-bottom:1px solid #e5e7eb;display:flex;gap:8px;padding:12px 26px 0}.device-detail-tab{align-items:center;background:#0000;border:none;border-bottom:2px solid #0000;color:#6b7280;cursor:pointer;display:inline-flex;font:700 13px inherit;gap:7px;padding:12px 4px;transition:border-color .2s ease,color .2s ease}.device-detail-tab.active{border-color:#2f80ed;color:#2f80ed}.device-detail-body,.device-image-body{padding:26px}.installation-reading-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.device-values-panel{grid-gap:20px;display:grid;gap:20px}.device-values-heading{align-items:flex-start;display:flex;gap:20px;justify-content:space-between}.device-values-heading h3,.values-channel-header h4{color:#111827;font-size:18px;font-weight:800;margin:0}.device-values-heading p{color:#6b7280;font-size:13px;margin:6px 0 0}.btn-cancel-values,.btn-edit-values,.btn-save-values{align-items:center;border-radius:10px;cursor:pointer;display:inline-flex;font:700 13px inherit;gap:8px;justify-content:center;padding:11px 16px;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease}.btn-cancel-values,.btn-edit-values{background:#eff6ff;border:1px solid #bfdbfe;color:#2f80ed}.btn-cancel-values:hover,.btn-edit-values:hover{background:#dbeafe;box-shadow:0 5px 14px #2f80ed2e;transform:translateY(-1px)}.values-channel-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.values-channel-card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 5px 14px #0f172a0d;padding:18px}.values-channel-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;gap:11px;padding-bottom:16px}.values-field-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr);margin-top:16px}.values-field{grid-gap:7px;color:#6b7280;display:grid;font-size:11px;font-weight:700;gap:7px;letter-spacing:.03em;min-width:0;text-transform:uppercase}.values-field strong{color:#111827;font-size:18px;letter-spacing:normal;text-transform:none}.values-field small{color:#6b7280;font-size:11px}.value-setting-input{box-sizing:border-box;width:100%}.values-editor-actions{border-top:1px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding-top:20px}.btn-save-values{background:linear-gradient(135deg,#2563eb,#1e40af);border:1px solid #1e40af;color:#fff}.btn-save-values:hover{box-shadow:0 6px 20px #2563eb4d;transform:translateY(-1px)}.installation-reading-card{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 5px 14px #0f172a0d;display:flex;gap:10px;min-width:0;padding:16px 12px}.installation-reading-icon{border-radius:12px;display:grid;flex:0 0 38px;height:38px;place-items:center;width:38px}.installation-reading-icon.energy{background:#fff7ed;color:#ea580c}.installation-reading-icon.voltage{background:#f5f3ff;color:#7c3aed}.installation-reading-icon.flow{background:#eff6ff;color:#2f80ed}.installation-reading-label{color:#6b7280;display:block;font-size:11px;font-weight:700;letter-spacing:.03em;margin-bottom:5px;text-transform:uppercase}.installation-reading-card strong{color:#111827;display:block;font-size:17px;white-space:nowrap}.installation-reading-card small{color:#6b7280;font-size:11px;font-weight:600}.installation-date{align-items:center;background:#f8fafc;border-radius:13px;color:#4b5563;display:flex;font-size:13px;gap:10px;margin-top:18px;padding:14px 15px}.installation-date svg{color:#2f80ed}.installation-date strong{color:#111827}.installation-comment-card{background:linear-gradient(135deg,#f8fbff,#eff6ff);border:1px solid #dbeafe;border-radius:16px;color:#2f80ed;display:flex;gap:13px;padding:20px}.installation-comment-card p{color:#374151;font-size:14px;line-height:1.65;margin:0}.device-image-modal{width:min(620px,100%)}.device-image-body{grid-gap:18px;display:grid;gap:18px}.installation-image-preview{background:#f8fafc;border-radius:16px;max-height:420px;object-fit:contain;width:100%}.installation-image-empty{grid-gap:8px;align-content:center;background:#f8fbff;border:1px dashed #bfdbfe;border-radius:16px;color:#2f80ed;display:grid;gap:8px;min-height:240px;place-items:center}.installation-image-empty p{color:#6b7280;font-size:14px;margin:0}.installation-image-download{align-items:center;background:#2f80ed;border-radius:11px;color:#fff;display:inline-flex;font-size:13px;font-weight:700;gap:8px;justify-content:center;justify-self:center;padding:11px 17px;text-decoration:none;transition:background .2s ease,box-shadow .2s ease,transform .2s ease}.installation-image-download:hover{background:#2563eb;box-shadow:0 6px 16px #2f80ed47;transform:translateY(-1px)}@media (max-width:768px){.devices-page{padding:24px}.page-title{font-size:26px}.controls-section{flex-direction:column;gap:16px}.search-container{width:100%}.action-buttons{flex-wrap:wrap;width:100%}.btn-add-user,.btn-download{flex:1 1;min-width:120px}.modal-content{width:95%}.modal-body,.modal-header{padding:24px}.form-row{gap:16px;grid-template-columns:1fr}.devices-table{font-size:12px}.devices-table td,.devices-table th{padding:12px 10px}.pagination-container{flex-direction:column;gap:16px}.installation-reading-grid,.values-channel-grid{grid-template-columns:1fr}}@media (max-width:480px){.devices-page{padding:16px}.page-title{font-size:22px}.controls-section{flex-direction:column;gap:12px;padding:16px}.action-buttons{flex-direction:column;gap:10px;width:100%}.btn-add-user,.btn-download{width:100%}.modal-content{max-height:95vh;width:95%}.modal-header{padding:20px 16px}.modal-title{font-size:18px}.modal-body{padding:20px 16px}.form-section{margin-bottom:24px}.form-row{gap:12px;grid-template-columns:1fr}.form-input{font-size:13px;padding:10px 12px}.modal-footer{flex-direction:column-reverse;padding:16px}.btn-cancel,.btn-save{font-size:13px;padding:10px 16px;width:100%}.devices-table{font-size:11px}.devices-table td,.devices-table th{padding:10px 8px}.actions-cell{flex-direction:column}.btn-delete,.btn-edit{width:100%}.pagination-container{flex-direction:column;gap:12px;padding:16px}.pagination-info{font-size:12px}.device-detail-overlay{padding:14px}.device-detail-body,.device-detail-header,.device-image-body{padding-left:18px;padding-right:18px}.device-detail-tabs{padding:10px 18px 0}.device-values-heading,.values-editor-actions{align-items:stretch;flex-direction:column}.btn-cancel-values,.btn-edit-values,.btn-save-values{width:100%}.values-field-grid{grid-template-columns:1fr}.installation-date{align-items:flex-start}}.technicians-page{background:linear-gradient(135deg,#f8fafc,#f1f5f9);box-sizing:border-box;margin-left:var(--sidebar-width);min-height:100vh;padding:90px 30px 30px;transition:margin-left .3s ease}.technicians-container{margin:0 auto;max-width:1400px}.technicians-page-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0d;display:flex;justify-content:space-between;margin-bottom:20px;padding:22px 24px}.technicians-page-header h1{color:#0f172a;font-size:24px;font-weight:800;margin:0}.technicians-page-header p{color:#64748b;font-size:13px;margin:5px 0 0}.btn-add-technician{background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:14px;font-weight:700;padding:11px 18px;transition:transform .2s ease,box-shadow .2s ease}.btn-add-technician:hover{box-shadow:0 7px 20px #2563eb47;transform:translateY(-2px)}.technicians-controls{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0a;margin-bottom:20px;padding:18px 20px}.technician-search{background:#fff;border:2px solid #e5e7eb;border-radius:10px;box-sizing:border-box;color:#1f2937;font-size:14px;max-width:520px;outline:none;padding:12px 15px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.technician-search::placeholder{color:#9ca3af}.technician-search:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a}.technicians-table-wrapper{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0d;overflow-x:auto;padding:20px}.technicians-table{border-collapse:collapse;font-size:14px;width:100%}.technicians-table thead{background:#f8fafc;border-bottom:2px solid #e5e7eb}.technicians-table th{color:#475569;font-size:12px;font-weight:800;letter-spacing:.3px;padding:15px 13px;text-align:center;text-transform:uppercase;white-space:nowrap}.technicians-table td{border-bottom:1px solid #e5e7eb;color:#1e293b;padding:15px 13px;text-align:center}.technicians-table tbody tr{transition:background .2s ease}.technicians-table tbody tr:hover{background:#f8fafc}.technicians-table tbody tr:last-child td{border-bottom:none}.technician-name{color:#0f172a;font-weight:700}.availability-status,.technician-status{align-items:center;border-radius:999px;display:inline-flex;font-size:11px;font-weight:800;justify-content:center;padding:6px 11px;white-space:nowrap}.technician-status.active{background:#dcfce7;color:#15803d}.technician-status.inactive{background:#fee2e2;color:#b91c1c}.availability-status.available{background:#dbeafe;color:#1d4ed8}.availability-status.busy{background:#fef3c7;color:#92400e}.technician-actions{display:flex;gap:8px;justify-content:center}.btn-technician-delete,.btn-technician-edit{border:none;border-radius:8px;cursor:pointer;font-size:12px;font-weight:700;padding:8px 12px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.btn-technician-edit{background:#dbeafe;border:1px solid #93c5fd;color:#1d4ed8}.btn-technician-edit:hover{background:#bfdbfe;box-shadow:0 4px 12px #2563eb29;transform:translateY(-2px)}.btn-technician-delete{background:#fee2e2;border:1px solid #fca5a5;color:#b91c1c}.btn-technician-delete:hover{background:#fecaca;box-shadow:0 4px 12px #ef444429;transform:translateY(-2px)}.technician-state{color:#64748b;font-size:14px;padding:40px;text-align:center}.technician-modal-overlay{align-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a73;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:2000}.technician-modal{animation:technicianModalIn .25s ease;background:#fff;border-radius:18px;box-shadow:0 25px 70px #0f172a38;max-height:90vh;max-width:720px;overflow-y:auto;width:100%}@keyframes technicianModalIn{0%{opacity:0;transform:translateY(-15px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.technician-modal-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#fff);border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px 28px}.technician-modal-header h2{color:#0f172a;font-size:21px;font-weight:800;margin:0}.technician-modal-header p{color:#64748b;font-size:12px;margin:5px 0 0}.technician-modal-close{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:9px;color:#94a3b8;cursor:pointer;display:flex;font-size:24px;height:38px;justify-content:center;transition:background .2s ease,color .2s ease,border-color .2s ease;width:38px}.technician-modal-close:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.technician-modal-body{padding:28px}.technician-form-section{margin-bottom:28px}.technician-form-section:last-child{margin-bottom:0}.technician-form-section h3{border-bottom:1px solid #e5e7eb;color:#475569;font-size:13px;font-weight:800;letter-spacing:.4px;margin:0 0 18px;padding-bottom:10px;text-transform:uppercase}.technician-form-row{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:18px}.technician-form-group{display:flex;flex-direction:column;gap:7px;margin-bottom:18px}.technician-form-group:last-child{margin-bottom:0}.technician-form-group label{color:#374151;font-size:12px;font-weight:800;letter-spacing:.2px;text-transform:uppercase}.technician-form-group input{background:#fff;border:2px solid #e5e7eb;border-radius:10px;box-sizing:border-box;color:#1f2937;font-family:inherit;font-size:14px;outline:none;padding:12px 14px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.technician-form-group input::placeholder{color:#9ca3af}.technician-form-group input:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a}.technician-modal-footer{background:#f8fafc;border-top:1px solid #e5e7eb;display:flex;gap:10px;justify-content:flex-end;padding:20px 28px}.btn-technician-cancel,.btn-technician-save{border-radius:9px;cursor:pointer;font-size:13px;font-weight:700;padding:11px 20px;transition:transform .2s ease,box-shadow .2s ease}.btn-technician-cancel{background:#fff;border:1px solid #d1d5db;color:#475569}.btn-technician-cancel:hover{background:#f1f5f9;transform:translateY(-1px)}.btn-technician-save{background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;color:#fff}.btn-technician-save:hover{box-shadow:0 7px 20px #2563eb40;transform:translateY(-2px)}@media (max-width:900px){.technicians-page-header{align-items:flex-start;flex-direction:column;gap:16px}.btn-add-technician{width:100%}}@media (max-width:768px){.technicians-page{margin-left:0;padding:90px 20px 24px}.technician-form-row{grid-template-columns:1fr}.technician-actions{flex-direction:column}.technician-modal-body,.technician-modal-header{padding:22px}.technician-modal-footer{padding:18px 22px}}@media (max-width:520px){.technicians-page{padding:84px 14px 20px}.technicians-page-header{padding:18px}.technicians-page-header h1{font-size:21px}.technicians-controls{padding:14px}.technicians-table-wrapper{padding:12px}.technician-modal-overlay{padding:10px}.technician-modal{max-height:94vh}.technician-modal-header{padding:18px}.technician-modal-header h2{font-size:18px}.technician-modal-body{padding:18px}.technician-modal-footer{flex-direction:column-reverse;padding:16px 18px}.btn-technician-cancel,.btn-technician-save{width:100%}}.customer-details-page{background:linear-gradient(135deg,#f8fafc,#f1f5f9);margin-left:var(--sidebar-width);min-height:100vh;padding-bottom:32px;padding-top:90px;transition:margin-left .3s ease}.customer-details-container{margin:0 auto;max-width:1400px;padding:0 30px}.details-topbar{align-items:center;display:flex;gap:22px;margin-bottom:24px}.back-button{background:#fff;border:1px solid #dbe3ee;border-radius:10px;color:#2563eb;cursor:pointer;font-weight:700;padding:10px 14px}.details-page-title{color:#0f172a;font-size:28px;margin:0}.details-page-subtitle{color:#64748b;font-size:13px;margin:4px 0 0}.details-card{background:#fff;border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 4px 14px #0f172a0d;margin-bottom:22px;padding:24px}.details-section-title{color:#1e293b;font-size:18px;font-weight:800;margin:0 0 20px}.info-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(4,minmax(0,1fr))}.info-item{background:#f8fafc;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:16px}.info-label{color:#64748b;font-size:12px;font-weight:700}.info-value{color:#0f172a;font-size:14px;font-weight:700}.summary-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:22px}.summary-card{background:#fff;border-radius:16px;border-top:4px solid #2563eb;box-shadow:0 4px 14px #0f172a0d;display:flex;flex-direction:column;gap:8px;padding:20px}.summary-open{border-top-color:#f59e0b}.summary-progress{border-top-color:#8b5cf6}.summary-completed{border-top-color:#10b981}.summary-label{color:#64748b;font-size:13px;font-weight:700}.summary-value{color:#0f172a;font-size:28px;font-weight:800}.device-monitor-card{background:#fbfdff;border:1px solid #e5e7eb;border-radius:16px;margin-bottom:18px;padding:20px}.device-monitor-card:last-child{margin-bottom:0}.device-monitor-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:18px}.device-monitor-header h3{font-size:18px;margin:0}.device-monitor-header p{color:#64748b;margin:4px 0 0}.device-status-badge{border-radius:999px;font-size:12px;font-weight:800;padding:7px 12px}.device-status-badge.online{background:#dcfce7;color:#15803d}.device-status-badge.offline{background:#fee2e2;color:#b91c1c}.device-stats-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.device-stat{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:6px;padding:14px}.device-stat span{color:#64748b;font-size:11px;font-weight:700}.device-stat strong{color:#0f172a;font-size:15px}.service-history-table{border-collapse:collapse;width:100%}.service-history-table th{background:#f8fafc;color:#475569;font-size:12px;padding:14px;text-align:left;text-transform:uppercase}.service-history-table td{border-bottom:1px solid #e5e7eb;color:#1e293b;font-size:13px;padding:14px}.service-status{background:#e2e8f0;border-radius:999px;color:#475569;display:inline-block;font-size:11px;font-weight:800;padding:6px 10px}.service-status.open{background:#fef3c7;color:#92400e}.service-status.assigned{background:#dbeafe;color:#1d4ed8}.service-status.in-progress{background:#ede9fe;color:#6d28d9}.service-status.completed{background:#dcfce7;color:#15803d}.service-status.rejected{background:#fee2e2;color:#b91c1c}.empty-text{color:#64748b;font-size:14px}.details-state-card{background:#fff;border-radius:16px;padding:24px;text-align:center}.details-state-card.error{color:#b91c1c}@media (max-width:1000px){.device-stats-grid,.info-grid,.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:700px){.customer-details-page{margin-left:0}.customer-details-container{padding:0 16px}.details-topbar{align-items:flex-start;flex-direction:column}.device-stats-grid,.info-grid,.summary-grid{grid-template-columns:1fr}}.assignment-modal-overlay{align-items:center;animation:fade-in .3s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.assignment-modal-content{animation:slide-scale-in .3s ease;background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000026;display:flex;flex-direction:column;max-height:90vh;max-width:480px;overflow-x:hidden;overflow-y:auto;width:90%}@keyframes slide-scale-in{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.assignment-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;justify-content:space-between;padding:24px}.assignment-modal-title{color:#111827;font-size:20px;font-weight:800;letter-spacing:-.5px;margin:0}.assignment-modal-close{align-items:center;background:#f3f4f6;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;font-size:20px;height:36px;justify-content:center;transition:all .2s ease;width:36px}.assignment-modal-close:hover:not(:disabled){background:#fee2e2;color:#dc2626}.assignment-modal-close:disabled{cursor:not-allowed;opacity:.5}.assignment-modal-body{flex:1 1;overflow-x:hidden;overflow-y:auto;padding:24px}.assignment-form{gap:20px}.assignment-form,.form-group{display:flex;flex-direction:column}.form-group{gap:8px;min-width:0}.form-label{color:#374151;font-size:13px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}.form-input,.form-select{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;font-family:inherit;font-size:14px;padding:12px 14px;transition:all .2s ease}.form-input:hover,.form-select:hover{border-color:#d1d5db}.form-input:focus,.form-select:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a;outline:none}.form-input:disabled,.form-select:disabled{background:#f3f4f6;cursor:not-allowed;opacity:.6}.form-hint{color:#9ca3af;font-size:12px;font-weight:500}.customer-info-box{background:#f0f9ff;border:2px solid #bfdbfe;border-radius:10px;color:#1e40af;font-size:14px;font-weight:600;padding:12px 14px}.technician-dropdown-container{min-width:0;position:relative;width:100%}.technician-search-input{background:#fff;border:2px solid #e5e7eb;border-radius:10px;box-sizing:border-box;color:#1f2937;font-size:14px;padding:12px 14px;transition:all .2s ease;width:100%}.technician-search-input:hover{border-color:#d1d5db}.technician-search-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a;outline:none}.technician-dropdown-list{background:#fff;border:2px solid #e5e7eb;border-radius:0 0 10px 10px;border-top:none;box-shadow:0 4px 12px #0000001a;left:0;max-height:240px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:10}.technician-dropdown-item{border-bottom:1px solid #f3f4f6;cursor:pointer;padding:12px 14px;transition:background .2s ease}.technician-dropdown-item:last-child{border-bottom:none}.technician-dropdown-item:hover{background:#f0f9ff}.tech-item-info{align-items:center;display:flex;flex-direction:row;justify-content:space-between;width:100%}.tech-name{color:#1f2937;font-size:14px;font-weight:600}.tech-status-badge{border-radius:6px;display:inline-block;font-size:11px;font-weight:600;padding:4px 8px}.tech-status-badge.status-available{background:#d1fae5;color:#065f46}.tech-status-badge.status-offline{background:#fee2e2;color:#991b1b}.no-technicians{color:#9ca3af;font-size:14px;padding:20px 14px;text-align:center}.selected-tech-display{background:#d1fae5;border-radius:8px;color:#059669;font-size:12px;font-weight:600;margin-top:4px;padding:8px 12px}.clear-tech-button{align-items:center;background:#0000;border:none;border-radius:50%;color:#9ca3af;cursor:pointer;display:flex;font-size:14px;justify-content:center;padding:4px;position:absolute;right:14px;top:50%;transform:translateY(-50%);transition:all .2s ease;z-index:5}.clear-tech-button:hover{background:#f3f4f6;color:#4b5563}.time-slots-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr);margin-bottom:12px}.time-slot-button{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;cursor:pointer;font-size:13px;font-weight:600;padding:12px 16px;position:relative;transition:all .2s ease}.time-slot-button.available{background:#f0fdf4;border-color:#bcf0da;color:#047857}.time-slot-button.available:hover:not(:disabled){background:#d1fae5;border-color:#10b981;box-shadow:0 0 0 3px #10b98126}.time-slot-button.selected{background:linear-gradient(135deg,#10b981,#059669)!important;border-color:#047857!important;box-shadow:0 4px 12px #10b9814d!important;color:#fff!important}.time-slot-button.booked{background:#f3f4f6;border-color:#d1d5db;color:#9ca3af;cursor:not-allowed;opacity:.6}.booked-label{display:block;font-size:10px;margin-top:2px;opacity:.8}.time-slots-legend{background:#f9fafb;border-radius:8px;display:flex;font-size:12px;gap:20px;padding:12px}.legend-item{align-items:center;display:flex;gap:8px}.legend-color{border-radius:4px;height:12px;width:12px}.legend-color.available{background:#f0fdf4;border:1px solid #10b981}.legend-color.booked{background:#f3f4f6;border:1px solid #d1d5db}.assignment-success-message{background:#d1fae5;border:2px solid #6ee7b7;border-radius:10px}.assignment-error-message,.assignment-success-message{align-items:center;animation:slide-in .3s ease;display:flex;gap:12px;margin-bottom:20px;padding:14px 16px}.assignment-error-message{background:#fee2e2;border:2px solid #fca5a5;border-radius:10px}@keyframes slide-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.error-icon,.success-icon{align-items:center;display:flex;flex-shrink:0;font-size:18px;justify-content:center}.assignment-error-message p,.assignment-success-message p{color:inherit;font-size:14px;font-weight:600;margin:0}.assignment-success-message p{color:#065f46}.assignment-error-message p{color:#7f1d1d}.assignment-modal-footer{border-top:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:12px;padding:20px 24px}.btn-assign,.btn-cancel{align-items:center;border:none;border-radius:10px;cursor:pointer;display:flex;flex:1 1;font-size:14px;font-weight:600;gap:8px;justify-content:center;padding:12px 16px;transition:all .2s ease}.btn-cancel{background:#f3f4f6;border:2px solid #e5e7eb;color:#374151}.btn-cancel:hover:not(:disabled){background:#e5e7eb;border-color:#d1d5db}.btn-assign{background:linear-gradient(135deg,#2563eb,#1e40af);color:#fff}.btn-assign:hover:not(:disabled){box-shadow:0 8px 16px #2563eb4d;transform:translateY(-2px)}.btn-assign:disabled,.btn-cancel:disabled{cursor:not-allowed;opacity:.5}.spinner{animation:spin .6s linear infinite;border:2px solid #fff;border-radius:50%;border-top-color:#0000;display:inline-block;height:14px;width:14px}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:768px){.assignment-modal-content{border-radius:14px;max-height:95vh;max-width:95%}.assignment-modal-body,.assignment-modal-header{padding:20px}.assignment-modal-footer{gap:10px;padding:16px 20px}.time-slots-grid{grid-template-columns:repeat(2,1fr)}.time-slots-legend{flex-direction:column;gap:8px}}@media (max-width:480px){.assignment-modal-content{border-radius:12px 12px 0 0;bottom:0;left:0;max-height:85vh;max-width:100%;position:fixed;right:0}.assignment-modal-overlay{align-items:flex-end}.assignment-modal-header{padding:18px}.assignment-modal-title{font-size:18px}.assignment-modal-body{padding:18px}.assignment-modal-footer{flex-direction:column;padding:14px 18px}.btn-assign,.btn-cancel{width:100%}.time-slots-grid{grid-template-columns:1fr}.time-slot-button{padding:14px 12px}.time-slots-legend{flex-direction:column;gap:8px}.technician-dropdown-list{max-height:200px}}.service-requests-page{background:linear-gradient(135deg,#f8fafc,#f1f5f9);box-sizing:border-box;margin-left:var(--sidebar-width);min-height:100vh;padding:90px 30px 32px;transition:margin-left .3s ease}.service-requests-container{margin:0 auto;max-width:1400px}.service-page-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0d;display:flex;gap:20px;justify-content:space-between;margin-bottom:20px;padding:22px 24px}.service-page-header h1{color:#0f172a;font-size:24px;font-weight:800;margin:0}.service-page-header p{color:#64748b;font-size:13px;margin:5px 0 0}.service-refresh-button{background:#eff6ff;border:none;border-radius:10px;color:#2563eb;cursor:pointer;font-size:13px;font-weight:700;padding:10px 16px;transition:background .2s ease,transform .2s ease}.service-refresh-button:hover{background:#dbeafe;transform:translateY(-1px)}.service-summary-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:20px}.service-summary-card{background:#fff;border:1px solid #e5e7eb;border-radius:15px;border-top:4px solid #2563eb;box-shadow:0 4px 14px #0f172a0d;display:flex;flex-direction:column;gap:8px;padding:18px 20px}.service-summary-label{color:#64748b;font-size:12px;font-weight:700}.service-summary-card strong{color:#0f172a;font-size:27px;font-weight:800}.service-summary-open{border-top-color:#f59e0b}.service-summary-assigned{border-top-color:#3b82f6}.service-summary-progress{border-top-color:#8b5cf6}.service-summary-completed{border-top-color:#10b981}.service-controls{align-items:flex-end;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0a;display:flex;gap:20px;justify-content:space-between;margin-bottom:20px;padding:18px 20px}.service-search-wrapper{flex:1 1}.service-search-input{background:#fff;border:2px solid #e5e7eb;border-radius:10px;box-sizing:border-box;color:#1f2937;font-size:14px;max-width:600px;outline:none;padding:12px 15px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.service-search-input:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a}.service-search-input::placeholder{color:#9ca3af}.service-filter-wrapper{display:flex;flex-direction:column;gap:7px}.service-filter-wrapper label{color:#64748b;font-size:11px;font-weight:800;text-transform:uppercase}.service-status-filter{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;cursor:pointer;font-size:13px;font-weight:600;min-width:170px;outline:none;padding:11px 13px}.service-status-filter:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a}.service-table-wrapper{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0d;overflow-x:auto;padding:20px}.service-requests-table{border-collapse:collapse;font-size:13px;width:100%}.service-requests-table thead{background:#f8fafc;border-bottom:2px solid #e5e7eb}.service-requests-table th{color:#475569;font-size:11px;font-weight:800;letter-spacing:.3px;padding:14px 12px;text-align:center;text-transform:uppercase;white-space:nowrap}.service-requests-table td{border-bottom:1px solid #e5e7eb;color:#1e293b;padding:15px 12px;text-align:center;vertical-align:middle}.service-requests-table tbody tr{transition:background .2s ease}.service-requests-table tbody tr:hover{background:#f8fafc}.service-requests-table tbody tr:last-child td{border-bottom:none}.service-table-state{color:#64748b;font-size:14px;padding:42px;text-align:center}.ticket-number{background:#eff6ff;border-radius:7px;color:#1d4ed8;display:inline-block;font-family:monospace;font-size:12px;font-weight:800;padding:6px 10px}.assigned-technician,.table-customer-info,.table-device-info{align-items:center;display:flex;flex-direction:column;gap:3px}.assigned-technician strong,.table-customer-info strong,.table-device-info strong{color:#1e293b;font-size:13px}.assigned-technician span,.table-customer-info span,.table-device-info span{color:#94a3b8;font-size:11px}.not-assigned{color:#94a3b8;font-size:12px;font-weight:600}.request-date{color:#64748b;font-size:11px;white-space:nowrap}.request-status-badge{align-items:center;background:#e2e8f0;border-radius:999px;color:#475569;display:inline-flex;font-size:10px;font-weight:800;justify-content:center;padding:6px 10px;white-space:nowrap}.request-status-badge.large{font-size:12px;padding:8px 14px}.request-status-badge.open{background:#fef3c7;color:#92400e}.request-status-badge.assigned{background:#dbeafe;color:#1d4ed8}.request-status-badge.in-progress{background:#ede9fe;color:#6d28d9}.request-status-badge.completed{background:#dcfce7;color:#15803d}.request-status-badge.closed{background:#e2e8f0;color:#475569}.request-status-badge.rejected{background:#fee2e2;color:#b91c1c}.service-actions{display:flex;gap:7px;justify-content:center}.service-assign-button,.service-view-button{border:none;border-radius:8px;cursor:pointer;font-size:11px;font-weight:700;padding:7px 11px;transition:transform .2s ease,box-shadow .2s ease}.service-view-button{background:#f1f5f9;border:1px solid #cbd5e1;color:#334155}.service-view-button:hover{background:#e2e8f0;transform:translateY(-1px)}.service-assign-button{background:#dbeafe;border:1px solid #93c5fd;color:#1d4ed8}.service-assign-button:hover{background:#bfdbfe;box-shadow:0 4px 10px #2563eb24;transform:translateY(-1px)}.service-details-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a7a;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1900}.service-details-modal{animation:serviceDetailsIn .25s ease;background:#fff;border-radius:18px;box-shadow:0 25px 75px #0f172a40;max-height:92vh;max-width:850px;overflow-y:auto;width:100%}@keyframes serviceDetailsIn{0%{opacity:0;transform:translateY(-15px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.service-details-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:22px 26px;position:sticky;top:0;z-index:2}.service-details-header h2{color:#0f172a;font-size:21px;font-weight:800;margin:0}.service-details-header p{color:#2563eb;font-size:12px;font-weight:800;margin:4px 0 0}.service-details-close{background:#fff;border:1px solid #e5e7eb;border-radius:9px;color:#94a3b8;cursor:pointer;font-size:19px;height:38px;width:38px}.service-details-close:hover{background:#fee2e2;border-color:#fecaca;color:#dc2626}.service-details-body{padding:26px}.details-status-row{align-items:center;display:flex;gap:14px;justify-content:space-between;margin-bottom:22px}.details-assign-button{background:#2563eb;border:none;border-radius:9px;color:#fff;cursor:pointer;font-size:12px;font-weight:700;padding:9px 14px}.service-details-section{border-bottom:1px solid #e5e7eb;margin-bottom:25px;padding-bottom:25px}.service-details-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.service-details-section h3{color:#334155;font-size:14px;font-weight:800;letter-spacing:.3px;margin:0 0 15px;text-transform:uppercase}.details-info-grid{grid-gap:13px;display:grid;gap:13px;grid-template-columns:repeat(3,minmax(0,1fr))}.details-info-item{background:#f8fafc;border:1px solid #e5e7eb;border-radius:11px;display:flex;flex-direction:column;gap:5px;padding:13px}.details-info-item span{color:#64748b;font-size:10px;font-weight:700;text-transform:uppercase}.details-info-item strong{color:#0f172a;font-size:13px;word-break:break-word}.service-proof-image{background:#f8fafc;border:1px solid #e5e7eb;border-radius:13px;display:block;height:220px;max-width:350px;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:100%}.service-proof-image:hover{box-shadow:0 8px 20px #0f172a1a;transform:scale(1.01)}.completion-images-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.completion-image-item{display:flex;flex-direction:column;gap:9px}.completion-image-item>span{color:#64748b;font-size:11px;font-weight:700}.resolution-box{background:#f8fafc;border:1px solid #e5e7eb;border-radius:11px;color:#334155;font-size:13px;line-height:1.6;min-height:50px;padding:15px}.service-no-data{color:#94a3b8;font-size:13px}.gps-coordinates-card{align-items:center;background:linear-gradient(135deg,#eff6ff,#f8fafc);border:1px solid #bfdbfe;border-radius:14px;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;padding:16px 18px}.gps-coordinates-values{align-items:center;display:flex;gap:18px}.gps-coordinate-item{display:flex;flex-direction:column;gap:4px}.gps-coordinate-item span{color:#64748b;font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}.gps-coordinate-item strong{color:#1e3a8a;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:15px;font-weight:700}.gps-coordinate-divider{align-self:stretch;background:#bfdbfe;width:1px}.gps-map-button{align-items:center;background:linear-gradient(135deg,#2563eb,#1e40af);border-radius:10px;box-shadow:0 4px 10px #2563eb40;color:#fff;display:inline-flex;font-size:13px;font-weight:700;gap:8px;padding:11px 20px;text-decoration:none;transition:all .2s ease;white-space:nowrap}.gps-map-button:hover{box-shadow:0 8px 16px #2563eb4d;transform:translateY(-2px)}.gps-map-button-icon{font-size:15px;line-height:1}@media (max-width:1150px){.service-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:480px){.gps-coordinates-card{align-items:stretch;flex-direction:column}.gps-map-button{justify-content:center}}@media (max-width:850px){.service-requests-page{margin-left:0}.service-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.service-controls{align-items:stretch;flex-direction:column}.service-search-input{max-width:none}.service-status-filter{width:100%}.details-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.service-requests-page{padding:84px 14px 20px}.service-page-header{align-items:flex-start;flex-direction:column;padding:18px}.service-refresh-button{width:100%}.service-summary-grid{gap:10px;grid-template-columns:1fr 1fr}.service-summary-card{padding:15px}.service-summary-card strong{font-size:23px}.service-controls{padding:14px}.service-table-wrapper{padding:10px}.service-details-overlay{align-items:flex-end;padding:8px}.service-details-modal{border-radius:16px 16px 0 0;max-height:92vh}.service-details-body,.service-details-header{padding:18px}.completion-images-grid,.details-info-grid{grid-template-columns:1fr}.service-proof-image{height:200px;max-width:none}.details-status-row{align-items:flex-start;flex-direction:column}.details-assign-button{width:100%}}.products-page{background:linear-gradient(135deg,#f8fafc,#f1f5f9);box-sizing:border-box;margin-left:var(--sidebar-width);min-height:100vh;padding:90px 30px 30px;transition:margin-left .3s ease}.products-container{margin:0 auto;max-width:1400px}.products-page-header{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0d;display:flex;justify-content:space-between;margin-bottom:20px;padding:22px 24px}.products-page-header h1{color:#0f172a;font-size:24px;font-weight:800;margin:0}.products-page-header p{color:#64748b;font-size:13px;margin:5px 0 0}.btn-add-product{background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:14px;font-weight:700;padding:11px 18px;transition:transform .2s ease,box-shadow .2s ease}.btn-add-product:hover{box-shadow:0 7px 20px #2563eb47;transform:translateY(-2px)}.products-controls{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0a;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px;padding:18px 20px}.product-search{border:2px solid #e5e7eb;border-radius:10px;box-sizing:border-box;color:#1f2937;font-size:14px;max-width:520px;outline:none;padding:12px 15px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.product-search:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1a}.product-count{color:#64748b;font-size:13px;font-weight:600;white-space:nowrap}.product-state{background:#fff;border:1px solid #e5e7eb;border-radius:16px;color:#64748b;font-size:14px;padding:50px 20px;text-align:center}.products-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.product-card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 14px #0f172a0d;display:flex;flex-direction:column;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.product-card:hover{box-shadow:0 10px 26px #0f172a1a;transform:translateY(-3px)}.product-image-wrap{align-items:center;aspect-ratio:4/3;background:#f1f5f9;display:flex;justify-content:center;overflow:hidden}.product-image-wrap img{height:100%;object-fit:contain;width:100%}.product-card-body{flex:1 1;padding:14px 16px 6px}.product-card-body h3{color:#0f172a;font-size:15px;font-weight:700;margin:0 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-price{color:#1d4ed8;font-size:18px;font-weight:800;margin-bottom:6px}.product-link{color:#2563eb;font-size:12.5px;font-weight:600;text-decoration:none}.product-link:hover{text-decoration:underline}.product-card-actions{display:flex;gap:8px;padding:12px 16px 16px}.btn-product-delete,.btn-product-edit{border:none;border-radius:8px;cursor:pointer;flex:1 1;font-size:13px;font-weight:700;padding:9px 12px}.btn-product-edit{background:#eff6ff;color:#1d4ed8}.btn-product-edit:hover{background:#dbeafe}.btn-product-delete{background:#fef2f2;color:#dc2626}.btn-product-delete:hover{background:#fee2e2}.product-modal-overlay{align-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a73;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:2000}.product-modal{background:#fff;border-radius:18px;box-shadow:0 25px 70px #0f172a38;max-height:90vh;max-width:560px;overflow-y:auto;width:100%}.product-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px 28px}.product-modal-header h2{color:#0f172a;font-size:20px;font-weight:800;margin:0}.product-modal-header p{color:#64748b;font-size:13px;margin:4px 0 0}.product-modal-close{background:#f1f5f9;border:none;border-radius:10px;color:#475569;cursor:pointer;font-size:22px;height:36px;line-height:1;width:36px}.product-modal-body{display:flex;flex-direction:column;gap:16px;padding:24px 28px}.product-form-group{display:flex;flex-direction:column;gap:6px}.product-form-group>label{color:#334155;font-size:13px;font-weight:700}.product-form-group input[type=number],.product-form-group input[type=text],.product-form-group input[type=url]{border:2px solid #e5e7eb;border-radius:10px;box-sizing:border-box;font-size:14px;outline:none;padding:11px 14px}.product-form-group input:focus{border-color:#2563eb}.product-form-group small{color:#64748b;font-size:12px}.product-image-picker{align-items:center;background:#f8fafc;border:2px dashed #cbd5e1;border-radius:12px;color:#64748b;cursor:pointer;display:flex;font-size:13px;height:180px;justify-content:center;overflow:hidden;padding:8px;text-align:center}.product-image-picker:hover{border-color:#2563eb}.product-image-picker img{max-height:100%;max-width:100%;object-fit:contain}.product-modal-footer{border-top:1px solid #e5e7eb;display:flex;gap:10px;justify-content:flex-end;padding:18px 28px}.btn-product-cancel,.btn-product-save{border:none;border-radius:10px;cursor:pointer;font-size:14px;font-weight:700;padding:11px 18px}.btn-product-cancel{background:#f1f5f9;color:#334155}.btn-product-save{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff}.btn-product-cancel:disabled,.btn-product-save:disabled{cursor:not-allowed;opacity:.6}@media (max-width:900px){.products-page-header{align-items:flex-start;flex-direction:column;gap:16px}.btn-add-product{width:100%}}@media (max-width:768px){.products-page{margin-left:0;padding:90px 20px 24px}}@media (max-width:520px){.products-page{padding:84px 14px 20px}.products-controls{align-items:stretch;flex-direction:column;padding:14px}.products-grid{gap:12px;grid-template-columns:repeat(2,1fr)}.product-modal-overlay{padding:10px}.product-modal-body,.product-modal-header{padding:18px}.product-modal-footer{padding:14px 18px}}
/*# sourceMappingURL=main.d6da5e89.css.map*/