:root{--bg: #f3f4f8;--ink: #25283d;--muted: #85889b;--primary: #6855d8;--panel: #ffffff;--line: #ececf3;--sidebar: #1b1d2c;--radius: 16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}.iot-shell{--sidebar-w: 232px;--offset: 266px;min-height:100vh;padding:14px}.iot-shell.collapsed{--sidebar-w: 78px;--offset: 112px}.iot-sidebar{position:fixed;top:14px;bottom:14px;left:14px;z-index:20;display:flex;width:var(--sidebar-w);flex-direction:column;padding:24px 14px 18px;border-radius:19px;background:var(--sidebar);color:#a1a3b8;transition:width .18s ease}.iot-brand{display:flex;align-items:center;gap:12px;color:#fff}.iot-brand-mark{display:grid;flex-shrink:0;width:38px;height:38px;place-items:center;border-radius:12px;background:linear-gradient(145deg,#6f5ce0,#3a3358);color:#e8e2ff;font-size:16px;font-weight:700}.iot-brand b{display:block;font-size:15px;font-weight:650;letter-spacing:.5px;white-space:nowrap}.iot-brand small{display:block;margin-top:4px;color:#9395ae;font-size:9px;letter-spacing:1.6px;white-space:nowrap}.iot-collapse{display:flex;align-items:center;justify-content:center;gap:8px;height:34px;margin:22px 0 4px;border:1px solid #ffffff12;border-radius:8px;background:#ffffff05;color:#a1a3b8;font:inherit;font-size:12px;cursor:pointer}.iot-collapse:hover{background:#ffffff0e;color:#fff}.iot-nav{flex:1;min-height:0;margin-top:18px;overflow-y:auto;scrollbar-width:thin}.iot-nav .caption{margin:8px 10px 10px;color:#777a92;font-size:11px;letter-spacing:1px}.iot-nav a{display:flex;align-items:center;gap:12px;margin-bottom:6px;padding:11px 12px;border-radius:10px;color:#a1a3b8;font-size:13px;white-space:nowrap}.iot-nav a:hover{background:#302e46;color:#fff}.iot-nav a.active{background:#3d365b;color:#ece6ff;box-shadow:inset 3px 0 #a18aff}.iot-nav a .anticon{font-size:16px}.iot-side-foot{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:16px;border-top:1px solid #ffffff12}.iot-side-foot>span{flex:1;min-width:0;overflow:hidden;color:#c9cbdc;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.iot-logout{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:#b8bacd;font-size:14px;cursor:pointer}.iot-logout:hover{background:#ffffff12;color:#fff}.iot-backdrop{display:none}.iot-main{min-width:0;margin-left:var(--offset);padding:4px 4px 10px 0;transition:margin-left .18s ease}.iot-shell.collapsed .iot-brand-text,.iot-shell.collapsed .iot-collapse .collapse-label,.iot-shell.collapsed .iot-nav a .nav-label,.iot-shell.collapsed .iot-side-foot>span{display:none}.iot-shell.collapsed .iot-brand{justify-content:center}.iot-shell.collapsed .iot-collapse{padding:0}.iot-shell.collapsed .iot-nav .caption{height:1px;margin:14px 10px;overflow:hidden;background:#ffffff12;color:transparent}.iot-shell.collapsed .iot-nav a{justify-content:center;padding:11px 0;gap:0}.iot-shell.collapsed .iot-nav a .anticon{font-size:18px}.iot-shell.collapsed .iot-side-foot{justify-content:center}.iot-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:6px 2px 14px;border-bottom:1px solid var(--line);color:var(--muted);font-size:12px}.iot-topbar i{margin:0 10px;color:#b0b3c6;font-style:normal}.iot-topbar b{color:var(--ink);font-size:13px;font-weight:550}.iot-role{border-radius:999px;padding:5px 12px;background:#ecebf5;color:#5c5875;font-size:11px;white-space:nowrap}.iot-role.admin{background:#efe7ff;color:#6a4fd0}.iot-page-footer{display:flex;justify-content:space-between;gap:12px;margin:26px 2px 6px;color:#a7a9b9;font-size:11px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:26px 2px 20px;flex-wrap:wrap}.page-head .eyebrow{color:#9092a8;font-size:10px;letter-spacing:2px;text-transform:uppercase}.page-head h1{margin:9px 0 5px;color:var(--ink);font-size:29px;font-weight:600;letter-spacing:-1px}.page-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric{display:flex;flex-direction:column;gap:12px;min-height:132px;padding:19px 18px 16px;border-radius:var(--radius);background:var(--panel);box-shadow:0 3px 10px #21244305}.metric.clickable{cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.metric.clickable:hover{transform:translateY(-2px);box-shadow:0 10px 24px #21244312}.metric .label{display:flex;align-items:center;justify-content:space-between;color:#777b90;font-size:12px}.metric .label .anticon{color:#a9a4c6;font-size:15px}.metric strong{color:var(--ink);font-size:31px;font-weight:600;line-height:1;letter-spacing:-1.2px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric small{color:#9497a9;font-size:11px}.metric.dark{position:relative;overflow:hidden;background:#252338;color:#fff}.metric.dark .label,.metric.dark small{color:#cec8e2}.metric.dark strong{color:#fff}.metric.dark:after{position:absolute;top:-76px;right:-26px;width:122px;height:122px;border-radius:50%;background:#484064;opacity:.32;content:""}.panel{border-radius:var(--radius);background:var(--panel);padding:18px;box-shadow:0 3px 10px #21244305}.panel+.panel{margin-top:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 2px 14px;flex-wrap:wrap}.panel-head h2{margin:0;color:var(--ink);font-size:15px;font-weight:600}.panel-head span{color:var(--muted);font-size:12px}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.iot-main .ant-table-wrapper{padding:6px 14px 12px;border-radius:var(--radius);background:var(--panel);box-shadow:0 3px 10px #21244305}.panel .ant-table-wrapper,.iot-main .ant-card .ant-table-wrapper,.iot-main .ant-tabs .ant-table-wrapper{padding:0;border-radius:0;background:transparent;box-shadow:none}.iot-main .ant-table-wrapper .ant-table{background:transparent;font-size:13px}.iot-main .ant-table-thead>tr>th{background:#f7f7fb;color:#777b90;border-bottom:1px solid var(--line);font-size:12px;font-weight:500}.iot-main .ant-table-thead>tr>th:first-child{border-start-start-radius:8px}.iot-main .ant-table-thead>tr>th:last-child{border-start-end-radius:8px}.iot-main .ant-table-tbody>tr>td{border-bottom:1px solid #f2f2f7}.iot-main .ant-table-tbody>tr:hover>td{background:#faf9fe}.iot-main .ant-table-pagination.ant-pagination{margin:16px 0 2px}.iot-main .ant-card{border:0;border-radius:var(--radius);box-shadow:0 3px 10px #21244305}.iot-main .ant-card-head{border-bottom:1px solid var(--line);font-size:15px}.iot-main .ant-btn{box-shadow:none}.iot-main .ant-btn-primary{background:var(--primary);box-shadow:0 4px 10px #6855d826}.iot-main .ant-tag{border-radius:6px;font-size:11px}.iot-main .ant-modal-content,.iot-main .ant-drawer-content{border-radius:16px}.iot-main .ant-drawer-content{border-radius:16px 0 0 16px}.iot-main .ant-empty-description{color:var(--muted);font-size:12px}.login-shell{display:grid;min-height:100vh;grid-template-columns:1.05fr 1fr}.login-story{display:flex;flex-direction:column;justify-content:space-between;min-height:100vh;padding:56px 60px;background:radial-gradient(ellipse 70% 55% at 78% 12%,#4a3f78 0%,transparent 60%),#252338;color:#fff}.login-story .brand{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:600;letter-spacing:.5px}.login-story .brand-mark{display:grid;width:40px;height:40px;place-items:center;border-radius:12px;background:#38324f;color:#d6d0ff;font-size:17px}.login-story h1{margin:20px 0 16px;font-size:42px;font-weight:500;line-height:1.45;letter-spacing:-1px}.login-story h1 em{color:#b9a9ff;font-style:normal}.login-story p{max-width:460px;margin:0;color:#b3aec7;font-size:13px;line-height:1.9}.login-story ul{margin:30px 0 0;padding:0;list-style:none}.login-story li{display:flex;align-items:center;gap:10px;margin-bottom:12px;color:#cfc9e2;font-size:12px}.login-story li span{display:grid;width:22px;height:22px;place-items:center;border-radius:7px;background:#ffffff10;color:#d9ceff;font-size:11px}.login-story footer{color:#8d879f;font-size:11px;letter-spacing:.5px}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:40px 32px;background:var(--bg)}.pwd-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg)}.login-form-card{width:356px;padding:32px 30px 26px;border-radius:20px;background:#fff;box-shadow:0 18px 50px #2124430f}.login-form-card h2{margin:0 0 6px;font-size:24px;font-weight:600;letter-spacing:-.6px}.login-form-card>.hint{margin:0 0 26px;color:var(--muted);font-size:12px}.login-form-card .ant-form-item-label>label{color:#555b75;font-size:12px;font-weight:500}.login-form-card .ant-btn-primary{height:44px;margin-top:4px;border-radius:11px;font-size:14px;font-weight:600}.login-note{margin:18px 0 0;color:#a0a3b5;font-size:11px;text-align:center;line-height:1.7}@media (max-width: 1200px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.iot-shell,.iot-shell.collapsed{--offset: 92px}.iot-shell{padding:10px}.iot-shell:not(.collapsed){--sidebar-w: 232px;--offset: 92px}.iot-sidebar{top:10px;bottom:10px;left:10px}.iot-main{padding-right:0}.iot-shell:not(.collapsed) .iot-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:19;display:block;border:0;background:#17162766}.page-head h1{font-size:25px}.iot-page-footer{flex-direction:column;gap:4px}}@media (max-width: 720px){.metrics,.login-shell{grid-template-columns:1fr}.login-story{display:none}}:root{--primary: #2563eb;--ink: #172b4d;--muted: #64748b;--sidebar: #fff;--bg: #f5f7fb;font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;color:#172b4d;background:#f5f7fb}body{margin:0;background:#f5f7fb}.signin-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;box-sizing:border-box;background:radial-gradient(ellipse at 50% 0%,#e7efff,transparent 64%),#f8fafc}.signin-brand{display:flex;align-items:center;gap:12px;margin-bottom:30px;color:#172b4d;font-size:19px;font-weight:650}.signin-logo{display:grid;place-items:center;width:38px;height:38px;background:#2563eb;color:#fff;border-radius:12px;font-size:21px}.signin-card{width:min(420px,100%);padding:40px;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:20px;box-shadow:0 18px 65px #2034600b}.signin-eyebrow{color:#2563eb;font-size:12px;letter-spacing:2px;font-weight:600}.signin-card h1{margin:14px 0 10px;font-size:30px;letter-spacing:-1px;font-weight:650;color:#172b4d}.signin-card>p{color:#64748b;line-height:1.8;margin:0 0 30px;font-size:14px}.signin-card .ant-input,.signin-card .ant-input-affix-wrapper{border-radius:9px}.signin-card .ant-btn{height:44px;margin-top:8px;border-radius:9px;box-shadow:none}.signin-help{border-top:1px solid #eef2f6;padding-top:23px;margin-top:27px;font-size:12px;color:#77859b;text-align:center}.signin-footer{margin-top:28px;color:#94a3b8;font-size:12px}.iot-shell{background:#f5f7fb}.iot-sidebar{background:#fff!important;color:#334155!important;border-right:1px solid #e2e8f0;box-shadow:none!important}.iot-brand{color:#172b4d!important;border-bottom:1px solid #eef2f6}.iot-brand-mark{background:#2563eb!important;color:#fff!important;border-radius:10px!important;box-shadow:none!important}.iot-brand-text small,.iot-nav .caption,.iot-collapse,.iot-side-foot{color:#64748b!important}.iot-nav a{color:#475569!important;border-radius:8px!important;margin-bottom:4px}.iot-nav a:hover{background:#f1f5f9!important}.iot-nav a.active{background:#edf3ff!important;color:#1d4ed8!important;box-shadow:none!important;font-weight:600}.iot-collapse,.iot-side-foot{background:#fff!important;border-color:#e2e8f0!important}.iot-topbar{background:#fff!important;border-bottom:1px solid #e2e8f0!important;gap:16px;flex-wrap:wrap}.iot-main{background:#f5f7fb!important}.page-head{padding-top:25px!important;padding-bottom:23px!important}.page-head h1{font-size:27px!important;letter-spacing:-.5px;font-weight:650;color:#172b4d}.page-head .eyebrow{display:none}.page-head p{color:#64748b!important}.metric.dark{background:#fff!important;color:#172b4d!important}.metric.dark .label,.metric.dark small{color:#64748b!important}.metric{border:1px solid #e2e8f0!important;box-shadow:none!important;border-radius:12px!important}.ant-table-wrapper,.ant-card{border-radius:12px!important}.ant-table-thead>tr>th{background:#f8fafc!important;color:#475569!important;font-weight:600!important}.ant-table-tbody>tr>td{border-color:#eef2f6!important}.ant-table-wrapper .ant-table-tbody>tr>td:not(.ant-table-cell-ellipsis){white-space:normal;overflow-wrap:anywhere;word-break:normal;vertical-align:top}.ant-table-wrapper .ant-table-thead>tr>th{white-space:normal;overflow-wrap:anywhere}.ant-table-wrapper .ant-table-cell .ant-space{max-width:100%}.ant-table-wrapper .ant-table-cell .ant-space-item{min-width:0}.order-guidance{line-height:1.65;overflow-wrap:anywhere}.order-guidance small{display:block;margin-top:6px;color:#64748b}.batch-task-drawer .ant-drawer-header-title,.batch-task-drawer .ant-drawer-title{min-width:0}.batch-detail-heading{display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere;line-height:1.5}.batch-detail-heading small{color:#64748b;font-size:12px;font-weight:400}.batch-detail-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.batch-detail-export-note{color:#64748b;font-size:12px;line-height:1.6}.batch-detail-card-info{display:grid;gap:6px;overflow-wrap:anywhere;line-height:1.6}.batch-detail-card-info strong{font-weight:500;font-variant-numeric:tabular-nums}.batch-detail-card-info>span{color:#64748b;font-size:12px}.batch-detail-status{display:grid;justify-items:start;gap:6px;overflow-wrap:anywhere}.batch-detail-status .ant-tag{margin-inline-end:0;white-space:normal}.batch-detail-status small{color:#64748b;line-height:1.5}.batch-detail-explanation{white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;line-height:1.75}.batch-detail-mobile-result{display:grid;gap:12px}.batch-detail-mobile-result>small{color:#64748b}.status-guide-list{display:grid;gap:14px}.status-guide-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:start}.status-guide-row p{margin:0 0 4px}.orders-section-nav{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 20px;border-bottom:1px solid #e2e8f0}.orders-section-title{padding:14px 0;color:#172b4d;font-size:14px;font-weight:600}.orders-auto-refresh{color:#64748b;font-size:12px;line-height:1.6}.orders-section-nav>.ant-tabs{flex:1;min-width:240px}.orders-section-nav .ant-tabs-nav{margin-bottom:0}.orders-section-nav .ant-tabs-nav:before{border-bottom:0}.orders-section-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-left:auto;padding:4px 0}.orders-section-actions .ant-btn{color:#64748b}.orders-section-actions .ant-btn:hover{color:#2563eb!important}.orders-filters{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px 0}.orders-filter-tip{display:flex;align-items:flex-start;gap:8px;color:#64748b;font-size:13px;line-height:1.65;margin:-2px 0 14px}.orders-filter-tip>.anticon{margin-top:4px}.orders-help{width:min(520px,calc(100vw - 64px));max-height:min(65vh,600px);overflow-y:auto;line-height:1.75;padding:4px}.orders-help h3{margin:0 0 10px;color:#172b4d;font-size:16px}.orders-help h4{margin:18px 0 10px;color:#172b4d}.orders-help>p{margin:0 0 10px}.orders-help-note{color:#64748b}.orders-help .status-guide-row{grid-template-columns:90px minmax(0,1fr);gap:8px}.orders-help .status-guide-row p{font-size:13px}@media (max-width:600px){.orders-section-nav>.ant-tabs{flex-basis:100%}.orders-section-actions{width:100%;justify-content:flex-end;padding-top:0}.orders-filters>.ant-select,.orders-filters>.ant-input-search{flex:1 1 220px}.orders-help .status-guide-row{grid-template-columns:1fr}}@media (max-width:600px){.status-guide-row{grid-template-columns:1fr;gap:4px}}.ant-btn-primary{box-shadow:none!important}.ant-drawer-title{color:#172b4d!important;font-size:18px!important}.ant-descriptions-bordered .ant-descriptions-item-label{background:#f8fafc!important;color:#64748b!important}.section-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;color:#64748b;font-size:13px}.ant-row>.ant-col>.ant-card{height:100%}.metric-description{color:#64748b;font-size:13px;line-height:1.7;margin-bottom:0}.overview-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:16px;margin:20px 0}.attention-list{display:flex;flex-direction:column}.attention-row{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:17px 0;border:0;border-bottom:1px solid #eef2f6;background:transparent;cursor:pointer;text-align:left;color:#172b4d}.attention-row:last-child{border-bottom:0}.attention-row small{display:block;color:#64748b;margin-top:7px;font-size:12px}.attention-row strong{color:#2563eb;white-space:nowrap;font-size:20px}.data-quality>div{display:flex;justify-content:space-between;padding:13px 0;color:#475569}.data-quality{margin-bottom:18px}.asset-form{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.permission-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 8px}@media (max-width:850px){.overview-grid{grid-template-columns:1fr}.iot-main{padding-left:18px!important;padding-right:18px!important}}@media (max-width:480px){.signin-card{padding:28px 24px}.asset-form,.permission-grid{grid-template-columns:1fr}.section-toolbar{align-items:flex-start}}
