:root{--bg:#f4f7fb;--card:#fff;--ink:#182230;--muted:#667085;--line:#e6ebf2;--blue:#2457d6;--blue2:#eaf0ff;--green:#16845b;--amber:#b76e00;--red:#c0392b;--shadow:0 8px 28px rgba(20,36,65,.06)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:#101c35;color:#fff;padding:24px 16px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 30px}.brand b{font-size:17px;display:block}.brand small{font-size:11px;color:#aebbd3}.brand-mark{height:39px;width:39px;border-radius:12px;background:#4777f5;color:#fff;display:grid;place-items:center;font-weight:800;font-size:21px}.sidebar nav{display:grid;gap:7px}.nav-item{display:flex;align-items:center;gap:13px;width:100%;padding:12px 13px;border-radius:10px;background:transparent;color:#c5d0e2;text-align:left}.nav-item.active,.nav-item:hover{background:#253858;color:#fff}.nav-item span{font-weight:550}.side-bottom{margin-top:auto;padding:15px 8px 0;border-top:1px solid #2a3851;color:#b9c5d9;line-height:1.8}.side-bottom a{display:block;color:#fff;text-decoration:none;margin-top:12px}.main{margin-left:245px;padding:0 30px 38px;max-width:1800px}.topbar{height:90px;display:flex;align-items:center;gap:15px;border-bottom:1px solid var(--line);margin-bottom:26px}.topbar h1{margin:3px 0 0;font-size:24px}.eyebrow{font-size:10px;letter-spacing:1.4px;color:var(--muted);font-weight:800}.top-user{margin-left:auto;color:var(--muted);display:flex;align-items:center;gap:8px}.status-dot{height:8px;width:8px;background:#24a16b;border-radius:50%}.icon-btn{background:transparent;color:inherit;padding:7px;border-radius:8px}.icon-btn:hover{background:var(--bg)}#menuToggle{display:none}.welcome{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.welcome h2{font-size:22px;margin:0 0 6px}.welcome p,.page-actions p,.panel-head p{color:var(--muted);margin:0}.date-pill{background:#fff;border:1px solid var(--line);border-radius:20px;padding:9px 13px;color:var(--muted);font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:23px}.stat-card,.panel{background:var(--card);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow)}.stat-card{padding:20px}.stat-label{font-size:12px;color:var(--muted);font-weight:650}.stat-value{font-size:34px;font-weight:750;letter-spacing:-1px;margin:12px 0 5px}.stat-value.warning{color:var(--red)}.stat-foot{font-size:11px;color:var(--muted)}.panel{padding:20px;margin-bottom:20px}.panel-head,.page-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:17px}.panel-head h3,.page-actions h2{margin:0 0 5px;font-size:17px}.panel-head p,.page-actions p{font-size:12px}.primary,.secondary{border-radius:9px;padding:10px 14px;font-weight:650;white-space:nowrap}.primary{background:var(--blue);color:#fff}.primary:hover{background:#1745bb}.secondary{background:#f2f5fa;color:#334155;border:1px solid var(--line)}.full{width:100%;margin-top:8px}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:#778397;background:#f8faff;padding:12px}td{padding:13px 12px;border-bottom:1px solid #edf0f5;font-size:12px}tr:last-child td{border-bottom:0}.code{font-weight:750;color:#294eab}.badge{display:inline-flex;padding:5px 8px;border-radius:20px;font-size:10px;font-weight:750;background:#eef2f7;color:#526071}.badge.open{background:#fff2d8;color:#9b5a00}.badge.progress{background:#e7efff;color:#2855b5}.badge.completed,.badge.active{background:#e1f7ec;color:#14734d}.badge.critical,.badge.high{background:#ffe8e5;color:#b42318}.row-actions{display:flex;gap:6px}.small-btn{padding:6px 8px;border-radius:7px;background:#f0f4fb;color:#344054;font-size:11px}.notice{border:1px solid #dce6ff;background:#eef3ff;border-radius:12px;padding:14px 16px;color:#40547b;font-size:12px;line-height:1.6}.hidden{display:none!important}.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px}.modal-backdrop{position:absolute;inset:0;background:#0d1728a8}.modal-card{position:relative;width:min(620px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:16px;padding:22px;box-shadow:0 24px 80px #0003}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.modal-head h3{margin:0;font-size:19px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:grid;gap:7px}.field.full-row{grid-column:1/-1}.field label{font-size:12px;font-weight:700;color:#475467}.field input,.field select,.field textarea,.login-card input{width:100%;border:1px solid #d8e0eb;border-radius:9px;padding:11px;background:#fff;color:var(--ink);outline:none}.field input:focus,.field select:focus,.field textarea:focus,.login-card input:focus{border-color:#6d8df0;box-shadow:0 0 0 3px #2457d61a}.field textarea{min-height:80px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.toast{position:fixed;right:22px;top:18px;z-index:40;background:#14233e;color:white;padding:13px 18px;border-radius:10px;box-shadow:var(--shadow);max-width:calc(100% - 44px)}.toast.error{background:#9f2929}.empty{padding:28px;text-align:center;color:var(--muted)}.login-page{min-height:100vh;display:grid;place-items:center;padding:18px;background:linear-gradient(135deg,#eef3ff,#f7f9fc)}.login-card{width:min(400px,100%);background:#fff;padding:32px;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.login-card .brand-mark{margin-bottom:18px}.login-card h1{margin:0;font-size:27px}.login-card>p{margin:7px 0 25px}.login-card form{display:grid;gap:15px}.login-card label{display:grid;gap:7px;font-size:12px;font-weight:700}.muted{color:var(--muted)}.small{font-size:11px}.alert{background:#fff0ee;color:#a32b20;border-radius:8px;padding:10px;margin-bottom:14px;font-size:12px}@media(max-width:1000px){.main{padding:0 20px 30px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar{width:220px}.main{margin-left:220px}}@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:260px;box-shadow:12px 0 35px #101c3520}.sidebar.open{transform:translateX(0)}.main{margin-left:0;padding:0 14px 26px}.topbar{height:75px;margin-bottom:20px}#menuToggle{display:block}.topbar h1{font-size:20px}.top-user{font-size:12px}.welcome{align-items:flex-start;gap:10px}.welcome h2{font-size:19px}.date-pill{font-size:10px}.stats{gap:10px}.stat-card{padding:15px}.stat-value{font-size:28px}.stat-foot{line-height:1.5}.panel{padding:14px;margin-bottom:15px}.panel-head,.page-actions{align-items:flex-start}.page-actions{flex-direction:column}.page-actions .primary{width:100%}.form-grid{grid-template-columns:1fr}.field.full-row{grid-column:auto}.modal-card{padding:18px}.table-wrap{margin:0 -2px}.top-user span:last-child{max-width:85px;overflow:hidden;text-overflow:ellipsis}.notice{font-size:11px}}@media(max-width:360px){.stats{grid-template-columns:1fr}.date-pill{display:none}.top-user{display:none}}
/* Foto pekerjaan */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:10px}
.photo-card{border:1px solid var(--border,#dbe3ec);border-radius:10px;overflow:hidden;background:var(--panel,#fff);min-width:0}
.photo-card img{display:block;width:100%;height:130px;object-fit:cover;background:#f1f5f9}
.photo-meta{display:flex;flex-direction:column;gap:5px;padding:8px;overflow-wrap:anywhere;font-size:12px}
.photo-meta small{color:var(--muted,#64748b)}
.photo-meta button{align-self:flex-start}
.photo-card p{font-size:12px;padding:0 8px 8px;margin:0;overflow-wrap:anywhere}
#photoFiles{max-width:100%;padding:8px}

/* Histori pekerjaan WO */
.history-filter-panel{background:#eef3ff;border-color:#d9e5ff;padding:16px 20px;margin-bottom:16px}
.history-filter-panel .field{max-width:620px}
.history-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px}
.history-summary{font-size:21px;letter-spacing:-.4px;line-height:1.25}
.history-table-head{align-items:center;flex-wrap:wrap}
.history-controls{display:flex;gap:10px;flex-wrap:wrap}
.history-controls input,.history-controls select,.history-filter-panel select{border:1px solid #d8e0eb;border-radius:9px;padding:10px 12px;background:#fff;color:var(--ink);min-width:165px;max-width:100%}
.history-controls input{min-width:240px}
.history-link{background:transparent;color:var(--blue);font-weight:750;padding:0;text-decoration:none}
.history-link:hover{text-decoration:underline}
#historyTable table{min-width:980px}
@media(max-width:1000px){.history-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.history-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.history-controls,.history-controls input,.history-controls select{width:100%;min-width:0}.history-summary{font-size:18px}}

/* Histori preventive dan checklist PM — rilis 4.0 */
.pm-note{margin:-3px 0 16px}
.pm-history-filters{display:grid;grid-template-columns:minmax(180px,1fr) minmax(170px,.8fr) minmax(250px,1.4fr);gap:14px;align-items:end}
.pm-history-filter{display:grid;gap:7px;min-width:0}
.pm-history-filter label{font-size:12px;font-weight:700;color:#475467}
.pm-history-filter input,.pm-history-filter select{width:100%;min-width:0;border:1px solid #d8e0eb;border-radius:9px;padding:10px 12px;background:#fff;color:var(--ink)}
.pm-history-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.pm-check-summary{display:grid;gap:7px;background:#f4f7ff;border:1px solid #dce6ff;border-radius:10px;padding:14px}
.pm-check-summary b{font-size:15px}
.pm-check-summary small{color:var(--muted)}
.pm-check-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr);align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:11px;margin-top:8px}
.pm-check-row label{display:flex;align-items:flex-start;gap:9px;font-weight:550;line-height:1.4}
.pm-check-row input[type=checkbox]{width:17px;height:17px;margin:1px 0 0;accent-color:var(--blue);flex:0 0 auto}
.pm-check-row input:not([type=checkbox]){width:100%;min-width:0;border:1px solid #d8e0eb;border-radius:8px;padding:9px}
@media(max-width:1000px){.pm-history-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.pm-history-search{grid-column:1/-1}.pm-history-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.pm-history-filters{grid-template-columns:1fr}.pm-history-search{grid-column:auto}.pm-check-row{grid-template-columns:1fr}.pm-history-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Functional checklist UI: clear criteria, result, notes, and automatic progress */
.modal-card:has(.pm-check-list){width:min(980px,100%)}
.pm-check-list{display:grid;gap:10px;margin-top:4px}
.pm-check-row{display:grid;grid-template-columns:minmax(250px,1fr) minmax(280px,360px);align-items:start;gap:16px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}
.pm-check-row.needs-repair{border-color:#efaaa4;background:#fff8f7}
.pm-check-item{display:grid;gap:7px;line-height:1.45}
.pm-check-item b{font-size:13px;color:#1e293b}
.pm-check-item small{font-size:11px;line-height:1.5;color:var(--muted)}
.pm-check-fields{display:grid;gap:8px;min-width:0}
.pm-check-fields select,.pm-check-fields input{width:100%;min-width:0;padding:10px;border:1px solid #d8e0eb;border-radius:9px;background:#fff;color:var(--ink)}
.pm-check-row.needs-repair .pm-check-fields select{border-color:#e18a81;color:#a52b23}
.checklist-progress{display:grid;gap:8px;border:1px solid #dce6ff;background:#f7f9ff;padding:13px 15px;border-radius:11px}
.checklist-progress b{font-size:12px}
.checklist-progress span{font-size:12px;color:var(--muted)}
.progress-track{height:8px;background:#e3e9f4;border-radius:99px;overflow:hidden}
.progress-fill{height:100%;width:0;background:#2457d6;border-radius:99px;transition:width .15s ease}
.checklist-legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:11px}
.checklist-legend span{display:flex;align-items:center;gap:6px}
.checklist-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
.legend-ok{background:#16a36a}.legend-ng{background:#d43c32}.legend-na{background:#8793a5}
@media(max-width:700px){.modal-card:has(.pm-check-list){width:100%}.pm-check-row{grid-template-columns:1fr;gap:10px;padding:12px}.checklist-legend{gap:8px}.checklist-legend span{font-size:10px}}

/* Logout mudah dijangkau dari header, terutama pada HP */
.top-logout{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:9px 12px;border-radius:9px;background:#fff0ef;color:#b42318;border:1px solid #ffd4d0;text-decoration:none;font-size:12px;font-weight:750;white-space:nowrap}.top-logout:hover{background:#ffe4e1}.sidebar{overflow-y:auto}.sidebar nav{flex:0 0 auto}
@media(max-width:700px){.topbar{gap:8px}.top-logout{padding:8px 9px;font-size:11px}.top-user{margin-left:auto;min-width:0}.top-user span:last-child{max-width:64px}.topbar h1{font-size:18px}}
@media(max-width:360px){.top-user{display:none}.top-logout{margin-left:auto}}

/* Visual BMS Dinamis — tampilan monitoring berbasis data database */
.bms-proto-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px}.bms-proto-head h2{margin:5px 0;font-size:23px}.bms-proto-head p{margin:0;color:var(--muted);font-size:12px}.bms-kicker{font-size:10px;font-weight:850;letter-spacing:1.8px;color:#3268d7}.bms-proto-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sim-pill{display:inline-flex;align-items:center;gap:7px;border-radius:30px;padding:8px 11px;background:#e6f8f1;color:#08784d;font-size:10px;font-weight:850}.sim-pill i{width:7px;height:7px;background:#14a66c;border-radius:50%;box-shadow:0 0 0 4px #14a66c20}.bms-control-btn{padding:9px 11px;border-radius:8px;background:#172b4d;color:#fff;font-size:11px;font-weight:750}.bms-control-btn:hover{background:#254778}.bms-proto-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:15px}.bms-kpi{background:#101d34;border:1px solid #263b5b;border-radius:12px;padding:16px;color:#dce8fa;display:grid;gap:7px}.bms-kpi>span{font-size:11px;color:#91a7c6}.bms-kpi>b{font-size:26px;letter-spacing:-.7px;color:#fff}.bms-kpi b em{font-size:13px;font-style:normal;color:#91a7c6}.bms-kpi small{font-size:10px;color:#8398b6}.ok-text{color:#54d6a0!important}.warn-text{color:#ffbd61!important}.bms-scada-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,.8fr);gap:14px}.bms-scada-main,.bms-scada-side{display:grid;align-content:start;gap:14px}.bms-scada-panel{background:#101d34;border:1px solid #263b5b;border-radius:13px;padding:17px;color:#e6efff;min-width:0}.bms-panel-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.bms-panel-title b{font-size:11px;letter-spacing:1px}.bms-panel-title small{display:block;color:#8298b8;font-size:10px;margin-top:5px}.bms-live-tag{font-size:9px;color:#55d9a2;font-weight:800;white-space:nowrap}.bms-schematic{background:radial-gradient(ellipse at 50% 45%,#1c3457 0,#101d34 72%);border:1px solid #263b5b;border-radius:10px;overflow:hidden}.bms-schematic svg{display:block;width:100%;height:auto;min-height:260px}.bms-schematic .wire{fill:none;stroke:#4587dc;stroke-width:4;stroke-linecap:round;stroke-dasharray:9 8;animation:wireflow 1.8s linear infinite}.bms-schematic .pipe{fill:none;stroke:#2ec7d2;stroke-width:5;stroke-linecap:round;stroke-dasharray:10 9;animation:wireflow 2.2s linear infinite}.bms-schematic .pipe.return{stroke:#5288c8;stroke-width:3;opacity:.8}.bms-schematic .flow-dots circle{fill:#a0f4ff;filter:drop-shadow(0 0 5px #3ce7ff)}.bms-schematic .node rect{fill:#172c4a;stroke:#3d638f;stroke-width:1.5}.bms-schematic .node text{fill:#9fb5d3;font-size:11px;font-weight:700;letter-spacing:.4px}.bms-schematic .node .node-value{fill:#fff;font-size:16px}.bms-schematic .node .node-state{fill:#54d6a0;font-size:9px}.bms-schematic .diagram-caption{fill:#607b9f;font-size:9px;letter-spacing:1px}@keyframes wireflow{to{stroke-dashoffset:-34}}.bms-system-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.bms-system-row{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid #293f60;background:#142641;border-radius:9px;min-width:0}.bms-system-icon{width:30px;height:30px;border-radius:8px;background:#213c62;display:grid;place-items:center;color:#79b8ff;font-size:17px;flex:0 0 auto}.bms-system-row>div{min-width:0;flex:1}.bms-system-row b{display:block;font-size:11px}.bms-system-row small{display:block;color:#8da4c4;font-size:9px;margin-top:4px;white-space:normal}.bms-state{font-size:8px;font-weight:900;color:#56d9a3;background:#17483e;padding:5px 6px;border-radius:5px;white-space:nowrap}.bms-state.fault{color:#ffc17c;background:#603c28}.alarm-count{background:#25446b;color:#b9d6ff;border-radius:20px;padding:4px 9px;font-size:10px;font-weight:850}.alarm-empty{border:1px dashed #34516f;border-radius:9px;padding:18px;text-align:center;color:#61d5a2;font-size:11px}.bms-alarm-item{padding:12px;border-radius:9px;border:1px solid #87522d;background:#432d29;color:#ffcf9a}.bms-alarm-item b{font-size:11px;display:block}.bms-alarm-item small{display:block;font-size:10px;color:#e4b69a;margin-top:6px;line-height:1.5}.bms-mode-row{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid #273c5a;font-size:10px;color:#91a7c6}.bms-mode-row b{color:#dce9fb;font-size:10px;text-align:right}.bms-mode-row .muted-mode{color:#f1bd70}.bms-disclaimer{font-size:10px;line-height:1.6;color:#91a7c6;background:#1a2d49;border-radius:8px;padding:11px;margin:13px 0 0}@media(max-width:1000px){.bms-scada-layout{grid-template-columns:1fr}.bms-proto-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.bms-proto-head{flex-direction:column}.bms-proto-controls{width:100%}.bms-control-btn{flex:1}.bms-proto-grid{gap:8px}.bms-kpi{padding:12px}.bms-kpi>b{font-size:22px}.bms-scada-panel{padding:12px}.bms-system-list{grid-template-columns:1fr}.bms-schematic svg{min-height:180px}}
.bms-point-chip{display:inline-block;margin:4px 5px 2px 0;padding:5px 8px;border:1px solid #294365;border-radius:7px;background:#172b48;color:#dceaff;font-size:11px;line-height:1.5}.bms-point-chip b{color:#fff}.bms-point-chip:has(+ .bms-point-chip){margin-right:5px}

/* Visual BMS Opsi 5: room map + equipment list */
.bms-map-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:4px 0 12px}.bms-map-filters label{display:grid;gap:5px;color:#9bb0cc;font-size:10px;font-weight:750}.bms-map-filters select{width:100%;min-width:0;border:1px solid #385274;border-radius:7px;padding:9px;background:#172b49;color:#e7f0ff;font-size:11px}.bms-category-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0}.bms-category-chip{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border-radius:8px;background:#172b49;border:1px solid #2b4567;color:#b7c9e2;font-size:10px}.bms-category-chip strong{font-size:16px;color:#fff}.bms-map-legend{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 13px;color:#9bb0cc;font-size:9px}.bms-map-legend span{display:flex;align-items:center;gap:6px}.bms-map-legend i,.bms-map-device>i{width:8px;height:8px;border-radius:50%;display:inline-block;background:#d99a48}.bms-map-legend i.normal,.bms-map-device.normal>i{background:#35c88b;box-shadow:0 0 0 3px #35c88b20}.bms-map-legend i.attention,.bms-map-device.attention>i{background:#e9ae4b;box-shadow:0 0 0 3px #e9ae4b20}.bms-map-legend i.alarm,.bms-map-device.alarm>i{background:#f06464;box-shadow:0 0 0 3px #f0646420}.bms-room-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.bms-room-card{min-width:0;border:1px solid #2c4567;border-radius:10px;background:linear-gradient(145deg,#172d4b,#12233c);padding:11px}.bms-room-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-bottom:9px;border-bottom:1px solid #2a4262;margin-bottom:9px}.bms-room-head small{display:block;color:#8ea6c7;font-size:9px;margin-bottom:4px}.bms-room-head b{font-size:12px;color:#f0f5ff}.bms-room-head>span{font-size:9px;color:#9bb0cc;white-space:nowrap}.bms-room-devices{display:grid;gap:7px}.bms-map-device{width:100%;display:flex;align-items:center;gap:9px;text-align:left;padding:9px;border-radius:8px;border:1px solid #314c70;background:#1b3556;color:#eaf2ff;cursor:pointer}.bms-map-device:hover{border-color:#70a8ec;background:#213f66}.bms-map-device>i{flex:0 0 auto}.bms-map-device span{min-width:0;flex:1}.bms-map-device b{display:block;font-size:10px;overflow-wrap:anywhere}.bms-map-device small{display:block;color:#9bb0cc;font-size:9px;margin-top:3px}.bms-map-device em{font-style:normal;font-size:8px;font-weight:850;color:#b6c8df;max-width:88px;text-align:right}.bms-map-device.alarm{border-color:#80434b}.bms-map-device.alarm em{color:#ff9d9d}.bms-map-device.normal em{color:#69e0ad}.bms-device-list-title{margin-top:18px;padding-top:14px;border-top:1px solid #2a4262}.bms-device-list-title .bms-panel-title{margin-bottom:8px}
@media(max-width:800px){.bms-room-map{grid-template-columns:1fr}.bms-map-filters{grid-template-columns:1fr 1fr}.bms-category-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.bms-map-filters{grid-template-columns:1fr}.bms-category-chip{padding:8px}.bms-map-device em{max-width:74px}}

.bms-map-device-wrap{display:grid;gap:5px}.bms-map-edit{justify-self:start;border:0;background:transparent;color:#83b9f5;font-size:9px;padding:2px 4px;cursor:pointer}.bms-map-edit:hover{text-decoration:underline}

/* v1.2.9 — daftar perangkat BMS ringkas berbentuk tabel */
.bms-device-table-wrap{width:100%;overflow-x:auto;border:1px solid #293f60;border-radius:10px;background:#12233c}
.bms-device-table{width:100%;min-width:760px;border-collapse:collapse;color:#e6efff;font-size:11px}
.bms-device-table th{padding:11px 12px;text-align:left;background:#192f4e;color:#9fb5d3;font-size:9px;letter-spacing:.7px;white-space:nowrap;border-bottom:1px solid #345071}
.bms-device-table td{padding:10px 12px;vertical-align:top;border-bottom:1px solid #263c59}
.bms-device-tr:last-child td{border-bottom:0}.bms-device-tr:hover{background:#192f4e}
.bms-device-name{display:flex;align-items:center;gap:9px;min-width:150px}.bms-device-name b{display:block;font-size:11px;color:#f3f7ff}.bms-device-name small{display:block;margin-top:4px;color:#8fa7c7;font-size:9px}
.bms-parameter-summary{display:grid;grid-template-columns:repeat(2,minmax(130px,1fr));gap:5px;min-width:290px}
.bms-parameter-line{display:grid;grid-template-columns:minmax(80px,1fr) auto;gap:3px 8px;padding:6px 8px;border:1px solid #2c4567;border-radius:6px;background:#172b47}
.bms-parameter-line span{color:#c4d3e8;font-size:9px;overflow-wrap:anywhere}.bms-parameter-line b{font-size:10px;color:#fff;text-align:right}.bms-parameter-line small{grid-column:1/-1;color:#8ea6c7;font-size:8px}
.bms-input-list{display:grid;gap:5px;min-width:110px}.bms-input-list .small-btn{white-space:normal;text-align:left;font-size:9px;padding:5px 7px}
@media(max-width:700px){.bms-device-table{min-width:720px}.bms-device-table td{padding:8px}.bms-parameter-summary{grid-template-columns:1fr;min-width:190px}}

/* v1.3.0: area-first visual mapping */
.bms-area-picker{display:grid;grid-template-columns:minmax(180px,320px) 1fr;align-items:center;gap:8px 14px;padding:13px 14px;margin:4px 0 12px;border:1px solid #345276;border-radius:10px;background:#172b49}
.bms-area-picker label{grid-column:1/-1;color:#a9c2e3;font-size:10px;font-weight:900;letter-spacing:1px}
.bms-area-picker select{width:100%;padding:11px 12px;border:1px solid #45668f;border-radius:8px;background:#101f36;color:#f1f6ff;font-size:13px;font-weight:800}
.bms-area-picker p{margin:0;color:#91a9ca;font-size:11px;line-height:1.5}
.bms-room-map{grid-template-columns:1fr}
.bms-room-card{padding:14px}
.bms-room-devices{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:700px){.bms-area-picker{grid-template-columns:1fr}.bms-area-picker label{grid-column:auto}.bms-room-devices{grid-template-columns:1fr}}

/* v1.3.4 — MEP Care Enterprise Executive Dashboard */
.dashboard-enterprise{display:grid;gap:20px}.dash-hero{position:relative;isolation:isolate;overflow:hidden;min-height:190px;padding:30px 34px;border-radius:18px;background:linear-gradient(112deg,#102b50 0%,#164b80 58%,#2879b7 100%);color:#fff;box-shadow:0 14px 32px rgba(20,55,99,.16)}.dash-hero:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 78% 15%,#7fc4ff55,transparent 30%),linear-gradient(90deg,#0c2442 0%,transparent 72%)}.dash-hero-copy{position:relative;z-index:2;max-width:610px}.dash-eyebrow,.dash-kicker{font-size:9px;letter-spacing:1.5px;font-weight:850;color:#8ebeff}.dash-hero h2{font-size:34px;letter-spacing:-1px;margin:8px 0 5px;color:#fff}.dash-hero p{margin:0;color:#d9eaff;font-size:14px}.dash-hero-meta{display:flex;gap:20px;flex-wrap:wrap;margin-top:23px;color:#c5dcf7;font-size:10px}.dash-hero-meta span{display:flex;align-items:center;gap:7px}.live-dot,.dash-live-pill i{width:7px;height:7px;border-radius:50%;background:#3cdb9c;box-shadow:0 0 0 4px #3cdb9c24}.dash-hero-art{position:absolute;right:4%;bottom:0;width:42%;height:100%;opacity:.72;overflow:hidden}.hero-building{position:absolute;bottom:-18px;width:23%;border:1px solid #9bc9f355;background:linear-gradient(135deg,#a8d5ff44,#16416d88);box-shadow:inset 8px 0 18px #b8ddff20}.hero-building:after{content:"";position:absolute;inset:12px 9px;background:repeating-linear-gradient(0deg,transparent 0 13px,#b7dcff55 14px 16px),repeating-linear-gradient(90deg,transparent 0 15px,#b7dcff44 16px 18px)}.hero-building-a{height:70%;left:7%;transform:skewY(-7deg)}.hero-building-b{height:92%;left:36%;width:29%;transform:skewY(-4deg)}.hero-building-c{height:57%;right:4%;transform:skewY(-8deg)}.hero-orbit{position:absolute;width:250px;height:250px;border:1px solid #a9d8ff55;border-radius:50%;right:3%;top:-120px;box-shadow:0 0 0 22px #a9d8ff0c,0 0 0 48px #a9d8ff0a}
.dash-section-heading{display:flex;justify-content:space-between;align-items:end;gap:15px}.dash-section-heading h3{margin:4px 0;font-size:19px;letter-spacing:-.4px}.dash-section-heading p,.dash-card-head p{margin:3px 0 0;color:#7b8798;font-size:11px}.dash-section-heading .dash-kicker,.dash-card-head .dash-kicker{color:#6681a4}.dash-refresh{padding:9px 13px;border:1px solid #d9e3f0;border-radius:9px;background:#fff;color:#2457a6;font-size:11px;font-weight:750}.dash-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dash-kpi{position:relative;overflow:hidden;min-height:137px;padding:18px 19px;border-radius:14px;color:#fff;box-shadow:0 8px 20px #18375d12}.dash-kpi:after{content:"";position:absolute;width:120px;height:120px;border:1px solid #ffffff2c;border-radius:50%;right:-32px;bottom:-55px;box-shadow:0 0 0 13px #ffffff0b,0 0 0 28px #ffffff08}.kpi-blue{background:linear-gradient(125deg,#1768d7,#318fe7)}.kpi-green{background:linear-gradient(125deg,#12845e,#35b887)}.kpi-orange{background:linear-gradient(125deg,#c7771d,#efa63f)}.kpi-violet{background:linear-gradient(125deg,#6250b8,#8a73e3)}.kpi-icon{position:absolute;right:17px;top:14px;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#ffffff25;font-size:20px}.kpi-label{font-size:11px;color:#e4efff;font-weight:650}.kpi-value{font-size:30px;line-height:1.25;font-weight:850;letter-spacing:-1px;margin:9px 0 12px}.kpi-foot{display:flex;justify-content:space-between;gap:8px;color:#e4efff;font-size:9px}.kpi-trend{opacity:.85}
.dash-grid{display:grid;gap:14px}.dash-grid-top{grid-template-columns:1.05fr 1fr}.dash-grid-middle{grid-template-columns:1.25fr .75fr}.dash-grid-bottom{grid-template-columns:1.15fr .85fr}.dash-card{min-width:0;padding:18px;border:1px solid #e4eaf2;border-radius:14px;background:#fff;box-shadow:0 5px 18px rgba(24,48,82,.035)}.dash-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dash-card-head h3{font-size:14px;margin:4px 0 0;letter-spacing:-.2px}.dash-link{background:transparent;color:#2468bd;font-size:10px;font-weight:800;white-space:nowrap;padding:5px}.dash-live-pill{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:20px;background:#e9f8f1;color:#16835d;font-size:9px;font-weight:800;white-space:nowrap}.dash-live-pill i{width:6px;height:6px;box-shadow:none}.system-health-body{display:flex;align-items:center;gap:26px;min-height:135px}.health-ring{--health:0%;width:122px;height:122px;flex:0 0 122px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#1aa477 var(--health),#eaf0f6 0);position:relative}.health-ring:before{content:"";position:absolute;inset:10px;background:#fff;border-radius:50%}.health-ring>div{position:relative;text-align:center}.health-ring strong{display:block;font-size:25px;letter-spacing:-1px;color:#183b60}.health-ring small{display:block;color:#7b8798;font-size:9px}.health-legend{flex:1;display:grid;gap:10px}.health-legend-row{display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:8px;font-size:10px;color:#627087}.health-legend-row b{color:#1b2b42;font-size:11px}.cat-dot,.status-key,.wo-chart-rows i,.pm-stat-row i{width:8px;height:8px;border-radius:50%;display:inline-block}.cat-0{background:#2675d8}.cat-1{background:#25a57a}.cat-2{background:#e4a43d}.cat-3{background:#8a70d8}.cat-4{background:#df6e7a}.cat-5{background:#9aa8b9}.dash-card-footnote{margin-top:14px;padding-top:11px;border-top:1px solid #eef1f5;color:#8792a2;font-size:9px;line-height:1.5}.wo-status-chart{min-height:125px}.wo-stacked{display:flex;height:14px;overflow:hidden;border-radius:20px;background:#edf1f6;margin:15px 0 18px}.wo-stacked span:nth-child(1){background:#1ca779}.wo-stacked span:nth-child(2){background:#4e8fda}.wo-stacked span:nth-child(3){background:#e9a13a}.wo-chart-rows{display:grid;gap:12px}.wo-chart-rows>div{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:9px;font-size:10px;color:#65738a}.wo-chart-rows b{color:#1d2e46;font-size:11px}.key-done{background:#1ca779}.key-progress{background:#4e8fda}.key-late{background:#e9a13a}.dash-status-summary{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:11px;border-top:1px solid #eef1f5}.dash-status-summary span{display:flex;align-items:center;gap:5px;font-size:9px;color:#778397}.dash-status-summary .status-key{width:6px;height:6px}.pm-performance{display:flex;align-items:center;gap:30px;min-height:150px}.pm-donut{--pm:0%;width:132px;height:132px;flex:0 0 132px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#1ca779 var(--pm),#edf1f6 0);position:relative}.pm-donut:before{content:"";position:absolute;inset:13px;border-radius:50%;background:#fff}.pm-donut>div{position:relative;text-align:center}.pm-donut strong{display:block;font-size:25px;color:#193b60}.pm-donut small{display:block;color:#8792a2;font-size:9px}.pm-performance-stats{flex:1;display:grid;gap:15px}.pm-stat-row{display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:9px;color:#65738a;font-size:10px}.pm-stat-row b{color:#1c2d45;font-size:12px}.floor-summary{display:grid;gap:15px;padding:6px 0}.floor-row>div{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px;font-size:10px;color:#65738a}.floor-row b{color:#1e3450}.floor-row>i{height:7px;display:block;background:#edf1f6;border-radius:20px;overflow:hidden}.floor-row em{height:100%;display:block;border-radius:20px;background:linear-gradient(90deg,#2a70c8,#69a9ed)}.dash-recent-list{display:grid}.recent-activity-row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid #eef1f5}.recent-activity-row:last-child{border-bottom:0}.recent-activity-icon{width:31px;height:31px;flex:0 0 31px;border-radius:9px;background:#edf4ff;color:#2869b9;display:grid;place-items:center;font-size:16px}.recent-activity-main{flex:1;min-width:0}.recent-activity-main b{display:block;font-size:10px;color:#26384f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-activity-main small{display:block;color:#8994a4;font-size:9px;margin-top:4px}.recent-activity-state .badge{font-size:8px;padding:4px 6px}.cleaning-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.cleaning-kpis>div{padding:12px;border-radius:9px;background:#f5f8fc}.cleaning-kpis span{display:block;color:#7b8798;font-size:9px}.cleaning-kpis b{display:block;color:#1c3e65;font-size:20px;margin-top:5px}.dash-clean-table{margin-top:12px;max-height:190px;overflow:auto}.dash-footer-note{display:flex;justify-content:space-between;gap:10px;padding:10px 2px;color:#9aa5b4;font-size:9px}.dash-footer-note span:first-child{font-weight:900;letter-spacing:1.3px;color:#6d7d91}.dash-empty-inline{padding:18px 8px;color:#8a96a6;text-align:center;font-size:10px}
@media(max-width:1100px){.dash-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-grid-middle{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.dashboard-enterprise{gap:14px}.dash-hero{min-height:165px;padding:23px 20px}.dash-hero h2{font-size:28px}.dash-hero-art{width:48%;opacity:.38}.dash-section-heading{align-items:start}.dash-grid-top,.dash-grid-middle,.dash-grid-bottom{grid-template-columns:1fr}.dash-card{padding:15px}.system-health-body{gap:16px}.pm-performance{gap:18px}.dash-footer-note{flex-direction:column}.dash-clean-table{display:none}}
@media(max-width:430px){.dash-kpis{gap:9px}.dash-kpi{padding:13px;min-height:125px}.kpi-value{font-size:25px}.kpi-icon{width:29px;height:29px;right:12px;top:12px}.system-health-body{align-items:flex-start}.health-ring{width:100px;height:100px;flex-basis:100px}.health-ring strong{font-size:21px}.dash-hero-meta{gap:9px;flex-direction:column;margin-top:15px}}

/* Unified Energy page */
.energy-entry-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.energy-module{min-width:0}
.energy-module-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px}
.compact-stats{grid-template-columns:repeat(2,minmax(0,1fr));margin:10px 0}
.compact-stats .stat-card{padding:12px}
.energy-summary-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.energy-module .table-wrap{overflow-x:auto}
@media(max-width:900px){.energy-entry-grid{grid-template-columns:1fr}.energy-summary-stats{grid-template-columns:1fr}}

/* Energy recording photo evidence */
.energy-photo-preview-wrap{display:flex;flex-direction:column;gap:8px;align-items:flex-start;margin-top:8px}
.energy-photo-preview{max-width:240px;max-height:180px;object-fit:contain;border:1px solid var(--border,#dbe2ea);border-radius:10px;background:#f8fafc;padding:4px}
.energy-photo-thumb{width:64px;height:48px;object-fit:cover;border-radius:7px;border:1px solid var(--border,#dbe2ea)}


/* MEP Care v1.4.5 — PM calendar: month, week, daily agenda */
.pm-calendar-toolbar{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:16px 0;padding:16px 18px}
.pm-calendar-nav{display:flex;align-items:center;gap:9px;min-width:0}
.pm-calendar-nav h3{margin:0 0 0 10px;color:#102f5d;font-size:20px}
.pm-calendar-filters{display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.pm-calendar-filters label{display:grid;gap:5px;font-size:12px;font-weight:700;color:#52627a}
.pm-calendar-filters select,.pm-calendar-filters input{min-height:38px;border:1px solid #d4deeb;border-radius:8px;padding:7px 10px;background:#fff;color:#18345b}
.pm-calendar-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 14px}
.pm-cal-stat{background:#fff;border:1px solid #e0e8f2;border-radius:12px;padding:12px 16px;display:flex;align-items:center;gap:12px;box-shadow:0 3px 12px rgba(20,52,91,.04)}
.pm-cal-stat b{font-size:23px;color:#12386d}.pm-cal-stat span{font-size:12px;color:#64748b}
.pm-calendar-panel{padding:0;overflow:hidden}.pm-calendar{min-width:0}
.pm-cal-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:#eff4fb;border-bottom:1px solid #dce5f0}
.pm-cal-weekdays>div{text-align:center;padding:12px 5px;font-size:12px;font-weight:800;color:#344d70}
.pm-cal-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.pm-cal-day{min-height:126px;padding:8px;border-right:1px solid #e2e9f2;border-bottom:1px solid #e2e9f2;background:#fff;min-width:0}
.pm-cal-day:nth-child(7n){border-right:0}.pm-cal-day.outside{background:#f8fafc;color:#9aa7b8}.pm-cal-day.today{background:#f0f7ff;box-shadow:inset 0 0 0 1px #8bbcff}
.pm-cal-day-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;color:#18365e}.pm-cal-day-head small{font-size:10px;color:#718096}
.pm-cal-day-events{display:grid;gap:5px;min-width:0}
.pm-cal-event{display:flex;flex-direction:column;gap:2px;text-align:left;width:100%;min-width:0;border:0;border-left:3px solid #2876d8;border-radius:6px;padding:5px 7px;background:#e8f2ff;color:#174b91;cursor:pointer;font-size:11px;line-height:1.25}
.pm-cal-event span,.pm-cal-event small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pm-cal-event small{opacity:.78;font-size:10px}
.pm-cal-event.done{background:#e4f7eb;border-left-color:#2db765;color:#17663a}.pm-cal-event.progress{background:#fff3dc;border-left-color:#f3a51b;color:#88520a}.pm-cal-event.late{background:#ffe8e8;border-left-color:#e34a4a;color:#9a2525}
.pm-cal-more{border:0;background:transparent;color:#1d65bb;text-align:left;font-size:11px;cursor:pointer}
.pm-cal-week-columns{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:330px}
.pm-cal-week-col{border-right:1px solid #e2e9f2;padding:10px;min-width:0}.pm-cal-week-col:last-child{border-right:0}.pm-cal-week-col.today{background:#f0f7ff}
.pm-cal-week-col header{display:flex;flex-direction:column;gap:3px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #e4eaf2;color:#385273;font-size:12px}.pm-cal-week-col header b{font-size:18px;color:#15365f}
.pm-cal-no-event{font-size:11px;color:#9aa7b8;padding:8px 2px}
.pm-cal-agenda{padding:8px 18px}.pm-cal-agenda-row{display:grid;grid-template-columns:58px minmax(0,1fr) auto auto;align-items:center;gap:15px;padding:14px 4px;border-bottom:1px solid #e8edf4}
.pm-cal-agenda-date{display:grid;justify-items:center;border-radius:9px;background:#eef5ff;padding:7px;color:#1c5ca8}.pm-cal-agenda-date b{font-size:21px}.pm-cal-agenda-date span{font-size:11px}
.pm-cal-agenda-main{display:grid;gap:3px;min-width:0}.pm-cal-agenda-main span,.pm-cal-agenda-main small{color:#64748b;font-size:12px}
.pm-schedule-table-panel{margin-top:16px}.pm-schedule-table-panel .panel-head{padding:16px 18px 0}
@media(max-width:900px){.pm-calendar-toolbar{align-items:stretch;flex-direction:column}.pm-calendar-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.pm-cal-day{min-height:105px;padding:5px}.pm-cal-week-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.pm-cal-week-col{border-bottom:1px solid #e2e9f2}.pm-cal-agenda-row{grid-template-columns:48px minmax(0,1fr);}.pm-cal-agenda-row>div:nth-child(3),.pm-cal-agenda-row>button{grid-column:2;justify-self:start}}
@media(max-width:560px){.pm-calendar-nav{flex-wrap:wrap}.pm-calendar-nav h3{width:100%;margin:5px 0}.pm-calendar-filters{display:grid;grid-template-columns:1fr 1fr}.pm-calendar-filters input{grid-column:1/-1}.pm-cal-weekdays>div{font-size:10px}.pm-cal-day{min-height:76px;padding:3px}.pm-cal-day-head{font-size:11px}.pm-cal-day-head small{display:none}.pm-cal-event{padding:4px;font-size:9px}.pm-cal-event span,.pm-cal-event small{display:none}.pm-cal-week-columns{grid-template-columns:1fr}.pm-calendar-summary{gap:7px}.pm-cal-stat{padding:10px}.pm-cal-stat b{font-size:19px}.pm-cal-stat span{font-size:10px}}

/* Master Area Cleaning: selectable checklist items */
.cleaning-checklist-picker{border:1px solid var(--line);border-radius:11px;padding:13px;background:#fbfcff;display:grid;gap:15px}
.cleaning-check-group,.cleaning-custom-wrap{display:grid;gap:9px}
.cleaning-check-group>b,.cleaning-custom-wrap>b{font-size:12px;color:#344054}
.cleaning-check-options,.cleaning-custom-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.cleaning-check-option{display:flex!important;align-items:center;gap:9px;padding:9px 10px;border:1px solid #e1e7f0;border-radius:8px;background:#fff;font-size:12px!important;font-weight:500!important;cursor:pointer;min-height:39px}
.cleaning-check-option:has(input:checked){border-color:#7c9af2;background:#eef3ff;color:#214bb2}
.cleaning-check-option input{width:16px!important;height:16px;min-width:16px;margin:0;accent-color:var(--blue)}
.cleaning-custom-add{display:flex;gap:8px;align-items:center}
.cleaning-custom-add input{flex:1;min-width:0}
@media(max-width:700px){.cleaning-check-options{grid-template-columns:1fr}.cleaning-custom-add{align-items:stretch;flex-direction:column}.cleaning-custom-add button{width:100%}}
