:root{--navy:#1f2a44;--red:#c8102e;--bg:#f3f5f9;--line:#e1e5ee;--ink:#1b1f2a;--muted:#667085}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:#2453c7}h1{font-size:22px;margin:4px 0}h2{font-size:17px;margin:14px 0 8px}h3{font-size:15px;margin:4px 0 10px}
.app{padding-left:64px}.side{position:fixed;inset:0 auto 0 0;width:64px;background:#17213a;display:flex;flex-direction:column;z-index:30;box-shadow:2px 0 6px #0002}
.side .brand{justify-content:center;padding:12px 0;color:#fff;text-decoration:none}.side .brand .logo{background:var(--red);color:#fff}.side .brand span:last-child{display:none}
.side nav{flex:1;overflow-y:auto;overflow-x:visible;scrollbar-width:none}.side nav a,.side .out{position:relative;display:flex;align-items:center;justify-content:center;height:46px;color:#9fb0cc;text-decoration:none;border-left:3px solid transparent}
.side a:hover{background:#ffffff14;color:#fff}.side nav a.on,.side .bottom a.on{background:#2b3a5e;color:#fff;border-left-color:var(--red)}.side .bottom a{position:relative;display:flex;align-items:center;justify-content:center;height:46px;color:#9fb0cc;text-decoration:none;border-left:3px solid transparent}.side .bottom{border-top:1px solid #ffffff1f}
.side a>span{display:none}
.tip{position:fixed;background:#1b1f2a;color:#fff;font-size:12px;padding:5px 9px;border-radius:5px;pointer-events:none;z-index:99;white-space:nowrap}
.brand.big{color:var(--ink);font-size:22px;padding:0 0 6px;display:flex;align-items:center;gap:8px;font-weight:700}.logo{background:var(--red);color:#fff;border-radius:7px;width:30px;height:30px;display:inline-grid;place-items:center;font-weight:800}
.topbar{display:flex;gap:14px;align-items:center;background:#fff;border-bottom:1px solid var(--line);padding:0 18px;height:48px;position:sticky;top:0;z-index:20}.topbar .burger{display:none}.topbar .tt{display:none}.topbar .org{font-weight:700;color:var(--navy)}.topbar .who{margin-left:auto;color:var(--muted);font-size:13px;text-transform:none}.scrim{display:none}
.alerts{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:16px}.alerts h3{display:inline-block;background:var(--red);color:#fff;margin:0;padding:7px 26px 7px 14px;clip-path:polygon(0 0,100% 0,88% 100%,0 100%)}
.alerts .al{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:6px 20px;padding:12px 16px}.alerts a{display:flex;justify-content:space-between;align-items:center;text-decoration:none;color:var(--ink)}.alerts a b{background:var(--red);color:#fff;border-radius:12px;padding:1px 9px;font-size:12px;min-width:28px;text-align:center}.alerts a b.z{background:#d0d5dd}
main{max-width:1250px;margin:0 auto;padding:20px 26px 80px}.wide main{max-width:none}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}.crumbs{font-size:13px;color:var(--muted);margin-bottom:6px}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px;margin:0 0 14px}.muted{color:var(--muted)}.small{font-size:12px}.red{color:#c62828}.err{color:#c62828}
.flash{background:#e8f4ff;border:1px solid #b6dafc;padding:10px 14px;border-radius:8px;margin-bottom:12px}.notice{background:#fff7e6;border:1px solid #ffd591;border-radius:8px;padding:10px;margin:8px 0}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}.grid .wide,.grid textarea,.grid>button,.grid>h3{grid-column:1/-1}.grid label.wide{grid-column:1/-1}.compact{gap:0 12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.row{display:flex;gap:10px;align-items:center;justify-content:space-between}
label{display:block;font-size:13px;font-weight:600;margin:6px 0;color:#344054}input,select,textarea{display:block;width:100%;padding:9px 10px;margin-top:4px;border:1px solid #cfd4dc;border-radius:7px;font:inherit;font-weight:400;background:#fff}
textarea{min-height:70px}input[type=checkbox],input[type=radio]{width:auto;display:inline}label.chk{display:flex;gap:8px;align-items:center;font-weight:400}
button,.btn{background:var(--red);color:#fff;border:0;border-radius:7px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block}
button.alt,.btn.alt{background:var(--navy)}button.small,.btn.small{padding:6px 11px;font-size:13px}button.link{background:none;color:#2453c7;padding:2px 4px;font-weight:500}button:disabled{opacity:.4;cursor:default}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}form.inline{display:inline}
.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#f8f9fb;border-bottom:1px solid var(--line);padding:8px 10px}
td{padding:8px 10px;border-bottom:1px solid #eef0f4;vertical-align:top}tr:hover td{background:#fafbff}.empty{padding:10px 0}
.tabbar{display:flex;gap:2px;border-bottom:2px solid var(--line);margin:10px 0 16px;overflow:auto}.tabbar a{padding:9px 14px;text-decoration:none;color:#475467;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;font-weight:500}
.tabbar a.on{color:var(--red);border-bottom-color:var(--red)}.cnt{background:#eef0f4;color:#475467;border-radius:10px;padding:0 7px;font-size:12px;font-weight:600}
.badge{font-size:12px;padding:2px 9px;border-radius:12px;background:#eef0f4;white-space:nowrap;font-weight:600;color:#344054}
.b-enquiry{background:#f4ebff;color:#6941c6}.b-quote-sent,.b-sent,.b-quoted{background:#fef0c7;color:#93370d}.b-approved{background:#d1fadf;color:#05603a}.b-scheduled{background:#dbeafe;color:#1e40af}
.b-in-progress{background:#ffedd5;color:#9a3412}.b-complete,.b-pass,.b-active,.b-fixed,.b-in-service{background:#dcfce7;color:#166534}.b-invoiced{background:#e0e7ff;color:#3730a3}.b-cancelled,.b-declined,.b-ended{background:#f2f4f7;color:#667085}
.b-fail,.b-critical,.b-high,.b-faulty{background:#fee4e2;color:#b42318}.b-medium,.b-needs-quoting{background:#fef0c7;color:#93370d}.b-low,.b-info{background:#eef0f4}.b-admin{background:#fee4e2}.b-office{background:#dbeafe}.b-engineer{background:#dcfce7}
.jt{font-size:12px;font-weight:600;padding:1px 7px;border-radius:5px}.jt-installation{background:#ede9fe;color:#5b21b6}.jt-scheduled-service{background:#dbeafe;color:#1e40af}.jt-reactive{background:#ffedd5;color:#9a3412}.jt-emergency-call-out{background:#fee2e2;color:#b91c1c}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;text-decoration:none;color:var(--ink);border-top:4px solid var(--navy)}
.kpi b{font-size:28px;display:block}.kpi span{color:var(--muted);font-size:13px}.kpi.bad{border-top-color:#d92d20}.kpi.bad b{color:#d92d20}.kpi.warn{border-top-color:#f79009}
dl.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 10px;margin:0}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}
.search input,.filters input,.filters select{max-width:280px;display:inline-block;margin-right:6px}.filters{margin-bottom:12px}
.sysgroup{margin-bottom:18px}.sysgroup .head{margin-bottom:4px}
.stepper{display:flex;list-style:none;padding:0;margin:8px 0 14px;counter-reset:s;flex-wrap:wrap}.stepper li{flex:1;min-width:95px;padding:8px 10px;background:#eef0f4;color:#667085;font-size:13px;font-weight:600;position:relative;margin-right:3px}
.stepper li:first-child{border-radius:7px 0 0 7px}.stepper li:last-child{border-radius:0 7px 7px 0}.stepper li.done{background:#d1fadf;color:#05603a}.stepper li.on{background:var(--navy);color:#fff}.stepper li.skip{text-decoration:line-through;opacity:.6}
.board{display:grid;grid-template-columns:repeat(6,minmax(190px,1fr));gap:10px;overflow:auto}.col{background:#eceff5;border-radius:10px;padding:8px;min-height:300px}.col h3{font-size:13px;margin:4px 4px 8px}
.kcard{display:block;background:#fff;border-radius:8px;padding:9px;margin-bottom:8px;text-decoration:none;color:var(--ink);border:1px solid var(--line);font-size:13px}.kcard:hover{border-color:#98a2b3}
.calwrap{display:grid;grid-template-columns:1fr 240px;gap:12px}.mcal{display:grid;background:var(--line);gap:1px;border:1px solid var(--line);border-radius:8px;overflow:auto}
.mcal>div{background:#fff}.cal-dow{font-weight:700;font-size:12px;padding:8px;text-align:center;background:#f8f9fb!important}.cal-eng{padding:10px;font-weight:600;background:#f8f9fb!important}
.cal-cell{min-height:92px;padding:4px}.cal-cell.over{background:#e0ecff!important}.today{background:#fffbea!important}
.ev{display:block;font-size:12px;border-radius:6px;padding:4px 6px;margin-bottom:4px;cursor:grab;border-left:4px solid #999;background:#f2f4f7}.ev a{color:inherit;text-decoration:none}.ev small{display:block;color:#475467}
.ev.jt-installation{border-color:#7c3aed;background:#f3efff}.ev.jt-scheduled-service{border-color:#2563eb;background:#eef4ff}.ev.jt-reactive{border-color:#ea580c;background:#fff4ec}.ev.jt-emergency-call-out{border-color:#dc2626;background:#fff0f0}
.ev.st-complete{opacity:.55}.todo{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px;max-height:75vh;overflow:auto}.legend{margin-top:10px;display:flex;gap:8px}.legend .ev{display:inline-block;cursor:default}
.fb{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fb-row{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px;display:grid;grid-template-columns:1fr auto}.fb-row details{grid-column:1/-1}
.fb-row.indent{margin-left:24px}.fb-head{background:#f8f9fb;border-left:4px solid var(--navy)}.fb-type{font-size:11px;background:#eef0f4;border-radius:4px;padding:1px 6px;margin-right:6px;color:#475467}.preview{position:sticky;top:10px;max-height:90vh;overflow:auto}
.login{max-width:380px;margin:12vh auto}.bare main{padding-top:0}
/* job sheet */
.sheet .fsec{font-size:15px;border-bottom:2px solid var(--navy);padding-bottom:4px;margin-top:22px}.ftitle{margin:0}.frow{display:block;padding:8px 0;border-bottom:1px solid #f0f2f5;margin:0}
.frow.indent{margin-left:22px;padding-left:10px;border-left:3px solid #e1e5ee}.frow .fl{display:block;font-weight:600;font-size:14px;margin-bottom:4px}.frow.auto .fv{color:#475467}
.frow.tick{display:flex;justify-content:space-between;gap:12px;align-items:center}.frow.tick .fl{font-weight:400}.frow.tick input{width:26px;height:26px;flex:none}
.seg{display:inline-flex;border:1px solid #cfd4dc;border-radius:8px;overflow:hidden;margin:2px 0 6px}.seg label{margin:0}.seg input{position:absolute;opacity:0}.seg span{display:block;padding:9px 16px;font-weight:600;cursor:pointer;border-right:1px solid #cfd4dc}
.seg label:last-child span{border-right:0}.seg input:checked+span{background:var(--navy);color:#fff}.seg input:checked+.s-pass{background:#16a34a}.seg input:checked+.s-fail{background:#dc2626}.seg input:checked+.s-n-a{background:#667085}
.fnote{font-style:italic;color:var(--muted)}.decl{background:#f8f9fb;border-radius:8px;padding:10px;margin:8px 0;font-size:13px}.arow{display:grid;grid-template-columns:1.3fr auto 1fr;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed #e1e5ee}
.sig{width:100%;height:150px;border:2px dashed #98a2b3;border-radius:8px;background:#fff;touch-action:none;display:block}.sigprev{max-height:60px;display:block}.thumbs img{height:70px;margin:4px 4px 0 0;border-radius:6px}
.defrow{display:grid;grid-template-columns:1fr 120px 2fr;gap:8px;margin-bottom:6px}.sticky{position:sticky;bottom:0;background:#fff;padding:10px 0;display:flex;gap:10px;border-top:1px solid var(--line);margin-top:14px}.sticky button{flex:1;padding:14px;font-size:16px}
.sheethead{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px}.mycard{display:block;background:#fff;border:1px solid var(--line);border-left:5px solid var(--navy);border-radius:10px;padding:12px;margin-bottom:10px;text-decoration:none;color:var(--ink)}
.mycard.late{border-left-color:#dc2626}.mycard>div{margin-top:3px}.totals{text-align:right;margin:10px 0;font-size:15px}.lineadd input{margin:0}
@media(max-width:900px){.app{padding-left:0}.side{width:240px;transform:translateX(-100%);transition:transform .2s}.navopen .side{transform:none}.navopen .scrim{display:block;position:fixed;inset:0;background:#0006;z-index:25}
.side .brand{justify-content:flex-start;padding:14px 16px;gap:10px;font-weight:700}.side .brand span:last-child,.side a>span{display:inline}.side nav a,.side .bottom a{justify-content:flex-start;gap:14px;padding:0 18px}
.topbar{background:#17213a;color:#fff;padding:0 10px}.topbar .burger{display:block;background:none;font-size:22px;padding:0 6px;color:#fff}.topbar .tt{display:block}.topbar .org,.topbar .who{display:none}main{padding:14px 12px 80px}.grid,.grid2,.fb,.calwrap{grid-template-columns:1fr}.arow,.defrow{grid-template-columns:1fr}.board{grid-template-columns:repeat(6,220px)}dl.kv{grid-template-columns:120px 1fr}}
/* ---- scheduler (week board + map + utilisation) ---- */
.sched{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;align-items:start}.sched .calwrap{display:block;overflow:auto;max-height:calc(100vh - 170px);border-radius:8px}
.sched .mcal{overflow:visible}.sched .cal-dow{position:sticky;top:0;z-index:2}.sched .cal-eng{position:sticky;left:0;z-index:1;display:flex;gap:8px;align-items:flex-start}.cal-eng small{display:block;font-weight:400;color:var(--muted);font-size:11px}
.av{flex:none;width:30px;height:30px;border-radius:50%;background:#e8ecf5;color:#17213a;display:grid;place-items:center;font-size:12px;font-weight:700}
.sched .cal-cell{background:#fbf7ec!important;min-height:120px;padding:5px}.sched .cal-cell.today{background:#fff5d6!important}
.sched .ev{background:#fff;border:1px solid #e3c779;border-left-width:4px;box-shadow:0 1px 2px #0001;padding:6px 7px;margin:0}.sched .ev .ref{font-size:11px;color:var(--muted);margin:2px 0}.sched .ev .tag{font-size:10px;padding:0 5px;border-radius:4px;background:#f2f4f7;color:#344054}
.sched .ev .cn{font-weight:700;line-height:1.25}.sched .ev small{line-height:1.3;color:#475467}.ev.hl{outline:3px solid #2563eb}
.gap{text-align:center;font-size:10.5px;color:#7a5d12;padding:3px 0;font-weight:600}
.sched-side{display:flex;flex-direction:column;gap:12px;position:sticky;top:60px}#map{height:300px;padding:0;overflow:hidden;margin:0}
.util h3,.sched-side .todo h3{margin:0 0 8px}.ustats{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:8px}.ustats b{display:block;font-size:18px}.ustats span{font-size:11px;color:var(--muted)}
.ubar{display:flex;height:7px;background:#e4e7ec;border-radius:4px;overflow:hidden;margin:4px 0}.ubar i{background:#60a5fa}.ubar i.tr{background:#facc15}
.ulegend{font-size:11px;color:var(--muted);margin-bottom:8px}.ulegend span{display:inline-block;width:9px;height:9px;border-radius:2px;margin:0 3px 0 6px}.k1{background:#60a5fa}.k2{background:#facc15}
.urow{display:grid;grid-template-columns:1fr auto 40px;gap:2px 8px;align-items:center;font-size:13px;padding:5px 0;border-top:1px solid var(--line)}.urow .ubar{grid-column:1/-1}.urow small{color:var(--muted)}.urow b{text-align:right}
.sched-side .todo{max-height:40vh}.sched-side .todo .ev{margin-bottom:6px}.small{font-size:12px}
@media(max-width:1200px){.sched{grid-template-columns:1fr}.sched-side{position:static}}
.green{color:#15803d}
.otw{margin:-6px 0 12px;padding:0 4px}
#smap{height:260px;border-radius:8px;border:1px solid var(--line)}
.syncbadge{background:#fff7e0;border-bottom:1px solid #f1d58a;color:#7a5d12;padding:8px 16px;font-size:13px}.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#15803d;color:#fff;padding:10px 16px;border-radius:8px;z-index:200;box-shadow:0 4px 14px #0003}
.portalhead{margin-bottom:12px}.portalhead h1{margin:0}
.head.sub{margin-top:-6px}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.seg a{padding:6px 12px;font-size:13px;color:inherit;text-decoration:none;border-right:1px solid var(--line)}.seg a:last-child{border-right:0}.seg a.on{background:#17213a;color:#fff}
.viewsel{width:auto;min-width:200px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}.teamadd{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}
.month{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}.mdow{background:#f3f5f9;padding:6px;font-size:12px;font-weight:600}.mday{background:#fff;min-height:104px;padding:4px;display:flex;flex-direction:column;gap:2px}.mday.out{background:#fafbfc;opacity:.6}.mday.today{box-shadow:inset 0 0 0 2px #c8102e}.mday .dn{font-size:12px;font-weight:600;color:inherit}.mev{font-size:11px;padding:2px 4px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;text-decoration:none;background:#475467}.mev.jt-installation{background:#7c3aed}.mev.jt-scheduled-service{background:#2563eb}.mev.jt-reactive{background:#d97706}.mev.jt-emergency-call-out{background:#c8102e}.mday .more{font-size:11px}
/* Simpro-style flyouts */
.ni{position:relative}.ni .fx{display:none}.fly{display:none;position:fixed;left:64px;z-index:120;background:#1f3556;color:#fff;min-width:200px;padding:12px 6px 10px;border-radius:0 6px 6px 0;box-shadow:6px 6px 18px #0005}
.ni.open .fly{display:block}.fly .ft{font-weight:700;font-size:17px;padding:0 14px 6px}.fcols{display:flex;gap:6px}.fcol{display:flex;flex-direction:column;min-width:170px}.fcol small{color:#9fb0cc;padding:2px 14px 6px;font-size:11px}
.side .fly a{display:block;height:auto;padding:7px 14px;color:#fff;border:0;font-size:14px;text-decoration:none;white-space:nowrap;border-radius:4px}.side .fly a:hover{background:#ffffff1f}.side .fly a b{color:#fff}
.ni.open>a{background:#2b3a5e;color:#fff}
@media(max-width:900px){.ni .fx{display:block;position:absolute;right:6px;top:7px;width:32px;height:32px;padding:0;background:none;border:0;color:#9fb0cc;font-size:14px;cursor:pointer}.ni.open .fx{transform:rotate(180deg)}
 .fly{position:static;box-shadow:none;border-radius:0;background:#111a2e;padding:4px 0 8px 16px;min-width:0}.fly .ft{display:none}.fcols{flex-direction:column;gap:0}.fcol{min-width:0}.fcol small{padding:6px 18px 2px}.side .fly a{padding:8px 18px;font-size:13px}}
/* expandable sidebar (rail 64px <-> 220px) */
.app,.side{transition:padding-left .22s ease,width .22s ease}.side .nsec{display:none}
.navtog{display:flex;align-items:center;justify-content:center;width:100%;height:40px;background:none;border:0;border-top:1px solid #ffffff14;color:#9fb0cc;cursor:pointer;font-size:16px;gap:12px}.navtog:hover{color:#fff;background:#ffffff14}
.navtog i{font-style:normal;display:inline-block;transition:transform .22s}.navtog span{display:none;font-size:13px}
@media(min-width:901px){.navx.app{padding-left:220px}.navx .side{width:220px}.navx .side .brand{justify-content:flex-start;padding:14px 16px;gap:10px;font-weight:700}
 .navx .side .brand span:last-child,.navx .side a>span,.navx .navtog span{display:inline;white-space:nowrap}.navx .navtog{justify-content:flex-start;padding:0 20px}.navx .navtog i{transform:rotate(180deg)}
 .navx .side nav a,.navx .side .bottom a{justify-content:flex-start;gap:14px;padding:0 18px}.navx .side .nsec{display:block;padding:14px 18px 4px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#6f80a0;font-weight:600}
 .navx .ni{position:relative}.navx .ni.has .fx{display:flex;position:absolute;right:6px;top:9px;width:28px;height:28px;align-items:center;justify-content:center;background:none;border:0;color:#9fb0cc;border-radius:4px;cursor:pointer}.navx .ni.has .fx:hover{background:#ffffff1f;color:#fff}
 .navx .ni.open .fx{transform:rotate(180deg)}.navx .fly{display:none;position:static;box-shadow:none;border-radius:0;background:#111a2e;padding:4px 0 8px 16px;min-width:0;width:auto}.navx .ni.open .fly{display:block}
 .navx .fly .ft{display:none}.navx .fcols{flex-direction:column;gap:0}.navx .fcol{min-width:0}.navx .fcol small{padding:6px 18px 2px;display:block}.navx .side .fly a{padding:7px 18px;font-size:13px}
 body:not(.navanim).app,body:not(.navanim) .side{transition:padding-left .22s ease,width .22s ease}}
.side .brand{display:flex!important;align-items:center;min-height:52px;box-sizing:border-box}.side .brand .logo{flex:none;display:inline-grid!important}.navx .side .brand{gap:10px}
/* compliance */
.due{font-size:12px;padding:2px 8px;border-radius:999px;background:#eef2f7;white-space:nowrap}.due.overdue{background:#fde8e8;color:#b42318;font-weight:600}.due.soon{background:#fff4e0;color:#a15c00;font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:0 0 16px}.kpi{display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--line,#e5e7eb);border-top:3px solid #1f2a44;border-radius:10px;padding:14px;text-decoration:none;color:inherit}
.kpi b{font-size:26px}.kpi small{color:#667085}.kpi.red{border-top-color:#d92d20}.kpi.amber{border-top-color:#f79009}
.warnbox{background:#fff4e0;border:1px solid #f5c26b;border-radius:8px;padding:10px 14px;margin:8px 0 14px;font-size:14px}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px}.filters input,.filters select{width:auto;min-width:160px;margin:0}
.crumbs{font-size:13px;color:#667085;margin-bottom:6px}
.infobox{background:#eef4ff;border:1px solid #b2ccff;border-radius:8px;padding:10px 14px;margin:8px 0 14px;font-size:14px}
/* floor plans */
.plangrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:14px}.plancard{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit}.plancard img{width:100%;aspect-ratio:4/3;object-fit:contain;background:#f3f5f9;border-radius:6px}
.planwrap{display:grid;grid-template-columns:1fr 280px;gap:14px;align-items:start}.planwrap.print{grid-template-columns:1fr}.plan{position:relative;width:100%;border:1px solid #d8dde6;border-radius:8px;overflow:hidden;background:#fff;touch-action:none}.plan img{width:100%;height:100%;display:block;user-select:none}
.pin{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:3px;background:#fff;border:2px solid #1e3a8a;border-radius:14px;padding:1px 6px 1px 3px;font-size:11px;text-decoration:none;color:#0f172a;box-shadow:0 1px 3px #0003;cursor:grab;z-index:2;white-space:nowrap}.pin.focus{outline:3px solid #f59e0b;z-index:3}.pin.s-faulty,.pin.s-fault{border-color:#dc2626}.pin.s-decommissioned{opacity:.5}
.cone{position:absolute;width:40%;aspect-ratio:1;transform:translate(-50%,-50%);background:rgba(37,99,235,.18);pointer-events:none;z-index:1;width:18%}.planside .chip{padding:6px 8px;border:1px solid #e2e8f0;border-radius:6px;margin:4px 0;cursor:grab;background:#fff}
@media(max-width:900px){.planwrap{grid-template-columns:1fr}}@media print{.printplan .side,.printplan .top{display:none!important}}
/* Beacon sidebar tidy: groups, + New, settings/user menus */
.side nav a,.side .bottom a,.side .navtog{height:40px}.side .ngh{display:none}.side .ng+.ng{border-top:1px solid #ffffff1a;margin-top:4px;padding-top:4px}
.side .newbtn>a{margin:6px 8px;height:38px!important;border-radius:8px;background:#FF6A00;color:#1E2124!important;border-left:0!important;justify-content:center}.side .newbtn>a:hover{background:#FF8A3D}
.side .bottom .ni>a,.side .bottom .navtog{display:flex;align-items:center;justify-content:center;width:100%;color:#c9ced4;text-decoration:none;border:0;border-left:3px solid transparent;background:none;cursor:pointer}
.side .ulink{display:block;width:100%;text-align:left;background:none!important;border:0;color:#fff!important;padding:7px 14px;font:inherit;font-size:14px;cursor:pointer;border-radius:4px}.side .ulink:hover{background:#ffffff1f!important}
.side .fly{background:#2B2F33!important;color:#fff}.side .fcol small{color:#FFB300}
.viewtog{margin-right:8px;vertical-align:middle}.viewtog a.on{background:#2B2F33!important;color:#fff!important}
@media(min-width:901px){.navx .side .ngh{display:flex;width:100%;align-items:center;justify-content:space-between;background:none!important;border:0;color:#9aa1a8!important;font:600 10.5px/1 inherit;letter-spacing:.08em;text-transform:uppercase;padding:10px 18px 6px;cursor:pointer}
 .navx .side .ngh:hover{color:#fff!important}.navx .side .ngh i{font-style:normal;transition:transform .15s}.navx .side .ng.shut .ngh i{transform:rotate(-90deg)}.navx .side .ng.shut .ngb{display:none}
 .navx .side .ng+.ng{border-top:0;margin-top:0;padding-top:0}.navx .side .newbtn>a{justify-content:flex-start;padding:0 14px!important;margin:8px 12px}
 .navx .side .bottom .ni>a,.navx .side .bottom .navtog{justify-content:flex-start;gap:14px;padding:0 18px}}
@media(max-width:900px){.side .ngh{display:flex;width:100%;justify-content:space-between;background:none;border:0;color:#9aa1a8;font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:10px 18px 4px}.side .ng.shut .ngb{display:none}.side .ng+.ng{border-top:0}
 .side .bottom .ni>a{justify-content:flex-start;gap:14px;padding:0 18px}.side .newbtn>a{justify-content:flex-start;padding:0 14px}}
body.dark .side .fly{background:#1B1D20!important}body.dark .viewtog a.on{background:#FF6A00!important;color:#1E2124!important}
.side .newbtn>a{display:flex!important;align-items:center;gap:10px;font-weight:700;font-size:14px;box-sizing:border-box}.side .newbtn>a svg{width:20px;height:20px}.side .newbtn .fx{display:none!important}
@media(min-width:901px){.navx .side .ngh{font-size:10.5px;font-weight:600;white-space:nowrap;text-align:left;line-height:1;padding:9px 18px 5px}
 .navx .side nav a,.navx .side .bottom .ni>a,.navx .side .navtog{height:36px}.navx .side nav .ni.has .fx{top:4px}.navx .side .bottom .ni.has .fx{top:4px}}
.side .newbtn>a{text-decoration:none!important}
