@charset "UTF-8";
:root{--nav:#10243c;--nav2:#172f4d;--accent:#3069ed;--accent-rgb:48,105,237;--ink:#172a42;--muted:#7b8ba0;--line:#e9edf3;--bg:#f4f7fb;--green:#22aa87;--red:#e85d66;--orange:#eaa148;--radius:12px;--shadow:0 5px 22px #1d3b6510;font-family:Inter,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);font-synthesis:none;font-size:13px}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:inherit;text-decoration:none}button{border:0;background:none;color:inherit}input,select,textarea{min-width:0;border:1px solid #dfe6f0;border-radius:7px;background:#fff;color:var(--ink);padding:10px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.1)}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:15px;height:15px;margin:0;box-shadow:none}input[type=range]{accent-color:var(--accent);padding:0;box-shadow:none;width:100%;border:0}textarea{resize:vertical;line-height:1.7;min-height:84px}h1,h2,h3,h4,p{margin:0}h1{font-size:26px;line-height:1.5;letter-spacing:-.7px;font-weight:650}h2{font-size:16px;font-weight:650}h3{font-size:14px;font-weight:600}small{font-size:11px}.icon{width:19px;height:19px;flex-shrink:0;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.muted{color:var(--muted)}.mono{font-family:"SFMono-Regular",Consolas,monospace;font-size:11px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:650;margin-bottom:7px}.accent{color:var(--accent)}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-orange{color:var(--orange)}.flex{display:flex;align-items:center;gap:12px}.between{display:flex;align-items:center;justify-content:space-between;gap:16px}.wrap{flex-wrap:wrap}.stack{display:grid;gap:16px}.mt{margin-top:20px}.mb{margin-bottom:20px}.hidden{display:none!important}.skip-link{position:fixed;top:-70px;background:var(--accent);color:white;padding:12px;z-index:999}.skip-link:focus{top:4px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:35px;padding:8px 14px;border:1px solid #dfe6ee;border-radius:7px;background:#fff;white-space:nowrap;font-size:12px;font-weight:500;transition:.18s}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:white;box-shadow:0 3px 8px rgba(var(--accent-rgb),.15)}.btn.primary:hover{filter:brightness(1.06);color:white}.btn.soft{background:rgba(var(--accent-rgb),.07);color:var(--accent);border-color:transparent}.btn.danger{background:#fff2f2;color:#d74f59;border-color:#ffe1e2}.btn.small{padding:5px 9px;min-height:29px;font-size:11px}.btn .icon{width:15px;height:15px}.link{color:var(--accent);font-size:12px;padding:5px 3px}.link:hover{text-decoration:underline}.icon-btn{padding:8px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;position:relative}.icon-btn:hover{background:#edf2f9}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;border-radius:5px;padding:4px 8px;color:#567086;background:#f0f3f7;white-space:nowrap}.badge.green{color:#1e997b;background:#e9f8f1}.badge.blue{color:#3978d9;background:#edf4ff}.badge.orange{color:#d19131;background:#fff6e8}.badge.red{color:#db5964;background:#fff0f0}.badge.purple{color:#8863d2;background:#f2eefe}.badge.dot:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.avatar{display:inline-flex;width:32px;height:32px;border-radius:50%;align-items:center;justify-content:center;background:#e8effe;color:#3a6bc9;font-weight:600;font-size:12px}.avatar.purple{color:#8166c0;background:#eee9fa}.divider{width:1px;height:24px;background:var(--line)}
.sidebar{width:224px;background:var(--nav);color:#94a7bf;position:fixed;inset:0 auto 0 0;z-index:40;display:flex;flex-direction:column}.brand{height:83px;display:flex;align-items:center;gap:11px;padding:0 23px;color:#fff;border-bottom:1px solid #ffffff0d}.brand-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,#3880fc,#2560df);display:grid;place-items:center;box-shadow:0 5px 14px #0002}.brand-mark .icon{width:26px;height:26px}.brand strong{font-size:17px;font-weight:600;letter-spacing:1px}.brand small{display:block;color:#6d8bb0;font-size:8px;letter-spacing:2.8px;margin-top:5px}.nav-scroll{overflow-y:auto;flex:1;padding:20px 13px;scrollbar-width:thin;scrollbar-color:#35506f transparent}.nav-label{font-size:9px;letter-spacing:1.6px;color:#627d9d;padding:5px 14px 11px}.nav-group{margin-bottom:20px}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:7px;font-size:12px;margin-bottom:4px;position:relative;line-height:19px;transition:.18s}.nav-item .icon{width:17px;height:17px}.nav-item:hover{color:#d9e8fa;background:#ffffff07}.nav-item.active{background:#2962db;color:#fff;box-shadow:0 4px 12px #0001}.nav-item.active:before{content:"";position:absolute;left:-13px;height:19px;width:3px;border-radius:0 3px 3px 0;background:#7cc6ff}.nav-count{margin-left:auto;background:#ffffff15;padding:0 6px;border-radius:4px;font-size:10px}.sidebar-foot{margin:0 18px 20px;padding:15px 10px 0;border-top:1px solid #ffffff12;font-size:10px;line-height:1.9;color:#6580a1}.sidebar-foot b{font-weight:500;color:#a4b8d0}.sidebar-foot .status-light{margin-right:5px}.status-light{width:6px;height:6px;background:#33c7a1;border-radius:50%;display:inline-block;box-shadow:0 0 0 3px #33c7a119}.main-shell{margin-left:224px}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;justify-content:space-between;gap:18px;position:sticky;top:0;z-index:30}.system-switch{display:flex;gap:5px;background:#f3f6fa;border-radius:8px;padding:4px}.system-link{display:flex;align-items:center;gap:7px;font-size:12px;padding:9px 13px;color:#71819a;border-radius:6px;white-space:nowrap}.system-link .icon{width:16px;height:16px}.system-link.active{background:#fff;color:var(--accent);box-shadow:0 2px 7px #25497a12;font-weight:600}.top-actions{display:flex;align-items:center;gap:12px}.school{font-size:11px;color:#657b94;white-space:nowrap}.top-actions .prototype-tag{border:1px solid #e8eef6;border-radius:4px;color:#94a4b6;font-size:9px;padding:4px 6px}.notification-dot{position:absolute;right:8px;top:7px;width:5px;height:5px;border-radius:50%;background:#ed6b75;border:1px solid white}.user-button{display:flex;align-items:center;gap:9px;font-size:12px;white-space:nowrap}.user-button .icon{width:13px}.hamburger{display:none}.breadcrumb{display:flex;align-items:center;gap:8px;font-size:10px;color:#8a9aaf;margin-bottom:18px}.breadcrumb .icon{width:12px;height:12px}.breadcrumb span:last-child{color:#51667f}.page{padding:23px 30px 36px;max-width:1880px;margin:auto;animation:enter .23s ease-out}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.page-heading p{color:#8a99ac;font-size:11px;margin-top:6px;line-height:1.7}.heading-actions{display:flex;align-items:center;gap:10px}.page-date{font-size:11px;color:#8a98aa;margin-left:10px}.footer{font-size:10px;color:#a0adbd;margin-top:30px;display:flex;align-items:center;justify-content:space-between}.footer span:last-child{letter-spacing:1px}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:22px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.card-head p{color:var(--muted);font-size:10px;margin-top:5px}.card-title{display:flex;align-items:center;gap:9px}.card-title:before{content:"";width:3px;height:13px;border-radius:3px;background:var(--accent)}.card-head .link{font-size:11px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}.kpi{padding:20px 21px 17px;position:relative;overflow:hidden}.kpi-top{display:flex;justify-content:space-between;align-items:center;color:#7a8ba1;font-size:11px}.kpi-icon{display:grid;place-items:center;width:33px;height:33px;border-radius:9px;color:var(--accent);background:rgba(var(--accent-rgb),.07)}.kpi-value{font-size:30px;font-weight:650;letter-spacing:-1px;font-variant-numeric:tabular-nums;margin:5px 0 9px}.kpi-value small{font-size:11px;font-weight:400;color:#97a4b4;letter-spacing:0;margin-left:5px}.kpi-bottom{font-size:10px;display:flex;justify-content:space-between;align-items:center;color:#94a2b5}.kpi-spark{position:absolute;right:15px;bottom:38px;width:80px;height:30px;opacity:.7}.overview-grid{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(260px,1fr);gap:20px;margin-bottom:20px}.campus-card{padding:22px 24px 12px;overflow:hidden}.campus-stage{position:relative;background:radial-gradient(ellipse at 50% 65%,#eef4f9,transparent 75%);height:292px}.campus-art{width:100%;height:100%;overflow:visible}.map-building{cursor:pointer;transition:filter .2s}.map-building:hover{filter:drop-shadow(0 3px 4px #2367ec45)}.campus-label{position:absolute;top:9px;left:0;display:grid;gap:8px;font-size:10px;color:#8b9db2}.map-legend{position:absolute;bottom:3px;left:0;display:flex;gap:14px;font-size:9px;color:#8fa0b2}.map-legend i{display:inline-block;width:6px;height:6px;border-radius:2px;margin-right:5px}.map-note{position:absolute;right:0;bottom:5px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:7px;padding:10px 14px;font-size:10px}.map-note b{font-size:17px;color:var(--accent);margin-right:4px}.weather-strip{display:flex;align-items:center;gap:12px;margin:0 -24px -12px;background:#f9fbfe;padding:13px 24px;border-top:1px solid var(--line);font-size:10px;color:#90a0b5}.weather-strip .icon{color:#e7ac4d}.weather-strip strong{font-size:13px;color:#4f6784;font-weight:500}.weather-strip .source{margin-left:auto;font-size:9px}.health-score{display:flex;align-items:center;gap:24px;padding:6px 4px 21px}.ring{width:107px;height:107px;border-radius:50%;background:conic-gradient(#24b78d 0 89%,#edf4f2 89%);display:grid;place-items:center;position:relative}.ring:before{content:"";width:88px;height:88px;border-radius:50%;background:white;position:absolute}.ring span{z-index:1;font-size:30px;font-weight:600;color:#20a581}.ring small{font-size:10px}.health-copy h3{font-size:21px;color:#259e82;font-weight:550;margin-bottom:7px}.health-copy p{font-size:10px;color:#94a2b3;line-height:1.9}.metric-mini-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px;border-top:1px solid var(--line);padding-top:18px}.metric-mini{display:flex;justify-content:space-between;align-items:center;font-size:10px;padding:3px 0;color:#8d9caf}.metric-mini strong{font-size:16px;font-weight:550;color:#425c78}.metric-mini small{font-size:9px;margin-left:3px;color:#99a6b5}.mini-icon{display:flex;align-items:center;gap:7px}.mini-icon .icon{width:15px;height:15px;color:#8aa5bf}.dashboard-lower{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:20px}.chart{width:100%;height:180px;overflow:visible}.chart text{fill:#a1adbb;font-size:9px;font-family:inherit}.chart .gridline{stroke:#edf1f6;stroke-dasharray:3 4}.chart-legend{display:flex;gap:18px;color:#8b9bb0;font-size:10px}.chart-legend i{display:inline-block;width:6px;height:6px;border-radius:2px;margin-right:6px}.chart-tooltip{position:fixed;z-index:80;pointer-events:none;background:#15304ded;color:white;border-radius:7px;font-size:11px;line-height:1.8;padding:10px 14px;box-shadow:var(--shadow)}.chart-point{cursor:crosshair;fill:transparent}.chart-point:hover{fill:#fff;stroke:var(--accent);stroke-width:2}.segmented{display:flex;background:#f3f6fa;border-radius:6px;padding:3px;gap:3px}.segmented button{font-size:10px;padding:5px 11px;color:#8b99ac;border-radius:4px;white-space:nowrap}.segmented button.active{background:#fff;color:var(--accent);box-shadow:0 1px 4px #1231}.alarm-line{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid #f0f3f7;align-items:start}.alarm-line:last-child{border-bottom:0}.alarm-dot{width:8px;height:8px;border-radius:50%;background:#e6a348;flex-shrink:0;margin-top:4px;box-shadow:0 0 0 4px #e6a34812}.alarm-dot.red{background:#e86a75;box-shadow:0 0 0 4px #e86a7512}.alarm-line h4{font-weight:500;font-size:11px;margin-bottom:6px}.alarm-line p{font-size:9px;color:#98a6b7}.alarm-line time{font-size:9px;color:#a2adba;white-space:nowrap;margin-left:auto}.alarm-line .link{font-size:10px;padding:0}.booking-strip{display:flex;gap:14px}.booking-tile{padding:17px;background:#f8faff;border:1px solid #edf1f9;border-radius:9px;flex:1;min-width:0}.booking-tile .time{font-size:18px;font-variant-numeric:tabular-nums;color:#44627f;font-weight:550;margin:10px 0}.booking-tile p{font-size:10px;color:#8f9eb0;line-height:1.8}.booking-tile h3{font-size:12px}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.quick-link{display:flex;gap:10px;align-items:center;font-size:11px;padding:16px 12px;background:#f9fbfe;border-radius:8px;border:1px solid #eef2f7}.quick-link:hover{border-color:#c6d9fa;background:#f1f6ff}.quick-link .icon{color:var(--accent)}.progress{height:5px;background:#edf2f8;border-radius:5px;overflow:hidden}.progress i{display:block;height:100%;background:var(--accent);border-radius:5px}.progress.green i{background:var(--green)}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px;flex-wrap:wrap}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.search-field{position:relative}.search-field input{width:230px;padding-left:34px;font-size:11px;height:35px}.search-field>.icon{position:absolute;left:11px;top:10px;width:14px;height:14px;color:#96a5b7}.filters select{font-size:11px;padding:8px 30px 8px 11px;height:35px}.table-wrap{width:100%;overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{font-weight:500;color:#8b9bb0;font-size:10px;background:#f8fafd;border-block:1px solid #eef2f7;padding:13px 17px}td{padding:15px 17px;border-bottom:1px solid #f0f3f7;font-size:11px;color:#57708a;height:56px}tbody tr:hover{background:#fafcff}td strong{font-size:11px;font-weight:550;color:#304e6c}td .sub{display:block;font-size:9px;color:#a0adbc;margin-top:5px}.table-panel{padding:21px 0 0;overflow:hidden}.table-panel .toolbar,.table-panel>.tabs,.table-panel>.panel-caption{margin-inline:22px}.panel-caption{margin-bottom:18px}.table-panel .pagination{padding:17px 22px}.table-actions{display:flex;align-items:center;gap:9px}.table-actions button{font-size:11px;padding:4px 0;white-space:nowrap}.pagination{display:flex;align-items:center;justify-content:space-between;color:#9aa7b7;font-size:10px}.page-buttons{display:flex;gap:5px;align-items:center}.page-buttons button{padding:5px 9px;border:1px solid var(--line);border-radius:4px;background:#fff}.page-buttons .active{color:var(--accent);background:rgba(var(--accent-rgb),.06);border-color:#c8d8fa}.tabs{display:flex;gap:25px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}.tabs button{padding:2px 1px 13px;color:#8394ab;font-size:12px;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.empty{padding:52px 20px;text-align:center;color:#9aaabd}.empty .icon{width:40px;height:40px;stroke-width:1;margin-bottom:13px;color:#b8c6d7}.empty p{font-size:11px;margin-top:9px}.notice{display:flex;gap:9px;align-items:start;background:#edf4ff;border:1px solid #dfeaff;color:#6a87af;border-radius:8px;padding:12px 15px;line-height:1.8;font-size:11px;margin-bottom:20px}.notice .icon{width:16px;height:16px;margin-top:2px;flex-shrink:0}.notice.orange{background:#fff8eb;border-color:#f8ebd3;color:#b28b47}.notice.red{background:#fff1f2;border-color:#ffdfe2;color:#c76a73}.entity-split{display:grid;grid-template-columns:245px minmax(0,1fr);gap:20px}.tree{padding:20px}.tree-node{display:flex;align-items:center;gap:8px;padding:11px 9px;border-radius:6px;font-size:11px;color:#7288a0;cursor:pointer}.tree-node:hover,.tree-node.active{color:var(--accent);background:#eef4ff}.tree-node .icon{width:15px}.tree-node.child{margin-left:21px}.tree-node.grandchild{margin-left:40px}.room-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.room-card{overflow:hidden;transition:.2s}.room-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px #315c8314}.room-image{height:132px;position:relative;background:linear-gradient(135deg,#e7eef8,#f8fbff);overflow:hidden;display:flex;align-items:center;justify-content:center}.room-image svg{height:160px;width:100%}.room-image>.badge{position:absolute;left:12px;top:12px}.room-meta{padding:17px}.room-meta h3{font-size:13px;margin-bottom:7px}.room-meta p{font-size:10px;color:#94a4b5;line-height:1.8}.room-meta .between{margin-top:14px}.room-meta .count{display:flex;gap:10px;font-size:10px;color:#8e9fb0}.control-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.control-card{padding:20px}.device-symbol{width:42px;height:42px;border-radius:11px;background:#edf3ff;color:#447adf;display:grid;place-items:center}.device-symbol .icon{width:23px;height:23px}.control-card.off .device-symbol{background:#f0f3f7;color:#97a6b6}.control-card h3{font-size:12px;margin:15px 0 6px}.control-card p{font-size:10px;color:#9ba8b8}.control-card .device-reading{display:flex;align-items:center;justify-content:space-between;margin:20px 0;font-size:24px;color:#3a5879;font-weight:550}.device-reading small{font-size:10px;font-weight:400;color:#8b9caf}.switch{width:34px;height:19px;background:#d5deea;border-radius:20px;position:relative;flex-shrink:0;transition:.2s;cursor:pointer;border:0;padding:0}.switch:before{content:"";position:absolute;left:3px;top:3px;width:13px;height:13px;border-radius:50%;background:white;box-shadow:0 1px 3px #17355525;transition:.2s}.switch.on{background:var(--accent)}.switch.on:before{left:18px}.control-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:14px;border-top:1px solid var(--line);font-size:10px;color:#94a4b6}.device-hero{background:linear-gradient(135deg,#eef4ff,#f7faff);padding:25px;border-radius:10px;display:flex;align-items:center;gap:20px;margin-bottom:22px}.device-hero>.device-symbol{width:64px;height:64px;background:#fff}.device-hero h2{margin:5px 0 9px}.device-hero .switch{margin-left:auto;width:44px;height:24px}.device-hero .switch:before{width:18px;height:18px}.device-hero .switch.on:before{left:23px}.reading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.reading-card{background:#f9fbfe;border:1px solid #eef2f7;border-radius:8px;padding:16px}.reading-card p{font-size:10px;color:#97a6b7;margin-bottom:10px}.reading-card strong{font-size:24px;font-weight:550}.reading-card small{font-size:10px;color:#97a6b7;margin-left:5px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:grid;gap:8px;font-size:11px;color:#6e829b;min-width:0}.field.full{grid-column:1/-1}.field>span .required{color:#e58085;margin-left:3px}.field>input,.field>select,.field>textarea{width:100%;font-size:12px}.field>small{font-size:10px;color:#9aa8b9;line-height:1.7}.field.inline{display:flex;align-items:center;gap:9px}.range-value{display:flex;justify-content:space-between;font-size:11px;color:#8c9eb3;margin-top:6px}.range-value b{color:var(--accent);font-weight:550}.form-section-title{margin:22px 0 16px;padding-top:20px;border-top:1px solid var(--line);font-size:12px}.check-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.check{display:flex;align-items:center;gap:8px;color:#6a829b;font-size:11px;line-height:1.7}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.calendar{display:grid;grid-template-columns:60px repeat(5,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden}.calendar-cell{padding:12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);min-height:68px;position:relative;background:#fff}.calendar-cell.head{min-height:auto;text-align:center;background:#f8fafd;font-size:11px;color:#8294aa}.calendar-cell.time{font-size:10px;color:#9baabb;text-align:center;background:#fbfcfe}.calendar-event{background:#eef4ff;border-left:3px solid var(--accent);padding:9px 8px;border-radius:4px;text-align:left;width:100%;color:#5980b6;font-size:10px;line-height:1.7;cursor:pointer}.calendar-event.green{background:#eaf8f2;border-color:#2ab48e;color:#489c83}.calendar-event.orange{background:#fff7e9;border-color:#e8ad4d;color:#b6975f}.calendar-event strong{display:block;font-weight:550}.calendar-cell.free:hover{background:#f5f9ff;cursor:pointer}.calendar-cell.free:hover:after{content:"+ 预约";font-size:10px;color:var(--accent);position:absolute;inset:0;display:grid;place-items:center}.timeline{border-left:1px solid #e6edf6;margin:12px 5px;padding-left:22px}.timeline-item{position:relative;padding-bottom:23px}.timeline-item:before{content:"";position:absolute;left:-26px;top:4px;width:7px;height:7px;background:#87abe8;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #d7e3f7}.timeline-item h4{font-size:11px;font-weight:500;margin-bottom:7px}.timeline-item p,.timeline-item time{font-size:10px;color:#98a6b8;line-height:1.8}.stepper{display:flex;align-items:center;padding:18px 0 25px;gap:6px}.stepper .step{display:flex;align-items:center;gap:7px;font-size:10px;color:#a2afbf;flex:1}.stepper .step:after{content:"";height:1px;background:#e6edf6;flex:1;margin:0 8px}.stepper .step:last-child:after{display:none}.stepper .step b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#eef3fa;font-weight:500}.stepper .step.done{color:var(--accent)}.stepper .step.done b{color:white;background:var(--accent)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:20px 0}.detail-item{font-size:11px;line-height:1.9}.detail-item>span{display:block;font-size:10px;color:#97a5b5;margin-bottom:3px}.detail-item>b{font-weight:500;color:#4d6884}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.chip{font-size:10px;background:#f1f5fa;color:#7389a2;padding:6px 10px;border-radius:5px;border:1px solid transparent;cursor:pointer}.chip.active{color:var(--accent);border-color:#d7e3fc;background:#eef4ff}.permission-block{border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:13px}.permission-block h3{font-size:12px;margin-bottom:15px}.permission-block .check-grid{grid-template-columns:repeat(3,1fr)}.dropzone{padding:30px;text-align:center;border:1px dashed #c9d7ea;background:#f9fbff;border-radius:9px;color:#8399b3}.dropzone .icon{width:30px;height:30px;color:#83a7e2;margin-bottom:10px}.dropzone label{display:block;cursor:pointer;color:var(--accent);font-size:12px;margin-bottom:8px}.dropzone input{width:100%;margin-top:12px;font-size:11px}.dropzone p{font-size:10px}.topology{min-height:330px;padding:30px;background:radial-gradient(#e2eaf5 1px,transparent 1px);background-size:17px 17px;display:grid;place-items:center}.topology svg{width:100%;max-height:370px}.topology svg text{font-family:inherit;font-size:11px;fill:#68829d}.topology svg .node{cursor:pointer}.topology svg .node:hover rect{stroke:var(--accent);fill:#f0f6ff}.video-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.video-frame{position:relative;background:#142b41;border-radius:8px;overflow:hidden;aspect-ratio:16/9;cursor:pointer}.video-frame svg{width:100%;height:100%;opacity:.75;filter:saturate(.55)}.video-frame .video-label{position:absolute;inset:12px 14px auto;display:flex;justify-content:space-between;color:#d4e3ed;font-size:10px}.video-frame:after{content:"SIMULATED · 测试画面";position:absolute;right:12px;bottom:12px;color:#c2d4df99;font-size:9px;letter-spacing:1px}.video-frame .play{position:absolute;inset:0;display:grid;place-items:center;color:white}.video-frame .play .icon{width:35px;height:35px;fill:#ffffff20;stroke-width:1}.video-frame.offline{display:grid;place-items:center;color:#6b8397;font-size:11px}.video-frame.offline .icon{width:28px;height:28px}.screening{background:#0a1a2e;color:#b4d5ea;min-height:100vh;padding:25px 30px}.screening .screen-title{text-align:center;font-size:25px;letter-spacing:4px;color:#e0f5ff;font-weight:550}.screen-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #34577365;padding-bottom:22px;margin-bottom:22px}.screen-head small{font-size:10px;color:#7399b6}.screening .btn{background:#132b44;border-color:#294661;color:#9dc3df}.screen-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:15px;margin-bottom:24px}.screen-kpi{text-align:center;padding:18px;background:linear-gradient(180deg,#17314e99,#10243d66);border-top:1px solid #2e6c9277}.screen-kpi strong{font-size:29px;color:#7be2e1;font-weight:500;display:block;margin-bottom:8px}.screen-kpi span{font-size:10px;color:#6c97b6}.screen-grid{display:grid;grid-template-columns:1fr 2fr 1fr;gap:20px}.screen-panel{background:#11274088;border:1px solid #24425c;padding:18px;border-radius:4px;margin-bottom:20px}.screen-panel h2{font-size:13px;color:#a9d9ef;margin-bottom:18px;letter-spacing:1px}.screening .campus-stage{height:330px;background:radial-gradient(ellipse,#163f5466,transparent)}.screening .chart text{fill:#61849c}.screening .chart .gridline{stroke:#284157}.screening .alarm-line{border-color:#29425a}.screening .alarm-line h4{color:#97b6cb}.screening .alarm-line p{color:#557d9a}.screening .metric-mini-grid{border-color:#284157}.screening .metric-mini strong{color:#91d0e0}.screening .metric-mini{color:#648ba8}.screening .badge{background:#123849;color:#57bba9}.screening .map-note{background:#173450;border-color:#2d4e6b}.screening .map-note b{color:#79d4df}.screening .map-legend{color:#648da9}.screen-footer{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:20px;margin-top:0}.screening .booking-tile{background:#102b43;border-color:#254358}.screening .booking-tile .time{color:#b3d3e7}.screening .booking-tile h3{color:#8cb7ce}.screening .booking-tile p{color:#5c809d}.screening .notice{background:#143448;border-color:#24566b;color:#69a8bc;padding:8px 12px;font-size:10px}.screening .server-stat{font-size:11px;color:#719bb5;line-height:2}.screening .screen-ticker{font-size:10px;color:#77b8d5;border-top:1px solid #264a63;padding-top:15px;display:flex;gap:25px}.deployment-room{min-height:350px;background:#f1f5fa;position:relative;border:1px solid #e0e7f1;border-radius:10px;padding:35px 28px}.deployment-room:before{content:"讲台 / 教学显示区";display:block;text-align:center;background:#dce7f4;color:#6f8cad;padding:13px;margin-bottom:32px;border-radius:5px;letter-spacing:3px;font-size:11px}.slot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}.sensor-slot{padding:20px 10px;text-align:center;background:#fff;border:1px dashed #c9d8e9;border-radius:9px;cursor:pointer;transition:.2s}.sensor-slot:hover{border-color:var(--accent);box-shadow:var(--shadow)}.sensor-slot.bound{border-style:solid;border-color:#dbe8f9;background:#fcfdff}.sensor-slot .icon{color:#9eb3cb;width:27px;height:27px}.sensor-slot.bound .icon{color:var(--accent)}.sensor-slot strong{display:block;font-size:10px;color:#6b87a4;margin:10px 0 5px}.sensor-slot small{font-size:9px;color:#a1afbe}.protocol-layout{display:grid;grid-template-columns:1fr 1.25fr;gap:20px}.terminal{background:#12243a;border-radius:9px;min-height:310px;padding:20px;color:#a0c8d6;font-size:10px;font-family:Consolas,monospace;line-height:2;max-height:460px;overflow:auto}.terminal-head{display:flex;justify-content:space-between;color:#63859f;padding-bottom:13px;border-bottom:1px solid #2a3e54;margin-bottom:15px;font-size:10px}.terminal p{padding:5px 0;overflow-wrap:anywhere}.terminal .tx{color:#6fb2f3}.terminal .rx{color:#6bc7a5}.terminal .err{color:#f18f94}.project-card{padding:0;overflow:hidden}.project-cover{height:112px;background:linear-gradient(130deg,#eaf0fc,#f6f9ff);position:relative;display:flex;align-items:center;padding:23px;color:#80a0d4}.project-cover .icon{width:62px;height:62px;stroke-width:1}.project-cover .cover-pattern{position:absolute;right:24px;font-size:50px;letter-spacing:-3px;color:#cbdaf2;font-weight:300}.project-body{padding:20px}.project-body h3{margin-bottom:9px}.project-body p{font-size:10px;color:#98a6b6;line-height:1.8}.project-body .progress{margin:16px 0 10px}.workspace-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px}.task-step{padding:17px 0;border-bottom:1px solid var(--line);display:flex;gap:11px;font-size:11px;color:#7c91aa}.task-step b{width:23px;height:23px;border-radius:50%;background:#eef3fb;display:grid;place-items:center;color:#7292c0;font-weight:500}.task-step.done b{background:#e7f7ee;color:#31a57a}.task-step small{display:block;color:#a3b1c1;margin-top:7px;font-size:9px}.discussion{display:flex;gap:13px;padding:20px 0;border-bottom:1px solid var(--line)}.discussion h3{font-size:12px;font-weight:550;margin-bottom:9px}.discussion p{font-size:11px;line-height:1.9;color:#7b8fa7;white-space:pre-wrap;overflow-wrap:anywhere}.discussion small{font-size:9px;color:#a1afbf}.discussion-body{flex:1}.discussion-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.vote-option{padding:13px;border:1px solid var(--line);border-radius:7px;display:flex;gap:12px;align-items:center;margin:11px 0;cursor:pointer}.vote-option span{flex:1;font-size:11px;color:#7790aa}.vote-option b{font-size:11px;color:var(--accent);font-weight:500}.result-sheet{background:#fafcff;padding:26px;border:1px solid var(--line);border-radius:9px}.result-sheet h2{text-align:center;font-size:18px;margin-bottom:10px}.result-sheet .sheet-stamp{text-align:center;font-size:10px;color:#bc9450;margin-bottom:25px}.integration-card{padding:23px}.integration-card .integration-logo{display:flex;align-items:center;gap:12px;margin-bottom:20px}.integration-logo>.icon{width:32px;height:32px;color:#90a9c7}.integration-card p{font-size:11px;color:#8d9fb3;line-height:1.9;margin:15px 0}.preview-state-bar{padding:10px 15px;border-radius:7px;background:#fafcff;border:1px solid var(--line);display:flex;gap:10px;align-items:center;margin-bottom:18px;color:#99a8b9;font-size:10px}.preview-state-bar select{font-size:10px;padding:5px 9px}.overlay{position:fixed;inset:0;background:#10243c65;backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:30px;animation:fade .15s}.modal{background:white;border-radius:13px;width:min(680px,100%);max-height:88vh;display:flex;flex-direction:column;box-shadow:0 22px 100px #071c3f40;animation:enter .2s}.modal.wide{width:min(950px,100%)}.modal.drawer{position:absolute;right:0;top:0;bottom:0;border-radius:14px 0 0 14px;max-height:100vh;width:min(610px,100%)}.modal-head{padding:21px 25px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.modal-head h2{font-size:16px}.modal-head p{font-size:10px;color:#9aa9ba;margin-top:6px}.modal-body{padding:24px 25px;overflow-y:auto;min-height:0;flex:1}.modal-foot{padding:17px 25px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}.form-error{font-size:11px;line-height:1.8;background:#fff1f2;border-radius:6px;padding:10px 13px;color:#c3606c;margin-bottom:17px}.toast{position:fixed;top:22px;left:50%;transform:translateX(-50%);background:#fff;color:#49647f;border:1px solid #e2ecf6;box-shadow:0 10px 40px #1235;border-radius:9px;z-index:150;padding:13px 22px;display:flex;gap:9px;align-items:center;font-size:12px;animation:fade .2s;max-width:calc(100vw - 30px)}.toast .icon{color:var(--green);width:17px;height:17px}.toast.error .icon{color:var(--red)}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:white}.login-story{background:#10243c;color:#dae9fa;position:relative;padding:60px 70px;overflow:hidden;display:flex;flex-direction:column}.login-story .brand{padding:0;border:0;height:auto}.login-story h1{font-size:43px;font-weight:550;line-height:1.6;margin:80px 0 25px;letter-spacing:2px}.login-story p{font-size:13px;color:#7d9dbb;line-height:2.1}.login-story .campus-stage{height:280px;margin-top:25px;opacity:.85}.login-story .login-footer{margin-top:auto;font-size:10px;letter-spacing:1.6px;color:#617f9d}.login-form-wrap{display:grid;place-items:center;padding:50px}.login-form{max-width:360px;width:100%}.login-form h2{font-size:27px;font-weight:600;margin-bottom:10px}.login-form>p{font-size:11px;color:#95a5b8;margin-bottom:35px}.login-form .field{margin-bottom:22px}.login-form .field input,.login-form .field select{padding:13px}.login-form>.btn{width:100%;margin-top:25px;padding:13px}.login-form .notice{margin-top:25px;font-size:10px}.login-form .check{margin-top:23px}.phone-stage{display:grid;grid-template-columns:1fr 420px 1fr;gap:40px;align-items:start;padding:15px 10px 40px}.phone{width:390px;margin:auto;border:9px solid #152d48;border-radius:42px;background:#f4f7fb;overflow:hidden;box-shadow:0 18px 50px #20385024;position:relative;min-height:780px;display:flex;flex-direction:column}.phone-status{display:flex;justify-content:space-between;padding:14px 20px 5px;font-size:11px;font-weight:600;background:white;color:#25415f}.phone-top{padding:18px 20px;background:white}.phone-top h2{font-size:18px;margin-bottom:7px}.phone-top p{font-size:10px;color:#95a5b8}.phone-content{padding:18px;min-height:580px}.phone-nav{background:white;padding:13px 10px 20px;display:flex;justify-content:space-around;margin-top:auto;border-top:1px solid var(--line)}.phone-nav button{font-size:9px;display:grid;place-items:center;gap:6px;color:#9ba9ba}.phone-nav button.active{color:var(--accent)}.phone-nav .icon{width:20px;height:20px}.phone-banner{background:linear-gradient(130deg,#3069ed,#6297f7);color:#fff;border-radius:13px;padding:22px;margin-bottom:16px;position:relative;overflow:hidden}.phone-banner h3{font-size:17px;margin:9px 0}.phone-banner p{font-size:10px;color:#c9ddff;line-height:1.9}.phone-banner .icon{position:absolute;right:20px;top:22px;width:60px;height:60px;color:#ffffff35;stroke-width:1}.phone .grid-2{gap:12px}.phone .reading-card{background:white}.phone .reading-card strong{font-size:25px}.phone h3.section-label{font-size:13px;margin:22px 0 14px}.phone-device{padding:17px;background:white;border:1px solid var(--line);border-radius:10px;margin-bottom:12px}.phone-device h3{font-size:12px;margin-bottom:7px}.phone-device p{font-size:9px;color:#9daab8}.phone-device .device-symbol{width:35px;height:35px;border-radius:9px}.phone .booking-tile{background:white;margin-bottom:13px}.phone-description{padding-top:45px;line-height:1.9;color:#8c9fb3;font-size:11px}.phone-description h2{font-size:17px;color:#45627e;margin-bottom:15px}.phone-description .icon{color:#7899c3;width:25px;height:25px;margin-bottom:18px}.phone-description ul{padding-left:17px;line-height:2.6;margin:18px 0}.phone .btn{font-size:10px}.phone .form-grid{gap:14px}.phone .field{font-size:10px}.phone .phone-profile{background:white;border-radius:12px;padding:20px}.phone-profile>.avatar{width:55px;height:55px;font-size:18px;margin-bottom:13px}.phone-profile h3{margin-bottom:8px}.phone-profile p{font-size:10px;color:#91a3b7;line-height:1.9}.phone-row{padding:17px 0;border-bottom:1px solid var(--line);font-size:11px;display:flex;align-items:center;justify-content:space-between;color:#718aa3}.phone-row .icon{width:15px}.room-panel-hero{background:linear-gradient(120deg,#193d66,#286fa1);color:#c2d9eb;padding:26px 30px;border-radius:12px;margin-bottom:22px}.room-panel-hero h2{font-size:24px;color:#f1f8ff;margin:10px 0}.room-panel-hero p{font-size:11px;color:#8fb1cd}.room-panel-hero .icon{width:38px;height:38px;color:#80b5df}.scene-tile{padding:22px;background:#f7faff;border:1px solid #e6edf8;border-radius:9px;text-align:center;cursor:pointer}.scene-tile:hover{border-color:var(--accent);background:#edf4ff}.scene-tile .icon{width:25px;height:25px;color:var(--accent);margin-bottom:12px}.scene-tile h3{font-size:12px}.scene-tile p{font-size:10px;color:#94a7bc;margin-top:7px}.error-state{min-height:350px;display:grid;place-items:center;text-align:center}.error-state .icon{width:52px;height:52px;color:#a7b9d1;stroke-width:1}.error-state h2{margin:20px 0 12px}.error-state p{font-size:11px;color:#95a7bc;margin-bottom:20px}.split-summary{display:grid;grid-template-columns:repeat(3,1fr);padding:15px 20px;background:#f8fbff;border:1px solid #e9f0f9;border-radius:8px;margin-bottom:20px}.split-summary>div{padding:5px 15px;border-right:1px solid #e2eaf4}.split-summary>div:last-child{border:0}.split-summary p{font-size:10px;color:#94a5b9;margin-bottom:8px}.split-summary strong{font-size:21px;font-weight:550;color:#54749a}.doorplate{min-height:500px;border-radius:15px;background:#0f2947;color:#b5cde5;padding:45px;display:grid;grid-template-columns:1fr 1fr;gap:40px}.doorplate h2{font-size:45px;font-weight:400;color:#e0efff;letter-spacing:2px;margin:15px 0}.doorplate .room-code{font-size:13px;color:#7297bc;letter-spacing:3px}.doorplate .current{border:1px solid #305174;border-radius:10px;padding:25px;background:#1c3d5a66}.doorplate .current h3{font-size:21px;color:#dfedfb;margin:15px 0}.doorplate .current p{font-size:12px;color:#83a3c4;line-height:2.2}.doorplate .current strong{font-size:28px;color:#80d4d4;font-weight:400}.doorplate .muted{color:#7297bc}.doorplate .notice{background:#1e3e58;border-color:#34566b;color:#7fb7c8;font-size:11px}.app-catalog{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.catalog-link{padding:16px;border:1px solid var(--line);border-radius:8px;display:flex;gap:11px;align-items:center;background:#fafcff}.catalog-link .icon{color:var(--accent)}.catalog-link:hover{background:#eef4ff}.catalog-link small{font-size:9px;color:#97aabd;display:block;margin-top:5px}.loading-overlay{height:260px;display:flex;align-items:center;justify-content:center;color:#97a8bb;gap:13px}.spinner{width:22px;height:22px;border:2px solid #dde7f4;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.flow-line{display:flex;align-items:center;gap:14px;padding:16px;border:1px solid var(--line);border-radius:8px;margin:13px 0}.flow-line .icon{color:#80a3cc}.flow-line>div{flex:1}.flow-line h3{font-size:12px;margin-bottom:6px}.flow-line p{font-size:10px;color:#93a6bb}.scene-action-list{list-style:none;padding:0}.scene-action-list li{display:flex;gap:10px;align-items:center;padding:14px;background:#f7faff;border-radius:7px;margin:9px 0;color:#6e88a5;font-size:11px}.scene-action-list b{width:20px;height:20px;background:#e5efff;color:#7298d0;border-radius:50%;display:grid;place-items:center;font-size:9px}.print-only{display:none}
@keyframes enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{from{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1650px){.page{padding-inline:40px}.campus-stage{height:330px}.chart{height:200px}.kpi{padding:23px 25px}.kpi-value{font-size:34px}}@media(max-width:1220px){.sidebar{width:204px}.main-shell{margin-left:204px}.brand{padding-inline:18px}.topbar{padding-inline:22px}.page{padding-inline:22px}.system-link{font-size:11px;padding:9px}.school,.prototype-tag{display:none}.top-actions{gap:7px}.overview-grid{grid-template-columns:1.5fr 1fr}.kpi-spark{width:58px}.room-grid,.control-grid{grid-template-columns:repeat(2,1fr)}.kpi{padding:17px}.kpi-value{font-size:27px}.entity-split{grid-template-columns:210px 1fr}.phone-stage{grid-template-columns:1fr 400px}.phone-description:last-child{display:none}.app-catalog{grid-template-columns:1fr 1fr}.screen-grid{grid-template-columns:1fr 1.5fr 1fr}.screen-head .screen-title{font-size:20px}.screening{padding:20px}.phone{width:375px}}@media(max-width:980px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:10px 0 60px #10243c50}.main-shell{margin-left:0}.hamburger{display:flex}.system-link span{display:none}.system-link{padding:9px 12px}.system-link.active span{display:inline}.topbar{height:65px}.page{padding:20px}.grid-3{grid-template-columns:repeat(2,1fr)}.entity-split{grid-template-columns:190px 1fr}.screen-grid{grid-template-columns:1fr 1.5fr}.screen-grid>div:last-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:20px}.screen-footer{grid-template-columns:1fr 1fr}.screen-footer>div:last-child{display:none}.screen-kpis{gap:8px}.screen-kpi strong{font-size:23px}.screen-head small{display:none}.login-story{padding:40px}.login-story h1{font-size:32px}.phone-stage{grid-template-columns:1fr}.phone-description{display:none}}@media(max-width:700px){h1{font-size:22px}.page{padding:17px 14px}.topbar{padding:0 12px;gap:6px}.system-link{padding:8px}.system-link.active span{font-size:10px}.top-actions .divider,.top-actions .user-button>span:not(.avatar){display:none}.top-actions{gap:0}.top-actions .icon-btn{padding:7px}.top-actions .icon-btn.mobile-preview{display:none}.user-button{padding:5px}.user-button>.icon{display:none}.system-link .icon{width:14px}.heading-actions{gap:6px}.heading-actions .btn{padding:7px 10px;font-size:10px}.page-heading{align-items:start;gap:12px;margin-bottom:18px}.page-heading p{font-size:10px}.page-date{display:none}.kpi-grid{grid-template-columns:1fr 1fr;gap:12px}.kpi{padding:15px}.kpi-value{font-size:27px}.kpi-top{font-size:10px}.kpi-icon{width:28px;height:28px}.kpi-spark{width:57px;bottom:36px}.kpi-bottom{font-size:9px}.overview-grid,.dashboard-lower,.grid-2{grid-template-columns:1fr;gap:16px}.campus-stage{height:240px}.campus-card{padding:18px}.campus-card .weather-strip{margin:0 -18px -12px;padding:12px 18px}.weather-strip .source{display:none}.health-score{justify-content:center}.card-pad{padding:18px}.grid-3,.grid-4{grid-template-columns:1fr 1fr;gap:12px}.room-grid,.control-grid{grid-template-columns:1fr;gap:14px}.quick-grid{grid-template-columns:repeat(2,1fr);gap:10px}.booking-strip{flex-direction:column}.entity-split{grid-template-columns:1fr}.entity-split>.tree{display:none}.toolbar{gap:12px}.filters{gap:8px;width:100%}.search-field{flex:1}.search-field input{width:100%}.filters select{max-width:130px}.table-panel .toolbar,.table-panel>.tabs{margin-inline:15px}.table-panel .pagination{padding:15px;font-size:9px;gap:10px}.tabs{gap:20px}td,th{padding:12px 14px}.form-grid{gap:15px;grid-template-columns:1fr}.field.full{grid-column:auto}.modal-body{padding:20px}.modal-head{padding:17px 20px}.modal-foot{padding:15px 20px}.overlay{padding:13px}.modal{max-height:94vh}.modal.drawer{border-radius:12px 0 0 12px}.reading-grid{gap:9px}.reading-card{padding:13px}.reading-card strong{font-size:20px}.detail-grid{gap:15px}.check-grid,.permission-block .check-grid{grid-template-columns:1fr 1fr}.calendar{min-width:650px}.calendar-scroll{overflow:auto}.screening{padding:15px}.screen-head{flex-wrap:wrap;justify-content:center;gap:15px}.screen-head .screen-title{font-size:18px;letter-spacing:2px}.screen-kpis{grid-template-columns:repeat(3,1fr)}.screen-grid{grid-template-columns:1fr}.screen-grid>div:last-child{grid-column:auto;display:block}.screen-footer{grid-template-columns:1fr}.screen-ticker{flex-wrap:wrap}.screen-kpi{padding:13px}.slot-grid{grid-template-columns:repeat(2,1fr);gap:14px}.deployment-room{padding:20px}.protocol-layout,.workspace-layout{grid-template-columns:1fr}.login-page{grid-template-columns:1fr}.login-story{display:none}.login-form-wrap{padding:35px}.phone-stage{padding:0}.phone{width:100%;max-width:390px;border-width:5px;border-radius:30px;min-height:750px}.phone-content{min-height:550px}.phone-top{padding:15px 18px}.phone .grid-2{grid-template-columns:1fr 1fr}.phone-stage+.footer{font-size:9px}.doorplate{padding:25px;grid-template-columns:1fr;gap:25px}.doorplate h2{font-size:35px}.app-catalog{grid-template-columns:1fr}.footer{font-size:9px;gap:10px}.footer span:last-child{font-size:8px}.split-summary{padding:12px}.split-summary>div{padding:4px 8px}.split-summary strong{font-size:18px}.phone .form-grid{grid-template-columns:1fr}.video-grid{grid-template-columns:1fr}.page-heading>.heading-actions{flex-wrap:wrap;justify-content:flex-end}.preview-state-bar{flex-wrap:wrap}.modal-head h2{font-size:15px}.flow-line{padding:12px;gap:9px}}
.calendar-event.spanning{height:calc(200% + 12px);position:absolute;left:7px;top:6px;width:calc(100% - 14px);z-index:2}
.phone{height:820px;min-height:0}.phone-content{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.phone-nav{flex-shrink:0}.phone-top,.phone-status{flex-shrink:0}
.screening .ring:before{width:82%;height:82%;background:#112b40}.screening .ring span{color:#56d0ae}.screening .health-copy h3{color:#56d0ae}
/* The screen grid keeps its intrinsic height; shorter displays scroll as one page. */
.screening .screen-grid>div,.screening .screen-panel{min-width:0}
.screening .screen-actions{flex-wrap:wrap;justify-content:flex-end}
.screening .screen-map-head{flex-wrap:wrap;gap:10px}
.screening .screen-map-head h2{margin-bottom:0}
.screening .screen-map-head .flex{flex-wrap:wrap;gap:8px}
.screening .screen-rotation-status{font-size:10px;color:#719bb5;margin:9px 0 5px;line-height:1.6}
.screening .screen-rotation-status.active{color:#7be2e1}
.screening .btn.is-rotating{background:#164859;border-color:#367f8e;color:#93eee0}
.screening .campus-stage[data-building]:not([data-building=""]) .map-building:not(.selected){opacity:.38}
.screening .map-building.selected{filter:drop-shadow(0 0 9px #69d8ef66)}
@media(min-width:1280px) and (min-aspect-ratio:16/10){
  .screening{height:auto;min-height:100dvh;display:flex;flex-direction:column;padding:18px 24px}
  .screen-head{padding-bottom:12px;margin-bottom:14px;gap:18px;flex-shrink:0}
  .screen-kpis{margin-bottom:14px;flex-shrink:0}
  .screen-kpi{padding:12px}
  .screen-kpi strong{font-size:27px;margin-bottom:4px}
  .screen-grid{gap:14px;flex:1 0 auto;min-height:min-content}
  .screen-grid>div{min-height:auto;display:flex;flex-direction:column;gap:14px}
  .screen-panel{padding:13px;margin-bottom:0;flex-shrink:0}
  .screen-panel h2{font-size:12px;margin-bottom:12px}
  .screen-grid>div>.screen-panel:last-child{flex:1 0 auto}
  .screening .campus-stage{height:clamp(190px,23vh,280px)}
  .screening .health-score{padding:8px 0}
  .screening .health-score .ring{width:82px;height:82px;flex-shrink:0}
  .screening .metric-mini-grid{gap:7px}
  .screening .metric-mini strong{font-size:16px}
  .screening .booking-tile{padding:11px}
  .screening .booking-tile .time{font-size:15px;margin-block:8px}
  .screening .booking-tile p{font-size:9px;line-height:1.7}
  .screening .alarm-line{padding:10px 0}
  .screening .server-stat{font-size:10px;line-height:1.9}
  .screen-footer{gap:14px;margin-top:14px;flex-shrink:0}
  .screen-footer .screen-panel{margin-bottom:14px}
  .screening .screen-footer .chart{height:140px}
  .screening .video-frame{height:130px}
  .screen-ticker{font-size:9px;padding-top:10px;flex-shrink:0}
}
@media(max-width:700px){.phone{height:760px;max-height:calc(100dvh - 170px);min-height:520px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{.sidebar,.topbar,.heading-actions,.footer,.overlay,.btn,.toolbar,.skip-link{display:none!important}.main-shell{margin:0}.page{padding:0}.card{box-shadow:none;break-inside:avoid}.print-only{display:block}.screening{background:white;color:#333}.phone-stage{display:block}.phone-description{display:none}}

/* Device assets review: scoped to the inventory workspace. */
.asset-breadcrumb{min-height:24px;margin-bottom:17px;font-size:12px;gap:10px}.asset-breadcrumb .icon{width:14px;height:14px}.asset-breadcrumb span[aria-current]{color:#405872;font-weight:500}
.asset-workspace{display:grid;gap:16px;padding:0;background:transparent;min-width:0}.asset-workspace>.card{min-width:0;border:1px solid #e5ebf2;box-shadow:0 4px 18px #223d5b05;border-radius:12px}.asset-data-panel{overflow:hidden}
.asset-card-head{display:flex;align-items:center;justify-content:flex-end;gap:18px;padding:13px 24px;min-height:65px}
.asset-card-actions{display:flex;align-items:center;gap:10px}.asset-card-actions .btn{min-height:37px;font-size:12px;padding-inline:14px;border-radius:6px;box-shadow:none}.asset-card-actions .primary{background:#2b75d2;border-color:#2b75d2}.asset-card-actions .btn .icon{width:16px;height:16px}
.asset-filter-bar{display:grid;grid-template-columns:minmax(220px,1.65fr) repeat(3,minmax(120px,1fr)) auto;align-items:end;gap:15px;padding:18px 24px 20px;background:#fff}
.asset-search,.asset-filter{display:flex;flex-direction:column;gap:9px;min-width:0}.asset-filter-label{font-size:12px;color:#6e8094;font-weight:400;line-height:1.4}.asset-search-input{display:block;position:relative}.asset-search-input>.icon{position:absolute;left:11px;top:11px;width:15px;height:15px;color:#9cacc0;pointer-events:none}.asset-search input{height:37px;width:100%;padding:9px 11px 9px 34px;border-radius:6px;font-size:12px;border-color:#e0e6ee;color:#506880}.asset-search input::placeholder{color:#b0bac7;font-size:11px}.asset-filter select{height:37px;width:100%;padding:8px 28px 8px 11px;border-color:#e0e6ee;border-radius:6px;font-size:12px;color:#6d8198}
.asset-filter-actions{display:flex;align-items:center;gap:8px}.asset-filter-actions .btn{min-height:37px;border-radius:6px;padding-inline:13px;font-size:12px;box-shadow:none}.asset-filter-actions .primary{background:#edf4ff;color:#3378cc;border-color:#dce9fc}.asset-filter-actions .primary:hover{background:#e5efff;filter:none;color:#2568b6}.asset-filter-actions .btn:not(.primary){border-color:#e2e8f0;color:#8494a8}
.asset-workspace table{min-width:990px;table-layout:auto}.asset-workspace th{padding:13px 16px;height:45px;background:#f7f9fc;color:#7a8da3;font-size:11px;border-block:1px solid #eaf0f5}.asset-workspace th>button{display:inline-flex;align-items:center;gap:8px;padding:0;font-size:11px;min-height:18px}.asset-sort{font-size:11px;color:#bdc9d6;font-weight:400}.asset-sort.active{color:#397dd2}.asset-workspace .asset-select-col{width:52px;padding-left:24px}.asset-workspace td{padding:12px 16px;height:62px;font-size:12px;border-bottom-color:#eff3f7;color:#58718c}.asset-workspace td:first-child{width:52px;padding-left:24px}.asset-workspace th:last-child,.asset-workspace td:last-child{padding-right:24px;min-width:102px}.asset-workspace input[type=checkbox]{width:14px;height:14px;vertical-align:middle}
.asset-device-identity{display:flex;align-items:center;gap:11px;min-width:196px}.asset-device-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:#edf4fe;border:1px solid #e4edf9;color:#6b98d0;flex-shrink:0}.asset-device-icon>.icon{width:18px;height:18px;stroke-width:1.5}.asset-device-icon.fault{color:#c99a70;background:#fbf5ee;border-color:#f0e7dc}.asset-device-identity strong{font-size:12px;color:#3e5874;font-weight:500;line-height:1.5}.asset-device-code{display:block;font-size:10px;letter-spacing:.25px;font-family:Consolas,monospace;color:#9dadbf;margin-top:5px}
.asset-type{display:inline-flex;align-items:center;padding:4px 9px;background:#f4f6f9;border:1px solid #edf0f5;border-radius:5px;font-size:11px;color:#8799ad;line-height:1.3}.asset-room{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#728aa4}.asset-room .icon{height:13px;width:13px;color:#a4b4c5}.asset-connection{display:flex;align-items:center;gap:7px}.asset-connection .badge{font-size:10px;padding:4px 7px;border-radius:4px;gap:5px}.asset-health{font-size:10px;color:#a4b0bf}.asset-health.fault{color:#c0956f}.asset-reading{font-size:11px;color:#7b90a8}.asset-last-seen{font-family:Consolas,monospace;font-size:11px;color:#93a5b9;font-variant-numeric:tabular-nums}
.asset-workspace .table-actions{gap:0}.asset-workspace .table-actions .link{min-height:29px;font-size:11px;color:#4f8bd4;padding:5px 0}.asset-workspace .table-actions .link+.link{margin-left:12px;padding-left:12px;position:relative}.asset-workspace .table-actions .link+.link:before{content:"";height:10px;width:1px;background:#e2eaf5;position:absolute;left:0;top:10px}.asset-workspace tbody tr:hover{background:#f8fbff}.asset-workspace tbody tr.is-selected{background:#f1f7ff}
.asset-table-foot{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 24px;min-height:64px;background:#fff}.asset-selection{display:flex;align-items:center;gap:14px;font-size:11px;color:#9aa9ba;white-space:nowrap}.asset-selection b{font-weight:500;color:#68839f}.asset-batch.btn{min-height:30px;border-radius:5px;padding:6px 9px;font-size:11px;color:#7e94ac;border-color:#e3eaf1;gap:5px}.asset-batch.btn .icon{height:13px;width:13px}.asset-batch:disabled{opacity:.5;background:#fafbfd}.asset-pagination{display:flex;align-items:center;gap:18px;font-size:11px;color:#97a6b8}.asset-pagination .page-buttons{gap:6px}.asset-pagination .page-buttons button{height:29px;min-width:29px;display:grid;place-items:center;padding:5px;border-color:#e4eaf2;font-size:11px;border-radius:5px;color:#8ba0b8}.asset-pagination .page-buttons button.active{color:#3e80d3;border-color:#d8e7fc;background:#f0f6ff}.asset-pagination .page-buttons .icon{height:12px;width:12px}.asset-empty{padding:12px 20px 30px;text-align:center;border-top:1px solid #edf2f7}.asset-empty>.empty-state{padding-bottom:20px}
@media(max-width:1220px){.asset-filter-bar{grid-template-columns:minmax(200px,1.5fr) repeat(3,minmax(104px,1fr));gap:13px}.asset-filter-actions{grid-column:1/-1;justify-content:flex-end;margin-top:1px}.asset-card-head{padding-inline:22px}.asset-filter-bar{padding-inline:22px}}
@media(max-width:700px){.asset-workspace{gap:12px}.asset-card-head{padding:13px 16px;gap:14px;flex-wrap:wrap}.asset-card-actions{gap:8px;flex:1;justify-content:flex-end}.asset-card-actions .btn{font-size:11px;padding:8px 10px;min-height:35px}.asset-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr));padding:18px 16px;gap:15px 11px}.asset-search{grid-column:1/-1}.asset-filter-actions{grid-column:auto;justify-content:flex-end}.asset-filter-actions .btn{font-size:11px;padding-inline:10px}.asset-filter-bar>.asset-filter:last-of-type{grid-column:auto}.asset-table-foot{flex-wrap:wrap;gap:15px;padding:16px}.asset-selection{justify-content:space-between;width:100%}.asset-pagination{width:100%;justify-content:space-between;gap:10px}.asset-page-size{font-size:10px}.asset-breadcrumb{font-size:11px;margin-bottom:14px}.asset-workspace .asset-select-col,.asset-workspace td:first-child{padding-left:16px}}
