:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#17243f;background:#f1f5fa;font-size:16px;line-height:1.6}*{box-sizing:border-box}body{margin:0}header{background:#142947;color:white;display:flex;justify-content:space-between;align-items:center;padding:22px max(24px,calc((100vw - 1200px)/2));gap:20px}.brand{font-size:25px;font-weight:800;color:white;text-decoration:none;letter-spacing:1px}.brand span{display:block;font-size:13px;font-weight:400;letter-spacing:.4px;color:#b9dcff}header small{color:#b9dcff}main{max-width:1248px;margin:auto;padding:24px}h1{font-size:clamp(24px,4vw,34px);line-height:1.3;margin:28px 0}h2{font-size:20px;margin-top:0}h3{margin:0;font-size:17px}.panel{padding:26px;background:white;border:1px solid #dae3ee;border-radius:14px;margin-bottom:20px;box-shadow:0 5px 18px #14294705}.narrow{max-width:520px}label{display:block;font-weight:600;margin:16px 0}input,select{display:block;width:100%;padding:12px;font:inherit;border:1px solid #a9b9cc;border-radius:7px;margin-top:6px;background:white;color:#17243f}button{font:inherit;font-weight:600;border:0;border-radius:7px;padding:11px 19px;background:#1269ac;color:white;cursor:pointer;min-height:44px}button:hover{background:#0b4e84}a{color:#1269ac}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #54b4fa;outline-offset:3px}.quiet{background:#eaf1f9;color:#183c67}.quiet:hover{background:#d8e8f7}nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap;border-bottom:1px solid #d2dfea;padding-bottom:18px}nav a{text-decoration:none;font-weight:600}nav span{margin-left:auto;font-size:14px}nav form{margin:0}.notice{background:#edf6ff;border-left:4px solid #2582c4;padding:14px;border-radius:5px}.hint,small{color:#526782;font-size:14px}.grid{display:grid;grid-template-columns:1fr 1.5fr;gap:22px}.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.badge{display:inline-block;background:#def4ed;color:#16654d;font-size:13px;font-weight:700;padding:5px 12px;border-radius:30px;margin-bottom:12px}article{border-bottom:1px solid #dce5ee;padding:18px 0}article:last-child{border-bottom:0}details{margin:14px 0}summary{cursor:pointer;color:#1269ac}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}th,td{padding:12px;border-bottom:1px solid #dce5ee;vertical-align:top}th{background:#f2f6fb}footer{text-align:center;padding:24px;font-size:13px;color:#526782}@media(max-width:700px){header{padding:18px 20px}main{padding:16px}.grid,.cards{grid-template-columns:1fr}.panel{padding:20px}nav{gap:12px}nav span{margin-left:0;width:100%}header small{max-width:90px;text-align:right}}

