.sidebar-nav[data-v-a5dba1c3]{display:flex;flex-direction:column;gap:1rem;padding:1rem .75rem;min-block-size:100%;box-sizing:border-box}.nav-root[data-v-a5dba1c3]{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}.nav-group-label[data-v-a5dba1c3]{display:block;font-size:.85rem;font-weight:700;letter-spacing:.02em;color:var(--danger);margin-block-end:.35rem;padding-inline:.5rem}.nav-children[data-v-a5dba1c3]{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}.nav-link[data-v-a5dba1c3]{display:block;padding:.45rem .65rem;border-radius:.5rem;color:var(--ink);text-decoration:none;font-size:.9rem}.nav-link[data-v-a5dba1c3]:hover{background:var(--accent-soft)}.nav-link.active[data-v-a5dba1c3]{background:var(--accent-soft);color:var(--accent);font-weight:600}.app-shell[data-v-2ff05880]{min-height:100vh;display:flex;flex-direction:column}.app-header[data-v-2ff05880]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.25rem;background:var(--card);border-block-end:1px solid var(--border);position:sticky;inset-block-start:0;z-index:40}.header-start[data-v-2ff05880]{display:flex;align-items:center;gap:.75rem;min-inline-size:0}.hamburger[data-v-2ff05880]{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;inline-size:2.5rem;block-size:2.5rem;padding:.5rem;border:1px solid var(--border);border-radius:.55rem;background:#fff;cursor:pointer;flex-shrink:0}.hamburger-bar[data-v-2ff05880]{display:block;inline-size:100%;block-size:2px;background:var(--ink);border-radius:1px;transition:transform .2s ease,opacity .2s ease}.hamburger.open .hamburger-bar[data-v-2ff05880]:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger.open .hamburger-bar[data-v-2ff05880]:nth-child(2){opacity:0}.hamburger.open .hamburger-bar[data-v-2ff05880]:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.brand-row[data-v-2ff05880]{display:flex;align-items:center;gap:.75rem;min-inline-size:0}.header-logo[data-v-2ff05880]{border-radius:.5rem;flex-shrink:0;object-fit:cover}.school-name[data-v-2ff05880]{font-size:1.05rem;font-weight:650;letter-spacing:-.02em;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-actions[data-v-2ff05880]{display:flex;align-items:center;gap:.55rem;flex-shrink:0}.user-badge[data-v-2ff05880],.role-badge[data-v-2ff05880]{font-size:.82rem;padding:.35rem .65rem;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.role-badge[data-v-2ff05880]{background:#eef2f7;color:var(--muted)}.logout-btn[data-v-2ff05880]{border:1px solid var(--border);border-radius:.55rem;padding:.45rem .85rem;background:#fff;color:var(--ink);cursor:pointer}.nav-overlay[data-v-2ff05880]{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a233273;z-index:45}.nav-drawer[data-v-2ff05880]{position:fixed;inset-block:0;inset-inline-start:0;inline-size:min(280px,88vw);background:var(--card);border-inline-end:1px solid var(--border);z-index:50;overflow-y:auto;transform:translate(-105%);transition:transform .22s ease;box-shadow:4px 0 24px #1a23321f}.nav-drawer.open[data-v-2ff05880]{transform:translate(0)}[dir=rtl]{transform:translate(105%)}[dir=rtl]{transform:translate(0)}.app-main[data-v-2ff05880]{flex:1;padding:1.25rem;overflow-x:auto}@media(max-width:720px){.user-badge[data-v-2ff05880],.role-badge[data-v-2ff05880]{display:none}}.login-page[data-v-607a983e]{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.login-card[data-v-607a983e]{width:min(100%,420px);background:var(--card);border:1px solid var(--border);border-radius:1.25rem;padding:2rem 1.75rem;box-shadow:0 18px 40px #1a233214}.brand[data-v-607a983e]{text-align:center;margin-block-end:1.5rem}.brand-logo[data-v-607a983e]{display:block;margin-inline:auto;border-radius:1rem}.login-form[data-v-607a983e]{display:grid;gap:.9rem}.login-form h2[data-v-607a983e]{margin:0;font-size:1.05rem}label[data-v-607a983e]{display:grid;gap:.35rem;font-size:.85rem;color:var(--muted)}input[data-v-607a983e]{width:100%;border:1px solid var(--border);border-radius:.65rem;padding:.7rem .8rem;color:var(--ink);background:#fff}input[data-v-607a983e]:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.error[data-v-607a983e]{margin:0;padding:.65rem .8rem;border-radius:.55rem;background:#fef3f2;color:var(--danger);font-size:.85rem}button[data-v-607a983e]{border:0;border-radius:.65rem;padding:.8rem 1rem;background:var(--accent);color:#fff;font-weight:600;cursor:pointer}button[data-v-607a983e]:disabled{opacity:.55;cursor:not-allowed}.dashboard[data-v-f6cb9065]{display:grid;gap:1.25rem}.welcome-block[data-v-f6cb9065]{background:var(--card);border:1px solid var(--border);border-radius:.85rem;padding:1.25rem 1.35rem;background-image:radial-gradient(600px 200px at 0% 0%,#d9f0e6 0%,transparent 60%),radial-gradient(500px 180px at 100% 0%,#dce7f5 0%,transparent 55%)}.welcome-title[data-v-f6cb9065]{margin:0;font-size:1.55rem;letter-spacing:-.02em}.welcome-sub[data-v-f6cb9065]{margin:.4rem 0 0;color:var(--muted);font-size:.95rem}.stats-grid[data-v-f6cb9065]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.stat-card[data-v-f6cb9065]{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:.95rem 1rem;display:grid;gap:.3rem}.stat-card.highlight[data-v-f6cb9065]{background:var(--accent-soft);border-color:#9fd4b6}.stat-label[data-v-f6cb9065]{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.stat-value[data-v-f6cb9065]{font-size:1.15rem;font-weight:650}.charts-grid[data-v-f6cb9065]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}@media(max-width:900px){.charts-grid[data-v-f6cb9065]{grid-template-columns:1fr}}.chart-card[data-v-f6cb9065]{background:var(--card);border:1px solid var(--border);border-radius:.85rem;padding:1rem;display:grid;gap:.75rem}.chart-card h2[data-v-f6cb9065]{margin:0;font-size:.92rem;font-weight:650}.chart-wrap[data-v-f6cb9065]{position:relative;block-size:260px}.blank-dash[data-v-f6cb9065]{color:var(--muted);min-block-size:12rem;display:flex;align-items:center;justify-content:center;text-align:center}.blank-dash p[data-v-f6cb9065]{margin:0;max-inline-size:32rem}.data-table-wrap[data-v-671a7ee7]{overflow-x:auto;border:1px solid var(--border);border-radius:.75rem;background:var(--card)}.data-table[data-v-671a7ee7]{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th[data-v-671a7ee7],.data-table td[data-v-671a7ee7]{padding:.65rem .85rem;text-align:start;border-block-end:1px solid var(--border)}.data-table th[data-v-671a7ee7]{background:#f8fafb;font-weight:650;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}.data-table tbody tr:last-child td[data-v-671a7ee7]{border-block-end:0}.data-table tbody tr[data-v-671a7ee7]:hover{background:#fafcfd}.empty-cell[data-v-671a7ee7]{text-align:center;color:var(--muted);padding:1.5rem!important}.page-toolbar input[data-v-835a339a],.page-toolbar select[data-v-835a339a]{border:1px solid var(--border);border-radius:.55rem;padding:.5rem .65rem;min-inline-size:180px}.date-input[data-v-5cae03c5]{position:relative;display:flex;align-items:center;width:100%}.date-text[data-v-5cae03c5]{width:100%;border:1px solid var(--border);border-radius:.55rem;padding:.6rem 2.4rem .6rem .75rem;background:#fff;color:var(--ink);font:inherit}.date-picker[data-v-5cae03c5]{position:absolute;inset-inline-end:.35rem;inline-size:1.75rem;block-size:1.75rem;border:0;background:transparent;cursor:pointer;padding:0;opacity:.85}.date-picker[data-v-5cae03c5]::-webkit-calendar-picker-indicator{cursor:pointer;inline-size:100%;block-size:100%;opacity:1}.actions[data-v-6d36e867]{display:flex;gap:.5rem;flex-wrap:wrap}.payment-card[data-v-0a2e47ec]{background:var(--card);border:1px solid var(--border);border-radius:.85rem;padding:1rem}.payment-card h3[data-v-0a2e47ec]{margin:0 0 .85rem;font-size:.95rem}.month-grid[data-v-0a2e47ec]{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:.5rem}.month-cell[data-v-0a2e47ec]{border:1px solid var(--border);border-radius:.55rem;padding:.5rem;min-block-size:72px;display:flex;flex-direction:column;gap:.25rem;font-size:.78rem;background:#fff}.month-cell.past.paid[data-v-0a2e47ec]{background:#e8f7ef;border-color:#9fd4b6}.month-cell.past.unpaid[data-v-0a2e47ec]{background:#fef3f2;border-color:#f0c4c0}.month-cell.current[data-v-0a2e47ec]{background:#fffbeb;border-color:#f0d080}.month-cell.future[data-v-0a2e47ec]{opacity:.45}.month-label[data-v-0a2e47ec]{font-weight:650;font-size:.72rem}.month-year[data-v-0a2e47ec]{font-weight:500;color:var(--muted)}.paid-date[data-v-0a2e47ec]{color:var(--muted);font-size:.68rem;font-weight:500}.unpaid-mark[data-v-0a2e47ec]{color:var(--danger)}.future-mark[data-v-0a2e47ec]{color:var(--muted)}.pay-check[data-v-0a2e47ec]{display:flex;align-items:center;gap:.35rem;cursor:pointer}.fees-row[data-v-0a2e47ec]{margin-block-start:1rem;padding-block-start:.85rem;border-block-start:1px solid var(--border);display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.65rem}.fee-cell[data-v-0a2e47ec]{border:1px solid var(--border);border-radius:.55rem;padding:.55rem .65rem;display:grid;gap:.2rem;font-size:.82rem}.fee-label[data-v-0a2e47ec]{font-weight:650}.fee-amount[data-v-0a2e47ec]{color:var(--muted)}.paid-badge[data-v-0a2e47ec]{color:var(--accent);font-weight:600}.unpaid-badge[data-v-0a2e47ec]{color:var(--danger)}.detail-layout[data-v-403a8d7f]{display:grid;grid-template-columns:200px 1fr;gap:1rem;margin-block-end:1rem}@media(max-width:768px){.detail-layout[data-v-403a8d7f]{grid-template-columns:1fr}}.photo-section[data-v-403a8d7f]{display:grid;gap:.65rem;align-content:start}.student-photo[data-v-403a8d7f]{inline-size:100%;border-radius:.65rem;object-fit:cover;aspect-ratio:1}.photo-placeholder[data-v-403a8d7f]{inline-size:100%;aspect-ratio:1;display:grid;place-items:center;background:#f0f4f8;border-radius:.65rem;color:var(--muted);font-size:.85rem}.upload-label input[data-v-403a8d7f]{inline-size:100%;font-size:.8rem}.payments-section[data-v-403a8d7f]{display:grid;gap:1rem}.payment-plan[data-v-403a8d7f]{margin-block-end:1rem}.payment-plan h2[data-v-403a8d7f]{margin:0 0 .75rem;font-size:.95rem}.plan-grid[data-v-403a8d7f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.plan-label[data-v-403a8d7f]{display:block;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-block-end:.2rem}.prior-year h3[data-v-403a8d7f]{margin:0 0 .5rem;font-size:.95rem}.page-toolbar[data-v-f3fd92d8]{justify-content:space-between}.page-title[data-v-f3fd92d8]{margin:0}.actions[data-v-197fe506]{display:flex;gap:.5rem}.page-toolbar input[data-v-d9f96c66],.page-toolbar select[data-v-d9f96c66]{border:1px solid var(--border);border-radius:.55rem;padding:.5rem .65rem}.form-grid[data-v-aa57bd59],.form-grid[data-v-c1370eba]{margin-block-end:1rem}.stats-grid[data-v-15b79f96]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.stat-card[data-v-15b79f96]{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:1rem;display:grid;gap:.35rem}.stat-card.highlight[data-v-15b79f96]{background:var(--accent-soft);border-color:#9fd4b6}.stat-label[data-v-15b79f96]{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.stat-value[data-v-15b79f96]{font-size:1.15rem;font-weight:650}.page-head[data-v-baa4ff4a]{margin-block-end:1rem}.page-subtitle[data-v-baa4ff4a]{margin:.25rem 0 0;color:var(--muted);font-size:.92rem}.summary-row[data-v-baa4ff4a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-block-end:1rem}.summary-card[data-v-baa4ff4a]{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:.85rem 1rem;display:grid;gap:.3rem}.summary-card.highlight[data-v-baa4ff4a]{background:var(--accent-soft);border-color:#9fd4b6}.summary-label[data-v-baa4ff4a]{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.summary-value[data-v-baa4ff4a]{font-size:1.05rem;font-weight:650}.table-panel[data-v-baa4ff4a]{background:var(--card);border:1px solid var(--border);border-radius:.85rem;overflow:hidden}.table-panel-head[data-v-baa4ff4a]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;border-block-end:1px solid var(--border);background:#f8fafb}.table-panel-head h2[data-v-baa4ff4a]{margin:0;font-size:.95rem;font-weight:650}.badge[data-v-baa4ff4a]{display:inline-flex;align-items:center;justify-content:center;min-inline-size:1.75rem;padding:.2rem .55rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:.8rem}.table-panel[data-v-baa4ff4a] .data-table-wrap{border:0;border-radius:0}.months-pill[data-v-baa4ff4a]{font-variant-numeric:tabular-nums;font-weight:600}.months-pill .paid[data-v-baa4ff4a]{color:var(--accent)}.months-pill .sep[data-v-baa4ff4a]{color:var(--muted);margin-inline:.15rem}.balance-cell.due[data-v-baa4ff4a]{color:var(--danger);font-weight:650}.balance-cell.ok[data-v-baa4ff4a]{color:var(--accent);font-weight:650}.status-chip[data-v-baa4ff4a]{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.75rem;font-weight:650}.status-chip.ok[data-v-baa4ff4a]{background:var(--accent-soft);color:var(--accent)}.status-chip.due[data-v-baa4ff4a]{background:#fef3f2;color:var(--danger)}.form-grid[data-v-17cd3ad7]{margin-block-end:1rem}.stats-grid[data-v-81da90da]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.stat-card[data-v-81da90da]{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:1rem;display:grid;gap:.35rem}.stat-card.highlight[data-v-81da90da]{background:var(--accent-soft);border-color:#9fd4b6}.stat-label[data-v-81da90da]{font-size:.78rem;color:var(--muted);text-transform:uppercase}.stat-value[data-v-81da90da]{font-size:1.25rem;font-weight:650}.tabs[data-v-287659be]{display:flex;gap:.35rem;margin-block-end:1rem;flex-wrap:wrap}.tab-btn[data-v-287659be]{border:1px solid var(--border);border-radius:.55rem;padding:.45rem .85rem;background:#fff;cursor:pointer}.tab-btn.active[data-v-287659be]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.tab-panel .form-grid[data-v-287659be]{margin-block-end:1rem}.form-actions[data-v-287659be]{display:flex;gap:.5rem;align-items:end}.logo-upload[data-v-287659be]{display:grid;gap:.25rem;font-size:.78rem}.logo-upload input[data-v-287659be]{font-size:.72rem}:root{--bg: #f4f6f8;--card: #ffffff;--ink: #1a2332;--muted: #5b6b7c;--accent: #0b6e4f;--accent-soft: #e6f4ef;--border: #d8e0e8;--danger: #b42318;--font: "Segoe UI", "Helvetica Neue", Arial, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#d9f0e6 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#dce7f5 0%,transparent 50%),var(--bg)}button,input,select,textarea{font:inherit}.page-title{margin:0 0 1rem;font-size:1.25rem;font-weight:650}.page-toolbar{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center;margin-block-end:1rem}.page-card{background:var(--card);border:1px solid var(--border);border-radius:.85rem;padding:1rem}.form-grid{display:grid;gap:.85rem;max-inline-size:640px}.form-grid label{display:grid;gap:.35rem;font-size:.85rem;color:var(--muted)}.form-grid input,.form-grid select,.form-grid textarea,.form-grid .date-input{width:100%}.form-grid input,.form-grid select,.form-grid textarea{border:1px solid var(--border);border-radius:.55rem;padding:.6rem .75rem;background:#fff;color:var(--ink)}.form-grid textarea{min-block-size:96px;resize:vertical}.btn{border:0;border-radius:.55rem;padding:.55rem .9rem;background:var(--accent);color:#fff;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:#fff;color:var(--ink);border:1px solid var(--border)}.btn-danger{background:var(--danger)}.alert{padding:.65rem .85rem;border-radius:.55rem;font-size:.85rem;margin-block-end:.85rem}.alert-error{background:#fef3f2;color:var(--danger)}.alert-success{background:var(--accent-soft);color:var(--accent)}.status-paid{color:var(--accent);font-weight:600}.status-unpaid{color:var(--danger);font-weight:600}
