:root{--accent:#2563eb;--accent-hover:#1d4ed8;--accent-light:#eff6ff;--gold:#d97706;--gold-light:#fffbeb;--bg:#f4f7fb;--surface:#fff;--border:#e2e8f0;--text:#0f172a;--text-muted:#64748b;--danger:#dc2626;--danger-bg:#fef2f2;--success:#059669;--success-bg:#ecfdf5;--sidebar-bg:#fff;--sidebar-text:#475569;--sidebar-active:#eff6ff;--sidebar-border:#e2e8f0;--radius:12px;--radius-sm:8px;--sidebar-w:252px;--content-max:1200px;--shadow-sm:0 1px 2px #0f172a0d;--shadow-md:0 8px 24px #0f172a14;--shadow-lg:0 20px 50px #0f172a1f;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:.875rem;line-height:1.5}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0;overflow-x:hidden}body.scroll-locked{overflow:hidden}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}h1{letter-spacing:-.02em;margin:0;font-size:1.35rem;font-weight:800}h2{margin:0;font-size:1.05rem;font-weight:700}h3{margin:0 0 .5rem;font-size:.95rem;font-weight:700}p{margin:0}.icon,.nav-icon,.btn-icon,.panel-icon{flex-shrink:0;width:1rem;height:1rem}.panel-icon{color:var(--accent)}.app-shell{min-height:100vh}.sidebar{z-index:20;width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);height:100dvh;position:fixed;top:0;left:0;box-shadow:2px 0 12px #0f172a0a}.sidebar-inner{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex-direction:column;gap:.75rem;height:100%;padding:1rem .85rem;display:flex;overflow-y:auto}.brand{border-bottom:1px solid var(--sidebar-border);align-items:center;gap:.7rem;padding:.25rem .35rem .85rem;display:flex}.brand>div:not(.brand-icon){flex:1;min-width:0}.brand-icon{width:40px;height:40px;color:var(--accent);background:linear-gradient(135deg,#eff6ff,#fef3c7);border:1px solid #bfdbfe;border-radius:11px;flex-shrink:0;place-items:center;display:grid;overflow:hidden}.brand-icon-logo{background:#fff;padding:3px}.brand-logo{object-fit:contain;width:100%;height:100%;display:block}.brand strong{color:var(--text);font-size:1rem;font-weight:800;display:block}.brand small{color:var(--text-muted);font-size:.72rem;display:block}.nav-section{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:.35rem .55rem .15rem;font-size:.68rem;font-weight:700}.sidebar-nav{flex-direction:column;flex:1;gap:.2rem;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--sidebar-text);align-items:center;gap:.55rem;padding:.55rem .65rem;font-size:.84rem;font-weight:500;transition:background .15s,color .15s,transform .1s;display:flex}.nav-link:hover{color:var(--text);background:#f1f5f9}.nav-link.active{background:var(--sidebar-active);color:var(--accent-hover);font-weight:600;box-shadow:inset 0 0 0 1px #bfdbfe}.nav-icon-wrap{background:#f8fafc;border-radius:8px;place-items:center;width:28px;height:28px;display:grid}.nav-link.active .nav-icon-wrap{color:var(--accent);background:#dbeafe}.nav-group{flex-direction:column;gap:.1rem;display:flex}.nav-link-group{cursor:pointer;text-align:left;width:100%;font:inherit;background:0 0;border:none}.nav-link-group .nav-link-label{flex:1}.nav-chevron{width:22px;height:22px;color:var(--text-muted);border-radius:6px;place-items:center;margin-left:auto;transition:background .2s,color .2s;display:grid}.nav-link-group:hover .nav-chevron,.nav-group.is-open .nav-chevron{color:var(--accent)}.nav-chevron-icon{width:14px;height:14px;transition:transform .4s cubic-bezier(.4,0,.2,1);transform:rotate(-90deg)}.nav-group.is-open .nav-chevron-icon{transform:rotate(0)}.nav-sublist-wrap{grid-template-rows:0fr;transition:grid-template-rows .42s cubic-bezier(.4,0,.2,1);display:grid}.nav-group.is-open .nav-sublist-wrap{grid-template-rows:1fr}.nav-sublist{border-left:2px solid #e2e8f0;flex-direction:column;gap:.05rem;min-height:0;margin:.05rem 0 .35rem .35rem;padding-left:.55rem;display:flex;overflow:hidden}.nav-sublink{opacity:0;padding:.42rem .55rem .42rem .65rem;font-size:.8rem;font-weight:500;transition:opacity .32s,transform .32s cubic-bezier(.4,0,.2,1),background .15s,color .15s;transform:translateY(-6px)}.nav-group.is-open .nav-sublink{opacity:1;transform:translateY(0)}.nav-group.is-open .nav-sublink:first-child{transition-delay:60ms}.nav-group.is-open .nav-sublink:nth-child(2){transition-delay:.1s}.nav-group.is-open .nav-sublink:nth-child(3){transition-delay:.14s}.nav-group.is-open .nav-sublink:nth-child(4){transition-delay:.18s}.nav-group:not(.is-open) .nav-sublink{pointer-events:none;transition-delay:0s}.nav-sublink.active{color:var(--accent-hover);background:#eff6ff;font-weight:600;box-shadow:inset 0 0 0 1px #bfdbfe}.nav-link-group.active .nav-icon-wrap{color:var(--accent);background:#dbeafe}.sidebar-footer{border-top:1px solid var(--sidebar-border);flex-direction:column;gap:.55rem;margin-top:auto;padding-top:.5rem;display:flex}.sidebar-backdrop{display:none}.nav-toggle{border-radius:10px;flex-shrink:0;width:2.5rem;height:2.5rem;padding:0;display:none}.sidebar-close{border:1px solid var(--sidebar-border);width:2.25rem;height:2.25rem;color:var(--text-muted);cursor:pointer;background:#fff;border-radius:8px;margin-left:auto;padding:0;display:none}.sidebar-close:hover{color:var(--text);background:#f1f5f9}.user-card{border-radius:var(--radius-sm);border:1px solid var(--sidebar-border);background:#f8fafc;align-items:center;gap:.65rem;padding:.55rem;display:flex}.user-avatar{color:#1e3a8a;background:linear-gradient(135deg,#bfdbfe,#fde68a);border-radius:10px;place-items:center;width:36px;height:36px;font-size:.95rem;font-weight:800;display:grid}.user-card strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;display:block;overflow:hidden}.user-card span{color:var(--text-muted);font-size:.72rem;display:block}.main{margin-left:var(--sidebar-w);min-height:100vh;position:relative}.main-bg{margin-left:var(--sidebar-w);z-index:0;pointer-events:none;background:radial-gradient(ellipse 55% 45% at 90% 0%, #2563eb12, transparent 55%), radial-gradient(ellipse 45% 40% at 5% 100%, #d977060f, transparent 50%), var(--bg);position:fixed;inset:0}.topbar-sticky{z-index:15;padding:.85rem 1.5rem .5rem;position:sticky;top:0}.topbar{max-width:var(--content-max);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--radius);box-shadow:var(--shadow-sm);background:#ffffffd1;border:1px solid #e2e8f0e6;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin:0 auto;padding:.65rem 1rem;display:flex}.topbar-left{flex-direction:column;gap:.05rem;min-width:0;display:flex}.topbar-greeting{color:var(--text-muted);font-size:.78rem}.topbar-greeting strong{color:var(--text)}.topbar-school{color:var(--text);font-size:.95rem;font-weight:700}.topbar-right{flex-direction:column;align-items:flex-end;gap:.15rem;display:flex}.topbar-currency{color:var(--text-muted);white-space:nowrap;font-size:.78rem}.topbar-currency strong{color:var(--green-700,#15803d)}.topbar-date{color:var(--text-muted);text-transform:capitalize;background:var(--accent-light);border-radius:999px;padding:.35rem .65rem;font-size:.75rem}.main-inner{z-index:1;max-width:var(--content-max);width:100%;margin:0 auto;padding:0 1.5rem 2rem;position:relative}.page{animation:.35s fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stack{flex-direction:column;gap:.85rem;display:flex}.stack-lg{flex-direction:column;gap:1.35rem;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.report-print-toolbar{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.report-header-main{flex-direction:column;gap:.45rem;min-width:min(100%,320px);display:flex}.report-type-field,.report-print-field{max-width:320px;margin:0}.report-type-select,.report-print-select{border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:2.35rem;font:inherit;color:var(--text);background:#fff;padding:.45rem .65rem;font-weight:600}.report-print-select{min-width:220px;font-weight:500}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.report-period-banner{border-radius:var(--radius);color:#166534;background:#ecfdf5;border:1px solid #bbf7d0;margin-top:.75rem;padding:.65rem .85rem;font-size:.88rem}.report-period-banner strong{color:#14532d}.journal-kind-tabs{flex-wrap:wrap;gap:.35rem;margin-bottom:.75rem;display:flex}.journal-block--wide{flex:100%}.journal-preview-total{white-space:nowrap;align-self:center}.journal-panel{padding:.75rem 1rem}.journal-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.65rem;display:flex}.journal-panel-head h2{margin:0;font-size:.95rem;font-weight:700}.journal-panel-note{font-size:.75rem}.journal-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:#f8fafc;align-items:stretch;gap:0;display:flex;overflow:hidden}.journal-block{flex-direction:column;flex:1;gap:.35rem;min-width:0;padding:.55rem .75rem;display:flex}.journal-block-title{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.72rem;font-weight:700}.journal-block-controls{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.journal-date-input{border:1px solid var(--border);border-radius:var(--radius-sm);min-width:8.5rem;max-width:11rem;height:2rem;font:inherit;color:var(--text);background:#fff;flex:1;padding:0 .5rem;font-size:.82rem}.journal-block-hint{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;line-height:1.3;overflow:hidden}.journal-row-sep{background:var(--border);flex-shrink:0;width:1px}@media (width<=720px){.journal-row{flex-direction:column}.journal-row-sep{width:100%;height:1px}.journal-block-hint{white-space:normal}}.report-signatures-panel{padding:.85rem 1rem}.report-signatures-title{margin:0 0 .65rem;font-size:.88rem;font-weight:700}.report-signatures-grid{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.report-signature-block{flex-direction:column;gap:.35rem;display:flex}.report-signature-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.68rem;font-weight:700}.report-signature-line{border-top:1px solid #334155;min-height:2rem;padding-top:.35rem;font-size:.84rem;font-weight:600}.report-signatures-note{margin:.65rem 0 0}@media (width<=640px){.report-signatures-grid{grid-template-columns:1fr;gap:.75rem}}.enrollment-print-panel{padding:.75rem 1rem}.enrollment-print-row{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.enrollment-print-copy{flex:1;min-width:160px}.enrollment-print-copy h2{margin:0;font-size:.92rem;font-weight:700}.enrollment-print-copy p{margin:.15rem 0 0}.enrollment-print-field{min-width:min(100%,240px);max-width:320px;margin:0}.enrollment-print-field select{width:100%;min-height:2rem;font-size:.84rem}.list-panel-head-actions{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.1rem 1.2rem}.panel-elevated{box-shadow:var(--shadow-md);border-color:#e2e8f0cc}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.panel-head h2{align-items:center;gap:.45rem;display:flex}.pad{padding:.5rem 0}.dash-hero{border-radius:calc(var(--radius) + 2px);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-md);position:relative;overflow:hidden}.dash-hero-bg{pointer-events:none;background:radial-gradient(75% 60% at 100% 0,#2563eb2e,#0000 55%),radial-gradient(55% 50% at 0 100%,#d977061f,#0000 50%),linear-gradient(135deg,#f0f7ff 0%,#fff 55%,#fffbeb 100%);position:absolute;inset:0}.dash-hero-inner{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;padding:1.35rem 1.5rem;display:flex;position:relative}.dash-hero-greeting{color:var(--text-muted);margin:0 0 .35rem;font-size:.82rem}.dash-hero-title{letter-spacing:-.03em;background:linear-gradient(135deg,#0f172a 0%,#1d4ed8 55%,#b45309 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 .35rem;font-size:clamp(1.35rem,2.8vw,1.75rem);font-weight:800}.dash-hero-subtitle{max-width:40rem;color:var(--text-muted);margin:0 0 .85rem;font-size:.88rem;line-height:1.55}.dash-hero-meta{flex-wrap:wrap;align-items:center;gap:.45rem .65rem;display:flex}.dash-badge{color:#1e40af;background:linear-gradient(135deg,#dbeafe,#fef3c7);border:1px solid #2563eb26;border-radius:999px;padding:.2rem .65rem;font-size:.72rem;font-weight:700;display:inline-flex}.dash-hero-school,.dash-hero-date{color:var(--text-muted);font-size:.78rem}.dash-hero-school:after{content:"Â·";opacity:.5;margin-left:.65rem}.dash-stats-grid{gap:.85rem;display:grid}.dash-stats-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.dash-stat{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-sm);gap:.85rem;padding:1rem 1.05rem;transition:transform .15s,box-shadow .15s;display:flex}.dash-stat:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.dash-stat-icon{border-radius:12px;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.dash-stat-icon .icon{width:1.15rem;height:1.15rem}.dash-stat-blue .dash-stat-icon{color:#2563eb;background:#eff6ff}.dash-stat-gold .dash-stat-icon{color:#d97706;background:#fffbeb}.dash-stat-green .dash-stat-icon{color:#059669;background:#ecfdf5}.dash-stat-purple .dash-stat-icon{color:#7c3aed;background:#f5f3ff}.dash-stat-teal .dash-stat-icon{color:#0d9488;background:#f0fdfa}.dash-stat-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.2rem;font-size:.72rem;font-weight:700;display:block}.dash-stat-value{letter-spacing:-.02em;font-size:1.35rem;font-weight:800;line-height:1.15;display:block}.dash-stat-hint{color:var(--text-muted);margin-top:.25rem;font-size:.75rem;display:block}.dash-charts-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;display:grid}.dash-chart-card{flex-direction:column;min-height:100%;display:flex}.donut-chart{flex-direction:column;align-items:center;gap:1rem;padding:.5rem 0;display:flex}.donut-chart-visual{place-items:center;display:grid;position:relative}.donut-track{stroke:#f1f5f9}.donut-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.donut-center strong{font-size:1.1rem;font-weight:800;line-height:1.1}.donut-center span{color:var(--text-muted);margin-top:.15rem;font-size:.72rem}.donut-legend{flex-direction:column;gap:.45rem;width:100%;margin:0;padding:0;list-style:none;display:flex}.donut-legend li{border-radius:var(--radius-sm);background:#f8fafc;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:.35rem .45rem;font-size:.8rem;display:grid}.donut-legend-dot{border-radius:999px;flex-shrink:0;width:10px;height:10px}.donut-legend-label{color:var(--text-muted)}.donut-legend-value{font-weight:700}.donut-legend-value span{color:var(--text-muted);font-size:.75rem;font-weight:500}.dash-rings-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;display:grid}.dash-ring-card{text-align:center;flex-direction:column;align-items:center;padding:1.25rem 1rem;display:flex}.dash-ring-card h3{margin-bottom:.75rem;font-size:.88rem}.dash-ring{flex-direction:column;align-items:center;display:flex;position:relative}.dash-ring svg{display:block}.dash-ring-track{stroke:#f1f5f9}.dash-ring-good .dash-ring-fill{stroke:#059669}.dash-ring-mid .dash-ring-fill{stroke:#d97706}.dash-ring-low .dash-ring-fill{stroke:#dc2626}.dash-ring-fill{transition:stroke-dashoffset .6s}.dash-ring-center{text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-58%)}.dash-ring-center strong{font-size:1.25rem;font-weight:800;display:block}.dash-ring-center span{color:var(--text-muted);font-size:.72rem}.dash-ring-caption{color:var(--text-muted);margin:.65rem 0 0;font-size:.75rem}.dash-insight-card{text-align:left;flex-direction:row;align-items:flex-start;gap:.85rem}.dash-insight-icon-wrap{color:#2563eb;background:linear-gradient(135deg,#eff6ff,#fef3c7);border-radius:12px;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.dash-loading{flex-direction:column;align-items:center;gap:.75rem;padding:2rem;display:flex}.dash-loading-spinner{border:3px solid #e2e8f0;border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dash-simple-header h1{font-size:1.5rem}.dash-header-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.dash-kpi-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;display:grid}.dash-kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:flex-start;gap:.85rem;padding:1rem 1.1rem;display:flex}.dash-kpi-icon{width:1.35rem;height:1.35rem;color:var(--accent);flex-shrink:0;margin-top:.15rem}.dash-kpi-label{color:var(--text-muted);margin-bottom:.2rem;font-size:.78rem;display:block}.dash-kpi-value{letter-spacing:-.02em;font-size:1.5rem;font-weight:800;line-height:1.2;display:block}.dash-kpi-money .dash-kpi-value,.dash-simple .dash-summary-list li strong,.dash-simple .money-cell{color:var(--success)}.dash-kpi-money .dash-kpi-icon{color:#10b981}.dash-kpi-note{color:var(--text-muted);margin-top:.2rem;font-size:.72rem;display:block}.dash-overview-grid{grid-template-columns:1fr 1fr;gap:.85rem;display:grid}.dash-overview-grid h2{margin-bottom:.75rem;font-size:.95rem}.dash-summary-list{flex-direction:column;gap:.55rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.dash-summary-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:1rem;padding:.55rem 0;font-size:.88rem;display:flex}.dash-summary-list li span{color:var(--text-muted)}.dash-summary-list li strong{font-variant-numeric:tabular-nums;font-size:1rem;font-weight:700}.dash-summary-total{background:var(--success-bg);border-radius:var(--radius-sm);margin-top:.25rem;border-bottom:none!important;padding:.75rem!important}.dash-summary-total span{color:var(--text);font-weight:600}.dash-summary-total strong{color:var(--success);font-size:1.15rem}.donut-chart{padding:.25rem 0}.donut-legend li{background:0 0;padding:.35rem 0}.table-wrap{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.table-wrap .data-table{min-width:520px}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:.65rem .55rem}.data-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.68rem;font-weight:700}.data-table-modern tbody tr:hover{background:#f8fafc}.table-sub{color:var(--text-muted);margin-top:.1rem;font-size:.72rem;display:block}.money-cell{font-variant-numeric:tabular-nums;font-weight:600}.ref-cell{color:var(--text-muted);white-space:nowrap;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.78rem;font-weight:600}.ref-cell-btn{font:inherit;color:var(--accent,#2563eb);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.ref-cell-btn:hover{color:#1d4ed8}.ref-cell-btn:focus-visible{outline:2px solid var(--accent,#2563eb);outline-offset:2px;border-radius:2px}.enrollment-detail-card h3{margin:0}.enrollment-detail-ref{margin:.2rem 0 0}.enrollment-detail-head{z-index:3;background:#fff;border-bottom:1px solid #e2e8f0;border-radius:12px 12px 0 0;align-items:flex-start;margin:-1.25rem -1.25rem 0;padding:1rem 1.25rem .85rem;position:sticky;top:0}.enrollment-detail-head-text{flex:1;min-width:0}.enrollment-detail-close{flex-shrink:0;margin-left:.75rem}.detail-section{border:1px solid var(--border,#e2e8f0);background:#f8fafc;border-radius:10px;padding:.85rem 1rem}.detail-section h4{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .65rem;font-size:.78rem;font-weight:700}.detail-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem 1rem;display:grid}.detail-field .lbl{color:var(--text-muted);margin-bottom:.15rem;font-size:.78rem;display:block}.detail-field .val{font-weight:600;line-height:1.35}.enrollment-photo-row{flex-wrap:wrap;align-items:flex-start;gap:1rem;display:flex}.enrollment-photo-preview{border:1px solid var(--border,#e2e8f0);background:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:120px;height:150px;display:flex;overflow:hidden}.enrollment-photo-preview img{object-fit:cover;width:100%;height:100%}.enrollment-photo-actions{flex:1;min-width:200px}.enrollment-photo-upload{cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.enrollment-photo-hint{margin:0}.student-access-page{background:linear-gradient(160deg,#eff6ff 0%,#f8fafc 45%,#eef2ff 100%);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.student-access-shell{width:min(100%,520px);padding:1.25rem}.student-access-head h1{margin:0 0 .25rem;font-size:1.35rem}.student-access-card{flex-wrap:wrap;gap:1.25rem;margin-top:1rem;display:flex}.student-access-photo{border:1px solid var(--border,#e2e8f0);background:#fff;border-radius:12px;justify-content:center;align-items:center;width:140px;height:175px;display:flex;overflow:hidden}.student-access-photo img{object-fit:cover;width:100%;height:100%}.student-access-info{flex:1;min-width:220px}.student-access-ref{letter-spacing:.05em;color:var(--accent,#2563eb);margin:0 0 .35rem;font-size:.82rem;font-weight:700}.student-access-info h2{margin:0;font-size:1.35rem}.student-access-meta{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.65rem 1rem;margin:0;display:grid}.student-access-meta dt{color:var(--text-muted);margin:0;font-size:.75rem}.student-access-meta dd{margin:.1rem 0 0;font-weight:600}.student-access-note{margin:0}.finance-period-controls{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.checkbox-inline{cursor:pointer;align-items:center;gap:8px;font-size:.9rem;display:flex}.checkbox-inline input{width:auto;margin:0}.finance-preview-box{border:1px solid var(--border);background:#f8fafc;border-radius:8px;padding:12px}.finance-preview-box h4{margin:0;font-size:.95rem}.finance-preview-totals{flex-wrap:wrap;gap:16px;font-size:.9rem;display:flex}.overflow-tag{color:#0369a1;font-style:italic}.row-overflow td{background:#f0f9ff}.modal-overlay{z-index:10000;padding:max(1rem, env(safe-area-inset-top)) 1rem 2rem;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:#0f172a8c;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-panel{z-index:10001;background:#fff;border-radius:12px;width:min(100%,520px);margin:auto 0;padding:1.25rem;position:relative;box-shadow:0 20px 50px #0f172a47}.modal-panel-wide{width:min(100%,720px)}.modal-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.modal-head h3{margin:0}.modal-meta{gap:.45rem;font-size:.92rem;display:grid}.finance-crud-filters{margin-bottom:.25rem}.list-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.list-panel-head h2,.list-panel-head h3{margin:0}.list-page-size{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.list-page-size-field{flex-direction:row;align-items:center;gap:.5rem;min-width:auto;margin:0;display:flex}.list-page-size-field span{white-space:nowrap;color:var(--muted,#64748b);font-size:.85rem}.list-page-size-field select{width:auto;min-width:5.5rem;padding:.35rem .5rem}.list-search-field{width:100%;min-width:0;max-width:420px;margin:0}.list-search-field input[type=search]{width:100%}.finance-lines-title{margin:0;font-size:1rem}.finance-balance-panel{flex-direction:column;gap:.65rem;padding:.85rem 1rem;display:flex}.finance-student-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;padding-bottom:.55rem;display:flex}.finance-student-info{flex-direction:column;gap:.25rem;min-width:0;display:flex}.finance-student-info .badge{align-self:flex-start}.finance-view-tabs,.finance-derogation-filters{flex-wrap:wrap;gap:.45rem;display:flex}.finance-view-tabs{margin-bottom:.25rem}.table-actions{flex-wrap:wrap;gap:.25rem;display:flex}.finance-student-name{font-size:1rem;line-height:1.25}.finance-student-meta{line-height:1.3}.finance-period-controls--compact{align-items:center;gap:.45rem}.finance-month-field--compact{gap:.2rem;min-width:0}.finance-month-field--compact span{font-size:.72rem}.finance-month-field--compact select{min-width:9.5rem;padding-top:.35rem;padding-bottom:.35rem;font-size:.82rem}.finance-month-field--inline{min-width:0}.finance-month-field--inline .checkbox-inline{white-space:nowrap;font-size:.82rem}.finance-overview-strip{flex-direction:column;gap:.45rem;display:flex}.finance-overview-strip .finance-fixed-fees-block{margin:0}.finance-stats-row{flex-wrap:wrap;gap:.4rem;display:flex}.finance-stat-chip{border:1px solid var(--border);background:#f8fafc;border-radius:999px;flex-wrap:wrap;align-items:baseline;gap:.35rem .5rem;padding:.3rem .55rem;font-size:.78rem;line-height:1.2;display:inline-flex}.finance-stat-chip strong{font-size:.88rem}.finance-paid-link{font:inherit;font-variant-numeric:tabular-nums;color:var(--success,#15803d);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;margin:0;padding:0;font-weight:600;text-decoration:underline}.finance-paid-link:hover{color:#166534}.finance-paid-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.finance-stat-chip .finance-paid-link{font-size:.88rem}.payment-picker-list{gap:.35rem}.payment-picker-item{border:1px solid var(--border);border-radius:var(--radius-sm,6px);text-align:left;cursor:pointer;background:#fff;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.55rem .65rem;display:flex}.payment-picker-item:hover{border-color:var(--accent);background:#f8fafc}.payment-picker-main{justify-content:space-between;align-items:baseline;gap:.75rem;width:100%;display:flex}.finance-stat-chip--main{background:linear-gradient(135deg,#eff6ff,#f8fafc);border-color:#bfdbfe}.finance-stat-label{color:var(--text-muted);font-weight:600}.finance-stat-note{color:var(--text-muted);width:100%;font-size:.68rem}.finance-lines-details{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff}.finance-lines-summary{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:.75rem;padding:.45rem .65rem;font-size:.85rem;font-weight:600;list-style:none;display:flex}.finance-lines-summary::-webkit-details-marker{display:none}.finance-lines-summary:before{content:"â–¸";color:var(--text-muted);margin-right:.35rem;font-size:.75rem;transition:transform .15s}.finance-lines-details[open] .finance-lines-summary:before{transform:rotate(90deg)}.finance-lines-details[open] .finance-lines-summary{border-bottom:1px solid var(--border);background:#f8fafc}.finance-lines-summary-meta{font-weight:400}.finance-lines-body{padding:.45rem .65rem .55rem}.list-panel-head--compact{margin-bottom:.4rem}.finance-lines-scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-height:min(42vh,320px);overflow:auto}.chip-row{flex-wrap:wrap;gap:.45rem;display:flex}.payroll-overview-head-actions{flex-wrap:wrap;gap:.45rem;margin-left:auto;display:flex}.payroll-overview-wrap{overscroll-behavior:contain;border:1px solid var(--border);border-radius:var(--radius-sm);max-height:min(72vh,720px);overflow:auto}.payroll-overview-table{min-width:980px}.payroll-overview-table thead th{z-index:2;box-shadow:inset 0 -1px 0 var(--border);background:#f8fafc;position:sticky;top:0}.payroll-overview-table tfoot td{z-index:1;box-shadow:inset 0 1px 0 var(--border);background:#eef2ff;position:sticky;bottom:0}.payroll-overview-editable{background:#fffef8;min-width:6.5rem;padding:0}.payroll-overview-editable.is-locked{background:#f8fafc}.payroll-overview-input{text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:none;width:100%;min-width:6rem;padding:.45rem .5rem}.payroll-overview-input:focus{background:#eff6ff;outline:none}.payroll-overview-editable:focus-within{box-shadow:inset 0 0 0 2px #2563eb59}.payroll-overview-id{text-align:center;font-variant-numeric:tabular-nums;width:3rem;color:var(--text-muted)}.payroll-overview-name{white-space:nowrap;min-width:10rem}.payroll-overview-net{background:#f0fdf4}.payroll-overview-table tr.row-locked td{opacity:.92}.payroll-overview-total-row td{font-weight:600}.payroll-overview-dept-row td{color:#0f172a;letter-spacing:.03em;background:#e2e8f0;border-top:2px solid #cbd5e1;border-bottom:1px solid #cbd5e1;padding:0;font-size:.82rem}.payroll-overview-dept-row.is-collapsed td{border-bottom:2px solid #cbd5e1}.payroll-overview-dept-toggle{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.45rem;padding:.55rem .65rem;display:flex}.payroll-overview-dept-toggle:hover{background:#dbeafe}.payroll-overview-dept-toggle strong{text-transform:uppercase;letter-spacing:.03em}.payroll-overview-dept-chevron{flex-shrink:0;width:.95rem;height:.95rem;transition:transform .2s}.payroll-overview-dept-chevron.is-collapsed{transform:rotate(-90deg)}.payroll-overview-dept-summary{letter-spacing:normal;text-transform:none;color:#1e3a8a;margin-left:auto;font-size:.78rem;font-weight:700}.payroll-overview-dept-actions{flex-wrap:wrap;gap:.45rem;margin-left:auto;display:flex}.enrollment-print-row .payroll-overview-dept-actions{margin-left:0}.payroll-overview-dept-total td{border-top:1px solid var(--border);background:#f8fafc;font-size:.82rem}.payroll-overview-dept-cell{font-size:.82rem}.payroll-overview-bank-cell{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.82rem}.finance-pay-form{border-radius:var(--radius-sm);border:1px solid var(--border);background:#f8fafc;gap:.55rem;margin-top:.15rem;padding:.65rem .75rem}.finance-pay-title{margin:0;font-size:.92rem}.finance-pay-hint{margin:0;line-height:1.35}.list-page-size-count{white-space:nowrap}.finance-selected{border:1px solid var(--border);border-radius:var(--radius-sm);background:#f8fafc;flex-direction:column;gap:.15rem;padding:.75rem .9rem;display:flex}.finance-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.finance-month-field{min-width:180px}.finance-summary-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;display:grid}.finance-summary-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:#f8fafc;flex-direction:column;gap:.2rem;padding:.85rem;display:flex}.finance-summary-card strong{font-size:1.05rem}.finance-summary-card small{color:var(--text-muted);font-size:.72rem}.finance-summary-card-main{background:linear-gradient(135deg,#eff6ff,#f8fafc);border-color:#bfdbfe}.finance-fixed-fees-block{border-radius:var(--radius-sm);background:linear-gradient(135deg,#fff7ed,#fffbeb);border:1px solid #fed7aa;padding:.45rem .65rem}.finance-fixed-fees-bar{flex-wrap:wrap;align-items:center;gap:.45rem .65rem;display:flex}.finance-fixed-fees-label{text-transform:uppercase;letter-spacing:.03em;color:#9a3412;white-space:nowrap;font-size:.72rem;font-weight:700}.finance-fixed-fees-chips{flex-wrap:wrap;flex:1;align-items:center;gap:.4rem;min-width:0;display:flex}.finance-fixed-fee-chip{background:#fff;border:1px solid #fdba74;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .55rem;line-height:1.2;display:inline-flex}.finance-fixed-fee-chip.is-settled{background:#f0fdf4;border-color:#86efac}.finance-fixed-fee-chip.is-pending{border-color:#fdba74}.finance-fixed-fee-name{color:#9a3412;font-size:.72rem;font-weight:600}.finance-fixed-fee-chip.is-settled .finance-fixed-fee-name{color:#166534}.finance-fixed-fee-amount{color:#0f172a;font-size:.8rem;font-weight:700}.finance-fixed-fee-chip .badge{padding:.1rem .4rem;font-size:.65rem}.finance-fixed-fees-hint{white-space:normal;text-align:right;margin-left:auto}.finance-lines-table tfoot .finance-total-row td{border-top:2px solid var(--border);background:#f8fafc;padding-top:.75rem}.money-positive{color:var(--success);font-weight:700}.money-warn{color:#b45309;font-weight:700}@media (width<=1100px){.finance-summary-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=768px){.finance-summary-row{grid-template-columns:1fr}}.data-table tr.row-selected{background:var(--accent-light)}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:.65rem;padding:2rem 1rem;display:flex}.empty-state-icon{color:#94a3b8;width:2.5rem;height:2.5rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1rem;display:grid}.field{flex-direction:column;gap:.35rem;display:flex}.field span{color:var(--text-muted);font-size:.75rem;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.55rem .7rem;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:#93c5fd;outline:none;box-shadow:0 0 0 3px #3b82f626}.field.inline{flex-direction:row;align-items:center;gap:.5rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.85rem;display:grid}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.inline-form .form-actions{align-self:flex-end}.field-grow{flex:260px;min-width:min(100%,220px)}.form-actions{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.5rem;display:flex}.btn{border:1px solid var(--border);min-height:2.5rem;color:var(--text);cursor:pointer;white-space:nowrap;background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:.45rem;padding:.5rem 1rem;font-size:.84rem;font-weight:600;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .1s;display:inline-flex}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #3b82f647}.btn:hover{background:#f8fafc;border-color:#cbd5e1}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none!important}.btn-primary{color:#fff;background:linear-gradient(#3b82f6 0%,#2563eb 100%);border-color:#1d4ed8;box-shadow:0 2px 8px #2563eb47}.btn-primary:hover{color:#fff;background:linear-gradient(#2563eb 0%,#1d4ed8 100%);border-color:#1e40af;box-shadow:0 4px 14px #2563eb52}.btn-outline{color:var(--text-muted);background:#fff;border-color:#cbd5e1}.btn-outline:hover{color:var(--text);background:#f8fafc;border-color:#94a3b8}.btn-ghost{color:var(--accent-hover);box-shadow:none;background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--accent-light);color:var(--accent-hover);border-color:#0000}.btn-soft{color:#334155;box-shadow:none;background:#f8fafc;border-color:#e2e8f0;min-height:2rem}.btn-soft:hover{background:var(--accent-light);color:var(--accent-hover);border-color:#bfdbfe}.btn-danger{color:#b91c1c;box-shadow:none;background:linear-gradient(#fff 0%,#fef2f2 100%);border-color:#fecaca}.btn-danger:hover{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.btn-danger-soft{color:#dc2626;min-height:2rem;box-shadow:none;background:0 0;border-color:#0000;padding-inline:.65rem}.btn-danger-soft:hover{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.btn-hero{color:#fff;background:linear-gradient(#3b82f6 0%,#2563eb 100%);border:1px solid #1d4ed8;border-radius:10px;min-height:2.65rem;padding:.65rem 1.15rem;font-weight:700;box-shadow:0 6px 18px #2563eb47}.btn-hero:hover{color:#fff;transform:translateY(-1px);box-shadow:0 10px 24px #2563eb57}.btn-sm{border-radius:9px;min-height:2.15rem;padding:.4rem .85rem;font-size:.8rem}.btn-xs{border-radius:8px;min-height:1.9rem;padding:.3rem .65rem;font-size:.74rem}.btn-lg{border-radius:11px;min-height:2.85rem;padding:.75rem 1.2rem;font-size:.92rem;font-weight:700}.btn-block{width:100%}.btn-row,.form-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.btn-icon{flex-shrink:0;width:1rem;height:1rem}.btn-sidebar{border:1px solid var(--sidebar-border);width:100%;min-height:2.35rem;color:var(--text-muted);cursor:pointer;background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:.45rem;padding:.5rem;font-size:.82rem;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn-sidebar:hover{color:var(--text);background:#f8fafc;border-color:#cbd5e1}.settings-tabs{border:1px solid var(--border);background:#f1f5f9;border-radius:12px;flex-wrap:wrap;gap:.3rem;padding:.35rem;display:inline-flex}.settings-tabs .btn{min-height:2.1rem;color:var(--text-muted);box-shadow:none;background:0 0;border:1px solid #0000;padding:.38rem .85rem}.settings-tabs .btn:hover{color:var(--text);background:#ffffffa6}.settings-tabs .btn-primary{color:var(--accent-hover);background:#fff;border-color:#e2e8f0;box-shadow:0 1px 4px #0f172a14}.settings-tabs .btn-primary:hover{color:var(--accent);background:#fff}.branding-preview{border:1px dashed var(--border);background:#f8fafc;border-radius:10px;justify-content:center;align-items:center;min-height:120px;padding:1rem;display:flex}.branding-logo-preview{object-fit:contain;max-width:100%;max-height:96px}.branding-logo-placeholder{color:var(--text-muted);font-size:.9rem}.branding-rdc-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;display:grid}.branding-rdc-card{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;gap:.65rem;padding:1rem;display:flex}.branding-rdc-card h3{margin:0;font-size:.95rem}.branding-rdc-preview{border:1px solid var(--border);background:#fafafa;border-radius:10px;justify-content:center;align-items:center;width:96px;height:96px;display:flex;overflow:hidden}.branding-rdc-preview-flag{width:96px;height:64px}.branding-rdc-preview-coat{width:84px;height:96px}.branding-rdc-preview img{object-fit:contain;width:100%;height:100%;display:block}.checkbox-grid{flex-wrap:wrap;gap:.75rem 1.25rem;margin-top:.5rem;display:flex}.fee-payment-checks{border:1px solid var(--border);background:#f8fafc}.payment-check span{color:var(--text);font-weight:600}.badge{border-radius:999px;padding:.18rem .55rem;font-size:.72rem;font-weight:600;display:inline-block}.badge-soft{background:var(--accent-light);color:var(--accent-hover)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-warn{color:#b45309;background:#fef3c7}.badge-info{color:#1e40af;background:#dbeafe}.badge-muted{color:#64748b;background:#f1f5f9}.alert{border-radius:var(--radius-sm);padding:.7rem .9rem}.alert-error{background:var(--danger-bg);color:var(--danger);border:1px solid #fecaca}.alert-success{background:var(--success-bg);color:var(--success);border:1px solid #bbf7d0}.muted{color:var(--text-muted)}.small{font-size:.78rem}.link{color:var(--accent-hover);font-weight:600}code{background:#f1f5f9;border-radius:5px;padding:.12rem .4rem;font-size:.85em}.auth-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid;position:relative}.auth-bg{background:radial-gradient(60% 50% at 15% 20%,#2563eb26,#0000 55%),radial-gradient(50% 45% at 85% 80%,#d977061f,#0000 50%),linear-gradient(160deg,#eef4ff 0%,#f8fafc 45%,#fffbeb 100%);position:fixed;inset:0}.auth-shell{flex-direction:column;gap:1.25rem;width:min(420px,100%);display:flex;position:relative}.auth-brand{justify-content:center;align-items:center;gap:.85rem;display:flex}.auth-brand-icon{color:#fff;background:linear-gradient(135deg,#2563eb,#1e40af);border-radius:14px;place-items:center;width:52px;height:52px;display:grid;box-shadow:0 10px 30px #2563eb59}.auth-brand strong{font-size:1.25rem;font-weight:800;display:block}.auth-brand span{color:var(--text-muted);font-size:.82rem}.auth-card{box-shadow:var(--shadow-lg);border:1px solid #e2e8f0e6}.auth-card-head{text-align:center;margin-bottom:.25rem}.auth-sparkle{width:1.5rem;height:1.5rem;color:var(--gold);margin-bottom:.35rem}.auth-hint{text-align:center}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.85rem;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:.95rem 1rem}.stat-card.accent{background:linear-gradient(135deg,#eff6ff,#fff);border-color:#bfdbfe}.stat-label{color:var(--text-muted);margin-bottom:.25rem;font-size:.75rem;display:block}.stat-value{font-size:1.35rem;font-weight:800}.data-table.compact td,.data-table.compact th{padding:.45rem}.promoter-page{max-width:none}.promoter-header{align-items:flex-end}.promoter-header-actions{flex-wrap:wrap;align-items:flex-end;gap:.65rem;display:flex}.promoter-header-actions .btn{white-space:nowrap;min-height:2.65rem}.promoter-month-filter{min-width:min(100%,220px);margin:0}.promoter-filter-icon{vertical-align:-.12em;width:.9rem;height:.9rem;margin-right:.2rem}.promoter-panel-title{margin:0 0 .85rem;font-size:1rem}.list-panel-head .promoter-panel-title{margin-bottom:0}.promoter-panel-sub{margin:.2rem 0 0}.promoter-enrollment-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.promoter-section-icon-money{color:#059669;flex-shrink:0;width:1.35rem;height:1.35rem}.promoter-order-bar{flex-direction:column;gap:.75rem;display:flex}.promoter-order-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.promoter-order-metric{border-radius:var(--radius-sm);border:1px solid var(--border);background:#f8fafc;align-items:center;gap:.65rem;padding:.75rem .85rem;display:flex}.promoter-order-metric-icon{opacity:.85;flex-shrink:0;width:1.1rem;height:1.1rem}.promoter-order-metric span{color:var(--text-muted);margin-bottom:.1rem;font-size:.72rem;display:block}.promoter-order-metric strong{font-size:1.35rem;font-weight:800;line-height:1.1}.promoter-order-metric-ok strong{color:#15803d}.promoter-order-metric-bad strong{color:#b91c1c}.promoter-order-metric-ok .promoter-order-metric-icon{color:#16a34a}.promoter-order-metric-bad .promoter-order-metric-icon{color:#dc2626}.promoter-progress{background:#fee2e2;border-radius:999px;height:8px;overflow:hidden}.promoter-progress-ok{background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:999px;height:100%;transition:width .35s}.promoter-money-kpis{margin-bottom:.15rem}.promoter-money-kpis-2{grid-template-columns:repeat(2,minmax(0,1fr))}.promoter-money-kpis-4{grid-template-columns:repeat(4,minmax(0,1fr))}.promoter-kpi-due{background:linear-gradient(135deg,#eff6ff,#f0f9ff);border-color:#bfdbfe}.promoter-kpi-remaining{background:linear-gradient(135deg,#fef2f2,#fff1f2);border-color:#fecaca}.promoter-kpi-remaining .dash-kpi-value{color:#b91c1c}.promoter-kpi-fixed{background:linear-gradient(135deg,#fff7ed,#fffbeb);border-color:#fed7aa}.promoter-fixed-split{color:var(--text-muted);flex-wrap:wrap;gap:.35rem .75rem;margin-top:.25rem;font-size:.78rem;display:flex}.promoter-fixed-split strong{color:#9a3412;font-weight:700}.promoter-fee-sections{gap:1rem}.promoter-fee-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .5rem;font-size:.88rem;font-weight:700}.promoter-kpi-clickable{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;transition:border-color .15s,box-shadow .15s,transform .15s}.promoter-kpi-clickable:hover:not(:disabled){box-shadow:var(--shadow-md);border-color:#93c5fd;transform:translateY(-1px)}.promoter-kpi-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.promoter-kpi-clickable:disabled{opacity:.55;cursor:not-allowed}.promoter-payment-modal{width:min(100%,920px)}.promoter-payment-table-wrap{max-height:min(62vh,520px);overflow:auto}.promoter-allocation-summary{font-size:.85rem;font-weight:600;display:block}.promoter-allocation-list{margin:.35rem 0 0;padding-left:1rem;line-height:1.35}.promoter-allocation-list li{margin:.1rem 0}.promoter-year-strip{border-radius:var(--radius-sm);border:1px solid var(--border);background:#f8fafc;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.65rem .85rem;font-size:.88rem;display:flex}.promoter-year-strip-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.72rem;font-weight:700}.promoter-year-strip-items{flex-wrap:wrap;align-items:center;gap:.35rem .65rem;display:flex}.promoter-year-strip-items strong{color:#0f172a;font-weight:800}.promoter-year-strip-sep{color:#cbd5e1}.promoter-fee-table .badge{font-size:.65rem}@media (width<=960px){.promoter-enrollment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.promoter-header{flex-direction:column;align-items:stretch}.promoter-month-filter,.promoter-header-actions{width:100%}.promoter-header-actions .btn{flex:auto}}@media (width<=560px){.promoter-enrollment-grid,.promoter-money-kpis,.promoter-money-kpis-2,.promoter-money-kpis-4{grid-template-columns:1fr}}.actions{flex-wrap:wrap;gap:.35rem;display:flex}.toolbar{flex-wrap:wrap;gap:.75rem;display:flex}@media (width>=1400px){:root{--content-max:1320px}}@media (width>=1600px){:root{--content-max:1440px}}@media (width>=1920px){:root{--content-max:1560px}}@media (width<=1100px){.dash-stats-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-charts-grid,.dash-rings-grid{grid-template-columns:1fr}.dash-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-overview-grid{grid-template-columns:1fr}.promoter-money-kpis-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=1023px){.nav-toggle,.sidebar-close{justify-content:center;align-items:center;display:inline-flex}.sidebar-backdrop{z-index:40;opacity:0;pointer-events:none;cursor:pointer;background:#0f172a73;border:none;padding:0;transition:opacity .25s;display:block;position:fixed;inset:0}.app-shell.nav-open .sidebar-backdrop{opacity:1;pointer-events:auto}.sidebar{z-index:50;box-shadow:none;transition:transform .28s cubic-bezier(.4,0,.2,1);transform:translate(-100%)}.app-shell.nav-open .sidebar{transform:translate(0);box-shadow:8px 0 32px #0f172a2e}.app-shell.nav-open{height:100dvh;overflow:hidden}.main,.main-bg{margin-left:0}.sidebar-inner{flex-flow:column;align-items:stretch}.brand{width:100%}.sidebar-nav{flex-direction:column;flex:1;width:auto}.nav-section{display:block}.sidebar-footer{flex-direction:column;width:100%}.user-card{min-width:0}.btn-sidebar{width:100%}.topbar-sticky{padding:max(.65rem, env(safe-area-inset-top)) .85rem .5rem}.main-inner{padding:0 .85rem max(1.5rem, env(safe-area-inset-bottom))}.topbar-left{flex-direction:row;flex:1;align-items:center;gap:.65rem;min-width:0}.topbar-greeting-school{flex-direction:column;gap:.05rem;min-width:0;display:flex}.panel{overflow-x:auto}.settings-tabs{width:100%;display:flex}.settings-tabs .btn{flex:auto;min-width:0;padding-inline:.55rem;font-size:.78rem}}@media (width<=768px){.dash-stats-grid-4,.dash-kpi-row{grid-template-columns:1fr}.dash-hero-inner{flex-direction:column;align-items:flex-start}.dash-hero-school:after{display:none}.topbar{align-items:flex-start}.topbar-right{flex-flow:wrap;justify-content:space-between;align-items:center;gap:.35rem;width:100%}.topbar-date{padding:.3rem .55rem;font-size:.72rem}.page-header,.list-panel-head{flex-direction:column;align-items:stretch}.modal-overlay{padding:max(.5rem, env(safe-area-inset-top)) .5rem max(.75rem, env(safe-area-inset-bottom));align-items:stretch;overflow:hidden}.modal-panel,.modal-panel-wide,.promoter-payment-modal,.enrollment-detail-card{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;width:100%;max-height:calc(100dvh - 1rem);margin:auto 0;padding:1rem;overflow-y:auto}.modal-head{flex-direction:column;align-items:stretch;gap:.65rem}.enrollment-detail-head{margin:-1rem -1rem 0;padding:.85rem 1rem .75rem}.finance-fixed-fees-bar{flex-direction:column;align-items:stretch}.finance-fixed-fees-hint{text-align:left;margin-left:0}.finance-student-toolbar{flex-direction:column}.report-print-toolbar{width:100%}.report-print-toolbar .btn{flex:auto}.promoter-order-metrics{grid-template-columns:1fr}.auth-page{padding:max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom))}}@media (width<=640px){.report-signatures-grid{grid-template-columns:1fr}.topbar-school{font-size:.88rem}.topbar-greeting{font-size:.72rem}h1{font-size:1.2rem}.form-grid{grid-template-columns:1fr}.inline-form{flex-direction:column;align-items:stretch}.inline-form .form-actions{align-self:stretch}.inline-form .form-actions .btn{width:100%}}
