/* AB IOT enterprise console. All styles are local; no external assets. */
:root{--green:#2563eb;--muted:#69788f;--line:#e3eaf2;--ink:#14243d;--blue:#2563eb;--cyan:#20d6e6;--nav:#101c31;color-scheme:light}
body{background:#f3f6fb;color:var(--ink);font-family:"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;font-size:14px;line-height:1.5}
button,a,input,select,textarea{transition:background .16s,border-color .16s,box-shadow .16s}button:focus-visible,a:focus-visible{outline:3px solid #38bdf8;outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.5}
.sidebar{width:244px;padding:26px 15px 18px;background:linear-gradient(165deg,#14243c 0%,#0c1527 80%);color:#a4b6ce;border:0;z-index:10;box-shadow:6px 0 24px #14243b08}
.brand{display:flex;align-items:center;gap:12px;padding:0 12px 25px;border-bottom:1px solid #ffffff12}.brand-mark{position:relative;display:grid;place-items:center;width:43px;height:43px;border:1px solid #2dd4df66;background:linear-gradient(140deg,#164562,#10243e);border-radius:12px;color:#7cedf5;font-size:19px;font-weight:750;letter-spacing:-1px;box-shadow:0 0 20px #06b6d414}.brand-mark span{position:absolute;width:5px;height:5px;background:#50e7ef;border-radius:50%;right:6px;top:6px}.brand strong{display:block;font-size:20px;color:#f4f8ff;letter-spacing:1px}.brand small{font-size:9px;letter-spacing:1.8px;color:#7c98bb}.workspace{margin:17px 12px 5px;font-size:10px;color:#6581a5;letter-spacing:1px}
nav{gap:0;min-height:0;flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#344863 transparent;padding-right:3px}.nav-group{margin-top:16px}.nav-group-label{font-size:10px;letter-spacing:1.2px;color:#6e85a4;padding:0 13px 8px}nav button{position:relative;width:100%;display:flex;align-items:center;gap:12px;padding:10px 13px;margin:2px 0;color:#aabbd1;font-size:13px;font-weight:450;border-radius:7px;line-height:21px}nav button:hover{background:#ffffff08;color:#fff}nav button.active{color:#89f1f5;background:linear-gradient(90deg,#0c91ac40,#1973b419);box-shadow:inset 0 0 0 1px #30c3da1c;font-weight:600}nav button.active:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;background:#41d8e5;border-radius:3px}.nav-icon,nav .nav-icon{display:block;flex:0 0 19px;width:19px;height:19px;font-size:19px;color:inherit}.sidebar-bottom{flex-shrink:0;margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px 7px;padding:17px 12px 0;border-top:1px solid #ffffff12;font-size:11px;color:#91a6c0}.sidebar-bottom #identity{color:#e4edf9;font-size:12px;grid-column:1/-1;overflow-wrap:anywhere}.sidebar-bottom button{font-size:11px;color:#91a6c0}.sidebar-bottom button:hover,.sidebar-bottom a:hover{color:#6fe9ee}.sidebar-bottom small{grid-column:1/-1;color:#4f6b8d;font-size:9px;letter-spacing:.7px}
main{margin-left:244px;padding:0 32px 20px;max-width:none;min-height:100vh}header{min-height:129px;padding:23px 0 22px;margin-bottom:27px;border-bottom:1px solid #dde5f0;gap:20px}.eyebrow{color:#8191a8;font-size:9px;letter-spacing:1.6px}h1{font-size:26px;letter-spacing:-.7px;line-height:1.4;margin:7px 0 5px;font-weight:700;color:#14243d}.page-description{color:#75849a;font-size:12px;margin:0}.header-right{gap:14px;flex-shrink:0}.badge{color:#257878;background:#e5f5f5;border:1px solid #cbe9e8;padding:6px 10px;font-size:11px;border-radius:5px}.badge.orange{color:#9b6c21;background:#fff7e8;border-color:#f0dfbe}.outline{background:#fff;color:#435570;border:1px solid #dce4ee;border-radius:6px;padding:8px 13px;font-size:12px;line-height:20px}.outline:hover{border-color:#9bb8e8;color:#2563eb;background:#f5f9ff}.primary{background:#2563eb;color:#fff;border:1px solid #2563eb;border-radius:6px;font-weight:600;font-size:12px;padding:9px 16px;line-height:20px;box-shadow:0 3px 8px #2563eb16}.primary:hover{background:#1d4ed8;border-color:#1d4ed8;box-shadow:0 4px 12px #2563eb28}
.overview-strip{display:flex;align-items:center;justify-content:space-between;margin:0 0 18px;gap:15px}.section-overline{font-size:9px;color:#8796aa;letter-spacing:1.8px}.overview-strip h2{font-size:16px;margin:4px 0 0}.overview-caption{font-size:11px;color:#8997aa}.kpis{gap:18px;margin-bottom:26px;grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{position:relative;border:1px solid var(--line);border-radius:10px;padding:21px 22px;background:#fff;box-shadow:0 3px 14px #17325803;overflow:hidden}.kpi:after{content:"";position:absolute;left:22px;bottom:0;width:32px;height:3px;background:#3b82f6;border-radius:3px 3px 0 0}.kpi:nth-child(2):after{background:#16b5c7}.kpi:nth-child(3):after{background:#7777ee}.kpi:nth-child(4):after{background:#e0a049}.kpi-label{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:12px;color:#67768e}.metric-mark{display:grid;place-items:center;width:28px;height:28px;color:#4f82d8;background:#eef5ff;border-radius:7px;font-size:17px}.kpi:nth-child(2) .metric-mark{color:#229eaa;background:#e9f8f9}.kpi:nth-child(3) .metric-mark{color:#8570cb;background:#f2effc}.kpi:nth-child(4) .metric-mark{color:#b98736;background:#fff6e8}.kpi strong{color:#14243d;font-size:30px;letter-spacing:-.8px;font-weight:700;margin:13px 0 8px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.kpi small{font-size:11px;color:#8b99ab}
.split{grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:24px}.card{padding:23px 24px;border:1px solid var(--line);border-radius:10px;box-shadow:0 3px 14px #17325803;margin-bottom:24px;min-width:0}.card h2,h2{font-size:16px;color:#22344e;letter-spacing:0}.card-head{margin-bottom:22px}.card-head h2{font-size:16px}.card p{font-size:12px;line-height:1.9;color:#6e7e94}.muted,.help{color:#78879c}.trend{height:226px;gap:14px;margin-top:22px;background:repeating-linear-gradient(to top,transparent 0,transparent 49px,#edf2f8 50px,transparent 51px);padding:0 5px 8px}.trend-col{gap:10px;color:#7e8ca2;font-size:10px;min-width:0}.trend-col b{font-size:12px;color:#496483}.trend-col small{font-size:10px;color:#8b9bb0}.trend-bar{height:136px;width:100%;max-width:48px;overflow:visible}.bar-track{fill:#f0f5fc}.bar-value{fill:#4e8ee9}.trend-col:nth-child(even) .bar-value{fill:#2eacc4}.task-row{padding:13px 0;border-color:#edf1f7;font-size:12px;color:#52627b;gap:10px}.task-row .outline{color:#2563eb;background:#f1f6ff;border-color:transparent;min-width:60px;font-weight:600}.task-row .outline:hover{background:#e5efff}.task-row:first-of-type{padding-top:0}.task-row:last-child{padding-bottom:0}
.toolbar{gap:10px;padding-bottom:20px;border-bottom:1px solid #edf1f7;margin-bottom:18px}.search{max-width:350px;min-width:180px}input,textarea,select{background:#fff;border:1px solid #dce4ef;border-radius:6px;padding:9px 11px;color:#2e405a;font-size:12px;line-height:20px}input::placeholder,textarea::placeholder{color:#a0adbf}input:focus,textarea:focus,select:focus{border-color:#699ceb;box-shadow:0 0 0 3px #2563eb0d}label{color:#52637a;font-size:12px}.toolbar .primary,.toolbar .outline{padding:8px 13px}.toolbar input[type=date]{min-width:137px}.table-wrap{border:1px solid #e6ecf4;border-radius:7px;overflow:auto;scrollbar-width:thin;scrollbar-color:#c6d3e4 #f5f8fc}table{font-size:12px}th{padding:13px 16px;background:#f6f8fc;color:#67768c;font-weight:600;border-bottom:1px solid #e6ecf4;position:sticky;top:0;z-index:1}td{padding:15px 16px;border-color:#edf1f7;color:#3e5069;font-variant-numeric:tabular-nums}tbody tr:hover{background:#f8fbff}tbody tr:last-child td{border-bottom:0}td small{color:#8a99ad;font-size:11px;margin-top:5px}td .outline{padding:4px 9px;font-size:11px;background:transparent;color:#336ab6;border-color:#dce8f8;margin:2px 3px 2px 0}td .primary{padding:4px 9px;font-size:11px}.product-title{color:#223653}.order-id,.code{font-size:11px;color:#8191a8;font-family:Consolas,monospace}.money{font-size:14px;color:#263c5c}.tag{font-size:11px;color:#5178a9;background:#eef4fc;padding:4px 8px;border-radius:4px;line-height:18px}.tag.good{color:#138473;background:#e6f6f1}.tag.warn{color:#a77620;background:#fff5df}.tag.bad{color:#c24d5b;background:#fff0f1}.thumb{width:45px;height:45px;border-color:#e6ecf4;background:#f8fafc}.avatar{background:#eaf1ff;color:#346ac0;border-radius:10px;font-weight:600}.pagination{font-size:11px;color:#8796a9;padding-top:19px}.table-caption{color:#7d8ca0;font-size:11px}.notice-box{background:#edf5ff;border-left:3px solid #6ea7ef;border-radius:0 5px 5px 0;color:#587390;font-size:12px;padding:12px 15px;margin:16px 0}.module-state{border-color:#eaf0f7}.module-state strong{color:#3b4f6d}.module-state span{color:#7a8da5}.section-title{border-color:#e6ecf4}.history,.history-entry{border-color:#cdddf2;color:#607895}.history-entry small{color:#8c9ab0}.detail-row{font-size:12px;padding:7px 0;border-bottom:1px solid #f0f3f8;margin:3px 0}.detail-row span:first-child{color:#7b8da6}.detail-row strong{color:#263b56;overflow-wrap:anywhere;min-width:0}.detail-grid{gap:0 22px}.json-diff{background:#f2f6fb;color:#44607f}.empty{color:#94a3b7;padding:55px 20px;font-size:12px}.empty-state{background:#f8fafc;border-color:#e4ebf4;color:#4c6483}.empty-state p{color:#7a8ca5}.loading-state{color:#7790b2;padding:70px}.toast{color:#267b68;background:#e9f7f0;border:1px solid #ceeadd;font-size:12px;border-radius:7px}.error{color:#bc4256}.toast.error,#panel-error:not(:empty){color:#af354b;background:#fff0f2;border-color:#f3d7df}.text-button,.card-head a{color:#2563eb}footer{color:#a1aec0;font-size:10px;letter-spacing:1px}
dialog{border-radius:12px;color:#263b56;box-shadow:0 24px 100px #09142938}dialog::backdrop{background:#0a142653;backdrop-filter:blur(3px)}#panel{position:fixed;inset:0 0 0 auto;margin:0;width:min(860px,92vw);height:100dvh;max-height:100dvh;border-radius:0;padding:0 30px 30px;border-left:1px solid #dce5f2;animation:drawer-in .2s ease-out}#panel .dialog-top{position:sticky;top:0;background:#fff;z-index:3;padding:25px 0 20px;border-bottom:1px solid #e5ecf5;margin-bottom:20px;align-items:center}#panel .dialog-top h2{margin:0;font-size:18px}.icon-button{width:32px;height:32px;display:grid;place-items:center;background:#f2f5fa;color:#7b8aa0;font-size:22px;border-radius:6px}.icon-button:hover{background:#e7eef8;color:#34577f}.actions{border-top:1px solid #edf1f7;padding-top:20px}.form-grid>.primary.full{margin-top:15px}.checkline input{accent-color:#2563eb}
#login{width:min(870px,calc(100% - 40px));max-height:90dvh;padding:0;border:1px solid #ffffff40;overflow:auto}#login[open]{display:grid;grid-template-columns:.92fr 1.08fr}.login-visual{position:relative;overflow:hidden;min-height:540px;padding:39px 34px;color:#d4e9fb;background:radial-gradient(ellipse at 65% 65%,#086f8255,transparent 60%),linear-gradient(145deg,#172a46,#091527);display:flex;flex-direction:column}.login-visual:after{content:"";position:absolute;inset:0;background-image:linear-gradient(#8eddf207 1px,transparent 1px),linear-gradient(90deg,#8eddf207 1px,transparent 1px);background-size:30px 30px;pointer-events:none}.login-kicker{font-size:10px;letter-spacing:2.4px;color:#6aa4ba}#login .login-visual h2{font-size:33px;line-height:1.6;font-weight:600;color:#edf7ff;margin:43px 0 15px;letter-spacing:1px}#login .login-visual p{font-size:13px;color:#799ab8;line-height:2}.login-footnote{margin-top:auto;color:#50708c;font-size:8px;letter-spacing:1.7px;padding-top:22px}.orbit-art{position:relative;height:165px;margin:12px 0 10px;display:grid;place-items:center}.orbit-art i{position:absolute;width:176px;height:176px;border:1px solid #39d8e729;border-radius:50%;transform:rotateX(52deg) rotateZ(-22deg)}.orbit-art i:nth-child(2){width:240px;height:240px;transform:rotateX(52deg) rotateZ(22deg);border-style:dashed}.orbit-art i:nth-child(3){width:120px;height:120px;transform:none;box-shadow:0 0 50px #17cee518}.orbit-art b{display:grid;place-items:center;width:75px;height:75px;border:1px solid #57e5ee77;border-radius:18px;background:linear-gradient(135deg,#164c66,#123047);box-shadow:0 0 35px #22b6cd18;color:#a1f2f7;font-size:28px;font-weight:600;letter-spacing:-1px;transform:rotate(-8deg)}.login-content{padding:38px 39px;background:#fff}.dialog-icon{width:40px;height:40px;border-radius:10px;background:#edf4ff;color:#2563eb;font-size:16px;margin-bottom:23px}#login h2{font-size:24px;letter-spacing:-.5px;margin:12px 0}#login p{color:#8291a5;line-height:1.8}#login small{font-size:10px;color:#8e9baf;line-height:1.9;margin-top:22px}#login label{margin:19px 0;color:#52647e}#login label input{padding:10px 12px}#login button{padding:11px 16px}#login .eyebrow{color:#638bc1;font-size:9px}#login::backdrop{background:radial-gradient(ellipse at top right,#15496a,#0d1829 75%);backdrop-filter:blur(6px)}
@keyframes drawer-in{from{transform:translateX(28px);opacity:.7}to{transform:translateX(0);opacity:1}}
@media(min-width:1700px){main{padding-left:48px;padding-right:48px}.kpi{padding:25px 28px}.kpi strong{font-size:35px}.card{padding:27px 29px}}
@media(max-width:1200px){.sidebar{width:218px}main{margin-left:218px;padding:0 23px 20px}.kpis{gap:12px}.kpi{padding:18px 15px}.kpi strong{font-size:25px}.split{grid-template-columns:1fr}.header-right{gap:8px}.overview-caption{font-size:10px}}
@media(max-width:900px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-layout{grid-template-columns:1fr}.page-description{max-width:300px}.header-right .badge{display:none}.overview-strip{align-items:flex-end}.overview-caption{max-width:140px;text-align:right}.detail-grid{grid-template-columns:1fr}}
@media(max-width:650px){.sidebar{width:70px;padding:19px 8px 12px}.brand{padding:0 4px 17px}.brand>div:last-child,.workspace,.nav-group-label,nav button>span,.sidebar-bottom{display:none}.brand-mark{width:42px;height:42px;flex-shrink:0}.nav-group{margin-top:13px;padding-top:10px;border-top:1px solid #ffffff0d}nav{margin:0;padding:0}nav button{justify-content:center;padding:11px 0}nav .nav-icon{display:block;width:20px;height:20px;flex-basis:20px}main{margin-left:70px;padding:0 14px 15px}header{min-height:113px;gap:8px;margin-bottom:20px}h1{font-size:22px}.page-description{font-size:10px;max-width:190px}.eyebrow{font-size:8px;letter-spacing:.5px}.header-right .outline{font-size:10px;padding:5px 8px}.overview-caption{display:none}.kpis{gap:10px}.kpi{padding:15px 12px}.kpi strong{font-size:22px}.kpi-label{font-size:10px}.metric-mark{display:none}.kpi small{font-size:9px}.card{padding:16px 13px}.toolbar{gap:8px}.search{max-width:none;min-width:130px;width:100%}.pagination{flex-wrap:wrap;gap:8px}.form-grid{grid-template-columns:1fr}.trend{gap:5px}.trend-col small{font-size:8px}.trend-col b{font-size:10px}.trend-col{font-size:9px}.trend-bar{max-width:30px}.notice-box{font-size:11px}#panel{width:calc(100vw - 20px);padding:0 20px 25px}#login[open]{display:block;width:min(430px,calc(100% - 28px))}.login-visual{display:none}.login-content{padding:28px}.header-right{flex-shrink:0}}
@media(max-width:650px){.sidebar-bottom{display:flex;flex-direction:column;padding:12px 0 0;gap:12px}.sidebar-bottom #identity,.sidebar-bottom a,.sidebar-bottom small{display:none}.sidebar-bottom button{font-size:10px;text-align:center}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