.button{display:inline-block;border-radius:7px;padding:11px 19px;background:#1269ac;color:white;text-decoration:none;font-weight:600;min-height:44px}.button.quiet{background:#eaf1f9;color:#183c67}.actions{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0}.form-wide{max-width:720px}textarea{width:100%;min-height:110px;font:inherit;border:1px solid #a9b9cc;border-radius:7px;padding:12px}.check{display:flex;align-items:center;gap:10px}.check input{width:20px;margin:0}.search{display:flex;gap:18px;align-items:end}.search label{flex:1;margin:0}.student-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.stats small,.stats strong{display:block}.stats strong{font-size:23px}dl{display:grid;grid-template-columns:160px 1fr;gap:10px}dt{color:#526782}dd{margin:0;overflow-wrap:anywhere}.panel{min-width:0;overflow-wrap:anywhere}h1{overflow-wrap:anywhere}article.panel{border:1px solid #dae3ee}details form{padding-top:10px}@media(max-width:700px){.student-list{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.search{display:block}.search button{margin-top:12px}dl{grid-template-columns:1fr;gap:4px}dd{margin-bottom:12px}.actions .button{width:100%;text-align:center}nav a{padding:6px 0;min-height:38px}nav{gap:8px 14px}}

.balance-banner{display:flex;gap:18px;align-items:center;padding:25px;border-radius:14px;margin:20px 0;border:2px solid}.balance-banner strong{font-size:clamp(20px,3vw,29px);line-height:1.35;display:block}.balance-banner p{margin:6px 0 0}.balance-banner>span{font-size:42px}.settled{background:#dcfce7;border-color:#16834c;color:#14532d}.outstanding{background:#fff7e6;border-color:#e2ad43;color:#704600}.badge.pending{background:#fff1ce;color:#7a4e00}.badge.paid{background:#dcfce7;color:#14532d}.void-payment{background:#fff1f1;border-left:4px solid #b42336;padding:18px;border-radius:8px}.quick-counts{display:flex;gap:8px;flex-wrap:wrap}.quick-counts button{background:#edf4fc;color:#184b79;min-width:48px}button:disabled{opacity:.55;cursor:wait}.grid:has(>section:only-child){grid-template-columns:1fr}.field-help{font-size:14px;color:#526782}input:invalid:not(:placeholder-shown){border-color:#a9b9cc}nav form{flex-shrink:0}@media(max-width:700px){nav span{font-size:12px}nav a{font-size:14px}.balance-banner{padding:18px}.balance-banner>span{font-size:30px}.search label{margin-bottom:12px}}

[hidden]{display:none!important}.test-record{background:#f1e8ff;color:#603596}.refund-line{border-left:3px solid #c48926;padding:8px 14px;margin:12px 0}.ledger-line{padding:8px 0;border-bottom:1px solid #e1e8f0}.status-closed{background:#f0edf6;color:#4d405d}

/* 0.6: frequent actions precede secondary navigation on small screens. */
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.quick-grid a{text-align:center;display:flex;align-items:center;justify-content:center}.more-nav{margin:12px 0}.more-nav summary{min-height:44px;display:flex;align-items:center;font-weight:600}.more-nav nav{padding:16px;background:#fff;border:1px solid #dae3ee;border-radius:12px}.portal-shortcuts{margin-bottom:20px}.primary-nav{gap:10px}.primary-nav a{padding:10px 12px;background:#e4effa;border-radius:8px;min-height:44px}section[id]{scroll-margin-top:16px}input,select,textarea{max-width:100%}table{min-width:540px}.panel:has(>table){overflow-x:auto}@media(max-width:700px){header{padding:12px 16px}.brand{font-size:21px}h1{margin:18px 0}.primary-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.primary-nav a{font-size:14px;text-align:center;display:flex;align-items:center;justify-content:center}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-grid a{padding:12px 8px;font-size:15px}.more-nav nav{display:grid;grid-template-columns:1fr 1fr}.more-nav nav span,.more-nav nav form{grid-column:1/-1}.panel{padding:16px}.portal-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.portal-shortcuts a{font-size:14px;text-align:center;padding:10px 6px}button{min-height:48px}input,select,textarea{font-size:16px}form button{max-width:100%}}

.global-search{margin:0 0 16px}.global-search>div{display:flex;gap:8px}.global-search input{min-width:0;flex:1}.global-search button{width:auto;min-width:72px}footer a{color:inherit}

/* 0.8: compact navigation, readable fields and keyboard focus. */
:focus-visible{outline:3px solid #e5a800;outline-offset:3px}
.global-search label{margin:0 0 6px}.global-search input{margin:0}
@media(max-width:700px){
 .primary-nav{display:flex;flex-wrap:nowrap;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x proximity}
 .primary-nav a{flex:0 0 auto;min-height:44px;white-space:nowrap;scroll-snap-align:start;padding:10px 12px}
 .global-search{margin-bottom:10px}.global-search>div{align-items:stretch}.global-search button{padding:10px 14px}
 .more-nav{margin:4px 0}.more-nav summary{min-height:44px}
 .quick-panel h2{margin-top:0}.quick-grid{gap:8px}
 input,select,textarea{min-height:44px}body{overflow-wrap:anywhere}
}

.access-message{padding:16px;background:#edf5ff;border-radius:10px;margin:16px 0}.access-message textarea{min-height:280px;line-height:1.5}.copy-status{min-height:24px}
.document-picker{padding:1rem;border:2px dashed #367baa;border-radius:12px;background:#f2f8fc;margin:1rem 0}.document-picker input{max-width:100%;min-width:0}.document-picker p{font-size:.92rem;overflow-wrap:anywhere}.document-list article{border:1px solid #d8e3ec;border-radius:10px;padding:1rem;margin:.75rem 0;overflow-wrap:anywhere}.document-list .actions{flex-wrap:wrap}@media(max-width:600px){.document-picker{padding:.75rem}.document-list .button{width:100%;text-align:center}}
