:root{--ink:#112033;--muted:#637083;--navy:#0b3038;--teal:#078779;--gold:#f3b83e;--coral:#f0644f;--paper:#f5f7f5;--line:#d9e0df;--white:#fff;--shadow:0 16px 38px rgba(16,35,45,.09)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.45 Inter,Segoe UI,Arial,sans-serif}.app-shell{min-height:100vh}.topbar{height:72px;background:var(--navy);border-bottom:3px solid var(--gold);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}.brand{display:flex;gap:12px;align-items:center;color:#fff;text-decoration:none}.brand>span{display:grid;place-items:center;width:42px;height:42px;background:var(--gold);color:var(--navy);font-weight:900}.brand strong,.brand small{display:block}.brand small{color:#c9dddc}.top-actions{display:flex;align-items:center;gap:10px}.top-actions a,.top-actions button{border:1px solid #547078;background:transparent;color:#fff;padding:10px 14px;text-decoration:none;font-weight:700}.login{max-width:560px;margin:12vh auto;background:#fff;padding:44px;border-top:5px solid var(--gold);box-shadow:var(--shadow)}h1,h2,p{margin-top:0}h1{font-size:clamp(30px,4vw,48px);line-height:1.05;letter-spacing:0}.login form{display:flex;gap:10px}.login input{flex:1;padding:14px;border:1px solid var(--line)}button{font:inherit;cursor:pointer}.primary,.login button{border:0;background:var(--teal);color:#fff;padding:12px 18px;font-weight:800}.eyebrow{color:var(--coral);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.error{color:#b3261e}.tabs{display:flex;gap:6px;padding:18px max(24px,calc((100vw - 1380px)/2));background:#fff;border-bottom:1px solid var(--line);position:sticky;top:72px;z-index:4}.tabs button{border:0;background:transparent;padding:11px 18px;font-weight:800;color:var(--muted)}.tabs button.active{background:var(--navy);color:#fff;box-shadow:inset 0 -3px var(--gold)}.view{display:none;max-width:1380px;margin:auto;padding:32px 24px 70px}.view.active{display:block}.page-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:26px}.page-heading p{color:var(--muted);margin-bottom:0}.metric-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px}.metric{background:#fff;border-left:4px solid var(--teal);padding:18px;box-shadow:var(--shadow)}.metric strong{display:block;font-size:28px}.metric span{color:var(--muted)}.today-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(290px,1fr);gap:24px}.stack{display:grid;gap:12px}.class-card,.attention-card{background:#fff;border:1px solid var(--line);padding:18px;box-shadow:var(--shadow)}.class-card{display:grid;grid-template-columns:110px 1fr auto;gap:18px;align-items:center;border-left:5px solid var(--teal)}.time{font-size:19px;font-weight:900}.class-card h3{margin:0 0 5px}.meta{color:var(--muted);font-size:13px}.roster-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.pill{background:#e7f4f1;color:#075e56;padding:4px 8px;font-size:12px;font-weight:800}.attention-card{border-left:4px solid var(--coral)}.empty{background:#fff;border:1px dashed #b8c4c2;padding:28px;color:var(--muted);text-align:center}.class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.weekly-card{background:#fff;border-top:4px solid var(--gold);padding:20px;box-shadow:var(--shadow)}.weekly-card header{display:flex;justify-content:space-between;gap:12px}.weekly-card h3{margin:0}.card-actions{display:flex;gap:6px;margin-top:16px}.card-actions button{border:1px solid var(--line);background:#fff;padding:7px 10px}.search{display:block;max-width:520px;font-weight:800;margin-bottom:18px}.search input{display:block;width:100%;margin-top:6px;padding:12px;border:1px solid var(--line)}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}table{border-collapse:collapse;width:100%;min-width:800px}th,td{text-align:left;padding:14px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#eaf0ef;color:#344553;font-size:12px;text-transform:uppercase}td button{border:1px solid var(--line);background:#fff;padding:6px 9px}.status{display:inline-block;padding:4px 8px;font-size:12px;font-weight:900}.status.paid{background:#dff3ea;color:#086847}.status.due{background:#fff0cd;color:#805900}.status.overdue{background:#ffe1dc;color:#a22d20}dialog{width:min(720px,calc(100vw - 28px));border:0;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.32)}dialog::backdrop{background:rgba(7,27,34,.62)}dialog header,dialog footer{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line)}dialog footer{border:0;border-top:1px solid var(--line);justify-content:flex-end;gap:10px}.icon{border:0;background:transparent;font-size:30px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:24px}.fields label{font-weight:800}.fields input,.fields select,.fields textarea{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid #b9c5c3;font:inherit}.fields .wide{grid-column:1/-1}.check-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}.check-grid label{font-weight:500}.toast{position:fixed;right:22px;bottom:22px;background:var(--navy);color:#fff;padding:13px 18px;box-shadow:var(--shadow);z-index:10}@media(max-width:900px){.metric-row{grid-template-columns:1fr 1fr}.today-grid,.class-grid{grid-template-columns:1fr}.topbar{padding:0 14px}.top-actions span{display:none}.page-heading{align-items:start}.class-card{grid-template-columns:90px 1fr}.class-card .card-actions{grid-column:2}.fields{grid-template-columns:1fr}.fields .wide{grid-column:auto}}@media(max-width:560px){.top-actions a{display:none}.topbar{height:64px}.tabs{top:64px;overflow:auto;padding:10px 12px}.tabs button{white-space:nowrap}.view{padding:24px 14px}.metric-row{grid-template-columns:1fr 1fr}.page-heading{display:block}.page-heading .primary{margin-top:16px}.class-card{grid-template-columns:1fr}.class-card .card-actions{grid-column:auto}.login{margin:40px 14px;padding:28px}.login form{display:block}.login input,.login button{width:100%;margin-top:8px}}
.payment-groups{display:grid;gap:22px}.payment-section{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.payment-section>header{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;background:var(--navy);color:#fff;border-bottom:3px solid var(--gold)}.payment-section>header h2{margin:0;font-size:21px}.payment-section>header span{color:#c9dddc}.payment-roster{display:grid}.payment-student{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(130px,1fr) repeat(3,minmax(110px,.8fr)) auto;gap:16px;align-items:center;padding:15px 20px;border-bottom:1px solid var(--line)}.payment-student:last-child{border-bottom:0}.payment-student strong,.payment-student small{display:block}.payment-student small{color:var(--muted)}.payment-student button{border:1px solid var(--teal);background:#fff;color:var(--teal);padding:8px 11px;font-weight:800}.payment-empty{color:var(--muted);font-style:italic}.balance-due{color:#a22d20;font-weight:800}.balance-clear{color:#086847;font-weight:800}@media(max-width:900px){.payment-student{grid-template-columns:1fr 1fr}.payment-student button{justify-self:start}}@media(max-width:560px){.payment-student{grid-template-columns:1fr}.payment-section>header{align-items:flex-start;gap:10px}}
.weekly-days{display:grid;gap:34px}.day-section{border-top:1px solid var(--line);padding-top:18px}.day-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:14px}.day-heading h2{font-size:30px;margin:2px 0 0}.day-heading>strong{color:var(--muted)}.day-class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}@media(max-width:1000px){.day-class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.day-class-grid{grid-template-columns:1fr}.day-heading h2{font-size:25px}}
.metric-row{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}.weekly-summary{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,2fr);gap:24px;align-items:center;background:var(--navy);color:#fff;padding:22px 24px;margin-bottom:28px;border-bottom:4px solid var(--gold);box-shadow:var(--shadow)}.weekly-summary h2{margin:2px 0 4px}.weekly-summary p{margin:0;color:#c9dddc}.day-counts{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.day-count{min-width:0;background:rgba(255,255,255,.08);border:1px solid #48656b;padding:11px;text-align:center}.day-count.current{background:var(--gold);border-color:var(--gold);color:var(--navy)}.day-count span,.day-count strong,.day-count small{display:block}.day-count strong{font-size:25px}.day-count small{color:inherit;opacity:.8}@media(max-width:1000px){.metric-row{grid-template-columns:repeat(3,1fr)}.weekly-summary{grid-template-columns:1fr}.day-counts{grid-template-columns:repeat(3,1fr)}}@media(max-width:560px){.metric-row{grid-template-columns:1fr 1fr}.weekly-summary{padding:18px}.day-counts{grid-template-columns:repeat(2,1fr)}}
.day-count{font:inherit;color:#fff;cursor:pointer;transition:transform .16s ease,background .16s ease,border-color .16s ease}.day-count:hover{transform:translateY(-2px);background:#18505a;border-color:#7ea1a4}.day-count.current:hover{background:#ffc94f;border-color:#ffc94f}.day-count:focus-visible,.class-day-tabs button:focus-visible{outline:3px solid #fff;outline-offset:3px}.class-day-tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:0 0 24px;padding:8px;background:var(--navy);border-bottom:4px solid var(--gold);box-shadow:var(--shadow)}.class-day-tabs button{min-width:0;border:1px solid #527078;background:#173f47;color:#fff;padding:14px 10px;font-weight:800;transition:background .16s ease,transform .16s ease}.class-day-tabs button span,.class-day-tabs button small{display:block}.class-day-tabs button small{margin-top:3px;color:#bfd3d3;font-weight:500}.class-day-tabs button:hover{background:#205660;transform:translateY(-1px)}.class-day-tabs button.active{background:var(--gold);border-color:var(--gold);color:var(--navy);box-shadow:inset 0 -3px rgba(11,48,56,.24)}.class-day-tabs button.active small{color:#29464b}@media(max-width:760px){.class-day-tabs{grid-template-columns:repeat(3,1fr)}}@media(max-width:430px){.class-day-tabs{grid-template-columns:repeat(2,1fr)}}
.day-agenda{max-width:960px}.day-agenda .class-card{width:100%}.day-agenda .class-card:hover{border-color:#aac0bd;box-shadow:0 18px 42px rgba(16,35,45,.13)}
.class-day-tabs:has(button:nth-child(7)){grid-template-columns:repeat(7,minmax(0,1fr))}@media(max-width:900px){.class-day-tabs:has(button:nth-child(7)){grid-template-columns:repeat(4,1fr)}}@media(max-width:560px){.class-day-tabs:has(button:nth-child(7)){grid-template-columns:repeat(2,1fr)}}
.student-groups{display:grid;gap:24px}.student-section{--class-accent:var(--teal);background:#fff;border:1px solid var(--line);border-top:5px solid var(--class-accent);box-shadow:var(--shadow)}.student-section.accent-1{--class-accent:#2367d1}.student-section.accent-2{--class-accent:var(--coral)}.student-section.accent-3{--class-accent:#8b5fbf}.student-section.accent-4{--class-accent:#d68b18}.student-section.unassigned{--class-accent:#7b8794}.student-section>header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;background:#f6f9f8;border-bottom:1px solid var(--line);box-shadow:inset 7px 0 var(--class-accent)}.student-section>header h2{margin:2px 0 3px;font-size:23px}.student-section>header p{margin:0;color:var(--muted)}.student-section>header>strong{white-space:nowrap;color:var(--class-accent)}.student-class-type{font-size:11px;font-weight:900;text-transform:uppercase;color:var(--class-accent)}.student-roster{display:grid}.student-record{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(190px,1fr) minmax(220px,1.4fr) auto;gap:20px;align-items:center;padding:15px 20px;border-bottom:1px solid var(--line)}.student-record:last-child{border-bottom:0}.student-record strong,.student-record span,.student-record small{display:block}.student-record small{margin-bottom:3px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.student-record span{color:var(--muted);font-size:13px}.student-identity strong{font-size:17px;color:var(--ink)}.student-actions{display:flex;gap:7px}.student-actions button{border:1px solid var(--line);background:#fff;padding:7px 10px;font-weight:700}.student-actions button:first-child{border-color:var(--class-accent);color:var(--class-accent)}.student-section-empty{padding:22px;color:var(--muted);font-style:italic}@media(max-width:900px){.student-record{grid-template-columns:1fr 1fr}.student-actions{justify-self:start}}@media(max-width:560px){.student-section>header{align-items:flex-start}.student-record{grid-template-columns:1fr}.student-actions{justify-self:stretch}.student-actions button{flex:1}}
.schedule-mode-field{display:grid;gap:8px}.schedule-mode-control{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.schedule-mode-control label{display:flex;align-items:center;justify-content:center;gap:9px;min-height:48px;border:2px solid #b9c5c3;background:#fff;color:var(--muted);font-weight:800;cursor:pointer}.schedule-mode-control label:has(input:checked){border-color:var(--teal);background:#e7f4f1;color:#075e56;box-shadow:inset 0 -3px var(--teal)}.schedule-mode-control input{width:auto!important;margin:0!important;accent-color:var(--teal)}#weekly-schedule-fields[hidden],#recurring-start-field[hidden],#one-off-date-field[hidden]{display:none}.schedule-start-date{display:block;max-width:360px}.schedule-start-date span{color:var(--muted);font-weight:500}.one-off-card{border-top-color:var(--coral)}.one-off-card .eyebrow{color:#a22d20}.class-day-tabs:has(button:nth-child(9)){grid-template-columns:repeat(5,minmax(0,1fr))}@media(max-width:760px){.class-day-tabs:has(button:nth-child(9)){grid-template-columns:repeat(3,1fr)}}@media(max-width:430px){.schedule-mode-control{grid-template-columns:1fr}.class-day-tabs:has(button:nth-child(9)){grid-template-columns:1fr 1fr}}
