:root{--navy:#111f35;--blue:#315af5;--ink:#19283d;--muted:#67748a;--line:#e4e9f1;--bg:#f4f6fa;--green:#157b59}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);font-size:16px}button,input,select,textarea{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #78a9ff;outline-offset:3px}.shell{display:flex;min-height:100vh}aside{background:var(--navy);color:#fff;width:242px;padding:36px 22px;position:fixed;height:100vh;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:13px;font-size:13px;letter-spacing:1.8px;line-height:1.6}.brandmark{font-size:43px;font-weight:800;letter-spacing:-5px;line-height:1;color:#fff}.brandmark span{color:#a8edce;letter-spacing:0}.workspace-label{font-size:12px;letter-spacing:2px;color:#8fa0b8;margin:48px 14px 14px}nav a{display:flex;align-items:center;gap:14px;padding:14px;border-radius:8px;color:#b6c3d5;font-size:15px;margin-bottom:6px}nav a svg{width:20px;height:20px}nav a.active{background:#293b56;color:white}nav a:hover{background:#22334d}.rail-bottom{margin-top:auto;padding:30px 10px 0}.sample-label{color:#a8edce;font-size:13px;font-weight:600}.rail-bottom p{font-size:13px;line-height:1.6;color:#91a1b9}.rail-link{border:0;background:none;padding:0;color:#d2dded;font-size:14px;text-decoration:underline}.main{margin-left:242px;width:calc(100% - 242px)}header{height:80px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px}.breadcrumb{font-size:14px;color:var(--muted)}.breadcrumb span{margin:0 12px;color:#c0c8d5}.breadcrumb b{color:var(--ink);font-weight:500}.role-control{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}select,input,textarea{border:1px solid #d4dce8;border-radius:7px;padding:10px 12px;background:white;color:var(--ink);min-width:0}select{font-size:14px}main{max-width:1540px;margin:auto;padding:38px 42px 50px}h1{font-size:32px;letter-spacing:-1px;margin:0 0 9px;font-weight:700}h2{font-size:19px;margin:0;font-weight:650;letter-spacing:-.3px}h3{font-size:16px;margin:0}.sub{color:var(--muted);font-size:15px;line-height:1.6;margin:0}.eyebrow{font-size:12px;font-weight:700;letter-spacing:1.4px;color:var(--muted);margin:0 0 10px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{background:var(--blue);border:1px solid var(--blue);border-radius:7px;color:white;padding:11px 16px;font-size:14px;font-weight:600}.btn.secondary{background:white;border-color:#d7dfeb;color:var(--ink)}.btn.small{padding:8px 12px;font-size:14px}.btn.ghost{background:transparent;border:0;color:var(--blue);padding:5px 0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:28px}.stat{border:1px solid var(--line);border-radius:10px;background:white;padding:23px}.stat-label{color:var(--muted);font-size:14px}.stat-value{font-size:31px;letter-spacing:-1px;font-weight:650;margin:12px 0 6px}.stat-foot{font-size:13px;color:var(--muted)}.stat-foot.accent{color:var(--blue)}.two-col{display:grid;grid-template-columns:minmax(0,2.3fr) minmax(250px,1fr);gap:24px}.panel{border:1px solid var(--line);border-radius:11px;background:white;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:23px 25px;border-bottom:1px solid var(--line)}.panel-body{padding:23px 25px}.tag{display:inline-block;border-radius:5px;padding:5px 8px;font-size:12px;font-weight:600;white-space:nowrap;background:#edf1f7;color:#647189}.tag.taught,.tag.approved{background:#e5f5ee;color:#167350}.tag.pending,.tag.submitted{background:#fff3dc;color:#986414}.tag.late{background:#eaf0ff;color:#315bc0}.tag.cancelled,.tag.absent{background:#fcebed;color:#af3b4e}.tutor-row{display:grid;grid-template-columns:44px minmax(110px,1fr) minmax(130px,1.2fr) auto;gap:14px;padding:21px 25px;align-items:center;border-bottom:1px solid #edf0f5}.tutor-row:last-child{border:0}.tutor-row:hover{background:#f8faff}.avatar{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:#e9eefd;color:#3454a0;font-size:14px;font-weight:700}.avatar.c1{background:#e5f4ed;color:#327454}.avatar.c2{background:#f6ebff;color:#795197}.avatar.c3{background:#fff0e3;color:#966340}.tutor-name{font-size:15px;font-weight:650}.meta{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5}.location{font-size:14px}.row-end{text-align:right}.attention{padding:20px 0;border-bottom:1px solid var(--line)}.attention:first-child{padding-top:0}.attention:last-child{padding-bottom:0;border:0}.attention b{font-size:14px;display:block;margin-bottom:7px}.attention p{font-size:14px;line-height:1.6;color:var(--muted);margin:0 0 10px}.month-strip{background:#eaf0ff;padding:21px 24px;margin-top:24px;border-radius:10px;display:flex;gap:15px;justify-content:space-between;align-items:center}.month-strip h3{color:#2647b1}.month-strip p{font-size:14px;color:#62739e;margin:7px 0 0;line-height:1.5}.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.tabs{display:flex;border-bottom:1px solid var(--line);gap:26px;margin-bottom:25px}.tabs button{border:0;background:none;color:var(--muted);padding:14px 0;border-bottom:3px solid transparent;font-size:14px}.tabs button.active{border-color:var(--blue);color:var(--blue);font-weight:600}.week{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.day{background:#fff;border:1px solid var(--line);border-radius:9px;min-height:270px}.day-title{padding:15px;font-size:14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.day.today{border-color:#315af5}.lesson-card{margin:10px;padding:14px 12px;border:1px solid #e3e9f6;background:#f4f7ff;border-left:3px solid #5878ef;border-radius:6px;width:calc(100% - 20px);text-align:left}.lesson-card.private{border-left-color:#1f9871;background:#eff9f5}.lesson-card .time{font-size:12px;color:var(--muted);margin-bottom:9px}.lesson-card b{font-size:14px;display:block;line-height:1.45}.lesson-card p{font-size:12px;color:var(--muted);line-height:1.5;margin:7px 0 10px}.empty{color:var(--muted);text-align:center;padding:35px 20px;font-size:14px;line-height:1.7}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:600;color:var(--muted);background:#f9fafc}th,td{padding:16px 20px;border-bottom:1px solid var(--line)}td{font-size:14px}tr:last-child td{border-bottom:0}.money{font-variant-numeric:tabular-nums;white-space:nowrap}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.account-total{font-size:38px;font-weight:650;letter-spacing:-1.4px;margin:12px 0}.account-list{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:13px 0;font-size:14px}.account-list:last-child{border:0}.note{background:#f0f4fb;border-radius:7px;padding:14px 16px;font-size:14px;line-height:1.7;color:#53657e;margin:20px 0}.note.warning{background:#fff4df;color:#8c6523}.note p{margin:0}.grid-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.teacher-card{padding:25px;background:#fff;border:1px solid var(--line);border-radius:10px}.teacher-card-top{display:flex;align-items:center;gap:14px;margin-bottom:23px}.teacher-card .btn{margin-top:20px;width:100%}.summary-row{display:flex;justify-content:space-between;font-size:14px;margin-top:12px;color:var(--muted)}.summary-row b{color:var(--ink)}footer{padding:20px 42px;font-size:12px;color:#7c889b;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px}dialog{border:0;border-radius:12px;padding:0;max-width:620px;width:calc(100% - 32px);box-shadow:0 25px 90px #14213844}dialog::backdrop{background:#111f3588}.modal-head{display:flex;justify-content:space-between;padding:25px;border-bottom:1px solid var(--line)}.close{background:none;border:0;font-size:24px;color:var(--muted)}.modal-content{padding:25px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}label.field{display:flex;flex-direction:column;gap:8px;font-size:14px}.field.full{grid-column:1/-1}textarea{min-height:85px;resize:vertical}.modal-footer{padding:18px 25px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}.invoice-brand{font-size:24px;font-weight:750;letter-spacing:-1px;margin-bottom:25px}.invoice-info{display:flex;justify-content:space-between;font-size:14px;line-height:1.7;margin:20px 0}.invoice-total{text-align:right;font-size:23px;font-weight:700;padding-top:20px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#172a44;color:white;padding:14px 24px;border-radius:9px;box-shadow:0 5px 25px #0002;font-size:14px;z-index:10;display:none;max-width:90%}.status-line{display:flex;justify-content:space-between;gap:15px;align-items:center}.legend{display:flex;gap:20px;font-size:13px;color:var(--muted);margin:22px 0}.legend span:before{content:'';display:inline-block;width:10px;height:10px;margin-right:7px;border-radius:2px;background:#5878ef}.legend span:last-child:before{background:#1f9871}@media(min-width:1500px){main{padding-top:48px}}@media(max-width:1150px){aside{width:200px;padding:30px 15px}.main{margin-left:200px;width:calc(100% - 200px)}main{padding:28px 25px}header{padding:0 25px}.two-col{grid-template-columns:1fr}.grid-cards{grid-template-columns:repeat(2,1fr)}.week{gap:6px}.lesson-card{padding:10px 7px;margin:6px;width:calc(100% - 12px)}}@media(max-width:760px){.shell{display:block}aside{position:static;width:100%;height:auto;padding:16px}.brand{font-size:11px}.brandmark{font-size:32px}.workspace-label,.rail-bottom{display:none}nav{display:flex;overflow:auto;gap:4px;margin-top:16px}nav a{padding:10px;font-size:13px;white-space:nowrap;margin:0;gap:6px}nav a svg{display:none}.main{width:100%;margin:0}header{height:auto;padding:15px;gap:10px;flex-wrap:wrap}main{padding:25px 16px}.breadcrumb{font-size:12px}.role-control{font-size:12px}.role-control select{max-width:155px}h1{font-size:27px}.page-head{align-items:flex-start;flex-direction:column}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:16px}.stat-value{font-size:27px}.tutor-row{padding:16px;grid-template-columns:36px 1fr auto;gap:10px}.tutor-row>.location{grid-column:2}.tutor-row>.row-end{grid-column:3;grid-row:1/3}.avatar{width:36px;height:36px}.panel-head,.panel-body{padding:19px}.account-grid,.grid-cards{grid-template-columns:1fr}.week{grid-template-columns:1fr}.day{min-height:100px}.month-strip{align-items:flex-start;flex-direction:column}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}footer{padding:20px 16px;display:block;line-height:1.8}footer span{display:none}.tabs{gap:18px}.toolbar{align-items:flex-start}.account-total{font-size:32px}}@media print{aside,header,footer,main,#toast,.modal-head,.modal-footer{display:none!important}dialog{display:block!important;position:static;width:100%;max-width:none;box-shadow:none}dialog::backdrop{background:none}.modal-content{padding:0}.note.warning{display:none}}
.nav-icon{font-size:20px;width:20px;text-align:center;color:inherit}.school-block{background:#edf2ff;border-left-width:4px;padding:17px 12px}.school-block b{font-size:16px}.block-summary{display:flex;gap:18px;flex-wrap:wrap;background:#eaf0ff;padding:15px;border-radius:8px;font-size:14px}.block-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:15px;align-items:center;border-bottom:1px solid var(--line);padding:17px 0}.block-row b{font-size:15px}.attendance-row{display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:14px;padding:10px 0}.tag.closed{background:#fcebed;color:#af3b4e}.nav-icon+span{font-size:15px}dialog{max-height:90vh;overflow:auto}select{max-width:100%}.role-control select{max-width:185px}@media(max-width:760px){.block-row{grid-template-columns:1fr auto;gap:10px}.block-row>.tag{grid-column:1}.block-row>button{grid-column:2;grid-row:1/3}nav .nav-icon{display:none}.role-control select{max-width:170px}.school-block{margin:10px;width:calc(100% - 20px)}}

/* V3: a single scrollable dialog body keeps close/save controls reachable. */
#modal[open]{display:flex;flex-direction:column;overflow:hidden;max-height:90vh;max-height:90dvh;padding:0}
.modal-head,.modal-footer{flex:0 0 auto}.modal-content{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.modal-footer{flex-wrap:wrap}.week{grid-template-columns:repeat(7,minmax(150px,1fr));overflow-x:auto}.day{min-width:150px}
@media(max-width:650px){#modal[open]{width:100%;max-width:100%;height:100vh;height:100dvh;max-height:100dvh;margin:0;border-radius:0}.modal-head{padding-top:max(18px,env(safe-area-inset-top))}.modal-footer{padding-bottom:max(18px,env(safe-area-inset-bottom));gap:8px}.modal-footer .btn{flex:1 1 auto}.modal-content{padding:18px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-value{font-size:24px}.week{grid-template-columns:repeat(7,180px)}.block-row{flex-wrap:wrap}.teacher-card .btn{white-space:normal}.actions{flex-wrap:wrap}}

.school-date-list{display:grid;gap:12px}.school-date-row{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid #e3e8f0;border-radius:12px;padding:18px}.school-date-row p{margin-bottom:0}.date-actions{display:flex;gap:8px;flex-wrap:wrap}.day-cancelled{background:#fff3f2;border-color:#f2c5c1}.day-moved{background:#f4f7fc}.school-date-row .meta{font-size:14px;line-height:1.6}#cancel-school-form .field select{min-height:44px}
@media(max-width:650px){.school-date-row{align-items:stretch;flex-direction:column;padding:14px}.date-actions .btn{flex:1;min-height:44px}.date-actions{width:100%}}

.form-error{padding:14px 16px;background:#fff0ef;color:#8d241d;border:1px solid #d78d87;border-radius:9px;margin-bottom:18px;font-size:16px;line-height:1.5}.form-error[hidden]{display:none}[aria-invalid="true"]{border-color:#ad3026!important}.reminder-panel{margin-bottom:22px}.reminder-clock{display:flex;align-items:center;gap:10px;font-size:14px;flex-wrap:wrap}.reminder-panel .panel-head{flex-wrap:wrap;gap:12px}#email-body{min-height:250px;line-height:1.6}.reminder-panel .meta{font-size:14px}
@media(max-width:650px){.reminder-clock{width:100%}.reminder-clock select{flex:1}.reminder-panel .block-row{gap:12px}}

.club-card{background:#f1efff;border-color:#b4a3e6}.field[hidden]{display:none!important}.club-card .meta{font-size:13px;line-height:1.5}

@media(min-width:761px){.earnings-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}

@media print{#modal[open]{display:block!important;position:static!important;height:auto!important;max-height:none!important;overflow:visible!important;margin:0!important;width:100%!important;max-width:none!important}.modal-content{display:block!important;height:auto!important;max-height:none!important;overflow:visible!important}.table-wrap{overflow:visible!important}tr{break-inside:avoid}.modal-head,.modal-footer{display:none!important}}

/* Workflow shortcuts and checks */
.attention-panel{margin-bottom:24px}.task-groups{display:grid;gap:12px}.task-groups details{border:1px solid #e2e7ef;border-radius:12px;padding:14px 16px}.task-groups summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px}.task-groups summary::before{content:'›';color:#d65a32;font-size:20px}.task-groups details[open] summary::before{transform:rotate(90deg)}.task-groups summary span{margin-left:auto;background:#fff1e9;border-radius:20px;padding:2px 9px;color:#9b391d;font-size:13px}.task-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:13px 0;border-top:1px solid #edf0f5;margin-top:10px}.task-row p{margin:5px 0 0}.task-row .btn{flex-shrink:0}.next-visit{margin-bottom:24px;border-color:#edc2ac;background:linear-gradient(110deg,#fff7f0,#fff)}.next-visit .panel-body{display:flex;justify-content:space-between;gap:20px;align-items:center}.next-visit h2{margin:6px 0}.next-visit .eyebrow,.school-register-print .eyebrow,.attention-panel .eyebrow{color:#ca5129}.visit-progress{display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:12px;background:#fff2e9;padding:14px;margin:16px 0}.checklist-panel{padding:16px;border:1px solid #e5e9f0;border-radius:12px;background:#fafbfe;margin:20px 0}.checklist-panel h3{margin:0 0 14px}.checklist-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}.check-item{display:flex;align-items:center;gap:9px;font-size:14px}.check-item span{display:inline-flex;justify-content:center;align-items:center;width:22px;height:22px;flex-shrink:0;border-radius:50%;font-weight:800}.check-item.complete span{background:#e6f3ec;color:#237145}.check-item.missing span{background:#fff0e2;color:#ab4d1a}.check-item.optional span{background:#edf0f6;color:#6a7382}.checklist-alert{background:#fff0e2;color:#9a441b;margin-right:8px;margin-bottom:6px}.price-confirmation>span{display:flex;align-items:flex-start;gap:10px}.price-confirmation input[type=checkbox]{width:20px;min-width:20px;height:20px;margin:1px 0 0}.history-row{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding:17px 0;border-bottom:1px solid #e8ecf2}.history-row p{margin:7px 0 0}.history-row .meta{min-width:160px}.register-export-controls{margin-bottom:20px}.school-register-print th,.school-register-print td{white-space:normal}.school-register-print .eyebrow{font-weight:800;letter-spacing:2px}
@media(max-width:650px){.task-row,.next-visit .panel-body,.history-row{flex-direction:column;align-items:stretch;gap:10px}.task-row .btn,.next-visit .btn{width:100%}.checklist-grid{grid-template-columns:1fr}.visit-progress{flex-direction:column;align-items:stretch}.history-row .meta{min-width:0}.task-groups details{padding:12px}.school-register-print table{min-width:650px}}
@media print{.register-export-controls{display:none!important}.school-register-print table{min-width:0!important;width:100%;font-size:10pt}.school-register-print th,.school-register-print td{padding:8px 5px!important}.school-register-print thead{display:table-header-group}.school-register-print .eyebrow{color:#ca5129!important}}
