.academy-switcher[data-v-7841e9fc]{position:relative;max-width:100%}.as-trigger[data-v-7841e9fc]{display:inline-flex;align-items:center;gap:8px;max-width:100%;background:var(--si-s800);color:var(--si-white);border:1px solid var(--si-s700);border-radius:7px;padding:5px 12px;font-family:inherit;font-weight:600;font-size:clamp(.82rem,1.8vw,.95rem);cursor:pointer;outline:none}.as-trigger[data-v-7841e9fc]:hover{border-color:var(--si-teal)}.as-current[data-v-7841e9fc]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.as-caret[data-v-7841e9fc]{font-size:.7rem;opacity:.8;flex-shrink:0}.as-panel[data-v-7841e9fc]{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);width:min(340px,86vw);background:var(--si-white);color:var(--si-s900);border:1px solid var(--si-s200);border-radius:10px;box-shadow:var(--shadow);z-index:300;overflow:hidden;display:flex;flex-direction:column}.as-search[data-v-7841e9fc]{border:none;border-bottom:1px solid var(--si-s200);padding:10px 12px;font-family:inherit;font-size:.85rem;color:var(--si-s900);outline:none;width:100%}.as-list[data-v-7841e9fc]{list-style:none;margin:0;padding:4px;max-height:280px;overflow-y:auto}.as-option[data-v-7841e9fc]{padding:8px 10px;border-radius:6px;font-size:.85rem;font-weight:500;color:var(--si-s700);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.as-option[data-v-7841e9fc]:hover{background:var(--si-s100)}.as-option.active[data-v-7841e9fc]{background:#e0edff;color:var(--si-blue);font-weight:700}.as-empty[data-v-7841e9fc]{padding:12px;font-size:.8rem;color:var(--si-s400);text-align:center}.topbar[data-v-1cc3240b]{background:var(--si-navy);display:flex;align-items:center;justify-content:space-between;padding:0 var(--pad);height:56px;position:sticky;top:0;z-index:200;box-shadow:0 2px 12px #0006}.topbar-logo[data-v-1cc3240b]{display:flex;align-items:center;gap:10px;color:var(--si-white);font-size:clamp(.95rem,2.5vw,1.2rem);font-weight:700;letter-spacing:-.4px;white-space:nowrap}.topbar-logo[data-v-1cc3240b] span{color:var(--si-teal)}.topbar-academy[data-v-1cc3240b]{flex:1;min-width:0;display:flex;justify-content:center;padding:0 16px;color:var(--si-white);font-size:clamp(.85rem,2vw,1.05rem);font-weight:600;letter-spacing:-.2px}.topbar-academy>span[data-v-1cc3240b]{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-right[data-v-1cc3240b]{display:flex;align-items:center;gap:14px;color:var(--si-s400);font-size:.8rem;white-space:nowrap}.topbar-sem[data-v-1cc3240b]{display:inline}.ay-select[data-v-1cc3240b]{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--si-s400)}.ay-select select[data-v-1cc3240b]{background:var(--si-s800);color:var(--si-white);border:1px solid var(--si-s700);border-radius:6px;padding:3px 8px;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;outline:none}.ay-select select[data-v-1cc3240b]:hover:not(:disabled){border-color:var(--si-teal)}.ay-select select[data-v-1cc3240b]:disabled{opacity:.6;cursor:default}.live-badge[data-v-1cc3240b]{background:var(--si-mint);color:#fff;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:20px;animation:pulse-1cc3240b 2s infinite;flex-shrink:0}@keyframes pulse-1cc3240b{0%,to{opacity:1}50%{opacity:.6}}.topbar-logout[data-v-1cc3240b]{display:inline-flex;align-items:center;gap:6px;background:var(--si-s800);color:var(--si-s400);border:1px solid var(--si-s700);border-radius:7px;padding:5px 10px;font-family:inherit;font-size:.78rem;font-weight:600;cursor:pointer;outline:none;flex-shrink:0;transition:color .15s,border-color .15s,background .15s}.topbar-logout[data-v-1cc3240b]:hover{color:var(--si-white);border-color:var(--si-rose);background:#f43f5e24}.topbar-logout svg[data-v-1cc3240b]{flex-shrink:0}@media(max-width:1024px){.topbar-sem[data-v-1cc3240b]{display:none}}@media(max-width:768px){.topbar-academy[data-v-1cc3240b]{display:none}}@media(max-width:640px){.topbar[data-v-1cc3240b]{height:50px}.topbar-logo[data-v-1cc3240b]{font-size:.92rem;gap:7px}.topbar-logo svg[data-v-1cc3240b]{width:22px;height:22px}#clock[data-v-1cc3240b],.topbar-logout-label[data-v-1cc3240b]{display:none}.topbar-logout[data-v-1cc3240b]{padding:5px 8px}}.role-bar[data-v-0fcff708]{background:var(--si-s800);display:flex;gap:2px;padding:0 var(--pad);border-bottom:2px solid var(--si-navy);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.role-bar[data-v-0fcff708]::-webkit-scrollbar{display:none}.role-tab[data-v-0fcff708]{display:flex;align-items:center;gap:6px;padding:12px 18px;color:var(--si-s400);font-size:.82rem;font-weight:600;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;-webkit-user-select:none;user-select:none;white-space:nowrap;flex-shrink:0}.role-tab[data-v-0fcff708]:hover{color:var(--si-white)}.role-tab.active[data-v-0fcff708]{color:var(--si-white);border-bottom-color:var(--si-teal)}.role-tab .ri[data-v-0fcff708]{font-size:.95rem}.tab-label[data-v-0fcff708]{display:inline}@media(max-width:640px){.role-tab[data-v-0fcff708]{padding:10px 12px;font-size:.75rem;gap:4px}}@media(max-width:400px){.tab-label[data-v-0fcff708]{display:none}.role-tab[data-v-0fcff708]{padding:10px}}.dash-header-meta[data-v-df983e83]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.refresh-btn[data-v-df983e83]{display:inline-flex;align-items:center;gap:6px;background:var(--si-white);color:var(--si-blue);border:1px solid var(--si-s200);border-radius:8px;padding:5px 12px;font-size:.76rem;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:var(--shadow)}.refresh-btn[data-v-df983e83]:hover:not(:disabled){border-color:var(--si-blue)}.refresh-btn[data-v-df983e83]:disabled{opacity:.6;cursor:default}.refresh-icon[data-v-df983e83]{font-size:.95rem;line-height:1;display:inline-block}.refresh-icon.spinning[data-v-df983e83]{animation:refresh-spin-df983e83 .8s linear infinite}@keyframes refresh-spin-df983e83{to{transform:rotate(360deg)}}.kpi-card[data-v-d2b87d7d]{background:var(--si-white);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow);border-top:4px solid var(--si-blue);display:flex;flex-direction:column;gap:5px;transition:transform .15s;min-width:0}.kpi-card[data-v-d2b87d7d]:hover{transform:translateY(-2px)}.kpi-card.teal[data-v-d2b87d7d]{border-top-color:var(--si-teal)}.kpi-card.mint[data-v-d2b87d7d]{border-top-color:var(--si-mint)}.kpi-card.amber[data-v-d2b87d7d]{border-top-color:var(--si-amber)}.kpi-card.rose[data-v-d2b87d7d]{border-top-color:var(--si-rose)}.kpi-card.purple[data-v-d2b87d7d]{border-top-color:var(--si-purple)}.kpi-label[data-v-d2b87d7d]{font-size:.68rem;font-weight:700;color:var(--si-s600);text-transform:uppercase;letter-spacing:.6px}.kpi-value[data-v-d2b87d7d]{font-size:clamp(1.35rem,3vw,1.65rem);font-weight:800;color:var(--si-navy);line-height:1.1}.kpi-sub[data-v-d2b87d7d]{font-size:.72rem;color:var(--si-s400)}.kpi-delta-row[data-v-d2b87d7d]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.kpi-delta[data-v-d2b87d7d]{font-size:.7rem;font-weight:700;padding:2px 7px;border-radius:20px;display:inline-block;width:fit-content}.kpi-delta.up[data-v-d2b87d7d]{background:#dcfce7;color:#15803d}.kpi-delta.down[data-v-d2b87d7d]{background:#fee2e2;color:#b91c1c}.kpi-delta.warn[data-v-d2b87d7d]{background:#fef9c3;color:#92400e}.kpi-toggle[data-v-d2b87d7d]{padding:0;background:none;border:none;cursor:pointer;font-size:.7rem;font-weight:700;color:var(--si-blue);width:fit-content}.kpi-toggle[data-v-d2b87d7d]:hover{text-decoration:underline}.kpi-modal-backdrop[data-v-d2b87d7d]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;animation:kpi-fade-d2b87d7d .12s ease-out}.kpi-modal[data-v-d2b87d7d]{background:var(--si-white);border-radius:var(--r);box-shadow:0 20px 50px #0f172a4d;width:100%;max-width:340px;padding:18px 20px 20px;animation:kpi-pop-d2b87d7d .14s ease-out}.kpi-modal-head[data-v-d2b87d7d]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.kpi-modal-title[data-v-d2b87d7d]{font-size:.68rem;font-weight:700;color:var(--si-s600);text-transform:uppercase;letter-spacing:.6px}.kpi-modal-total[data-v-d2b87d7d]{font-size:1.5rem;font-weight:800;color:var(--si-navy);line-height:1.2}.kpi-modal-close[data-v-d2b87d7d]{background:none;border:none;cursor:pointer;font-size:1.5rem;line-height:1;color:var(--si-s400);padding:0 2px}.kpi-modal-close[data-v-d2b87d7d]:hover{color:var(--si-navy)}.kpi-breakdown[data-v-d2b87d7d]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.kpi-breakdown-row[data-v-d2b87d7d]{display:flex;align-items:center;gap:9px;font-size:.85rem;padding-bottom:10px;border-bottom:1px solid var(--si-s100)}.kpi-breakdown-row[data-v-d2b87d7d]:last-child{padding-bottom:0;border-bottom:none}.kpi-breakdown-dot[data-v-d2b87d7d]{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--si-s400)}.kpi-breakdown-dot.up[data-v-d2b87d7d]{background:#15803d}.kpi-breakdown-dot.warn[data-v-d2b87d7d]{background:#b45309}.kpi-breakdown-dot.down[data-v-d2b87d7d]{background:#b91c1c}.kpi-breakdown-dot.neutral[data-v-d2b87d7d]{background:var(--si-s400)}.kpi-breakdown-label[data-v-d2b87d7d]{color:var(--si-s600);font-weight:600}.kpi-breakdown-value[data-v-d2b87d7d]{margin-left:auto;font-weight:800;color:var(--si-navy)}@keyframes kpi-fade-d2b87d7d{0%{opacity:0}to{opacity:1}}@keyframes kpi-pop-d2b87d7d{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.kpi-skeleton[data-v-d2b87d7d]{border-radius:6px;background:linear-gradient(90deg,var(--si-s100) 25%,var(--si-s200) 37%,var(--si-s100) 63%);background-size:400% 100%;animation:kpi-shimmer-d2b87d7d 1.3s ease-in-out infinite}.kpi-skeleton-value[data-v-d2b87d7d]{height:1.5rem;width:70%;margin:4px 0}.kpi-skeleton-chip[data-v-d2b87d7d]{height:.85rem;width:45%}@keyframes kpi-shimmer-d2b87d7d{0%{background-position:100% 0}to{background-position:0 0}}@media(max-width:640px){.kpi-value[data-v-d2b87d7d]{font-size:1.3rem}}.panel[data-v-66e2bf21]{background:var(--si-white);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;overflow:hidden;min-width:0}.panel-title[data-v-66e2bf21]{font-size:.78rem;font-weight:700;color:var(--si-s700);text-transform:uppercase;letter-spacing:.6px;margin-bottom:13px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px}.panel-title[data-v-66e2bf21] .panel-badge{font-size:.65rem;background:var(--si-s100);color:var(--si-s600);padding:2px 8px;border-radius:20px;font-weight:600;text-transform:none;letter-spacing:0;white-space:nowrap}.panel-title[data-v-66e2bf21] .panel-badge.alert{background:#fee2e2;color:var(--si-rose)}.panel-title[data-v-66e2bf21] .panel-badge.ok{background:#dcfce7;color:#15803d}.panel-title[data-v-66e2bf21] .panel-badge.warn{background:#fef9c3;color:#92400e}@media(max-width:640px){.panel[data-v-66e2bf21]{padding:14px}.panel-title[data-v-66e2bf21]{font-size:.72rem}}.panel-loader[data-v-90e05fe6]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;min-height:160px}.panel-spinner[data-v-90e05fe6]{width:32px;height:32px;border:3px solid var(--si-s200);border-top-color:var(--si-blue);border-radius:50%;animation:panel-spin-90e05fe6 .8s linear infinite}@keyframes panel-spin-90e05fe6{to{transform:rotate(360deg)}}.panel-loader-text[data-v-90e05fe6]{font-size:.75rem;font-weight:600;color:var(--si-s500)}.dept-body[data-v-0bb365e0]{min-height:200px}.panel-empty[data-v-0bb365e0]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:160px;font-size:.8rem;color:var(--si-s400)}.dashboard-full[data-v-e40857bc]{max-width:none}.cons-header-meta[data-v-e40857bc]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.cons-year[data-v-e40857bc]{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:600;color:var(--si-s600)}.cons-year select[data-v-e40857bc]{background:var(--si-white);color:var(--si-s900);border:1px solid var(--si-s200);border-radius:8px;padding:5px 10px;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;outline:none}.cons-year select[data-v-e40857bc]:hover:not(:disabled){border-color:var(--si-blue)}.cons-year select[data-v-e40857bc]:disabled{opacity:.6;cursor:default}.refresh-btn[data-v-e40857bc]{display:inline-flex;align-items:center;gap:6px;background:var(--si-white);color:var(--si-blue);border:1px solid var(--si-s200);border-radius:8px;padding:6px 12px;font-size:.76rem;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:var(--shadow)}.refresh-btn[data-v-e40857bc]:hover:not(:disabled){border-color:var(--si-blue)}.refresh-btn[data-v-e40857bc]:disabled{opacity:.6;cursor:default}.refresh-icon[data-v-e40857bc]{font-size:.95rem;line-height:1;display:inline-block}.refresh-icon.spinning[data-v-e40857bc]{animation:refresh-spin-e40857bc .8s linear infinite}@keyframes refresh-spin-e40857bc{to{transform:rotate(360deg)}}.cons-empty[data-v-e40857bc]{display:flex;align-items:center;justify-content:center;min-height:200px;font-size:.85rem;color:var(--si-s400)}.cons-charts[data-v-e40857bc]{margin-top:18px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--pad)}.cons-chart[data-v-e40857bc]{position:relative;min-height:320px}@media(max-width:1200px){.cons-charts[data-v-e40857bc]{grid-template-columns:1fr}}.cons-table-wrap[data-v-e40857bc]{width:100%;overflow-x:auto}.cons-table[data-v-e40857bc]{width:100%;border-collapse:collapse;font-size:.78rem;min-width:1100px}.cons-table th[data-v-e40857bc],.cons-table td[data-v-e40857bc]{border:1px solid var(--si-s200);padding:7px 9px;white-space:nowrap}.cons-table thead th[data-v-e40857bc]{background:var(--si-s100);color:var(--si-s700);font-weight:700;font-size:.72rem;vertical-align:middle}.cons-table thead th.group[data-v-e40857bc]{text-transform:none;letter-spacing:0}.cons-table tbody td[data-v-e40857bc]{color:var(--si-s700)}.cons-table tbody tr:hover td[data-v-e40857bc]{background:var(--si-s100)}.cons-table tfoot td[data-v-e40857bc]{background:var(--si-s100);font-weight:800;color:var(--si-navy);border-top:2px solid var(--si-s200)}.cons-table .c[data-v-e40857bc]{text-align:center}.cons-table .l[data-v-e40857bc]{text-align:left}.cons-table .r[data-v-e40857bc]{text-align:right}.cons-table .danger[data-v-e40857bc]{color:var(--si-rose)}.cons-table .ok[data-v-e40857bc]{color:var(--si-mint)}.cons-table .warn[data-v-e40857bc]{color:var(--si-amber)}.cons-table .accent[data-v-e40857bc]{color:var(--si-blue)}tfoot td[data-v-2a64a813]{font-weight:800;color:var(--si-navy);border-top:2px solid var(--si-s200);border-bottom:none}tfoot tr:hover td[data-v-2a64a813]{background:transparent}.panel-head-left[data-v-7a70bd9f]{display:inline-flex;align-items:center;gap:6px}.panel-head-left[data-v-7a70bd9f] .panel-badge,.panel-head-left .panel-badge[data-v-7a70bd9f]{font-size:.65rem;padding:2px 8px;border-radius:20px;font-weight:600;text-transform:none;letter-spacing:0;white-space:nowrap;background:#dcfce7;color:#15803d}.range-select[data-v-7a70bd9f]{font-family:inherit;font-size:.68rem;font-weight:600;color:var(--si-s700);background:var(--si-white);border:1px solid var(--si-s200);border-radius:8px;padding:4px 26px 4px 10px;cursor:pointer;text-transform:none;letter-spacing:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%2364748b' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}.range-select[data-v-7a70bd9f]:hover{border-color:var(--si-s400)}.range-select[data-v-7a70bd9f]:focus{outline:none;border-color:var(--si-blue)}.custom-range-row[data-v-7a70bd9f]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--si-s100);border-radius:8px;padding:10px 12px;margin-bottom:12px}.custom-range-field[data-v-7a70bd9f]{display:flex;align-items:center;gap:8px}.custom-range-field span[data-v-7a70bd9f]{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--si-s600)}.custom-range-field input[type=date][data-v-7a70bd9f]{font-family:inherit;font-size:.78rem;color:var(--si-s700);background:var(--si-white);border:1px solid var(--si-s200);border-radius:8px;padding:6px 10px}.custom-range-field input[type=date][data-v-7a70bd9f]:focus{outline:none;border-color:var(--si-blue)}.custom-range-apply[data-v-7a70bd9f]{font-family:inherit;font-size:.78rem;font-weight:700;color:var(--si-white);background:var(--si-blue);border:none;border-radius:8px;padding:7px 16px;cursor:pointer}.custom-range-apply[data-v-7a70bd9f]:hover:not(:disabled){background:var(--si-navy)}.custom-range-apply[data-v-7a70bd9f]:disabled{opacity:.5;cursor:not-allowed}.panel-empty[data-v-7a70bd9f]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:160px;font-size:.8rem;color:var(--si-s400)}.dash-error[data-v-7a70bd9f]{display:flex;align-items:center;justify-content:center;min-height:40vh;font-size:.85rem;font-weight:600;color:var(--si-rose)}.panel-title[data-v-32409687]{font-size:.78rem;font-weight:700;color:var(--si-s700);text-transform:uppercase;letter-spacing:.6px;margin-bottom:13px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px}.legend[data-v-32409687]{display:flex;gap:8px;flex-wrap:wrap;font-size:.65rem;font-weight:400;text-transform:none;letter-spacing:0}.legend-item[data-v-32409687]{display:flex;align-items:center;gap:3px}.legend-swatch[data-v-32409687]{width:10px;height:10px;border-radius:2px;display:inline-block}.exam-hub-wrap[data-v-32409687]{overflow-x:auto;-webkit-overflow-scrolling:touch}.exam-hub-inner[data-v-32409687]{min-width:560px}.hub-row[data-v-32409687]{display:grid;grid-template-columns:120px repeat(6,1fr);gap:5px;margin-bottom:5px}.hub-head[data-v-32409687]{font-size:.65rem;font-weight:700;color:var(--si-s500);text-transform:uppercase;letter-spacing:.4px}.hub-name[data-v-32409687]{font-size:.72rem;font-weight:700;color:var(--si-navy);padding:7px 4px;display:flex;align-items:center}.exam-cell[data-v-32409687]{background:var(--si-s100);border-radius:6px;padding:7px 4px;text-align:center;cursor:pointer;transition:transform .12s;border:1px solid transparent;font-size:.7rem}.exam-cell[data-v-32409687]:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.exam-cell.done[data-v-32409687]{background:#dcfce7;border-color:#86efac;color:#15803d}.exam-cell.ongoing[data-v-32409687]{background:#dbeafe;border-color:#93c5fd;color:#1d4ed8}.exam-cell.pending[data-v-32409687]{background:#fef9c3;border-color:#fde047;color:#92400e}.exam-cell.conflict[data-v-32409687]{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.exam-cell .ec-label[data-v-32409687]{font-weight:700;font-size:.62rem;display:block}.room-grid[data-v-2d5d5797]{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.room-card[data-v-2d5d5797]{border-radius:8px;padding:9px 6px;text-align:center;font-weight:700;font-size:.73rem}.room-card.avail[data-v-2d5d5797]{background:#dcfce7;color:#15803d}.room-card.busy[data-v-2d5d5797]{background:#fee2e2;color:#b91c1c}.room-card.part[data-v-2d5d5797]{background:#fef9c3;color:#92400e}.room-card .room-name[data-v-2d5d5797]{font-size:.68rem;display:block;font-weight:800}.room-card .room-cap[data-v-2d5d5797]{font-size:.6rem;font-weight:400;opacity:.8}.room-legend[data-v-e13dcac1]{display:flex;gap:14px;margin-bottom:12px;font-size:.72rem}.room-legend .num[data-v-e13dcac1]{font-weight:700}.room-legend .num.mint[data-v-e13dcac1]{color:var(--si-mint)}.room-legend .num.rose[data-v-e13dcac1]{color:var(--si-rose)}.room-legend .num.amber[data-v-e13dcac1]{color:var(--si-amber)}.dash-loader[data-v-97dad7bf]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:60vh}.spinner[data-v-97dad7bf]{width:44px;height:44px;border:4px solid var(--si-s200);border-top-color:var(--si-blue);border-radius:50%;animation:spin-97dad7bf .8s linear infinite}@keyframes spin-97dad7bf{to{transform:rotate(360deg)}}.dash-loader-text[data-v-97dad7bf]{font-size:.85rem;font-weight:600;color:var(--si-s600);margin:0}.dash-error[data-v-97dad7bf]{display:flex;align-items:center;justify-content:center;min-height:40vh;font-size:.85rem;font-weight:600;color:var(--si-rose)}.pipeline-step[data-v-9d80d839]{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--si-s100);font-size:.78rem}.pipeline-step[data-v-9d80d839]:last-child{border-bottom:none}.pipe-num[data-v-9d80d839]{font-size:1.1rem;font-weight:800;color:var(--si-navy);min-width:36px}.pipe-label[data-v-9d80d839]{flex:1;color:var(--si-s700)}.pipe-bar-bg[data-v-9d80d839]{width:100px;background:var(--si-s100);border-radius:20px;height:6px;overflow:hidden;flex-shrink:0}.pipe-bar[data-v-9d80d839]{height:100%;border-radius:20px}@media(max-width:640px){.pipe-bar-bg[data-v-9d80d839]{width:60px}}.pipeline-intro[data-v-75307591]{margin-bottom:10px;font-size:.72rem;color:var(--si-s600)}.panel-empty[data-v-75307591]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:160px;font-size:.8rem;color:var(--si-s400)}.callback-page[data-v-07bd5410]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--si-s100)}.callback-box[data-v-07bd5410]{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:40px;background:var(--si-white);border-radius:var(--r);box-shadow:var(--shadow);max-width:360px;width:90%}@keyframes spin-07bd5410{to{transform:rotate(360deg)}}.spinner[data-v-07bd5410]{width:40px;height:40px;color:var(--si-blue);animation:spin-07bd5410 1s linear infinite}.error-icon[data-v-07bd5410]{width:48px;height:48px;color:var(--si-rose)}.status-text[data-v-07bd5410]{font-size:.9rem;font-weight:600;color:var(--si-s700)}.status-hint[data-v-07bd5410]{font-size:.75rem;color:var(--si-s400)}.error-title[data-v-07bd5410]{font-size:1rem;font-weight:700;color:var(--si-rose)}.error-message[data-v-07bd5410]{font-size:.82rem;color:var(--si-s600);max-width:280px}.tip-anchor[data-v-adc6b3a3]{display:inline-flex;min-width:0}.tip{position:fixed;z-index:400;max-width:290px;padding:10px 12px;border-radius:10px;background:var(--si-navy);color:var(--si-white);box-shadow:0 8px 28px #0d1b4057;font-size:.72rem;line-height:1.45;pointer-events:none;visibility:hidden;opacity:0;transform:translateY(3px);transition:opacity .13s ease,transform .13s ease}.tip.placed{visibility:visible;opacity:1;transform:translateY(0)}.tip-heading{font-weight:700;font-size:.74rem;letter-spacing:-.1px;margin-bottom:7px;padding-bottom:7px;border-bottom:1px solid rgba(255,255,255,.16)}.tip-rows{margin:0}.tip-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px}.tip-row+.tip-row{margin-top:3px}.tip-row dt{color:var(--si-s400);white-space:nowrap}.tip-row dd{margin:0;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.tip-note{margin:8px 0 0;padding-top:7px;border-top:1px solid rgba(255,255,255,.16);color:var(--si-s400);font-size:.69rem}.tip-arrow{position:absolute;width:9px;height:9px;background:var(--si-navy);transform:translate(-50%) rotate(45deg);bottom:-4px}.tip.below .tip-arrow{bottom:auto;top:-4px}@media(prefers-reduced-motion:reduce){.tip{transition:none}}.level-status[data-v-acc2634c]{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-bottom:10px}.panel-badge[data-v-acc2634c]{font-size:.65rem;background:var(--si-s100);color:var(--si-s600);padding:2px 8px;border-radius:20px;font-weight:600;white-space:nowrap}.panel-badge.ok[data-v-acc2634c]{background:#dcfce7;color:#15803d}.stat-chip[data-v-acc2634c]{font-size:.68rem;font-weight:700;color:var(--si-blue);background:#eff6ff;padding:2px 9px;border-radius:20px;white-space:nowrap}.level-chips[data-v-acc2634c]{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--si-s100)}.level-chip[data-v-acc2634c]{display:inline-flex;align-items:center;gap:7px;font-family:inherit;font-size:.76rem;font-weight:600;color:var(--si-s700);background:var(--si-s100);border:1.5px solid transparent;border-radius:20px;padding:5px 12px 5px 8px;cursor:pointer;transition:border-color .15s,background .15s,transform .1s}.level-chip[data-v-acc2634c]:hover{background:var(--si-s200)}.level-chip[data-v-acc2634c]:active{transform:scale(.97)}.level-chip.active[data-v-acc2634c]{border-color:currentColor;background:var(--si-white);box-shadow:var(--shadow)}.chip-dot[data-v-acc2634c]{width:9px;height:9px;border-radius:50%;flex-shrink:0}.chip-pct[data-v-acc2634c]{color:var(--si-navy);font-weight:800}.chip-coverage[data-v-acc2634c]{font-size:.68rem;font-weight:700;color:var(--si-s600);background:var(--si-white);border-radius:20px;padding:1px 7px;white-space:nowrap}.level-chip.active .chip-coverage[data-v-acc2634c]{background:var(--si-s100)}.coverage-chip[data-v-acc2634c]{color:var(--si-s700);background:var(--si-s100)}.panel-empty[data-v-acc2634c]{display:flex;align-items:center;justify-content:center;width:100%;min-height:120px;font-size:.8rem;color:var(--si-s400);text-align:center}.report-header[data-v-716f4ea5]{display:flex;align-items:flex-start;gap:14px;margin-bottom:20px}.report-header-icon[data-v-716f4ea5]{width:44px;height:44px;flex-shrink:0;border-radius:12px;background:linear-gradient(135deg,var(--si-blue),var(--si-teal));display:flex;align-items:center;justify-content:center;font-size:1.4rem;box-shadow:var(--shadow)}.report-header h1[data-v-716f4ea5]{font-size:clamp(1.1rem,3vw,1.35rem);font-weight:700;color:var(--si-navy);display:inline-flex;align-items:center;gap:8px}.report-header p[data-v-716f4ea5]{font-size:.8rem;color:var(--si-s600);margin-top:3px}.live-dot[data-v-716f4ea5]{width:8px;height:8px;border-radius:50%;background:var(--si-mint);display:inline-block;animation:pulse-716f4ea5 2s infinite}@keyframes pulse-716f4ea5{0%,to{opacity:1}50%{opacity:.35}}.panel-badge[data-v-716f4ea5]{font-size:.65rem;background:var(--si-s100);color:var(--si-s600);padding:2px 8px;border-radius:20px;font-weight:600;white-space:nowrap}.panel-badge.ok[data-v-716f4ea5]{background:#dcfce7;color:#15803d}.panel-badge.coverage[data-v-716f4ea5]{background:#eff6ff;color:var(--si-blue)}.medium-row[data-v-716f4ea5]{cursor:pointer}.medium-row.active td[data-v-716f4ea5]{background:#eff6ff}.medium-row.active td[data-v-716f4ea5]:first-child{font-weight:700;color:var(--si-blue)}.medium-pct-cell[data-v-716f4ea5]{display:flex;align-items:center;justify-content:flex-end;gap:10px}.medium-pct-bar-bg[data-v-716f4ea5]{width:120px;height:7px;border-radius:20px;background:var(--si-s100);overflow:hidden;flex-shrink:0}.medium-pct-bar[data-v-716f4ea5]{display:block;height:100%;border-radius:20px;transition:width .3s ease}.medium-pct-value[data-v-716f4ea5]{font-weight:700;color:var(--si-navy);width:42px;text-align:right;flex-shrink:0}.filter-bar[data-v-716f4ea5]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:18px}.filter-field[data-v-716f4ea5]{display:flex;flex-direction:column;gap:5px}.filter-label[data-v-716f4ea5]{font-size:.7rem;font-weight:700;color:var(--si-s600);text-transform:uppercase;letter-spacing:.5px}.filter-field input[data-v-716f4ea5],.filter-field select[data-v-716f4ea5]{font-family:inherit;font-size:.85rem;font-weight:500;color:var(--si-navy);border:1px solid var(--si-s200);border-radius:7px;padding:7px 11px;background:var(--si-white);transition:border-color .15s}.filter-field input[data-v-716f4ea5]:focus,.filter-field select[data-v-716f4ea5]:focus{outline:none;border-color:var(--si-blue)}.quick-range[data-v-716f4ea5]{display:flex;gap:6px;margin-left:auto}.quick-btn[data-v-716f4ea5]{font-family:inherit;font-size:.76rem;font-weight:600;color:var(--si-s600);background:var(--si-s100);border:1px solid var(--si-s200);border-radius:7px;padding:7px 12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.quick-btn[data-v-716f4ea5]:hover:not(:disabled){border-color:var(--si-blue);color:var(--si-blue)}.quick-btn.active[data-v-716f4ea5]{background:var(--si-blue);color:var(--si-white);border-color:var(--si-blue)}.quick-btn[data-v-716f4ea5]:disabled{opacity:.45;cursor:not-allowed}.lecture-table[data-v-716f4ea5]{max-height:560px;overflow-y:auto}.lecture-table table[data-v-716f4ea5]{min-width:980px}.lecture-table thead th[data-v-716f4ea5]{position:sticky;top:0;z-index:1}.lecture-table tbody tr:nth-child(2n) td[data-v-716f4ea5]{background:var(--si-s100)}.lecture-table tbody tr:hover td[data-v-716f4ea5]{background:#eff6ff}.nowrap[data-v-716f4ea5]{white-space:nowrap}.subject-cell[data-v-716f4ea5]{display:flex;flex-direction:column;gap:2px}.subject-code[data-v-716f4ea5]{font-family:Courier New,monospace;font-size:.68rem;font-weight:700;color:var(--si-blue);background:#eff6ff;border-radius:4px;padding:1px 6px;width:fit-content}.faculty-cell[data-v-716f4ea5]{display:flex;align-items:center;gap:8px}.faculty-avatar[data-v-716f4ea5]{width:24px;height:24px;border-radius:50%;background:var(--si-navy);color:var(--si-white);font-size:.62rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.num-present[data-v-716f4ea5]{text-align:right;font-weight:700;color:#15803d}.num-absent[data-v-716f4ea5]{text-align:right;font-weight:700;color:#b91c1c}.num-total[data-v-716f4ea5]{text-align:right;font-weight:800;color:var(--si-navy)}.num-pct[data-v-716f4ea5]{text-align:right;font-weight:800;color:var(--si-navy);white-space:nowrap}.panel-empty[data-v-716f4ea5]{display:flex;align-items:center;justify-content:center;width:100%;min-height:120px;font-size:.8rem;color:var(--si-s400);text-align:center}.panel-error[data-v-716f4ea5]{color:var(--si-rose);font-weight:600}@media(max-width:640px){.quick-range[data-v-716f4ea5]{margin-left:0;width:100%}.quick-btn[data-v-716f4ea5]{flex:1}}:root{--si-navy: #0D1B40;--si-blue: #1A56DB;--si-teal: #0EA5E9;--si-mint: #10B981;--si-amber: #F59E0B;--si-rose: #EF4444;--si-purple: #8B5CF6;--si-s900: #0F172A;--si-s800: #1E293B;--si-s700: #334155;--si-s600: #475569;--si-s500: #64748B;--si-s400: #94A3B8;--si-s200: #E2E8F0;--si-s100: #F1F5F9;--si-white: #FFFFFF;--r: 10px;--shadow: 0 4px 24px rgba(13, 27, 64, .15);--pad: 24px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--si-s100);color:var(--si-s900);min-height:100vh;overflow-x:hidden}.dashboard{padding:var(--pad) var(--pad) 36px;max-width:1600px;margin:0 auto}.dash-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:20px}.dash-header h1{font-size:clamp(1.1rem,3vw,1.35rem);font-weight:700;color:var(--si-navy)}.dash-header p{font-size:.8rem;color:var(--si-s600);margin-top:3px}.timestamp{font-size:.75rem;color:var(--si-s400);margin-top:4px}.kpi-row{display:grid;gap:14px;margin-bottom:18px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.panel-row{display:grid;gap:14px;margin-bottom:18px}.g-1{grid-template-columns:1fr}.g-2{grid-template-columns:repeat(2,1fr)}.g-3{grid-template-columns:repeat(3,1fr)}.g-6-4{grid-template-columns:6fr 4fr}.g-4-6{grid-template-columns:4fr 6fr}.g-7-3{grid-template-columns:7fr 3fr}.panel-title{font-size:.78rem;font-weight:700;color:var(--si-s700);text-transform:uppercase;letter-spacing:.6px;margin-bottom:13px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px}.panel-badge{font-size:.65rem;background:var(--si-s100);color:var(--si-s600);padding:2px 8px;border-radius:20px;font-weight:600;text-transform:none;letter-spacing:0;white-space:nowrap}.panel-badge.alert{background:#fee2e2;color:var(--si-rose)}.panel-badge.ok{background:#dcfce7;color:#15803d}.panel-badge.warn{background:#fef9c3;color:#92400e}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:.78rem;min-width:360px}th{background:var(--si-s100);color:var(--si-s600);font-weight:700;text-align:left;padding:7px 10px;font-size:.68rem;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}td{padding:8px 10px;border-bottom:1px solid var(--si-s100);color:var(--si-s700);vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:var(--si-s100)}.pill{display:inline-block;padding:2px 8px;border-radius:20px;font-size:.66rem;font-weight:700;white-space:nowrap}.pill-green{background:#dcfce7;color:#15803d}.pill-red{background:#fee2e2;color:#b91c1c}.pill-amber{background:#fef9c3;color:#92400e}.pill-blue{background:#dbeafe;color:#1d4ed8}.pill-purple{background:#ede9fe;color:#6d28d9}.pill-slate{background:#f1f5f9;color:#475569}.pill-teal{background:#e0f2fe;color:#0369a1}.progress-item{margin-bottom:10px}.progress-label{display:flex;justify-content:space-between;font-size:.73rem;color:var(--si-s700);margin-bottom:4px}.progress-bar-bg{background:var(--si-s100);border-radius:20px;height:7px;overflow:hidden}.progress-bar{height:100%;border-radius:20px;transition:width .6s ease}.alert-item{display:flex;gap:9px;align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--si-s100);font-size:.76rem}.alert-item:last-child{border-bottom:none}.alert-dot{width:8px;height:8px;border-radius:50%;margin-top:4px;flex-shrink:0}.alert-dot.red{background:var(--si-rose)}.alert-dot.amber{background:var(--si-amber)}.alert-dot.green{background:var(--si-mint)}.alert-dot.blue{background:var(--si-teal)}.alert-text{color:var(--si-s700);line-height:1.4}.alert-time{color:var(--si-s400);font-size:.66rem;margin-top:2px}.mini-stat-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.mini-stat{flex:1;min-width:65px;background:var(--si-s100);border-radius:8px;padding:9px 7px;text-align:center}.mini-stat-val{font-size:1.15rem;font-weight:800;color:var(--si-navy)}.mini-stat-lbl{font-size:.6rem;color:var(--si-s600);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}.scroll-body{max-height:240px;overflow-y:auto}.scroll-body::-webkit-scrollbar{width:4px}.scroll-body::-webkit-scrollbar-thumb{background:var(--si-s200);border-radius:4px}.donut-wrap{position:relative;display:flex;justify-content:center;align-items:center}.chart-container{position:relative}@media(max-width:1024px){:root{--pad: 16px}.g-3{grid-template-columns:repeat(2,1fr)}.g-6-4,.g-4-6,.g-7-3{grid-template-columns:1fr}.g-2{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){:root{--pad: 12px}.kpi-row{grid-template-columns:repeat(2,1fr);gap:10px}.g-2,.g-3,.g-6-4,.g-4-6,.g-7-3{grid-template-columns:1fr}.dash-header h1{font-size:1rem}.dash-header p{font-size:.75rem}}@media(max-width:400px){.kpi-row{grid-template-columns:1fr 1fr}}
