*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}header{height:68px;padding:0 28px;background:var(--ep-gradient-brand);color:#fff;display:flex;align-items:center;gap:18px}.brand{font:700 1.5rem var(--ep-font-serif);color:#fff;text-decoration:none}.user{margin-left:auto;display:flex;gap:12px;align-items:center}.shell{display:grid;grid-template-columns:230px 1fr;min-height:calc(100vh - 68px)}aside{background:#fff;border-right:1px solid var(--ep-border);padding:24px 14px}nav{display:grid;gap:7px}.nav-link{display:block;padding:11px 14px;border-radius:10px;color:var(--ep-navy);text-decoration:none;font-weight:600}.nav-link.active,.nav-link:hover{background:#eef3fa;color:var(--ep-purple)}main{padding:32px;max-width:1440px;width:100%;overflow:hidden}.page-head{display:flex;justify-content:space-between;align-items:start;gap:16px;margin-bottom:24px}.page-head h1{font:700 2.3rem var(--ep-font-serif);color:var(--ep-navy);margin:0}.page-head p{color:var(--ep-muted);margin:5px 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:24px}.stat{padding:20px}.stat strong{display:block;font:700 2rem var(--ep-font-serif);color:var(--ep-navy)}.stat span{color:var(--ep-muted);font-size:.84rem}.quick{display:flex;gap:10px;flex-wrap:wrap}.link{text-decoration:none;display:inline-block}.ghost,.btn{border:1px solid var(--ep-border);background:#fff;color:var(--ep-navy);border-radius:9px;padding:9px 13px;cursor:pointer;font-weight:600}.ghost{background:transparent;color:inherit;border-color:#ffffff55}.card{padding:22px;margin-bottom:20px}.report-cta{background:linear-gradient(135deg,#0d3b6f,#470074);color:#fff;border-radius:18px;padding:28px;margin-bottom:24px}.report-cta h2{font:700 2rem var(--ep-font-serif);margin:0 0 5px}.report-cta .ep-btn-primary{background:#fff;color:var(--ep-purple);margin-top:14px}table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--ep-border);border-radius:14px;overflow:hidden}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--ep-border);font-size:.86rem}th{background:#f5f7fb;color:var(--ep-navy)}tr:last-child td{border:0}.badge{display:inline-block;padding:4px 9px;border-radius:999px;font-size:.72rem;font-weight:700;background:#eaf0f8;color:var(--ep-navy)}.badge.Completed,.badge.Approved{background:#e4f5ec;color:var(--ep-success)}.badge.Submitted,.badge.In-Progress{background:#fff4d6;color:#8a6200}.badge.Needs-Changes,.badge.Not-Started{background:#fdeaea;color:var(--ep-error)}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.field{display:grid;gap:6px;margin-bottom:14px}.field label{font-size:.78rem;font-weight:700;color:var(--ep-navy)}input,select,textarea{border:1.5px solid var(--ep-border);border-radius:9px;padding:10px;background:#fff;color:var(--ep-ink)}textarea{min-height:90px}.modal{position:fixed;inset:0;background:#0d234bcc;display:grid;place-items:center;padding:20px;z-index:20}.modal-card{background:#fff;border-radius:20px;padding:28px;max-width:680px;width:100%;max-height:90vh;overflow:auto;position:relative}.modal-x{position:absolute;right:15px;top:12px;border:0;background:none;font-size:1.6rem;cursor:pointer}.hidden{display:none!important}.center{min-height:100vh;display:grid;place-content:center;text-align:center}.message{padding:36px;max-width:540px;margin:20px}.centered-actions{justify-content:center;margin-top:20px}.spinner{width:38px;height:38px;border:4px solid #dae3ef;border-top-color:var(--ep-purple);border-radius:50%;animation:spin .8s linear infinite;margin:auto}@keyframes spin{to{transform:rotate(360deg)}}#notice{padding:10px 14px;border-radius:8px;margin-bottom:12px;display:none}#notice.show{display:block;background:#e4f5ec;color:var(--ep-success)}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--ep-border);margin:18px 0}.tabs span{padding:9px;font-weight:600;color:var(--ep-navy)}@media(max-width:760px){.shell{grid-template-columns:1fr}aside{overflow:auto;padding:10px}nav{display:flex;min-width:max-content}main{padding:20px 14px}header{padding:0 14px}.user #identity{display:none}table{display:block;overflow:auto}.page-head{display:block}}
.match-help{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#eef3fa;border:1px solid var(--ep-border);border-radius:12px;color:var(--ep-navy);padding:12px 15px;margin-bottom:16px;font-size:.86rem}.match-help span{color:var(--ep-muted)}.compact{padding:6px 9px;font-size:.76rem}.form-note{color:var(--ep-muted);font-size:.82rem;line-height:1.5}
fieldset{border:1px solid var(--ep-border);border-radius:12px;padding:14px;margin:0 0 16px}legend{padding:0 6px;color:var(--ep-navy);font-size:.8rem;font-weight:700}.check-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;max-height:180px;overflow:auto}.check-list label{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;background:var(--ep-card-soft);color:var(--ep-ink);font-size:.84rem}.check-list input{width:auto}button:disabled{cursor:not-allowed;opacity:.5}
.field-help{margin:0 0 10px;color:var(--ep-muted);font-size:.8rem}.class-type-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.type-list{display:flex;flex-wrap:wrap;gap:5px}@media(max-width:520px){.class-type-list{grid-template-columns:1fr}}

/* Teacher operations */
.table-scroll{width:100%;overflow-x:auto;margin-bottom:24px}.table-scroll table{min-width:1080px}.teacher-filters{padding:14px;background:var(--ep-surface);border:1px solid var(--ep-border);border-radius:14px}.teacher-filters input{min-width:230px}.row-actions{display:flex;flex-wrap:wrap;gap:6px;min-width:180px}.teacher-meta{display:flex;align-items:center;gap:12px;color:var(--ep-muted);margin:-12px 0 22px}.teacher-tabs{overflow-x:auto}.teacher-tabs button{border:0;background:transparent;padding:11px 13px;color:var(--ep-navy);font-weight:600;white-space:nowrap;cursor:pointer;border-bottom:3px solid transparent}.teacher-tabs button.active,.teacher-tabs button:focus-visible{color:var(--ep-purple);border-bottom-color:var(--ep-purple);outline:none}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.detail-grid .card{margin:0}.detail-grid h2,.section-title,.card h2{font:700 1.4rem var(--ep-font-serif);color:var(--ep-navy);margin-top:0}.detail-grid dl{display:grid;grid-template-columns:auto 1fr;gap:9px 16px}.detail-grid dt{font-weight:700;color:var(--ep-navy)}.detail-grid dd{margin:0}.incomplete-card,.warning-card{padding:22px;border-radius:16px;margin-bottom:22px}.incomplete-card{border:1px solid var(--ep-gold);background:#fffaf0}.warning-card{border:1px solid #e4b8b8;background:#fff4f4;color:#7b2020}.admin-note{border-left:4px solid var(--ep-purple)}.empty-state{padding:24px;border:1px dashed var(--ep-border);border-radius:12px;color:var(--ep-muted)}.detail-action{margin-bottom:16px}.badge.Paused,.badge.Draft{background:#fff4d6;color:#765400}.badge.Inactive,.badge.Profile-incomplete,.badge.Missing{background:#f1f1f3;color:#555}.badge.Paid{background:#e8e1f2;color:var(--ep-purple)}
@media(max-width:760px){.detail-grid{grid-template-columns:1fr}.teacher-filters>*{width:100%}.teacher-meta{align-items:flex-start;flex-direction:column}}

/* Compact form controls */
.number-stepper{display:grid;grid-template-columns:34px 1fr;align-items:stretch}.number-stepper input{border-radius:0 9px 9px 0;min-width:0;-moz-appearance:textfield}.number-stepper input::-webkit-inner-spin-button,.number-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper-buttons{display:grid;grid-template-rows:1fr 1fr}.stepper-buttons button{border:1.5px solid var(--ep-border);background:var(--ep-card-soft);color:var(--ep-navy);font-size:.62rem;line-height:1;padding:0;cursor:pointer}.stepper-buttons button:first-child{border-radius:9px 0 0 0;border-bottom:0}.stepper-buttons button:last-child{border-radius:0 0 0 9px}.stepper-buttons button:hover,.stepper-buttons button:focus-visible{background:#e7edf7;color:var(--ep-purple);outline:none}.optional-field{margin-bottom:14px}.optional-field-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;color:var(--ep-navy);font-size:.78rem;font-weight:700}.start-date-field{margin-bottom:0}.switch{display:flex;align-items:center;gap:7px;cursor:pointer}.switch input{position:absolute;opacity:0;pointer-events:none}.switch-track{width:38px;height:22px;padding:2px;border-radius:999px;background:#c9d2df;transition:.2s}.switch-track::before{content:"";display:block;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0d3b6f33;transition:.2s}.switch input:checked+.switch-track{background:var(--ep-purple)}.switch input:checked+.switch-track::before{transform:translateX(16px)}.switch input:focus-visible+.switch-track{outline:3px solid #4a90d955;outline-offset:2px}

/* Pay day reporting and private payment administration */
.pay-report-table tr.pay-day-group-start td{border-top:3px solid var(--ep-ink)}
.pay-day-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;margin-bottom:26px;background:linear-gradient(135deg,#fff,#f3f0f8);box-shadow:0 8px 24px rgba(13,59,111,.08)}.pay-day-banner h2{font:700 1.8rem var(--ep-font-serif);color:var(--ep-navy);margin:3px 0}.pay-day-banner p{margin:0;color:var(--ep-muted)}.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ep-purple)}.hours-list{display:grid;gap:10px;margin:18px 0}.hours-row{display:grid;grid-template-columns:1fr 120px;align-items:center;gap:14px;padding:13px;border:1px solid var(--ep-border);border-radius:12px;background:var(--ep-card-soft)}.hours-row label{display:grid;color:var(--ep-navy)}.hours-row label span{font-size:.75rem;color:var(--ep-muted)}.hours-row input{text-align:right}.extra-hours{display:grid;grid-template-columns:140px 1fr;gap:12px;padding:14px;margin:12px 0;border-left:4px solid var(--ep-purple);border-radius:10px;background:#f7f3fa}.extra-hours .field{margin:0}.report-comments{margin-top:18px}.line-list{margin:8px 0;padding-left:18px;min-width:260px}.line-list li{margin:5px 0}details summary{cursor:pointer;color:var(--ep-purple);font-weight:600}@media(max-width:600px){.pay-day-banner,.hours-row{align-items:stretch;grid-template-columns:1fr;flex-direction:column}.extra-hours{grid-template-columns:1fr}}
.roster-search{display:grid;gap:6px;margin-bottom:10px}.roster-search label{color:var(--ep-navy);font-size:.76rem;font-weight:700}.roster-search input{width:100%;background:var(--ep-surface);padding-left:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%230D3B6F' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:11px center}.roster-empty{margin:10px 0 0;color:var(--ep-muted);font-size:.82rem}.check-list label[hidden]{display:none}

/* Class list filtering and spreadsheet-style sorting */
.class-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px}.class-tools-label{color:var(--ep-navy);font-size:.8rem;font-weight:700}.class-tools select,.teacher-picker summary{padding:7px 10px;font-size:.8rem}.teacher-picker{position:relative}.teacher-picker summary{display:flex;align-items:center;justify-content:space-between;gap:18px;min-width:145px;border:1.5px solid var(--ep-border);border-radius:9px;background:var(--ep-surface);color:var(--ep-ink);cursor:pointer;list-style:none}.teacher-picker summary::-webkit-details-marker{display:none}.teacher-picker-menu{position:absolute;top:calc(100% + 5px);left:0;z-index:5;display:grid;gap:2px;min-width:230px;max-height:240px;overflow:auto;padding:7px;background:var(--ep-surface);border:1px solid var(--ep-border);border-radius:10px;box-shadow:0 10px 28px rgba(13,59,111,.12)}.teacher-picker-menu label{display:flex;align-items:center;gap:8px;padding:7px;border-radius:7px;font-size:.82rem;white-space:nowrap}.teacher-picker-menu label:hover{background:var(--ep-card-soft)}.teacher-picker-menu input{width:auto}.class-result-count{color:var(--ep-muted);font-size:.78rem}.class-sort{display:flex;align-items:center;gap:6px;width:100%;padding:0;border:0;background:transparent;color:inherit;font-weight:inherit;text-align:left;cursor:pointer}.class-sort span{color:var(--ep-muted-light);font-size:.78rem}.class-sort:hover span,.class-sort:focus-visible span{color:var(--ep-purple)}.class-sort:focus-visible{outline:2px solid var(--ep-sky);outline-offset:3px;border-radius:2px}.class-filter-empty{margin:0;padding:18px 14px;background:var(--ep-surface);border:1px solid var(--ep-border);border-top:0;color:var(--ep-muted);font-size:.86rem}.class-table table{min-width:970px}@media(max-width:760px){.class-tools>*{max-width:100%}.teacher-picker-menu{right:0;left:auto}}
.class-search{display:grid;gap:5px;min-width:min(100%,300px)}.class-search input{width:100%;padding:8px 12px 8px 36px;background-color:var(--ep-surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%230D3B6F' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:11px center}.class-search:focus-within .class-tools-label{color:var(--ep-purple)}
.rate-source{color:var(--ep-muted);font-size:.74rem}.rate-override{padding:14px;border:1px solid var(--ep-border);border-radius:12px;background:var(--ep-card-soft)}.rate-override .field{margin:0}.rate-override input:disabled{background:#eef3fa;color:var(--ep-navy);font-weight:600}.payment-rates-table table{min-width:820px}.payment-rates-table td{padding-top:15px;padding-bottom:15px;vertical-align:middle}.rate-book .ledger-heading{border-bottom-color:var(--ep-purple)}.rate-currency-badge{margin-top:6px;padding:3px 7px;font-size:.66rem}.rate-edit{white-space:nowrap}
.balance-indicator{display:inline-grid;place-items:center}.balance-indicator strong{display:grid;width:34px;height:34px;place-items:center;border-radius:50%;font:700 1.05rem var(--ep-font-serif)}.balance-indicator.healthy strong{background:#e4f5ec;color:var(--ep-success)}.balance-indicator.low strong{background:#fff4d6;color:#765400}.balance-indicator.critical strong{background:#fdeaea;color:var(--ep-error)}
.rate-form-section{margin:16px 0;padding:16px;border:1px solid var(--ep-border);border-radius:14px;background:var(--ep-surface)}.rate-form-section:first-of-type{border-top:3px solid var(--ep-navy)}.currency-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.currency-toggle strong{color:var(--ep-navy)}.currency-toggle p{margin:2px 0 0;color:var(--ep-muted);font-size:.76rem}.currency-warning,.rate-form-error{padding:10px 12px;border-radius:9px;font-size:.78rem}.currency-warning{background:#fff7e1;color:#765400;border:1px solid #ead39a}.rate-form-error{background:#fdeaea;color:var(--ep-error);border:1px solid #efb8b8}.amount-field{position:relative}.amount-field .field{margin-bottom:8px}.amount-field input,.amount-input input{padding-right:58px}.amount-field>[data-amount-currency],.amount-input>[data-amount-currency]{position:absolute;right:12px;color:var(--ep-navy);font-size:.72rem;font-weight:800}.amount-field>[data-amount-currency]{top:36px}.amount-input{position:relative}.amount-input>[data-amount-currency]{top:13px}.amount-input .field-help{grid-column:1/-1}.rate-preview{padding:9px 11px;border-radius:9px;background:#eef3fa;color:var(--ep-muted);font-size:.78rem}.rate-preview strong{color:var(--ep-navy);font-variant-numeric:tabular-nums}

/* Accounting-ledger treatment for private student payments */
.payment-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}.money-stat{position:relative;overflow:hidden;padding:22px 24px;border-top:4px solid var(--ep-navy)}.money-stat:nth-child(2){border-top-color:var(--ep-purple)}.money-stat span,.money-stat small{display:block;color:var(--ep-muted)}.money-stat span{font-size:.76rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.money-stat strong{display:flex;align-items:baseline;gap:5px;margin:7px 0 2px;color:var(--ep-navy);font:700 2.15rem var(--ep-font-serif);font-variant-numeric:tabular-nums}.money-stat strong b{font-size:2.9rem;line-height:.8;color:var(--ep-purple)}.money-stat small{font-size:.75rem}.ledger-section{margin:30px 0}.ledger-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:12px;padding-bottom:10px;border-bottom:2px solid var(--ep-navy)}.ledger-heading .section-title{margin:2px 0 0}.ledger-heading p{max-width:430px;margin:0;color:var(--ep-muted);font-size:.8rem;text-align:right}.payment-history table{min-width:940px}.payment-history th{font-size:.72rem;letter-spacing:.05em;text-transform:uppercase}.ledger-amount{color:var(--ep-navy);font:700 1.2rem var(--ep-font-serif);font-variant-numeric:tabular-nums}.converted-amount{color:var(--ep-success);font-weight:700;font-variant-numeric:tabular-nums}.currency-badge{display:inline-block;padding:5px 9px;border:1px solid var(--ep-border);border-radius:6px;background:var(--ep-card-soft);color:var(--ep-navy);font-weight:800;letter-spacing:.06em}.exchange-preview{display:flex;align-items:center;gap:14px;min-height:76px;margin:4px 0 18px;padding:14px;border:1px solid var(--ep-border);border-radius:12px;background:#eef3fa;color:var(--ep-navy)}.exchange-preview .exchange-icon{display:grid;flex:0 0 44px;height:44px;place-items:center;border-radius:50%;background:var(--ep-gradient-brand);color:#fff;font:700 1.7rem var(--ep-font-serif)}.exchange-preview strong{font-size:1.15rem;font-variant-numeric:tabular-nums}.exchange-preview p{margin:3px 0 0;color:var(--ep-muted);font-size:.76rem}@media(max-width:760px){.payment-summary{grid-template-columns:1fr}.ledger-heading{align-items:start;flex-direction:column}.ledger-heading p{text-align:left}.money-stat strong{font-size:1.9rem}}
.payment-tabs{gap:8px;margin:0 0 24px}.payment-tabs button{padding:10px 16px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--ep-navy);font-weight:700;cursor:pointer}.payment-tabs button.active,.payment-tabs button:focus-visible{border-bottom-color:var(--ep-purple);color:var(--ep-purple);outline:none}.payment-rate-search{display:grid;gap:6px;width:min(100%,360px);margin:0 0 14px;color:var(--ep-navy);font-size:.78rem;font-weight:700}.payment-rate-search input{width:100%;padding-left:38px;background-color:var(--ep-surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%230D3B6F' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center}.payment-rate-search:focus-within span{color:var(--ep-purple)}.payment-rate-empty{margin:0;padding:18px 14px;border:1px solid var(--ep-border);border-top:0;background:var(--ep-surface);color:var(--ep-muted);font-size:.86rem}
