:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172033;background:#f5f7fb}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.side{background:#111827;color:white;padding:24px;position:sticky;top:0;height:100vh}.brand{font-weight:800;font-size:24px}.brand small{display:block;font-size:11px;font-weight:600;color:#9ca3af;margin-top:4px}.nav{display:grid;gap:8px;margin-top:26px}.nav button{border:0;background:transparent;color:#d1d5db;text-align:left;padding:11px 12px;border-radius:10px;cursor:pointer}.nav button:hover,.nav button.active{background:#1f2937;color:white}.main{padding:24px 28px 60px;min-width:0}.top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px}.top-right{display:flex;gap:8px;align-items:center}.btn{border:0;border-radius:10px;padding:10px 14px;background:#2563eb;color:white;font-weight:700;cursor:pointer}.btn.secondary{background:#111827}.btn.ghost{background:#e5e7eb;color:#111827}.btn.danger{background:#b91c1c}.btn:disabled{opacity:.5;cursor:not-allowed}.card,.panel{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 16px rgba(15,23,42,.04)}.panel{padding:20px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.course{padding:18px;display:flex;flex-direction:column;gap:12px}.badge{display:inline-flex;width:max-content;padding:5px 8px;border-radius:999px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:700}.muted{color:#6b7280}.meta{font-size:13px;color:#6b7280}.levels{display:grid;gap:7px}.level{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #e5e7eb;border-radius:10px;padding:9px 10px;background:#fafafa;cursor:pointer}.level:hover{border-color:#93c5fd}.progress{height:7px;background:#e5e7eb;border-radius:99px;overflow:hidden}.progress>div{height:100%;background:#2563eb}.section-head{display:flex;justify-content:space-between;gap:12px;align-items:end;margin:20px 0 14px}.section-head h2{margin:0}.search{width:min(420px,100%);padding:11px 12px;border:1px solid #d1d5db;border-radius:10px}.auth{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#eff6ff,#f8fafc)}.authbox{width:min(460px,100%);padding:28px;background:white;border-radius:18px;border:1px solid #e5e7eb;box-shadow:0 16px 40px rgba(15,23,42,.08)}.field{display:grid;gap:6px;margin:12px 0}.field label{font-size:13px;font-weight:700}.field input,.field select,.field textarea{padding:11px 12px;border:1px solid #d1d5db;border-radius:10px;width:100%}.msg{padding:10px 12px;border-radius:10px;margin:10px 0}.ok{background:#ecfdf5;color:#065f46}.err{background:#fef2f2;color:#991b1b}.course-view{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.lesson-copy{padding:22px}.lesson-copy p{line-height:1.65}.video{aspect-ratio:16/9;width:100%;background:#111827;border-radius:14px;overflow:hidden}.video video{width:100%;height:100%;object-fit:cover}.lesson-list{padding:16px}.lesson-item{padding:10px;border-radius:10px;cursor:pointer;border:1px solid transparent;margin:6px 0}.lesson-item:hover,.lesson-item.active{background:#eff6ff;border-color:#bfdbfe}.lesson-item.done:after{content:" ✓";color:#15803d}.quiz{max-width:800px}.question{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px;margin:12px 0}.opt{display:block;padding:8px 0}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;background:white}.table th,.table td{text-align:left;padding:10px;border-bottom:1px solid #e5e7eb}.certificate{max-width:820px;margin:30px auto;padding:50px;border:8px double #1f2937;background:white;text-align:center}.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{padding:18px}.stat b{font-size:28px}.privacy-note{font-size:12px;color:#6b7280;line-height:1.5}.hidden{display:none!important}@media(max-width:1000px){.grid{grid-template-columns:repeat(2,1fr)}.course-view{grid-template-columns:1fr}.shell{grid-template-columns:1fr}.side{height:auto;position:relative}.nav{display:flex;overflow:auto}.nav button{white-space:nowrap}}@media(max-width:650px){.grid,.statgrid{grid-template-columns:1fr}.main{padding:18px}.top{align-items:flex-start;flex-direction:column}}
/* CSP-safe utility classes: presentation previously embedded in generated markup. */
.authbox-wide{width:min(650px,100%)}.row-between{justify-content:space-between}.grid-2{grid-template-columns:repeat(2,1fr)}.panel-privacy{margin:16px 0;background:#f8fafc}.mt-0{margin-top:0}.text-13{font-size:13px}.consent-row{display:flex;gap:10px;align-items:flex-start;margin-top:14px}.mt-3{margin-top:3px}.mt-6{margin-top:6px}.mt-12{margin-top:12px}.mt-14{margin-top:14px}.mt-16{margin-top:16px}.mt-18{margin-top:18px}.mb-12{margin-bottom:12px}.course-title{margin:0 0 6px}.progress-cell{min-width:90px}.progress-spaced{margin:10px 0 14px}.btn-full{width:100%}.divider{border:0;border-top:1px solid #e5e7eb;margin:20px 0}.attendance-row{grid-template-columns:2fr 1fr 1fr auto;align-items:end;margin-bottom:8px}.level-disabled{opacity:.55;cursor:not-allowed}.progress-native{display:block;width:100%;height:7px;border:0;border-radius:99px;overflow:hidden;appearance:none}.progress-native::-webkit-progress-bar{background:#e5e7eb;border-radius:99px}.progress-native::-webkit-progress-value{background:#2563eb;border-radius:99px}.progress-native::-moz-progress-bar{background:#2563eb;border-radius:99px}@media(max-width:650px){.grid-2,.attendance-row{grid-template-columns:1fr}}
/* AQLEVA v400 accessibility baseline: keyboard-visible navigation and semantic interactive rows. */
.skip-link{position:fixed;left:12px;top:12px;z-index:9999;transform:translateY(-180%);padding:10px 14px;border-radius:10px;background:#111827;color:#fff;font-weight:700;text-decoration:none}.skip-link:focus{transform:translateY(0)}
:where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:3px solid #2563eb;outline-offset:3px}
.level,.lesson-item{font:inherit;color:inherit;text-align:left;width:100%}
button.level,button.lesson-item{appearance:none}
button.level:disabled{opacity:.55;cursor:not-allowed}

/* AQLEVA restricted evaluator/student presentation. */
.demo-banner{margin:-8px 0 20px;padding:11px 14px;border:1px solid #c7d2fe;border-radius:12px;background:#eef2ff;color:#312e81;font-size:13px}
.demo-access{margin:16px 0;padding:16px;border:1px solid #c7d2fe;border-radius:14px;background:#f8faff}
.demo-session{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid #e5e7eb}
.demo-progress-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,240px) 50px;gap:14px;align-items:center;padding:10px 0;border-top:1px solid #e5e7eb}
.demo-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;color:#334155}
.demo-mode [data-action="downloadLiveCalendar"],.demo-mode [data-action="joinLiveClass"],.demo-mode [data-action="joinManagedLiveClass"],.demo-mode [data-action="exportData"],.demo-mode [data-action="showDelete"],.demo-mode [data-action="changePassword"],.demo-mode [data-action="print"]{display:none!important}
@media(max-width:650px){.demo-session{display:grid}.demo-progress-row,.demo-controls{grid-template-columns:1fr}}

/* v49: browser speech practice; controls remain keyboard accessible. */
.lesson-speech{padding:14px 16px;margin-bottom:18px;border-color:#bfdbfe;background:#f8fbff}
.lesson-speech .row select{padding:8px;border:1px solid #94a3b8;border-radius:8px;background:white}
.lesson-speech .row{gap:8px}
@media(max-width:650px){.lesson-speech .row button{flex:1 1 100%}}
