:root{font-family:"Segoe UI",Arial,sans-serif;color:#263445;background:#edf0f4;font-size:14px;font-synthesis:none;--accent:#285d91;--border:#d6dde5;--muted:#657589}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{outline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #82abd1}button{cursor:pointer}a{color:var(--accent)}[hidden]{display:none!important}.intro{display:none}main{min-height:100vh;min-height:100svh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#e5ebf2,#f5f6f8)}.panel{width:100%;max-width:400px;padding:32px;background:#fff;border:1px solid var(--border);border-top:4px solid var(--accent);border-radius:5px;box-shadow:0 8px 30px #1c324012}.recycling{width:52px;height:52px;display:grid;place-items:center;background:#edf2f8;color:var(--accent);font-size:36px;border-radius:5px;margin:0 auto 18px}h2{font-size:21px;text-align:center;margin:0 0 28px;line-height:1.4}label{display:block;font-size:12px;font-weight:600;margin:15px 0 6px}input:not([type=checkbox]){width:100%;height:36px;padding:7px 10px;border:1px solid #bfc9d4;background:#fff;border-radius:3px;color:#263445}input[type=checkbox]{accent-color:var(--accent)}.password-row{position:relative}.password-row input{padding-right:94px}.password-row button{position:absolute;right:3px;top:3px;height:30px;border:0;background:transparent;color:var(--accent);font-size:12px}.remember{display:flex;align-items:center;gap:8px;font-weight:400;margin:18px 0}.remember input{width:16px;height:16px}.submit{width:100%;height:38px;background:var(--accent);color:white;border:1px solid #204e7b;border-radius:3px;font-weight:600}.submit:hover{background:#204e7b}.submit:disabled{opacity:.6;cursor:wait}#message:empty{display:none}#message{font-size:12px;line-height:1.6;color:#a62e2e;background:#fff0ef;padding:10px;border-left:3px solid #bd4848}
.workspace{min-height:100vh;display:grid;grid-template-columns:224px minmax(0,1fr)}.workspace a{text-decoration:none}.sidebar{background:#253345;color:#d7e0eb;display:flex;flex-direction:column;min-height:100vh;padding:24px 12px}.app-brand{display:flex;align-items:center;gap:9px;color:white;font-size:15px;font-weight:650;padding:0 8px 24px;border-bottom:1px solid #435062}.app-brand>span:first-child{font-size:28px;color:#b6cce1}.app-brand small{display:block;font-size:10px;font-weight:400;color:#aebdce;margin-top:5px}.nav-label{color:#a1b0c3;font-size:10px;letter-spacing:1.2px;margin:24px 12px 12px}.sidebar nav{display:grid;gap:3px}.sidebar nav a{color:#d1dae6;padding:11px 12px;font-size:13px;border-radius:3px;border-left:3px solid transparent}.sidebar nav a:hover{background:#314258}.sidebar nav a[aria-current=page]{background:#354d69;border-left-color:#8bb8e0;color:white;font-weight:600}.sidebar-bottom{margin-top:auto;padding:24px 10px 0;overflow-wrap:anywhere;font-size:12px}#logout{width:100%;text-align:left;background:transparent;border:1px solid #657386;color:#e2e8f0;padding:9px;border-radius:3px;font-size:12px}.workspace-body{min-width:0}.topbar{height:54px;background:#fff;border-bottom:1px solid var(--border);padding:0 28px;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted)}.web-badge{font-size:10px;letter-spacing:1px;background:#edf2f8;padding:6px 9px;color:#526b84}.workspace-content{padding:26px 28px;max-width:1500px;margin:0 auto}.eyebrow{font-size:10px;letter-spacing:1.3px;color:#657b91;font-weight:650}.workspace h1{font-size:25px;font-weight:600;margin:8px 0;letter-spacing:-.4px}.page-description{font-size:13px;color:var(--muted);margin:0 0 24px;line-height:1.6}.map-banner{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:4px;padding:20px 24px;color:#263445}.map-banner h3{font-size:19px;font-weight:600;margin:9px 0}.map-banner p{font-size:13px;color:var(--muted)}.banner-link{font-size:12px;font-weight:600;color:var(--accent)}.map-symbol{font-size:75px;color:#8da7c0;padding:0 24px}.section-heading{font-size:14px;font-weight:650;margin:24px 0 12px}.menu-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.menu-card{position:relative;display:block;padding:18px;border:1px solid var(--border);border-radius:4px;background:white;color:#263445}.menu-card:hover{border-color:#7397b9;background:#fafcfe}.card-icon{width:32px;height:32px;display:grid;place-items:center;background:#ecf1f7;border-radius:3px;color:var(--accent);font-size:21px}.menu-card h3{font-size:14px;margin:13px 0 7px}.menu-card p{font-size:12px;color:var(--muted);line-height:1.6;margin:0}.card-arrow{position:absolute;right:16px;top:18px;color:#7c92a8}.development-note,.editor-note{font-size:12px;color:var(--muted);line-height:1.6}.development-note{margin-top:20px}.module-empty{background:#fff;border:1px solid var(--border);padding:28px;border-radius:4px}.module-empty h3{font-size:17px}.module-empty p{font-size:13px;color:var(--muted)}.module-empty a{display:inline-block;margin-top:18px;font-size:13px}
.draft-notice{padding:10px 14px;background:#fff9eb;border:1px solid #e8dcba;border-radius:3px;font-size:12px;color:#76622f;line-height:1.6;margin:0 0 18px}.customers-layout{display:block}.customer-profile{background:#fff;border:1px solid var(--border);border-radius:4px;padding:22px;min-width:0}.profile-heading,.profile-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.profile-heading{border-bottom:1px solid var(--border);padding-bottom:12px}.profile-heading h3{font-size:20px;font-weight:600;margin:6px 0}.profile-heading .eyebrow{margin:0}#customer-status{font-size:11px;background:#eef4ef;color:#3e6b4b;border:1px solid #d5e3d8;border-radius:3px;padding:4px 9px}.customer-profile button,.editor-actions button{border:1px solid #bfcbd7;background:#f5f7fa;color:var(--accent);border-radius:3px;padding:7px 11px;font-size:12px}.customer-profile button:hover,.editor-actions button:hover{background:#e9eff6}#profile-summary{padding:4px 0 18px;border-bottom:1px solid var(--border)}.customer-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:18px 0}.customer-facts dt{font-size:11px;color:var(--muted);margin-bottom:5px}.customer-facts dd{margin:0;font-size:13px;overflow-wrap:anywhere}.profile-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.customer-profile .profile-tile{display:grid;grid-template-columns:32px minmax(0,1fr);align-content:start;align-items:center;text-align:left;gap:7px 12px;padding:15px;background:#fff;min-height:112px;border:1px solid var(--border)}.profile-tile .card-icon{grid-row:1/4}.profile-tile strong{font-size:13px;color:#304154}.profile-tile .tile-description{font-size:11px;color:var(--muted);line-height:1.5}.profile-tile small{font-size:10px;color:#657b91}.customer-profile .profile-tile[aria-expanded=true]{border-color:var(--accent);background:#edf3f9;box-shadow:inset 0 2px var(--accent)}#customer-tab-panel{border:1px solid var(--border);border-radius:3px;padding:18px;margin-top:18px;background:#fafbfc}.profile-toolbar{margin-top:12px;border-bottom:1px solid var(--border);padding-bottom:10px}.profile-toolbar h3{font-size:14px;margin:0}.relation-empty{font-size:12px;color:var(--muted);padding:20px 0}.customer-table-wrap{overflow:auto;margin-top:16px}.customer-table-wrap table{width:100%;border-collapse:collapse;font-size:12px;background:#fff}.customer-table-wrap th,.customer-table-wrap td{border:1px solid #dae1e9;text-align:left;padding:8px 10px;white-space:nowrap}.customer-table-wrap th{font-size:11px;color:#4e6279;background:#e9eef4;font-weight:600}.customer-table-wrap tbody tr:nth-child(even){background:#f6f8fb}.customer-table-wrap tbody tr:hover{background:#edf3f9}#customer-empty{padding:28px 10px;line-height:1.7}#customer-empty h3{font-size:18px;font-weight:600}#customer-empty p{font-size:13px;color:var(--muted);max-width:620px}#customer-feedback{font-size:12px;color:#416a51}#customer-dialog{width:min(620px,calc(100% - 24px));max-height:85vh;border:1px solid #bdc9d7;border-top:4px solid var(--accent);border-radius:4px;padding:24px;color:#263445;box-shadow:0 15px 60px #14273d40}#customer-dialog::backdrop{background:#1d2c3e80}#customer-editor{width:100%}#customer-editor h3{margin:0;font-size:18px;font-weight:600}.customer-fields{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.customer-fields input[type=checkbox]{width:17px;height:17px}.editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:14px;border-top:1px solid var(--border)}.editor-actions button[type=submit]{background:var(--accent);color:#fff;border-color:var(--accent)}
@media(min-width:1000px){.sidebar{position:sticky;top:0;height:100vh;min-height:0;overflow:auto}}@media(max-width:1100px){.menu-grid,.profile-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.customer-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.workspace{grid-template-columns:180px minmax(0,1fr)}.sidebar{padding:20px 8px}.app-brand{font-size:12px;padding:0 4px 18px;gap:5px}.app-brand>span:first-child{font-size:23px}.sidebar nav a{font-size:12px;padding:10px 8px}.workspace-content{padding:20px 16px}.topbar{padding:0 16px}.web-badge{display:none}.menu-grid,.profile-tiles{grid-template-columns:1fr}.customer-profile{padding:16px}.map-symbol{display:none}.map-banner{padding:17px}}
@media(max-width:520px){.workspace{grid-template-columns:1fr}.sidebar{min-height:auto;padding:14px}.app-brand{font-size:15px;border:0;padding-bottom:8px}.nav-label{display:none}.sidebar nav{display:flex;overflow:auto;gap:4px}.sidebar nav a{white-space:nowrap;border-left:0;border-bottom:3px solid transparent}.sidebar nav a[aria-current=page]{border-left:0;border-bottom-color:#8bb8e0}.sidebar-bottom{padding:12px 0 0;display:flex;align-items:center;justify-content:space-between;gap:10px}.sidebar-bottom p{margin:0}#logout{width:auto}.customer-facts,.customer-fields{grid-template-columns:1fr}.profile-heading{align-items:flex-start}.profile-toolbar{flex-wrap:wrap}.workspace h1{font-size:23px}.panel{padding:25px}.customer-profile .profile-tile{min-height:96px}}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.device-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px;background:#fff;border:1px solid #d6dde5;border-radius:4px}.device-toolbar button,.device-toolbar select{padding:8px 12px;border:1px solid #bfc9d4;border-radius:3px;background:#fff;color:#285d91;font:inherit;font-size:12px}.device-toolbar input[type=search]{flex:1;min-width:180px;width:auto}.device-toolbar label{display:flex;align-items:center;gap:5px;margin:0;font-size:12px}.view-switch{display:flex;gap:3px}.view-switch button[aria-pressed=true]{background:#285d91;color:white}.device-toolbar button:disabled{opacity:.5}#device-map{height:calc(100vh - 200px);min-height:400px;border:1px solid #d6dde5;border-radius:4px;z-index:0}#device-status{font-size:12px;color:#657589;line-height:1.6}#device-list{background:#fff;margin-top:0}#device-list details p{white-space:normal}#device-list details{max-width:330px}.leaflet-popup-content p{margin:7px 0}@media(max-width:520px){#device-map{height:60vh;min-height:350px}.device-toolbar input[type=search]{flex-basis:100%}}
/* Map uses all space below the header; controls remain above the map. */
.map-layout .workspace-body{height:100vh;height:100dvh;display:flex;flex-direction:column;min-height:0}.map-layout .topbar{flex:0 0 54px}.map-layout .workspace-content{flex:1;min-height:0;width:100%;max-width:none;margin:0;padding:10px;display:flex;flex-direction:column}.map-layout #map-content{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}.map-layout #device-map{flex:1;height:auto;min-height:180px;width:100%}.map-layout #device-list{flex:1;min-height:0;overflow:auto}.map-layout #device-status{margin:0;padding:0 4px;flex-shrink:0}.map-layout .device-toolbar{flex-shrink:0}.sensor-filters{background:#fff;border:1px solid #d6dde5;border-radius:3px;padding:9px 12px;flex-shrink:0;max-height:34vh;overflow:auto}.sensor-filters summary{font-size:12px;font-weight:600;color:#365775;cursor:pointer}.sensor-filter-row{display:grid;grid-template-columns:repeat(9,minmax(64px,1fr));gap:10px;margin-top:10px}.sensor-filter-row label{margin:0;font-size:11px}.sensor-filter-row select{display:block;width:100%;margin-top:5px;padding:5px;border:1px solid #bfc9d4;border-radius:3px;background:#fff;color:#263445;font:inherit}.sensor-filter-row label:has(select option[value=on]:checked),.sensor-filter-row label:has(select option[value=off]:checked){color:#285d91;font-weight:700}.sensor-filter-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;font-size:11px;color:#657589}.sensor-filter-footer button{background:#f5f7fa;border:1px solid #bfc9d4;border-radius:3px;color:#285d91;padding:6px 10px;font-size:11px}#sensor-filter-count{font-weight:400}@media(max-width:950px){.sensor-filter-row{grid-template-columns:repeat(5,minmax(50px,1fr))}}@media(max-width:520px){.map-layout{height:100vh;height:100dvh;grid-template-rows:auto minmax(0,1fr)}.map-layout .workspace-body{height:auto;min-height:0}.map-layout .workspace-content{padding:6px}.sensor-filter-row{grid-template-columns:repeat(3,minmax(50px,1fr))}.sensor-filter-footer{align-items:flex-start;flex-direction:column}.map-layout .sidebar-bottom{padding-top:6px}.map-layout #device-map{min-height:140px}}
#device-detail-dialog{width:min(780px,calc(100% - 24px));max-height:90vh;overflow:auto;border:1px solid #bfccd8;border-radius:7px;padding:22px;color:#263445;box-shadow:0 18px 70px #14273d55}#device-detail-dialog::backdrop{background:#16283b80}.detail-header{display:flex;align-items:flex-start;gap:12px;border-bottom:1px solid #d6dde5;padding-bottom:18px;margin-bottom:16px}.detail-header>div{flex:1;min-width:0}.detail-header h2{text-align:left;font-size:21px;margin:0;overflow-wrap:anywhere}.detail-header p{margin:7px 0;font-size:14px;color:#657589}.detail-header button,#device-detail-dialog button{padding:8px 10px;border:1px solid #c0ccd8;border-radius:3px;background:#f3f6fa;color:#285d91}.detail-poi{background:#fff9e9;border:1px solid #e8d99d;border-radius:6px;padding:14px}.detail-poi h3{font-size:14px;margin:0 0 10px}.detail-info-row{display:grid;grid-template-columns:145px minmax(0,1fr);gap:12px;padding:8px 0;border-bottom:1px solid #dce3e755;font-size:12px}.detail-info-row>span{color:#657589}.detail-info-row strong{font-weight:500;overflow-wrap:anywhere}.detail-fill{padding:15px 0;display:flex;align-items:center;gap:14px;font-size:13px}.detail-fill progress{flex:1;accent-color:#285d91}#device-detail-dialog>details{margin-top:12px;border:1px solid #d6dde5;border-radius:5px;padding:12px}#device-detail-dialog summary{font-weight:600;font-size:14px;cursor:pointer}.detail-sensor{display:grid;grid-template-columns:30px minmax(80px,1fr) 55px minmax(110px,1fr);gap:8px;align-items:center;padding:11px 0;border-bottom:1px solid #e1e7ed;font-size:12px}.detail-sensor strong{font-size:11px;color:#7b8794}.detail-sensor .sensor-active{color:#208155}.detail-sensor>div{text-align:right}.detail-sensor small{display:block;color:#718194;margin-top:4px}@media(max-width:520px){.detail-header{flex-wrap:wrap}.detail-header>div{flex-basis:100%}.detail-sensor{grid-template-columns:24px minmax(80px,1fr) 50px}.detail-sensor>div{grid-column:2/4;text-align:left}.detail-info-row{grid-template-columns:110px minmax(0,1fr)}}
.device-icon{display:inline-block;width:24px;height:24px;flex-shrink:0;vertical-align:middle}.detail-header>.device-icon{width:42px;height:42px;margin-top:4px}.device-status-badge{display:inline-block;font-size:11px;font-weight:700;border:1px solid currentColor;padding:3px 8px;border-radius:4px;background:#f7faf8}.detail-poi h3{display:flex;align-items:center;gap:7px;color:#8b6e16}#device-detail-dialog summary .device-icon{margin-right:7px;color:#526c85}.detail-sensor{grid-template-columns:26px 30px minmax(80px,1fr) 55px minmax(110px,1fr);border:1px solid #e1e7ed;border-left:3px solid var(--sensor-color);border-radius:5px;padding:10px;margin-top:7px;background:#f7f8fa}.detail-sensor>.device-icon{color:var(--sensor-color)}.detail-sensor.is-active{background:color-mix(in srgb,var(--sensor-color) 9%,white);border-color:color-mix(in srgb,var(--sensor-color) 30%,white);border-left-color:var(--sensor-color)}.detail-sensor strong{padding:3px 5px;border-radius:3px;background:#fff9;border:1px solid currentColor;text-align:center}.detail-fill{font-weight:600}@media(max-width:520px){.detail-sensor{grid-template-columns:24px 25px minmax(80px,1fr) 52px;gap:6px}.detail-sensor>div{grid-column:3/5;text-align:left}.detail-header>.device-icon{width:32px;height:32px}.detail-header>div{flex-basis:calc(100% - 50px)}}
@font-face{font-family:FlutterMaterialIcons;src:url('/assets/MaterialIcons-Regular.otf') format('opentype');font-weight:normal;font-style:normal;font-display:block}.flutter-marker-container{background:transparent;border:0}.flutter-marker{position:relative;display:flex;align-items:center;justify-content:center;width:42px;height:42px;margin:3px;background:white;border:3px solid currentColor;border-radius:50%;box-shadow:0 2px 4px #0004}.flutter-material-icon{font-family:FlutterMaterialIcons!important;font-weight:normal;font-style:normal;font-size:25px;line-height:1;display:block;font-feature-settings:'liga';-webkit-font-smoothing:antialiased}.marker-group-count{position:absolute;right:-8px;top:-8px;display:grid;place-items:center;min-width:21px;height:21px;padding:0 4px;border:2px solid white;border-radius:50%;background:#20242a;color:white;font:700 10px 'Segoe UI',sans-serif}.marker-tooltip-entry{font-size:12px;line-height:1.6;padding:3px 0}.marker-tooltip-entry+ .marker-tooltip-entry{border-top:1px solid #d6dde5;margin-top:4px}.marker-tooltip-entry>div:last-child{color:#786024;background:#fff8e1;padding:2px 5px;margin-top:3px}
/* Compact device markers */
.flutter-marker{width:30px;height:30px;margin:2px;border-width:2px;box-shadow:0 1px 3px #0004}.flutter-marker .flutter-material-icon{font-size:19px}.marker-group-count{right:-6px;top:-6px;min-width:17px;height:17px;border-width:1px;font-size:9px}
.sensor-filter-row{grid-template-columns:repeat(auto-fit,minmax(135px,1fr))}.sensor-criterion{display:grid!important;grid-template-columns:24px minmax(0,1fr);gap:5px 8px;align-items:center;padding:9px;background:#f7f9fb;border:1px solid #dce3eb;border-radius:4px}.sensor-criterion>.device-icon{color:var(--criterion-color)}.sensor-criterion-title{line-height:1.4;overflow-wrap:anywhere;font-size:11px}.sensor-criterion select{grid-column:1/3}.sensor-criterion[data-state=on]{border-color:var(--criterion-color);background:color-mix(in srgb,var(--criterion-color) 9%,white)}.sensor-criterion[data-state=off]{border-color:#8a97a5}.sensor-filters{max-height:42vh}@media(max-width:520px){.sensor-filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Icon-only criteria, with accessible labels retained. */
.sensor-criterion-title{display:none}.sensor-filter-row{grid-template-columns:repeat(9,minmax(65px,1fr))}.sensor-criterion{grid-template-columns:1fr;justify-items:center;gap:6px;padding:8px}.sensor-criterion>.device-icon{width:26px;height:26px}.sensor-criterion select{grid-column:auto;margin-top:0}.sensor-criterion:focus-within{outline:2px solid #82abd1;outline-offset:2px}
/* Compact device card */
#device-detail-dialog{width:min(540px,calc(100% - 20px));max-height:84vh;padding:15px}.detail-header{gap:9px;margin-bottom:10px;padding-bottom:11px}.detail-header h2{font-size:17px}.detail-header p{font-size:12px;margin:4px 0}.detail-header>.device-icon{width:32px;height:32px}#device-detail-dialog button{padding:6px 8px;font-size:11px}.detail-poi{padding:10px}.detail-poi h3{font-size:12px;margin-bottom:5px}.detail-info-row{grid-template-columns:115px minmax(0,1fr);padding:5px 0;font-size:11px}.detail-fill{padding:10px 0;font-size:12px}#device-detail-dialog>details{margin-top:8px;padding:9px}#device-detail-dialog summary{font-size:12px}.detail-sensor{grid-template-columns:22px 22px minmax(65px,1fr) 48px minmax(94px,1fr);gap:5px;padding:7px;font-size:10px;margin-top:5px}.detail-sensor>.device-icon{width:21px;height:21px}.detail-sensor strong{font-size:9px;padding:3px}.detail-sensor small{font-size:9px}.detail-device-choices{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.detail-device-choices button[aria-pressed=true]{background:#285d91!important;color:white!important}@media(max-width:950px){.sensor-filter-row{grid-template-columns:repeat(5,minmax(55px,1fr))}}@media(max-width:520px){.sensor-filter-row{grid-template-columns:repeat(3,minmax(50px,1fr))}.detail-sensor{grid-template-columns:22px 22px minmax(75px,1fr) 48px}.detail-sensor>div{grid-column:3/5}.detail-header>div{flex-basis:calc(100% - 50px)}}
.list-fill-bar{position:relative;width:140px;height:25px;overflow:hidden;border:1px solid #bbc5cf;border-radius:4px;background:#eef1f4}.list-fill-value{position:absolute;inset:0 auto 0 0;display:block}.list-fill-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#14202d;text-shadow:0 0 3px #fff,0 0 3px #fff}
#card-dialog,#card-delete-dialog{width:min(480px,calc(100% - 24px));max-height:85vh;overflow:auto;border:1px solid #bccbd9;border-radius:5px;padding:24px;color:#263445}#card-dialog::backdrop,#card-delete-dialog::backdrop{background:#16283b80}#card-table{background:#fff}#card-table button{margin-right:6px;padding:5px 10px;border:1px solid #bfccd8;background:#f5f7fa;color:#285d91;border-radius:3px}#card-table .card-on{background:#e5f4e9;color:#25743e}#card-table .card-off{background:#f0f1f3;color:#677383}#card-count,#card-feedback{font-size:12px;color:#657589}
/* KODANI portal login */
main{display:grid;grid-template-columns:59% 41%;gap:0;min-height:100vh;min-height:100svh;padding:0;background:#ebf1f5;place-items:stretch}.intro{display:flex;flex-direction:column;justify-content:center;position:relative;background:#04111c;color:#fff;min-width:0;padding:70px 4% 105px;overflow:hidden}.login-brand-scene{position:relative;isolation:isolate;min-height:510px;aspect-ratio:1.78;border-radius:12px;overflow:hidden;background:radial-gradient(ellipse at 80% 15%,#1e4e7f 0,transparent 55%),radial-gradient(ellipse at 70% 85%,#074582 0,transparent 48%),linear-gradient(140deg,#07121d,#071b2c 60%,#02080e);box-shadow:inset 0 0 80px #0007}.kodani-logo{position:relative;z-index:2;padding:30px 32px;font-size:34px;letter-spacing:-1.8px;font-weight:550;line-height:1}.kodani-logo>span{color:#438bd0}.kodani-logo small{display:block;font-size:6px;font-weight:400;letter-spacing:1px;margin-top:7px;color:#d9e7f5}.login-pitch{position:relative;z-index:2;margin:45px 0 0 32px;width:48%}.login-pitch h1{font-size:clamp(32px,3.3vw,58px);letter-spacing:-1.8px;line-height:1.05;font-weight:350;margin:0}.login-pitch h1 span{color:#438bd0}.login-pitch p{font-size:11px;color:#8daecb;letter-spacing:.6px;margin-top:25px}.device-art{position:absolute;width:64%;height:42%;right:-7%;top:35%;transform:rotate(-18deg) skewX(8deg);border-radius:55px;background:linear-gradient(160deg,#1a2a3d,#02060b 70%);box-shadow:0 35px 25px #000b,0 65px 55px #0088ff30;z-index:1;border:1px solid #17314b}.device-art-top{position:absolute;inset:-25% 0 22%;display:flex;align-items:center;justify-content:center;border-radius:48px;background:linear-gradient(145deg,#2a3d51,#111f2f 55%,#080f1a);border:2px solid #31475d;box-shadow:0 4px 2px #009fff,0 8px 8px #007eff;overflow:hidden}.device-art-top:after{content:'';position:absolute;inset:0;background:linear-gradient(130deg,#ffffff10,transparent 50%)}.device-art-top>span{font-size:clamp(20px,2vw,36px);font-weight:600;color:#9ab0cb;letter-spacing:1px;transform:skewX(-8deg);margin-top:40px}.device-art-top b{color:#008fff}.device-art-light{position:absolute;left:7%;right:4%;bottom:15%;height:2px;background:linear-gradient(90deg,transparent,#0065bd,transparent)}.scene-grid{position:absolute;inset:65% -10% -30%;background:repeating-linear-gradient(90deg,#2974b20c 0 1px,transparent 1px 35px),repeating-linear-gradient(0deg,#2974b20c 0 1px,transparent 1px 35px);transform:perspective(200px) rotateX(35deg);z-index:-1}.login-services{text-align:center;font-size:11px;color:#9bc8ef;margin:24px 0 0}.login-brand-footer{position:absolute;bottom:35px;left:4%;right:4%;display:flex;justify-content:space-between;gap:15px;color:#83a7c4;font-size:10px}.panel{align-self:center;justify-self:center;width:calc(100% - 70px);max-width:450px;padding:40px;background:#fff;border:1px solid #dce5ed;border-radius:22px;box-shadow:0 18px 45px #203c5710;margin:35px 0}.login-portal-label{color:#1765b1;letter-spacing:1.8px;font-size:10px;font-weight:700;margin:0 0 16px}.panel h2{text-align:left;font-size:29px;letter-spacing:-.7px;color:#12293a;margin:0 0 9px}.login-welcome{color:#6f8598;font-size:12px;line-height:1.8;margin:0 0 30px}.panel label:not(.remember){text-transform:uppercase;font-size:11px;color:#354858;margin-top:21px}.panel input:not([type=checkbox]){height:48px;border-radius:4px;border-color:#d6dee5;font-size:13px}.panel input::placeholder{color:#8b9aa7}.panel input:focus{outline:2px solid #5b9edf;outline-offset:0;background:#f5f9fd}.panel .password-row button{top:9px}.panel .submit{background:#49a6a6;border:1px solid #419695;border-radius:4px;height:46px;box-shadow:0 3px #388e8c;font-size:13px;letter-spacing:.4px;margin-top:7px}.panel .submit:hover{background:#388f91}.panel .remember{font-size:11px;color:#698094;font-weight:400;margin:21px 0}.panel input[type=checkbox]{accent-color:#49a6a6}@media(max-width:1000px){main{grid-template-columns:52% 48%}.intro{padding-left:6%;padding-right:6%}.login-brand-scene{min-height:480px}.kodani-logo{font-size:27px;padding:25px 20px}.login-pitch{margin-left:20px;width:80%}.login-pitch h1{font-size:39px}.device-art{top:63%;width:80%;height:28%;right:-10%;opacity:.8}.panel{padding:30px;width:calc(100% - 40px)}.login-brand-footer{flex-direction:column;gap:6px}}@media(max-width:680px){main{grid-template-columns:1fr;align-content:start}.intro{min-height:0;padding:24px 24px 18px}.login-brand-scene{min-height:0;aspect-ratio:auto;background:none;box-shadow:none;overflow:visible}.kodani-logo{padding:0;font-size:29px}.login-pitch{margin:22px 0 0;width:100%}.login-pitch h1{font-size:25px;line-height:1.15;letter-spacing:-.7px}.login-pitch h1 br{display:none}.login-pitch h1 br:after{content:' '}.login-pitch p{margin:10px 0 0}.device-art,.scene-grid,.login-brand-footer,.login-services{display:none}.panel{margin:24px 0 32px;width:calc(100% - 36px);max-width:450px;padding:29px;border-radius:16px}.panel h2{font-size:26px}.login-welcome{margin-bottom:20px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
@media(max-width:680px){.login-pitch h1 br{display:block}.login-pitch h1{font-size:28px}}
/* Edge-to-edge map; controls float over the map. */
.map-layout .workspace-content{padding:0;position:relative;overflow:hidden}.map-layout #map-content{position:relative;display:block;height:100%;width:100%;isolation:isolate}.map-layout #device-map{position:absolute;inset:0;width:100%;height:100%;min-height:0;border:0;border-radius:0;z-index:0}.map-layout .device-toolbar{position:relative;z-index:1001;margin:10px 10px 0 52px;box-shadow:0 2px 8px #14273b20;background:#ffffffef}.map-layout .sensor-filters{position:relative;z-index:1001;margin:8px 10px 0 52px;box-shadow:0 2px 8px #14273b20;background:#fffffff5}.map-layout #device-status{position:absolute;bottom:24px;left:10px;z-index:1001;max-width:calc(100% - 20px);padding:6px 10px;border-radius:3px;background:#fffffff0;box-shadow:0 1px 5px #0002;pointer-events:none}.map-layout #device-list{position:absolute;inset:0;overflow:auto;padding:0 10px 50px;background:#edf0f4}.map-layout #map-content:has(#device-list:not([hidden])){display:flex;flex-direction:column;gap:8px}.map-layout #map-content:has(#device-list:not([hidden])) .device-toolbar,.map-layout #map-content:has(#device-list:not([hidden])) .sensor-filters{margin-left:10px;flex-shrink:0}.map-layout #map-content:has(#device-list:not([hidden])) #device-list{position:relative;flex:1;min-height:0}.map-layout .leaflet-control-zoom{margin-top:10px}.map-layout #device-list table{margin-top:0}@media(max-width:520px){.map-layout .workspace-content{padding:0}.map-layout .device-toolbar{margin:6px 6px 0 45px;padding:7px;gap:6px}.map-layout .sensor-filters{margin:6px 6px 0 45px}.map-layout #device-map{min-height:0}.map-layout .device-toolbar input[type=search]{min-width:100px}.map-layout #device-status{font-size:10px;bottom:23px}}
/* Sensor filters share the main criteria toolbar. */
.map-layout .device-toolbar .sensor-filters,.map-layout #map-content:has(#device-list:not([hidden])) .device-toolbar .sensor-filters{position:static;margin:0;padding:0;border:0;background:transparent;box-shadow:none;overflow:visible;max-height:none;flex-shrink:0}.device-toolbar .sensor-filters>summary{list-style:none;padding:8px 12px;border:1px solid #bfc9d4;border-radius:3px;background:#fff;color:#285d91;font-size:12px;font-weight:400}.device-toolbar .sensor-filters>summary::-webkit-details-marker{display:none}.device-toolbar .sensor-filters>summary:after{content:' ▾'}.device-toolbar .sensor-filters[open]>summary{background:#eaf1f8;border-color:#7fa0c1}.sensor-dropdown{position:absolute;top:calc(100% + 7px);right:0;left:0;max-height:45vh;overflow:auto;padding:14px;background:#fff;border:1px solid #c4d1de;border-radius:4px;box-shadow:0 5px 18px #14273b30;z-index:1002}.sensor-dropdown .sensor-filter-row{margin-top:0}.sensor-dropdown .sensor-filter-footer{margin-top:12px}.device-toolbar .sensor-filters>summary:focus-visible{outline:3px solid #82abd1;outline-offset:2px}
/* Sidebar palette shared with the KODANI login. */
.sidebar{background:linear-gradient(165deg,#071b2c 0%,#04111c 72%);color:#d9e7f5}.app-brand{color:#f4f8fc;border-bottom-color:#28435c}.app-brand>span:first-child{color:#438bd0}.app-brand small{color:#8daecb}.nav-label{color:#83a7c4}.sidebar nav a{color:#bfd1e1}.sidebar nav a:hover{background:#102e45;color:#fff}.sidebar nav a[aria-current=page]{background:#133d49;border-left-color:#49a6a6;color:#b7eeee}.sidebar-bottom{color:#8daecb}#logout{border-color:#345a70;color:#a9d8df;background:#081b29}#logout:hover{background:#123443;border-color:#49a6a6}.sidebar a:focus-visible,.sidebar button:focus-visible{outline-color:#49a6a6}@media(max-width:520px){.sidebar nav a[aria-current=page]{border-left:0;border-bottom-color:#49a6a6}}
#toggle-sidebar{display:inline-grid;place-items:center;width:34px;height:32px;border:1px solid #cfdae4;border-radius:4px;background:#f4f7fa;color:#285d91;font-size:20px;flex-shrink:0;margin-right:12px}.topbar>span:first-of-type{margin-right:auto}.topbar{gap:8px}#pin-sidebar{align-self:flex-end;border:1px solid #345a70;background:#081b29;color:#a9d8df;font-size:10px;padding:5px 8px;border-radius:3px;margin-bottom:16px}#pin-sidebar[aria-pressed=true]{border-color:#49a6a6;color:#b7eeee}.workspace.sidebar-collapsed{grid-template-columns:minmax(0,1fr)}.workspace.sidebar-collapsed>.sidebar{display:none}@media(max-width:520px){.workspace.sidebar-collapsed{grid-template-rows:minmax(0,1fr)}#pin-sidebar{margin-bottom:8px}.map-layout.sidebar-collapsed .workspace-body{height:100dvh}}
#poi-dialog{width:min(850px,calc(100% - 24px));max-height:90vh;overflow:auto;border:1px solid #c8d4e1;border-radius:5px;padding:0;color:#354858}#poi-dialog::backdrop,#poi-delete-dialog::backdrop{background:#16283b80}#poi-form{max-width:none;width:100%;padding:20px}#poi-form h2{background:#777bf1;color:#fff;font-size:18px;font-weight:500;padding:16px;margin:-20px -20px 18px}.poi-actions{display:flex;justify-content:flex-end;gap:8px;margin-bottom:20px}.poi-actions button,#poi-table button{border:1px solid #bccbd8;border-radius:3px;padding:7px 12px;background:#f3f6f9;color:#285d91;margin-right:6px}.poi-actions button[type=submit]{background:#28a447;color:white;border-color:#28a447}.poi-fields{display:grid;grid-template-columns:40% minmax(0,1fr);gap:9px 16px;padding:12px;background:#f8f9fb}.poi-fields label{margin:0;align-self:center;font-size:11px;color:#7a8ba3}.poi-fields input{background:#fff!important;height:34px!important}.poi-position{display:grid;grid-template-columns:200px minmax(0,1fr);gap:20px;margin-top:20px}.poi-position section{padding:10px;background:#f0f4f7}.poi-position h3{font-size:12px;margin:0;background:#e0e8ee;padding:10px}.poi-position p{font-size:11px;color:#75869b;line-height:1.5}#poi-editor-map{height:290px;min-width:0}.poi-map-dot{display:block;width:22px;height:22px;border-radius:50%;border:3px solid #fff;background:#287ac4;box-shadow:0 1px 5px #0008}#poi-status,#poi-editor-status{font-size:12px;color:#657589;line-height:1.7}#poi-table{background:#fff}#poi-table button:disabled{opacity:.45;cursor:not-allowed}#poi-delete-dialog{max-width:420px;border:1px solid #c8d4e1;padding:24px;border-radius:5px}@media(max-width:580px){.poi-fields{grid-template-columns:1fr}.poi-position{grid-template-columns:1fr}#poi-editor-map{height:240px}}
/* Compact single-row directory criteria and professional POI editor. */
#pois-content>.device-toolbar{display:grid;grid-template-columns:repeat(3,minmax(135px,1fr)) auto auto;flex-wrap:nowrap;gap:10px;overflow-x:auto}#pois-content>.device-toolbar input[type=search]{min-width:135px;width:100%}#pois-content>.device-toolbar button{white-space:nowrap}#poi-dialog{width:min(940px,calc(100% - 28px));border-radius:9px;box-shadow:0 18px 70px #16283b55}#poi-form{padding:25px}#poi-form h2{display:flex;align-items:center;justify-content:space-between;background:#102f47;color:#fff;font-size:19px;margin:-25px -25px 0;padding:20px 25px;text-align:left}#poi-form h2 span{font-size:11px;letter-spacing:2px;color:#8bd3d5}.poi-form-caption{font-size:12px;color:#71859a;margin:15px 0}.poi-actions{padding:10px 0 15px;margin:0;border-bottom:1px solid #dde5ed}.poi-section-label{font-size:13px;color:#34566f;margin:20px 0 11px}.poi-fields{background:#f7f9fb;border:1px solid #e2e8ef;border-radius:6px;padding:18px;gap:12px 20px;grid-template-columns:160px minmax(0,1fr)}.poi-fields label{font-size:12px;color:#536b80}.poi-fields input{height:37px!important}.poi-position{margin-top:12px;grid-template-columns:195px minmax(0,1fr);gap:16px}.poi-position section{border:1px solid #dde5ed;border-radius:5px;background:#f7f9fb;padding:12px}.poi-position h3{background:none;padding:0 0 10px;border-bottom:1px solid #dde5ed;color:#536b80;font-size:11px}.poi-position input{height:34px!important}#poi-editor-map{height:330px;border:1px solid #dde5ed;border-radius:5px}.poi-address-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.poi-address-tools button{border:1px solid #347c91;background:#eaf4f5;border-radius:4px;color:#236473;padding:9px 13px;font-size:12px}.poi-address-tools span,#poi-geocode-status{font-size:11px;color:#71859a;line-height:1.6}.poi-address-result{display:block;width:100%;text-align:left;border:1px solid #d8e3ec;background:#f4f8fc;padding:11px;margin-top:6px;border-radius:4px;color:#284f70;font-size:12px}.poi-address-result:hover{background:#e8f1f8}#poi-address-results small{display:block;font-size:10px;color:#71859a;margin-top:6px}@media(max-width:580px){#pois-content>.device-toolbar{grid-template-columns:repeat(3,160px) auto auto}.poi-fields{grid-template-columns:1fr;gap:7px;padding:12px}.poi-fields input{margin-bottom:7px}.poi-position{grid-template-columns:1fr}#poi-editor-map{height:260px}}
/* Single POI search across company, address and contact. */
#pois-content>.device-toolbar{grid-template-columns:minmax(200px,1fr) auto auto}#pois-content>.device-toolbar #poi-search{width:100%;min-width:200px}@media(max-width:580px){#pois-content>.device-toolbar{grid-template-columns:minmax(200px,1fr) auto auto}}
#event-groups-content>.device-toolbar{display:grid;grid-template-columns:minmax(200px,1fr) auto auto}#event-groups-content>.device-toolbar input{width:100%;min-width:200px}#eg-status,#eg-editor-status{font-size:12px;line-height:1.7;color:#657589}#eg-table{background:#fff}#eg-table button{padding:6px 10px;border:1px solid #bfccd8;background:#f4f7fa;border-radius:3px;color:#285d91;margin-right:7px}#eg-table button:disabled{opacity:.4;cursor:not-allowed}.eg-badge{display:inline-block;padding:4px 7px;margin:2px;background:#e4f2eb;border:1px solid #bddacb;border-radius:3px;font-size:11px;color:#28724c}#eg-dialog{width:min(850px,calc(100% - 24px));max-height:88vh;overflow:auto;padding:25px;border:1px solid #bfcfdd;border-radius:7px;color:#354858}#eg-dialog::backdrop,#eg-delete-dialog::backdrop{background:#16283b80}#eg-form{max-width:none;width:100%}#eg-form h2{text-align:left;background:#102f47;color:#fff;padding:18px 25px;margin:-25px -25px 20px;font-size:20px}#eg-sensors{margin-top:18px}.eg-sensor-editor{border:1px solid #d6e1ea;border-radius:5px;margin-top:9px;background:#fff}.eg-sensor-editor summary{padding:13px;background:#edf3f7;cursor:pointer;font-size:13px;font-weight:600;color:#345b78}.eg-field-grid{display:grid;grid-template-columns:180px minmax(0,1fr);gap:11px 18px;padding:17px}.eg-field-grid label{margin:0;align-self:center;font-size:12px}.eg-field-grid select,.eg-field-grid textarea{width:100%;padding:8px;border:1px solid #bfc9d4;border-radius:3px;background:#fff;color:#263445;font:inherit;font-size:12px}.eg-field-grid textarea{resize:vertical;min-height:80px}#eg-delete-dialog{width:min(440px,calc(100% - 24px));border:1px solid #bfcfdd;border-radius:6px;padding:24px}#eg-dialog .editor-actions{position:sticky;bottom:-25px;background:#fff;padding:14px 0;margin-top:18px}@media(max-width:580px){.eg-field-grid{grid-template-columns:1fr;gap:7px}#event-groups-content>.device-toolbar{overflow:auto;grid-template-columns:minmax(200px,1fr) auto auto}}
#compactors-content>.device-toolbar{display:grid;grid-template-columns:minmax(200px,1fr) auto auto}#compactors-content>.device-toolbar input{width:100%;min-width:200px}#comp-table{background:#fff}#comp-table button{padding:6px 9px;border:1px solid #bfccd8;border-radius:3px;background:#f3f6fa;color:#285d91;margin:2px 6px 2px 0}#comp-table button:disabled{opacity:.4;cursor:not-allowed}#comp-dialog,#comp-service-dialog,#comp-delete-dialog{border:1px solid #bfccd8;border-radius:7px;padding:24px;color:#354858;max-height:87vh;overflow:auto}#comp-dialog{width:min(650px,calc(100% - 24px))}#comp-service-dialog{width:min(1100px,calc(100% - 24px))}#comp-delete-dialog{width:min(450px,calc(100% - 24px))}#comp-dialog::backdrop,#comp-service-dialog::backdrop,#comp-delete-dialog::backdrop{background:#16283b80}#comp-form{max-width:none;width:100%}#comp-form h2,#comp-service-title{text-align:left;font-size:19px;color:#163d56}.comp-fields{display:grid;grid-template-columns:170px minmax(0,1fr);gap:12px 15px}.comp-fields label{margin:0;align-self:center;color:#536b80;font-size:12px}#comp-status,#comp-editor-status,#comp-service-status{font-size:12px;color:#657589;line-height:1.6}@media(max-width:580px){.comp-fields{grid-template-columns:1fr;gap:7px}#compactors-content>.device-toolbar{overflow:auto}}
.svc-toolbar{display:grid;grid-template-columns:minmax(200px,1fr) auto auto auto auto!important;flex-wrap:nowrap!important;overflow:auto}.svc-toolbar input[type=search]{min-width:200px!important;width:100%!important}.svc-toolbar label{margin:0;display:flex;align-items:center;gap:7px;font-size:11px;white-space:nowrap}.svc-toolbar input[type=date]{width:145px!important;height:36px}.svc-toolbar button{white-space:nowrap}#svc-table{background:#fff}#svc-table button{padding:6px 10px;border:1px solid #bfccd8;border-radius:3px;background:#f3f6fa;color:#285d91;margin-right:7px}#svc-dialog,#svc-delete-dialog{width:min(750px,calc(100% - 24px));max-height:88vh;overflow:auto;border:1px solid #bfccd8;border-radius:7px;padding:24px;color:#354858}#svc-delete-dialog{max-width:450px}#svc-dialog::backdrop,#svc-delete-dialog::backdrop{background:#16283b80}#svc-form{max-width:none;width:100%}#svc-form h2{text-align:left;font-size:19px;color:#163d56}#svc-form select{width:100%;height:36px;border:1px solid #bfc9d4;border-radius:3px;background:white;padding:7px;color:#263445;font:inherit;font-size:12px}#svc-status,#svc-editor-status{font-size:12px;line-height:1.7;color:#657589}
.back-to-profile{display:inline-flex;align-items:center;white-space:nowrap;font-size:12px;color:#285d91;background:#edf4f7;border:1px solid #cedee7;padding:7px 10px;border-radius:4px}.back-to-profile:hover{background:#dfeef2;color:#18576a}.back-to-profile:focus-visible{outline:3px solid #49a6a6;outline-offset:2px}@media(max-width:760px){.topbar{flex-wrap:wrap;height:auto;min-height:54px;padding-top:8px;padding-bottom:8px}.map-layout .topbar{flex:0 0 auto}.back-to-profile{font-size:11px;padding:6px 8px}}@media(max-width:520px){.topbar>span:first-of-type{font-size:10px}.back-to-profile{margin-left:auto}}
.comp-maintenance-card{padding:18px;background:#edf4f7;border:1px solid #ccdde6;border-radius:6px;margin-bottom:18px}.comp-maintenance-card h3{margin:0 0 16px;color:#163d56;font-size:18px}.comp-maintenance-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.comp-maintenance-facts small{display:block;color:#6b8194;font-size:11px;margin-bottom:6px}.comp-maintenance-facts strong{font-size:13px;overflow-wrap:anywhere}.comp-maintenance-card button{background:#285d91;color:white;border:0;border-radius:4px;padding:9px 13px;font-size:12px}@media(max-width:650px){.comp-maintenance-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
.device-details-button{padding:7px 12px;border:1px solid #b5cada;border-radius:4px;background:#edf4fa;color:#285d91;font-size:12px;font-weight:600;white-space:nowrap}.device-details-button:hover{background:#dfeef7;border-color:#779fbe}.device-details-button:focus-visible{outline:3px solid #82abd1;outline-offset:2px}
.event-manage-button{margin-left:7px;border-color:#52a4a4;background:#eaf6f4;color:#267470}#device-events-dialog{width:min(1080px,calc(100% - 24px));max-height:88vh;overflow:auto;padding:22px;border:1px solid #bfccd8;border-radius:7px;color:#354858}#device-events-dialog::backdrop{background:#16283b80}#device-events-dialog button,#device-events-dialog select{padding:7px 10px;border:1px solid #bfccd8;border-radius:4px;background:#f3f6fa;color:#285d91;font-size:12px}.event-signal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:15px 0}.event-signal-card{display:flex;flex-direction:column;gap:7px;padding:14px;background:#f6f9fb;border:1px solid #dbe5ec;border-left:4px solid;border-radius:4px;font-size:12px}.event-signal-card small{color:#718194;font-size:10px}.nearby-controls{display:flex;gap:10px}.nearby-controls label{display:flex;align-items:center;gap:10px;margin:6px 0}.nearby-poi{display:block;font-size:11px;color:#7a6b3a;margin-top:5px}#device-events-dialog h3{font-size:16px;margin-top:25px}@media(max-width:700px){.event-signal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.device-event-badges{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap;margin-left:7px;vertical-align:middle}.device-event-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--event-color);border-radius:4px;background:color-mix(in srgb,var(--event-color) 9%,white);color:var(--event-color);font-size:11px;font-weight:600;white-space:nowrap}.device-event-badge .device-icon{width:20px;height:20px}.device-event-badge:hover{background:color-mix(in srgb,var(--event-color) 18%,white)}.device-event-badge:focus-visible{outline:3px solid #82abd1;outline-offset:2px}.device-event-neutral{font-size:11px;color:#7b8794;padding:5px}
.device-info-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:5px;border-radius:50%;vertical-align:middle}.device-info-button .device-icon{width:21px;height:21px}
.cycle-tasks{margin:18px 0}.cycle-task-card{padding:15px;border:1px solid #d2e0e8;background:#f7fafc;border-radius:6px;margin-top:12px}.cycle-task-card h4{margin:0 0 8px;color:#285d91}.cycle-task-card p{font-size:12px;line-height:1.6;margin:7px 0}.cycle-task-card small{display:block;color:#718194;font-size:11px;line-height:1.6}.cycle-complete-form{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:12px}.cycle-complete-form label{margin:5px 0;font-size:11px}.cycle-complete-form input,.cycle-complete-form textarea{display:block;width:100%;margin-top:6px}.cycle-complete-form textarea{border:1px solid #bfc9d4;border-radius:3px;min-height:55px;padding:8px}.cycle-complete-form label:has(textarea){grid-column:1/-1}.cycle-complete-form button{justify-self:start;background:#285d91!important;color:white!important}.cycle-complete-form p{grid-column:1/-1;color:#a33131}.cycle-tasks>p{font-size:12px;line-height:1.6}@media(max-width:550px){.cycle-complete-form{grid-template-columns:1fr}}
.view-switch button{display:inline-flex;align-items:center;justify-content:center;width:37px;height:36px;padding:7px!important}.view-switch button svg{display:block;flex-shrink:0}
.manual-replacement-section{margin:15px 0;border:1px solid #8ebac1;border-radius:6px;padding:13px;background:#eef7f7}.manual-replacement-section summary{font-size:13px;font-weight:600;color:#246e79;cursor:pointer}.manual-replacement-section>p{font-size:12px;color:#526f7a;line-height:1.6}
.sidebar nav a{display:flex;align-items:center;gap:11px}.sidebar-icon{display:block;width:19px;height:19px;flex-shrink:0;opacity:.9}.sidebar nav a[aria-current=page] .sidebar-icon{opacity:1}
.usage-toolbar{display:flex;flex-wrap:nowrap;overflow:auto}.usage-toolbar label{display:flex;align-items:center;gap:7px;margin:0;font-size:12px}.usage-toolbar input[type=date]{width:145px}.usage-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}.usage-summary>div{background:#fff;border:1px solid #d4e1e9;border-radius:5px;padding:17px}.usage-summary small{display:block;font-size:11px;color:#718497;margin-bottom:9px}.usage-summary strong{display:block;font-size:21px;color:#285d91}#usage-status{font-size:12px;line-height:1.6;color:#657589}#usage-table{background:white}.usage-quality{border:1px solid #d4e1e9;border-radius:5px;padding:13px;margin:18px 0;background:#f7fafc}.usage-quality summary{cursor:pointer;font-size:12px;font-weight:600;color:#345b78}.usage-quality p{font-size:12px;line-height:1.6;color:#6f8092}@media(max-width:650px){.usage-summary{grid-template-columns:1fr}}
.sidebar-heading{display:flex;align-items:center;gap:7px;padding:0 3px 20px;border-bottom:1px solid #28435c}.sidebar-heading .app-brand{flex:1;min-width:0;padding:0;border:0;gap:7px;font-size:14px;letter-spacing:-.3px}.sidebar-heading .app-brand>span:first-child{font-size:24px}.sidebar-heading #pin-sidebar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;align-self:center;margin:0;padding:0;font:600 17px Consolas,monospace;border:1px solid #345a70;border-radius:4px;background:transparent;color:#9bb4cb}.sidebar-heading #pin-sidebar:hover{background:#15384b;color:white}.sidebar-heading #pin-sidebar[aria-pressed=true]{background:#153d48;border-color:#49a6a6;color:#a8e2de}.nav-label{font-size:9px;letter-spacing:1.5px;margin-top:24px;margin-bottom:12px}.sidebar nav a{min-height:43px;margin-bottom:3px;border-radius:5px}.sidebar-bottom{border-top:1px solid #28435c;padding-top:16px;margin-top:auto}@media(max-width:760px){.sidebar-heading{gap:4px}.sidebar-heading .app-brand{font-size:11px}.sidebar-heading .app-brand>span:first-child{font-size:20px}.sidebar-heading #pin-sidebar{width:25px;height:25px}}@media(max-width:520px){.sidebar-heading{padding-bottom:12px}.sidebar-heading .app-brand{font-size:15px}.sidebar-bottom{margin-top:12px}}
/* Flutter login photo in the sidebar brand area. */
.sidebar-heading{position:relative;isolation:isolate;min-height:145px;align-items:flex-end;padding:15px 9px;margin:-24px -12px 0;border-bottom:1px solid #28435c;background:linear-gradient(to bottom,rgba(4,17,28,.15),rgba(4,17,28,.92)),url('assets/login-waste-compactors.png') center 48%/cover no-repeat}.sidebar-heading .app-brand{color:#fff;text-shadow:0 1px 4px #0008}.sidebar-heading .app-brand>span:first-child{color:#b7eeee}.sidebar-heading #pin-sidebar{align-self:flex-end;background:#071b2cda;color:#fff;border-color:#7fa8b5}.sidebar-heading #pin-sidebar[aria-pressed=true]{background:#153d48e8;border-color:#68c4be;color:#c5f4ee}@media(max-width:760px){.sidebar-heading{margin:-20px -8px 0;padding:13px 7px;min-height:130px}}@media(max-width:520px){.sidebar-heading{margin:-14px -14px 0;padding:15px;min-height:110px}}
/* Centered brand without a pin control. */
.sidebar-heading{justify-content:center;align-items:center;min-height:185px;padding:22px 10px}.sidebar-heading .app-brand{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;flex:0 1 auto;width:100%;text-align:center;font-size:19px;letter-spacing:.1px;line-height:1.3}.sidebar-heading .app-brand>span:first-child{font-size:65px;line-height:1;color:#c0f1e5}.sidebar-heading .app-brand>span:last-child{display:block;width:100%;text-align:center}@media(max-width:760px){.sidebar-heading{min-height:175px}.sidebar-heading .app-brand{font-size:16px}.sidebar-heading .app-brand>span:first-child{font-size:58px}}@media(max-width:520px){.sidebar-heading{min-height:155px}.sidebar-heading .app-brand{font-size:18px;gap:8px}.sidebar-heading .app-brand>span:first-child{font-size:54px}}
.service-indicator{display:inline-flex;align-items:center;gap:6px;padding:5px 7px;border-radius:4px;font-size:11px;white-space:nowrap}.service-indicator .device-icon{width:21px;height:21px}.service-ok{color:#32804b;background:#eaf5ee}.service-soon{color:#876800;background:#fff3bd;border:1px solid #e5c34f}.service-overdue{color:#b62d2d;background:#ffe8e8;border:1px solid #e19b9b}.service-unknown{color:#81909f;background:#f0f3f6}.service-indicator:focus-visible{outline:3px solid #82abd1;outline-offset:2px}
button.service-indicator{border:1px solid transparent;cursor:pointer;font:inherit;font-size:11px}button.service-indicator:hover{filter:brightness(.96);border-color:currentColor}#device-maintenance-dialog{width:min(820px,calc(100% - 24px));max-height:88vh;overflow:auto;padding:22px;border:1px solid #bfccd8;border-radius:7px;color:#354858}#device-maintenance-dialog::backdrop{background:#16283b80}#device-maintenance-dialog h2{text-align:left;font-size:20px;margin:0}#device-maintenance-dialog h3{font-size:15px;margin-top:22px}.maintenance-status{padding:12px;border-radius:5px;font-size:12px;line-height:1.7}.maintenance-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;padding:15px 0}.maintenance-facts small{display:block;color:#718194;font-size:11px;margin-bottom:7px}.maintenance-facts strong{font-size:13px;overflow-wrap:anywhere}.maintenance-progress{width:100%;height:16px;accent-color:#49a6a6;margin:10px 0 18px}#device-maintenance-dialog button{padding:8px 12px;border:1px solid #bfccd8;border-radius:4px;background:#edf4fa;color:#285d91;font-size:12px}#device-maintenance-dialog .maintenance-add{background:#285d91;color:white}@media(max-width:550px){.maintenance-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Keep device-list column titles visible inside the scrolling table. */
#device-list thead th{position:sticky;top:0;z-index:5;background:#e9eef4;box-shadow:inset 0 -1px #c6d2de,0 1px 2px #14273b12}#device-list table{border-collapse:separate;border-spacing:0}#device-list th,#device-list td{border-top:0;border-left:0}#device-list th:first-child,#device-list td:first-child{border-left:1px solid #dae1e9}
/* Consistent sticky column headers across all directory and detail lists. */
.customer-table-wrap{position:relative;max-height:calc(100dvh - 280px);overflow:auto;isolation:isolate}.customer-table-wrap table{border-collapse:separate;border-spacing:0}.customer-table-wrap thead th{position:sticky;top:0;z-index:5;background:#e9eef4;box-shadow:inset 0 -1px #c6d2de,0 1px 2px #14273b12}.customer-table-wrap th,.customer-table-wrap td{border-top:0;border-left:0}.customer-table-wrap th:first-child,.customer-table-wrap td:first-child{border-left:1px solid #dae1e9}dialog .customer-table-wrap{max-height:45dvh;min-height:0}.map-layout #device-list{max-height:none}@media(max-width:520px){.customer-table-wrap{max-height:60dvh}dialog .customer-table-wrap{max-height:45dvh}}
/* Application header matches the sidebar's photographic brand panel. */
.topbar{background:linear-gradient(90deg,rgba(4,17,28,.90),rgba(7,27,44,.76)),url('assets/login-waste-compactors.png') center 48%/cover no-repeat;color:#e0edf7;border-bottom:1px solid #34546a;box-shadow:0 2px 8px #04111c20}.topbar #breadcrumb{color:#fff;font-weight:600}.topbar #toggle-sidebar{background:#081d2bba;border-color:#587c90;color:#c0f1e5}.topbar #toggle-sidebar:hover{background:#173c4c}.topbar .back-to-profile{background:#0c2c3dcc;border-color:#547c8f;color:#c0f1e5}.topbar .back-to-profile:hover{background:#184555;color:#fff}.topbar .web-badge{background:#0b293acc;color:#b7dfeb;border:1px solid #3d6279}.topbar a:focus-visible,.topbar button:focus-visible{outline-color:#8bdfd5}
/* Unified edit, delete and refresh icons across lists and cards. */
button.action-icon-button{display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 auto;min-width:34px;width:34px;min-height:34px;height:34px;padding:7px!important;vertical-align:middle;line-height:1;border-radius:4px}button.action-icon-button svg{display:block;width:19px;height:19px;flex-shrink:0}button.action-icon-button[data-action-icon=delete]{color:#bf3838!important;background:#fff3f3!important;border-color:#e6bbbb!important}button.action-icon-button[data-action-icon=delete]:hover:not(:disabled){background:#ffe3e3!important}button.action-icon-button[data-action-icon=edit]{color:#285d91!important}button.action-icon-button[data-action-icon=refresh]{color:#2b7d80!important}button.action-icon-button:disabled{opacity:.4;cursor:not-allowed}button.action-icon-button:focus-visible{outline:3px solid #82abd1;outline-offset:2px}
/* All directories fill the available application viewport. */
.directory-layout .workspace-body{height:100vh;height:100dvh;display:flex;flex-direction:column;min-width:0;min-height:0}.directory-layout .topbar{flex:0 0 auto;min-height:54px}.directory-layout .workspace-content{flex:1;min-height:0;min-width:0;width:100%;max-width:none;margin:0;padding:12px;display:flex;flex-direction:column;overflow:hidden}.directory-layout .workspace-content>section:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;gap:8px}.directory-layout .workspace-content>section>.device-toolbar{flex-shrink:0;width:100%}.directory-layout .workspace-content>section>.customer-table-wrap{flex:1;min-height:0;max-height:none;width:100%;overflow:auto;margin:0;background:#fff;border:1px solid #d6dde5;border-radius:4px}.directory-layout .workspace-content>section>p{flex-shrink:0;margin:0;font-size:12px;line-height:1.6}.directory-layout .workspace-content>section>.draft-notice{padding:10px 12px}.directory-layout .usage-summary{flex-shrink:0;margin:3px 0;gap:10px}.directory-layout .usage-summary>div{padding:12px}.directory-layout .usage-summary strong{font-size:19px}.directory-layout .usage-quality{flex-shrink:0;max-height:25dvh;overflow:auto;margin:0}.directory-layout #module-content{justify-content:flex-start}.directory-layout dialog .customer-table-wrap{max-height:45dvh}.directory-layout .customer-table-wrap table{min-width:100%}@media(max-width:520px){.directory-layout{height:100vh;height:100dvh;grid-template-rows:auto minmax(0,1fr)}.directory-layout .workspace-body{height:auto;min-height:0}.directory-layout .workspace-content{padding:7px}.directory-layout .usage-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.directory-layout .usage-summary>div{padding:8px}.directory-layout .usage-summary strong{font-size:14px}.directory-layout .usage-summary small{font-size:9px}}
.date-entry{position:relative;display:inline-flex;align-items:center;width:100%;min-width:0;vertical-align:middle}.date-entry .date-display-input{width:100%;min-width:0;padding-right:34px!important}.date-picker-button{position:absolute;right:3px;top:50%;transform:translateY(-50%);border:0!important;background:transparent!important;color:#285d91!important;width:28px;min-width:28px;height:28px;padding:3px!important;font-size:20px;line-height:1;display:grid;place-items:center}.date-native-picker{position:absolute;right:3px;bottom:0;width:1px!important;height:1px!important;min-width:0!important;padding:0!important;opacity:0;pointer-events:none}.device-toolbar .date-entry{width:165px;flex-shrink:0}.cycle-complete-form .date-entry{display:flex;margin-top:6px}.cycle-complete-form .date-entry input{margin-top:0}
