.knowledge-panel[data-v-6ab8db52]{min-width:0;padding:20px 0}.knowledge-toolbar[data-v-6ab8db52],.knowledge-entry-heading[data-v-6ab8db52],.knowledge-actions[data-v-6ab8db52]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.knowledge-toolbar[data-v-6ab8db52]{justify-content:space-between;margin-bottom:16px}h2[data-v-6ab8db52]{margin:0;font-size:20px}h3[data-v-6ab8db52]{margin:0;font-size:16px}p[data-v-6ab8db52]{color:#a9bad5;overflow-wrap:anywhere}.knowledge-error[data-v-6ab8db52]{color:#ffb4b4}fieldset[data-v-6ab8db52]{min-width:0;padding:0;margin:0;border:0}.knowledge-entry[data-v-6ab8db52]{border-top:1px solid #32475c;padding:18px 0;display:grid;gap:12px}label[data-v-6ab8db52]{display:grid;gap:6px;min-width:0}.knowledge-enabled[data-v-6ab8db52]{display:flex;align-items:center;margin-left:auto}input[data-v-6ab8db52]:not([type=checkbox]),textarea[data-v-6ab8db52]{width:100%;min-width:0;border:1px solid #54718d;border-radius:4px;background:#09192a;color:#eef5ff;padding:10px}textarea[data-v-6ab8db52]{resize:vertical}input[type=checkbox][data-v-6ab8db52]{width:18px;height:18px}button[data-v-6ab8db52]{background:#193d56;color:#e6f3ff;border:1px solid #54718d;border-radius:4px;padding:8px 12px;white-space:normal}button[data-v-6ab8db52]:disabled{opacity:.5;cursor:not-allowed}button[data-v-6ab8db52]:focus-visible,input[data-v-6ab8db52]:focus-visible,textarea[data-v-6ab8db52]:focus-visible{outline:2px solid #74f0cc;outline-offset:2px}@media(max-width:600px){.knowledge-actions[data-v-6ab8db52]{width:100%}.knowledge-actions button[data-v-6ab8db52]{flex:1 1 130px}}.shell .dashboard-view{grid-template-columns:minmax(0,1fr)}.shell .dashboard-view.sidebar-pinned{padding-left:248px}.shell .sidebar{position:fixed;inset:0 auto 0 0;z-index:150;width:248px;height:100dvh;box-sizing:border-box;padding:16px;display:flex;overflow:hidden;transform:translate(-100%);visibility:hidden;transition:transform .24s ease,visibility .24s;background:var(--console-rail)}.shell .sidebar.is-open{transform:translate(0);visibility:visible}.shell .sidebar .brand{justify-content:flex-start;margin:14px 0 20px}.shell .sidebar .brand>div:last-child{display:block}.shell .sidebar nav{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;min-height:0;flex:1;gap:4px;scrollbar-width:thin}.shell .sidebar nav button{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-start;gap:12px;min-height:44px;padding:10px 12px;width:100%;text-align:left;border-radius:6px}.shell .sidebar .nav-label{max-width:none;font-size:14px;line-height:1.4;white-space:normal;overflow-wrap:anywhere}.shell .sidebar .nav-icon{flex:0 0 22px;text-align:center}.sidebar-controls{display:flex;justify-content:flex-end;gap:8px}.sidebar-controls button,.sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;flex:0 0 36px;border-radius:6px;background:var(--console-panel-alt);color:var(--console-text);border:1px solid var(--console-line);cursor:pointer}.sidebar-controls button[aria-pressed=true]{color:var(--console-teal);border-color:var(--console-teal)}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:149;border:0;border-radius:0;background:#0006;width:100%;height:100%}.shell .topbar{gap:16px}.shell .topbar>div:first-of-type{margin-right:auto}@media(max-width:760px){.shell .dashboard-view.sidebar-pinned{padding-left:0}.shell .sidebar{width:min(280px,85vw)}.shell .workspace{padding:16px}.shell .topbar,.shell .topbar-actions{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){.shell .sidebar{transition:none}}:root{color:#d8e6ff;background:#06111f;font-family:Microsoft YaHei,PingFang SC,Segoe UI,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(120deg,#0a1d33eb,#04101ff2),repeating-linear-gradient(90deg,rgba(66,153,225,.08) 0 1px,transparent 1px 96px)}button,input,textarea{font:inherit}button{border:0;cursor:pointer}.shell{min-height:100vh}.login-view{display:grid;grid-template-columns:minmax(0,1.1fr) 420px;gap:28px;align-items:center;min-height:100vh;padding:56px clamp(24px,7vw,120px)}.login-brief{max-width:760px}.eyebrow{margin:0 0 10px;color:#59d2ff;font-size:12px;font-weight:800;letter-spacing:0}.login-brief h1,.topbar h1{margin:0;color:#fff;font-size:clamp(32px,5vw,62px);line-height:1.08;letter-spacing:0}.summary{max-width:620px;margin:22px 0 28px;color:#a9bad5;font-size:18px;line-height:1.8}.brief-grid{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:12px}.brief-grid span,.login-note,.sidebar-status,.notice,.topbar-actions span{color:#a9bad5}.brief-grid span{padding:14px 16px;border:1px solid rgba(101,199,255,.24);border-radius:8px;background:#07192eb8}.login-panel,.control-panel,.info-panel,.log-panel,.metric-card{border:1px solid rgba(96,164,250,.18);border-radius:8px;background:#08172adb;box-shadow:0 24px 80px #00000047}.login-panel{display:grid;gap:18px;padding:28px}.panel-heading p,.panel-heading h2{margin:0}.panel-heading p{color:#74f0cc;font-size:13px;font-weight:700}.panel-heading h2{margin-top:8px;color:#fff;font-size:28px}label{display:grid;gap:8px;color:#cfe0f7;font-weight:700}input{width:100%;min-height:44px;border:1px solid rgba(141,180,235,.28);border-radius:8px;padding:0 14px;color:#ecf4ff;background:#051120e0;outline:none}input:focus{border-color:#22c7ff;box-shadow:0 0 0 3px #22c7ff2e}.primary-action{min-height:48px;border-radius:8px;color:#03101f;background:linear-gradient(135deg,#35d3ff,#6ff0b3);font-weight:900}.primary-action:disabled{cursor:wait;opacity:.68}.login-error{margin:-4px 0 0;border:1px solid rgba(241,91,91,.35);border-radius:8px;background:#f15b5b1f;color:#ffb5b5;font-size:13px;font-weight:700;line-height:1.5;padding:10px 12px}.login-note{margin:0;font-size:13px;line-height:1.6}.dashboard-view{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh;min-width:0}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;height:100vh;border-right:1px solid rgba(97,153,220,.18);background:#040e1bf0;padding:16px}.brand{display:flex;gap:12px;align-items:center;margin-bottom:18px}.brand-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:8px;overflow:hidden;border:1px solid rgba(111,240,179,.24);background:#f8fafc}.brand-mark img{width:100%;height:100%;object-fit:contain;padding:5px}.brand strong,.brand span{display:block}.brand strong{color:#fff}.brand span{color:#7791b3;font-size:12px}nav{display:grid;flex:1;min-height:0;align-content:start;gap:4px;overflow-y:auto}nav button{display:flex;align-items:center;gap:10px;min-height:42px;border-radius:8px;padding:0 12px;color:#b7c8e4;background:transparent;text-align:left}nav button.active,nav button:hover{color:#fff;background:#258dff2e}.sidebar-status{position:static;display:flex;gap:8px;align-items:center;min-height:40px;margin-top:12px;padding:0 10px;border-radius:8px;background:#14b8a61f;font-size:13px}.status-dot{width:8px;height:8px;border-radius:50%;background:#58e39f;box-shadow:0 0 0 4px #58e39f24}.workspace{padding:24px;min-width:0}.topbar,.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.section-tools{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:center;flex:1;max-width:860px}.topbar h1{font-size:30px}.topbar-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.topbar-actions span,.topbar-actions button,.section-heading button,.row-actions button{min-height:34px;border-radius:8px;padding:0 12px;background:#1e4474b8}.topbar-actions .version-chip{color:#bfe7ff;background:#0c2c4eb8}.topbar-actions button,.section-heading button,.row-actions button{color:#dff0ff;font-weight:800}.notice{margin:18px 0;border:1px solid rgba(125,211,252,.2);border-radius:8px;padding:12px 14px;background:#0e2b49a3}.create-site-panel{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;gap:12px;align-items:end;margin-bottom:16px;border:1px solid rgba(125,211,252,.18);border-radius:8px;padding:14px;background:#07182dbd}.create-site-actions{display:flex;gap:8px}.create-site-actions button{min-height:44px;border-radius:8px;padding:0 14px;background:#1e4474b8;color:#dff0ff;font-weight:800}.reset-password-panel{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(180px,1fr) auto;gap:12px;align-items:center;margin-top:14px;border:1px solid rgba(111,240,179,.2);border-radius:8px;padding:12px;background:#08262a94}.reset-password-panel button{min-height:44px;border-radius:8px;padding:0 14px;background:#14785ebd;color:#e8fff6;font-weight:900}.address-library{margin-top:22px;border-top:1px solid rgba(125,211,252,.18);padding-top:18px}.address-library-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:10px}.address-library-heading h3{margin:0;color:#fff;font-size:18px}.address-library-heading>span{color:#8ca2c2;font-size:13px}.address-library-table{min-width:820px}.pending-address-panel{margin-top:0}.pending-address-table{min-width:1120px}.pending-address-table th:nth-child(2),.pending-address-table td:nth-child(2){min-width:420px;width:42%}.location-cell{color:#e0f1ff;line-height:1.6}.pending-address-action{min-height:34px;border-radius:8px;padding:0 12px;color:#e8fff6;background:#14785ebd;font-weight:900}.pending-address-action:disabled{cursor:wait;opacity:.68}.library-status{display:inline-flex;width:fit-content;min-height:26px;align-items:center;border-radius:999px;padding:0 10px;font-weight:800}.library-status.linked{color:#6ee7a8;background:#6ee7a81f}.library-status.pending{color:#f8c76b;background:#f8c76b1f}.empty-library{color:#8ca2c2;text-align:center}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:16px}.metric-card{padding:18px;width:100%;color:inherit;text-align:left}button.metric-card{cursor:pointer}button.metric-card:hover{border-color:#7dd3fc5c;transform:translateY(-1px)}.metric-card span,.metric-card em{display:block;color:#91a8c6;font-style:normal}.metric-card strong{display:block;margin:8px 0;color:#fff;font-size:32px}.metric-card[data-tone=green] strong,.pill.ok{color:#6ee7a8}.metric-card[data-tone=blue] strong{color:#74c7ff}.metric-card[data-tone=cyan] strong{color:#5ee6e6}.metric-card[data-tone=amber] strong{color:#f8c76b}.metric-card[data-tone=red] strong,.pill.danger{color:#ff8d8d}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start;min-width:0}.content-grid.single-column{grid-template-columns:minmax(0,1fr)}.control-panel,.info-panel,.log-panel{padding:18px;min-width:0}.section-heading{margin-bottom:16px}.section-heading h2{margin:0;color:#fff;font-size:20px}.section-heading.compact{margin-bottom:12px}.table-wrap{overflow-x:auto;max-width:100%}table{width:100%;min-width:980px;border-collapse:collapse}.exam-sites-table{min-width:1280px}.exam-sites-table th,.exam-sites-table td{padding:16px 14px}.exam-sites-table th:first-child,.exam-sites-table td:first-child{min-width:90px}.exam-sites-table th:nth-child(3),.exam-sites-table td:nth-child(3){min-width:420px;width:42%}.exam-sites-table th:last-child,.exam-sites-table td:last-child{min-width:260px}.exam-sites-table .row-actions{flex-wrap:wrap;gap:10px;min-width:240px}th,td{border-bottom:1px solid rgba(117,152,197,.14);padding:14px 10px;text-align:left;vertical-align:middle}th{color:#77d9ff;font-size:13px;font-weight:800}td{color:#d4e5fb}td strong,td span{display:block}td span{margin-top:4px;color:#8ca2c2;font-size:13px}.password-cell{display:inline-flex;max-width:180px;padding:5px 8px;border-radius:6px;background:#47b9ff1a;color:#e5f4ff;font-family:Consolas,Courier New,monospace;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill{display:inline-flex;width:fit-content;min-height:26px;align-items:center;border-radius:999px;padding:0 10px;background:#74c7ff1f;font-weight:800}.row-actions{display:flex;flex-wrap:wrap;gap:8px;min-width:230px;align-items:center}.row-actions .danger-action{color:#ffe2e2;background:#d9304085}.side-stack{display:grid;gap:16px}.client-panel{margin-top:16px;border:1px solid rgba(97,153,220,.18);border-radius:8px;padding:18px;background:#061426d1}.health-panel{margin-bottom:16px;border:1px solid rgba(97,153,220,.18);border-radius:8px;padding:18px;background:#061426d1}.health-metrics{display:grid;grid-template-columns:repeat(5,minmax(100px,1fr));gap:1px;margin:0 0 14px;overflow:hidden;border:1px solid rgba(117,152,197,.16);border-radius:8px;background:#7598c51f}.health-metrics div{min-height:66px;padding:10px 14px;background:#07182bf5}.health-metrics dt,.health-metrics dd{margin:0}.health-metrics dt{color:#8ca2c2;font-size:12px}.health-metrics dd{margin-top:4px;color:#eef7ff;font-size:24px;font-weight:900}.health-metrics .healthy dd{color:#6ee7a8}.health-metrics .attention dd{color:#f8c76b}.health-metrics .offline dd{color:#ff8d8d}.health-table{min-width:840px;table-layout:fixed}.health-table th:nth-child(1),.health-table td:nth-child(1){width:13%}.health-table th:nth-child(2),.health-table td:nth-child(2){width:30%}.health-table th:nth-child(3),.health-table td:nth-child(3),.health-table th:nth-child(4),.health-table td:nth-child(4){width:10%}.health-table th:nth-child(5),.health-table td:nth-child(5){width:13%}.health-table th:nth-child(6),.health-table td:nth-child(6){width:11%}.health-table th:nth-child(7),.health-table td:nth-child(7){width:13%}.health-table td:last-child button,.diagnostic-heading button{min-height:34px;border-radius:8px;padding:0 12px;color:#dff0ff;background:#1e4474b8;font-weight:800}.health-status{display:inline-flex;width:fit-content;min-height:25px;align-items:center;border-radius:999px;padding:0 9px;color:#d9e8fa;background:#8ca2c224;font-size:12px;font-weight:900}.health-status.healthy,.health-status.ok{color:#6ee7a8;background:#2db77a1f}.health-status.attention,.health-status.warning,.health-status.waiting{color:#f8c76b;background:#f8c76b1f}.health-status.offline,.health-status.error{color:#ff9b9b;background:#f15b5b24}.health-status.disabled{color:#a8b6c9;background:#8ca2c21a}.health-empty{color:#8ca2c2;text-align:center}.diagnostic-detail{margin-top:18px;border-top:1px solid rgba(117,152,197,.18);padding-top:16px}.diagnostic-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.diagnostic-heading h3{margin:0;color:#fff;font-size:18px}.diagnostic-heading button{width:36px;padding:0;font-size:22px}.diagnostic-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:12px;overflow:hidden;border:1px solid rgba(117,152,197,.16);border-radius:8px;background:#7598c51f}.diagnostic-check{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;min-height:96px;padding:14px;background:#07182bf5}.diagnostic-check strong,.diagnostic-check p,.diagnostic-check small{display:block}.diagnostic-check p{margin:5px 0 0;color:#cfe0f7;line-height:1.55}.diagnostic-check small{margin-top:5px;color:#8ca2c2;line-height:1.55}.client-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.client-card{display:grid;gap:12px;border:1px solid rgba(125,211,252,.16);border-radius:8px;padding:14px;background:#0b1f38b8}.client-filter-label{margin:4px 0 0;color:#8ca2c2;font-size:13px;font-weight:700}.client-card strong,.client-card span{display:block}.client-card span{margin-top:4px;color:#8ca2c2}.client-card dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0}.client-card dt,.client-card dd{margin:0}.client-card dt{color:#8ca2c2;font-size:12px}.client-card dd{margin-top:4px;color:#eef7ff;font-weight:800}.client-card button{min-height:32px;border-radius:8px;padding:0 12px;color:#dff0ff;background:#1e4474c7;font-weight:800}.client-card button:hover{background:#258dff47}.request-list,.alert-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.request-list li,.alert-list li{display:flex;justify-content:space-between;gap:12px;border:1px solid rgba(122,170,230,.14);border-radius:8px;padding:12px;background:#030d1a6b}.request-list strong,.request-list span,.alert-list strong,.alert-list p{display:block}.request-list span,.alert-list p{margin:4px 0 0;color:#8da6c7;font-size:13px}.request-list em,.alert-list span{color:#ffcf70;font-style:normal;font-weight:800;white-space:nowrap}.log-panel{margin-top:16px}.log-panel ol{display:grid;gap:10px;margin:0;padding:0;list-style:none}.log-panel li{border-left:3px solid #27d3ff;padding:10px 12px;border-radius:0 8px 8px 0;color:#bdd0ea;background:#081c34bd}.data-upload-panel{border:1px solid rgba(97,153,220,.18);border-radius:8px;padding:18px;background:#061426d1}.data-upload-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.data-upload-actions .danger-action{color:#ffe2e2;background:#d93040ad}.data-folder-list{display:grid;gap:14px}.data-folder-card{border:1px solid rgba(125,211,252,.16);border-radius:8px;padding:14px;background:#0b1f38ad}.data-folder-header{display:grid;grid-template-columns:minmax(240px,1fr) minmax(330px,auto) minmax(150px,auto);gap:16px;align-items:center;margin-bottom:0}.data-folder-header h3{margin:0;color:#fff;font-size:20px}.data-folder-header span{display:block;margin-top:5px;color:#8ca2c2;font-size:13px}.data-folder-header dl{display:grid;grid-template-columns:repeat(3,minmax(92px,1fr));gap:10px;margin:0}.data-folder-header dt,.data-folder-header dd{margin:0}.data-folder-header dt{color:#8ca2c2;font-size:12px}.data-folder-header dd{margin-top:4px;color:#eef7ff;font-weight:900}.data-folder-header button,.data-upload-table button{min-height:34px;border-radius:8px;padding:0 12px;color:#dff0ff;background:#1e4474c7;font-weight:800}.data-folder-actions{display:flex;min-width:150px;flex-direction:column;align-items:stretch;gap:10px}.data-folder-actions button{display:inline-flex;width:100%;min-width:150px;height:40px;min-height:40px;align-items:center;justify-content:center;box-sizing:border-box;white-space:nowrap}.data-folder-actions .folder-toggle{color:#e8f7ff;background:#266cb0bd}.folder-toggle-icon{display:inline-block;width:16px;margin-right:4px;text-align:center;color:#6ee7a8}.data-folder-header .danger-action{color:#ffe2e2;background:#d9304085}.data-folder-header button:disabled{cursor:wait;opacity:.7}.folder-empty{margin:12px 0 2px;border:1px dashed rgba(125,211,252,.2);border-radius:8px;padding:14px;background:#030d1a3d}.data-upload-table{min-width:840px}.data-folder-card .table-wrap{margin-top:12px}.data-upload-table th,.data-upload-table td{padding:14px 12px}.data-upload-table th:nth-child(3),.data-upload-table td:nth-child(3){min-width:280px}.feedback-message-cell{max-width:520px;white-space:pre-wrap;word-break:break-word}.announcement-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:24px;margin-top:18px}.authorization-codes-panel{min-height:0}.authorization-valid-date{margin:18px 0;color:#9db9dc;font-size:14px}.authorization-code-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.authorization-code-list article{display:grid;gap:12px;padding:22px;border:1px solid #21466e;border-radius:8px;background:#0a2038}.authorization-code-list span{color:#8fb7df;font-size:15px}.authorization-code-list strong{color:#62e6ba;font-size:34px;letter-spacing:0}.authorization-code-list small{color:#7898bb;line-height:1.6}@media(max-width:760px){.authorization-code-list{grid-template-columns:1fr}}.announcement-form{display:grid;align-content:start;gap:18px;padding-right:24px;border-right:1px solid rgba(117,152,197,.18)}.announcement-form textarea{width:100%;min-height:160px;resize:vertical;border:1px solid rgba(141,180,235,.28);border-radius:8px;padding:14px;color:#ecf4ff;background:#051120e0;line-height:1.6;outline:none}.announcement-form textarea:focus{border-color:#22c7ff;box-shadow:0 0 0 3px #22c7ff2e}.announcement-target-mode{display:flex;flex-wrap:wrap;gap:20px;margin:0;border:0;padding:0}.announcement-target-mode legend{width:100%;margin-bottom:8px;color:#cfe0f7;font-weight:700}.announcement-target-mode label,.announcement-site-list label{display:flex;grid-template-columns:none;flex-direction:row;align-items:center;gap:8px;cursor:pointer}.announcement-target-mode input,.announcement-site-list input{width:18px;min-height:18px;margin:0;accent-color:#35d3ff}.announcement-site-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;max-height:220px;overflow-y:auto;border:1px solid rgba(125,211,252,.16);border-radius:8px;padding:14px;background:#030d1a4d}.announcement-send{width:min(260px,100%)}.announcement-history{min-width:0}.announcement-history h3{margin:0 0 12px;color:#fff}.announcement-history-item{margin-bottom:10px;border:1px solid rgba(125,211,252,.16);border-radius:8px;padding:14px;background:#0b1f38ad}.announcement-history-item p{margin:0 0 12px;color:#e7f2ff;line-height:1.6;white-space:pre-wrap;word-break:break-word}.announcement-history-item dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}.announcement-history-item dt,.announcement-history-item dd{margin:0}.announcement-history-item dt{color:#8ca2c2;font-size:12px}.announcement-history-item dd{margin-top:4px;color:#d4e5fb;font-size:13px;word-break:break-word}.attendance-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.attendance-summary-card{display:grid;gap:14px;border:1px solid rgba(125,211,252,.16);border-radius:8px;padding:16px;background:#0b1f38ad}.attendance-summary-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.attendance-summary-card h3{margin:0;color:#fff;font-size:18px}.attendance-summary-card header span,.attendance-reported-at{display:block;margin:5px 0 0;color:#8ca2c2;font-size:13px}.attendance-rate{color:#64e9ae;font-size:24px;line-height:1;white-space:nowrap}.attendance-progress{height:8px;overflow:hidden;border-radius:6px;background:#5e82ae33}.attendance-progress span{display:block;height:100%;border-radius:inherit;background:#3dc89a}.attendance-summary-card dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0}.attendance-summary-card dt,.attendance-summary-card dd{margin:0}.attendance-summary-card dt{color:#8ca2c2;font-size:12px}.attendance-summary-card dd{margin-top:4px;color:#eef7ff;font-size:18px;font-weight:900}@media(max-width:1100px){.login-view,.dashboard-view,.content-grid{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar-status{position:static;margin-top:18px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.announcement-layout{grid-template-columns:1fr}.announcement-form{padding-right:0;padding-bottom:20px;border-right:0;border-bottom:1px solid rgba(117,152,197,.18)}.health-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.login-view,.workspace{padding:18px}.brief-grid,.metric-grid{grid-template-columns:1fr}.topbar,.section-heading,.data-folder-header{align-items:stretch;flex-direction:column}.section-tools{grid-template-columns:1fr;max-width:none}.data-folder-header{display:flex}.data-folder-header dl{grid-template-columns:1fr}.attendance-summary-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.health-metrics,.diagnostic-checks{grid-template-columns:1fr}.diagnostic-heading{align-items:flex-start}.announcement-site-list,.announcement-history-item dl{grid-template-columns:1fr}}.camera-filter-actions select{min-height:36px;padding:0 34px 0 12px;color:var(--console-text);background:var(--console-panel-alt);border:1px solid var(--console-line);border-radius:5px}.camera-live-panel{margin:18px 0;border-top:1px solid var(--console-line);border-bottom:1px solid var(--console-line);padding:18px 0}.camera-live-controls{display:grid;grid-template-columns:minmax(260px,1fr) minmax(420px,auto);gap:24px;align-items:end}.camera-live-controls h3{margin:3px 0 6px;color:var(--console-text);font-size:20px}.camera-live-controls p{margin:0;color:var(--console-muted)}.camera-live-actions{display:grid;grid-template-columns:minmax(180px,260px) minmax(132px,auto);gap:8px 10px;align-items:end}.camera-live-actions label{grid-column:1 / -1;color:var(--console-muted);font-size:12px;font-weight:800}.camera-live-actions select,.camera-live-actions button{min-height:40px;border:1px solid var(--console-line);border-radius:5px;padding:0 12px;color:var(--console-text);background:var(--console-panel-alt)}.camera-live-actions .accent-action{color:#07191a;background:var(--console-teal);border-color:var(--console-teal)}.camera-live-actions .danger-action{color:#fff;background:color-mix(in srgb,var(--console-red) 78%,transparent)}.camera-live-viewport{position:relative;display:grid;width:100%;aspect-ratio:16 / 9;max-height:620px;margin-top:16px;place-items:center;overflow:hidden;border:1px solid var(--console-line);border-radius:6px;background:#050b10}.camera-live-viewport img{width:100%;height:100%;object-fit:contain}.camera-live-empty{display:grid;gap:7px;padding:24px;color:var(--console-muted);text-align:center}.camera-live-empty strong{color:var(--console-text);font-size:18px}.camera-live-badge{position:absolute;top:14px;left:14px;border:1px solid color-mix(in srgb,var(--console-red) 65%,transparent);border-radius:4px;padding:5px 9px;color:#fff;background:color-mix(in srgb,var(--console-red) 78%,transparent);font-size:12px;font-weight:900}.camera-live-meta{display:flex;justify-content:space-between;gap:16px;margin-top:9px;color:var(--console-muted);font-size:12px}@media(max-width:900px){.camera-live-controls{grid-template-columns:1fr}.camera-live-actions{grid-template-columns:minmax(0,1fr) auto}}@media(max-width:560px){.camera-live-actions{grid-template-columns:1fr}.camera-live-actions label{grid-column:auto}.camera-live-meta{flex-direction:column}}.camera-row-actions{display:flex;gap:8px;align-items:center}.camera-row-actions .danger-action{color:var(--console-red)}.camera-preview-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:grid;place-items:center;padding:24px;background:#020a12c2}.camera-preview-dialog{width:min(920px,100%);max-height:calc(100vh - 48px);overflow:hidden;color:var(--console-text);background:var(--console-panel);border:1px solid var(--console-line);border-radius:8px}.camera-preview-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 18px;border-bottom:1px solid var(--console-line)}.camera-preview-dialog h2{margin:3px 0;font-size:20px}.camera-preview-dialog header span{color:var(--console-muted);font-size:13px}.camera-preview-dialog header>button{width:36px;height:36px;flex:0 0 36px;padding:0;color:var(--console-text);font-size:24px;line-height:1;background:transparent;border:1px solid var(--console-line);border-radius:5px}.camera-preview-body{display:grid;min-height:320px;max-height:calc(100vh - 170px);place-items:center;overflow:auto;padding:18px;background:#050b10}.camera-preview-body img{display:block;max-width:100%;max-height:calc(100vh - 210px);object-fit:contain}.camera-preview-body video{display:block;width:100%;max-height:68vh;background:#05080c}.camera-preview-body p{color:#d7e2ea}.shell{--console-bg: #0a1017;--console-rail: #0d161f;--console-panel: #111d28;--console-panel-alt: #152431;--console-line: #263b4b;--console-text: #eef6f8;--console-muted: #91a6b3;--console-teal: #35d0bd;--console-blue: #64b8e8;--console-amber: #e8bd65;--console-red: #f08179;color:var(--console-text);background:var(--console-bg);transition:color .38s ease,background-color .38s ease}.shell[data-theme=day]{--console-bg: #edf4f5;--console-rail: #f7fbfb;--console-panel: #ffffff;--console-panel-alt: #f2f8f9;--console-line: #d4e2e5;--console-text: #173541;--console-muted: #68808b;--console-teal: #168f83;--console-blue: #287eaa;--console-amber: #ac751d;--console-red: #c65c58}.shell[data-theme=day] .dashboard-view,.shell[data-theme=day] .workspace{background:var(--console-bg)}.dashboard-view{grid-template-columns:84px minmax(0,1fr);background:var(--console-bg)}.sidebar{padding:16px 10px;border-right-color:var(--console-line);background:var(--console-rail);transition:background-color .38s ease,border-color .38s ease}.brand{justify-content:center;margin-bottom:18px}.brand-mark{width:42px;height:42px;border-color:color-mix(in srgb,var(--console-teal) 42%,transparent);background:var(--console-panel-alt)}.brand>div:last-child{display:none}nav{gap:8px}nav button{position:relative;display:grid;justify-items:center;align-content:center;gap:3px;min-height:55px;padding:6px 3px;border:1px solid transparent;border-radius:9px;color:var(--console-muted);background:transparent;text-align:center;transition:transform .22s ease,color .28s ease,background-color .28s ease,border-color .28s ease,box-shadow .22s ease}nav button:hover,nav button.active{color:var(--console-text);border-color:color-mix(in srgb,var(--console-teal) 55%,transparent);background:color-mix(in srgb,var(--console-teal) 14%,transparent);box-shadow:0 7px 18px #14787021;transform:translateY(-1px)}nav button.active:before{position:absolute;top:13px;left:-11px;width:3px;height:26px;border-radius:0 2px 2px 0;background:var(--console-teal);content:""}.nav-icon{font-size:18px;line-height:1}.nav-label{max-width:70px;overflow:hidden;font-size:10px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.sidebar-status{justify-content:center;min-height:36px;margin-top:12px;padding:0;background:color-mix(in srgb,var(--console-teal) 12%,transparent);font-size:0}.sidebar-status:after{color:var(--console-muted);content:"正常";font-size:10px}.workspace{padding:24px 30px 36px;background:var(--console-bg);transition:background-color .38s ease}.topbar{padding-bottom:18px;border-bottom-color:var(--console-line)}.topbar h1,.section-heading h2,.panel-heading h2,.address-library-heading h3,.attendance-summary-card h3{color:var(--console-text)}.topbar-actions span,.notice,.client-filter-label,.empty-library,.topbar-actions button,.section-heading button,.row-actions button{color:var(--console-muted)}.topbar-actions span,.topbar-actions button,.section-heading button,.row-actions button,.create-site-actions button,.health-table td:last-child button,.diagnostic-heading button{border:1px solid var(--console-line);background:var(--console-panel-alt);color:var(--console-text);transition:transform .2s ease,background-color .28s ease,border-color .28s ease,box-shadow .2s ease}.topbar-actions button:hover,.section-heading button:hover,.row-actions button:hover,.create-site-actions button:hover,.health-table td:last-child button:hover,.diagnostic-heading button:hover{border-color:var(--console-teal);box-shadow:0 7px 16px #00000029;transform:translateY(-1px)}.topbar-actions .version-chip{color:var(--console-teal);border-color:color-mix(in srgb,var(--console-teal) 30%,var(--console-line));background:color-mix(in srgb,var(--console-teal) 10%,transparent)}.notice{margin:14px 0;border-color:var(--console-line);background:var(--console-panel);color:var(--console-muted);transition:background-color .38s ease,border-color .38s ease,color .38s ease}.overview-subbar{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:4px 0 16px}.overview-subbar p{margin:0;color:var(--console-muted)}.overview-subbar strong{color:var(--console-text)}.overview-actions{display:flex;gap:8px}.overview-actions button,.accent-action{min-height:34px;border:1px solid var(--console-line);border-radius:5px;padding:0 12px;color:var(--console-text);background:var(--console-panel-alt);font-weight:800}.overview-actions .accent-action,.accent-action{border-color:var(--console-teal);color:#07191a;background:var(--console-teal)}.overview-actions button:hover,.accent-action:hover{box-shadow:0 8px 18px #14787033;transform:translateY(-1px)}.metric-grid.command-metric-grid{gap:10px;margin-bottom:16px}.metric-card,.control-panel,.info-panel,.log-panel,.client-panel,.health-panel,.login-panel,.create-site-panel,.reset-password-panel{border-color:var(--console-line);background:var(--console-panel);box-shadow:0 8px 24px #00000024;transition:background-color .38s ease,border-color .38s ease,box-shadow .28s ease}.metric-card{padding:14px 15px}.metric-card:hover{border-color:var(--console-teal);box-shadow:0 10px 22px #1478701f;transform:translateY(-2px)}.metric-card span,.metric-card em,.metric-card label,.metric-card small{color:var(--console-muted)}.metric-card strong{color:var(--console-text);font-size:25px}.metric-card[data-tone=green] strong,.metric-card[data-tone=cyan] strong{color:var(--console-teal)}.metric-card[data-tone=blue] strong{color:var(--console-blue)}.metric-card[data-tone=amber] strong{color:var(--console-amber)}.metric-card[data-tone=red] strong{color:var(--console-red)}.overview-health-matrix{margin-bottom:16px}.overview-health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px}.overview-health-cell{min-width:0;min-height:136px;padding:10px;border:1px solid color-mix(in srgb,var(--console-teal) 42%,var(--console-line));border-radius:5px;background:color-mix(in srgb,var(--console-teal) 11%,var(--console-panel));transition:transform .24s ease,border-color .24s ease,box-shadow .24s ease,background-color .3s ease}.overview-health-cell:hover{border-color:var(--console-teal);box-shadow:0 8px 18px #14787024;transform:translateY(-3px)}.overview-health-cell.attention{border-color:color-mix(in srgb,var(--console-amber) 60%,var(--console-line));background:color-mix(in srgb,var(--console-amber) 13%,var(--console-panel))}.overview-health-cell.offline,.overview-health-cell.disabled{border-color:color-mix(in srgb,var(--console-red) 54%,var(--console-line));background:color-mix(in srgb,var(--console-red) 10%,var(--console-panel))}.overview-health-cell-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:7px}.overview-health-cell-heading strong{overflow:hidden;color:var(--console-text);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.overview-health-cell small{display:block;margin-top:10px;overflow:hidden;color:var(--console-muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.overview-health-cell p{min-height:32px;margin:5px 0 8px;overflow:hidden;color:var(--console-muted);font-size:11px;line-height:1.45}.matrix-diagnose{min-height:27px;border:1px solid var(--console-line);border-radius:4px;padding:0 8px;color:var(--console-text);background:var(--console-panel-alt);font-size:11px}.matrix-diagnose:hover{border-color:var(--console-teal);transform:translateY(-1px)}.overview-health-key{display:flex;flex-wrap:wrap;gap:14px;margin-top:13px;color:var(--console-muted);font-size:11px}.overview-health-key span{display:inline-flex;align-items:center;gap:5px}.key-dot{width:7px;height:7px;border-radius:50%;background:var(--console-teal)}.key-dot.attention{background:var(--console-amber)}.key-dot.offline{background:var(--console-red)}.overview-diagnostic-detail{margin-bottom:16px}.overview-command-grid{display:grid;grid-template-columns:minmax(0,1.16fr) minmax(330px,.84fr);gap:16px;align-items:start;margin-bottom:16px}.overview-side-stack{display:grid;gap:16px}.overview-activity-list,.overview-release-list{display:grid;gap:8px}.overview-activity-item{display:grid;grid-template-columns:54px 9px minmax(0,1fr);gap:8px;align-items:start;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--console-line) 80%,transparent)}.overview-activity-item:last-child{border-bottom:0}.overview-activity-item time{color:var(--console-muted);font-size:10px}.activity-dot{width:8px;height:8px;margin-top:4px;border-radius:50%;background:var(--console-teal);box-shadow:0 0 0 4px color-mix(in srgb,var(--console-teal) 12%,transparent)}.overview-activity-item p{margin:0;color:var(--console-text);font-size:12px}.overview-release-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--console-line) 80%,transparent)}.overview-release-row:last-child{border-bottom:0}.release-mark{display:grid;place-items:center;width:34px;height:30px;border:1px solid color-mix(in srgb,var(--console-blue) 50%,var(--console-line));border-radius:5px;color:var(--console-blue);background:color-mix(in srgb,var(--console-blue) 12%,var(--console-panel));font-size:10px;font-weight:900}.release-info{min-width:0;flex:1}.release-info strong,.release-info small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.release-info strong{color:var(--console-text);font-size:12px}.release-info small{margin-top:2px;color:var(--console-muted);font-size:10px}.overview-progress{width:74px;height:5px;overflow:hidden;border-radius:4px;background:color-mix(in srgb,var(--console-muted) 24%,transparent)}.overview-progress span{display:block;height:100%;border-radius:inherit;background:var(--console-teal);transition:width .5s ease}.overview-release-row em{min-width:34px;color:var(--console-muted);font-size:11px;font-style:normal;text-align:right}.overview-ai-panel p{margin:0 0 12px;color:var(--console-muted);line-height:1.6}.overview-ai-panel .accent-action{min-height:34px}input,textarea,select{color:var(--console-text);border-color:var(--console-line);background:color-mix(in srgb,var(--console-panel) 74%,#091923)}th{color:var(--console-blue)}td{color:var(--console-text)}td span,.empty-library,.health-empty,.diagnostic-check p,.diagnostic-check small{color:var(--console-muted)}.health-metrics,.health-metrics div{border-color:var(--console-line);background:var(--console-panel-alt)}.health-metrics dt{color:var(--console-muted)}.health-metrics dd{color:var(--console-text)}.health-status{color:var(--console-text);background:color-mix(in srgb,var(--console-muted) 14%,transparent)}.health-status.healthy,.health-status.ok{color:var(--console-teal)}.health-status.attention,.health-status.warning,.health-status.waiting{color:var(--console-amber)}.health-status.offline,.health-status.error{color:var(--console-red)}@media(max-width:1100px){.overview-command-grid{grid-template-columns:1fr}}@media(max-width:640px){.overview-subbar{align-items:stretch;flex-direction:column}.overview-actions{flex-wrap:wrap}.overview-actions button{flex:1 1 140px}.overview-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-release-row{flex-wrap:wrap}}
