:root{--navy:#103f78;--deep:#092b54;--blue:#2167b2;--yellow:#ffd84d;--ink:#18304b;--muted:#687a8f;--line:#dce6f0;--paper:#fff;--page:#f3f8fc;--green:#1d9b68;--shadow:0 18px 50px rgba(20,58,96,.14)}
*{box-sizing:border-box}html{font-size:16px}body{margin:0;min-width:320px;min-height:100vh;color:var(--ink);background:var(--page);font-family:"Trebuchet MS","Segoe UI",Arial,sans-serif;line-height:1.5}button,input,select,a{font:inherit}button{cursor:pointer}[hidden]{display:none!important}a{color:inherit}.brand-lockup{display:flex;align-items:center;gap:13px;color:var(--navy);text-decoration:none}.brand-lockup strong,.brand-lockup small{display:block}.brand-lockup strong{font-size:1.45rem;letter-spacing:.08em}.brand-lockup small{font-size:.68rem;letter-spacing:.18em}.brand-mark{display:grid;place-items:center;width:54px;height:54px;border:4px solid var(--navy);border-radius:16px;color:var(--navy);background:var(--yellow);font-size:1.4rem;font-weight:900}.login-shell{width:min(1080px,calc(100% - 32px));min-height:100vh;margin:auto;padding:48px 0;display:grid;grid-template-columns:1fr 460px;align-items:center;gap:clamp(36px,8vw,100px)}.login-brand h1{max-width:580px;margin:34px 0 12px;color:var(--deep);font-size:clamp(2.6rem,5vw,4.8rem);line-height:1;letter-spacing:-.05em}.login-brand p{max-width:520px;color:var(--muted);font-size:1.06rem}.login-card{padding:clamp(28px,4vw,44px);border:1px solid rgba(16,63,120,.12);border-radius:28px;background:#fff;box-shadow:var(--shadow)}.eyebrow{margin:0 0 7px;color:var(--blue);font-size:.78rem;font-weight:900;letter-spacing:.15em}.login-card h2,.page-heading h1{margin:0;color:var(--deep);letter-spacing:-.03em}.muted{margin:6px 0 22px;color:var(--muted)}form{display:grid}label{display:grid;gap:7px;margin:10px 0;color:var(--ink);font-size:.9rem;font-weight:800}input,select{width:100%;min-height:50px;padding:0 14px;border:2px solid var(--line);border-radius:12px;color:var(--ink);background:#fbfdff;outline:none}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(33,103,178,.12)}.primary-button,.outline-button{min-height:48px;padding:0 18px;border-radius:12px;font-weight:900}.primary-button{display:flex;align-items:center;justify-content:space-between;border:0;color:#fff;background:var(--navy)}.primary-button:hover{background:var(--deep)}.primary-button:disabled,.outline-button:disabled{cursor:wait;opacity:.55}.outline-button{border:2px solid var(--line);color:var(--navy);background:#fff}.form-error{min-height:24px;margin:8px 0;color:#b3261e;font-size:.88rem;font-weight:700}.back-link{display:block;margin-top:20px;color:var(--navy);font-size:.9rem;font-weight:900;text-decoration:none}.back-link:hover{text-decoration:underline}.admin-shell{min-height:100vh}.admin-header{position:sticky;top:0;z-index:5;min-height:82px;padding:12px max(24px,calc((100% - 1380px)/2));display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);backdrop-filter:blur(14px)}.compact .brand-mark{width:48px;height:48px}.admin-person{margin-left:auto;text-align:right}.admin-person span,.admin-person strong{display:block}.admin-person span{color:var(--muted);font-size:.78rem}.admin-layout{width:min(1380px,calc(100% - 32px));margin:28px auto 64px;display:grid;grid-template-columns:210px 1fr;gap:24px}.admin-nav{position:sticky;top:110px;height:fit-content;padding:10px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 26px rgba(20,58,96,.08)}.admin-nav button{width:100%;min-height:48px;padding:0 14px;border:0;border-radius:11px;color:var(--ink);background:transparent;text-align:left;font-weight:900}.admin-nav button:hover{background:#f0f6fc}.admin-nav button.active{color:#fff;background:var(--navy)}.admin-content{min-width:0}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.page-heading h1{font-size:2.1rem}.filters{display:flex;gap:14px;margin-bottom:18px}.filters label{min-width:250px;margin:0}.action-card{margin-bottom:20px;padding:22px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(20,58,96,.07)}.action-card h2{margin:0 0 12px;color:var(--deep);font-size:1.25rem}.action-card .primary-button{width:fit-content;margin-top:8px}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.list-heading{display:flex;align-items:center;justify-content:space-between}.list-heading h2{font-size:1.15rem}.list-heading span{color:var(--muted);font-weight:800}.data-list{display:grid;gap:8px}.data-row{min-height:64px;padding:12px 16px;display:grid;grid-template-columns:minmax(110px,.7fr) minmax(180px,1.5fr) minmax(130px,.7fr);align-items:center;gap:14px;border:1px solid var(--line);border-radius:13px;background:#fff}.data-row strong{color:var(--navy)}.data-row span{min-width:0;overflow-wrap:anywhere}.data-row em{color:var(--muted);font-size:.85rem;font-style:normal;text-align:right}.empty{padding:34px;border:2px dashed var(--line);border-radius:15px;color:var(--muted);text-align:center;background:rgba(255,255,255,.55)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}.metrics article{padding:22px;border:1px solid var(--line);border-radius:16px;background:#fff}.metrics strong,.metrics span{display:block}.metrics strong{color:var(--navy);font-size:2rem}.metrics span{color:var(--muted);font-size:.85rem;font-weight:800}.notice{min-height:24px;margin:18px 0 0;color:var(--green);font-weight:900}.notice.error{color:#b3261e}
@media(max-width:980px){.form-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-layout{grid-template-columns:1fr}.admin-nav{position:static;display:flex;overflow-x:auto}.admin-nav button{width:auto;min-width:max-content}.login-shell{grid-template-columns:1fr;max-width:600px}.login-brand h1{font-size:2.7rem}.login-card{max-width:500px}}
@media(max-width:640px){.login-shell{width:min(100% - 24px,500px);padding:24px 0}.login-brand h1{margin-top:24px;font-size:2.2rem}.login-brand p{font-size:.95rem}.login-card{padding:24px;border-radius:20px}.admin-header{padding:10px 14px;gap:10px}.compact span:last-child{display:none}.admin-person{display:none}.admin-header .outline-button{margin-left:auto}.admin-layout{width:min(100% - 20px,1380px);margin-top:14px}.admin-nav{margin:0 -2px}.page-heading h1{font-size:1.7rem}.filters{display:grid}.filters label{min-width:0}.form-grid.two,.form-grid.three,.form-grid.four{grid-template-columns:1fr}.action-card{padding:17px}.data-row{grid-template-columns:1fr auto}.data-row span{grid-column:1/-1;grid-row:2}.data-row em{grid-column:2;grid-row:1}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.text-button{width:100%;margin-top:12px;padding:8px;border:0;color:var(--navy);background:transparent;font-weight:900;text-align:center}.text-button:hover{text-decoration:underline}.success-message{color:var(--green)!important}
.compact-copy{margin:-4px 0 10px}.admin-account-row{grid-template-columns:minmax(150px,.7fr) minmax(220px,1.5fr) auto}.danger-button{min-height:42px;padding:0 14px;border:2px solid #d64545;border-radius:10px;color:#a61f1f;background:#fff;font-weight:900}.danger-button:hover{color:#fff;background:#b3261e}.self-label{color:var(--muted);font-size:.85rem;font-style:normal;text-align:right}
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.outline-link{display:inline-flex;min-height:44px;padding:0 16px;align-items:center;border:2px solid var(--line);border-radius:12px;color:var(--navy);background:#fff;font-weight:900;text-decoration:none;white-space:nowrap}.import-preview{max-height:320px;margin:8px 0 14px;overflow:auto;border-radius:12px}.import-preview table{width:100%;border-collapse:collapse;background:#fff}.import-preview th,.import-preview td{padding:10px;border:1px solid var(--line);text-align:left}.import-preview th{position:sticky;top:0;color:var(--navy);background:#edf5fc}.registration-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.registration-card{padding:20px;border:2px solid var(--navy);border-radius:16px;background:#fff}.registration-card h3{margin:4px 0 14px;color:var(--deep);font-size:1.35rem}.card-brand{margin:0;color:var(--blue);font-size:.75rem;font-weight:900;letter-spacing:.1em}.registration-card dl{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.registration-card dl div{padding:10px;border-radius:10px;background:var(--page)}.registration-card dt{color:var(--muted);font-size:.72rem;font-weight:900}.registration-card dd{margin:2px 0 0;color:var(--navy);font-size:1.25rem;font-weight:900;letter-spacing:.08em}.registration-card small{display:block;margin-top:12px;color:var(--muted)}
@media(max-width:640px){.admin-account-row{grid-template-columns:1fr auto}.admin-account-row span{grid-column:1/-1;grid-row:2}.admin-account-row .danger-button,.admin-account-row .self-label{grid-column:2;grid-row:1}}
@media(max-width:640px){.section-heading{display:grid}.outline-link{width:fit-content}.registration-cards{grid-template-columns:1fr}}
@media print{body{background:#fff}.admin-header,.admin-nav,.page-heading,.filters,.tab-panel>form,.import-card,.list-heading,#studentList,#adminNotice,.result-card>.section-heading{display:none!important}.admin-layout{display:block;width:100%;margin:0}.admin-content{width:100%}#studentsPanel{display:block!important}#registrationResults{display:block!important;margin:0;padding:0;border:0;box-shadow:none}.registration-cards{grid-template-columns:repeat(2,1fr);gap:10mm}.registration-card{break-inside:avoid;min-height:70mm}}
.student-row{grid-template-columns:minmax(110px,.6fr) minmax(220px,1.2fr) minmax(180px,.8fr)}.student-license-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.student-license-actions button{min-height:38px;padding:0 12px;border:2px solid var(--line);border-radius:9px;color:var(--navy);background:#fff;font-weight:900}.student-license-actions .danger-button{border-color:#d64545;color:#a61f1f}
.list-heading-actions{display:flex;align-items:center;gap:12px}.list-heading-actions .outline-button{min-height:42px}.student-license-actions button:disabled{cursor:not-allowed;opacity:.45}
.record-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) repeat(2,minmax(160px,.45fr));gap:12px;margin-bottom:16px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff}.record-toolbar label{margin:0}.student-record-layout{display:grid;grid-template-columns:minmax(230px,300px) minmax(0,1fr);gap:18px;align-items:start}.record-student-pane{position:sticky;top:110px;padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff}.record-student-pane .list-heading h2{margin:0}.record-student-list{display:grid;gap:8px;margin-top:12px;max-height:calc(100vh - 250px);overflow:auto}.record-student-button{display:grid;gap:3px;width:100%;padding:13px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:#fff;text-align:left}.record-student-button:hover{border-color:#8eb5dc;background:#f6faff}.record-student-button.selected{border-color:var(--blue);box-shadow:0 0 0 3px rgba(33,103,178,.12)}.record-student-button strong{color:var(--navy)}.record-student-button span,.record-student-button small{color:var(--muted)}.record-detail{min-width:0}.record-head{display:flex;justify-content:space-between;gap:18px;margin-bottom:16px;padding:22px;border-radius:18px;color:#fff;background:linear-gradient(135deg,var(--deep),var(--blue))}.record-head h2,.record-head p{margin:0}.record-head p,.record-head small{color:#dcecff}.record-head>b{height:fit-content;padding:7px 11px;border-radius:999px;color:var(--deep);background:#fff;font-size:.75rem}.record-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.record-card{padding:20px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(20,58,96,.07)}.record-card.span-2{grid-column:1/-1}.record-card h3{margin:0 0 16px;color:var(--deep)}.axis-list{display:grid;gap:10px;margin-bottom:14px}.axis-row{display:grid;grid-template-columns:minmax(135px,1fr) minmax(80px,1.2fr) 32px;align-items:center;gap:10px}.axis-row b{text-align:right}.axis-bar{height:9px;overflow:hidden;border-radius:999px;background:#e6eef6}.axis-bar i{display:block;height:100%;border-radius:inherit;background:var(--blue)}.skill-grid,.progress-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.skill-item,.progress-grid>div{display:grid;gap:5px;padding:13px;border:1px solid var(--line);border-radius:12px}.skill-item span,.progress-grid span,.progress-grid small{color:var(--muted)}.skill-item .stable{color:var(--green);font-weight:900}.skill-item .needs-check{color:#b77900;font-weight:900}.record-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.record-form-grid label{margin:0}.record-form-grid .wide{grid-column:1/-1}.record-form-grid textarea{width:100%;min-height:84px;padding:12px 14px;border:2px solid var(--line);border-radius:12px;color:var(--ink);background:#fbfdff;resize:vertical;font:inherit}.record-form-grid textarea:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(33,103,178,.12);outline:none}.record-save{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin-top:16px}.record-save span{color:var(--green);font-weight:900}
@media(max-width:1050px){.student-record-layout{grid-template-columns:1fr}.record-student-pane{position:static}.record-student-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:calc(100vh - 300px)}.mobile-record-toggle{display:block;width:100%;margin-top:12px}.student-record-layout.mobile-detail .record-student-pane{display:none}.student-record-layout.mobile-list .record-detail{display:none}}
@media(max-width:700px){.record-toolbar,.record-grid,.record-form-grid,.skill-grid,.progress-grid{grid-template-columns:1fr}.record-card.span-2,.record-form-grid .wide{grid-column:auto}.record-student-list{grid-template-columns:1fr}.record-head{display:grid}.axis-row{grid-template-columns:1fr 40px}.axis-bar{grid-column:1/-1;grid-row:2}.record-save{align-items:stretch;flex-direction:column}.record-save .primary-button{width:100%}}
.staff-row{grid-template-columns:minmax(130px,.7fr) minmax(220px,1.4fr) auto}.staff-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.staff-actions button{min-height:38px;padding:0 12px;border:2px solid var(--line);border-radius:9px;color:var(--navy);background:#fff;font-weight:900}
