:root{--navy:#0b1739;--blue:#246bfd;--cyan:#11b8d8;--red:#f04438;--amber:#f79009;--green:#12b76a;--ink:#17213c;--muted:#667085;--line:#e8ecf3;--bg:#f5f7fb;--card:#fff;--shadow:0 8px 24px rgba(16,24,40,.06)}
*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei UI","Noto Sans SC",Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px}.app-shell{min-height:100vh;display:grid;grid-template-columns:224px 1fr}.sidebar{background:linear-gradient(180deg,#0d1d47,#08142f);color:#fff;padding:24px 16px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:224px}.brand{height:60px;display:flex;align-items:center;gap:12px;padding:0 8px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:linear-gradient(145deg,#42d5e8,#246bfd);font-weight:900;font-size:21px}.brand div{display:flex;flex-direction:column;gap:3px}.brand strong{font-size:16px;letter-spacing:.5px}.brand small,.station-card small{font-size:11px;color:#9db0d8}nav{display:flex;flex-direction:column;gap:6px;margin-top:28px}.nav-item{display:flex;align-items:center;gap:12px;text-decoration:none;color:#aebddd;padding:12px 14px;border-radius:10px;font-weight:600}.nav-item span{width:20px;text-align:center}.nav-item:hover,.nav-item.active{color:#fff;background:rgba(58,118,255,.2)}.station-card{margin-top:auto;display:grid;grid-template-columns:36px 1fr 12px;gap:10px;align-items:center;background:rgba(255,255,255,.07);padding:12px;border-radius:12px}.station-icon{height:36px;border-radius:50%;display:grid;place-items:center;background:#18376b;color:#69d9eb;font-weight:700}.station-card div:nth-child(2){display:flex;flex-direction:column;gap:4px}.station-card strong{font-size:12px}main{grid-column:2;min-width:0}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:5}.breadcrumb{font-weight:700;color:#344054}.top-actions{display:flex;align-items:center;gap:14px;color:var(--muted)}.sync{font-size:12px}.sync i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-right:6px;box-shadow:0 0 0 4px #e5f8ef}.icon-button,.bell{border:1px solid var(--line);background:#fff;width:34px;height:34px;border-radius:10px;color:#475467;position:relative}.bell b{position:absolute;right:-5px;top:-7px;background:var(--red);color:#fff;font-size:9px;min-width:18px;height:18px;border:2px solid #fff;border-radius:9px;display:grid;place-items:center}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e6eeff;color:var(--blue);font-weight:700}.view{padding:28px 32px 40px;max-width:1520px;margin:auto}.hidden{display:none!important}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px}.page-head h1{font-size:26px;margin:0 0 7px}.page-head p{margin:0;color:var(--muted)}.primary-btn,.secondary-btn,.ghost-btn{border:0;border-radius:9px;height:40px;padding:0 16px;font-weight:700;cursor:pointer}.primary-btn{color:#fff;background:var(--blue);box-shadow:0 5px 12px rgba(36,107,253,.22)}.secondary-btn{background:#eef3ff;color:var(--blue)}.ghost-btn{background:#fff;color:#475467;border:1px solid #dce2eb}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.summary-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 20px;display:grid;grid-template-columns:42px 1fr auto;gap:14px;align-items:center;box-shadow:var(--shadow)}.metric-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:18px}.metric-icon.blue{background:#edf3ff;color:var(--blue)}.metric-icon.red{background:#fff0ee;color:var(--red)}.metric-icon.amber{background:#fff6e8;color:var(--amber)}.metric-icon.green{background:#e9f9f1;color:var(--green)}.summary-card small{display:block;color:var(--muted);margin-bottom:6px}.summary-card strong{font-size:24px}.trend{font-size:12px;color:var(--muted)}.trend.bad{color:var(--red)}.table-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.filters{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}.search-wrap{height:40px;min-width:320px;display:flex;align-items:center;gap:9px;border:1px solid #dce2eb;border-radius:9px;padding:0 12px;color:#98a2b3}.search-wrap input{border:0;outline:0;flex:1;font:inherit}.select,.filter-chip{height:40px;border:1px solid #dce2eb;border-radius:9px;background:#fff;padding:0 12px;color:#475467}.filter-chip.active{background:#fff0ee;color:#d92d20;border-color:#ffd5cf}.sort-note{margin-left:auto;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:7px}.sort-note i{width:7px;height:7px;background:var(--red);border-radius:50%}.device-table{width:100%;border-collapse:collapse;table-layout:fixed}.device-table th{background:#fafbfc;color:#667085;font-size:12px;text-align:left;padding:12px 18px;border-bottom:1px solid var(--line);font-weight:600}.device-table td{padding:15px 18px;border-bottom:1px solid #f0f2f6;vertical-align:middle}.device-table tbody tr{cursor:pointer;transition:.15s}.device-table tbody tr:hover{background:#f7faff}.device-table tbody tr:first-child{background:linear-gradient(90deg,#fff7f6,#fff 28%)}.device-table tbody tr:first-child td:first-child{box-shadow:inset 3px 0 var(--red)}.device-name{display:flex;gap:10px;align-items:center}.device-dot{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:#edf3ff;color:var(--blue);font-size:17px}.device-name strong,.owner strong{display:block;font-size:13px}.device-name small,.owner small{display:block;color:var(--muted);margin-top:4px;font-size:11px}.status{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:20px;font-size:12px;font-weight:700}.status.alert{color:#d92d20;background:#fff0ee}.status.warn{color:#b54708;background:#fff6e8}.status.ok{color:#027a48;background:#ecfdf3}.status i{width:6px;height:6px;border-radius:50%;background:currentColor}.alert-time strong{display:block;color:#d92d20;font-size:13px}.alert-time small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.address{color:#475467;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-arrow{color:#98a2b3;font-size:18px}.table-foot{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;color:var(--muted);font-size:12px}.pagination{display:flex;gap:6px}.pagination button{width:30px;height:30px;border:1px solid var(--line);background:#fff;border-radius:8px}.pagination button.active{background:var(--blue);color:#fff;border-color:var(--blue)}
.detail-head{display:flex;align-items:center;gap:14px;margin-bottom:20px}.back-btn{width:38px;height:38px;border-radius:10px;background:#fff;border:1px solid var(--line);cursor:pointer;font-size:18px}.detail-title{flex:1}.detail-title h1{font-size:24px;margin:0 0 6px;display:flex;align-items:center;gap:10px}.detail-title p{margin:0;color:var(--muted)}.detail-actions{display:flex;gap:10px}.detail-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:18px}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:20px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel-title h2{font-size:16px;margin:0}.panel-title small{color:var(--muted)}.visual-panel{display:grid;grid-template-columns:270px 1fr;gap:28px;align-items:center;min-height:380px}.jug-stage{height:320px;position:relative;display:grid;place-items:center;background:radial-gradient(circle at 50% 46%,#f0f8ff 0,#f8fbff 44%,transparent 45%)}.jug{width:154px;height:240px;position:relative;border:4px solid #bcd5ea;border-radius:34px 34px 46px 46px;background:rgba(239,248,255,.7);overflow:hidden;box-shadow:inset 8px 0 18px rgba(126,185,220,.16),0 15px 26px rgba(36,107,253,.08)}.jug:before{content:"";position:absolute;width:70px;height:35px;border:4px solid #bcd5ea;border-bottom:0;border-radius:18px 18px 0 0;left:38px;top:-23px;background:#f8fbff}.jug-ridges{position:absolute;inset:38px 14px 34px;border-top:2px solid rgba(98,156,196,.18);border-bottom:2px solid rgba(98,156,196,.18);box-shadow:0 25px rgba(98,156,196,.12),0 50px rgba(98,156,196,.12),0 75px rgba(98,156,196,.12),0 100px rgba(98,156,196,.12)}.water{position:absolute;left:0;right:0;bottom:0;height:24px;background:linear-gradient(180deg,#73d9ef,#2e8ff5);opacity:.9}.water:before{content:"";position:absolute;left:-10px;right:-10px;top:-7px;height:14px;border-radius:50%;background:#73d9ef}.sensor-line{position:absolute;left:13px;right:13px;bottom:49px;border-top:2px dashed var(--red);z-index:3}.sensor-chip{position:absolute;right:-30px;bottom:35px;width:28px;height:46px;border-radius:7px;background:#152b58;border:3px solid #4f77bc;z-index:4;box-shadow:0 4px 12px rgba(10,23,57,.2)}.sensor-chip:before{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:var(--red);left:7px;top:7px;box-shadow:0 0 0 4px rgba(240,68,56,.16)}.sensor-label{position:absolute;right:-2px;bottom:29px;transform:translateX(100%);color:var(--red);font-size:11px;font-weight:700;white-space:nowrap}.jug-caption{position:absolute;bottom:-1px;color:var(--muted);font-size:11px}.alarm-copy h3{font-size:22px;margin:0 0 10px;color:#d92d20}.alarm-copy>p{color:#667085;line-height:1.75;margin:0 0 22px}.reading{display:grid;grid-template-columns:1fr 1fr;gap:10px}.reading div{padding:13px;background:#f8fafc;border-radius:10px}.reading small{display:block;color:var(--muted);margin-bottom:6px}.reading strong{font-size:16px}.reading strong.red{color:var(--red)}.info-stack{display:flex;flex-direction:column;gap:18px}.user-card{display:flex;align-items:center;gap:12px;padding-bottom:16px;border-bottom:1px solid var(--line)}.user-avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#e9f1ff;color:var(--blue);font-size:18px;font-weight:700}.user-main{flex:1}.user-main strong{display:block;font-size:16px}.user-main small{color:var(--muted);display:block;margin-top:5px}.call-btn{color:var(--blue);font-weight:700;text-decoration:none}.info-list{display:flex;flex-direction:column;gap:15px}.info-row{display:grid;grid-template-columns:76px 1fr;gap:12px}.info-row label{color:var(--muted)}.info-row span{line-height:1.55}.map-card{height:118px;border-radius:11px;background:linear-gradient(135deg,#e9eef3,#f7f9fb);position:relative;overflow:hidden;border:1px solid #e4e9ef}.map-card:before,.map-card:after{content:"";position:absolute;inset:-20px;border:10px double rgba(174,188,204,.45);transform:rotate(15deg)}.map-pin{position:absolute;inset:0;display:grid;place-items:center;color:var(--blue);font-size:28px;z-index:1}.event-panel{grid-column:1/-1}.event-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:30px}.timeline{position:relative;padding-left:26px}.timeline:before{content:"";position:absolute;left:6px;top:10px;bottom:10px;width:2px;background:#e7ecf3}.event{position:relative;padding:0 0 22px}.event:last-child{padding-bottom:0}.event:before{content:"";position:absolute;left:-25px;top:4px;width:10px;height:10px;border-radius:50%;background:#fff;border:3px solid var(--blue)}.event:first-child:before{border-color:var(--red);box-shadow:0 0 0 4px #fff0ee}.event strong{display:block;font-size:13px;margin-bottom:5px}.event p{margin:0;color:var(--muted);font-size:12px}.event time{float:right;color:#98a2b3;font-size:11px}.recommend{background:#f8fafc;border-radius:12px;padding:16px}.recommend h3{font-size:14px;margin:0 0 13px}.recommend ol{margin:0;padding-left:20px;color:#475467;line-height:2}.recommend button{width:100%;margin-top:14px}.toast{position:fixed;right:28px;bottom:28px;background:#13214a;color:#fff;padding:13px 18px;border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.18);transform:translateY(90px);opacity:0;transition:.25s;z-index:20}.toast.show{transform:none;opacity:1}.resolved .water{height:112px}.resolved .alarm-copy h3{color:var(--green)}.resolved .sensor-line{border-color:var(--green)}.resolved .sensor-chip:before{background:var(--green)}.resolved .sensor-label{color:var(--green)}
@media(max-width:1100px){.summary-grid{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr}.visual-panel{grid-template-columns:250px 1fr}.event-panel{grid-column:auto}.event-layout{grid-template-columns:1fr}.device-table th:nth-child(5),.device-table td:nth-child(5){display:none}}@media(max-width:760px){.app-shell{display:block}.sidebar{display:none}main{grid-column:auto}.view{padding:20px 14px}.topbar{padding:0 16px}.summary-grid{grid-template-columns:1fr}.filters{flex-wrap:wrap}.search-wrap{min-width:100%}.sort-note{margin-left:0}.device-table th:nth-child(3),.device-table td:nth-child(3),.device-table th:nth-child(4),.device-table td:nth-child(4){display:none}.visual-panel{grid-template-columns:1fr}.detail-actions{display:none}.detail-grid{display:block}.panel{margin-bottom:16px}}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#edf4ff,#f8fbff)}
.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 50px rgba(16,36,84,.14);padding:34px}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:30px}.login-brand>div{display:flex;flex-direction:column;gap:4px}.login-brand strong{font-size:17px}.login-brand small{color:var(--muted);font-size:11px}.login-card h1{margin:0 0 7px;font-size:26px}.login-subtitle{margin:0 0 24px;color:var(--muted)}.login-card form{display:flex;flex-direction:column;gap:15px}.login-submit{width:100%;margin-top:3px}.login-error{min-height:18px;margin:0;color:var(--red);font-size:12px}.login-hint{display:block;color:var(--muted);line-height:1.6;margin-top:20px}.danger-text{color:var(--red)!important}.empty-state{text-align:center;padding:60px}.empty-state h2{margin:0 0 8px}.empty-state p{margin:0;color:var(--muted)}.system-links{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center}.system-links>div:last-child{grid-column:1/-1;border-top:1px solid var(--line);padding-top:20px}.system-links h2{font-size:16px;margin:0 0 7px}.system-links p{margin:0;color:var(--muted)}
.jug{overflow:visible}.water{border-radius:0 0 40px 40px}.water:before{left:0;right:0}.sensor-label{font-size:10px;right:-3px}.jug-caption{white-space:nowrap}
.jug-product{display:block;width:228px;height:292px;object-fit:contain;object-position:center;mix-blend-mode:multiply}.water-level-illustration{border-radius:12px}.jug-stage{overflow:hidden}.jug-caption{z-index:1;padding:4px 8px;border-radius:6px;background:rgba(255,255,255,.88)}

