:root{color-scheme:light;background:#f6f4ef;color:#1f2933;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:inherit}.shell{min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 32px;background:#17324d;color:white}.brand{font-weight:800;letter-spacing:.02em}.nav{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.nav a{color:white;text-decoration:none;font-weight:600;transition:color .15s}.nav a:hover{color:#00e5ff}.main{padding:32px;max-width:1180px;margin:0 auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:16px;gap:16px}.card{background:white;border:1px solid #e5e1d8;border-radius:16px;padding:20px;box-shadow:0 1px 2px #0000000d}.card h2,.card h3{margin:0 0 8px}.metric{font-size:36px;font-weight:800}.muted{color:#667085}.table{width:100%;border-collapse:collapse;background:white;border-radius:16px;overflow:hidden}.table td,.table th{text-align:left;padding:12px;border-bottom:1px solid #ece7dc;vertical-align:middle}.badge{display:inline-flex;border-radius:999px;padding:4px 10px;background:#e8f1ff;color:#17324d;font-weight:700;font-size:12px}.badgeSquare{border-radius:4px}.hero{display:grid;grid-gap:16px;gap:16px;margin-bottom:24px}.actions{display:flex;flex-wrap:wrap;gap:12px}.button,button{background:#17324d;color:white;border:0;border-radius:10px;padding:10px 14px;text-decoration:none;font-weight:700;cursor:pointer}.button.secondary{background:#e8dfd0;color:#17324d}.linkButton{background:transparent;color:white;padding:0;border-radius:0}.form{grid-gap:12px}.form,.formGrid{display:grid;gap:12px}.formGrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px}.field{display:grid;grid-gap:6px;gap:6px}.field label{font-weight:700;font-size:13px}.field input,.field select,.field textarea{width:100%;border:1px solid #d0d5dd;border-radius:10px;padding:10px;font:inherit;background:white}.tabs{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 20px}.tabs a{background:#fff;border:1px solid #e5e1d8;border-radius:999px;padding:8px 12px;text-decoration:none;font-weight:700;transition:color .15s}.tabs a:hover{color:#0e7490}.stack{display:grid;grid-gap:16px;gap:16px}.error{color:#b42318;font-weight:700}.calendar{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:12px;gap:12px}.event{border-left:5px solid #17324d}.attendanceGrid{overflow:auto}.markSelect{min-width:100px}.field select:not([multiple]){appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23667085' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:10px 6px;padding-right:32px}.dummySelect{display:block;width:100%;text-align:left;font:inherit;font-weight:400;color:#1f2933;cursor:pointer;background-position:right 14px center;padding:10px 32px 10px 10px}.dummySelect,.overviewYearSelect{border:1px solid #d0d5dd;border-radius:10px;background-color:white;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23667085' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:10px 6px}.overviewYearSelect{font:inherit;background-position:right 16px center;padding:10px 38px 10px 10px}.attendanceGrid{overflow-x:auto}.attendanceTable{white-space:nowrap;table-layout:fixed}.attendanceTable td,.attendanceTable th{padding:6px 12px;vertical-align:middle}.attendanceNameCol{width:120px;text-align:left!important;padding-left:12px!important;padding-right:6px!important}.sessionDateHeader{font-size:11px;width:70px}.attendanceCell,.sessionDateHeader{text-align:center!important}.attendanceMark{width:40px;text-align:center;border-radius:8px;padding:4px 2px;border:2px solid #d0d5dd;font-weight:800;font-size:14px;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:white}.attendanceMark[data-color=present]{background:#d1fadf;border-color:#12b76a;color:#027a48}.attendanceMark[data-color=absent]{background:#fee4e2;border-color:#f04438;color:#b42318}.attendanceMark[data-color=no_class]{background:#d0d5dd;border-color:#98a2b3;color:#36454f}.attendanceMark[data-color=withdrawn]{background:#ede9fe;border-color:#8b5cf6;color:#6d4aa8}.attendanceMark:disabled{cursor:not-allowed}.sessionDateHeaderBtn{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer}.sessionDateHeaderBtn:hover:not(:disabled){text-decoration:underline}.sessionDateHeaderBtn:disabled{cursor:default}.sessionCancelMenu{position:absolute;top:100%;left:50%;transform:translateX(-50%);z-index:20;margin-top:4px;background:white;border:1px solid #e5e1d8;border-radius:10px;box-shadow:0 4px 16px rgba(15,23,33,.15);padding:6px;white-space:nowrap}.sessionCancelMenu button{padding:6px 10px;font-size:12px;white-space:nowrap}.attendanceCell.sessionCancelled,.sessionDateHeader.sessionCancelled{background:#e5e7eb}.attendanceCell.sessionOtherTeacher,.sessionDateHeader.sessionOtherTeacher{background:#f2f2f0}.attendanceDates{display:flex;gap:24px;flex-wrap:wrap;margin-bottom:16px}.dateInfo{display:flex;align-items:center;gap:8px;font-size:14px}.dateLabel{color:#667085;font-weight:600}.attendanceDateForm{border-top:1px solid #e5e1d8;padding-top:16px;margin-top:4px}.weekGrid{display:grid;grid-gap:0;gap:0;border:1px solid #e5e1d8;border-radius:16px;overflow:hidden;background:#f6f4ef}.dayCol{display:flex;flex-direction:column;min-height:180px;border-right:1px solid #e5e1d8}.dayCol:last-child{border-right:none}.dayHeader{padding:10px 8px;font-weight:800;background:white;border-bottom:1px solid #e5e1d8;letter-spacing:.06em;text-transform:uppercase;color:#667085}.dayHeader,.noClasses{font-size:12px;text-align:center}.noClasses{padding:12px 6px;color:#d0d5dd}.eventCard{display:block;margin:6px 6px 0;padding:10px;border-radius:10px;border-left:4px solid #17324d;text-decoration:none;color:#1f2933;font-size:12px;line-height:1.45;cursor:pointer;box-shadow:0 3px 8px #0f223640}.eventCard:hover{filter:brightness(.95)}.eventCard:last-child{margin-bottom:6px}.eventLang{font-weight:800;font-size:10px;text-transform:uppercase;letter-spacing:.07em;margin-bottom:2px}.eventTitle{font-weight:700;margin-bottom:3px;font-size:12px}.eventMeta{color:#667085;font-size:11px}.eventTypeBadge{display:inline-block;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:1px 5px;margin-top:3px}.timeGrid{display:grid;border:1px solid #e5e1d8;border-radius:16px;overflow:hidden;background:white}.dayHeaderCell,.timeAxisSpacer{background:white;border-bottom:1px solid #e5e1d8;border-right:1px solid #e5e1d8}.dayHeaderCell{padding:10px 8px;font-weight:800;font-size:12px;text-align:center;letter-spacing:.06em;text-transform:uppercase;color:#667085}.dayHeaderCell:last-child{border-right:none}.untimedCell,.untimedEmpty{background:white;border-bottom:1px solid #e5e1d8;border-right:1px solid #e5e1d8}.untimedCell{padding:4px 5px 0}.untimedCell:last-child{border-right:none}.timeAxisCell{position:relative;border-right:1px solid #e5e1d8;background:white}.hourLabel{position:absolute;right:8px;transform:translateY(-50%);font-size:10.5px;font-weight:700;color:#98a2b3;white-space:nowrap}.halfHourLabel{font-size:9.5px;font-weight:500;color:#c2c8d1}.dayBodyCell{position:relative;border-right:1px solid #e5e1d8;background:#fcfbf9}.dayBodyCell:last-child{border-right:none}.hourLine{position:absolute;left:0;right:0;border-top:1px solid #c9c1b0;pointer-events:none}.halfHourLine{border-top:1px dashed #ece7dc}.noSlot{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#d0d5dd;font-size:12px}.gridEvent{position:absolute;padding:5px 7px;border-radius:8px;border-left:4px solid #17324d;text-decoration:none;color:#1f2933;font-size:11px;line-height:1.35;cursor:pointer;overflow:hidden;box-shadow:0 3px 8px #0f223640;transition:box-shadow .15s ease,filter .15s ease}.gridEvent:hover{filter:brightness(.97)}.gridEventStacked{box-shadow:0 5px 12px #0f223666}.gridEventFront{box-shadow:0 14px 32px #0f223670;filter:none}.legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:12px 0}.legendPill{border-radius:999px;padding:3px 10px;border:2px solid;font-size:11px;font-weight:800;letter-spacing:.02em}.locationPill{display:inline-flex;align-items:center;border-radius:6px;padding:4px 10px;font-weight:700;font-size:12px}.locationPill.crescent{background:#ffeaac;color:#71581a}.locationPill.online{background:#dbeafe;color:#1e40af}.locationPill.offsite{background:#fed7aa;color:#9a3412}.monthHeader{display:flex;align-items:center;gap:12px}.monthHeader h2{margin:0}.monthGrid{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid #e5e1d8;border-radius:16px;overflow:hidden}.monthDayLabel{padding:8px 4px;text-align:center;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#667085;background:white;border-bottom:1px solid #e5e1d8}.monthCell{min-height:88px;padding:6px;border-right:1px solid #ece7dc;border-bottom:1px solid #ece7dc;background:white}.monthCell:nth-child(7n){border-right:none}.monthCell.empty{background:#faf9f7;border-right:1px solid #ece7dc}.monthCell.empty:nth-child(7n){border-right:none}.cellDate{font-size:11px;font-weight:700;color:#adb5bd;margin-bottom:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%}.cellDate.today{background:#17324d;color:white}.sessionChip{display:block;border-radius:5px;padding:2px 5px;margin-bottom:2px;font-size:10px;font-weight:700;text-decoration:none;color:#1f2933;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sessionChip:hover{filter:brightness(.92)}.sectionHead{display:flex;align-items:baseline;gap:12px;margin:8px 0 4px}.sectionHead h2{margin:0}.sectionHead .muted{font-size:13px}.statusBadge{display:inline-flex;border-radius:999px;padding:3px 10px;font-weight:700;font-size:12px}.statusBadge.active{background:#d1fadf;color:#027a48}.statusBadge.trial{background:#fef0c7;color:#b54708}.statusBadge.cancelled,.statusBadge.inactive,.statusBadge.paused{background:#fee4e2;color:#b42318}.tsHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.tsScroll{overflow-x:auto}.tsTable{width:100%;border-collapse:collapse;min-width:560px}.tsTable td,.tsTable th{padding:10px 14px;border-bottom:1px solid #ece7dc;font-size:14px;text-align:right}.tsTable td:first-child,.tsTable th:first-child{text-align:left}.tsColHeader{background:#f6f4ef}.tsColHeader th{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#667085;border-bottom:2px solid #e5e1d8;text-align:center}.tsColHeader th:first-child{text-align:left}.tsColHeader th:last-child{text-align:right}.tsDay{font-weight:600;white-space:nowrap;color:#344054}.tsCatHeader,.tsDay{min-width:120px}.tsDayTotal{font-weight:700;color:#17324d;white-space:nowrap}.tsWeekBand td{background:#17324d;color:white;font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding:7px 14px;text-align:left!important}.tsRow:hover td{background:#faf9f7}.tsCell{padding:4px 8px!important;text-align:center!important}.tsInput{width:72px;text-align:center;border:1px solid #d0d5dd;border-radius:8px;padding:6px 8px;font:inherit;font-size:14px;background:white}.tsInput:focus{outline:none;border-color:#17324d;box-shadow:0 0 0 3px #17324d22}.tsSubtotal td{background:#f0f4f8;font-weight:700;font-size:13px;color:#344054;border-top:2px solid #cdd5df}.tsTotalRow td{background:#17324d;color:white;font-weight:700;font-size:15px;border-top:3px solid #0f2236}.tsTotalRow .tsDayTotal{font-size:18px;font-weight:800}.tsPayRow td{background:#0f2236;color:#98b3cc;font-size:13px;border-bottom:none}.tsPayDue{color:white!important;font-size:20px!important;font-weight:800!important;white-space:nowrap}.tsFooter{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.tsSubmitBtn{font-size:15px;padding:12px 28px}.langCell{display:inline-flex;border-radius:6px;padding:4px 10px;font-weight:700;font-size:12px;white-space:nowrap}.overviewGrid{display:grid;grid-template-columns:auto repeat(3,160px) 210px;grid-column-gap:32px;column-gap:32px;grid-row-gap:6px;row-gap:6px;align-items:start;justify-content:start;max-width:100%}.overviewGrid>.overviewStat:first-child{grid-column:1;grid-row:1}.overviewGrid>.overviewStat:nth-child(2){grid-column:2;grid-row:1}.overviewGrid>.overviewStat:nth-child(3){grid-column:3;grid-row:1}.overviewGrid>.overviewStat:nth-child(4){grid-column:4;grid-row:1}.overviewGrid>.overviewStat:nth-child(5){grid-column:5;grid-row:1}@media (max-width:1000px){.overviewGrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));justify-content:stretch}.overviewGrid>.overviewStat:first-child,.overviewGrid>.overviewStat:nth-child(2),.overviewGrid>.overviewStat:nth-child(3),.overviewGrid>.overviewStat:nth-child(4),.overviewGrid>.overviewStat:nth-child(5){grid-column:auto;grid-row:auto}.totalRegStat{border-right:none;padding-right:0}}.overviewStat{display:grid;grid-gap:8px;gap:8px;align-content:start;min-width:0}.overviewStat h3{margin:0;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#667085}.overviewBreakdownTitle{display:block;padding-bottom:4px;border-bottom:1px solid #e5e7eb}.financeStat{justify-self:start;min-height:157px}.overviewStat .metric{font-size:28px}.regRowRefunded{background:#fdf1f0}.table tbody tr:hover{background:#f3f4f6}.overviewBreakdown{display:grid;grid-template-columns:1fr auto;grid-gap:4px 22px;gap:4px 22px;font-size:13px}.overviewBreakdown span:nth-child(odd){color:#667085}.overviewBreakdown span:nth-child(2n){font-weight:700;color:#17324d;text-align:right}.overviewBreakdownRows{display:flex;flex-direction:column;font-size:13px}.overviewHighlightRow{display:flex;justify-content:space-between;gap:22px;padding:2px 6px;margin:0 -6px}.overviewHighlightRow .rowLabel{color:#667085}.overviewHighlightRow .rowValue{font-weight:700;color:#36454f;text-align:right}.overviewCheckSum{font-size:13px;text-align:right;margin-top:2px}.overviewCheckSum span{font-weight:700;color:#fff}.overviewCheckSum span.mismatch{color:#1f2933;background:#fef200;border-radius:4px;padding:1px 5px}.overviewYearPicker{margin-top:21px}.totalRegStat{border-right:1px solid #ece7dc;padding-right:40px}.financeToggle{background:none;border:none;padding:0;font-size:12px;font-weight:700;cursor:pointer;color:#b0b7c0;text-decoration:underline;text-align:left;width:-moz-fit-content;width:fit-content}.financeBreakdown{grid-template-columns:auto auto;justify-content:start;align-content:start;gap:4px 32px;min-height:108px}.overviewBreakdown span.financeGross{color:#0077b6}.overviewBreakdown span.financeNet{color:#65a30d}.lossToggle{background:none;border:none;padding:0;margin:0;font:inherit;cursor:pointer;color:#667085;text-align:left}.lossToggle.financeLoss{color:#e5384f;text-align:right;font-weight:700}.lossSubLabel{padding-left:14px;font-size:11px}.overviewBreakdown span.lossAmount{color:#e5384f;font-weight:400}.regTableScroll{overflow-x:auto;min-width:0;display:grid}.regTableScroll>.regTableContent{grid-area:1/1;min-width:0}.regTableScroll>.stickyShadowRail{grid-area:1/1;position:-webkit-sticky;position:sticky;left:300px;width:12px;pointer-events:none;z-index:5;background:linear-gradient(90deg,rgba(23,50,77,.12),rgba(23,50,77,0));opacity:0;transition:opacity .15s ease}.regTableScroll.hasScrolledRight>.stickyShadowRail{opacity:1}.tableScroll{overflow-x:auto;min-width:0}.grid>.card,.hero>.card,.stack>.card,.stack>div{min-width:0}.classesTable{white-space:nowrap;font-size:12.5px}.classesTable td,.classesTable th{padding:8px 10px}.consultTable{white-space:nowrap;font-size:12.5px}.consultTable td,.consultTable th{padding:8px 10px}.regTable{white-space:nowrap;font-size:12.5px;overflow:visible}.regTable td,.regTable th{padding:6px 8px}.regTable td:nth-child(5),.regTable th:nth-child(5){padding-left:4px;padding-right:4px}.regTable td:nth-child(6),.regTable th:nth-child(6){padding-left:4px}.regTable .stickyCol{position:-webkit-sticky;position:sticky;overflow:hidden;text-overflow:ellipsis;background:#fff;z-index:1}.regTable th.stickyCol{z-index:2}.regTable .stickyColPaidOn{left:0;width:80px;min-width:80px;max-width:80px}.regTable .stickyColFirst{left:80px;width:110px;min-width:110px;max-width:110px}.regTable .stickyColLast{left:190px;width:110px;min-width:110px;max-width:110px}.compareGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:20px;gap:20px}.regFilterGrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:12px;gap:12px}@media (max-width:900px){.regFilterGrid{grid-template-columns:repeat(2,1fr)}}.addClassGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:12px;gap:12px}@media (max-width:900px){.addClassGrid{grid-template-columns:repeat(2,1fr)}}.analyticsTopGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));grid-gap:16px;gap:16px;align-items:start}.analyticsTopGrid>.card{min-width:0;overflow-x:hidden}.analyticsCheckboxScroll{overflow-x:auto}.analyticsCardHeader{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:12px 20px;border-bottom:2px solid #ece7dc;padding-bottom:16px;margin-bottom:24px}.analyticsCardTitle{margin:0;font-size:22px;font-weight:800;color:#17324d;letter-spacing:-.01em}.analyticsMenu{display:flex;flex-wrap:wrap;gap:8px}.analyticsMenu a{background:#f6f4ef;border:1px solid #e5e1d8;color:#475467;text-decoration:none;font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;padding:6px 12px;border-radius:999px}.analyticsSection{background:#fbfaf7;border:1px solid #ece7dc;border-radius:12px;padding:20px;margin-top:20px;scroll-margin-top:16px}.analyticsSection.analyticsSectionFirst{margin-top:0}.analyticsSectionTitle{margin:0;font-size:15px;font-weight:800;color:#17324d}.studentsBoxGrid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:20px;gap:20px}.studentsBoxGrid>.analyticsSection{margin-top:0}.collapsibleSummary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px}.collapsibleSummary::-webkit-details-marker{display:none}.collapsibleSummary .chevron{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:7px solid #c0c5cd;flex-shrink:0;display:inline-block;transition:transform .15s ease}details[open]>.collapsibleSummary .chevron{transform:rotate(90deg)}