:root{color:#172033;background:#f3f6fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.unavailable-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:#f3f6fa}.unavailable-card{width:min(100%,520px);padding:44px;border:1px solid #e0e6ef;border-radius:18px;background:#fff;box-shadow:0 18px 46px #17203314}.error-code{display:block;margin-bottom:18px;color:#c44c54;font-size:52px;font-weight:800;letter-spacing:-.06em}.unavailable-card h1{margin:0;color:#1b2b48;font-size:28px;letter-spacing:-.04em}.unavailable-card p:not(.eyebrow){margin:16px 0 26px;color:#75839a;font-size:14px;line-height:1.7}.auth-shell{display:grid;grid-template-columns:minmax(420px,560px) 1fr;min-height:100vh;background:#101b2f}.auth-panel{display:flex;width:min(100%,560px);flex-direction:column;justify-content:center;padding:56px clamp(28px,8vw,88px);background:#f8fafc}.brand-lockup,.sidebar-brand,.topbar-account,.person-cell{display:flex;align-items:center}.brand-lockup{justify-content:center}.brand-logo{display:block;height:auto;object-fit:contain}.brand-logo-login{width:min(100%,320px)}.brand-logo-sidebar{width:145px}.auth-copy{margin-top:82px}.eyebrow{margin:0 0 10px;color:#2f66d8;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.auth-copy h1,.page-intro h1{margin:0;color:#14223c;font-size:clamp(32px,4vw,48px);letter-spacing:-.04em;line-height:1.1}.auth-form{display:grid;gap:18px;margin-top:46px}.login-password-field{display:grid;gap:8px}.login-password-input{position:relative}.login-password-input button{position:absolute;top:50%;right:8px;transform:translateY(-50%);padding:5px 7px;border:0;border-radius:6px;background:transparent;color:#2f66d8;font-size:13px}.login-password-input button:focus-visible{outline:2px solid #3f73e1;outline-offset:2px}label{display:grid;gap:8px;color:#46536a;font-size:13px;font-weight:700}label input,label select,label textarea,.login-password-input input,.search-box input{width:100%;border:1px solid #d9e0eb;border-radius:10px;outline:0;background:#fff;color:#172033;transition:border-color .2s,box-shadow .2s}label input,label select,label textarea,.login-password-input input{padding:11px 13px}.login-password-input input{padding-right:56px}label input:focus,label select:focus,label textarea:focus,.login-password-input input:focus,.search-box input:focus{border-color:#3f73e1;box-shadow:0 0 0 3px #3f73e11f}label textarea{min-height:100px;resize:vertical;line-height:1.6}.form-error{margin:-3px 0 0;color:#c94747;font-size:13px}.auth-aside{position:relative;display:flex;min-height:100vh;align-items:flex-end;overflow:hidden;padding:76px;background:radial-gradient(circle at 25% 20%,#2a4c8e 0,transparent 32%),linear-gradient(135deg,#152541,#0e1627);color:#fff}.aside-grid{position:absolute;right:12%;top:22%;display:grid;grid-template-columns:repeat(2,110px);gap:14px;transform:rotate(18deg);opacity:.45}.aside-grid span{display:block;height:110px;border:1px solid rgba(159,191,255,.35);border-radius:26px}.aside-grid span:nth-child(2){background:#638ff129}.app-shell{display:flex;height:100vh;min-height:0;overflow:hidden;background:#f3f6fa}.sidebar{position:sticky;top:0;display:flex;width:250px;height:100vh;flex:0 0 250px;flex-direction:column;padding:4px 16px 22px;background:linear-gradient(to bottom,#faf7f2,#f0ebe0);border-right:1px solid #d8cfc4}.sidebar-brand{justify-content:center;gap:11px;padding:0}.main-nav{overflow:auto;margin-top:20px}@media(min-width:701px){.sidebar-brand{flex:0 0 96px}.main-nav{min-height:0;flex:1 1 auto}}.nav-group{margin-bottom:24px}.nav-group>p{margin:0 12px 9px;color:#665548;font-size:18px;font-weight:800;letter-spacing:.04em}.nav-item{display:flex;width:100%;align-items:center;margin:3px 0;padding:11px 12px;border:0;border-radius:10px;background:transparent;color:#4e463f;font-size:16px;text-align:left;transition:.2s}.nav-item:hover{background:#e6dbce;color:#2f2823}.nav-item:focus-visible{outline:2px solid #9a6a32;outline-offset:2px;background:#e6dbce;color:#2f2823}.nav-item.active{background:#a85f22;color:#fff;font-weight:800}.main-shell{display:flex;min-width:0;min-height:0;flex:1;flex-direction:column;overflow:hidden}.topbar{display:flex;min-height:60px;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e5eaf1;background:#fffc}.crumb{display:flex;align-items:center;gap:12px;color:#a0acbc;font-size:13px}.crumb b{color:#d4dae4;font-weight:400}.crumb strong{color:#263550}.topbar-account{gap:10px}.account-menu{position:relative}.account-trigger{display:inline-flex;align-items:center;gap:8px;padding:7px 8px;border:0;border-radius:8px;background:transparent;color:#293853}.account-trigger:hover,.account-trigger:focus-visible{background:#eef3fb;outline:0}.account-trigger strong{color:inherit;font-size:13px}.account-trigger span{color:#7d8aa0;font-size:15px}.settings-menu{position:absolute;z-index:5;top:calc(100% + 6px);right:0;display:grid;min-width:132px;padding:6px;border:1px solid #e0e6ef;border-radius:10px;background:#fff;box-shadow:0 12px 28px #172b4b24}.settings-menu button{padding:9px 10px;border:0;border-radius:7px;background:transparent;color:#536078;font-size:12px;text-align:left}.settings-menu button:hover:not(:disabled),.settings-menu button:focus-visible:not(:disabled){background:#f1f5fb;color:#245bd2;outline:0}.settings-menu button:disabled{color:#a0acbc}.topbar-account strong{display:block}.topbar-account strong{color:#293853;font-size:13px}.avatar,.mini-avatar{display:grid;place-items:center;border-radius:50%;background:#dce8ff;color:#2c63d4;font-weight:800}.avatar{width:34px;height:34px;font-size:14px}.business-controls{display:flex;min-width:0;min-height:0;flex:1;flex-direction:column;margin:0;padding:0;overflow:auto;border:0}.content-wrap{display:flex;width:100%;max-width:none;height:100%;min-height:0;flex-direction:column;gap:8px;margin:0;padding:12px 16px 16px}.page-intro{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;gap:28px}.intro-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.intro-actions .outline-button,.intro-actions .primary-button{min-height:32px;padding:0 12px}.data-card{display:flex;min-height:0;flex:1;flex-direction:column;margin-top:0;overflow:hidden;border:1px solid #e4e9f1;border-radius:15px;background:#fff;box-shadow:0 12px 34px #20365b0d}.data-card:has(>.detail-panel){flex:0 0 auto}.data-card:has(>.detail-panel) .table-wrap{flex:0 0 auto}.filter-bar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px 12px;border-bottom:1px solid #edf0f5}.content-wrap:not(.filters-expanded) .filter-bar>.filter-field:nth-child(n+4){display:none}.filter-field{display:flex;align-items:center;gap:8px;min-width:0}.filter-field>span{flex:0 0 5em;text-align:right;white-space:nowrap}.filter-field>input,.filter-field>select{flex:1;width:0;height:36px;min-width:0}.filter-field>input{padding:0 10px}.search-box{position:relative;min-width:220px;flex:1}.search-box>span{position:absolute;top:50%;left:13px;color:#93a0b3;font-size:20px;line-height:1;transform:translateY(-54%)}.search-box input{padding:8px 12px 8px 38px}.filter-bar select{padding:0 28px 0 10px}.table-wrap{min-height:0;flex:1;overflow:auto}.pagination-bar{display:flex;align-items:center;gap:14px;min-height:46px;padding:6px 2px 0;color:#7b879b;font-size:12px}.page-size-control{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.page-size-control select{padding:5px 22px 5px 8px;border:1px solid #d9e0eb;border-radius:7px;background:#fff;color:#536078;font-size:12px}.pagination-total{margin-left:auto;white-space:nowrap}.admin-pagination{display:inline-flex;width:max-content;min-width:max-content;flex:0 0 auto;gap:5px;margin:0;padding:0;list-style:none}.admin-pagination li{display:block}.admin-pagination .page-button{min-width:30px;height:30px;padding:0 8px;border:1px solid #d8e0ec;border-radius:7px;background:#fff;color:#53627a;font-size:12px;cursor:pointer}.admin-pagination .page-button:hover{border-color:#9fb5e3;color:#245bd2}.admin-pagination .page-button.active{border-color:#245bd2;background:#245bd2;color:#fff}.admin-pagination .page-button:disabled{cursor:wait;opacity:.55}.pagination-error{margin:4px 0 0;color:#bd4b53;font-size:12px}table{width:100%;min-width:1000px;border-collapse:separate;border-spacing:0}th{position:sticky;top:0;z-index:1;padding:10px 14px;border-bottom:1px solid #e5eaf1;background:#fbfcfe;color:#96a1b2;font-size:11px;font-weight:800;letter-spacing:.04em;text-align:left;white-space:nowrap}td{padding:12px 14px;border-top:1px solid #f0f2f6;color:#536078;font-size:13px;vertical-align:middle}td strong{display:block;color:#263550;font-size:13px}.cell-subtitle,td small{display:block;margin-top:5px;color:#99a5b6;font-size:11px;line-height:1.4}.align-right{text-align:right}.person-cell{gap:10px}.mini-avatar{width:32px;height:32px;flex:0 0 32px;font-size:12px}.inline-select{padding:6px 25px 6px 8px;border:1px solid #e0e6ef;border-radius:7px;background:#fff;color:#52617a;font-size:12px}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.badge.is-positive{background:#e8f8f0;color:#23865a}.badge.is-negative{background:#fff0f0;color:#bd4b53}.badge.is-neutral{background:#eef2f7;color:#61708a}.action-cell{min-width:190px;white-space:nowrap}.expandable-text{max-width:260px}.expandable-text>.cell-subtitle{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.expandable-text.expanded>.cell-subtitle{display:block;-webkit-line-clamp:unset}.expand-toggle{display:block;margin-top:4px;padding:0;border:0;background:none;color:#2c65d5;font-size:11px;font-weight:800}.filter-toggle{grid-column:1 / -1;justify-self:end;padding:0;border:0;background:none;color:#2c65d5;font-size:12px;font-weight:800}.filter-bar:not(:has(>.filter-field:nth-child(n+4))) .filter-toggle{display:none}.filter-toggle:hover,.filter-toggle:focus-visible{color:#194dbb;outline:0;text-decoration:underline}.student-filter-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;align-items:center;gap:12px}.student-filter-actions .text-button{margin-left:0;padding:0}.review-meta{margin-top:4px;color:#7c8aa0;font-size:12px}.detail-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:12px}.qr-link{margin-left:0}.empty-state{padding:38px 10px;color:#a0acbc;text-align:center}.text-button,.ghost-button,.outline-button,.primary-button,.danger-button,.close-button{border:0;background:none}.text-button{margin-left:12px;padding:4px 0;color:#2c65d5;font-size:12px;font-weight:800}.text-button.subtle{color:#8290a6}.ghost-button{padding:8px 0 8px 12px;color:#77849a;font-size:12px}.outline-button,.primary-button,.danger-button{min-height:38px;padding:0 16px;border-radius:9px;font-size:12px;font-weight:800}.outline-button{border:1px solid #d8e0ec;color:#53627a;background:#fff}.outline-button:hover{border-color:#a9bce0}.primary-button{border:1px solid #245bd2;background:#245bd2;color:#fff;box-shadow:0 7px 16px #245bd22e}.primary-button:hover{background:#194dbb}.danger-button{border:1px solid #f0c8cc;background:#fff5f5;color:#c44c54}.full-width{width:100%}.upload-button{display:inline-block;margin-left:8px;color:#2e66d5;font-size:11px;font-weight:800;cursor:pointer}.upload-button input{display:none}.detail-panel{margin:18px;padding:22px;border:1px solid #e1e8f3;border-radius:13px;background:#f9fbfe}.content-wrap>.detail-panel{flex:0 0 auto;margin:0}.detail-heading,.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.detail-heading h2,.modal-heading h2{margin:0;color:#23324d;font-size:22px;letter-spacing:-.03em}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}.detail-grid div{padding:12px;border:1px solid #e7ecf4;border-radius:9px;background:#fff}.detail-grid span{display:block;color:#9aa6b8;font-size:11px}.detail-grid strong{margin-top:6px;color:#4b5a73;font-size:13px}.detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.detail-subsection{margin-top:20px}.detail-subsection>h3{margin:0 0 10px;color:#33425e;font-size:13px}.address-picker{grid-column:span 2;padding:12px;border:1px solid #e7ecf4;border-radius:9px;background:#fbfcfe}.address-picker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.address-picker-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.detail-columns h3{margin:0 0 10px;color:#33425e;font-size:13px}.detail-columns p{margin:0;color:#637087;font-size:12px;line-height:1.8}.muted{color:#a0acbc!important}.record-list{display:grid;gap:7px;margin:0;padding:0;list-style:none}.record-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:8px;background:#fff;color:#5d6b82;font-size:12px}.record-list small{margin:0;white-space:nowrap}.available{color:#27875f}.unavailable{color:#bd4b53}.modal-backdrop{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#0c19307a}.modal-card{width:min(100%,540px);max-height:calc(100vh - 48px);overflow:auto;padding:25px;border-radius:16px;background:#fff;box-shadow:0 22px 70px #0918323d}.wide-modal{width:min(100%,720px)}.student-detail-modal{display:flex;flex-direction:column;width:min(100%,960px);height:min(780px,calc(100dvh - 48px));padding:0;overflow:hidden}.student-detail-modal>.modal-heading{flex:0 0 auto;align-items:center;margin:0;padding:20px 25px;border-bottom:1px solid #e7ecf4}.student-detail-modal>.modal-heading h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-detail-body{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;padding:20px 25px}.student-detail-body .detail-panel{margin:0 0 16px;padding:18px}.student-detail-body .detail-panel:last-child{margin-bottom:0}.student-detail-body .detail-grid strong,.student-detail-body .record-list span{overflow-wrap:anywhere}.student-detail-body .record-list li,.student-detail-body .detail-pagination{flex-wrap:wrap}.student-detail-modal>.modal-actions{flex:0 0 auto;margin:0;padding:16px 25px;border-top:1px solid #e7ecf4}.review-modal,.password-modal{width:min(100%,500px)}.qr-modal{width:min(100%,420px)}.qr-preview{display:block;width:min(100%,300px);max-height:52vh;margin:0 auto;object-fit:contain}.modal-heading{margin-bottom:24px}.password-target{margin:0 0 12px;color:#4b5a73;font-size:13px;line-height:1.6}.password-target strong{color:#23324d}.close-button{color:#96a2b3;font-size:25px;line-height:1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.span-2{grid-column:span 2}.helper-text{margin:0;color:#8895a8;font-size:12px;line-height:1.6}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.toast{position:fixed;z-index:20;right:28px;bottom:28px;max-width:min(90vw,420px);padding:12px 17px;border-radius:10px;color:#fff;font-size:13px;box-shadow:0 12px 32px #0c1c3a33}.toast.success{background:#23865b}.toast.error{background:#bf4c55}@media(max-width:980px){.auth-shell{grid-template-columns:1fr}.auth-panel{width:100%;min-height:100vh}.auth-aside{display:none}.sidebar{width:210px;flex-basis:210px}.topbar,.content-wrap{padding-right:24px;padding-left:24px}}@media(max-width:700px){.app-shell{display:block;height:auto;min-height:100vh;overflow:visible}.sidebar{position:static;width:100%;height:auto;padding:18px 14px 12px}.main-nav{display:flex;gap:18px;overflow-x:auto;margin-top:18px}.nav-group{display:flex;flex:0 0 auto;gap:5px;margin:0}.nav-group>p{display:none}.nav-item{width:auto;white-space:nowrap}.main-shell{min-height:0;overflow:visible}.business-controls{display:block;min-height:0;overflow:visible}.topbar{min-height:65px}.crumb{display:none}.content-wrap{display:block;height:auto;min-height:0;padding:28px 14px 50px}.page-intro{align-items:flex-start;flex-direction:column;gap:12px}.intro-actions{justify-content:flex-start}.data-card{display:block;min-height:0;margin-top:16px}.table-wrap{display:block;max-height:none;overflow:auto}.filter-bar{align-items:stretch;flex-direction:column;padding-right:12px}.content-wrap:not(.filters-expanded) .filter-bar{max-height:none;overflow:visible}.filter-toggle{position:static;align-self:flex-end;transform:none}.search-box{min-width:0}.pagination-bar{align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:8px}.admin-pagination{flex-wrap:wrap}.detail-grid,.detail-columns,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.modal-card{padding:20px}.auth-panel{padding:38px 24px}.auth-copy{margin-top:64px}.filter-bar{grid-template-columns:minmax(0,1fr)}.student-detail-modal{padding:0}.student-detail-modal>.modal-heading,.student-detail-body,.student-detail-modal>.modal-actions{padding-right:16px;padding-left:16px}}ul#componentContainer{padding-inline-start:0;list-style-type:none;display:inline-flex}ul#componentContainer a{text-decoration:none;display:flex;justify-content:center;align-items:center}