/* Completed business modules */
.page-actions{display:flex;gap:10px;align-items:center}.empty-cell{text-align:center!important;padding:48px!important;color:#98a2b3}.subline{display:block;color:#98a2b3;margin-top:5px;font-size:11px}.data-table{width:100%;border-collapse:collapse;table-layout:fixed}.data-table th{background:#fafbfc;color:#667085;font-size:12px;text-align:left;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:600}.data-table td{padding:15px 16px;border-bottom:1px solid #f0f2f6;vertical-align:middle;font-size:12px}.data-table tbody tr{transition:.15s}.data-table tbody tr:hover{background:#f7faff}.data-table th:nth-child(3),.data-table td:nth-child(3){width:22%}.task-status{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap}.task-status i{width:6px;height:6px;border-radius:50%;background:currentColor}.task-status.pending{color:#b54708;background:#fff6e8}.task-status.delivering{color:#175cd3;background:#eef4ff}.task-status.late{color:#d92d20;background:#fff0ee}.task-status.done{color:#027a48;background:#ecfdf3}.mini-action{border:1px solid #dce3ef;background:#fff;color:#246bfd;border-radius:7px;padding:6px 10px;font-weight:700;cursor:pointer}.route-strip,.user-insight{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(100deg,#122650,#1b3e7b);color:#fff;border-radius:14px;padding:17px 20px;margin-bottom:18px;box-shadow:var(--shadow)}.route-strip>div:first-child,.user-insight>div{display:flex;flex-direction:column;gap:6px}.route-strip span,.user-insight span{color:#afc5ee;font-size:12px}.route-saving{text-align:right;display:flex;flex-direction:column;gap:5px}.route-saving small{color:#9db5df}.user-insight{background:linear-gradient(100deg,#f0f5ff,#f6fbff);color:#17213c;border:1px solid #dce8ff}.user-insight span{color:#667085}.user-name-cell{display:flex;align-items:center;gap:10px}.user-avatar.small{width:34px;height:34px;font-size:13px}.user-name-cell strong,.user-name-cell small{display:block}.user-name-cell small{color:#98a2b3;margin-top:4px}.area-tag,.customer-tag{display:inline-flex;padding:5px 9px;border-radius:20px;background:#f2f4f7;color:#475467;font-size:11px;white-space:nowrap}.customer-tag{background:#edf3ff;color:#175cd3}.drawer-mask{position:fixed;inset:0;background:rgba(5,15,40,.28);z-index:30;backdrop-filter:blur(2px)}.detail-drawer{position:fixed;right:0;top:0;bottom:0;width:410px;background:#fff;z-index:31;box-shadow:-18px 0 44px rgba(16,24,40,.16);padding:26px;display:flex;flex-direction:column;animation:drawer-in .22s ease-out}@keyframes drawer-in{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:18px}.drawer-head small{color:#667085}.drawer-head h2{margin:6px 0 0;font-size:24px}.drawer-head button{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:#fff;font-size:22px;color:#667085}.drawer-user{display:flex;align-items:center;gap:13px;padding:20px 0}.drawer-user div{display:flex;flex-direction:column;gap:5px}.drawer-user small{color:#667085}.drawer-section{border-top:1px solid var(--line);padding:20px 0}.drawer-section h3{font-size:14px;margin:0 0 16px}.drawer-section .info-row{margin-top:13px}.drawer-event{display:flex;gap:11px;align-items:flex-start;margin:15px 0}.drawer-event i{width:9px;height:9px;border-radius:50%;background:#246bfd;margin-top:4px;box-shadow:0 0 0 4px #edf3ff}.drawer-event div{display:flex;flex-direction:column;gap:4px}.drawer-event small{color:#98a2b3}.drawer-primary{margin-top:auto}.period-switch{display:flex;background:#eaedf3;border-radius:9px;padding:3px}.period-switch button{border:0;background:transparent;height:34px;padding:0 14px;border-radius:7px;color:#667085;font-weight:700}.period-switch button.active{background:#fff;color:#246bfd;box-shadow:0 2px 6px rgba(16,24,40,.08)}.report-range{display:flex;justify-content:space-between;align-items:center;margin:-8px 0 16px;color:#475467}.report-range span{font-weight:700}.report-range small{color:#98a2b3}.report-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:18px}.chart-panel{grid-row:span 1}.chart-total{font-size:12px;color:#246bfd;font-weight:700}.bar-chart{height:250px;border-left:1px solid #edf0f4;border-bottom:1px solid #edf0f4;display:flex;align-items:flex-end;justify-content:space-around;padding:18px 20px 0;background:repeating-linear-gradient(to bottom,transparent 0,transparent 49px,#f0f2f5 50px)}.bar-item{height:100%;width:10%;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;gap:9px}.bar{width:36px;min-height:18px;border-radius:7px 7px 2px 2px;background:linear-gradient(180deg,#5f8dff,#246bfd);position:relative;transition:.2s}.bar span{position:absolute;top:-20px;width:100%;text-align:center;font-size:10px;color:#667085}.bar-item small{color:#98a2b3;white-space:nowrap}.donut-wrap{display:flex;align-items:center;justify-content:center;gap:26px;padding:18px 0}.donut{width:150px;height:150px;border-radius:50%;background:conic-gradient(#12b76a 0 82%,#246bfd 82% 96%,#f04438 96% 100%);display:grid;place-items:center}.donut:before{content:"";position:absolute;width:98px;height:98px;border-radius:50%;background:#fff}.donut div{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column}.donut strong{font-size:24px}.donut small{color:#667085}.legend{min-width:120px}.legend p{display:grid;grid-template-columns:10px 1fr auto;gap:8px;align-items:center;margin:12px 0;font-size:11px}.legend i{width:8px;height:8px;border-radius:50%}.lg-green{background:#12b76a}.lg-blue{background:#246bfd}.lg-red{background:#f04438}.rank-list>div{display:grid;grid-template-columns:24px 64px 1fr 38px;gap:10px;align-items:center;margin:19px 0}.rank-list b{width:22px;height:22px;border-radius:7px;background:#edf3ff;color:#246bfd;display:grid;place-items:center;font-size:11px}.rank-list span,.rank-list strong{font-size:12px}.rank-list em{height:7px;border-radius:8px;background:linear-gradient(90deg,#246bfd,#6e9aff)}.health-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.health-list>div{background:#f8fafc;border-radius:10px;padding:15px}.health-list span,.health-list strong,.health-list small{display:block}.health-list span{font-size:11px;color:#667085}.health-list strong{font-size:21px;margin:8px 0 4px}.health-list small{color:#98a2b3}.green-text{color:#027a48}.red-text{color:#d92d20}.amber-text{color:#b54708}.report-link{width:100%;margin-top:14px}
@media(max-width:1100px){.report-grid{grid-template-columns:1fr}.data-table th:nth-child(3),.data-table td:nth-child(3){display:none}.route-strip{align-items:flex-start}.route-saving{display:none}}@media(max-width:760px){.page-actions{display:none}.data-table th:nth-child(4),.data-table td:nth-child(4),.data-table th:nth-child(5),.data-table td:nth-child(5),.data-table th:nth-child(6),.data-table td:nth-child(6){display:none}.detail-drawer{width:100%}.route-strip{display:block}.health-list{grid-template-columns:1fr}.donut-wrap{flex-direction:column}}

/* Creation and detail flows */
.flow-head{display:flex;align-items:center;gap:14px;margin-bottom:22px}.flow-head>div{flex:1}.flow-head h1{font-size:24px;margin:0 0 6px}.flow-head p{margin:0;color:#667085}.flow-step{padding:7px 11px;border-radius:20px;background:#edf3ff;color:#175cd3;font-size:12px;font-weight:700}.workflow-form{max-width:1180px}.form-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px;align-items:start}.form-main{display:flex;flex-direction:column;gap:16px}.form-card,.form-aside>div{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.form-card{padding:22px}.form-card-head{display:flex;align-items:flex-start;gap:12px;padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}.form-card-head h2{font-size:16px;margin:0 0 5px}.form-card-head p{font-size:12px;color:#667085;margin:0}.section-number{width:28px;height:28px;border-radius:9px;background:#edf3ff;color:#246bfd;display:grid;place-items:center;font-weight:800}.form-grid{display:grid;grid-template-columns:1fr;gap:16px}.form-grid.two{grid-template-columns:1fr 1fr}.form-field{display:flex;flex-direction:column;gap:7px;color:#475467;font-size:12px}.form-field>span{font-weight:700}.form-field b{color:#f04438;margin-left:3px}.form-field input,.form-field select,.form-field textarea{width:100%;border:1px solid #d9e0ea;border-radius:9px;background:#fff;padding:11px 12px;font:inherit;color:#17213c;outline:none}.form-field textarea{resize:vertical}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#7aa2ff;box-shadow:0 0 0 3px #edf3ff}.form-field input.invalid,.form-field select.invalid{border-color:#f04438;background:#fff8f7}.field-error{min-height:14px;color:#d92d20}.form-aside{position:sticky;top:94px;display:flex;flex-direction:column;gap:14px}.form-summary,.order-preview{padding:20px}.form-summary h3,.order-preview h3{font-size:14px;margin:0 0 14px}.form-summary ul{padding-left:18px;margin:0;color:#667085;line-height:2}.form-actions{padding:14px;display:grid;grid-template-columns:1fr 1.3fr;gap:9px}.binding-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.binding-choice label{border:1px solid #dce3ef;border-radius:11px;padding:14px;display:flex;gap:10px;align-items:flex-start;cursor:pointer}.binding-choice label:has(input:checked){border-color:#7ea6ff;background:#f5f8ff}.binding-choice span{display:flex;flex-direction:column;gap:4px}.binding-choice small{color:#667085}.form-disabled{opacity:.4;pointer-events:none}.selected-address{background:#f7f9fc;border:1px solid #e6ebf2;border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:5px}.selected-address span,.selected-address small{color:#667085;font-size:11px}.order-preview>div{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid #edf0f4}.order-preview span{color:#667085}.check-row{display:flex;gap:9px;align-items:center;color:#475467;font-size:12px;background:#f7f9fc;border-radius:9px;padding:12px}.install-layout{display:grid;grid-template-columns:230px 1fr;gap:24px;align-items:center}.install-layout img{width:210px;height:270px;object-fit:contain;mix-blend-mode:multiply}.profile-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.profile-history{grid-column:1/-1}.profile-identity{display:flex;align-items:center;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--line)}.profile-avatar{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#e9f1ff;color:#246bfd;font-size:22px;font-weight:800}.profile-identity h2{margin:0 0 6px}.profile-identity p{margin:0;color:#667085}.verified-badge{margin-left:auto;color:#027a48;background:#ecfdf3;border-radius:20px;padding:6px 10px;font-size:11px}.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:18px 0}.profile-stats>div,.device-readings>div{padding:13px;background:#f8fafc;border-radius:10px}.profile-stats small,.device-readings small{display:block;color:#667085;margin-bottom:7px}.profile-stats strong{font-size:15px}.profile-info{display:flex;flex-direction:column;gap:14px}.text-button{border:0;background:transparent;color:#246bfd;font-weight:700}.bound-device{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;border:1px solid #e3e9f2;border-radius:12px;padding:15px}.device-orb{width:48px;height:48px;border-radius:13px;background:#edf3ff;color:#246bfd;display:grid;place-items:center;font-size:22px}.bound-device p{margin:5px 0 0;color:#667085;font-size:11px}.device-readings{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.compact-table{width:100%;border-collapse:collapse}.compact-table th,.compact-table td{text-align:left;padding:12px;border-bottom:1px solid #edf0f4;font-size:12px}.compact-table th{color:#667085}.task-detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.task-timeline{grid-column:1/-1}.delivery-route{padding:12px}.route-point{display:flex;gap:13px}.route-point i{width:13px;height:13px;border-radius:50%;background:#246bfd;box-shadow:0 0 0 5px #edf3ff;margin-top:4px}.route-point.destination i{background:#f04438;box-shadow:0 0 0 5px #fff0ee}.route-point small,.route-point p{display:block;color:#667085;margin:0}.route-point strong{display:block;margin:5px 0}.route-line{height:34px;border-left:2px dashed #b7c7e3;margin-left:6px}.delivery-goods{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.delivery-goods>div{background:#f8fafc;border-radius:10px;padding:14px}.delivery-goods small{display:block;color:#667085;margin-bottom:7px}.driver-card{display:flex;align-items:center;gap:12px;padding:14px;border-radius:11px;background:#f8fafc;margin-bottom:15px}.driver-avatar{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#e9f1ff;color:#246bfd;font-weight:800}.driver-card div{display:flex;flex-direction:column;gap:5px}.driver-card small{color:#667085}.form-field.compact{margin-bottom:12px}.driver-meta{display:flex;flex-direction:column;gap:8px;color:#667085;font-size:11px}.progress-steps{display:grid;grid-template-columns:repeat(4,1fr);position:relative;padding:18px 10px}.progress-steps:before{content:"";position:absolute;left:11%;right:11%;top:31px;height:2px;background:#e4e9f1}.progress-steps>div{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;gap:7px}.progress-steps i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#fff;border:2px solid #cbd5e1;color:#98a2b3;font-style:normal;z-index:1}.progress-steps .done i{background:#12b76a;border-color:#12b76a;color:#fff}.progress-steps .current i{background:#246bfd;border-color:#246bfd;color:#fff}.progress-steps small{color:#98a2b3}.progress-steps strong{font-size:12px}
@media(max-width:1000px){.form-layout,.profile-grid,.task-detail-grid{grid-template-columns:1fr}.form-aside{position:static}.profile-history,.task-timeline{grid-column:auto}}@media(max-width:700px){.form-grid.two,.binding-choice,.delivery-goods,.profile-stats,.device-readings,.progress-steps{grid-template-columns:1fr}.install-layout{grid-template-columns:1fr}.install-layout img{margin:auto}.flow-step{display:none}}
.alarm-copy h3.normal-state{color:#027a48}
/* Sleep time setting */
.sleep-form{padding:20px;display:flex;flex-direction:column;gap:12px}.sleep-input-wrap{display:flex;align-items:center;gap:8px;border:1px solid #d9e0ea;border-radius:9px;padding:0 12px;background:#fff}.sleep-input-wrap:focus-within{border-color:#7aa2ff;box-shadow:0 0 0 3px #edf3ff}.sleep-input-wrap input{border:0;outline:none;font:inherit;font-size:16px;padding:11px 0;width:120px;color:#17213c}.sleep-unit{color:#667085;font-size:12px}.sleep-hint{color:#667085;font-size:11px;line-height:1.7;margin:0}
/* Device select & bulk delete */
.select-col{width:36px;text-align:center}.select-col input{width:15px;height:15px;accent-color:#246bfd;cursor:pointer}.danger-btn{border:1px solid #f04438;color:#f04438;background:#fff;border-radius:8px;padding:7px 12px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}.danger-btn:hover{background:#fff0ee}.hidden{display:none!important}
/* Address cell & actions */
.addr-cell{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.addr-text{line-height:1.5}.addr-actions{display:flex;gap:6px}.mini-btn{display:inline-block;border:1px solid #d9e0ea;background:#fff;color:#246bfd;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:700;cursor:pointer;text-decoration:none}.mini-btn:hover{border-color:#7aa2ff;background:#f5f8ff}.tel-link{color:#246bfd;text-decoration:none;font-weight:700}.tel-link:hover{text-decoration:underline}
/* Edit drawer form */
.detail-drawer .drawer-section{padding:20px;display:flex;flex-direction:column;gap:14px}.detail-drawer .drawer-head p{margin:4px 0 0;color:#667085;font-size:12px}
/* Region input & task actions */
.region-row{display:flex;gap:6px;align-items:center}.region-row input{flex:1;min-width:0}.region-row .mini-btn{white-space:nowrap;padding:9px 10px}.task-actions{display:flex;gap:6px;flex-wrap:wrap}.mini-action.danger{color:#f04438;border-color:#fec9c4}.mini-action.danger:hover{background:#fff0ee}
/* NEW badge */
.new-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;background:#f04438;color:#fff;font-size:10px;font-weight:800;vertical-align:1px;animation:newpulse 1.6s ease-in-out infinite}.detail-title .new-badge{vertical-align:6px;margin-right:8px}@keyframes newpulse{0%,100%{opacity:1}50%{opacity:.5}}
/* Dual status (connect + water) */
.status-pair{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.status.off{background:#f2f4f7;color:#667085;border:1px solid #e4e7ec}.status.off i{background:#98a2b3}.status-pair .status{white-space:nowrap}

/* 配送员管理 */
.driver-table tbody tr{cursor:pointer}.driver-name-cell{display:flex;align-items:center;gap:11px}.driver-name-cell strong,.driver-name-cell small{display:block}.driver-name-cell small{margin-top:4px;color:#98a2b3;font-size:11px}.driver-avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e9f1ff;color:#246bfd;font-weight:800}.driver-state{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap}.driver-state i{width:6px;height:6px;border-radius:50%;background:currentColor}.driver-state.available{color:#027a48;background:#ecfdf3}.driver-state.delivering{color:#175cd3;background:#eef4ff}.driver-state.off{color:#667085;background:#f2f4f7}.rating-star{color:#b54708;font-weight:700}.row-actions{display:flex;align-items:center;gap:5px}.text-action{border:0;background:transparent;color:#667085;font-weight:700;cursor:pointer;padding:6px 8px}.text-action:hover{color:#246bfd}.dispatch-insight{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;padding:17px 20px;border:1px solid #dbe7ff;border-radius:14px;background:linear-gradient(100deg,#eef4ff,#f7fbff);box-shadow:var(--shadow)}.dispatch-insight>div{display:flex;align-items:center;gap:13px}.dispatch-insight p{margin:5px 0 0;color:#667085;font-size:12px}.insight-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#246bfd;color:#fff;font-size:19px}.driver-detail-grid{display:grid;grid-template-columns:.78fr 1.22fr;gap:18px}.driver-hero{display:flex;align-items:center;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--line)}.driver-hero h2{margin:0 0 5px}.driver-hero p{margin:0 0 6px;color:#667085}.driver-hero>div>span{color:#b54708;font-size:12px;font-weight:700}.route-overview{min-height:280px}.route-count{color:#246bfd;font-size:12px;font-weight:700}.driver-map{height:145px;position:relative;overflow:hidden;border-radius:12px;background:linear-gradient(135deg,#f1f6ff,#f8fafc);border:1px solid #e5ecf7}.driver-map:before,.driver-map:after{content:"";position:absolute;background:#dbe5f3;border-radius:20px;transform:rotate(-18deg)}.driver-map:before{width:115%;height:8px;left:-8%;top:74px}.driver-map:after{width:85%;height:6px;left:23%;top:36px;transform:rotate(24deg)}.map-route-line{position:absolute;left:58px;right:50px;top:84px;border-top:3px dashed #7aa2ff;transform:rotate(-7deg);z-index:2}.map-station,.map-stop{position:absolute;z-index:3;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:800}.map-station{left:22px;bottom:24px;width:42px;height:42px;background:#122650;color:#fff;border:4px solid #dbe7ff}.map-stop{width:28px;height:28px;background:#fff;color:#246bfd;border:3px solid #246bfd;box-shadow:0 4px 10px rgba(36,107,253,.2)}.stop-1{left:30%;top:78px}.stop-2{left:50%;top:47px}.stop-3{left:69%;top:74px}.stop-4{left:84%;top:35px}.route-sequence{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:14px 0;color:#475467;font-size:12px}.route-sequence span{color:#98a2b3}.route-tip{display:flex;align-items:flex-start;gap:10px;padding:12px;background:#f7f9fc;border-radius:10px}.route-tip>span{width:22px;height:22px;flex:0 0 22px;border-radius:50%;display:grid;place-items:center;background:#e8f0ff;color:#246bfd;font-weight:800}.route-tip p{margin:0;color:#667085;font-size:11px;line-height:1.65}.route-tip strong{display:block;color:#344054;margin-bottom:2px}.delivery-queue{grid-column:1/-1}.queue-list{display:flex;flex-direction:column}.queue-item{display:grid;grid-template-columns:76px 1fr 150px;gap:16px;align-items:center;padding:18px 6px;border-bottom:1px solid #edf0f4}.queue-item:last-child{border-bottom:0}.queue-item.first{margin:2px 0 8px;padding:18px 14px;border:1px solid #ffc8c1;border-radius:12px;background:linear-gradient(100deg,#fff7f6,#fff)}.queue-rank{display:flex;flex-direction:column;align-items:center;gap:5px}.queue-rank b{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#edf3ff;color:#246bfd;font-size:16px}.queue-item.first .queue-rank b{background:#f04438;color:#fff}.queue-rank small{color:#667085}.queue-title{display:flex;align-items:center;gap:9px}.queue-main p{margin:6px 0 9px;color:#667085;font-size:12px}.reason-tags{display:flex;gap:6px;flex-wrap:wrap}.reason-tags span{padding:5px 8px;border-radius:6px;background:#f2f4f7;color:#475467;font-size:10px}.reason-tags span.urgent{background:#fff0ee;color:#d92d20}.queue-time{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.queue-time small{color:#98a2b3}.queue-time strong{font-size:12px}.queue-time .text-button{padding:6px 0}.queue-empty{text-align:center;padding:48px;color:#667085}.queue-empty strong{color:#344054}

/* 窄屏配送员入口 */
.topbar-leading{display:flex;align-items:center;gap:10px}.mobile-menu{display:none;width:36px;height:36px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font-size:18px;cursor:pointer}.sidebar-mask{display:none}
@media(max-width:1100px){.driver-detail-grid{grid-template-columns:1fr}.delivery-queue{grid-column:auto}.driver-table th:nth-child(4),.driver-table td:nth-child(4),.driver-table th:nth-child(6),.driver-table td:nth-child(6){display:none}}
@media(max-width:760px){.mobile-menu{display:grid;place-items:center}.sidebar.mobile-open{display:flex;z-index:30;box-shadow:12px 0 32px rgba(8,20,47,.28)}.sidebar-mask.show{display:block;position:fixed;inset:0;z-index:20;background:rgba(11,23,57,.35)}.dispatch-insight{align-items:flex-start}.dispatch-insight .secondary-btn{display:none}.queue-item,.queue-item.first{grid-template-columns:52px 1fr}.queue-time{grid-column:2;align-items:flex-start}.driver-table th:nth-child(2),.driver-table td:nth-child(2),.driver-table th:nth-child(5),.driver-table td:nth-child(5){display:none}.driver-table th:nth-child(1),.driver-table td:nth-child(1){width:42%}.driver-table th:nth-child(3),.driver-table td:nth-child(3){width:25%}.driver-table th:nth-child(7),.driver-table td:nth-child(7){width:33%}}
/* 表单提交错误直接显示在抽屉内，避免 400 时看起来没有反应 */
.form-error{min-height:18px;margin:0;color:#d92d20;font-size:12px;line-height:1.5}.form-hint{margin:0;padding:10px 12px;border-radius:9px;background:#f5f8ff;color:#667085;font-size:12px;line-height:1.6}

/* 移动端适配：保证侧栏、表格和表单在窄屏下仍然可操作 */
html,body{overflow-x:hidden}.app-shell,main{min-width:0}.topbar-leading{min-width:0}.breadcrumb{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-mask{opacity:0;pointer-events:none;transition:opacity .2s ease}
@media(max-width:760px){
  .app-shell{display:block}.sidebar{display:flex;position:fixed;inset:0 auto 0 0;width:min(82vw,300px);z-index:50;padding:20px 14px;overflow-y:auto;transform:translateX(-105%);transition:transform .22s ease;box-shadow:12px 0 32px rgba(8,20,47,.28)}.sidebar.mobile-open{display:flex;transform:translateX(0)}
  .sidebar-mask{display:block;position:fixed;inset:0;z-index:45;background:rgba(11,23,57,.42);opacity:0;pointer-events:none}.sidebar-mask.show{display:block;opacity:1;pointer-events:auto}
  .mobile-menu{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:10px;font-size:20px}.topbar{height:60px;padding:0 12px;z-index:40}.top-actions{gap:6px}.sync{display:none}.avatar{width:40px;height:40px}.icon-button,.bell{width:40px;height:40px}
  .view{padding:16px 12px 32px;overflow-x:hidden}.page-head{align-items:flex-start;flex-direction:column;gap:13px;margin-bottom:16px}.page-head h1{font-size:22px;line-height:1.3}.page-head p{line-height:1.6}.page-actions{display:flex;width:100%;flex-wrap:wrap;gap:8px}.page-actions>button{flex:1 1 auto;min-height:44px}
  .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}.summary-card{min-width:0;padding:13px 12px;grid-template-columns:34px minmax(0,1fr);gap:9px;border-radius:12px}.metric-icon{width:34px;height:34px;border-radius:10px;font-size:15px}.summary-card small{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-card strong{font-size:20px}.summary-card .trend{grid-column:2;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .filters{padding:11px 12px;gap:8px;align-items:stretch;flex-wrap:wrap}.filters .search-wrap{flex:1 1 100%;min-width:0;height:44px}.filters .filter-chip,.filters .select{flex:1 1 calc(50% - 4px);min-width:0;height:44px;padding:0 9px}.sort-note{width:100%;margin-left:0;font-size:11px}.table-card{border-radius:12px;overflow-x:auto}.table-card>.device-table,.table-card>.data-table{min-width:700px}.table-card>.table-foot{min-width:0;white-space:normal;flex-wrap:wrap;gap:10px}.table-foot{padding:12px}.pagination button{width:38px;height:38px}
  .panel{border-radius:12px;padding:16px}.panel-title{gap:10px;align-items:flex-start}.panel-title h2{font-size:17px}.panel-title small{line-height:1.5}.form-grid.two,.form-layout,.profile-grid,.task-detail-grid{grid-template-columns:1fr}.form-field input,.form-field select,.form-field textarea,.select{min-height:44px}.primary-btn,.secondary-btn,.ghost-btn{min-height:44px}
  .detail-drawer{width:min(100%,430px);padding:18px 14px}.drawer-head h2{font-size:20px}.drawer-head button{width:42px;height:42px}.detail-head{flex-wrap:wrap;gap:12px}.detail-title h1{font-size:20px}
  .report-grid{grid-template-columns:1fr}.bar-chart{height:210px;padding-left:8px;padding-right:8px}.bar{width:25px}.donut-wrap{gap:16px}.route-strip,.dispatch-insight{padding:14px}.health-list{grid-template-columns:repeat(2,minmax(0,1fr))}.audit-table-wrap{overflow-x:auto}.audit-table-wrap .data-table{min-width:700px}
  .install-page-grid{grid-template-columns:1fr}.install-scan-card,.install-bind-card{min-width:0}.install-bind-form .form-grid{grid-template-columns:1fr}.install-device-summary{align-items:flex-start;flex-direction:column}.install-device-summary button{width:100%;min-height:44px}
  .customer-portal-shell{padding:16px 12px 28px}.customer-portal-header{gap:10px}.customer-portal-user{font-size:11px}.customer-portal-hero{padding:18px}.customer-device-card,.customer-request-card,.customer-history-card{padding:16px}.customer-device-body{grid-template-columns:1fr}.customer-device-image{width:140px;height:140px}.customer-request-actions{grid-template-columns:1fr}.customer-request-btn{min-height:48px}
}
@media(max-width:420px){.summary-grid{grid-template-columns:1fr}.page-actions>button{flex-basis:100%}.topbar-leading{gap:7px}.breadcrumb{font-size:13px}.view{padding-left:10px;padding-right:10px}.filters .filter-chip,.filters .select{flex-basis:100%}.health-list{grid-template-columns:1fr}}
.install-scan-hint{margin:8px 0 0;color:#667085;font-size:11px;line-height:1.6}.install-scan-hint::before{content:'ⓘ';margin-right:5px;color:#246bfd}

/* 登录页：左侧品牌内容 + 右侧登录卡片 */
.login-screen{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:30px;background:#eef4ff;overflow:auto}
.login-frame{width:min(1120px,100%);min-height:650px;display:grid;grid-template-columns:1.1fr .9fr;background:#fff;border:1px solid rgba(194,209,237,.8);border-radius:26px;overflow:hidden;box-shadow:0 26px 70px rgba(31,62,117,.18)}
.login-story{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:650px;padding:46px 52px;background:linear-gradient(145deg,#102554 0%,#173d7a 55%,#1c73a2 100%);color:#fff;overflow:hidden}
.story-content{position:relative;z-index:1;max-width:460px}.story-brand{margin-bottom:78px}.story-brand .brand-mark{box-shadow:0 10px 22px rgba(17,184,216,.25)}.story-kicker{display:inline-flex;align-items:center;gap:8px;color:#8edbf0;font-size:10px;letter-spacing:2px;font-weight:800}.story-kicker:before{content:"";width:24px;height:2px;background:#69d9eb}.login-story h1{margin:18px 0 18px;font-size:42px;line-height:1.22;letter-spacing:1px}.login-story h1 em{font-style:normal;color:#71e0eb}.login-story p{max-width:420px;margin:0;color:#c5d7f4;line-height:1.9;font-size:14px}.story-points{display:grid;gap:12px;margin-top:32px;color:#e7f3ff;font-size:13px}.story-points span{display:flex;align-items:center;gap:10px}.story-points i{display:grid;place-items:center;width:21px;height:21px;border-radius:50%;background:rgba(113,224,235,.18);color:#8ff0f4;font-style:normal;font-size:12px}.story-footer{position:relative;z-index:1;display:flex;justify-content:space-between;gap:20px;color:#a9c1e5;font-size:11px}.story-orb{position:absolute;border-radius:50%;pointer-events:none}.story-orb-one{width:420px;height:420px;right:-190px;top:-160px;background:radial-gradient(circle,rgba(101,221,235,.24),rgba(101,221,235,0) 68%)}.story-orb-two{width:500px;height:500px;left:-300px;bottom:-340px;border:1px solid rgba(142,219,240,.22);box-shadow:0 0 0 32px rgba(142,219,240,.04),0 0 0 64px rgba(142,219,240,.03)}
.login-card{align-self:center;width:auto;margin:42px;padding:8px 10px 0;border:0;border-radius:0;box-shadow:none}.login-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:32px}.login-eyebrow{color:#246bfd;font-size:10px;font-weight:800;letter-spacing:1.8px}.login-card h2{margin:10px 0 7px;color:#17213c;font-size:30px}.login-card .login-subtitle{margin:0;color:#667085;font-size:13px}.login-status{display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:20px;background:#ecfdf3;color:#027a48;font-size:11px;white-space:nowrap}.login-status i{width:7px;height:7px;border-radius:50%;background:#12b76a}.login-card form{gap:18px}.login-card .form-field{gap:8px}.login-card .form-field>span{color:#344054;font-size:12px}.login-card .form-field input{height:46px;padding:0 14px;border-color:#dbe3ef;border-radius:10px;background:#fbfcfe}.login-card .form-field input:focus{border-color:#246bfd;box-shadow:0 0 0 3px #edf3ff;background:#fff}.captcha-row{display:grid;grid-template-columns:1fr 116px;gap:10px}.captcha-question{height:46px;border:1px solid #dbe3ef;border-radius:10px;background:#f4f7fc;color:#173b73;font-size:18px;font-weight:800;letter-spacing:2px;cursor:pointer}.captcha-question:hover{border-color:#8fb2ff;background:#edf3ff}.captcha-help{color:#98a2b3;font-size:11px}.login-submit{height:46px;margin-top:2px;font-size:14px}.login-card-foot{display:flex;justify-content:space-between;gap:16px;margin-top:24px;padding-top:16px;border-top:1px solid #edf0f5;color:#98a2b3;font-size:11px;line-height:1.5}.confirm-modal-mask{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:24px;background:rgba(10,25,57,.48);backdrop-filter:blur(5px);animation:modal-fade-in .18s ease-out}.confirm-modal{position:relative;width:min(390px,100%);padding:32px 32px 26px;border:1px solid rgba(255,255,255,.8);border-radius:20px;background:#fff;box-shadow:0 24px 70px rgba(9,28,66,.28);text-align:center;animation:modal-pop-in .2s ease-out}.confirm-close{position:absolute;right:16px;top:14px;width:30px;height:30px;border:0;border-radius:8px;background:transparent;color:#98a2b3;font-size:22px;cursor:pointer}.confirm-close:hover{background:#f2f4f7;color:#344054}.confirm-icon{display:grid;place-items:center;width:50px;height:50px;margin:0 auto 16px;border-radius:16px;background:#edf3ff;color:#246bfd;font-size:25px;font-weight:800}.confirm-modal h2{margin:0 0 9px;color:#17213c;font-size:20px}.confirm-modal p{margin:0;color:#667085;font-size:13px;line-height:1.7}.confirm-actions{display:flex;justify-content:center;gap:10px;margin-top:25px}.confirm-actions button{min-width:104px;height:40px}.confirm-actions .ghost-btn{border:1px solid #dbe3ef}.confirm-actions .primary-btn{box-shadow:0 6px 15px rgba(36,107,253,.2)}
@keyframes modal-fade-in{from{opacity:0}to{opacity:1}}@keyframes modal-pop-in{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:820px){.login-screen{padding:16px}.login-frame{grid-template-columns:1fr;min-height:auto;border-radius:20px}.login-story{min-height:300px;padding:30px}.story-brand{margin-bottom:42px}.login-story h1{font-size:32px}.story-points,.story-footer{display:none}.login-card{margin:30px 26px 34px}.login-card-head{margin-bottom:25px}}
@media(max-width:480px){.login-story{min-height:250px;padding:25px}.login-story h1{font-size:28px}.login-story p{font-size:12px}.login-card{margin:24px 20px 28px;padding:0}.login-card h2{font-size:26px}.login-card-foot{flex-direction:column;gap:5px}.confirm-modal{padding:28px 22px 22px}}

/* 登录页不再使用包裹整页的外框，保留内容层级和输入控件边界 */
.login-screen{padding:48px 7vw;background:radial-gradient(circle at 12% 18%,#fff 0,rgba(255,255,255,0) 34%),linear-gradient(135deg,#edf4ff 0%,#f7faff 52%,#eef8fb 100%)}
.login-frame{width:min(1220px,100%);min-height:calc(100vh - 96px);grid-template-columns:minmax(0,1fr) minmax(420px,520px);gap:8vw;background:transparent;border:0;border-radius:0;overflow:visible;box-shadow:none}
.login-story{min-height:auto;padding:48px 0;background:transparent;color:var(--ink);overflow:visible}.story-content{max-width:520px}.story-brand strong{color:var(--ink)}.story-brand small{color:#667085}.story-kicker{color:#246bfd}.story-kicker:before{background:#246bfd}.login-story h1{color:#17213c}.login-story h1 em{color:#246bfd}.login-story p{color:#667085}.story-points{color:#344054}.story-points i{background:#dceaff;color:#246bfd}.story-footer{color:#98a2b3}.story-orb-one{right:-170px;top:-140px;background:radial-gradient(circle,rgba(69,156,255,.14),rgba(69,156,255,0) 68%)}.story-orb-two{left:-270px;bottom:-300px;border-color:rgba(36,107,253,.12);box-shadow:0 0 0 32px rgba(36,107,253,.035),0 0 0 64px rgba(36,107,253,.025)}
.login-card{justify-self:end;width:100%;max-width:520px;margin:0;padding:48px 0;background:transparent}.login-card-head{margin-bottom:32px}
@media(max-width:820px){.login-screen{padding:24px}.login-frame{min-height:auto;grid-template-columns:1fr;gap:0}.login-story{min-height:300px;padding:30px 0}.login-card{max-width:none;margin:10px 0 24px;padding:30px 0 0}}

/* 彩色算式验证码：输入框和视觉算式分开，接近常见后台验证码样式 */
.captcha-row{grid-template-columns:minmax(0,1fr) 168px;align-items:stretch}.captcha-answer-wrap{position:relative}.captcha-answer-wrap input{padding-left:42px!important}.captcha-shield{position:absolute;z-index:1;left:15px;top:13px;width:16px;height:19px;border:1.5px solid #aab5c7;border-radius:48% 48% 50% 50%;clip-path:polygon(50% 0,100% 18%,88% 68%,50% 100%,12% 68%,0 18%);pointer-events:none}.captcha-shield:after{content:"";position:absolute;left:4px;top:5px;width:5px;height:3px;border-left:1px solid #aab5c7;border-bottom:1px solid #aab5c7;transform:rotate(-45deg)}.captcha-question{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;height:46px;padding:0 11px;overflow:hidden;background:linear-gradient(135deg,#fff,#fbfcff);border-color:#eef1f6;letter-spacing:0}.captcha-question:before{content:"";position:absolute;inset:7px 8px;border-top:1px dashed rgba(107,126,159,.14);border-bottom:1px dashed rgba(107,126,159,.12);transform:rotate(-2deg);pointer-events:none}.captcha-number,.captcha-operator,.captcha-equal{position:relative;z-index:1;display:inline-block;font-size:30px;font-weight:900;line-height:1;font-family:Georgia,"Times New Roman",serif;text-shadow:1px 1px 0 rgba(255,255,255,.8)}.captcha-number-a{color:#d39a6c;transform:rotate(-5deg) translateY(1px)}.captcha-operator{color:#4b3ab0;transform:rotate(3deg) translateY(-1px)}.captcha-number-b{color:#e84ebd;transform:rotate(-6deg) translateY(1px)}.captcha-equal{color:#28b97f;font-family:Arial,sans-serif;font-size:31px;transform:rotate(2deg)}.captcha-spark{position:absolute;z-index:1;right:15px;top:5px;width:7px;height:11px;border-left:2px solid #efa16f;border-right:2px solid #efa16f;border-radius:50%;transform:rotate(7deg)}
@media(max-width:480px){.captcha-row{grid-template-columns:minmax(0,1fr) 150px}.captcha-number,.captcha-operator,.captcha-equal{font-size:27px}.captcha-question{gap:5px;padding:0 7px}}

/* 第二阶段：设备分类、状态和分页 */
.device-kind{display:inline-flex;align-items:center;margin-left:6px;padding:2px 6px;border-radius:5px;font-size:10px;font-weight:700;white-space:nowrap;vertical-align:1px}.device-kind.real{color:#175cd3;background:#eef4ff}.device-kind.test{color:#b54708;background:#fff6e8}.device-reading-meta{color:#98a2b3!important;font-size:10px!important;white-space:nowrap}.pagination{align-items:center}.pagination button:disabled{opacity:.45;cursor:not-allowed}.pagination .danger-btn{width:auto;padding:0 10px;margin-left:4px}.field-hint{display:block;color:#98a2b3;font-size:11px;line-height:1.5}.reading strong{word-break:break-word}.event-tools{display:flex;align-items:center;gap:10px}.event-tools .select{height:34px;padding:0 9px;font-size:12px}
.task-status.assigned{color:#6941c6;background:#f4f0ff}.task-status.canceled{color:#667085;background:#f2f4f7}.task-status.late{color:#d92d20;background:#fff0ee}.task-detail-status{display:flex;align-items:center;gap:10px;margin-bottom:18px;color:#667085;font-size:12px}.task-detail-section{border-top:0!important}.task-detail-actions{display:flex;justify-content:flex-end;margin-top:auto;padding-top:16px}.task-operation-list{display:flex;flex-direction:column;gap:16px}.task-operation{display:flex;gap:10px;align-items:flex-start}.task-operation-dot{flex:0 0 9px;width:9px;height:9px;margin-top:5px;border-radius:50%;background:#246bfd;box-shadow:0 0 0 4px #edf3ff}.task-operation strong,.task-operation small,.task-operation p{display:block}.task-operation small{color:#98a2b3;margin-top:4px}.task-operation p{margin:4px 0 0;color:#667085;font-size:12px;line-height:1.5}.data-table tbody tr[data-task-row]{cursor:pointer}.data-table tbody tr[data-task-row]:hover{background:#f7faff}
.bulk-device-list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fafbfc}.bulk-device-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid #edf0f5;border-radius:8px;background:#fff;cursor:pointer}.bulk-device-row:hover{border-color:#b7cdfd;background:#f7faff}.bulk-device-row span{display:flex;flex-direction:column;gap:3px}.bulk-device-row small{color:var(--muted);font-size:11px}
.detail-drawer{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.station-switcher{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #dce8ff;border-radius:12px;padding:12px 16px;margin:-4px 0 18px;box-shadow:var(--shadow)}.station-switcher-label{font-weight:700;color:var(--ink);white-space:nowrap}.station-switcher .select{min-width:170px;font-weight:700;color:var(--blue);border-color:#b9cffc}.station-switcher small{color:var(--muted);font-size:12px}@media(max-width:760px){.station-switcher{align-items:flex-start;flex-wrap:wrap}.station-switcher .select{flex:1;min-width:180px}.station-switcher small{width:100%}}
.import-preview{max-height:290px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fafbfc;padding:10px;font-size:12px;color:var(--muted)}.import-preview strong{display:block;margin-bottom:8px;color:var(--ink)}.import-preview .data-table{min-width:540px}.import-preview .data-table th,.import-preview .data-table td{padding:8px;font-size:11px}.error-text{color:#d92d20}
.system-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}.system-settings-grid>.panel:first-child{grid-column:1/-1}.system-form{display:flex;flex-direction:column;gap:15px}.system-form .primary-btn{align-self:flex-start}.secret-value,.token-box code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;word-break:break-all}.token-box{display:flex;align-items:center;gap:12px;padding:13px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.token-box code{flex:1;color:#344054}.system-status-panel{margin-bottom:18px}.system-status-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.system-status-grid>div{display:flex;flex-direction:column;gap:8px;padding:13px;background:#f8fafc;border-radius:10px;min-height:70px}.system-status-grid small{color:var(--muted)}.system-status-grid strong{font-size:14px}.driver-state{display:inline-flex;align-items:center;gap:6px;width:max-content;padding:5px 9px;border-radius:20px;font-size:11px;font-weight:700}.driver-state i{width:6px;height:6px;border-radius:50%;background:currentColor}.driver-state.available{color:#027a48;background:#ecfdf3}.driver-state.off{color:#d92d20;background:#fff0ee}@media(max-width:1000px){.system-settings-grid{grid-template-columns:1fr}.system-settings-grid>.panel:first-child{grid-column:auto}.system-status-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.system-status-grid{grid-template-columns:repeat(2,1fr)}}
/* 当前账号与水站信息卡 */
.station-card{cursor:pointer;transition:background .18s,transform .18s,outline-color .18s}
.station-card:hover,.station-card:focus-visible{background:rgba(255,255,255,.13);outline:1px solid rgba(105,217,235,.45);transform:translateY(-1px)}
.page-loading{min-height:220px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:13px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.loading-spinner{width:18px;height:18px;border:2px solid #dbe5f5;border-top-color:var(--blue);border-radius:50%;animation:page-spin .7s linear infinite}@keyframes page-spin{to{transform:rotate(360deg)}}
.audit-panel{margin-top:18px}.audit-panel-actions{display:flex;align-items:center;gap:12px}.audit-content{margin-top:2px}.audit-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--line)}.audit-filter-chip{height:34px;padding:0 11px;font-size:12px}.audit-filter-chip.active{background:#eef4ff;color:#175cd3;border-color:#b9cffc}.audit-table-wrap{overflow-x:auto}.audit-panel .data-table{min-width:780px}.audit-panel .data-table th,.audit-panel .data-table td{padding:10px 12px}.audit-panel .data-table th:nth-child(3),.audit-panel .data-table td:nth-child(3){width:15%}.audit-category-tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap;background:#f2f4f7;color:#475467}.audit-auth{color:#6941c6;background:#f4f0ff}.audit-device{color:#175cd3;background:#eef4ff}.audit-station{color:#027a48;background:#ecfdf3}.audit-customer{color:#b54708;background:#fff6e8}.audit-task{color:#175cd3;background:#eef4ff}.audit-alert{color:#d92d20;background:#fff0ee}.audit-other{color:#667085;background:#f2f4f7}
.device-picker{position:relative}.device-picker-input{width:100%;height:44px;padding:0 42px 0 13px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:#17213c;font:inherit;outline:none}.device-picker-input:focus{border-color:#246bfd;box-shadow:0 0 0 3px rgba(36,107,253,.12)}.device-picker-toggle{position:absolute;right:0;top:0;width:42px;height:44px;border:0;background:transparent;color:#667085;font-size:18px;cursor:pointer}.device-picker-menu{display:none;position:absolute;z-index:40;left:0;right:0;top:48px;max-height:250px;overflow:auto;padding:5px;background:#fff;border:1px solid #d0d5dd;border-radius:10px;box-shadow:0 12px 28px rgba(16,24,40,.14)}.device-picker.open .device-picker-menu{display:block}.device-picker-option{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:38px;padding:8px 10px;border:0;border-radius:7px;background:#fff;color:#344054;text-align:left;font:inherit;font-size:13px;cursor:pointer}.device-picker-option:hover,.device-picker-option.selected{background:#eef4ff;color:#175cd3}.device-picker-option:disabled{color:#98a2b3;background:#f8fafc;cursor:not-allowed}.device-picker-option small{color:#98a2b3;font-size:11px;margin-left:8px;white-space:nowrap}.device-picker-option[hidden]{display:none}
/* device picker empty state */
.device-picker-empty{padding:14px 10px;color:#98a2b3;font-size:12px;text-align:center}

/* 安装绑定：扫码识别设备后现场录入客户资料 */
.install-page-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);gap:18px;align-items:start}.install-scan-card,.install-bind-card{min-height:420px}.install-code-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;margin:18px 0}.install-code-input{width:100%;height:44px;padding:0 13px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:#17213c;font:inherit;outline:none}.install-code-input:focus{border-color:#246bfd;box-shadow:0 0 0 3px rgba(36,107,253,.12)}.install-scanner-video{width:100%;max-height:260px;object-fit:cover;margin:12px 0;border:1px solid #dbe3ef;border-radius:12px;background:#101828}.install-device-results{display:grid;gap:8px;max-height:480px;overflow:auto}.install-device-result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;width:100%;padding:13px 14px;border:1px solid #e4e7ec;border-radius:11px;background:#fff;color:#344054;text-align:left;cursor:pointer}.install-device-result:hover{border-color:#8fb2ff;background:#f7faff}.install-device-result strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#17213c}.install-device-result span{color:#475467;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.install-device-result small{grid-column:1/-1;color:#98a2b3;font-size:11px}.install-empty-hint{margin:14px 0;color:#98a2b3;font-size:12px;line-height:1.7}.install-device-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:66px;margin:18px 0;padding:12px 14px;border:1px solid #dce8ff;border-radius:11px;background:#f7faff}.install-device-summary>div{min-width:0}.install-device-summary strong,.install-device-summary small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.install-device-summary strong{color:#17213c;font-size:14px}.install-device-summary small{margin-top:5px;color:#667085;font:11px ui-monospace,SFMono-Regular,Consolas,monospace}.install-bind-form{display:flex;flex-direction:column;gap:14px}.install-customer-search{position:relative}.install-customer-results{display:grid;gap:6px;margin-top:-6px}.install-customer-result{display:flex;flex-direction:column;gap:4px;width:100%;padding:9px 11px;border:1px solid #e4e7ec;border-radius:9px;background:#fff;text-align:left;cursor:pointer}.install-customer-result:hover{border-color:#8fb2ff;background:#f7faff}.install-customer-result strong{font-size:12px;color:#17213c}.install-customer-result span,.install-customer-result small{font-size:11px;color:#667085;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.install-selected-customer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:9px;background:#ecfdf3;color:#027a48;font-size:12px}.install-selected-customer strong{margin-left:4px}.install-scan-tip{color:#667085;font-size:12px}@media(max-width:900px){.install-page-grid{grid-template-columns:1fr}}@media(max-width:560px){.install-code-row{grid-template-columns:1fr 1fr}.install-code-row .install-code-input{grid-column:1/-1}.install-code-row button{width:100%}.install-scan-card,.install-bind-card{min-height:0}.install-device-result{grid-template-columns:1fr}.install-device-result span{grid-column:1/-1}}
.customer-table{table-layout:fixed;min-width:1180px}.customer-table .customer-col-user{width:12%}.customer-table .customer-col-phone{width:9%}.customer-table .customer-col-station{width:10%}.customer-table .customer-col-area{width:8%}.customer-table .customer-col-address{width:13%}.customer-table .customer-col-device{width:18%}.customer-table .customer-col-orders{width:7%}.customer-table .customer-col-last-order{width:8%}.customer-table .customer-col-tag{width:8%}.customer-table .customer-col-actions{width:7%}.customer-table td{white-space:nowrap}.customer-table .user-name-cell,.customer-table .owner{min-width:0;white-space:nowrap}.customer-table .user-name-cell>div,.customer-table .owner{overflow:hidden;text-overflow:ellipsis}.customer-table .user-name-cell strong,.customer-table .user-name-cell small,.customer-table .owner strong,.customer-table .owner small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.customer-table .area-tag,.customer-table .customer-tag{max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.customer-table .row-actions{white-space:nowrap}

.install-purpose{display:flex;align-items:flex-start;gap:12px;margin:-4px 0 14px;padding:13px 16px;border:1px solid #dce8ff;border-radius:12px;background:#f7faff;color:#475467;font-size:12px;line-height:1.7}.install-purpose strong{color:#175cd3;white-space:nowrap}.install-station-filter{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding:12px 15px;border:1px solid #dce8ff;border-radius:12px;background:#fff;box-shadow:var(--shadow)}.install-station-filter>span{font-weight:700;color:var(--ink);white-space:nowrap}.install-station-filter .select{min-width:190px;color:#175cd3;font-weight:700}.install-station-filter small{color:var(--muted)}.install-device-result{display:grid;grid-template-columns:1fr;gap:0;align-items:stretch;padding:0;border:1px solid #e4e7ec;border-radius:11px;background:#fff;overflow:hidden}.install-device-result:hover{border-color:#8fb2ff;background:#f7faff}.install-device-result-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;width:100%;padding:13px 14px;border:0;background:transparent;color:#344054;text-align:left;cursor:pointer;min-width:0}.install-device-result-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#17213c}.install-device-result-main span{color:#475467;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.install-device-result-main small{grid-column:1/-1;color:#98a2b3;font-size:11px}@media(max-width:760px){.install-purpose{flex-direction:column;gap:3px}.install-station-filter{align-items:flex-start;flex-wrap:wrap}.install-station-filter small{width:100%}.install-station-filter .select{flex:1}.install-device-result-main{grid-template-columns:1fr}.install-device-result-main span{grid-column:1/-1}}

/* 用户端：与后台使用同一登录入口，但客户仅能访问自己的设备和用水需求 */
.customer-portal{min-height:100vh;background:#f4f7fb;color:#17213c}.customer-portal-shell{width:min(1040px,100%);margin:0 auto;padding:26px 28px 42px}.customer-portal-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.customer-portal-brand{display:flex;align-items:center;gap:11px}.customer-portal-brand .brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:linear-gradient(145deg,#2bc6e3,#246bfd);color:#fff;font-size:22px;font-weight:800}.customer-portal-brand strong,.customer-portal-brand small{display:block}.customer-portal-brand strong{font-size:16px}.customer-portal-brand small{margin-top:3px;color:#98a2b3;font-size:11px}.customer-portal-user{display:flex;align-items:center;gap:12px;color:#667085;font-size:12px}.customer-portal-user .ghost-btn{height:34px}.customer-portal-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:18px;padding:28px 30px;border-radius:18px;background:linear-gradient(120deg,#12275c,#246bfd);color:#fff;box-shadow:0 14px 32px rgba(36,107,253,.18)}.customer-portal-hero small{opacity:.75}.customer-portal-hero h1{margin:9px 0 7px;font-size:27px}.customer-portal-hero p{margin:0;opacity:.8;font-size:13px}.customer-station-badge{padding:8px 12px;border:1px solid rgba(255,255,255,.25);border-radius:999px;font-size:12px;white-space:nowrap}.customer-portal-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:18px}.customer-device-card,.customer-request-card,.customer-history-card{border:1px solid #e4eaf3;border-radius:16px;background:#fff;box-shadow:0 10px 26px rgba(16,24,40,.06)}.customer-device-card,.customer-request-card{padding:22px}.customer-device-head,.customer-card-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.customer-device-head small,.customer-card-title small{color:#98a2b3;font-size:12px}.customer-device-head h2,.customer-card-title h2{margin:6px 0 4px;font-size:19px}.customer-device-head>div>span{color:#667085;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.customer-device-status{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.customer-device-status i,.customer-water-state i{width:7px;height:7px;border-radius:50%;background:currentColor}.customer-device-status.online{color:#027a48;background:#ecfdf3}.customer-device-status.offline{color:#667085;background:#f2f4f7}.customer-device-body{display:grid;grid-template-columns:170px minmax(0,1fr);align-items:center;gap:22px;margin-top:22px;padding-top:18px;border-top:1px solid #eef1f6}.customer-device-image{display:block;width:170px;height:170px;object-fit:cover;border-radius:14px;background:#f8fafc}.customer-device-info{min-width:0}.customer-water-state{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.customer-water-state strong{font-size:16px}.customer-water-state span{width:100%;margin-left:15px;color:#667085;font-size:12px}.customer-water-state.normal{color:#027a48}.customer-water-state.low{color:#d92d20}.customer-device-info dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:22px 0 0}.customer-device-info dl>div{padding:10px;border-radius:10px;background:#f8fafc}.customer-device-info dt{color:#98a2b3;font-size:11px}.customer-device-info dd{margin:5px 0 0;color:#344054;font-size:12px;word-break:break-word}.customer-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:240px;margin-top:18px;border-top:1px solid #eef1f6;color:#667085}.customer-empty-state span{font-size:17px;font-weight:700}.customer-empty-state small{margin-top:8px;font-size:12px}.customer-request-help{margin:18px 0;color:#667085;font-size:13px;line-height:1.7}.customer-request-rule{color:#98a2b3;font-size:11px;white-space:nowrap}.customer-request-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.customer-request-btn{height:46px;border-radius:10px;border:1px solid #d0d5dd;background:#fff;color:#344054;font:inherit;font-weight:700;cursor:pointer}.customer-request-btn.primary{border-color:#246bfd;background:#246bfd;color:#fff;box-shadow:0 8px 16px rgba(36,107,253,.18)}.customer-request-btn.danger{border-color:#fda29b;color:#d92d20}.customer-request-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.customer-no-task{padding:18px 0;color:#98a2b3;font-size:12px;text-align:center}.customer-active-task{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-top:18px;padding:13px;border-radius:11px;background:#f7faff}.customer-active-task span{color:#98a2b3;font-size:11px}.customer-active-task strong{font-size:13px}.customer-active-task em{padding:4px 7px;border-radius:999px;background:#eef4ff;color:#175cd3;font-size:11px;font-style:normal}.customer-active-task small{grid-column:2/-1;color:#98a2b3;font-size:11px}.customer-history-card{margin-top:18px;padding:22px}.customer-card-title>span{color:#98a2b3;font-size:12px}.customer-task-list{margin-top:14px;border-top:1px solid #eef1f6}.customer-task-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid #eef1f6}.customer-task-row>div{display:flex;flex-direction:column;gap:5px;min-width:0}.customer-task-row strong{font-size:13px}.customer-task-row small{color:#98a2b3;font-size:11px}.customer-task-status{padding:5px 9px;border-radius:999px;background:#f2f4f7;color:#667085;font-size:11px;white-space:nowrap}.customer-task-status.pending,.customer-task-status.late{background:#fff0ee;color:#d92d20}.customer-task-status.done{background:#ecfdf3;color:#027a48}.customer-task-status.assigned,.customer-task-status.delivering{background:#eef4ff;color:#175cd3}.customer-portal-footnote{margin:18px 0 0;color:#98a2b3;font-size:11px;text-align:center}@media(max-width:760px){.customer-portal-shell{padding:18px 14px 30px}.customer-portal-header{align-items:flex-start}.customer-portal-user{flex-direction:column;align-items:flex-end;gap:7px}.customer-portal-hero{align-items:flex-start;flex-direction:column;padding:22px}.customer-portal-hero h1{font-size:22px}.customer-portal-grid{grid-template-columns:1fr}.customer-device-body{grid-template-columns:120px minmax(0,1fr);gap:14px}.customer-device-image{width:120px;height:120px}.customer-device-info dl{grid-template-columns:1fr}.customer-request-rule{white-space:normal;text-align:right}.customer-active-task{grid-template-columns:1fr auto}.customer-active-task small{grid-column:1/-1}}
/* 员工安装登记专用入口 */
body.install-mode .app-shell{display:block;min-height:100vh}
body.install-mode .sidebar{display:none}
body.install-mode main{width:100%}
body.install-mode .view{max-width:1440px;padding:36px 40px 56px}
body.install-mode .topbar{padding:0 40px}
body.install-mode .breadcrumb{color:#175cd3}
body.install-mode .page-head h1{font-size:30px}
@media(max-width:760px){body.install-mode .view{padding:22px 14px 40px}body.install-mode .topbar{padding:0 16px}}
.install-pending-button{display:inline-flex;margin:-8px 0 8px;padding:0;color:#175cd3;font-size:12px;align-items:center}.install-pending-button:hover{text-decoration:underline}
.install-pending-list{display:grid;gap:7px;margin-top:14px;padding:12px 13px;border:1px solid #e4eaf3;border-radius:10px;background:#f8fafc;color:#475467;font-size:12px}.install-pending-list>strong{color:#344054}.install-pending-list>div{display:flex;justify-content:space-between;gap:12px;padding-top:6px;border-top:1px solid #edf0f4}.install-pending-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#17213c;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.install-pending-list small{color:#667085;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .customer-device-list{display:grid;gap:14px;margin-top:18px}.customer-device-item{padding:14px;border:1px solid #eef1f6;border-radius:14px;background:#fbfcfe}.customer-device-item .customer-device-head{align-items:center}.customer-device-item .customer-device-body{margin-top:14px;padding-top:14px;grid-template-columns:120px minmax(0,1fr);gap:14px}.customer-device-item .customer-device-image{width:120px;height:120px}.customer-device-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:14px}.customer-device-actions .customer-request-btn{height:38px;padding:0 13px;font-size:12px}.customer-device-task{color:#98a2b3;font-size:11px}@media(max-width:760px){.customer-device-item .customer-device-body{grid-template-columns:96px minmax(0,1fr)}.customer-device-item .customer-device-image{width:96px;height:96px}.customer-device-actions{display:grid;grid-template-columns:1fr 1fr}.customer-device-actions .customer-device-task{grid-column:1/-1}}

/* 叫水桶数：先保存到送水需求，后续水卡模块可据此扣减。 */
.customer-request-actions{grid-template-columns:minmax(120px,.7fr) 1fr 1fr}.customer-bucket-picker{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:46px;padding:0 10px;border:1px solid #d0d5dd;border-radius:10px;color:#667085;font-size:12px}.customer-bucket-picker select{min-width:62px;border:0;background:transparent;color:#344054;font:inherit;font-weight:700;outline:none;cursor:pointer}.customer-device-actions .customer-bucket-picker{min-height:38px;padding:0 8px}.customer-device-actions .customer-bucket-picker select{min-width:56px}@media(max-width:760px){.customer-request-actions{grid-template-columns:1fr 1fr}.customer-request-actions .customer-bucket-picker,.customer-device-actions .customer-bucket-picker{grid-column:1/-1}}
.customer-delivery-settings{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end;margin:16px 0;padding:14px;border:1px solid #e7edf5;border-radius:12px;background:#f8fafc}.customer-delivery-settings label{display:flex;flex-direction:column;gap:6px;color:#667085;font-size:11px;font-weight:600}.customer-delivery-settings select,.customer-delivery-settings input{height:40px;padding:0 10px;border:1px solid #d0d5dd;border-radius:9px;background:#fff;color:#344054;font:inherit}.customer-delivery-settings .customer-request-btn{height:40px;padding:0 14px;font-size:12px}@media(max-width:760px){.customer-delivery-settings{grid-template-columns:1fr 1fr}.customer-delivery-settings label:first-child{grid-column:1/-1}.customer-delivery-settings .customer-request-btn{grid-column:1/-1}}
.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:700px){.form-grid.three{grid-template-columns:1fr}}
 .call-mode-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.call-mode-form label{display:grid;gap:5px;color:#667085;font-size:12px}.call-mode-form input{width:120px;height:40px;padding:0 10px;border:1px solid #d0d5dd;border-radius:9px;font:inherit}.call-mode-form .select{height:40px;min-width:140px}

/* 用户列表：压缩水站/片区间距，为右侧操作按钮保留空间。 */
.customer-table .customer-col-station{width:8%}.customer-table .customer-col-area{width:7%}.customer-table .customer-col-actions{width:10%}
.detail-grid{grid-template-columns:minmax(0,1.45fr) minmax(360px,.75fr);grid-template-areas:"visual call" "visual sleep" "archive archive" "event event";align-items:start}
.detail-status-panel{grid-area:visual;min-height:560px}
.call-mode-panel{grid-area:call}
.detail-sleep-panel{grid-area:sleep}
.detail-archive-panel{grid-area:archive}
.detail-status-panel .visual-panel{grid-template-columns:minmax(300px,.9fr) minmax(0,1fr);min-height:500px}
.detail-status-panel .jug-stage{height:430px}
.detail-status-panel .jug-product{width:min(100%,310px);height:380px}
.detail-status-panel .alarm-copy{padding-right:8px}
.event-panel{grid-area:event}
@media(max-width:1100px){.detail-grid{grid-template-columns:1fr;grid-template-areas:"visual" "call" "sleep" "archive" "event"}.detail-status-panel{min-height:0}.detail-status-panel .visual-panel{grid-template-columns:250px 1fr;min-height:380px}.detail-status-panel .jug-stage{height:320px}.detail-status-panel .jug-product{width:228px;height:292px}}
@media(max-width:760px){.detail-grid{display:block}.detail-status-panel .visual-panel{grid-template-columns:1fr;min-height:0}.detail-status-panel .jug-stage{height:330px}.detail-status-panel .jug-product{width:240px;height:300px}.detail-status-panel{margin-bottom:16px}.call-mode-panel,.detail-sleep-panel,.detail-archive-panel,.event-panel{margin-bottom:16px}}

/* 设备档案：横向信息网格，避免详情页右侧留下大块空白。 */
.detail-archive-panel .info-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 24px}
.detail-archive-panel .info-row{grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;min-width:0;padding:2px 0}
.detail-archive-panel .info-row label{white-space:nowrap}
.detail-archive-panel .info-row span{min-width:0;overflow-wrap:anywhere}
.detail-archive-panel .info-row:nth-child(5),.detail-archive-panel .info-row:nth-child(7){grid-column:span 2}
@media(max-width:1100px){.detail-archive-panel .info-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.detail-archive-panel .info-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.detail-archive-panel .info-row:nth-child(5),.detail-archive-panel .info-row:nth-child(7){grid-column:1/-1}}
@media(max-width:480px){.detail-archive-panel .info-list{grid-template-columns:1fr}}

/* 用户管理表格：保留全部字段，桌面端按信息密度重新分配空间，小屏可横向浏览。 */
.customer-table-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.customer-table{width:100%;min-width:1560px;table-layout:fixed}
.customer-table col.customer-col-user{width:190px}.customer-table col.customer-col-phone{width:165px}.customer-table col.customer-col-station{width:150px}.customer-table col.customer-col-area{width:105px}.customer-table col.customer-col-address{width:210px}.customer-table col.customer-col-device{width:270px}.customer-table col.customer-col-card{width:190px}.customer-table col.customer-col-backup{width:150px}.customer-table col.customer-col-tag{width:125px}.customer-table col.customer-col-actions{width:160px}
.customer-table th{height:62px;padding:12px 16px;vertical-align:middle;white-space:nowrap;line-height:1.25;font-size:13px}
.customer-table th small{display:block;margin-top:4px;color:#98a2b3;font-size:11px;font-weight:500;white-space:nowrap}
.customer-table td{height:82px;padding:14px 16px;white-space:nowrap}
.customer-table .customer-cell-user,.customer-table .customer-cell-phone,.customer-table .customer-cell-device{min-width:0}
.customer-table .user-name-cell>div,.customer-table .owner{min-width:0;max-width:100%}
.customer-table .user-name-cell strong,.customer-table .user-name-cell small,.customer-table .owner strong,.customer-table .owner small{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.customer-table .customer-cell-address{max-width:0;overflow:hidden;text-overflow:ellipsis;color:#475467}
.customer-table .area-tag,.customer-table .customer-tag{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.customer-table .customer-cell-card,.customer-table .customer-cell-backup{vertical-align:middle}
.customer-table .card-balance{display:flex;flex-direction:column;gap:6px;min-width:0}
.customer-table .card-balance>strong,.customer-table .customer-cell-backup>strong{font-size:14px;color:#17213c;line-height:1.2}
.customer-table .card-balance>small{display:flex;align-items:center;gap:4px;color:#98a2b3;font-size:11px;white-space:nowrap}
.customer-table .card-balance b{color:#667085;font-weight:600}
.customer-table .card-balance span{color:#c2c8d0}
.customer-table .customer-cell-actions{padding-left:10px;padding-right:10px}
.customer-table .row-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}
.customer-table .row-actions .mini-action{padding:7px 11px}
.customer-table-scroll + .table-foot{min-width:0}
@media(max-width:760px){.customer-table{min-width:1420px}.customer-table th{height:58px}.customer-table td{height:76px}.customer-table-scroll{margin:0 -1px}}
