.toast-container[data-v-743fd7b0]{z-index:4000;flex-direction:column;gap:12px;display:flex;position:fixed;top:90px;right:22px}.toast[data-v-743fd7b0]{border:1px solid var(--color-border);background:#fff;border-radius:14px;justify-content:space-between;align-items:center;gap:14px;min-width:280px;max-width:420px;padding:14px 16px;font-weight:600;animation:.25s slideIn-743fd7b0;display:flex;box-shadow:0 12px 30px #0000001f}.toast.success[data-v-743fd7b0]{border-left:5px solid var(--color-success);color:var(--color-success)}.toast.error[data-v-743fd7b0]{border-left:5px solid var(--color-danger);color:var(--color-danger)}.toast.info[data-v-743fd7b0]{border-left:5px solid var(--color-primary);color:var(--color-primary-dark)}.toast-close[data-v-743fd7b0]{cursor:pointer;color:inherit;background:0 0;border:none;font-size:22px}@keyframes slideIn-743fd7b0{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@media (width<=700px){.toast-container[data-v-743fd7b0]{top:80px;left:16px;right:16px}.toast[data-v-743fd7b0]{width:100%;min-width:auto}}.login-page[data-v-e0f0d5fa]{background:linear-gradient(#f8f2f7 0%,#f4f1f7 100%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card[data-v-e0f0d5fa]{border:1px solid var(--color-border);background:#fff;border-radius:20px;width:100%;max-width:480px;padding:32px;box-shadow:0 10px 30px #00000014}.login-brand[data-v-e0f0d5fa]{text-align:center;margin-bottom:24px}.login-logo[data-v-e0f0d5fa]{object-fit:contain;width:90px;height:90px;margin:0 auto 12px}.login-brand h1[data-v-e0f0d5fa]{color:var(--color-primary-dark);margin-bottom:6px}.login-brand p[data-v-e0f0d5fa]{color:var(--color-text-light)}.mode-tabs[data-v-e0f0d5fa]{border-bottom:1px solid var(--color-border);gap:4px;margin-bottom:24px;display:flex}.mode-tab[data-v-e0f0d5fa]{color:var(--color-text-light);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px 12px;font-size:13px;font-weight:800;transition:color .15s,border-color .15s}.mode-tab[data-v-e0f0d5fa]:hover{color:var(--color-primary-dark)}.mode-tab.active[data-v-e0f0d5fa]{color:var(--color-primary-dark);border-bottom-color:var(--color-primary)}.login-btn[data-v-e0f0d5fa]{width:100%;margin-top:8px}.forgot-link[data-v-e0f0d5fa]{width:100%;color:var(--color-primary);cursor:pointer;text-align:center;background:0 0;border:none;margin-top:14px;font-size:13px;font-weight:700;display:block}.forgot-link[data-v-e0f0d5fa]:hover{text-decoration:underline}.forgot-intro[data-v-e0f0d5fa]{color:var(--color-text-light);margin-bottom:20px;font-size:14px;line-height:1.5}.form-error[data-v-e0f0d5fa]{color:var(--color-danger);text-align:center;margin-top:14px;font-size:14px;font-weight:600}.register-note[data-v-e0f0d5fa]{color:#7a6200;background:#fef9ec;border:1px solid #f0e090;border-radius:10px;margin-bottom:20px;padding:12px 14px;font-size:13px;line-height:1.5}.success-box[data-v-e0f0d5fa]{color:#1a6630;background:#e8f8ed;border:1px solid #a8dab5;border-radius:10px;padding:16px;font-size:14px;font-weight:600;line-height:1.6}.success-box p[data-v-e0f0d5fa]{margin:0 0 12px}.resend-row[data-v-e0f0d5fa]{align-items:center;gap:10px;font-size:13px;font-weight:400;display:flex}.btn-sm[data-v-e0f0d5fa]{padding:6px 12px;font-size:13px}.input-pw-wrapper[data-v-e0f0d5fa]{position:relative}.input-pw-wrapper .input[data-v-e0f0d5fa]{width:100%;padding-right:44px}.pw-toggle[data-v-e0f0d5fa]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;align-items:center;padding:4px;transition:color .15s;display:flex;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.pw-toggle[data-v-e0f0d5fa]:hover{color:var(--color-primary-dark)}.pw-toggle svg[data-v-e0f0d5fa]{width:18px;height:18px}.notif-wrapper[data-v-b31b960d]{position:relative}.notif-btn[data-v-b31b960d]{border:1px solid var(--color-border);cursor:pointer;width:44px;height:44px;box-shadow:var(--shadow-soft);background:#fff;border-radius:999px;justify-content:center;align-items:center;transition:background .18s,border-color .18s;display:flex;position:relative}.notif-btn[data-v-b31b960d]:hover,.notif-btn.active[data-v-b31b960d]{background:var(--color-primary-soft);border-color:#6a1b5c40}.notif-icon[data-v-b31b960d]{width:20px;height:20px;color:var(--color-primary-dark)}.notif-badge[data-v-b31b960d]{background:var(--color-danger);color:#fff;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:900;display:flex;position:absolute;top:-4px;right:-4px}.notif-dropdown[data-v-b31b960d]{border:1px solid var(--color-border);z-index:2000;background:#fff;border-radius:18px;width:340px;position:absolute;top:calc(100% + 10px);right:0;overflow:hidden;box-shadow:0 16px 40px #00000024}.notif-header[data-v-b31b960d]{border-bottom:1px solid var(--color-border);color:var(--color-primary-dark);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.mark-read-btn[data-v-b31b960d]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:4px 8px;font-size:12px;font-weight:700;transition:background .15s}.mark-read-btn[data-v-b31b960d]:hover{background:var(--color-primary-soft)}.notif-empty[data-v-b31b960d]{text-align:center;color:var(--color-text-light);padding:28px 20px;font-size:14px}.notif-list[data-v-b31b960d]{max-height:400px;overflow-y:auto}.notif-item[data-v-b31b960d]{border-bottom:1px solid var(--color-border);align-items:flex-start;gap:12px;padding:13px 16px;transition:background .15s;display:flex;position:relative}.notif-item[data-v-b31b960d]:last-child{border-bottom:none}.notif-item.clickable[data-v-b31b960d]{cursor:pointer}.notif-item.clickable[data-v-b31b960d]:hover{background:var(--color-primary-soft)}.notif-item.unread[data-v-b31b960d]{background:#faf5fb}.notif-item.unread.clickable[data-v-b31b960d]:hover{background:var(--color-primary-soft)}.notif-type-icon[data-v-b31b960d]{flex-shrink:0;margin-top:1px;font-size:20px}.notif-content[data-v-b31b960d]{flex:1;min-width:0}.notif-content strong[data-v-b31b960d]{color:var(--color-primary-dark);margin-bottom:2px;font-size:13px;display:block}.notif-content p[data-v-b31b960d]{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;margin:0 0 4px;font-size:13px;overflow:hidden}.notif-content small[data-v-b31b960d]{color:var(--color-text-light);font-size:11px}.unread-dot[data-v-b31b960d]{background:var(--color-primary);border-radius:999px;flex-shrink:0;width:8px;height:8px;margin-top:4px}@media (width<=540px){.notif-dropdown[data-v-b31b960d]{top:var(--header-height);width:auto;max-height:calc(100dvh - var(--header-height) - 16px);border-radius:0 0 16px 16px;position:fixed;left:8px;right:8px;overflow-y:auto}}.gsearch[data-v-f29acc26]{width:100%;max-width:420px;position:relative}.gsearch-bar[data-v-f29acc26]{border:1.5px solid var(--color-border);cursor:text;background:#f7f4f9;border-radius:999px;align-items:center;gap:8px;height:40px;padding:0 12px 0 14px;transition:border-color .18s,box-shadow .18s,background .18s;display:flex}.gsearch-bar--active[data-v-f29acc26]{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 4px #6a1b5c17}.gsearch-icon[data-v-f29acc26]{color:var(--color-text-light);flex-shrink:0}.gsearch-bar--active .gsearch-icon[data-v-f29acc26]{color:var(--color-primary)}.gsearch-input[data-v-f29acc26]{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:14px;font-weight:600}.gsearch-input[data-v-f29acc26]::placeholder{color:var(--color-text-light);font-weight:500}.gsearch-kbd[data-v-f29acc26]{color:var(--color-text-light);border:1px solid var(--color-border);white-space:nowrap;background:#fff;border-radius:6px;flex-shrink:0;padding:2px 6px;font-family:inherit;font-size:10px;font-weight:700}.gsearch-clear[data-v-f29acc26]{background:var(--color-border);cursor:pointer;width:22px;height:22px;color:var(--color-text-light);border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s;display:flex}.gsearch-clear[data-v-f29acc26]:hover{background:#d0c8d8}.gsearch-dropdown[data-v-f29acc26]{border:1px solid var(--color-border);z-index:2000;background:#fff;border-radius:16px;max-height:440px;position:absolute;top:calc(100% + 8px);left:0;right:0;overflow:hidden auto;box-shadow:0 16px 48px #32143c24,0 4px 12px #0000000f}.gsearch-state[data-v-f29acc26]{color:var(--color-text-light);align-items:center;gap:8px;padding:16px 18px;font-size:13px;display:flex}.gsearch-hint[data-v-f29acc26]{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:20px 18px}.gsearch-spinner[data-v-f29acc26]{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite spin-f29acc26}@keyframes spin-f29acc26{to{transform:rotate(360deg)}}.gsearch-group[data-v-f29acc26]{border-bottom:1px solid var(--color-border)}.gsearch-group[data-v-f29acc26]:last-of-type{border-bottom:none}.gsearch-group-label[data-v-f29acc26]{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-light);align-items:center;gap:6px;padding:10px 16px 6px;font-size:10px;font-weight:900;display:flex}.gsearch-item[data-v-f29acc26]{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:9px 16px;transition:background .12s;display:flex}.gsearch-item[data-v-f29acc26]:hover,.gsearch-item--focused[data-v-f29acc26]{background:var(--color-primary-soft)}.gsearch-dot[data-v-f29acc26]{border-radius:50%;flex-shrink:0;width:8px;height:8px}.gsearch-dot--student[data-v-f29acc26]{background:#8b5cf6}.gsearch-dot--class[data-v-f29acc26]{background:#0ea5e9}.gsearch-dot--ann[data-v-f29acc26]{background:#f59e0b}.gsearch-dot--calendar[data-v-f29acc26]{background:#ec4899}.gsearch-dot--devoir[data-v-f29acc26]{background:#10b981}.gsearch-item-body[data-v-f29acc26]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.gsearch-item-name[data-v-f29acc26]{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.gsearch-item-sub[data-v-f29acc26]{color:var(--color-text-light);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.gsearch-arrow[data-v-f29acc26]{color:var(--color-text-light);opacity:0;flex-shrink:0;transition:opacity .12s}.gsearch-item:hover .gsearch-arrow[data-v-f29acc26],.gsearch-item--focused .gsearch-arrow[data-v-f29acc26]{opacity:1}.gsearch-footer[data-v-f29acc26]{border-top:1px solid var(--color-border);background:#faf8fb;gap:14px;padding:8px 16px;display:flex}.gsearch-footer span[data-v-f29acc26]{color:var(--color-text-light);align-items:center;gap:4px;font-size:10px;display:flex}.gsearch-footer kbd[data-v-f29acc26]{border:1px solid var(--color-border);background:#fff;border-radius:4px;padding:1px 4px;font-family:inherit;font-size:9px;font-weight:700}[data-v-f29acc26] .hl{color:#713f12;background:#fef08a;border-radius:2px;font-style:normal}.fade-enter-active[data-v-f29acc26],.fade-leave-active[data-v-f29acc26]{transition:opacity .15s}.fade-enter-from[data-v-f29acc26],.fade-leave-to[data-v-f29acc26]{opacity:0}.dropdown-enter-active[data-v-f29acc26]{transition:opacity .16s,transform .16s}.dropdown-leave-active[data-v-f29acc26]{transition:opacity .12s,transform .1s}.dropdown-enter-from[data-v-f29acc26]{opacity:0;transform:translateY(-6px)scale(.98)}.dropdown-leave-to[data-v-f29acc26]{opacity:0;transform:translateY(-4px)scale(.99)}@media (width<=768px){.gsearch[data-v-f29acc26]{flex:1;width:100%;min-width:0;max-width:100%}.gsearch-bar[data-v-f29acc26]{border-radius:999px;gap:6px;height:36px;padding:0 8px 0 10px}.gsearch-input[data-v-f29acc26]{font-size:13px}.gsearch-kbd[data-v-f29acc26],.gsearch-footer[data-v-f29acc26]{display:none}.gsearch-dropdown[data-v-f29acc26]{max-height:300px}}@media (width<=480px){.gsearch-dropdown[data-v-f29acc26]{top:var(--header-height);max-height:calc(100dvh - var(--header-height) - 16px);border-radius:0 0 16px 16px;position:fixed;left:8px;right:8px}}.app-header[data-v-590a881b]{height:var(--header-height);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:1000;background:#ffffffd1;border-bottom:1px solid #eaddeae6;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:0 28px;display:grid;position:sticky;top:0}.header-center[data-v-590a881b]{justify-content:center;display:flex}.header-left[data-v-590a881b]{align-items:center;gap:14px;display:flex}.logo-box[data-v-590a881b]{background:linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));border-radius:18px;justify-content:center;align-items:center;width:52px;height:52px;padding:7px;display:flex;box-shadow:0 12px 22px #4100392e}.logo-box img[data-v-590a881b]{object-fit:contain;width:100%;height:100%}.header-left h1[data-v-590a881b]{color:var(--color-primary-dark);letter-spacing:-.03em;margin:0;font-size:21px;font-weight:900}.header-left p[data-v-590a881b]{color:var(--color-text-light);max-width:280px;margin:2px 0 0;font-size:11px;font-style:italic;font-weight:600;line-height:1.3}.header-right[data-v-590a881b]{align-items:center;gap:12px;display:flex;position:relative}.user-chip[data-v-590a881b]{border:1px solid var(--color-border);box-shadow:var(--shadow-soft);cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:999px;align-items:center;gap:10px;padding:8px 12px 8px 8px;transition:border-color .18s,box-shadow .18s;display:flex}.user-chip[data-v-590a881b]:hover{border-color:#6a1b5c4d;box-shadow:0 4px 16px #4100391a}.user-avatar[data-v-590a881b]{background:var(--color-primary-soft);width:36px;height:36px;color:var(--color-primary-dark);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:900;display:flex}.user-info[data-v-590a881b]{flex-direction:column;line-height:1.2;display:flex}.user-info strong[data-v-590a881b]{color:var(--color-text);font-size:13px}.user-info small[data-v-590a881b]{color:var(--color-text-light);font-size:12px}.chip-arrow[data-v-590a881b]{color:var(--color-text-light);margin-left:2px;font-size:9px}.profile-dropdown[data-v-590a881b]{border:1px solid var(--color-border);z-index:1100;background:#fff;border-radius:16px;min-width:240px;position:absolute;top:calc(100% + 10px);right:0;overflow:hidden;box-shadow:0 16px 40px #41003924}.dropdown-header[data-v-590a881b]{background:var(--color-primary-soft);align-items:center;gap:12px;padding:16px;display:flex}.dropdown-avatar[data-v-590a881b]{background:var(--color-primary);color:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:18px;font-weight:900;display:flex}.dropdown-name[data-v-590a881b]{color:var(--color-primary-dark);font-size:14px;font-weight:700}.dropdown-role[data-v-590a881b]{color:var(--color-primary);font-size:12px;font-weight:600}.dropdown-email[data-v-590a881b]{color:var(--color-text-light);word-break:break-all;margin-top:2px;font-size:11px}.dropdown-divider[data-v-590a881b]{background:var(--color-border);height:1px}.dropdown-item[data-v-590a881b]{text-align:left;width:100%;color:var(--color-text);cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:13px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:background .15s;display:flex}.dropdown-item[data-v-590a881b]:hover{background:#faf7fb}.dropdown-item.danger[data-v-590a881b]{color:var(--color-danger)}.dropdown-item.danger[data-v-590a881b]:hover{background:#fff5f5}.item-icon[data-v-590a881b]{font-size:16px}.chip-avatar-img[data-v-590a881b],.dropdown-avatar-img[data-v-590a881b]{object-fit:cover;border-radius:999px;width:100%;height:100%}.push-toggle[data-v-590a881b]{border:1px solid var(--color-border);cursor:pointer;width:36px;height:36px;color:var(--color-text-light);box-shadow:var(--shadow-soft);background:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .18s,color .18s,background .18s;display:flex}.push-toggle[data-v-590a881b]:hover{color:var(--color-primary);border-color:#6a1b5c4d}.push-toggle.active[data-v-590a881b]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.push-toggle.loading[data-v-590a881b]{opacity:.5;cursor:wait}.menu-toggle[data-v-590a881b]{border:1px solid var(--color-border);width:40px;height:40px;color:var(--color-text);cursor:pointer;background:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;transition:background .18s,border-color .18s;display:none}.menu-toggle[data-v-590a881b]:hover{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}@media (width<=768px){.menu-toggle[data-v-590a881b]{display:none!important}.app-header[data-v-590a881b]{grid-template-columns:auto 1fr auto;justify-content:center;gap:10px;height:60px;padding:0 10px}.header-left[data-v-590a881b]{flex:none;min-width:0}.header-left h1[data-v-590a881b]{font-size:16px}.header-left p[data-v-590a881b],.user-info[data-v-590a881b]{display:none}.header-center[data-v-590a881b]{flex:1;justify-content:center;min-width:0;max-width:none;display:flex}.logo-box[data-v-590a881b]{width:40px;height:40px}.header-right[data-v-590a881b]{flex:none;gap:8px}.user-chip[data-v-590a881b]{padding:6px 8px 6px 6px;font-size:12px}.user-avatar[data-v-590a881b]{width:30px;height:30px;font-size:12px}.push-toggle[data-v-590a881b]{width:36px;height:36px}.chip-arrow[data-v-590a881b]{display:none}}.app-sidebar[data-v-9e951f81]{width:var(--sidebar-width);flex-shrink:0;padding:22px 0 22px 22px}.sidebar-card[data-v-9e951f81]{min-height:calc(100vh - var(--header-height) - 44px);background:linear-gradient(180deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);color:#fff;border-radius:28px;flex-direction:column;padding:20px 14px;display:flex;box-shadow:0 22px 45px #41003933}.sidebar-top[data-v-9e951f81]{flex-direction:column;gap:4px;padding:8px 10px 18px;display:flex}.sidebar-kicker[data-v-9e951f81]{text-transform:uppercase;letter-spacing:.08em;opacity:.7;font-size:12px;font-weight:800}.sidebar-top strong[data-v-9e951f81]{font-size:18px;font-weight:900}.sidebar-nav[data-v-9e951f81]{flex-direction:column;gap:6px;display:flex}.sidebar-link[data-v-9e951f81]{color:#ffffffd1;border-radius:16px;align-items:center;gap:11px;padding:12px 13px;font-size:14px;font-weight:750;transition:background .18s,color .18s,transform .18s;display:flex}.sidebar-link[data-v-9e951f81]:hover{color:#fff;background:#ffffff1c;transform:translate(2px)}.sidebar-link.router-link-active[data-v-9e951f81]{color:#fff;background:#ffffff2e;box-shadow:inset 0 0 0 1px #ffffff24}.link-icon[data-v-9e951f81]{background:#ffffff1f;border-radius:10px;justify-content:center;align-items:center;width:25px;height:25px;font-size:13px;display:flex}.sidebar-link.router-link-active .link-icon[data-v-9e951f81]{background:#ffffff38}.sidebar-footer[data-v-9e951f81]{margin-top:auto;padding-top:18px}.logout-btn[data-v-9e951f81]{color:#fff;cursor:pointer;background:#ffffff1f;border:none;border-radius:16px;align-items:center;gap:11px;width:100%;padding:12px 13px;font-weight:800;transition:background .18s,transform .18s;display:flex}.logout-btn[data-v-9e951f81]:hover{background:#ffffff2e;transform:translateY(-1px)}@media (width<=768px){.app-sidebar[data-v-9e951f81]{z-index:900;width:100%;padding:0;position:fixed;bottom:0;left:0;right:0}.sidebar-card[data-v-9e951f81]{min-height:auto;padding:0;padding-bottom:env(safe-area-inset-bottom,0px);border-top:1px solid #ffffff24;border-radius:0;flex-direction:row;align-items:stretch;gap:0;box-shadow:0 -4px 24px #41003938}.sidebar-top[data-v-9e951f81]{display:none}.sidebar-nav[data-v-9e951f81]{scrollbar-width:none;flex-direction:row;flex:1;align-items:stretch;gap:0;padding:0;overflow-x:auto}.sidebar-nav[data-v-9e951f81]::-webkit-scrollbar{display:none}.sidebar-link[data-v-9e951f81]{white-space:nowrap;color:#ffffffa6;border-radius:0;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:3px;min-width:58px;padding:8px 10px;font-size:10px;transform:none!important}.sidebar-link[data-v-9e951f81]:hover{color:#ffffffe6;background:#ffffff14;transform:none!important}.sidebar-link.router-link-active[data-v-9e951f81]{color:#fff;box-shadow:none;background:#ffffff26;border-bottom:2px solid #ffffffbf}.link-icon[data-v-9e951f81]{background:0 0;border-radius:8px;width:26px;height:26px;font-size:14px}.sidebar-link.router-link-active .link-icon[data-v-9e951f81]{background:#fff3}.sidebar-footer[data-v-9e951f81]{display:none}}.page-heading[data-v-ed550bac]{background:radial-gradient(circle at top right, #ffffff47, transparent 32%), linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));color:#fff;border-radius:28px;justify-content:space-between;align-items:center;gap:18px;margin-bottom:26px;padding:26px 28px;display:flex;position:relative;overflow:hidden;box-shadow:0 18px 42px #4100392e}.page-heading[data-v-ed550bac]:before{content:"";background:#ffffff21;border-radius:999px;width:190px;height:190px;position:absolute;bottom:-95px;right:-60px}.page-heading[data-v-ed550bac]:after{content:"";background:#ffffff17;border-radius:999px;width:110px;height:110px;position:absolute;top:-55px;right:120px}.page-heading-content[data-v-ed550bac]{z-index:1;position:relative}.heading-kicker[data-v-ed550bac]{text-transform:uppercase;letter-spacing:.08em;color:#ffffffc7;align-items:center;gap:8px;margin-bottom:10px;font-size:12px;font-weight:900;display:inline-flex}.kicker-dot[data-v-ed550bac]{background:#fff;border-radius:999px;width:9px;height:9px;box-shadow:0 0 0 5px #ffffff24}.page-title[data-v-ed550bac]{color:#fff;letter-spacing:-.04em;margin:0;font-size:34px;font-weight:950;line-height:1.1}.page-subtitle[data-v-ed550bac]{color:#ffffffd1;max-width:680px;margin:10px 0 0;font-size:15px;font-weight:600}.page-heading-badge[data-v-ed550bac]{z-index:1;color:#fff;white-space:nowrap;background:#ffffff29;border:1px solid #ffffff2e;border-radius:999px;padding:10px 14px;font-weight:900;position:relative}@media (width<=768px){.page-heading[data-v-ed550bac]{border-radius:22px;flex-direction:column;align-items:flex-start;padding:22px}.page-title[data-v-ed550bac]{font-size:28px}.page-subtitle[data-v-ed550bac]{font-size:14px}}.stats-card[data-v-59dfa456]{flex-direction:column;justify-content:center;min-height:130px;display:flex}.stats-title[data-v-59dfa456]{color:var(--color-text-light);margin-bottom:8px;font-size:14px}.stats-value[data-v-59dfa456]{color:var(--color-primary-dark);margin-bottom:6px;font-size:30px}.stats-subtitle[data-v-59dfa456]{color:var(--color-text-light);font-size:13px}.calendar-list[data-v-bc299e7c]{flex-direction:column;gap:14px;display:flex}.calendar-item[data-v-bc299e7c]{border-bottom:1px solid var(--color-border);align-items:flex-start;gap:14px;padding:12px 0;display:flex}.calendar-item[data-v-bc299e7c]:last-child{border-bottom:none}.calendar-time[data-v-bc299e7c]{min-width:110px;color:var(--color-primary-dark);font-weight:700}.calendar-content h4[data-v-bc299e7c]{color:var(--color-text);margin:0 0 4px}.calendar-content p[data-v-bc299e7c]{color:var(--color-text-light);margin:0;font-size:14px}.empty-text[data-v-bc299e7c]{color:var(--color-text-light)}.announcement-list[data-v-b431d33c]{flex-direction:column;gap:14px;display:flex}.announcement-item[data-v-b431d33c]{border-bottom:1px solid var(--color-border);padding-bottom:14px}.announcement-item[data-v-b431d33c]:last-child{border-bottom:none;padding-bottom:0}.announcement-top[data-v-b431d33c]{justify-content:space-between;align-items:center;gap:12px;display:flex}.announcement-item p[data-v-b431d33c]{color:var(--color-text-light);margin:8px 0 4px}.announcement-item small[data-v-b431d33c],.empty-text[data-v-b431d33c]{color:var(--color-text-light)}.table-card-container[data-v-76c2b4f6]{width:100%}.table-wrapper[data-v-76c2b4f6]{border-radius:18px;display:block;overflow:hidden}.base-table[data-v-76c2b4f6]{border-collapse:collapse;width:100%}.base-table th[data-v-76c2b4f6],.base-table td[data-v-76c2b4f6]{text-align:left;border-bottom:1px solid var(--color-border);padding:15px 16px}.base-table th[data-v-76c2b4f6]{text-transform:uppercase;color:var(--color-primary-dark);background:#f8f0f7;font-size:12px;font-weight:900}.base-table tbody tr:hover td[data-v-76c2b4f6]{background:#f4e6f17a}.empty-state[data-v-76c2b4f6]{text-align:center;color:var(--color-text-light);padding:40px 20px;font-weight:600}.actions-col[data-v-76c2b4f6]{text-align:center;width:100px}.actions-cell[data-v-76c2b4f6]{text-align:center}.cards-container[data-v-76c2b4f6]{flex-direction:column;gap:12px;display:none}.data-card[data-v-76c2b4f6]{border:1px solid var(--color-border);background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 8px #0000000d}.card-header[data-v-76c2b4f6]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;padding-bottom:12px;display:flex}.card-title[data-v-76c2b4f6]{color:var(--color-primary-dark);flex:1;margin:0;font-size:15px;font-weight:900}.card-body[data-v-76c2b4f6]{flex-direction:column;gap:8px;display:flex}.card-row[data-v-76c2b4f6]{justify-content:space-between;gap:12px;font-size:13px;display:flex}.card-label[data-v-76c2b4f6]{color:var(--color-text-light);flex:none;min-width:100px;font-weight:700}.card-value[data-v-76c2b4f6]{text-align:right;color:var(--color-text);word-break:break-word;flex:1}@media (width<=768px){.table-wrapper[data-v-76c2b4f6]{display:none}.cards-container[data-v-76c2b4f6]{display:flex}.data-card[data-v-76c2b4f6]{border-radius:10px;padding:14px}.card-header[data-v-76c2b4f6]{margin-bottom:10px;padding-bottom:10px}.card-title[data-v-76c2b4f6]{font-size:14px}.card-row[data-v-76c2b4f6]{font-size:12px}.card-label[data-v-76c2b4f6]{min-width:80px}}.charts-section[data-v-b3707783]{margin-top:24px}.charts-heading[data-v-b3707783]{align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.charts-title[data-v-b3707783]{color:var(--color-primary-dark);font-size:17px;font-weight:900}.charts-sub[data-v-b3707783]{color:var(--color-text-light);font-size:12px}.charts-grid[data-v-b3707783]{grid-template-columns:1fr 1fr;gap:16px;display:grid}.chart-card[data-v-b3707783]{border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;padding:18px 20px;box-shadow:0 1px 6px #0000000a}.chart-card-full[data-v-b3707783]{grid-column:1/-1}.chart-card-head[data-v-b3707783]{justify-content:space-between;align-items:flex-start;margin-bottom:14px;display:flex}.chart-label[data-v-b3707783]{color:var(--color-primary-dark);margin-bottom:2px;font-size:14px;font-weight:800}.chart-sub[data-v-b3707783]{color:var(--color-text-light);font-size:11px}.chart-wrap[data-v-b3707783]{width:100%;position:relative}.no-data[data-v-b3707783]{height:100%;color:var(--color-text-light);justify-content:center;align-items:center;font-size:13px;font-style:italic;display:flex}.skeleton[data-v-b3707783]{animation:1.4s ease-in-out infinite shimmer-b3707783}@keyframes shimmer-b3707783{0%,to{opacity:1}50%{opacity:.55}}.skeleton-line[data-v-b3707783]{background:#e8e0e8;border-radius:6px;height:14px;margin-bottom:10px}.w-40[data-v-b3707783]{width:40%}.skeleton-chart[data-v-b3707783]{background:#f0eaf0;border-radius:8px;height:180px}@media (width<=768px){.charts-grid[data-v-b3707783]{grid-template-columns:1fr}.chart-card-full[data-v-b3707783]{grid-column:1}}.dashboard-grid[data-v-3a37d993],.bottom-grid[data-v-3a37d993]{grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;display:grid}.bottom-grid[data-v-3a37d993]{grid-template-columns:1fr}@media (width<=992px){.dashboard-grid[data-v-3a37d993],.bottom-grid[data-v-3a37d993]{grid-template-columns:1fr}}.dashboard-grid[data-v-a1793a46],.bottom-grid[data-v-a1793a46]{grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;display:grid}@media (width<=992px){.dashboard-grid[data-v-a1793a46],.bottom-grid[data-v-a1793a46]{grid-template-columns:1fr}}.dashboard-grid[data-v-c1119754],.bottom-grid[data-v-c1119754]{grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;display:grid}.one-column[data-v-c1119754]{grid-template-columns:1fr}@media (width<=992px){.dashboard-grid[data-v-c1119754],.bottom-grid[data-v-c1119754]{grid-template-columns:1fr}}.form-section[data-v-60c56a75]{margin-bottom:16px}.section-header[data-v-60c56a75]{background:var(--color-primary-soft);border-radius:var(--radius-md);cursor:pointer;width:100%;color:var(--color-primary-dark);border:1px solid #6a1b5c33;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-weight:700;transition:all .2s;display:flex}.section-header[data-v-60c56a75]:hover{background:#6a1b5c26;border-color:#6a1b5c4d}.section-title-container[data-v-60c56a75]{text-align:left;flex:1;align-items:center;gap:10px;display:flex}.section-icon[data-v-60c56a75]{width:18px;height:18px;color:var(--color-primary);flex-shrink:0}.section-title[data-v-60c56a75]{font-size:14px}.toggle-icon[data-v-60c56a75]{flex-shrink:0;width:20px;height:20px;transition:transform .2s}.toggle-icon.open[data-v-60c56a75]{transform:rotate(180deg)}.section-content[data-v-60c56a75]{flex-direction:column;gap:16px;padding:12px 0;display:flex}@media (width>=768px){.section-header[data-v-60c56a75]{display:none}.section-content[data-v-60c56a75]{display:contents}}.action-buttons[data-v-03e8fd88]{flex-direction:column;gap:8px;display:flex}.btn-sm[data-v-03e8fd88]{padding:8px 12px;font-size:13px}@media (width>=768px){.action-buttons[data-v-03e8fd88]{flex-direction:row;justify-content:center}}.modal-overlay[data-v-c602a43c]{z-index:3000;background:#140f1973;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card[data-v-c602a43c]{border:1px solid var(--color-border);background:#fff;border-radius:18px;width:100%;max-width:460px;padding:22px;box-shadow:0 16px 40px #00000029}.modal-header[data-v-c602a43c]{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.modal-header h3[data-v-c602a43c]{color:var(--color-primary-dark);margin:0}.modal-close[data-v-c602a43c]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;font-size:26px}.modal-message[data-v-c602a43c]{color:var(--color-text-light);margin-bottom:22px;line-height:1.5}.modal-actions[data-v-c602a43c]{flex-wrap:wrap;justify-content:flex-end;gap:12px;display:flex}.btn-danger[data-v-c602a43c]{background:var(--color-danger);color:#fff}@media (width<=480px){.modal-overlay[data-v-c602a43c]{align-items:flex-end;padding:0}.modal-card[data-v-c602a43c]{max-width:100%;padding-bottom:calc(22px + env(safe-area-inset-bottom,0px));border-radius:22px 22px 0 0}.modal-actions[data-v-c602a43c]{flex-direction:column-reverse}.modal-actions .btn[data-v-c602a43c]{width:100%}}@keyframes skel-shimmer-28291005{0%{background-position:200% 0}to{background-position:-200% 0}}.skel-bar[data-v-28291005],.skel-avatar[data-v-28291005],.skel-icon[data-v-28291005],.skel-avatar--lg[data-v-28291005],.skel-pill[data-v-28291005]{background:linear-gradient(90deg,#f0e8f0 25%,#faf4fa 50%,#f0e8f0 75%) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite skel-shimmer-28291005}.skel-wrap[data-v-28291005]{border:1px solid var(--color-border);box-shadow:var(--shadow-soft);background:#fff;border-radius:20px;flex-direction:column;gap:0;padding:20px 22px;display:flex}.skel-table-head[data-v-28291005]{border-bottom:1px solid var(--color-border);align-items:center;gap:24px;margin-bottom:4px;padding:10px 0 14px;display:flex}.skel-table-head .skel-bar[data-v-28291005]{border-radius:4px;height:11px}.skel-row[data-v-28291005]{border-bottom:1px solid #eaddea80;align-items:center;gap:14px;padding:13px 0;display:flex}.skel-row[data-v-28291005]:last-child{border-bottom:none}.skel-avatar[data-v-28291005]{border-radius:50%;flex-shrink:0;width:36px;height:36px}.skel-row-text[data-v-28291005]{flex:1}.skel-pill[data-v-28291005]{border-radius:999px;height:22px}.skel-bar[data-v-28291005]{border-radius:6px;height:13px}.skel-cards[data-v-28291005]{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.skel-card[data-v-28291005]{border:1px solid var(--color-border);box-shadow:var(--shadow-soft);background:#fff;border-radius:16px;padding:18px}.skel-list-row[data-v-28291005]{border-bottom:1px solid #eaddea80;align-items:center;gap:12px;padding:12px 0;display:flex}.skel-list-row[data-v-28291005]:last-child{border-bottom:none}.skel-icon[data-v-28291005]{border-radius:10px;flex-shrink:0;width:38px;height:38px}.skel-profile-head[data-v-28291005]{border-bottom:1px solid var(--color-border);align-items:center;gap:20px;margin-bottom:6px;padding-bottom:22px;display:flex}.skel-avatar--lg[data-v-28291005]{border-radius:50%;flex-shrink:0;width:72px;height:72px}.skel-section[data-v-28291005]{border-bottom:1px solid #eaddea80;padding:18px 0}.skel-section[data-v-28291005]:last-child{border-bottom:none}@media (width<=768px){.skel-cards[data-v-28291005]{grid-template-columns:repeat(2,1fr)}.skel-row[data-v-28291005]{gap:10px}.skel-row>.skel-bar[data-v-28291005]:nth-child(3){display:none}}@media (width<=480px){.skel-cards[data-v-28291005]{grid-template-columns:1fr}}.form-grid[data-v-738d7275]{grid-template-columns:.9fr .9fr 1fr 1fr;gap:16px;display:grid}.form-actions[data-v-738d7275]{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.error-text[data-v-738d7275]{color:var(--color-danger);font-weight:600}@media (width<=992px){.form-grid[data-v-738d7275]{grid-template-columns:1fr}}.student-table-wrapper[data-v-02949111]{flex-direction:column;gap:16px;display:flex}.table-view[data-v-02949111]{display:block}.table-wrapper[data-v-02949111]{-webkit-overflow-scrolling:touch;border:1px solid var(--color-border);border-radius:12px;overflow-x:auto}.student-table[data-v-02949111]{border-collapse:collapse;background:#fff;width:100%}.student-table th[data-v-02949111]{text-align:left;text-transform:uppercase;color:var(--color-primary-dark);border-bottom:1px solid var(--color-border);background:#f8f0f7;padding:12px 14px;font-size:12px;font-weight:800}.student-table td[data-v-02949111]{border-bottom:1px solid var(--color-border);color:var(--color-text);padding:14px;font-size:14px}.student-table tbody tr:hover td[data-v-02949111]{background:#f4e6f17a}.alerts-col[data-v-02949111]{text-align:center;width:60px}.alerts-cell[data-v-02949111]{text-align:center;padding:10px}.alert-btn[data-v-02949111]{cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px 8px;font-size:18px;transition:all .2s;display:inline-flex}.alert-btn[data-v-02949111]:hover:not(.disabled){background:#f4e6f199;transform:scale(1.1)}.alert-btn.disabled[data-v-02949111]{opacity:.4;cursor:not-allowed}.actions-col[data-v-02949111]{text-align:center;width:140px}.actions-cell[data-v-02949111]{text-align:center;padding:14px}.card-view[data-v-02949111]{display:none}.student-cards[data-v-02949111]{flex-direction:column;gap:12px;display:flex}.student-card[data-v-02949111]{border:1px solid var(--color-border);background:#fff;border-radius:10px;overflow:hidden}.card-header[data-v-02949111]{border-bottom:1px solid var(--color-border);background:#f8f0f7;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.card-name[data-v-02949111]{color:var(--color-text);flex:1;margin:0;font-size:15px;font-weight:700}.card-header-buttons[data-v-02949111]{flex-shrink:0;align-items:center;gap:8px;display:flex}.alert-btn-mobile[data-v-02949111]{cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px 6px;font-size:16px;transition:all .2s;display:inline-flex}.alert-btn-mobile[data-v-02949111]:hover:not(.disabled){background:#f4e6f199;transform:scale(1.1)}.alert-btn-mobile.disabled[data-v-02949111]{opacity:.4;cursor:not-allowed}.card-actions[data-v-02949111]{flex-shrink:0}.card-body[data-v-02949111]{flex-direction:column;gap:8px;padding:12px 14px;display:flex}.card-row[data-v-02949111]{justify-content:space-between;align-items:center;gap:10px;display:flex}.card-label[data-v-02949111]{color:var(--color-text-light);text-transform:uppercase;min-width:70px;font-size:12px;font-weight:600}.card-value[data-v-02949111]{color:var(--color-text);text-align:right;flex:1;font-size:13px}.empty-state[data-v-02949111]{text-align:center;color:var(--color-text-light);padding:40px 20px}@media (width<=768px){.student-table[data-v-02949111]{font-size:12px}.student-table td[data-v-02949111],.student-table th[data-v-02949111]{padding:10px 8px}.student-table[data-v-02949111]{min-width:600px}}@media (width<=640px){.table-view[data-v-02949111]{display:none}.card-view[data-v-02949111]{display:block}.card-header[data-v-02949111]{flex-direction:row;gap:8px;padding:10px 12px}.card-name[data-v-02949111]{word-break:break-word;flex:1;min-width:0;font-size:14px}.card-header-buttons[data-v-02949111]{gap:6px}.alert-btn-mobile[data-v-02949111]{padding:4px 6px;font-size:14px}.card-actions[data-v-02949111]{flex-wrap:wrap;flex-shrink:0;gap:6px;display:flex}.action-link[data-v-02949111],.btn[data-v-02949111]{padding:6px 10px;font-size:12px}}@media (width<=480px){.student-table[data-v-02949111]{min-width:550px;font-size:11px}.student-table td[data-v-02949111],.student-table th[data-v-02949111]{padding:8px 6px}.student-cards[data-v-02949111]{gap:10px}.student-card[data-v-02949111]{border-radius:8px}.card-header[data-v-02949111]{gap:6px;padding:8px 10px}.card-header-buttons[data-v-02949111]{gap:4px}.alert-btn-mobile[data-v-02949111]{padding:3px 5px;font-size:13px}.card-row[data-v-02949111]{gap:8px}.action-link[data-v-02949111],.btn[data-v-02949111]{padding:5px 8px;font-size:11px}.actions-col[data-v-02949111]{width:100px;min-width:100px}.card-header[data-v-02949111]{padding:10px 12px}.card-name[data-v-02949111]{font-size:14px}.card-body[data-v-02949111]{gap:6px;padding:10px 12px}.card-label[data-v-02949111]{min-width:60px;font-size:11px}.card-value[data-v-02949111]{font-size:12px}}.conflict-banner[data-v-8af5687b]{border-radius:var(--radius-md);background:#fff8e1;border:1px solid #f0c040;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:14px 18px;display:flex}.conflict-icon[data-v-8af5687b]{flex-shrink:0;font-size:20px}.conflict-msg[data-v-8af5687b]{color:#7a5500;flex:1;min-width:200px;font-size:14px;font-weight:700}.conflict-actions[data-v-8af5687b]{flex-shrink:0;gap:8px;display:flex}.ss-wrap[data-v-faa7e0d4]{width:100%;position:relative}.ss-trigger[data-v-faa7e0d4]{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;min-height:44px;color:var(--color-text);cursor:pointer;text-align:left;background:#fffffff0;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;transition:border-color .18s,box-shadow .18s;display:flex}.ss-trigger[data-v-faa7e0d4]:hover:not(:disabled){border-color:#6a1b5c40}.ss-wrap.open .ss-trigger[data-v-faa7e0d4]{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 4px #6a1b5c17}.ss-trigger-label[data-v-faa7e0d4]{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.ss-trigger-label.placeholder[data-v-faa7e0d4]{color:#a89aaa}.ss-arrow[data-v-faa7e0d4]{color:var(--color-text-light);flex-shrink:0;font-size:10px}.ss-wrap.disabled .ss-trigger[data-v-faa7e0d4]{opacity:.55;cursor:not-allowed}.ss-dropdown{border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;overflow:hidden;box-shadow:0 12px 32px #4100391f}.ss-search-wrap{border-bottom:1px solid var(--color-border);padding:10px 10px 6px}.ss-search{border:1px solid var(--color-border);width:100%;color:var(--color-text);background:#faf7fb;border-radius:10px;outline:none;padding:8px 12px;font-size:13px;transition:border-color .15s}.ss-search:focus{border-color:var(--color-primary)}.ss-list{max-height:240px;margin:0;padding:6px;list-style:none;overflow-y:auto}.ss-option{cursor:pointer;border-radius:10px;flex-direction:column;gap:2px;padding:9px 10px;transition:background .12s;display:flex}.ss-option:hover{background:var(--color-primary-soft)}.ss-option.selected{background:var(--color-primary-soft);font-weight:700}.ss-opt-label{color:var(--color-text);font-size:14px}.ss-opt-sub{color:var(--color-text-light);font-size:12px}.ss-empty{text-align:center;color:var(--color-text-light);padding:16px;font-size:13px}.modal-overlay[data-v-2ad3d0f8]{z-index:3000;background:#140f1975;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card[data-v-2ad3d0f8]{border:1px solid var(--color-border);background:#fff;border-radius:20px;flex-direction:column;width:100%;max-width:560px;max-height:92vh;display:flex;overflow:hidden;box-shadow:0 20px 50px #0000002e}.modal-header[data-v-2ad3d0f8]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px 22px 16px;display:flex}.modal-title-row[data-v-2ad3d0f8]{align-items:center;gap:8px;display:flex}.modal-header h3[data-v-2ad3d0f8]{color:var(--color-primary-dark);font-size:17px;font-weight:900}.modal-close[data-v-2ad3d0f8]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;font-size:26px;line-height:1}.modal-body[data-v-2ad3d0f8]{flex-direction:column;gap:20px;padding:20px 22px;display:flex;overflow-y:auto}.modal-footer[data-v-2ad3d0f8]{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}.block-label[data-v-2ad3d0f8]{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-light);margin-bottom:10px;font-size:11px;font-weight:900}.filter-grid[data-v-2ad3d0f8]{grid-template-columns:1fr 1fr 1fr;gap:10px;display:grid}.preview-strip[data-v-2ad3d0f8]{background:var(--color-primary-soft);border-radius:var(--radius-md);border:1px solid #6a1b5c26;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.preview-strip.preview-empty[data-v-2ad3d0f8]{background:#fef2f2;border-color:#fca5a5}.preview-left[data-v-2ad3d0f8]{align-items:baseline;gap:6px;display:flex}.preview-num[data-v-2ad3d0f8]{color:var(--color-primary-dark);font-size:26px;font-weight:900;line-height:1}.preview-empty .preview-num[data-v-2ad3d0f8]{color:#991b1b}.preview-lbl[data-v-2ad3d0f8]{color:var(--color-text-light);font-size:13px;font-weight:600}.preview-filter[data-v-2ad3d0f8]{color:var(--color-primary);text-align:right;font-size:11px;font-weight:700}.format-row[data-v-2ad3d0f8]{grid-template-columns:1fr 1fr;gap:10px;display:grid}.format-card[data-v-2ad3d0f8]{border:1.5px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;text-align:left;background:#fff;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;transition:border-color .15s,background .15s,box-shadow .15s;display:flex;position:relative}.format-card[data-v-2ad3d0f8]:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.format-card.active[data-v-2ad3d0f8]{border-color:var(--color-primary);background:var(--color-primary-soft);box-shadow:0 0 0 3px #6a1b5c1a}.format-icon[data-v-2ad3d0f8]{border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;margin-bottom:2px;display:flex}.format-icon-pdf[data-v-2ad3d0f8]{color:#dc2626;background:#fef2f2}.format-icon-xlsx[data-v-2ad3d0f8]{color:#16a34a;background:#f0fdf4}.format-name[data-v-2ad3d0f8]{color:var(--color-text);font-size:14px;font-weight:800}.format-desc[data-v-2ad3d0f8]{color:var(--color-text-light);font-size:11px}.format-check[data-v-2ad3d0f8]{color:var(--color-primary);font-size:13px;font-weight:900;position:absolute;top:10px;right:12px}.cols-label[data-v-2ad3d0f8]{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-light);margin-bottom:12px;font-size:11px;font-weight:900}.cols-buttons[data-v-2ad3d0f8]{flex-wrap:wrap;gap:8px;display:flex}.col-btn[data-v-2ad3d0f8]{border:2px solid var(--color-border);color:var(--color-text);cursor:pointer;white-space:nowrap;background:#fff;border-radius:20px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s}.col-btn[data-v-2ad3d0f8]:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.col-btn.active[data-v-2ad3d0f8]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}@media (width<=560px){.filter-grid[data-v-2ad3d0f8],.format-row[data-v-2ad3d0f8]{grid-template-columns:1fr}}@media (width<=480px){.modal-overlay[data-v-2ad3d0f8]{align-items:flex-end;padding:0}.modal-card[data-v-2ad3d0f8]{border-radius:22px 22px 0 0;max-width:100%}.modal-footer[data-v-2ad3d0f8]{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));flex-direction:column-reverse}.modal-footer .btn[data-v-2ad3d0f8]{width:100%}}.modal-overlay[data-v-43ce1dc5]{z-index:3000;background:#140f1973;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card[data-v-43ce1dc5]{border:1px solid var(--color-border);background:#fff;border-radius:20px;flex-direction:column;width:100%;max-width:760px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 20px 50px #0000002e}.modal-header[data-v-43ce1dc5]{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 22px 16px;display:flex}.modal-header h3[data-v-43ce1dc5]{color:var(--color-primary-dark);font-size:17px;font-weight:900}.modal-close[data-v-43ce1dc5]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;font-size:26px}.modal-body[data-v-43ce1dc5]{flex-direction:column;flex:1;gap:16px;padding:20px 22px;display:flex;overflow-y:auto}.modal-footer[data-v-43ce1dc5]{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}.upload-zone[data-v-43ce1dc5]{border:2px dashed var(--color-border);cursor:pointer;text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:40px 24px;transition:border-color .18s,background .18s;display:flex}.upload-zone[data-v-43ce1dc5]:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.upload-icon[data-v-43ce1dc5]{color:var(--color-primary);opacity:.7}.upload-label[data-v-43ce1dc5]{color:var(--color-text);font-size:14px;font-weight:600}.upload-hint[data-v-43ce1dc5]{color:var(--color-text-light);font-size:12px}.hidden-input[data-v-43ce1dc5]{display:none}.btn-template[data-v-43ce1dc5]{border:1px solid var(--color-border);color:var(--color-text-light);cursor:pointer;background:0 0;border-radius:10px;align-items:center;gap:8px;width:fit-content;padding:8px 14px;font-size:13px;font-weight:600;transition:border-color .15s,color .15s;display:flex}.btn-template[data-v-43ce1dc5]:hover{border-color:var(--color-primary);color:var(--color-primary)}.config-intro[data-v-43ce1dc5]{color:var(--color-text);text-transform:uppercase;letter-spacing:.5px;margin:0 0 16px;font-size:14px;font-weight:600}.columns-buttons[data-v-43ce1dc5]{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.column-btn[data-v-43ce1dc5]{border:2px solid var(--color-border);color:var(--color-text);cursor:pointer;white-space:nowrap;background:#fff;border-radius:20px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s}.column-btn[data-v-43ce1dc5]:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.column-btn.active[data-v-43ce1dc5]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.config-note[data-v-43ce1dc5]{border-left:3px solid var(--color-primary);color:var(--color-text-light);background:#f0f4f8;border-radius:6px;margin-top:8px;padding:12px 16px;font-size:12px}.config-note strong[data-v-43ce1dc5]{color:var(--color-text)}.error-banner[data-v-43ce1dc5]{color:#991b1b;background:#fef2f2;border:1px solid #fca5a5;border-radius:12px;padding:12px 16px;font-size:13px}.error-list[data-v-43ce1dc5]{max-height:80px;margin:8px 0 0 16px;font-size:12px;overflow-y:auto}.preview-info[data-v-43ce1dc5]{color:var(--color-text);font-size:14px}.table-wrap[data-v-43ce1dc5]{border:1px solid var(--color-border);border-radius:12px;overflow:auto}.preview-table[data-v-43ce1dc5]{border-collapse:collapse;width:100%;font-size:13px}.preview-table th[data-v-43ce1dc5]{background:var(--color-primary-soft);text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary-dark);white-space:nowrap;padding:9px 12px;font-size:11px;font-weight:800}.preview-table td[data-v-43ce1dc5]{border-top:1px solid var(--color-border);color:var(--color-text);padding:8px 12px}.row-error td[data-v-43ce1dc5]{background:#fff5f5}.td-num[data-v-43ce1dc5]{color:var(--color-text-light);font-size:11px;font-weight:700}.row-err-icon[data-v-43ce1dc5]{color:#dc2626;cursor:help;font-size:14px}.row-ok-icon[data-v-43ce1dc5]{color:#16a34a;font-size:14px}.progress-wrap[data-v-43ce1dc5]{color:var(--color-primary-dark);align-items:center;gap:12px;font-size:13px;font-weight:700;display:flex}.progress-bar[data-v-43ce1dc5]{background:var(--color-primary);border-radius:999px;flex:1;height:8px;transition:width .2s}@media (width<=480px){.modal-overlay[data-v-43ce1dc5]{align-items:flex-end;padding:0}.modal-card[data-v-43ce1dc5]{border-radius:22px 22px 0 0;max-width:100%;max-height:92vh}.modal-footer[data-v-43ce1dc5]{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));flex-direction:column-reverse}.modal-footer .btn[data-v-43ce1dc5]{width:100%}}.popover-overlay[data-v-e828da2e]{z-index:999;background:#0000004d;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.popover[data-v-e828da2e]{background:#fff;border-radius:12px;flex-direction:column;width:90%;max-width:380px;display:flex;box-shadow:0 10px 40px #00000026}.popover-header[data-v-e828da2e]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.popover-header h3[data-v-e828da2e]{color:var(--color-text);margin:0;font-size:16px;font-weight:700}.close-btn[data-v-e828da2e]{color:var(--color-text-light);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:20px;transition:background .2s}.close-btn[data-v-e828da2e]:hover{background:var(--color-primary-soft)}.popover-content[data-v-e828da2e]{max-height:400px;padding:16px 20px;overflow-y:auto}.read-only-notice[data-v-e828da2e]{color:var(--color-text-light);margin:0 0 12px;font-size:12px;font-style:italic}.alerts-list[data-v-e828da2e]{flex-direction:column;gap:12px;display:flex}.alert-item[data-v-e828da2e]{align-items:center;gap:12px;display:flex}.checkbox[data-v-e828da2e]{cursor:pointer;width:18px;height:18px;accent-color:var(--color-primary)}.checkbox[data-v-e828da2e]:disabled{cursor:not-allowed;opacity:.5}.label[data-v-e828da2e]{color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.label.disabled[data-v-e828da2e]{opacity:.6;cursor:not-allowed}.icon[data-v-e828da2e]{font-size:16px}.popover-footer[data-v-e828da2e]{border-top:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:0 0 12px 12px;justify-content:flex-end;gap:10px;padding:16px 20px;display:flex}.btn[data-v-e828da2e]{cursor:pointer;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;transition:all .2s}.btn-primary[data-v-e828da2e]{background:var(--color-primary);color:#fff}.btn-primary[data-v-e828da2e]:hover:not(:disabled){background:var(--color-primary-dark)}.btn-primary[data-v-e828da2e]:disabled{opacity:.5;cursor:not-allowed}.btn-outline[data-v-e828da2e]{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.btn-outline[data-v-e828da2e]:hover{background:var(--color-primary-soft);border-color:var(--color-primary)}@media (width<=640px){.popover[data-v-e828da2e]{width:90%;max-width:320px;max-height:80vh}.popover-content[data-v-e828da2e]{max-height:50vh}.popover-header h3[data-v-e828da2e]{font-size:15px}.btn[data-v-e828da2e]{padding:8px 12px;font-size:12px}}@media (width<=480px){.popover[data-v-e828da2e]{width:95%;max-width:100%}.popover-header[data-v-e828da2e]{padding:12px 16px}.popover-content[data-v-e828da2e]{max-height:40vh;padding:12px 16px}.popover-footer[data-v-e828da2e]{gap:8px;padding:12px 16px}.btn[data-v-e828da2e]{padding:6px 10px;font-size:11px}.alert-item[data-v-e828da2e]{gap:10px}.label[data-v-e828da2e]{font-size:13px}}.page-head[data-v-5809cac7]{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:4px;display:flex}.page-head-title[data-v-5809cac7]{flex:1;min-width:0}.head-actions[data-v-5809cac7]{flex-direction:column;flex-shrink:0;align-items:stretch;gap:8px;display:flex}.btn-export[data-v-5809cac7]{white-space:nowrap;align-items:center;gap:6px;margin-top:4px;display:flex}.form-grid[data-v-5809cac7]{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.form-actions[data-v-5809cac7]{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.students-toolbar[data-v-5809cac7]{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toolbar-search[data-v-5809cac7]{flex:1;align-items:center;min-width:200px;display:flex;position:relative}.search-icon[data-v-5809cac7]{color:var(--color-text-light);pointer-events:none;flex-shrink:0;position:absolute;left:12px}.toolbar-search .input[data-v-5809cac7]{width:100%;padding-left:36px}.toolbar-class[data-v-5809cac7]{flex-shrink:0;min-width:160px}.toolbar-count[data-v-5809cac7]{color:var(--color-text-light);white-space:nowrap;flex-shrink:0;font-size:13px;font-weight:700}.pagination[data-v-5809cac7]{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:16px;display:flex}.page-numbers[data-v-5809cac7]{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.page-btn[data-v-5809cac7]{border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:34px;height:34px;color:var(--color-text);cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:0 8px;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:flex}.page-btn[data-v-5809cac7]:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.page-btn.active[data-v-5809cac7]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.page-btn[data-v-5809cac7]:disabled{opacity:.35;cursor:default}.page-ellipsis[data-v-5809cac7]{min-width:34px;height:34px;color:var(--color-text-light);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex}@media (width<=480px){.pagination[data-v-5809cac7]{gap:4px;margin-top:12px}.page-numbers[data-v-5809cac7]{gap:2px}.page-btn[data-v-5809cac7]{min-width:30px;height:30px;padding:0 6px;font-size:12px}.page-ellipsis[data-v-5809cac7]{min-width:30px;height:30px;font-size:12px}}.error-text[data-v-5809cac7]{color:var(--color-danger);font-weight:600}.textarea[data-v-5809cac7]{border:1px solid var(--color-border);resize:vertical;background:#fff;border-radius:10px;outline:none;width:100%;padding:12px 14px}.textarea[data-v-5809cac7]:focus{border-color:var(--color-primary)}.filters-section[data-v-5809cac7]{flex-direction:column;gap:12px;margin-bottom:20px;display:flex}.search-bar[data-v-5809cac7]{border:1px solid var(--color-border);background:#fff;border-radius:10px;align-items:center;gap:10px;height:44px;padding:0 12px;display:flex}.search-icon[data-v-5809cac7]{color:var(--color-text-light);flex-shrink:0}.search-input[data-v-5809cac7]{color:var(--color-text);border:none;outline:none;flex:1;font-size:14px}.search-input[data-v-5809cac7]::placeholder{color:var(--color-text-light)}.search-btn[data-v-5809cac7]{cursor:pointer;color:var(--color-primary);background:0 0;border:none;align-items:center;padding:0 8px;font-size:16px;transition:color .2s;display:flex}.search-btn[data-v-5809cac7]:hover{color:var(--color-primary-dark)}.actions-menu[data-v-5809cac7]{flex-direction:column;gap:8px;display:flex}.action-link[data-v-5809cac7]{color:var(--color-primary);font-size:13px;font-weight:700;text-decoration:underline}.action-link[data-v-5809cac7]:hover{color:var(--color-primary-dark)}.btn-sm[data-v-5809cac7]{padding:8px 12px;font-size:13px}@media (width>=768px){.actions-menu[data-v-5809cac7]{flex-direction:row;justify-content:center;align-items:center}}.filter-controls[data-v-5809cac7]{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}@media (width<=992px){.form-grid[data-v-5809cac7]{grid-template-columns:1fr}.filters-section[data-v-5809cac7]{gap:10px}.filter-controls[data-v-5809cac7]{grid-template-columns:1fr}.search-bar[data-v-5809cac7]{height:40px;padding:0 10px}.search-input[data-v-5809cac7]{font-size:13px}}@media (width<=768px){.filters-section[data-v-5809cac7]{gap:8px;margin-bottom:16px}.search-bar[data-v-5809cac7]{gap:8px;height:38px;padding:0 8px}.search-icon[data-v-5809cac7]{width:14px;height:14px}.search-input[data-v-5809cac7]{font-size:14px}.search-btn[data-v-5809cac7]{padding:0 6px;font-size:15px}.filter-controls[data-v-5809cac7]{grid-template-columns:1fr}.actions-menu[data-v-5809cac7]{gap:6px}.action-link[data-v-5809cac7],.btn-sm[data-v-5809cac7]{font-size:12px}.btn-sm[data-v-5809cac7]{padding:6px 10px}}@media (width<=480px){.search-bar[data-v-5809cac7]{height:36px;padding:0 8px}.search-input[data-v-5809cac7]{font-size:13px}.student-table th[data-v-5809cac7],.student-table td[data-v-5809cac7]{padding:8px 6px;font-size:12px}.actions-menu[data-v-5809cac7]{flex-direction:column;gap:4px}.action-link[data-v-5809cac7],.btn-sm[data-v-5809cac7]{font-size:11px}.btn-sm[data-v-5809cac7]{padding:5px 8px}}.card-title[data-v-9adb52fa]{color:var(--color-primary-dark);margin-bottom:16px}.info-list[data-v-9adb52fa]{flex-direction:column;gap:10px;display:flex}.bottom-grid[data-v-9adb52fa]{grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;display:grid}.action-list[data-v-9adb52fa]{flex-direction:column;gap:12px;display:flex}.stats-inline[data-v-9adb52fa]{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.history-list[data-v-9adb52fa]{flex-direction:column;gap:14px;display:flex}.history-item[data-v-9adb52fa]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;gap:16px;padding:12px 0;display:flex}.history-item[data-v-9adb52fa]:last-child{border-bottom:none}.history-item p[data-v-9adb52fa]{color:var(--color-text-light);margin:4px 0 0}@media (width<=992px){.bottom-grid[data-v-9adb52fa]{grid-template-columns:1fr}.history-item[data-v-9adb52fa]{flex-direction:column}}[data-v-1203f44e] .card-value.status-present{color:var(--color-success);font-weight:700}[data-v-1203f44e] .card-value.status-retard{color:var(--color-warning);font-weight:700}[data-v-1203f44e] .card-value.status-absent{color:var(--color-danger);font-weight:700}.calendar-subtitle[data-v-9b5cab48]{color:var(--color-text-light);text-transform:capitalize;margin-top:4px}.no-student-msg[data-v-9b5cab48]{text-align:center;color:var(--color-text-light);padding:12px 0 20px;font-size:14px;font-style:italic}.calendar-disabled .calendar-day[data-v-9b5cab48]{cursor:default;opacity:.45;pointer-events:none}.legend[data-v-9b5cab48]{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.weekday-row[data-v-9b5cab48]{grid-template-columns:repeat(7,1fr);gap:10px;margin-bottom:10px;display:grid}.weekday-cell[data-v-9b5cab48]{text-align:center;color:var(--color-primary-dark);padding:8px 0;font-weight:700}.calendar-grid[data-v-9b5cab48]{grid-template-columns:repeat(7,1fr);gap:10px;display:grid}.calendar-day[data-v-9b5cab48]{border:1px solid var(--color-border);cursor:pointer;background:#fff;border-radius:12px;flex-direction:column;gap:6px;min-height:95px;padding:10px;transition:all .15s;display:flex}.calendar-day[data-v-9b5cab48]:hover{transform:translateY(-1px)}.calendar-day strong[data-v-9b5cab48]{color:var(--color-primary-dark)}.day-status[data-v-9b5cab48]{color:var(--color-text-light);font-size:12px}.day-remark[data-v-9b5cab48]{color:var(--color-text-light);font-size:11px;line-height:1.3}.calendar-day.present[data-v-9b5cab48]{background:#e7f6ea;border-color:#cdebd3}.calendar-day.retard[data-v-9b5cab48]{background:#fff4d6;border-color:#f3de9c}.calendar-day.absent[data-v-9b5cab48]{background:#fde7e7;border-color:#f3c2c2}.calendar-day.empty[data-v-9b5cab48]{background:#fafafa}.calendar-day.outside[data-v-9b5cab48]{cursor:default;opacity:.65;background:#f5f5f5}.calendar-day.selected[data-v-9b5cab48]{outline:3px solid var(--color-primary);outline-offset:1px}@media (width<=992px){.calendar-grid[data-v-9b5cab48],.weekday-row[data-v-9b5cab48]{grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-day[data-v-9b5cab48]{min-height:82px;padding:8px}}@media (width<=640px){.calendar-day[data-v-9b5cab48]{min-height:72px}.day-remark[data-v-9b5cab48]{display:none}}.attendance-layout[data-v-8986f9a5]{grid-template-columns:2fr 3fr;align-items:start;gap:20px;display:grid}.cell[data-v-8986f9a5]{min-width:0}.cell-bl[data-v-8986f9a5]{align-self:stretch;position:relative}.period-row[data-v-8986f9a5]{grid-template-columns:1fr 1fr;gap:12px;display:grid}.month-nav[data-v-8986f9a5]{gap:8px;margin-top:12px;display:flex}.bulk-actions[data-v-8986f9a5]{flex-direction:column;gap:8px;margin-top:12px;display:flex}.btn-sm[data-v-8986f9a5]{padding:9px 12px;font-size:13px}.student-list-card[data-v-8986f9a5]{flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden;padding:0!important}.student-list-card .section-title[data-v-8986f9a5]{border-bottom:1px solid var(--color-border);align-items:center;gap:8px;padding:16px 16px 12px;display:flex}.student-count-badge[data-v-8986f9a5]{background:var(--color-primary-soft);color:var(--color-primary-dark);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}.empty-list[data-v-8986f9a5]{color:var(--color-text-light);text-align:center;padding:20px 16px;font-size:13px}.student-list[data-v-8986f9a5]{scrollbar-gutter:stable;flex:1;min-height:0;max-height:none;margin:0;padding:6px;list-style:none;overflow-y:auto}.student-item[data-v-8986f9a5]{cursor:pointer;border-radius:10px;flex-direction:column;gap:0;padding:10px 12px;transition:background .14s;display:flex}.student-item[data-v-8986f9a5]:hover{background:var(--color-primary-soft)}.student-item.active[data-v-8986f9a5]{background:var(--color-primary-soft);outline:2px solid var(--color-primary)}.student-row-top[data-v-8986f9a5]{align-items:center;gap:8px;width:100%;display:flex}.student-name[data-v-8986f9a5]{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.student-stats[data-v-8986f9a5]{flex-shrink:0;gap:4px;display:flex}.quick-btns[data-v-8986f9a5]{gap:6px;width:100%;margin-top:6px;display:flex}.quick-btn[data-v-8986f9a5]{cursor:pointer;opacity:.45;background:0 0;border:1px solid #0000;border-radius:8px;flex:1;padding:5px 0;font-size:12px;font-weight:700;transition:opacity .15s,transform .12s}.quick-btn[data-v-8986f9a5]:hover{opacity:.75;transform:translateY(-1px)}.quick-btn.present[data-v-8986f9a5]{color:#2e7d32;border-color:#2e7d32}.quick-btn.retard[data-v-8986f9a5]{color:#b45309;border-color:#b45309}.quick-btn.absent[data-v-8986f9a5]{color:#b71c1c;border-color:#b71c1c}.quick-btn.present.active[data-v-8986f9a5]{opacity:1;background:#e7f6ea;border-color:#2e7d32}.quick-btn.retard.active[data-v-8986f9a5]{opacity:1;background:#fff4d6;border-color:#b45309}.quick-btn.absent.active[data-v-8986f9a5]{opacity:1;background:#fde7e7;border-color:#b71c1c}.retard-time-row[data-v-8986f9a5]{background:#fff4d6;border-radius:8px;align-items:center;gap:8px;margin-top:6px;padding:6px 8px;display:flex}.retard-time-label[data-v-8986f9a5]{color:#b45309;white-space:nowrap;font-size:11px;font-weight:700}.retard-time-input[data-v-8986f9a5]{color:var(--color-text);background:#fff;border:1px solid #f3de9c;border-radius:6px;outline:none;flex:1;padding:3px 6px;font-size:12px}.retard-time-input[data-v-8986f9a5]:focus{border-color:#b45309}.stat[data-v-8986f9a5]{border-radius:6px;padding:2px 5px;font-size:11px;font-weight:700}.stat.present[data-v-8986f9a5]{color:#2e7d32;background:#e7f6ea}.stat.retard[data-v-8986f9a5]{color:#b45309;background:#fff4d6}.stat.absent[data-v-8986f9a5]{color:#b71c1c;background:#fde7e7}.btn-success[data-v-8986f9a5]{color:#fff;background:linear-gradient(135deg,#2e7d32,#1b5e20)}.btn-success[data-v-8986f9a5]:hover:not(:disabled){background:linear-gradient(135deg,#388e3c,#1b5e20)}.btn-absent[data-v-8986f9a5]{color:#fff;background:linear-gradient(135deg,#b71c1c,#7f0000)}.btn-absent[data-v-8986f9a5]:hover:not(:disabled){background:linear-gradient(135deg,#c62828,#7f0000)}.stats-title[data-v-8986f9a5]{color:var(--color-text-light);margin-bottom:8px;font-size:14px}.stats-value[data-v-8986f9a5]{color:var(--color-primary-dark);font-size:30px;font-weight:700}.stats-value.danger[data-v-8986f9a5]{color:var(--color-danger)}.stats-value.warning[data-v-8986f9a5]{color:var(--color-warning)}.error-text[data-v-8986f9a5]{color:var(--color-danger);font-weight:600}.textarea[data-v-8986f9a5]{border:1px solid var(--color-border);resize:vertical;background:#fff;border-radius:10px;outline:none;width:100%;padding:12px 14px}.popup-overlay[data-v-8986f9a5]{z-index:2000;background:#140f1966;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.popup-card[data-v-8986f9a5]{border:1px solid var(--color-border);background:#fff;border-radius:18px;width:100%;max-width:540px;overflow:hidden;box-shadow:0 16px 40px #00000029}.popup-header[data-v-8986f9a5]{border-bottom:1px solid var(--color-border);justify-content:space-between;gap:16px;padding:20px;display:flex}.popup-header h3[data-v-8986f9a5]{color:var(--color-primary-dark);margin:0 0 4px}.popup-header p[data-v-8986f9a5]{color:var(--color-text-light);margin:0}.popup-close[data-v-8986f9a5]{cursor:pointer;background:0 0;border:none;font-size:28px}.popup-body[data-v-8986f9a5]{padding:20px}.status-options[data-v-8986f9a5]{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.status-btn[data-v-8986f9a5]{border:1px solid var(--color-border);cursor:pointer;background:#fff;border-radius:10px;padding:10px 14px;font-weight:700}.status-btn.active[data-v-8986f9a5]{outline:2px solid var(--color-primary)}.status-btn.success[data-v-8986f9a5]{color:var(--color-success)}.status-btn.warning[data-v-8986f9a5]{color:var(--color-warning)}.status-btn.danger[data-v-8986f9a5]{color:var(--color-danger)}.current-status[data-v-8986f9a5]{margin-bottom:16px}.popup-actions[data-v-8986f9a5]{justify-content:flex-end;gap:12px;padding:0 20px 20px;display:flex}.btn-danger[data-v-8986f9a5]{background:var(--color-danger);color:#fff}@media (width<=768px){.attendance-layout[data-v-8986f9a5]{grid-template-columns:1fr}.cell-bl[data-v-8986f9a5]{align-self:auto;position:static}.student-list-card[data-v-8986f9a5]{max-height:420px;position:static!important}.student-list[data-v-8986f9a5]{max-height:320px}.popup-overlay[data-v-8986f9a5]{align-items:flex-end;padding:0}.popup-card[data-v-8986f9a5]{border-radius:22px 22px 0 0;max-width:100%;max-height:92vh;overflow-y:auto}.popup-actions[data-v-8986f9a5]{flex-wrap:wrap;justify-content:stretch}.popup-actions .btn[data-v-8986f9a5]{flex:1}}.form-grid[data-v-77a9f88a]{grid-template-columns:1fr 1.4fr .5fr;gap:16px;display:grid}.filter-row[data-v-77a9f88a]{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.result-count[data-v-77a9f88a]{color:var(--color-text-light);margin-top:10px;font-size:13px;font-weight:700}.form-actions[data-v-77a9f88a],.action-buttons[data-v-77a9f88a]{flex-wrap:wrap;gap:12px;display:flex}.pagination[data-v-77a9f88a]{justify-content:center;align-items:center;gap:16px;padding:16px;display:flex}.page-info[data-v-77a9f88a]{color:var(--color-text-light);font-size:14px;font-weight:700}.print-btn[data-v-77a9f88a]{white-space:nowrap;align-self:flex-end;margin-bottom:16px}.print-only[data-v-77a9f88a]{display:none}.btn-sm[data-v-77a9f88a]{padding:8px 12px;font-size:13px}.btn-danger[data-v-77a9f88a]{color:#fff;background:linear-gradient(135deg,#d13a3a,#a71919)}.btn-danger[data-v-77a9f88a]:hover:not(:disabled){background:linear-gradient(135deg,#df4a4a,#a71919)}.textarea[data-v-77a9f88a]{border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;background:#fff;outline:none;width:100%;padding:12px 14px}.textarea[data-v-77a9f88a]:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #6a1b5c17}@media (width<=992px){.form-grid[data-v-77a9f88a]{grid-template-columns:1fr}.filter-row[data-v-77a9f88a]{flex-direction:column;align-items:stretch}.print-btn[data-v-77a9f88a]{align-self:stretch}}.form-grid[data-v-2c1e0d15]{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.filter-grid[data-v-2c1e0d15]{grid-template-columns:1fr 1.4fr;gap:16px;display:grid}.form-actions[data-v-2c1e0d15],.action-buttons[data-v-2c1e0d15]{flex-wrap:wrap;gap:12px;display:flex}.error-text[data-v-2c1e0d15]{color:var(--color-danger);font-weight:600}.file-name[data-v-2c1e0d15]{white-space:nowrap;text-overflow:ellipsis;max-width:220px;display:inline-block;overflow:hidden}.btn-sm[data-v-2c1e0d15]{padding:8px 12px;font-size:13px}.btn-danger[data-v-2c1e0d15]{background:var(--color-danger);color:#fff}@media (width<=992px){.form-grid[data-v-2c1e0d15],.filter-grid[data-v-2c1e0d15]{grid-template-columns:1fr}}.tab-bar[data-v-3c9e14c0]{gap:8px;margin-bottom:24px;display:flex}.tab-btn[data-v-3c9e14c0]{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;background:#ffffffeb;padding:10px 20px;font-weight:800;transition:background .18s,border-color .18s,color .18s}.tab-btn[data-v-3c9e14c0]:hover{background:var(--color-primary-soft);color:var(--color-primary-dark);border-color:#6a1b5c40}.tab-btn.active[data-v-3c9e14c0]{background:linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));color:#fff;border-color:#0000}.mode-selector[data-v-3c9e14c0]{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.mode-btn[data-v-3c9e14c0]{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);background:#fff;padding:8px 16px;font-size:13px;font-weight:800;transition:background .15s,border-color .15s}.mode-btn[data-v-3c9e14c0]:hover{background:var(--color-primary-soft);color:var(--color-primary-dark);border-color:#6a1b5c33}.mode-btn.active[data-v-3c9e14c0]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.form-grid-2[data-v-3c9e14c0]{grid-template-columns:1.4fr 1fr;gap:16px;display:grid}.form-actions[data-v-3c9e14c0]{flex-wrap:wrap;gap:12px;display:flex}.mt-card[data-v-3c9e14c0]{margin-top:20px}.recipients-info[data-v-3c9e14c0]{color:var(--color-text-light);margin-bottom:16px;font-size:14px}.email-list[data-v-3c9e14c0]{flex-direction:column;gap:12px;display:flex}.email-item[data-v-3c9e14c0]{border-bottom:1px solid var(--color-border);padding:14px 0}.email-item[data-v-3c9e14c0]:last-child{border-bottom:none}.email-item-header[data-v-3c9e14c0]{justify-content:space-between;align-items:center;gap:8px;display:flex}.msg-delete-btn[data-v-3c9e14c0]{cursor:pointer;opacity:.5;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 6px;font-size:14px;transition:opacity .15s,background .15s}.msg-delete-btn[data-v-3c9e14c0]:hover:not(:disabled){opacity:1;background:#fde8e8}.btn-danger-outline[data-v-3c9e14c0]{color:#d13a3a;border-color:#d13a3a}.btn-danger-outline[data-v-3c9e14c0]:hover:not(:disabled){background:#fde8e8}.email-item p[data-v-3c9e14c0]{color:var(--color-text-light);margin:4px 0;font-size:14px}.email-item small[data-v-3c9e14c0]{color:var(--color-text-light);font-size:12px}.compose-form[data-v-3c9e14c0]{border-top:1px solid var(--color-border);margin-top:8px;padding-top:16px}.recipient-type-selector[data-v-3c9e14c0]{flex-wrap:wrap;gap:20px;display:flex}.radio-label[data-v-3c9e14c0]{cursor:pointer;color:var(--color-text);align-items:center;gap:6px;font-size:14px;font-weight:700;display:flex}.messages-list[data-v-3c9e14c0]{flex-direction:column;gap:12px;display:flex}.message-card[data-v-3c9e14c0]{cursor:default}.message-header[data-v-3c9e14c0]{cursor:pointer;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.message-from[data-v-3c9e14c0]{align-items:center;gap:10px;display:flex}.msg-avatar[data-v-3c9e14c0]{background:var(--color-primary-soft);width:36px;height:36px;color:var(--color-primary-dark);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:900;display:flex}.message-from strong[data-v-3c9e14c0]{color:var(--color-primary-dark);font-size:14px;display:block}.message-from small[data-v-3c9e14c0]{color:var(--color-text-light);font-size:12px}.message-meta[data-v-3c9e14c0]{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.msg-recipient[data-v-3c9e14c0]{color:var(--color-text-light);font-size:13px}.msg-date[data-v-3c9e14c0]{color:var(--color-text-light);white-space:nowrap;font-size:12px}.msg-chevron[data-v-3c9e14c0]{color:var(--color-text-light);font-size:11px}.msg-read-badge[data-v-3c9e14c0]{color:#2e7d32;white-space:nowrap;background:#e8f5e9;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800}.message-subject[data-v-3c9e14c0]{color:var(--color-primary-dark);margin-top:10px;font-size:15px;font-weight:800}.message-body[data-v-3c9e14c0]{border-top:1px solid var(--color-border);color:var(--color-text);white-space:pre-wrap;margin-top:12px;padding-top:12px;font-size:14px;line-height:1.6}.textarea[data-v-3c9e14c0]{border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;background:#fff;outline:none;width:100%;padding:12px 14px}.textarea[data-v-3c9e14c0]:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #6a1b5c17}@media (width<=768px){.form-grid-2[data-v-3c9e14c0]{grid-template-columns:1fr}.message-header[data-v-3c9e14c0]{flex-direction:column}}.form-grid[data-v-78876d0e]{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}.form-actions[data-v-78876d0e],.action-buttons[data-v-78876d0e]{flex-wrap:wrap;gap:12px;display:flex}.info-text[data-v-78876d0e]{color:var(--color-text-light);margin-top:14px;font-size:14px}.error-text[data-v-78876d0e]{color:var(--color-danger);font-weight:600}.btn-sm[data-v-78876d0e]{padding:8px 12px;font-size:13px}.btn-danger[data-v-78876d0e]{background:var(--color-danger);color:#fff}@media (width<=992px){.form-grid[data-v-78876d0e]{grid-template-columns:1fr}}.form-grid[data-v-e86972c6]{grid-template-columns:1.2fr .8fr .8fr;gap:16px;display:grid}.form-actions[data-v-e86972c6],.action-buttons[data-v-e86972c6]{flex-wrap:wrap;gap:12px;display:flex}.error-text[data-v-e86972c6]{color:var(--color-danger);font-weight:600}.textarea[data-v-e86972c6]{border:1px solid var(--color-border);resize:vertical;background:#fff;border-radius:10px;outline:none;width:100%;padding:12px 14px}.textarea[data-v-e86972c6]:focus{border-color:var(--color-primary)}.content-preview[data-v-e86972c6]{white-space:nowrap;text-overflow:ellipsis;max-width:420px;display:inline-block;overflow:hidden}.btn-sm[data-v-e86972c6]{padding:8px 12px;font-size:13px}.btn-danger[data-v-e86972c6]{background:var(--color-danger);color:#fff}@media (width<=992px){.form-grid[data-v-e86972c6]{grid-template-columns:1fr}}.form-grid[data-v-4a1b6a56]{grid-template-columns:1.2fr 1fr .8fr 1.2fr;gap:16px;display:grid}.filter-grid[data-v-4a1b6a56]{grid-template-columns:1fr 1.4fr;gap:16px;display:grid}.form-actions[data-v-4a1b6a56],.action-buttons[data-v-4a1b6a56]{flex-wrap:wrap;gap:12px;display:flex}.error-text[data-v-4a1b6a56]{color:var(--color-danger);font-weight:600}.btn-sm[data-v-4a1b6a56]{padding:8px 12px;font-size:13px}.btn-danger[data-v-4a1b6a56]{background:var(--color-danger);color:#fff}.section-subtitle[data-v-4a1b6a56]{color:var(--color-text-light);margin:6px 0 0}.grades-table[data-v-4a1b6a56]{flex-direction:column;gap:10px;display:flex}.grades-header[data-v-4a1b6a56],.grades-row[data-v-4a1b6a56]{grid-template-columns:1.2fr .4fr 1.4fr;align-items:center;gap:12px;display:grid}.grades-header[data-v-4a1b6a56]{color:var(--color-primary-dark);border-bottom:1px solid var(--color-border);padding:10px 0}.grades-row[data-v-4a1b6a56]{border-bottom:1px solid var(--color-border);padding:10px 0}.grades-row p[data-v-4a1b6a56]{color:var(--color-text-light);margin:4px 0 0;font-size:13px}@media (width<=992px){.form-grid[data-v-4a1b6a56],.filter-grid[data-v-4a1b6a56]{grid-template-columns:1fr}.grades-header[data-v-4a1b6a56]{display:none}.grades-row[data-v-4a1b6a56]{grid-template-columns:1fr}}.error-text[data-v-7872d861]{color:var(--color-danger);font-weight:600}.btn-sm[data-v-7872d861]{padding:8px 12px;font-size:13px}.form-grid[data-v-95b7278c]{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}.form-actions[data-v-95b7278c],.action-buttons[data-v-95b7278c]{flex-wrap:wrap;gap:12px;display:flex}.info-text[data-v-95b7278c]{color:var(--color-text-light);margin-top:14px;font-size:14px}.error-text[data-v-95b7278c]{color:var(--color-danger);font-weight:800}@media (width<=992px){.form-grid[data-v-95b7278c]{grid-template-columns:1fr}}.filter-grid[data-v-d1cd66dd]{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-grid[data-v-d1cd66dd]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid}.form-actions[data-v-d1cd66dd]{flex-wrap:wrap;gap:12px;display:flex}.type-toggle[data-v-d1cd66dd]{gap:8px;display:flex}.toggle-btn[data-v-d1cd66dd]{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;background:#ffffffeb;padding:8px 16px;font-size:14px;font-weight:700;transition:all .18s}.toggle-btn[data-v-d1cd66dd]:hover{background:var(--color-primary-soft);border-color:#6a1b5c40}.toggle-btn.active[data-v-d1cd66dd]{background:linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));color:#fff;border-color:#0000}.devoirs-count[data-v-d1cd66dd]{color:var(--color-text-light);margin-top:10px;font-size:13px;font-weight:700}.pagination[data-v-d1cd66dd]{justify-content:center;align-items:center;gap:16px;margin-top:24px;display:flex}.page-info[data-v-d1cd66dd]{color:var(--color-text-light);font-size:14px;font-weight:700}.devoirs-list[data-v-d1cd66dd]{flex-direction:column;gap:16px;display:flex}.devoir-card[data-v-d1cd66dd]{transition:border-color .18s}.devoir-card.overdue[data-v-d1cd66dd]{border-color:#c628284d}.devoir-header[data-v-d1cd66dd]{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.devoir-meta[data-v-d1cd66dd]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.devoir-subject[data-v-d1cd66dd]{background:var(--color-primary-soft);color:var(--color-primary-dark);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:900}.devoir-class[data-v-d1cd66dd]{color:var(--color-text-light);font-size:13px;font-weight:700}.devoir-scope[data-v-d1cd66dd]{border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700}.student-scope[data-v-d1cd66dd]{color:#155ea8;background:#e7f1fd}.devoir-due[data-v-d1cd66dd]{color:var(--color-text-light);white-space:nowrap;font-size:13px;font-weight:700}.devoir-due.danger[data-v-d1cd66dd]{color:var(--color-danger)}.devoir-title[data-v-d1cd66dd]{color:var(--color-primary-dark);margin-bottom:8px;font-size:17px;font-weight:900}.devoir-description[data-v-d1cd66dd]{color:var(--color-text);margin-bottom:14px;font-size:14px;line-height:1.55}.devoir-footer[data-v-d1cd66dd]{border-top:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;display:flex}.devoir-teacher[data-v-d1cd66dd]{color:var(--color-text-light);font-size:13px}.devoir-actions[data-v-d1cd66dd]{gap:8px;display:flex}.btn-danger[data-v-d1cd66dd]{color:#fff;background:linear-gradient(135deg,#d13a3a,#a71919)}.btn-danger[data-v-d1cd66dd]:hover:not(:disabled){background:linear-gradient(135deg,#df4a4a,#a71919)}@media (width<=992px){.filter-grid[data-v-d1cd66dd]{grid-template-columns:1fr}.type-toggle[data-v-d1cd66dd]{flex-wrap:wrap}}@media (width<=768px){.form-grid[data-v-d1cd66dd]{grid-template-columns:1fr}}.mt-card[data-v-9d1fd43b]{margin-top:20px}.mode-selector[data-v-9d1fd43b]{gap:8px;display:flex}.mode-btn[data-v-9d1fd43b]{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);background:#fff;padding:8px 18px;font-size:13px;font-weight:800;transition:background .15s,border-color .15s}.mode-btn[data-v-9d1fd43b]:hover{background:var(--color-primary-soft)}.mode-btn.active[data-v-9d1fd43b]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.period-presets[data-v-9d1fd43b]{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.preset-btn[data-v-9d1fd43b]{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);background:#fff;padding:6px 14px;font-size:12px;font-weight:700;transition:background .15s,border-color .15s}.preset-btn[data-v-9d1fd43b]:hover{background:var(--color-primary-soft)}.preset-btn.active[data-v-9d1fd43b]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.date-range[data-v-9d1fd43b]{grid-template-columns:1fr 1fr;gap:16px;display:grid}.student-preview[data-v-9d1fd43b]{background:var(--color-primary-soft);border-radius:var(--radius-md);border:1px solid #6a1b5c26;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:16px;padding:12px 16px;display:flex}.preview-name[data-v-9d1fd43b]{color:var(--color-primary-dark);font-weight:900}.preview-class[data-v-9d1fd43b],.preview-count[data-v-9d1fd43b]{color:var(--color-text-light);font-size:13px}.preview-avg[data-v-9d1fd43b]{font-size:13px;font-weight:800}.mt-group[data-v-9d1fd43b]{margin-top:4px}.class-count[data-v-9d1fd43b]{color:var(--color-text-light);margin-bottom:16px;font-size:13px;font-weight:700}.rows-section[data-v-9d1fd43b]{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:16px;overflow:hidden}.rows-header[data-v-9d1fd43b]{background:var(--color-primary-soft);border-bottom:1px solid var(--color-border);align-items:baseline;gap:10px;padding:10px 14px;display:flex}.rows-title[data-v-9d1fd43b]{color:var(--color-primary-dark);font-size:13px;font-weight:800}.rows-hint[data-v-9d1fd43b]{color:var(--color-text-light);font-size:12px}.rows-table[data-v-9d1fd43b]{border-collapse:collapse;width:100%}.rows-table th[data-v-9d1fd43b]{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-light);text-align:left;border-bottom:1px solid var(--color-border);background:#fff;padding:7px 10px;font-size:11px;font-weight:800}.col-subject[data-v-9d1fd43b]{width:42%}.col-weight[data-v-9d1fd43b]{width:13%}.col-score[data-v-9d1fd43b],.col-max[data-v-9d1fd43b]{width:16%}.col-del[data-v-9d1fd43b]{width:13%}.row-edit td[data-v-9d1fd43b]{border-bottom:1px solid var(--color-border);background:#fff;padding:5px 8px}.row-edit:last-child td[data-v-9d1fd43b]{border-bottom:none}.row-edit:nth-child(2n) td[data-v-9d1fd43b]{background:#fafafa}.row-input[data-v-9d1fd43b]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;outline:none;width:100%;padding:5px 8px;font-size:13px;font-weight:600}.row-input[data-v-9d1fd43b]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6a1b5c14}.row-input-sm[data-v-9d1fd43b]{border:1px solid var(--color-border);border-radius:var(--radius-sm);text-align:center;background:#fff;outline:none;width:100%;padding:5px 6px;font-size:13px;font-weight:600}.row-input-sm[data-v-9d1fd43b]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6a1b5c14}.row-del-btn[data-v-9d1fd43b]{border-radius:var(--radius-sm);color:#c0392b;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:28px;height:28px;transition:background .15s;display:flex}.row-del-btn[data-v-9d1fd43b]:hover{background:#fdecea}.add-row-form[data-v-9d1fd43b]{border-top:1px solid var(--color-border);background:#fafafa;grid-template-columns:1fr 65px 80px 70px auto;align-items:center;gap:6px;padding:10px;display:grid}.btn-add-row[data-v-9d1fd43b]{background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:none;padding:6px 12px;font-size:12px;font-weight:800;transition:opacity .15s}.btn-add-row[data-v-9d1fd43b]:hover{opacity:.88}.form-actions[data-v-9d1fd43b]{margin-top:8px}.textarea[data-v-9d1fd43b]{border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;background:#fff;outline:none;width:100%;padding:10px 14px;font-size:14px}.textarea[data-v-9d1fd43b]:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #6a1b5c17}@media (width<=768px){.date-range[data-v-9d1fd43b]{grid-template-columns:1fr}.add-row-form[data-v-9d1fd43b]{grid-template-columns:1fr 55px 65px 55px auto;gap:4px}}.stats-grid[data-v-288f5db7]{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px;display:grid}.stat-card[data-v-288f5db7]{border-radius:var(--radius-md);border:1px solid #0000;padding:18px 20px}.stat-label[data-v-288f5db7]{text-transform:uppercase;letter-spacing:.05em;opacity:.75;margin-bottom:6px;font-size:12px;font-weight:700}.stat-value[data-v-288f5db7]{font-size:28px;font-weight:900;line-height:1.1}.stat-sub[data-v-288f5db7]{opacity:.7;margin-top:4px;font-size:12px}.stat-green[data-v-288f5db7]{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.stat-orange[data-v-288f5db7]{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.stat-red[data-v-288f5db7]{color:#991b1b;background:#fef2f2;border-color:#fecaca}.stat-blue[data-v-288f5db7]{color:#1e40af;background:#eff6ff;border-color:#bfdbfe}.tabs-bar[data-v-288f5db7]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.tabs-left[data-v-288f5db7]{gap:4px;display:flex}.tab-btn[data-v-288f5db7]{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);background:#fff;padding:8px 16px;font-size:13px;font-weight:700;transition:background .15s,border-color .15s}.tab-btn[data-v-288f5db7]:hover{background:var(--color-primary-soft)}.tab-btn.active[data-v-288f5db7]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.btn-sm[data-v-288f5db7]{padding:8px 16px;font-size:13px}.mt-card[data-v-288f5db7]{margin-top:16px}.mb-16[data-v-288f5db7]{margin-bottom:16px}.mt-16[data-v-288f5db7]{margin-top:16px}.card-head[data-v-288f5db7]{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.card-title[data-v-288f5db7]{color:var(--color-primary-dark);align-items:center;gap:8px;font-size:15px;font-weight:800;display:flex}.alert-dot[data-v-288f5db7]{background:#ef4444;border-radius:50%;width:8px;height:8px;animation:1.6s ease-in-out infinite pulse-288f5db7;display:inline-block}@keyframes pulse-288f5db7{0%,to{opacity:1}50%{opacity:.4}}.count-badge[data-v-288f5db7]{background:var(--color-primary-soft);color:var(--color-primary-dark);border:1px solid #6a1b5c26;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:800}.empty-msg[data-v-288f5db7]{color:var(--color-text-light);padding:12px 0;font-size:13px;font-style:italic}.loading-state[data-v-288f5db7]{color:var(--color-text-light);text-align:center;padding:24px;font-size:13px}.table-wrap[data-v-288f5db7]{overflow-x:auto}.data-table[data-v-288f5db7]{border-collapse:collapse;width:100%;font-size:13px}.data-table th[data-v-288f5db7]{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-light);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:9px 12px;font-size:11px;font-weight:800}.data-table td[data-v-288f5db7]{border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:middle;padding:10px 12px}.data-table tbody tr:last-child td[data-v-288f5db7]{border-bottom:none}.data-table tbody tr:hover td[data-v-288f5db7]{background:var(--color-primary-soft)}.td-name[data-v-288f5db7]{color:var(--color-primary-dark);font-weight:700}.td-amount[data-v-288f5db7]{font-variant-numeric:tabular-nums;font-weight:800}.td-period[data-v-288f5db7]{font-weight:600}.td-late[data-v-288f5db7]{color:#dc2626;font-weight:700}.status-badge[data-v-288f5db7]{white-space:nowrap;border:1px solid #0000;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:800;display:inline-block}.badge-paid[data-v-288f5db7]{color:#166534;background:#f0fdf4;border-color:#86efac}.badge-pending[data-v-288f5db7]{color:#9a3412;background:#fff7ed;border-color:#fdba74}.badge-late[data-v-288f5db7]{color:#991b1b;background:#fef2f2;border-color:#fca5a5}.badge-exempt[data-v-288f5db7]{color:#1e40af;background:#eff6ff;border-color:#93c5fd}.row-actions[data-v-288f5db7]{align-items:center;gap:4px;display:flex}.action-btn[data-v-288f5db7]{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;padding:4px 8px;font-size:12px;font-weight:700;transition:opacity .15s,background .15s;display:inline-flex}.btn-pay[data-v-288f5db7]{color:#166534;background:#f0fdf4;border-color:#86efac}.btn-pay[data-v-288f5db7]:hover{background:#dcfce7}.btn-edit[data-v-288f5db7]{background:var(--color-primary-soft);color:var(--color-primary-dark);border-color:#6a1b5c33}.btn-edit[data-v-288f5db7]:hover{background:#6a1b5c26}.btn-del[data-v-288f5db7]{color:#991b1b;background:#fef2f2;border-color:#fca5a5}.btn-del[data-v-288f5db7]:hover{background:#fee2e2}.student-header[data-v-288f5db7]{background:var(--color-primary-soft);border-radius:var(--radius-md);border:1px solid #6a1b5c26;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;display:flex}.student-info[data-v-288f5db7]{flex-direction:column;gap:2px;display:flex}.student-name[data-v-288f5db7]{color:var(--color-primary-dark);font-size:16px;font-weight:900}.student-class[data-v-288f5db7]{color:var(--color-text-light);font-size:13px}.balance-chips[data-v-288f5db7]{flex-wrap:wrap;gap:8px;display:flex}.balance-chip[data-v-288f5db7]{border:1px solid #0000;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:800}.chip-total[data-v-288f5db7]{color:#5c0f1e;background:#f8f0ff;border-color:#5c0f1e33}.chip-paid[data-v-288f5db7]{color:#166534;background:#f0fdf4;border-color:#86efac}.chip-due[data-v-288f5db7]{color:#991b1b;background:#fef2f2;border-color:#fca5a5}.chip-ok[data-v-288f5db7]{color:#166534;background:#f0fdf4;border-color:#86efac}.notes-section[data-v-288f5db7]{border-top:1px solid var(--color-border);margin-top:16px;padding-top:14px}.notes-title[data-v-288f5db7]{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-light);margin-bottom:8px;font-size:12px;font-weight:800}.note-row[data-v-288f5db7]{gap:10px;padding:4px 0;font-size:13px;display:flex}.note-period[data-v-288f5db7]{color:var(--color-primary-dark);min-width:90px;font-weight:700}.note-text[data-v-288f5db7]{color:var(--color-text-light);font-style:italic}.filters-row[data-v-288f5db7]{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.filter-input[data-v-288f5db7],.filter-select[data-v-288f5db7]{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);background:#fff;outline:none;padding:8px 12px;font-size:13px}.filter-input[data-v-288f5db7]{flex:1;min-width:160px}.filter-select[data-v-288f5db7]{min-width:150px}.filter-input[data-v-288f5db7]:focus,.filter-select[data-v-288f5db7]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6a1b5c14}.modal-overlay[data-v-288f5db7]{z-index:3000;background:#140f1973;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card[data-v-288f5db7]{border:1px solid var(--color-border);background:#fff;border-radius:18px;flex-direction:column;width:100%;max-width:520px;max-height:90vh;display:flex;box-shadow:0 16px 40px #00000029}.modal-header[data-v-288f5db7]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px 22px 16px;display:flex}.modal-header h3[data-v-288f5db7]{color:var(--color-primary-dark);font-size:17px;font-weight:900}.modal-close[data-v-288f5db7]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;font-size:26px}.modal-body[data-v-288f5db7]{flex-direction:column;gap:14px;padding:20px 22px;display:flex;overflow-y:auto}.modal-footer[data-v-288f5db7]{border-top:1px solid var(--color-border);justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}.form-row[data-v-288f5db7]{grid-template-columns:1fr 1fr;gap:14px;display:grid}.textarea[data-v-288f5db7]{border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;outline:none;width:100%;padding:9px 12px;font-size:13px}.textarea[data-v-288f5db7]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6a1b5c14}.form-actions[data-v-288f5db7]{justify-content:flex-end;display:flex}@media (width<=900px){.stats-grid[data-v-288f5db7]{grid-template-columns:repeat(2,1fr)}}@media (width<=600px){.stats-grid[data-v-288f5db7]{grid-template-columns:1fr 1fr;gap:10px}.stat-value[data-v-288f5db7]{font-size:22px}.form-row[data-v-288f5db7]{grid-template-columns:1fr}.tabs-bar[data-v-288f5db7]{flex-direction:column;align-items:stretch}.tabs-left[data-v-288f5db7]{flex-wrap:wrap}.filters-row[data-v-288f5db7]{flex-direction:column}}@media (width<=480px){.modal-overlay[data-v-288f5db7]{align-items:flex-end;padding:0}.modal-card[data-v-288f5db7]{border-radius:22px 22px 0 0;max-width:100%;max-height:92vh}.modal-footer[data-v-288f5db7]{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));flex-direction:column-reverse}.modal-footer .btn[data-v-288f5db7]{width:100%}.balance-chips[data-v-288f5db7]{flex-direction:column;gap:6px}.student-header[data-v-288f5db7]{flex-direction:column;align-items:flex-start}}.cal-layout[data-v-af9980bb]{grid-template-columns:1fr 300px;align-items:start;gap:20px;display:grid}.cal-nav[data-v-af9980bb]{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.cal-nav-center[data-v-af9980bb]{flex-direction:column;align-items:center;gap:4px;display:flex}.cal-month-label[data-v-af9980bb]{color:var(--color-primary-dark);letter-spacing:-.02em;text-transform:capitalize;font-size:20px;font-weight:900}.today-btn[data-v-af9980bb]{color:var(--color-primary);background:var(--color-primary-soft);cursor:pointer;border:1px solid #6a1b5c33;border-radius:20px;padding:2px 10px;font-size:11px;font-weight:700;transition:background .15s}.today-btn[data-v-af9980bb]:hover{background:#6a1b5c26}.nav-btn[data-v-af9980bb]{border:1px solid var(--color-border);cursor:pointer;width:36px;height:36px;color:var(--color-text);box-shadow:var(--shadow-soft);background:#fff;border-radius:999px;justify-content:center;align-items:center;transition:background .15s,border-color .15s;display:flex}.nav-btn[data-v-af9980bb]:hover{background:var(--color-primary-soft);border-color:#6a1b5c40}.cal-grid-header[data-v-af9980bb]{grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:3px;display:grid}.cal-weekday[data-v-af9980bb]{text-align:center;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-light);padding:4px 0;font-size:11px;font-weight:800}.cal-grid[data-v-af9980bb]{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.cal-cell[data-v-af9980bb]{border:1px solid var(--color-border);cursor:pointer;background:#ffffffb3;border-radius:10px;flex-direction:column;gap:3px;min-height:88px;padding:6px 6px 4px;transition:border-color .15s,background .15s;display:flex;position:relative;overflow:hidden}.cal-cell[data-v-af9980bb]:hover:not(.cal-cell--empty){background:#faf5fb;border-color:#6a1b5c4d}.cal-cell--empty[data-v-af9980bb]{cursor:default;background:0 0;border-color:#0000}.cal-cell--today[data-v-af9980bb]{border-color:var(--color-primary);background:var(--color-primary-soft)}.cal-cell--selected[data-v-af9980bb]{border-color:var(--color-primary);box-shadow:0 0 0 2px #6a1b5c2e}.cal-cell--weekend .cal-day-num[data-v-af9980bb]{color:var(--color-text-light)}.cal-day-num[data-v-af9980bb]{color:var(--color-primary-dark);flex-shrink:0;font-size:13px;font-weight:800;line-height:1}.cal-cell--today .cal-day-num[data-v-af9980bb]{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;display:flex}.cal-events-list[data-v-af9980bb]{flex-direction:column;flex:1;gap:2px;display:flex;overflow:hidden}.cal-event-chip[data-v-af9980bb]{white-space:nowrap;text-overflow:ellipsis;border:1px solid;border-radius:4px;padding:2px 5px;font-size:10px;font-weight:700;line-height:1.3;overflow:hidden}.cal-add-day[data-v-af9980bb]{width:18px;height:18px;color:var(--color-primary);cursor:pointer;background:#6a1b5c1f;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:14px;line-height:1;transition:background .12s;display:none;position:absolute;top:4px;right:4px}.cal-cell:hover .cal-add-day[data-v-af9980bb]{display:flex}.cal-add-day[data-v-af9980bb]:hover{background:#6a1b5c38}.cal-legend[data-v-af9980bb]{border-top:1px solid var(--color-border);flex-wrap:wrap;gap:16px;margin-top:12px;padding-top:12px;display:flex}.legend-item[data-v-af9980bb]{color:var(--color-text-light);align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.legend-dot[data-v-af9980bb]{border-radius:50%;flex-shrink:0;width:10px;height:10px}.cal-skeleton[data-v-af9980bb]{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.skel-cell[data-v-af9980bb]{background:linear-gradient(90deg,#f3e8f3 25%,#faf0fa 50%,#f3e8f3 75%) 0 0/200% 100%;border-radius:10px;min-height:88px;animation:1.2s infinite shimmer-af9980bb}@keyframes shimmer-af9980bb{0%{background-position:200% 0}to{background-position:-200% 0}}.cal-sidebar[data-v-af9980bb]{flex-direction:column;gap:16px;display:flex}.side-card[data-v-af9980bb]{border:1px solid var(--color-border);box-shadow:var(--shadow-soft);background:#ffffffe0;border-radius:20px;padding:18px}.side-card-head[data-v-af9980bb]{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.side-title[data-v-af9980bb]{color:var(--color-primary-dark);letter-spacing:-.01em;font-size:15px;font-weight:900}.side-card>.side-title[data-v-af9980bb]{margin-bottom:14px}.side-empty[data-v-af9980bb]{color:var(--color-text-light);padding:8px 0;font-size:13px;font-style:italic}.event-list[data-v-af9980bb]{flex-direction:column;gap:10px;display:flex}.event-card[data-v-af9980bb]{border-left:3px solid var(--color-primary);background:#faf7fb;border-radius:0 10px 10px 0;padding:10px 12px}.event-card-head[data-v-af9980bb]{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.event-type-badge[data-v-af9980bb]{text-transform:uppercase;letter-spacing:.05em;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:800}.event-actions[data-v-af9980bb]{gap:4px;display:flex}.ev-btn[data-v-af9980bb]{border:1px solid var(--color-border);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;width:26px;height:26px;transition:background .12s;display:flex}.ev-btn-edit[data-v-af9980bb]:hover{background:var(--color-primary-soft)}.ev-btn-del[data-v-af9980bb]:hover{color:#dc2626;background:#fef2f2}.event-title[data-v-af9980bb]{color:var(--color-primary-dark);margin-bottom:2px;font-size:14px;font-weight:700}.event-desc[data-v-af9980bb]{color:var(--color-text-light);margin-bottom:4px;font-size:12px;line-height:1.4}.event-dates[data-v-af9980bb]{color:var(--color-text-light);font-size:11px;font-weight:600}.upcoming-list[data-v-af9980bb]{flex-direction:column;gap:8px;display:flex}.upcoming-item[data-v-af9980bb]{cursor:pointer;background:#faf7fb;border-left:3px solid;border-radius:0 8px 8px 0;align-items:center;gap:10px;padding:8px 10px;transition:background .14s;display:flex}.upcoming-item[data-v-af9980bb]:hover{background:var(--color-primary-soft)}.upcoming-date[data-v-af9980bb]{flex-direction:column;align-items:center;min-width:32px;display:flex}.upcoming-day[data-v-af9980bb]{color:var(--color-primary-dark);font-size:18px;font-weight:900;line-height:1}.upcoming-month[data-v-af9980bb]{text-transform:uppercase;color:var(--color-text-light);letter-spacing:.04em;font-size:10px;font-weight:700}.upcoming-info[data-v-af9980bb]{flex:1;min-width:0}.upcoming-title[data-v-af9980bb]{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.upcoming-type[data-v-af9980bb]{font-size:11px;font-weight:600}.modal-overlay[data-v-af9980bb]{z-index:3000;background:#140f1973;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card[data-v-af9980bb]{border:1px solid var(--color-border);background:#fff;border-radius:20px;flex-direction:column;width:100%;max-width:520px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 20px 50px #0000002e}.modal-header[data-v-af9980bb]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px 22px 16px;display:flex}.modal-header h3[data-v-af9980bb]{color:var(--color-primary-dark);font-size:17px;font-weight:900}.modal-close[data-v-af9980bb]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;font-size:26px}.modal-body[data-v-af9980bb]{flex-direction:column;gap:14px;padding:20px 22px;display:flex;overflow-y:auto}.modal-footer[data-v-af9980bb]{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}.form-row[data-v-af9980bb]{grid-template-columns:1fr 1fr;gap:14px;display:grid}.textarea[data-v-af9980bb]{border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;width:100%;color:var(--color-text);background:#fff;outline:none;padding:10px 14px;font-family:inherit;font-size:14px}.textarea[data-v-af9980bb]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6a1b5c14}.type-row[data-v-af9980bb]{flex-wrap:wrap;gap:7px;display:flex}.type-btn[data-v-af9980bb]{border:1.5px solid var(--color-border);cursor:pointer;color:var(--color-text);background:#fff;border-radius:20px;padding:6px 14px;font-size:12px;font-weight:700;transition:background .14s,border-color .14s,color .14s}.type-btn[data-v-af9980bb]:hover{border-color:var(--color-primary)}.type-btn.active[data-v-af9980bb]{font-weight:800}@media (width<=900px){.cal-layout[data-v-af9980bb]{grid-template-columns:1fr}.cal-sidebar[data-v-af9980bb]{order:-1;grid-template-columns:1fr 1fr;display:grid}}@media (width<=600px){.cal-sidebar[data-v-af9980bb]{grid-template-columns:1fr}.cal-cell[data-v-af9980bb]{min-height:56px;padding:4px 3px 2px}.cal-day-num[data-v-af9980bb]{font-size:11px}.cal-event-chip[data-v-af9980bb]{padding:1px 3px;font-size:9px}.form-row[data-v-af9980bb]{grid-template-columns:1fr}.modal-overlay[data-v-af9980bb]{align-items:flex-end;padding:0}.modal-card[data-v-af9980bb]{border-radius:22px 22px 0 0;max-width:100%;max-height:92vh}.modal-footer[data-v-af9980bb]{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));flex-direction:column-reverse}.modal-footer .btn[data-v-af9980bb]{width:100%}}.cal-tabs[data-v-af9980bb]{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.cal-tab[data-v-af9980bb]{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;background:#ffffffeb;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:800;transition:background .18s,border-color .18s,color .18s;display:flex}.cal-tab[data-v-af9980bb]:hover{background:var(--color-primary-soft);color:var(--color-primary-dark);border-color:#6a1b5c40}.cal-tab.active[data-v-af9980bb]{background:linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));color:#fff;border-color:#0000}.cal-tab-desc[data-v-af9980bb]{opacity:.7;font-size:11px;font-weight:500}.cal-tab.active .cal-tab-desc[data-v-af9980bb]{opacity:.85}.week-nav[data-v-1c853284]{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.week-center[data-v-1c853284]{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.week-label[data-v-1c853284]{color:var(--color-primary-dark);font-size:16px;font-weight:900}.today-pill[data-v-1c853284]{border:1px solid var(--color-border);cursor:pointer;color:var(--color-text-light);background:#fff;border-radius:20px;padding:3px 12px;font-size:11px;font-weight:700;transition:background .15s,border-color .15s}.today-pill[data-v-1c853284]:hover{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.nav-btn[data-v-1c853284]{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:#fff;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:background .15s;display:flex}.nav-btn[data-v-1c853284]:hover{background:var(--color-primary-soft)}.btn-add[data-v-1c853284]{flex-shrink:0;margin-left:auto}.agenda-wrap[data-v-1c853284]{border:1px solid var(--color-border);border-radius:var(--radius-md);-webkit-overflow-scrolling:touch;background:#fff;overflow:auto hidden}.agenda-loading[data-v-1c853284]{text-align:center;color:var(--color-text-light);padding:48px}.agenda-grid[data-v-1c853284]{grid-template-columns:52px repeat(7,1fr);min-width:600px;display:grid;overflow-x:auto}.time-col[data-v-1c853284]{border-right:1px solid var(--color-border)}.col-header-empty[data-v-1c853284]{border-bottom:1px solid var(--color-border);height:52px}.time-body[data-v-1c853284]{position:relative}.time-tick[data-v-1c853284]{color:var(--color-text-light);white-space:nowrap;font-size:10px;font-weight:700;line-height:1;position:absolute;right:6px;transform:translateY(-50%)}.day-col[data-v-1c853284]{border-right:1px solid var(--color-border);min-width:90px}.day-col[data-v-1c853284]:last-child{border-right:none}.col-header[data-v-1c853284]{border-bottom:1px solid var(--color-border);background:#fff;flex-direction:column;justify-content:center;align-items:center;gap:2px;height:52px;display:flex;position:relative}.col-header.is-today[data-v-1c853284]{background:var(--color-primary-soft)}.col-wd[data-v-1c853284]{color:var(--color-text-light);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:700}.col-num[data-v-1c853284]{color:var(--color-text);font-size:18px;font-weight:900;line-height:1}.col-header.is-today .col-num[data-v-1c853284]{color:#fff;background:var(--color-primary);border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:flex}.col-add-btn[data-v-1c853284]{width:18px;height:18px;color:var(--color-text-light);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:16px;font-weight:700;line-height:1;transition:opacity .15s,background .15s;display:flex;position:absolute;top:4px;right:4px}.col-header:hover .col-add-btn[data-v-1c853284]{opacity:1}.col-add-btn[data-v-1c853284]:hover{background:var(--color-primary-soft);color:var(--color-primary-dark)}.day-body[data-v-1c853284]{position:relative}.hour-line[data-v-1c853284]{background:var(--color-border);height:1px;position:absolute;left:0;right:0}.session-block[data-v-1c853284]{border-left:3px solid var(--color-primary);cursor:pointer;box-sizing:border-box;background:#6a1b5c1a;border-radius:6px;padding:4px 6px;transition:background .15s,box-shadow .15s;position:absolute;left:3px;right:3px;overflow:hidden}.session-block[data-v-1c853284]:hover{background:#6a1b5c2e;box-shadow:0 2px 8px #6a1b5c26}.sb-subject[data-v-1c853284]{color:var(--color-primary-dark);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:800;line-height:1.3;overflow:hidden}.sb-time[data-v-1c853284]{color:var(--color-primary);font-size:10px;font-weight:600;line-height:1.3}.sb-class[data-v-1c853284],.sb-teacher[data-v-1c853284]{color:var(--color-text-light);white-space:nowrap;text-overflow:ellipsis;font-size:10px;line-height:1.3;overflow:hidden}.modal-overlay[data-v-1c853284]{z-index:1000;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-card[data-v-1c853284]{background:#fff;border-radius:20px;flex-direction:column;width:100%;max-width:520px;display:flex;overflow:hidden;box-shadow:0 24px 64px #00000038}.modal-header[data-v-1c853284]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:18px 22px 14px;display:flex}.modal-header h3[data-v-1c853284]{color:var(--color-primary-dark);font-size:16px;font-weight:900}.modal-close[data-v-1c853284]{cursor:pointer;width:28px;height:28px;color:var(--color-text-light);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:20px;font-weight:700;transition:background .15s;display:flex}.modal-close[data-v-1c853284]:hover{background:#f3f3f3}.modal-body[data-v-1c853284]{flex-direction:column;gap:14px;padding:18px 22px;display:flex}.modal-footer[data-v-1c853284]{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:10px;padding:14px 22px 18px;display:flex}.modal-footer-right[data-v-1c853284]{gap:10px;margin-left:auto;display:flex}.form-row-2[data-v-1c853284]{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-row-3[data-v-1c853284]{grid-template-columns:1fr 1fr 1fr;gap:12px;display:grid}.textarea[data-v-1c853284]{border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;background:#fff;outline:none;width:100%;padding:10px 14px;font-size:14px}.textarea[data-v-1c853284]:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #6a1b5c17}.btn-danger-outline[data-v-1c853284]{color:#d13a3a;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #d13a3a;padding:8px 16px;font-weight:800;transition:background .15s}.btn-danger-outline[data-v-1c853284]:hover:not(:disabled){background:#fde8e8}.filter-bar[data-v-1c853284]{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.filter-select[data-v-1c853284]{flex-shrink:0;min-width:180px}.reset-btn[data-v-1c853284]{flex-shrink:0}@media (width<=768px){.form-row-2[data-v-1c853284],.form-row-3[data-v-1c853284]{grid-template-columns:1fr}.agenda-grid[data-v-1c853284]{min-width:500px}}.reset-page[data-v-9c5d36cf]{background:linear-gradient(#f8f2f7 0%,#f4f1f7 100%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.reset-card[data-v-9c5d36cf]{border:1px solid var(--color-border);background:#fff;border-radius:20px;width:100%;max-width:440px;padding:32px;box-shadow:0 10px 30px #00000014}.brand[data-v-9c5d36cf]{text-align:center;margin-bottom:28px}.logo[data-v-9c5d36cf]{object-fit:contain;width:80px;height:80px;margin:0 auto 12px}.brand h1[data-v-9c5d36cf]{color:var(--color-primary-dark);margin-bottom:6px}.brand p[data-v-9c5d36cf]{color:var(--color-text-light);font-size:14px}.reset-form[data-v-9c5d36cf]{flex-direction:column;gap:4px;display:flex}.submit-btn[data-v-9c5d36cf]{width:100%;margin-top:8px}.form-error[data-v-9c5d36cf]{color:var(--color-danger);text-align:center;margin-top:8px;font-size:14px;font-weight:600}.success-box[data-v-9c5d36cf]{color:#1a6630;text-align:center;background:#e8f8ed;border:1px solid #a8dab5;border-radius:10px;padding:16px;font-size:14px;font-weight:600;line-height:1.6}.waiting[data-v-9c5d36cf]{text-align:center;color:var(--color-text-light);padding:20px 0}.back-link[data-v-9c5d36cf]{text-align:center;color:var(--color-primary);margin-top:20px;font-size:13px;font-weight:700;text-decoration:none;display:block}.back-link[data-v-9c5d36cf]:hover{text-decoration:underline}.profile-header[data-v-199dd545]{align-items:flex-start;gap:28px;display:flex}.avatar-area[data-v-199dd545]{flex-direction:column;flex-shrink:0;align-items:center;gap:10px;display:flex}.avatar-wrapper[data-v-199dd545]{background:var(--color-primary-soft);cursor:pointer;border:3px solid #fff;border-radius:999px;justify-content:center;align-items:center;width:96px;height:96px;display:flex;position:relative;overflow:hidden;box-shadow:0 6px 24px #4100392e}.avatar-img[data-v-199dd545]{object-fit:cover;width:100%;height:100%}.avatar-initial[data-v-199dd545]{color:var(--color-primary-dark);font-size:36px;font-weight:900;line-height:1}.avatar-overlay[data-v-199dd545]{color:#fff;opacity:0;background:#41003985;justify-content:center;align-items:center;transition:opacity .18s;display:flex;position:absolute;inset:0}.avatar-wrapper:hover .avatar-overlay[data-v-199dd545]{opacity:1}.hidden-input[data-v-199dd545]{display:none}.avatar-actions[data-v-199dd545]{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.profile-meta[data-v-199dd545]{flex-direction:column;gap:6px;padding-top:8px;display:flex}.profile-name[data-v-199dd545]{color:var(--color-text);font-size:22px;font-weight:900;line-height:1.1}.profile-role-chip[data-v-199dd545]{color:var(--color-primary);background:var(--color-primary-soft);border-radius:999px;align-self:flex-start;padding:3px 12px;font-size:12px;font-weight:700;display:inline-block}.profile-email[data-v-199dd545]{color:var(--color-text-light);font-size:13px}.section-title[data-v-199dd545]{color:var(--color-text);margin:0 0 16px;font-size:15px;font-weight:800}.form-row[data-v-199dd545]{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.flex-1[data-v-199dd545]{flex:1;min-width:220px}.form-action-col[data-v-199dd545]{padding-bottom:1px}.form-grid[data-v-199dd545]{grid-template-columns:1fr 1fr auto;align-items:end;gap:16px;display:grid}.form-submit[data-v-199dd545]{align-items:flex-end;display:flex}.input-eye-wrap[data-v-199dd545]{position:relative}.input-eye-wrap .input[data-v-199dd545]{padding-right:42px}.eye-btn[data-v-199dd545]{cursor:pointer;color:var(--color-text-light);background:0 0;border:none;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.eye-btn[data-v-199dd545]:hover{color:var(--color-primary)}.btn-sm[data-v-199dd545]{padding:7px 14px;font-size:13px}.danger-text[data-v-199dd545]{color:var(--color-danger)!important}.role-switcher[data-v-199dd545]{padding:0}.role-switcher-title[data-v-199dd545]{color:var(--color-primary-dark);margin-bottom:6px;font-size:18px;font-weight:900}.role-switcher-desc[data-v-199dd545]{color:var(--color-text-light);margin-bottom:16px;font-size:14px}.role-buttons[data-v-199dd545]{flex-wrap:wrap;gap:12px;display:flex}.role-btn[data-v-199dd545]{border:2px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-primary-dark);cursor:pointer;background:#ffffffeb;align-items:center;gap:8px;min-height:44px;padding:10px 18px;font-weight:700;transition:all .18s;display:flex}.role-btn[data-v-199dd545]:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.role-btn.active[data-v-199dd545]{background:linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));color:#fff;border-color:var(--color-primary)}.role-badge[data-v-199dd545]{font-weight:900}@media (width<=768px){.profile-header[data-v-199dd545]{text-align:center;flex-direction:column;align-items:center}.profile-meta[data-v-199dd545]{align-items:center;padding-top:0}.profile-role-chip[data-v-199dd545]{align-self:center}.form-grid[data-v-199dd545]{grid-template-columns:1fr}.form-row[data-v-199dd545]{flex-direction:column;align-items:stretch}}.modal-overlay[data-v-b4fbe474]{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal[data-v-b4fbe474]{background:#fff;border-radius:12px;width:100%;max-width:500px;box-shadow:0 10px 40px #0003}.modal-header[data-v-b4fbe474]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px;display:flex}.modal-header h2[data-v-b4fbe474]{color:var(--color-text);margin:0;font-size:18px}.close-btn[data-v-b4fbe474]{color:var(--color-text-light);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:24px;transition:background .2s;display:flex}.close-btn[data-v-b4fbe474]:hover{background:var(--color-primary-soft);color:var(--color-primary)}.modal-body[data-v-b4fbe474]{flex-direction:column;gap:16px;padding:20px;display:flex}.form-group[data-v-b4fbe474]{flex-direction:column;gap:6px;display:flex}.form-group label[data-v-b4fbe474]{color:var(--color-text);text-transform:uppercase;font-size:13px;font-weight:700}.input[data-v-b4fbe474],.select[data-v-b4fbe474]{border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;font-size:14px;transition:border-color .2s}.input[data-v-b4fbe474]:focus,.select[data-v-b4fbe474]:focus{border-color:var(--color-primary);outline:none}.input-error[data-v-b4fbe474],.select-error[data-v-b4fbe474]{border-color:var(--color-danger)}.error-text[data-v-b4fbe474]{color:var(--color-danger);font-size:12px}.modal-footer[data-v-b4fbe474]{border-top:1px solid var(--color-border);justify-content:flex-end;gap:12px;padding:20px;display:flex}.btn[data-v-b4fbe474]{cursor:pointer;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s}.btn-outline[data-v-b4fbe474]{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.btn-outline[data-v-b4fbe474]:hover{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.btn-primary[data-v-b4fbe474]{background:var(--color-primary);color:#fff}.btn-primary[data-v-b4fbe474]:hover:not(:disabled){background:var(--color-primary-dark)}.btn-primary[data-v-b4fbe474]:disabled{opacity:.6;cursor:not-allowed}.modal-overlay[data-v-c23e6db9]{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal[data-v-c23e6db9]{background:#fff;border-radius:12px;width:100%;max-width:900px;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0003}.modal-header[data-v-c23e6db9]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;gap:16px;padding:20px;display:flex}.modal-header h2[data-v-c23e6db9]{color:var(--color-text);margin:0 0 4px;font-size:18px}.subtitle[data-v-c23e6db9]{color:var(--color-text-light);margin:0;font-size:12px}.close-btn[data-v-c23e6db9]{color:var(--color-text-light);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:24px;transition:background .2s;display:flex}.close-btn[data-v-c23e6db9]:hover{background:var(--color-primary-soft);color:var(--color-primary)}.modal-body[data-v-c23e6db9]{padding:20px;overflow-x:auto}.permissions-grid[data-v-c23e6db9]{border:1px solid var(--color-border);border-radius:8px;min-width:100%;display:inline-block;overflow:hidden}.grid-header[data-v-c23e6db9],.resource-row[data-v-c23e6db9]{border-bottom:1px solid var(--color-border);grid-template-columns:140px repeat(6,1fr);display:grid}.grid-header[data-v-c23e6db9]:last-child,.resource-row[data-v-c23e6db9]:last-child{border-bottom:none}.resource-cell[data-v-c23e6db9],.resource-header[data-v-c23e6db9],.action-header[data-v-c23e6db9],.permission-cell[data-v-c23e6db9]{text-align:center;border-right:1px solid var(--color-border);padding:12px}.resource-cell[data-v-c23e6db9]:last-child,.resource-header[data-v-c23e6db9]:last-child,.action-header[data-v-c23e6db9]:last-child,.permission-cell[data-v-c23e6db9]:last-child{border-right:none}.resource-cell[data-v-c23e6db9]{text-transform:uppercase;color:var(--color-primary-dark);background:#f8f0f7;font-size:12px;font-weight:600}.action-header[data-v-c23e6db9],.resource-header[data-v-c23e6db9]{text-transform:uppercase;color:var(--color-primary-dark);cursor:pointer;background:#f8f0f7;border:none;padding:12px;font-size:12px;font-weight:600;transition:background .2s}.action-header[data-v-c23e6db9]:hover,.resource-header[data-v-c23e6db9]:hover{background:#ead9f0}.action-header.active[data-v-c23e6db9],.resource-header.active[data-v-c23e6db9]{background:var(--color-primary);color:#fff}.permission-cell[data-v-c23e6db9]{background:#fff;justify-content:center;align-items:center;display:flex}.permission-cell input[type=checkbox][data-v-c23e6db9]{cursor:pointer;width:20px;height:20px;accent-color:var(--color-primary)}.permission-cell label[data-v-c23e6db9]{display:none}.modal-footer[data-v-c23e6db9]{border-top:1px solid var(--color-border);justify-content:flex-end;gap:12px;padding:20px;display:flex}.btn[data-v-c23e6db9]{cursor:pointer;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s}.btn-outline[data-v-c23e6db9]{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.btn-outline[data-v-c23e6db9]:hover{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.btn-primary[data-v-c23e6db9]{background:var(--color-primary);color:#fff}.btn-primary[data-v-c23e6db9]:hover:not(:disabled){background:var(--color-primary-dark)}.btn-primary[data-v-c23e6db9]:disabled{opacity:.6;cursor:not-allowed}@media (width<=768px){.modal[data-v-c23e6db9]{max-width:95vw}.permissions-grid[data-v-c23e6db9]{font-size:12px}.grid-header[data-v-c23e6db9],.resource-row[data-v-c23e6db9]{grid-template-columns:100px repeat(6,1fr)}.resource-cell[data-v-c23e6db9],.resource-header[data-v-c23e6db9],.action-header[data-v-c23e6db9],.permission-cell[data-v-c23e6db9]{padding:8px}}.filters[data-v-85740aea]{flex-direction:column;gap:12px;display:flex}.search-bar[data-v-85740aea]{border:1px solid var(--color-border);background:#fff;border-radius:10px;align-items:center;gap:10px;height:44px;padding:0 12px;display:flex}.search-icon[data-v-85740aea]{color:var(--color-text-light);flex-shrink:0}.search-input[data-v-85740aea]{color:var(--color-text);border:none;outline:none;flex:1;font-size:14px}.search-input[data-v-85740aea]::placeholder{color:var(--color-text-light)}.search-btn[data-v-85740aea]{cursor:pointer;color:var(--color-primary);background:0 0;border:none;padding:0 8px;font-size:16px;transition:color .2s}.search-btn[data-v-85740aea]:hover{color:var(--color-primary-dark)}.filter-controls[data-v-85740aea]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.actions-menu[data-v-85740aea]{flex-direction:column;gap:8px;display:flex}.action-link[data-v-85740aea]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;font-weight:700;text-decoration:underline;transition:color .2s}.action-link[data-v-85740aea]:hover{color:var(--color-primary-dark)}.action-link-danger[data-v-85740aea]{color:#c00}.action-link-danger[data-v-85740aea]:hover{color:#900}.modal-overlay[data-v-85740aea]{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-modal[data-v-85740aea]{background:#fff;border-radius:12px;width:100%;max-width:400px;box-shadow:0 10px 40px #0003}.confirm-header[data-v-85740aea]{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px;display:flex}.confirm-header h3[data-v-85740aea]{color:var(--color-text);margin:0;font-size:18px}.close-btn[data-v-85740aea]{color:var(--color-text-light);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:24px;transition:background .2s;display:flex}.close-btn[data-v-85740aea]:hover{background:var(--color-primary-soft);color:var(--color-primary)}.confirm-body[data-v-85740aea]{padding:20px}.confirm-body p[data-v-85740aea]{color:var(--color-text);margin:0 0 12px;font-size:14px}.warning[data-v-85740aea]{color:#c00;background:#ffe6e6;border-radius:6px;padding:8px 12px;font-size:13px}.confirm-footer[data-v-85740aea]{border-top:1px solid var(--color-border);justify-content:flex-end;gap:12px;padding:20px;display:flex}.btn[data-v-85740aea]{cursor:pointer;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s}.btn-outline[data-v-85740aea]{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.btn-outline[data-v-85740aea]:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.btn-danger[data-v-85740aea]{color:#fff;background:#d32f2f}.btn-danger[data-v-85740aea]:hover:not(:disabled){background:#b71c1c}.btn[data-v-85740aea]:disabled{opacity:.6;cursor:not-allowed}.pagination[data-v-85740aea]{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:16px;display:flex}.page-numbers[data-v-85740aea]{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.page-btn[data-v-85740aea]{border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:34px;height:34px;color:var(--color-text);cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:0 8px;font-size:13px;font-weight:700;transition:all .2s;display:flex}.page-btn[data-v-85740aea]:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.page-btn.active[data-v-85740aea]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.page-btn[data-v-85740aea]:disabled{opacity:.35;cursor:default}@media (width<=768px){.filters[data-v-85740aea]{gap:10px}.filter-controls[data-v-85740aea]{grid-template-columns:1fr;gap:10px}.search-bar[data-v-85740aea]{height:40px;padding:0 10px}}.modal-overlay[data-v-b1b67f43]{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal[data-v-b1b67f43]{background:#fff;border-radius:12px;flex-direction:column;width:100%;max-width:1000px;max-height:90vh;display:flex;overflow-y:auto;box-shadow:0 10px 40px #0003}.modal-header[data-v-b1b67f43]{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:20px;display:flex}.modal-header h2[data-v-b1b67f43]{color:var(--color-text);margin:0;font-size:18px}.close-btn[data-v-b1b67f43]{color:var(--color-text-light);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:24px;transition:background .2s;display:flex}.close-btn[data-v-b1b67f43]:hover{background:var(--color-primary-soft);color:var(--color-primary)}.modal-body[data-v-b1b67f43]{flex-direction:column;flex:1;gap:24px;padding:20px;display:flex;overflow-y:auto}.section[data-v-b1b67f43]{border:1px solid var(--color-border);border-radius:8px;padding:16px}.section-title[data-v-b1b67f43]{color:var(--color-text);text-transform:uppercase;letter-spacing:.5px;margin:0 0 16px;font-size:14px;font-weight:700}.info-grid[data-v-b1b67f43]{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;display:grid}.info-item[data-v-b1b67f43]{flex-direction:column;gap:4px;display:flex}.label[data-v-b1b67f43]{color:var(--color-text-light);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:700}.value[data-v-b1b67f43]{color:var(--color-text);word-break:break-word;font-size:14px}.code[data-v-b1b67f43]{background:#f5f5f5;border-radius:4px;padding:4px 8px;font-family:monospace;font-size:12px}.badge[data-v-b1b67f43]{text-transform:uppercase;border-radius:4px;width:fit-content;padding:4px 8px;font-size:12px;font-weight:600;display:inline-block}.badge-create[data-v-b1b67f43]{color:#06c;background:#e6f2ff}.badge-update[data-v-b1b67f43]{color:#c60;background:#fff4e6}.badge-delete[data-v-b1b67f43]{color:#c00;background:#ffe6e6}.badge-archive[data-v-b1b67f43]{color:#666;background:#f0f0f0}.reason-section[data-v-b1b67f43]{border-top:1px solid var(--color-border);flex-direction:column;gap:8px;margin-top:16px;padding-top:16px;display:flex}.reason-text[data-v-b1b67f43]{color:var(--color-text);background:var(--color-primary-soft);border-left:3px solid var(--color-primary);border-radius:6px;margin:0;padding:12px;font-size:14px}.changes-container[data-v-b1b67f43]{flex-direction:column;gap:12px;display:flex}.change-item[data-v-b1b67f43]{background:#f8f8f8;border-radius:6px;flex-direction:column;gap:8px;padding:12px;display:flex}.change-key[data-v-b1b67f43]{color:var(--color-primary-dark);text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:700}.change-row[data-v-b1b67f43]{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}.before-section[data-v-b1b67f43],.after-section[data-v-b1b67f43]{flex-direction:column;gap:6px;display:flex}.before-label[data-v-b1b67f43],.after-label[data-v-b1b67f43]{color:var(--color-text-light);text-transform:uppercase;font-size:11px;font-weight:700}.before-value[data-v-b1b67f43]{color:#c1121f;word-break:break-word;background:#fff;border-left:3px solid #c1121f;border-radius:4px;padding:8px;font-family:monospace;font-size:13px}.after-value[data-v-b1b67f43]{color:#0b6e3f;word-break:break-word;background:#fff;border-left:3px solid #0b6e3f;border-radius:4px;padding:8px;font-family:monospace;font-size:13px}.arrow[data-v-b1b67f43]{color:var(--color-text-light);justify-content:center;align-items:center;font-size:18px;display:flex}.raw-data-container[data-v-b1b67f43]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;display:grid}.raw-data-item[data-v-b1b67f43]{border:1px solid var(--color-border);background:#fff;border-radius:6px;overflow:hidden}.raw-data-header[data-v-b1b67f43]{border-bottom:1px solid var(--color-border);color:var(--color-text);background:#f5f5f5;justify-content:space-between;align-items:center;padding:10px 12px;font-size:12px;font-weight:700;display:flex}.copy-btn[data-v-b1b67f43]{cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 6px;font-size:14px;transition:background .2s}.copy-btn[data-v-b1b67f43]:hover{background:var(--color-primary-soft)}.raw-data-content[data-v-b1b67f43]{color:var(--color-text);background:#f8f8f8;max-height:300px;margin:0;padding:12px;font-family:monospace;font-size:11px;line-height:1.4;overflow-x:auto}.modal-footer[data-v-b1b67f43]{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;gap:12px;padding:20px;display:flex}.btn[data-v-b1b67f43]{cursor:pointer;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s}.btn-outline[data-v-b1b67f43]{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.btn-outline[data-v-b1b67f43]:hover{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}@media (width<=768px){.modal[data-v-b1b67f43]{max-width:95vw}.info-grid[data-v-b1b67f43],.change-row[data-v-b1b67f43]{grid-template-columns:1fr}.arrow[data-v-b1b67f43]{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg)}.raw-data-container[data-v-b1b67f43]{grid-template-columns:1fr}}.filters[data-v-4f5317b1]{flex-direction:column;gap:12px;display:flex}.search-bar[data-v-4f5317b1]{border:1px solid var(--color-border);background:#fff;border-radius:10px;align-items:center;gap:10px;height:44px;padding:0 12px;display:flex}.search-icon[data-v-4f5317b1]{color:var(--color-text-light);flex-shrink:0}.search-input[data-v-4f5317b1]{color:var(--color-text);border:none;outline:none;flex:1;font-size:14px}.search-input[data-v-4f5317b1]::placeholder{color:var(--color-text-light)}.search-btn[data-v-4f5317b1]{cursor:pointer;color:var(--color-primary);background:0 0;border:none;padding:0 8px;font-size:16px;transition:color .2s}.search-btn[data-v-4f5317b1]:hover{color:var(--color-primary-dark)}.filter-controls[data-v-4f5317b1]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.badge[data-v-4f5317b1]{text-transform:uppercase;border-radius:4px;padding:4px 8px;font-size:12px;font-weight:600;display:inline-block}.badge-create[data-v-4f5317b1]{color:#06c;background:#e6f2ff}.badge-update[data-v-4f5317b1]{color:#c60;background:#fff4e6}.badge-delete[data-v-4f5317b1]{color:#c00;background:#ffe6e6}.badge-archive[data-v-4f5317b1]{color:#666;background:#f0f0f0}.action-link[data-v-4f5317b1]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;font-weight:700;text-decoration:underline;transition:color .2s}.action-link[data-v-4f5317b1]:hover{color:var(--color-primary-dark)}.pagination[data-v-4f5317b1]{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:16px;display:flex}.page-numbers[data-v-4f5317b1]{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.page-btn[data-v-4f5317b1]{border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:34px;height:34px;color:var(--color-text);cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:0 8px;font-size:13px;font-weight:700;transition:all .2s;display:flex}.page-btn[data-v-4f5317b1]:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-dark)}.page-btn.active[data-v-4f5317b1]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.page-btn[data-v-4f5317b1]:disabled{opacity:.35;cursor:default}.btn-sm[data-v-4f5317b1]{padding:8px 12px;font-size:13px}@media (width<=768px){.filters[data-v-4f5317b1]{gap:10px}.filter-controls[data-v-4f5317b1]{grid-template-columns:1fr;gap:10px}.search-bar[data-v-4f5317b1]{height:40px;padding:0 10px}}:root{--color-primary:#6a1b5c;--color-primary-dark:#3f0d36;--color-primary-soft:#f4e6f1;--color-bg:#faf7fb;--color-surface:#fff;--color-surface-soft:#ffffffe0;--color-border:#eaddea;--color-text:#2b2230;--color-text-light:#746878;--color-success:#2e7d32;--color-warning:#f9a825;--color-danger:#c62828;--color-info:#1565c0;--header-height:78px;--sidebar-width:250px;--container-width:1240px;--radius-sm:10px;--radius-md:15px;--radius-lg:24px;--shadow-soft:0 14px 34px #41003914;--shadow-hover:0 18px 42px #4100391c}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{min-height:100%;color:var(--color-text);font-family:Inter,Arial,Helvetica,sans-serif}body.modal-open{width:100%;position:fixed;overflow:hidden}body{scrollbar-gutter:stable;background-color:#0000;background-image:radial-gradient(circle at 0 0,#6a1b5c24,#0000 34%),radial-gradient(circle at 100% 100%,#6a1b5c14,#0000 30%),linear-gradient(135deg,#faf7fb 0%,#f4edf6 45%,#fff 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,select,textarea{font:inherit}::selection{background:var(--color-primary-soft);color:var(--color-primary-dark)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#f5edf5}::-webkit-scrollbar-thumb{background:#d6bfd3;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#c6a9c1}.page-shell{flex-direction:column;min-height:100vh;display:flex}.page-body{flex:1;display:flex}.main-content{flex:1;padding:28px}.page-inner{max-width:var(--container-width);flex-direction:column;gap:20px;margin:0 auto;display:flex}.card{background:var(--color-surface-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);border:1px solid #eaddeaf2;padding:24px;transition:transform .18s,box-shadow .18s,border-color .18s}.card:hover{box-shadow:var(--shadow-hover);border-color:#6a1b5c38}.card.compact{padding:16px}.page-title{letter-spacing:-.03em;color:var(--color-primary-dark);margin-bottom:8px;font-size:32px;font-weight:900;line-height:1.15}.page-subtitle{color:var(--color-text-light);margin-bottom:26px;font-size:15px;font-weight:500}.section-header{justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px;display:flex}.section-title{color:var(--color-primary-dark);letter-spacing:-.02em;font-size:20px;font-weight:900;line-height:1.2}.section-subtitle{color:var(--color-text-light);margin:6px 0 0}.grid-2,.grid-4{gap:20px;display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.form-group{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.form-group label{color:var(--color-primary-dark);font-size:13px;font-weight:900}.input,.select,.textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;min-height:48px;color:var(--color-text);background:#fffffff0;outline:none;padding:12px 14px;transition:border-color .18s,box-shadow .18s,background .18s}.input::placeholder,.textarea::placeholder{color:#a89aaa}.input:hover,.select:hover,.textarea:hover{border-color:#6a1b5c40}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 4px #6a1b5c17}.input:read-only{color:var(--color-text-light);background:#fbf8fc}.select{cursor:pointer}.textarea{resize:vertical;min-height:96px}.btn{border-radius:var(--radius-md);cursor:pointer;letter-spacing:-.01em;border:none;justify-content:center;align-items:center;gap:8px;min-width:48px;min-height:48px;padding:12px 18px;font-weight:900;transition:transform .18s,box-shadow .18s,background .18s,border-color .18s,opacity .18s;display:inline-flex}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 22px #41003924}.btn:active:not(:disabled){box-shadow:none;transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));color:#fff}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg, #7b246c, var(--color-primary-dark))}.btn-outline{color:var(--color-primary-dark);border:1px solid var(--color-border);background:#ffffffeb}.btn-outline:hover:not(:disabled){background:var(--color-primary-soft);border-color:#6a1b5c40}.btn-danger{color:#fff;background:linear-gradient(135deg,#d13a3a,#a71919)}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,#df4a4a,#a71919)}.btn-sm{border-radius:12px;min-height:36px;padding:8px 12px;font-size:13px}@media (width<=768px){.btn-sm{min-height:48px;padding:10px 12px;font-size:14px}}.badge{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:7px 12px;font-size:12px;font-weight:900;display:inline-flex}.badge.success{color:#237a35;background:#e6f7ea}.badge.warning{color:#9b6700;background:#fff4d6}.badge.danger{color:#b91c1c;background:#fde7e7}.badge.info{color:#155ea8;background:#e7f1fd}.table-wrapper{border-radius:18px;width:100%;overflow-x:auto}.table-toolbar{flex-wrap:wrap;justify-content:space-between;gap:16px;margin-bottom:18px;display:flex}.table-search{flex:1;min-width:240px}.table-filters{flex-wrap:wrap;gap:12px;display:flex}.filter-item{min-width:180px}.base-table{border-collapse:separate;border-spacing:0;background:0 0;width:100%}.base-table th,.base-table td{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle;padding:15px 16px}.base-table th{color:var(--color-primary-dark);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;background:#f8f0f7;font-size:12px;font-weight:900}.base-table th:first-child{border-top-left-radius:16px}.base-table th:last-child{border-top-right-radius:16px}.base-table td{color:var(--color-text);background:#fff9;font-size:14px}.base-table tbody tr{transition:background .15s}.base-table tbody tr:hover td{background:#f4e6f17a}.base-table tbody tr:last-child td{border-bottom:none}.empty-cell{text-align:center;color:var(--color-text-light);padding:28px;font-weight:700}.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none}.sortable-header.not-sortable{cursor:default}.th-content{justify-content:space-between;align-items:center;gap:8px;display:flex}.sort-icon{color:var(--color-text-light);font-size:11px}.stats-title{color:var(--color-text-light);margin-bottom:8px;font-size:13px;font-weight:800}.stats-value{color:var(--color-primary-dark);letter-spacing:-.04em;font-size:34px;font-weight:900;line-height:1}.stats-value.danger{color:var(--color-danger)}.stats-value.warning{color:var(--color-warning)}.error-text{color:var(--color-danger);font-weight:800}.success-text{color:var(--color-success);font-weight:800}.info-text{color:var(--color-text-light);font-size:14px}@media (width<=1100px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media (width<=992px){.grid-2,.grid-4{grid-template-columns:1fr}.main-content,.page-inner{min-width:0}}@media (width<=768px){:root{--header-height:60px}.page-body{z-index:1;position:relative}.main-content{z-index:1;padding:0;padding-bottom:calc(72px + env(safe-area-inset-bottom,0px));flex:1;position:relative}.page-inner{gap:10px;max-width:100vw;padding:10px;overflow-x:hidden}.page-title{margin-bottom:6px;font-size:20px}.page-subtitle{margin-bottom:12px;font-size:13px}.card{box-sizing:border-box;border-radius:12px;padding:10px}.input,.select,.textarea{border-radius:var(--radius-md);min-height:48px;font-size:16px}.btn{min-height:48px;font-size:15px}.section-header{flex-direction:column;align-items:flex-start;gap:10px}.table-wrapper{-webkit-overflow-scrolling:touch;box-sizing:border-box;border-radius:0;width:calc(100vw - 24px);margin:0 -12px;overflow:auto hidden}.base-table{min-width:100%}.base-table th,.base-table td{white-space:nowrap;padding:8px 10px;font-size:11px}.table-toolbar{flex-direction:column;gap:10px}.table-search,.filter-item{width:100%;min-width:0}.form-group{gap:6px;margin-bottom:12px}.input,.select,.textarea{padding:8px 10px}.form-actions{flex-direction:column}.form-actions .btn{width:100%}.filter-row{flex-direction:column;align-items:stretch}.filter-row .form-group{width:100%!important;min-width:0!important}.grid-4{grid-template-columns:repeat(2,1fr);gap:10px}.grid-2{grid-template-columns:1fr}.stats-value{font-size:24px}html,body{overflow-x:hidden}}@media (width<=480px){.hide-mobile{display:none!important}.card{padding:6px}.page-inner{gap:8px;padding:6px}.form-group{gap:6px;margin-bottom:12px}.input,.select,.textarea{border-radius:8px;padding:8px 10px;font-size:14px}.modal-overlay{align-items:flex-end!important;padding:0!important}.modal-card{padding-bottom:env(safe-area-inset-bottom,0px);border-radius:22px 22px 0 0!important;max-width:100%!important;max-height:92vh!important}}@media print{.app-header,.app-sidebar,.no-print{display:none!important}.print-only{display:block!important}body{background:#fff}.main-content{padding:0}.page-inner{max-width:100%}.card{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff;border:1px solid #ccc;border-radius:6px}.btn,.form-actions{display:none!important}.base-table th{-webkit-print-color-adjust:exact;print-color-adjust:exact;color:#000!important;background:#f0f0f0!important}}
