:root{--orange:#fc7105;--orange-dk:#d45f02;--orange-tint:#ffe9d9;--orange-tint2:#fff4ec;--grey:#787172;--charcoal:#3a3637;--grey-dk:#4a4546;--grey-mid:#b9b5b6;--grey-lt:#e4e1e1;--grey-bg:#f3f2f2;--bg:var(--grey-bg);--panel:#fff;--ink:var(--charcoal);--muted:var(--grey);--line:var(--grey-lt);--accent:var(--orange);--accent-ink:#fff;--hot:var(--orange-dk);--warm:#b85300;--cold:var(--grey);--ok:var(--charcoal);--bad:#8f3400}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:-apple-system,Segoe UI,Inter,Roboto,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}.shell{grid-template-columns:230px 1fr;min-height:100vh;display:grid}.nav{background:var(--grey-dk);color:#e4e1e1;flex-direction:column;gap:4px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow:auto}.nav .brand{padding:6px 10px 14px}.nav .brand img{width:120px;display:block}.nav .brand-sub{color:#fff;opacity:.8;letter-spacing:.6px;text-transform:uppercase;margin-top:6px;font-size:11px;font-weight:500;display:block}.nav .group{text-transform:uppercase;color:var(--grey-mid);padding:12px 10px 4px;font-size:11px}.nav button.group{cursor:pointer;letter-spacing:.5px;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;width:100%;display:flex}.nav button.group:hover{background:var(--charcoal);color:#fff}.nav button.group i{border:1px solid var(--grey);border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:14px;font-style:normal;line-height:1;display:inline-flex}.navgroup.open button.group{color:#fff}.navgroup.open button.group i{border-color:var(--orange);color:var(--orange)}.nav a{border-radius:6px;padding:8px 10px;display:block}.nav a:hover{background:var(--charcoal);color:#fff}.nav a.active{background:var(--accent);color:#fff}.nav .user{border-bottom:1px solid var(--grey);justify-content:space-between;align-items:center;gap:6px;margin-bottom:4px;padding:4px 10px 10px;font-size:12px;display:flex}.nav .user button{white-space:nowrap;padding:2px 6px;font-size:12px}.main{max-width:1400px;padding:20px 26px}h1{margin:0 0 4px;font-size:20px}.sub{color:var(--muted);margin:0 0 16px}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.grow{flex:1}.right{margin-left:auto}.cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-bottom:18px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px}.card .k{color:var(--muted);font-size:12px}.card .v{margin-top:4px;font-size:22px;font-weight:600}.card.alert .v{color:var(--bad)}.card.click{cursor:pointer}.card.click:hover{border-color:var(--accent)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-bottom:16px;padding:14px 16px}.panel h2{margin:0 0 10px;font-size:15px}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px;font-size:12px;font-weight:500}td{border-bottom:1px solid var(--line);vertical-align:top;padding:8px}tr.click{cursor:pointer}tr.click:hover td{background:var(--orange-tint2)}td.num,th.num{text-align:right;white-space:nowrap}.chip{border:1px solid var(--line);background:var(--grey-bg);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.chip.hot{background:var(--orange);color:#fff;border-color:var(--orange);font-weight:600}.chip.warm{background:var(--orange-tint);color:var(--warm);border-color:#f7c9a6}.chip.cold{background:var(--grey-lt);color:var(--grey);border-color:var(--grey-mid)}.chip.ok{background:var(--grey-lt);color:var(--charcoal);border-color:var(--grey-mid)}.chip.bad{color:var(--bad);background:#f5dccb;border-color:#e5b391}button,.btn{background:var(--accent);color:var(--accent-ink);cursor:pointer;border:0;border-radius:6px;padding:8px 14px;font-size:14px}button:disabled{opacity:.5;cursor:default}button:hover:not(:disabled){background:var(--orange-dk)}button.secondary{color:var(--ink);border:1px solid var(--grey-mid);background:#fff}button.secondary:hover:not(:disabled){background:var(--grey-bg)}button.danger{background:var(--bad)}button.ghost{color:var(--accent);background:0 0;padding:4px 8px}input,select,textarea{font:inherit;border:1px solid var(--grey-mid);background:#fff;border-radius:6px;width:100%;padding:8px 10px}textarea{min-height:70px}label{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.field{margin-bottom:10px}.grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.grid3{grid-template-columns:1fr 1fr 1fr;gap:12px;display:grid}.board{grid-auto-columns:minmax(220px,1fr);grid-auto-flow:column;gap:10px;padding-bottom:8px;display:grid;overflow-x:auto}.col{background:var(--grey-lt);border-radius:8px;min-height:200px;padding:8px}.col h3{justify-content:space-between;margin:4px 6px 8px;font-size:13px;display:flex}.col .meta{color:var(--muted);font-size:12px;font-weight:400}.oc{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;margin-bottom:8px;padding:8px 10px}.oc:hover{border-color:var(--accent)}.oc .t{font-size:13px;font-weight:600}.oc .m{color:var(--muted);margin-top:2px;font-size:12px}.err{color:var(--bad);background:#f5dccb;border-radius:6px;margin-bottom:10px;padding:8px 12px}.okmsg{background:var(--grey-lt);color:var(--charcoal);border-left:4px solid var(--orange);border-radius:6px;margin-bottom:10px;padding:8px 12px}.login{text-align:center;max-width:400px;margin:10vh auto}.login img{width:200px;margin:6px auto 10px;display:block}.login form{text-align:left}.login .module{color:var(--grey);letter-spacing:.8px;text-transform:uppercase;margin:0 0 14px;font-size:12px}.timeline li{border-bottom:1px solid var(--line);padding:6px 0;list-style:none}.timeline{margin:0;padding:0}.bar{background:var(--grey-lt);border-radius:4px;height:8px;overflow:hidden}.bar i{background:var(--accent);height:100%;display:block}.reasons{color:var(--muted);font-size:12px}.voice{background:var(--charcoal);color:#fff;cursor:pointer;border-radius:999px;padding:10px 16px;position:fixed;bottom:20px;right:20px;box-shadow:0 4px 16px #0003}.modal-bg{z-index:50;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:10px;width:min(560px,94vw);max-height:90vh;padding:18px 20px;overflow:auto}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px}@media (width<=900px){.shell{grid-template-columns:1fr}.nav{z-index:20;flex-flow:wrap;gap:2px;height:auto;padding:8px 10px;position:sticky;top:0}.nav .brand{align-items:center;gap:10px;width:100%;padding:4px 8px;display:flex}.nav .brand img{width:84px}.nav .brand-sub{margin:0}.nav a{padding:6px 9px;font-size:13px}.nav .group{display:none}.nav .user{border:0;width:100%;padding:2px 8px 6px}.grid2,.grid3{grid-template-columns:1fr}.main{padding:14px 16px}}input:focus,select:focus,textarea:focus{outline:2px solid var(--orange-tint);border-color:var(--orange)}.install-banner{border:1px solid var(--grey-mid);border-top:4px solid var(--orange);z-index:60;background:#fff;border-radius:10px;width:min(420px,94vw);padding:12px 16px;font-size:13px;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #3a363740}.install-banner b{margin-bottom:4px;display:block}.install-banner .row{margin-top:8px}.gauges{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:18px;display:grid}@media (width>=1150px){.gauges{grid-template-columns:repeat(4,1fr)}}.gauge{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 14px 12px;box-shadow:0 2px 8px #3a36370f}.gauge svg{width:100%;display:block}.gauge .gl{text-align:center;border-top:1px solid var(--grey-lt);flex-direction:column;gap:3px;margin-top:6px;padding-top:8px;display:flex}.gauge .gl b{font-size:15px}.gauge .gl span{color:var(--grey);font-size:13px}.gauge.compact{box-shadow:none;border:0;padding:4px 0 0}.gauge.compact .gl{border:0;margin-top:0;padding-top:2px}.gauge.compact .gl b{color:var(--grey);font-size:12px;font-weight:500}.gauge.compact .gl span{font-size:12px}.charts{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin-bottom:16px;display:grid}.charts .wide{grid-column:1/-1}.chart{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.chart .ch{align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.chart .ch h3{margin:0;font-size:14px}.chart .ch button{margin-left:auto}.cbox{position:relative}.tip{background:var(--charcoal);color:#fff;pointer-events:none;z-index:5;white-space:nowrap;border-radius:6px;padding:6px 9px;font-size:12px;position:absolute;box-shadow:0 4px 12px #3a36374d}.legend{color:var(--grey);flex-wrap:wrap;gap:14px;margin-top:4px;font-size:11px;display:flex}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.live{color:var(--grey);align-items:center;gap:6px;font-size:12px;display:inline-flex}.live i{background:var(--orange);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px;display:grid}.kpis .card .v{font-size:19px}@media print{.nav,.voice,.install-banner{display:none!important}.shell{display:block}.main{max-width:none;padding:0}}.sites{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;display:grid}.site{background:var(--grey-bg);border:1px solid var(--line);text-align:center;border-radius:8px;padding:10px 8px}.site b{color:var(--orange);font-size:22px;display:block}.site span{color:var(--grey);font-size:11px}.site.click:hover{border-color:var(--orange)}.team{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.member{border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px}.member:hover{border-color:var(--orange)}.member .mh{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}table.mini td{border-bottom:1px solid var(--grey-bg);padding:4px 2px;font-size:12px}.main{min-width:0;max-width:100%;overflow-x:hidden}@media (width<=900px){.main{padding:12px}.row{gap:8px}}
