:root{--ink:#20382f;--muted:#6b7871;--green:#21594a;--line:#e0e6df;--paper:#f5f6f1;--white:#fff;--gold:#a26317}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;font-size:16px;line-height:1.65}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:10px 19px;background:var(--green);color:white;border:1px solid transparent;border-radius:9px;font-weight:650;cursor:pointer;text-decoration:none;white-space:nowrap}button:hover,.button:hover{background:#173f35;text-decoration:none}button:disabled{background:#e6e9e4;color:#68746c;cursor:not-allowed}.secondary{background:white;color:var(--green);border-color:#cbd6ce}.secondary:hover{background:#eef3ed}input,select,textarea{width:100%;min-height:46px;border:1px solid #becbc1;border-radius:8px;background:white;padding:10px 12px;color:var(--ink)}input[type=checkbox],input[type=radio]{width:20px;min-height:20px;accent-color:var(--green);vertical-align:middle}textarea{resize:vertical}label{font-weight:600;display:block;margin-bottom:6px}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #c39f50;outline-offset:3px}header{background:#fff;border-bottom:1px solid var(--line)}.header-inner{max-width:1180px;margin:auto;padding:22px 28px;display:flex;align-items:center;gap:40px}.brand{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:750;letter-spacing:-.5px;color:var(--ink)}.brand-mark{background:var(--green);color:white;border-radius:11px;width:44px;height:44px;display:grid;place-items:center;font-family:serif;font-size:26px}.brand small{font-size:9px;letter-spacing:2px;display:block;color:var(--muted)}nav{display:flex;gap:26px;font-weight:650}nav a{padding:8px 0}.account{margin-left:auto;font-size:12px;text-align:right}.account-links{display:flex;gap:12px;align-items:center;justify-content:flex-end}.account form{margin:0}.text-button{background:none;color:var(--muted);padding:0;min-height:30px;font-size:12px;font-weight:400}.text-button:hover{background:none;color:var(--ink)}main{max-width:1124px;margin:0 auto;padding:38px 28px 70px;min-height:75vh}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-1px;line-height:1.4;margin-bottom:10px}h2{font-size:20px;letter-spacing:-.6px;margin-bottom:18px}h3{font-size:17px;margin-bottom:12px}.muted{color:var(--muted)}.eyebrow{font-size:11px;font-weight:700;letter-spacing:1.5px;color:var(--green);margin-bottom:12px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.page-heading p:last-child{margin-bottom:0}.card{background:white;border:1px solid var(--line);border-radius:15px;padding:26px;box-shadow:0 3px 10px #20382f03}section{margin-bottom:30px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:34px}.stats .card{padding:20px 26px}.stats span{font-size:13px}.stats strong{display:block;font-size:36px;font-weight:650;line-height:1.4;margin-top:8px}.stats small{font-size:14px;color:var(--muted);margin-left:7px;font-weight:400}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:22px 0 16px}.section-heading h2{margin:0}.section-heading>span,.section-heading>a{font-size:13px}.class-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.class-card{color:var(--ink);transition:border-color .15s,transform .15s}.class-card:hover{border-color:var(--green);transform:translateY(-2px);text-decoration:none}.class-card .muted{font-size:14px}.class-link{font-size:13px;font-weight:700;color:var(--green)}.list{padding:0 24px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0;border-bottom:1px solid var(--line);color:var(--ink)}.list-row:last-child{border-bottom:0}small{display:block;color:var(--muted);font-size:12px}.pass{display:inline-flex;align-items:center;gap:9px;padding:7px 12px;background:#eef3ec;color:#476347;border-radius:8px;font-size:12px;white-space:nowrap}.pass strong{font-size:19px;font-variant-numeric:tabular-nums}.pass-3{background:#fff3d8;color:#91600c}.pass-4{background:#fce8e1;color:#a03e24}.empty{text-align:center;color:var(--muted);padding:40px 20px;margin:0}.search{display:flex;gap:10px;align-items:center;margin-bottom:22px;max-width:650px}.search input,.search select{min-width:0}.search>a{white-space:nowrap}.narrow{max-width:660px;margin:10px auto}.login{max-width:460px;margin:35px auto;padding:38px}.login h1{font-size:27px}.login .muted{margin-bottom:28px}.full{width:100%}.hint,.helptext{font-size:12px;color:var(--muted);display:block}.hint{margin:16px 0}.helptext ul{padding-left:18px}.errorlist{color:#a63524;font-size:14px;padding-left:20px}.message{padding:14px 18px;background:#e5f0e6;border:1px solid #c9decc;border-radius:9px;margin-bottom:20px}.message.error{background:#fff0e9;border-color:#efc6b5;color:#9c3c21}.actions{display:flex;gap:10px;margin-top:24px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.detail-grid section{margin-bottom:0}dl{display:grid;grid-template-columns:110px 1fr;gap:12px;margin-bottom:28px}dt{color:var(--muted);font-size:13px}dd{margin:0;overflow-wrap:anywhere}.prewrap{white-space:pre-wrap}.history-line{margin:14px 0}.back{display:inline-block;margin-bottom:24px;font-size:13px}hr{border:0;border-top:1px solid var(--line);margin:24px 0}.date-filter{display:flex;align-items:flex-end;gap:10px}.date-filter p{margin:0}.date-filter label{font-size:12px}.attendance-panel .section-heading{margin-top:0}.attendance-row{display:flex;align-items:center;gap:20px;padding:20px 0;border-top:1px solid var(--line)}.student-name{min-width:120px;flex:1}.attendance-action{display:flex;align-items:center;justify-content:flex-end;gap:14px;min-width:215px}.present-label{font-size:12px;color:var(--green)}summary{cursor:pointer;color:var(--muted);font-size:13px;padding:10px 0}footer{max-width:1124px;margin:auto;padding:24px 28px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}footer span{float:right}.sr-only,.skip{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}.skip:focus{width:auto;height:auto;clip:auto;padding:10px;background:white;z-index:10}
@media(max-width:760px){.header-inner{padding:18px 20px;gap:18px;flex-wrap:wrap}.brand{font-size:17px}.account{font-size:11px}.account-links{gap:9px}nav{order:3;width:100%;justify-content:space-around;gap:12px;border-top:1px solid var(--line);padding-top:8px}main{padding:26px 18px 48px}h1{font-size:25px}.page-heading{align-items:flex-start;flex-wrap:wrap}.stats{gap:8px}.stats .card{padding:15px 12px}.stats span{font-size:11px}.stats strong{font-size:28px}.card{padding:20px}.list{padding:0 18px}.class-grid,.detail-grid{grid-template-columns:1fr}.detail-grid{gap:18px}.section-heading{align-items:flex-start;flex-wrap:wrap}.section-heading>span{font-size:11px}.attendance-row{display:grid;grid-template-columns:1fr auto;gap:12px}.attendance-action{grid-column:1/-1;width:100%;min-width:0;justify-content:flex-end}.attendance-action form{flex:1}.attendance-action button{width:100%;min-height:48px}.date-filter{width:100%}.date-filter p{flex:1}.date-filter input{min-width:0}.list-row{gap:10px}.pass{padding:6px 9px;font-size:11px}.pass strong{font-size:18px}.login{margin:15px auto;padding:25px}.attendance-panel{padding:20px 16px}footer span{float:none;display:block}.account-links .text-button{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Class filters, student actions, and branding */
.class-filters{display:flex;align-items:flex-end;gap:14px;margin-bottom:22px}.class-filters>div{flex:1;min-width:140px}.class-filters label{font-size:13px}
.brand-logo{width:48px;height:48px;object-fit:contain;flex-shrink:0}.student-tools{display:flex;align-items:flex-end;flex-direction:column;gap:10px}.status-actions{display:flex;gap:6px}.status-actions .button{min-width:60px}.assigned-class{padding:14px 0;border-bottom:1px solid var(--line);margin-bottom:14px}.class-change{display:flex;gap:8px;margin:12px 0}.class-change select{min-width:0;flex:1}
.attendance-action{flex-wrap:wrap;max-width:420px}.attendance-choice{display:flex;gap:8px;align-items:center}.attendance-choice select{min-width:125px}
/* Calendar and payment history */
.calendar-nav{display:flex;align-items:center;gap:12px}.calendar-grid{border:1px solid var(--line);border-radius:8px;overflow:hidden}.calendar-weekdays,.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekdays{background:#eef3ec;text-align:center;padding:8px 0}.calendar-day{min-height:105px;padding:6px;border-top:1px solid var(--line);border-right:1px solid var(--line);min-width:0}.calendar-day:last-child{border-right:0}.calendar-day.outside{background:#f7f8f6;color:#a4ada6}.calendar-day.today{background:#fff9e9}.calendar-date{background:none;color:var(--ink);min-height:30px;padding:2px 6px;border:0;font-size:14px;border-radius:5px}.calendar-date:hover{background:#dce9dd;color:var(--ink)}.calendar-record{display:block;width:100%;min-height:0;text-align:left;padding:5px;margin:4px 0;background:#e5f0e5;color:#21594a;font-size:12px;white-space:normal;border-radius:5px;overflow-wrap:anywhere}.calendar-record small{font-size:10px;line-height:1.3;color:inherit}.calendar-record.kind-video{background:#e5edf9;color:#2d527d}.calendar-record.kind-absent{background:#f0eae7;color:#795d50}.calendar-record:hover{filter:brightness(.96);color:inherit}dialog{border:1px solid var(--line);border-radius:14px;padding:26px;max-width:520px;width:calc(100% - 32px);max-height:90vh;overflow:auto;color:var(--ink)}dialog::backdrop{background:#152e2666}.payment-history{padding:14px 0;border-bottom:1px solid var(--line)}.payment-complete{display:block;color:#21594a;font-size:13px;font-weight:650}.payment-pending{display:block;color:#a03e24;font-size:13px}
.pass-sessions{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:16px 0}.pass-sessions li{padding:10px;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:12px}.pass-sessions strong,.pass-sessions span{display:block}.pass-sessions .session-used{background:#edf5ec;color:var(--ink)}.pass-sessions small{font-size:11px;overflow-wrap:anywhere}
@media(max-width:760px){nav{flex-wrap:wrap}.class-filters{flex-wrap:wrap}.class-filters>div{flex:1 1 100%}.class-filters>button,.class-filters>a{flex:1}.student-tools{align-items:flex-start}.class-change{flex-wrap:wrap}.class-change select{flex-basis:100%}.attendance-action{max-width:none}.attendance-choice{flex:1;min-width:0}.attendance-choice select{flex:1}.attendance-choice button{width:auto;flex:none}.calendar-panel{padding:14px 8px}.calendar-day{min-height:80px;padding:3px}.calendar-record{font-size:10px;padding:3px}.calendar-record small{font-size:9px}.calendar-nav{gap:7px}.calendar-nav .button{padding:6px 10px}.calendar-date{font-size:12px}}
/* Dashboard: separate class link and dated attendance action. */
.dashboard-filters{display:flex;gap:16px;align-items:end;margin-bottom:16px}.dashboard-filters>div{flex:1;min-width:0}.dashboard-filters button{min-width:96px}.dashboard-lesson{display:flex;flex-direction:column;min-width:0}.lesson-main{display:block;flex:1;color:var(--ink);overflow-wrap:anywhere}.lesson-main:hover{text-decoration:none}.lesson-main:hover h3{text-decoration:underline}.lesson-schedule{font-weight:600;margin:8px 0 16px}.lesson-status{display:inline-block;border-radius:8px;padding:5px 10px;font-weight:650;background:#edf1ed;color:#495c51}.lesson-status.complete{background:#e4f1e8;color:#185c36}.lesson-status.progress{background:#e5eef8;color:#27577d}.lesson-status.incomplete{background:#fff0df;color:#8a4812}.lesson-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:20px 0}.lesson-counts dt{font-size:13px;color:var(--muted)}.lesson-counts dd{margin:0;font-weight:700}.lesson-attendance{margin-top:18px;width:100%}@media(max-width:600px){.dashboard-filters{flex-direction:column;align-items:stretch;gap:12px}.dashboard-filters>div,.dashboard-filters button{width:100%}.dashboard-lesson{padding:20px}.lesson-schedule{font-size:15px}}
.attendance-warning{border:2px solid #c55050;background:#fff5f5}.lesson-status.incomplete{background:#fbe0e0;color:#9c2525}.attendance-choice[data-attendance-form]{display:block;width:100%;max-width:360px}.attendance-select-row{display:flex;gap:8px}.attendance-select-row select{min-width:0;flex:1}[data-absence-fields]{margin-top:10px;text-align:left}[data-absence-fields] label{font-size:14px}[data-absence-note]{margin-top:8px}[hidden]{display:none!important}
.admission-field{margin:18px 0}.admission-field input,.admission-field select,.admission-field textarea{max-width:100%}.privacy-notice{padding:16px;background:#f3f6f2;border-radius:9px;margin:18px 0}.privacy-notice p{overflow-wrap:anywhere}.admission-confirm{background:#edf4ed;padding:20px;border-radius:12px}.admission-confirm dt{color:var(--muted);font-size:14px}.admission-confirm dd{font-size:22px;font-weight:700;margin:0 0 14px;overflow-wrap:anywhere}.admission-submit{width:100%}.audit-detail{overflow-wrap:anywhere;white-space:pre-wrap}.errorlist{color:#a32828}.admission-field ul{list-style:none;padding:0}.admission-field:has(input[type=hidden]){display:none}
.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.form-grid>p{min-width:0}.lesson-message{border-bottom:1px solid var(--line);padding:18px 0}.lesson-message>strong{display:inline-block;background:#edf3e9;padding:4px 10px;border-radius:7px}.message-status-form{display:flex;gap:8px;margin:12px 0}.message-status-form select{min-width:0;max-width:230px}.lesson-save-bar{position:sticky;bottom:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px;background:#fffffff5;border:1px solid var(--line);border-radius:12px;box-shadow:0 -4px 18px #173c3510}.lesson-save-bar span{font-size:13px;color:var(--muted)}.audit-entry{padding:15px 0;border-bottom:1px solid var(--line)}.audit-change{padding:10px;background:#f5f7f3;border-radius:8px;margin:10px 0;overflow-wrap:anywhere}.audit-change p{margin:4px 0}@media(max-width:650px){.form-grid{grid-template-columns:1fr;gap:0}.lesson-save-bar{flex-direction:column;align-items:stretch}.lesson-save-bar button{width:100%}.message-status-form{flex-direction:column}.message-status-form select{max-width:none}}

/* Student search: desktop columns and mobile stacked controls. */
.student-filters{display:grid;grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:14px;margin-bottom:22px;align-items:end}.student-filters>div{min-width:0}.student-filters label{font-size:13px}.student-filter-actions{grid-column:1/-1;display:flex;gap:10px;justify-content:flex-end}@media(max-width:760px){.student-filters{grid-template-columns:1fr}.student-filter-actions>*{flex:1}}

.learning-note{border-top:1px solid var(--line)}.learning-note summary{min-height:52px;display:list-item;padding:12px 4px;color:var(--ink)}.learning-note summary strong{margin-right:12px}.learning-note-preview{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;color:var(--muted)}.learning-note>div{padding:0 0 14px}.learning-note textarea{width:100%}.previous-homework{padding:16px;background:#f0f5ef;border-radius:9px;margin-bottom:20px;overflow-wrap:anywhere}.previous-homework h3{font-size:15px}.previous-homework p:last-child{margin-bottom:0}.lesson-history-panel summary{min-height:46px;color:var(--green)}.recent-lesson{padding:18px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.recent-lesson p{margin:6px 0 14px}.recent-lesson h3{font-size:15px}

.attendance-feedback{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:1000;width:max-content;max-width:calc(100% - 32px);padding:12px 18px;border-radius:10px;background:#21594a;color:white;box-shadow:0 3px 15px #0003;overflow-wrap:anywhere}.attendance-feedback.error{background:#9c3c21}.attendance-row[aria-busy="true"]{opacity:.7}

.remember-login{display:flex;align-items:center;gap:10px;min-height:48px;font-weight:600}.remember-login input{flex-shrink:0}

.attendance-feedback a{color:white;text-decoration:underline;font-weight:700}

.business-stats strong{font-size:26px;overflow-wrap:anywhere}.payroll-student{margin-bottom:16px}.payroll-student p{margin:8px 0}.statement-export-image{width:100%;height:auto;display:block;border:1px solid var(--line);margin:16px 0}.business-stats{margin-top:24px}@media(max-width:760px){.business-stats{grid-template-columns:1fr}.business-stats .card{padding:18px}}

.header-inner{flex-wrap:wrap;gap:20px}nav{flex-wrap:wrap;gap:18px}@media(min-width:761px) and (max-width:1100px){nav{order:3;width:100%;justify-content:flex-start;border-top:1px solid var(--line);padding-top:8px}}

.annual-teacher{margin-bottom:24px}.annual-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.annual-month{border:1px solid var(--line);border-radius:10px;padding:16px;min-width:0;overflow-wrap:anywhere}.annual-month p{margin-bottom:10px}.annual-month h3{margin-bottom:8px}@media(max-width:760px){.annual-months{grid-template-columns:1fr}.page-heading .actions{flex-wrap:wrap}}

.annual-reports{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}.annual-reports.is-single{grid-template-columns:1fr}.annual-reports:not(.is-single) .annual-months{grid-template-columns:1fr}.annual-reports .annual-teacher{min-width:0}.annual-month-details summary{min-height:46px}@media(max-width:760px){.annual-reports{grid-template-columns:1fr}}

.exam-overview{margin-bottom:24px}.exam-year-form{display:flex;align-items:center;gap:8px}.exam-year-form label{margin:0}.exam-year-form select{min-width:100px}.exam-periods{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.exam-period{padding:14px;border:1px solid var(--line);border-radius:10px;min-width:0;overflow-wrap:anywhere}.exam-period span,.exam-period small{display:block;margin-top:8px}.exam-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px}.exam-charts>div{min-width:0}.exam-chart{width:100%;height:auto;display:block;overflow:visible}.exam-chart text{font-size:12px;fill:#50615b}.chart-grid{stroke:#dce5de;stroke-width:1}.chart-line{stroke:#236650;stroke-width:2.5}.chart-dot{fill:#236650}.exam-chart .chart-value{font-weight:700;fill:#183c30}.consultation-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.consultation-form h2{font-size:18px;margin-top:24px}.consultation-form h2 small{font-size:13px;font-weight:400}.consultation-form textarea{width:100%}.consultation-form summary{min-height:48px;padding:12px 0}.consultation-form .lesson-save-bar{margin-top:24px}.consultation-form p{min-width:0}@media(max-width:760px){.exam-overview{padding:18px}.exam-overview .section-heading{align-items:flex-start;flex-direction:column}.exam-periods{grid-template-columns:repeat(2,minmax(0,1fr))}.exam-charts{grid-template-columns:1fr}.exam-year-form{width:100%}.exam-year-form select{flex:1}.consultation-fields{grid-template-columns:1fr}}

#calendar-entry-form .actions{position:sticky;bottom:0;background:white;padding:12px 0;margin-bottom:0;z-index:2;flex-wrap:wrap}.lesson-message,.list-row>span{min-width:0;overflow-wrap:anywhere}.list-row .lesson-status{flex-shrink:0}@media(max-width:600px){#calendar-entry-form .actions{gap:8px}#calendar-entry-form .actions button{flex:1;min-width:100px}.lesson-message .message-status-form{flex-wrap:wrap}}

.admission-date-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.admission-date-row>input{flex:1;min-width:180px}.admission-date-row label:not([hidden]){display:flex;align-items:center;gap:8px;white-space:nowrap;min-height:44px;margin:0}.admission-date-row input[type=checkbox]{width:22px;height:22px}
