:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#203630;background:#f4f6f5;font-size:16px;font-synthesis:none;--ink:#193c33;--green:#185b46;--muted:#6a7974;--line:#dfe6e2;--lime:#d9f28c}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:7px;padding:10px 15px;font-weight:600;font-size:.875rem;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover{background:#edf3ef}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#104634}.danger{background:#a33232;color:white}.small{padding:7px 10px}.link{border:0;background:none;padding:0;color:var(--green)}a{color:var(--green);text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-size:1.85rem;letter-spacing:-1px;margin-bottom:8px;font-weight:650}h2{font-size:1.1rem;letter-spacing:-.3px}h3{font-size:1rem}p{line-height:1.6;color:var(--muted)}small,.muted{color:var(--muted);font-size:.82rem}svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.layout{display:grid;grid-template-columns:236px 1fr;min-height:100vh}.sidebar{background:#102e27;color:#c0cfc9;padding:28px 18px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:236px}.brand{color:white;display:flex;align-items:center;gap:10px;font-size:1.45rem;font-weight:650;letter-spacing:-.7px;padding:0 8px 30px}.brandmark{display:grid;place-items:center;width:34px;height:38px;background:var(--lime);color:#102e27;border-radius:9px}.brandmark svg{width:24px;height:24px}.workspace{padding:14px 12px;border:1px solid #355147;border-radius:8px;font-size:.875rem;color:white;margin-bottom:27px;display:flex;gap:10px;align-items:center}.workspace small{display:block;color:#8ca89a;margin-top:4px;font-size:.75rem}.nav-label{font-size:.7rem;letter-spacing:1.6px;color:#86a296;padding:0 13px;margin-bottom:10px;text-transform:uppercase}.nav{display:flex;flex-direction:column;gap:5px}.nav button{justify-content:flex-start;background:transparent;border:0;color:#b7cbc1;font-weight:450;padding:12px 14px;font-size:.875rem}.nav button.active{background:#28473b;color:#e0f4a3}.nav button:hover{background:#213f34}.nav .count{margin-left:auto;background:#4d6141;color:#e0f4a3;padding:1px 7px;border-radius:5px;font-size:.75rem}.sidebar-bottom{margin-top:auto;padding-top:30px}.sidebar-bottom .panel-mini{border:1px solid #365247;padding:15px;border-radius:8px;color:#c7d5ce;font-size:.82rem;margin-bottom:20px;line-height:1.6}.sidebar-bottom small{color:#92a89d}.profile{display:flex;gap:10px;align-items:center;padding:0 8px}.avatar{width:35px;height:35px;border-radius:50%;background:#d8e5d4;color:#244b39;display:grid;place-items:center;font-size:.8rem;font-weight:600}.profile strong{display:block;color:white;font-size:.8rem}.profile button{margin-left:auto;background:none;color:#b7cbc1;padding:6px;border:0}.main{grid-column:2;min-width:0}.topbar{background:white;border-bottom:1px solid var(--line);height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 36px;font-size:.85rem}.breadcrumb{color:#87938d}.breadcrumb b{color:#3d5148;font-weight:500;margin-left:14px}.topright{display:flex;align-items:center;gap:18px;color:var(--muted)}.env{color:#806325;background:#faf1d7;border:1px solid #eedeb5;padding:5px 9px;border-radius:5px;font-size:.72rem;font-weight:600;letter-spacing:.3px}.content{padding:32px 36px 45px;max-width:1700px;margin:auto}.pagehead{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:26px}.pagehead p{font-size:.9rem;margin-bottom:0}.actions{display:flex;gap:10px;align-items:center}.banner{display:flex;align-items:center;gap:11px;background:#eef4e4;border:1px solid #d9e3ca;padding:12px 16px;border-radius:8px;font-size:.83rem;color:#53653b;margin-bottom:24px}.banner a,.banner button{margin-left:auto;white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stat{background:white;border:1px solid var(--line);border-radius:9px;padding:20px 22px}.stat-label{display:flex;justify-content:space-between;color:var(--muted);font-size:.85rem;margin-bottom:17px}.stat-label svg{color:#83978c}.stat-number{font-size:2.15rem;letter-spacing:-1.5px;font-weight:600;line-height:1}.stat-foot{font-size:.75rem;color:var(--muted);margin-top:13px}.stat-foot b{color:var(--green);font-weight:500}.stat.warn .stat-number{color:#ad7430}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:22px}.panel{background:white;border:1px solid var(--line);border-radius:9px;overflow:hidden;margin-bottom:22px}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:21px 22px;border-bottom:1px solid #edf0ee;gap:15px}.panel-head h2{margin:0}.panel-body{padding:22px}.toolbar{display:flex;gap:12px;padding:16px 22px;border-bottom:1px solid #edf0ee;align-items:center}.search{position:relative;flex:1;max-width:340px}.search svg{position:absolute;left:12px;top:11px;color:#8a9991}.search input{padding-left:39px;width:100%}input,select,textarea{border:1px solid #dce3de;border-radius:6px;background:white;color:#243e32;padding:10px 11px;font-size:.875rem;max-width:100%}input::placeholder{color:#92a096}textarea{min-height:88px;resize:vertical}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{font-size:.71rem;letter-spacing:.3px;text-transform:uppercase;color:#7c8b82;font-weight:550;background:#fafbf9;padding:13px 20px;border-bottom:1px solid #e8ede8}td{padding:17px 20px;border-bottom:1px solid #edf1ed;font-size:.84rem;color:#576c5e}tr:last-child td{border-bottom:0}.device-name{display:flex;gap:11px;align-items:center}.device-icon{border:1px solid #dfe7df;background:#f5f8f3;width:34px;height:39px;display:grid;place-items:center;border-radius:6px;color:#6f876d}.device-name strong{display:block;color:#2b4736;font-weight:600}.device-name small{font-size:.73rem;display:block;margin-top:5px}.badge{display:inline-block;font-size:.71rem;border-radius:5px;padding:5px 8px;font-weight:500;background:#eff2ef;color:#667769}.badge.good{color:#2b714c;background:#eaf5e9}.badge.warn{color:#9b6b21;background:#fbf1dc}.badge.bad{color:#a84444;background:#fbecec}.battery{display:flex;align-items:center;gap:8px}.battery-shape{width:25px;height:12px;border:1.5px solid #7f947f;border-radius:3px;display:inline-flex;padding:2px}.battery-shape i{display:block;background:#72a77b;height:100%}.table-foot{border-top:1px solid #edf1ed;padding:14px 22px;display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:var(--muted)}.donut{width:154px;height:154px;margin:5px auto 23px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#3f7454 0 80%,#e0ad5d 80% 90%,#e9eeea 90%)}.donut-inner{background:white;width:125px;height:125px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column}.donut-inner strong{font-size:1.9rem;letter-spacing:-1px}.donut-inner small{font-size:.72rem;margin-top:4px}.legend-line{display:flex;align-items:center;gap:9px;font-size:.8rem;margin:15px 0}.legend-line b{margin-left:auto;font-weight:500}.dot{width:8px;height:8px;border-radius:2px;background:#3f7454}.dot.amber{background:#e0ad5d}.dot.gray{background:#dce5dd}.activity{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid #edf1ed}.activity:last-child{border:0}.activity-icon{width:30px;height:30px;border-radius:50%;background:#f0f5ed;color:#648360;display:grid;place-items:center;flex:none}.activity strong{display:block;font-size:.8rem;font-weight:500;line-height:1.5}.activity small{display:block;font-size:.72rem;margin-top:4px}.quick{display:flex;gap:12px;align-items:center;margin:0 0 19px}.quick:last-child{margin:0}.quick strong{font-size:.85rem;display:block}.quick small{font-size:.75rem;display:block;margin-top:4px}.quick>svg{color:#5c7a59}.quick button{margin-left:auto}.empty{padding:45px 24px;text-align:center;color:var(--muted);font-size:.9rem}.empty svg{width:34px;height:34px;margin-bottom:14px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.card{padding:23px;background:white;border:1px solid var(--line);border-radius:9px}.card>svg{color:#5c7b58;margin-bottom:20px}.card p{font-size:.85rem}.card h2{margin-bottom:10px}.card .actions{margin-top:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px}.field label{font-size:.83rem;font-weight:550}.field small{line-height:1.5}.checks{display:flex;flex-direction:column;gap:14px;padding:8px 0 20px;font-size:.875rem}.checks label{display:flex;align-items:center;gap:10px}input[type=checkbox]{accent-color:var(--green);width:17px;height:17px}dialog{border:1px solid var(--line);border-radius:12px;padding:0;max-width:660px;width:calc(100% - 32px);box-shadow:0 25px 100px #0d201c40;color:var(--ink);max-height:90vh}dialog::backdrop{background:#102e2770;backdrop-filter:blur(2px)}.modal-head{padding:22px 26px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal-head h2{margin:0;font-size:1.2rem}.modal-body{padding:24px 26px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.error{color:#9c3535;background:#fff0ee;padding:12px;border-radius:6px;font-size:.875rem;line-height:1.6;margin-bottom:15px}.hidden{display:none!important}#toast{position:fixed;bottom:25px;right:25px;background:#183e2e;color:white;padding:15px 22px;border-radius:8px;font-size:.875rem;box-shadow:0 8px 30px #0002;z-index:5;display:none;max-width:500px}#toast.visible{display:block}.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr;background:white}.login-art{background:#102e27;padding:60px;display:flex;flex-direction:column;color:white}.login-art .brand{padding:0}.login-art h1{font-size:3.5rem;line-height:1.12;letter-spacing:-2px;margin:auto 0 25px;max-width:500px}.login-art h1 em{font-style:normal;color:var(--lime)}.login-art p{color:#9db7a8;max-width:400px;font-size:1rem;margin-bottom:auto}.login-art footer{color:#839d8c;font-size:.8rem;padding-top:50px}.login-form{display:flex;flex-direction:column;justify-content:center;max-width:390px;width:calc(100% - 60px);margin:auto;padding:50px 0}.login-form h1{font-size:1.8rem}.login-form p{font-size:.9rem}.login-form .primary{width:100%;margin-top:7px}.login-form .brand{display:none}.login-note{font-size:.78rem;color:#839185;margin-top:24px;line-height:1.6}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.detail-item{padding:14px;background:#f6f8f5;border-radius:6px}.detail-item small{display:block;margin-bottom:7px}.detail-item strong{font-size:.9rem;word-break:break-word}.section-title{margin:25px 0 15px;font-size:.95rem}.qr{display:block;max-width:280px;width:100%;margin:15px auto;image-rendering:pixelated}.secret{word-break:break-all;background:#f2f5ef;padding:10px;font-family:monospace;font-size:.85rem}.loading{padding:80px;text-align:center}.mobile-menu{display:none}.note{padding:14px;background:#f7f9f5;border-radius:6px;margin-bottom:10px;font-size:.875rem;line-height:1.6;white-space:pre-wrap}.subtle{font-size:.8rem;color:var(--muted);line-height:1.6}.full{grid-column:1/-1}.progress{height:6px;background:#e7ede5;border-radius:4px;overflow:hidden;margin:16px 0}.progress span{display:block;height:100%;background:#6a9460}.split{display:flex;justify-content:space-between;gap:12px}.pill{padding:5px 9px;background:#f0f4ec;border-radius:5px;color:#5f7750;font-size:.75rem}.integration{border-left:3px solid #809d5b}.report-card{display:flex;flex-direction:column;align-items:flex-start}.report-card a{margin-top:auto}.logdetail{white-space:normal;min-width:190px;max-width:400px;font-size:.8rem;line-height:1.5}.mode-label{text-transform:capitalize}.app-row{display:grid;grid-template-columns:1fr 155px;gap:10px;margin-bottom:10px}.wide{width:100%}
@media(min-width:1450px){.dashboard-grid{grid-template-columns:minmax(0,1fr) 350px}.content{padding:38px 45px}.topbar{padding:0 45px}}@media(max-width:1150px){.layout{grid-template-columns:205px 1fr}.sidebar{width:205px}.content{padding:25px}.topbar{padding:0 25px}.dashboard-grid{grid-template-columns:1fr}.rightcol{display:grid;grid-template-columns:1fr 1fr;gap:20px}.stats{gap:12px}.stat{padding:17px}.cards{grid-template-columns:1fr 1fr}.brand{font-size:1.25rem}.panel-mini{display:none}}@media(max-width:760px){.layout{display:block}.sidebar{display:none;z-index:4;width:236px}.sidebar.open{display:flex}.mobile-menu{display:inline-flex;padding:6px}.topbar{height:64px;padding:0 18px;gap:10px}.topright>span:first-child{display:none}.content{padding:23px 16px}.pagehead{align-items:flex-start;flex-wrap:wrap}.pagehead h1{font-size:1.6rem}.stats{grid-template-columns:1fr 1fr}.stat-number{font-size:1.85rem}.stat-label{font-size:.77rem}.rightcol,.cards,.form-grid{grid-template-columns:1fr}.banner{align-items:flex-start;line-height:1.5}.banner button{display:none}.toolbar{padding:14px;flex-wrap:wrap}.toolbar .search{max-width:none;flex-basis:100%}.panel-head{padding:17px}.login-page{display:block}.login-art{display:none}.login-form{min-height:100vh}.login-form .brand{display:flex;color:var(--ink);margin-bottom:35px}.detail-grid{grid-template-columns:1fr 1fr}.topright{gap:8px}.modal-body{padding:20px}.app-row{grid-template-columns:1fr}.breadcrumb{font-size:.75rem}}

@media(min-width:761px) and (max-width:1350px){.dashboard-grid{grid-template-columns:1fr}.rightcol{display:grid;grid-template-columns:1fr 1fr;gap:20px}.device-name small{white-space:normal;max-width:230px}}

/* Keep navigation reachable on short screens and logout visible at all sizes. */
.sidebar{overflow-y:auto}.sidebar>*{flex-shrink:0}.header-logout{white-space:nowrap;flex-shrink:0}
@media(max-width:760px){.topright .env,.topright .avatar{display:none}.header-logout{padding:8px 10px}}

.account-summary{display:flex;flex-direction:column;gap:3px}.account-summary strong{color:var(--ink)}.account-summary small{color:var(--green)}
@media(max-width:760px){.breadcrumb{display:none}.account-summary strong{font-size:.8rem}.account-summary small{font-size:.7rem}}
