:root{
  --bg:#0b1220;
  --bg-elevated:#121a2b;
  --bg-soft:#172238;
  --text:#e8eef9;
  --muted:#9aa8c2;
  --line:#26324a;
  --accent:#3d8bfd;
  --accent-2:#1f6feb;
  --danger:#f87171;
  --danger-bg:#7f1d1d;
  --ok:#4ade80;
  --warn:#fbbf24;
  --radius:10px;
  --font:"IBM Plex Sans","Segoe UI","Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:radial-gradient(1200px 600px at 10% -10%,#1a2742 0%,var(--bg) 55%);color:var(--text);font-family:var(--font);min-height:100%;line-height:1.45}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{width:min(1180px,calc(100% - 2rem));margin:0 auto}
.site-header,.site-footer{border-bottom:1px solid var(--line);background:rgba(11,18,32,.9);backdrop-filter:blur(8px)}
.site-footer{border-bottom:0;border-top:1px solid var(--line);margin-top:3rem}
.site-header .wrap,.site-footer .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0}
.brand{font-weight:700;color:var(--text);font-size:1.15rem;letter-spacing:.01em}
.brand span{color:var(--accent)}
.nav{display:flex;gap:.85rem;flex-wrap:wrap;align-items:center;color:var(--muted)}
.admin-topnav a{color:var(--muted);font-size:.92rem;font-weight:500}
.admin-topnav a:hover{color:var(--text);text-decoration:none}
.nav-user{font-size:.85rem}
main.wrap,main.admin-main{padding:1.75rem 0 3rem}
h1,h2,h3,h4{line-height:1.25;margin:0 0 .65rem;font-weight:650}
h1{font-size:1.7rem}
h2{font-size:1.15rem}
h3{font-size:1.02rem}
.lead{color:var(--muted);max-width:62ch;margin:.15rem 0 0}
.eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .35rem}
.eyebrow a{color:var(--muted)}
.panel{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.25rem;margin:1rem 0}
.muted{color:var(--muted)}
.preferred{font-size:1rem;font-weight:500}
.mono{font-family:var(--mono);font-size:.86rem}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;background:var(--accent-2);color:#fff;border:0;border-radius:8px;padding:.58rem .95rem;font-weight:600;font-size:.92rem;cursor:pointer;text-decoration:none;line-height:1.2}
.btn:hover{filter:brightness(1.06);text-decoration:none}
.btn.secondary{background:var(--bg-soft);color:var(--text);border:1px solid var(--line)}
.btn.danger{background:var(--danger-bg);color:#fecaca}
.btn-sm{padding:.4rem .7rem;font-size:.82rem}
.inline{display:inline}
.inline.btn,.head-actions form{display:inline}
input,select,textarea{width:100%;background:#0a101c;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.6rem .75rem;margin:.3rem 0 .75rem;font:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(61,139,253,.35);border-color:var(--accent)}
label{display:block;font-size:.86rem;color:var(--muted);font-weight:500}
.help{color:var(--muted);font-size:.82rem;margin:.25rem 0 .5rem}
.field-error{color:#fecaca;font-size:.82rem;margin:-.45rem 0 .7rem}
.alert{padding:.75rem 1rem;border-radius:8px;margin:.75rem 0;font-size:.92rem}
.alert.error{background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.35);color:#fecaca}
.alert.success{background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.35);color:#bbf7d0}
.alert.warn{background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.35);color:#fde68a}
.table{width:100%;border-collapse:collapse;font-size:.9rem}
.table th,.table td{text-align:left;padding:.55rem .4rem;border-bottom:1px solid var(--line);vertical-align:top}
.table.dense th,.table.dense td{padding:.42rem .35rem;font-size:.86rem}
.table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.badge{display:inline-block;padding:.12rem .45rem;border-radius:999px;font-size:.72rem;border:1px solid var(--line);color:var(--muted);text-transform:capitalize;font-weight:600;vertical-align:middle}
.badge.active,.badge.published{color:var(--ok);border-color:rgba(74,222,128,.35)}
.badge.inactive,.badge.draft{color:var(--warn);border-color:rgba(251,191,36,.35)}
.badge.archived,.badge.expired,.badge.disabled,.badge.exhausted{color:var(--danger);border-color:rgba(248,113,113,.35)}
.video{position:relative;width:100%;padding-top:56.25%;background:#000;border-radius:var(--radius);overflow:hidden;margin:1rem 0}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.lesson-body{line-height:1.65;color:#d5deef}
.pager{display:flex;justify-content:space-between;gap:1rem;margin-top:1.5rem;flex-wrap:wrap}
.admin-nav{display:flex;flex-wrap:wrap;gap:.65rem;margin:1rem 0 1.35rem}
.code-once{background:#071018;border:1px dashed var(--warn);padding:1rem;border-radius:8px;font-size:1.1rem;letter-spacing:.04em;word-break:break-all}

/* Admin page chrome */
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.85rem;flex-wrap:wrap}
.head-actions{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}
.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem}
.toolbar{padding:1rem 1.15rem}
.toolbar-grid{display:grid;grid-template-columns:2fr 1fr auto;gap:.85rem;align-items:end}
.toolbar-actions{display:flex;gap:.5rem;padding-bottom:.1rem}
.empty-state{text-align:center;padding:2rem 1rem}
.empty-state h3{margin-bottom:.35rem}

.form-grid{display:grid;grid-template-columns:1fr;gap:0 .9rem}
.form-grid.two{grid-template-columns:1fr 1fr}
.form-grid .span-2{grid-column:1 / -1}
.stack-form .panel{margin-top:.85rem}
.form-actions{display:flex;gap:.65rem;margin:1rem 0 1.5rem;flex-wrap:wrap}
.sticky-actions{position:sticky;bottom:0;background:rgba(11,18,32,.92);border:1px solid var(--line);border-radius:var(--radius);padding:.85rem 1rem;backdrop-filter:blur(6px)}

.tabs{display:flex;gap:.15rem;border-bottom:1px solid var(--line);margin:1rem 0 0;flex-wrap:wrap}
.tabs a{padding:.65rem .95rem;color:var(--muted);border-bottom:2px solid transparent;font-weight:600;font-size:.92rem}
.tabs a:hover{color:var(--text);text-decoration:none}
.tabs a.active{color:var(--text);border-bottom-color:var(--accent)}

.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem 1.25rem}
.detail-grid .span-2{grid-column:1 / -1}
.detail-grid .label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:.2rem}
.notes{white-space:pre-wrap;color:#d5deef}

.grant-category{margin:1rem 0 1.35rem;padding-bottom:.5rem;border-bottom:1px solid var(--line)}
.grant-category:last-of-type{border-bottom:0}
.grant-course{margin:.65rem 0 .85rem .15rem;padding-left:.85rem;border-left:2px solid var(--line)}
.grant-list{list-style:none;margin:.35rem 0 0;padding:0}
.grant-list li{margin:.2rem 0}
.check-row{display:flex;align-items:center;gap:.55rem;margin:0;padding:.35rem .45rem;border-radius:6px;cursor:pointer}
.check-row:hover{background:rgba(255,255,255,.03)}
.check-row input{width:auto;margin:0}
.check-row span:first-of-type{flex:1}

.dash-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:.85rem;margin:1rem 0 1.25rem}
.dash-card{display:block;background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;color:var(--text);text-decoration:none;transition:border-color .15s ease, transform .15s ease}
.dash-card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}
.dash-card h3{margin:0 0 .3rem;font-size:1rem}
.dash-card p{margin:0;color:var(--muted);font-size:.86rem}
.legacy-note{font-size:.82rem;color:var(--warn);margin:.35rem 0 .75rem}

/* Student portal */
.student-landing{max-width:640px}
.access-steps{margin:.5rem 0 1rem 1.2rem;color:var(--muted);line-height:1.7}
.staff-entry{margin-top:1.5rem;font-size:.86rem}
.portal-category{margin-top:1rem}
.portal-course{margin:.75rem 0 .5rem;padding-left:.85rem;border-left:2px solid var(--line)}
.portal-lessons{list-style:none;margin:.35rem 0 0;padding:0}
.portal-lessons li{margin:.35rem 0}
.portal-lessons a{display:block;padding:.45rem .55rem;border-radius:6px;color:var(--text)}
.portal-lessons a:hover{background:rgba(255,255,255,.04);text-decoration:none;color:var(--accent)}
.student-bar{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.55rem .75rem;margin:0 0 1rem;border:1px solid var(--line);border-radius:8px;background:var(--bg-elevated);color:var(--muted);font-size:.9rem}
.student-bar a{color:var(--muted)}
button.linkish{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;padding:0}
button.linkish:hover{text-decoration:underline}

/* Access link admin panel */
.access-link-panel .code-once-wrap{margin:1rem 0}
.link-actions{display:grid;grid-template-columns:1fr 1fr;gap:.85rem;margin-top:1rem}
.soft-panel{background:var(--bg-soft);margin:0}
.badge.none{color:var(--muted)}
.badge.revoked{color:var(--danger);border-color:rgba(248,113,113,.35)}
.badge.expired{color:var(--danger);border-color:rgba(248,113,113,.35)}

@media (max-width:900px){
  .toolbar-grid{grid-template-columns:1fr}
  .form-grid.two,.detail-grid,.dash-cards,.link-actions{grid-template-columns:1fr}
  .table.dense{display:block;overflow-x:auto}
}

/* The iframe never receives pointer or keyboard interaction. Controls stay outside it. */
.lesson-player{background:#080d16;border:1px solid var(--line);border-radius:10px;overflow:hidden;user-select:none;-webkit-user-select:none}
.lesson-player-stage{position:relative;aspect-ratio:16/9;min-height:200px;background:#000}
.lesson-player-frame,.lesson-player-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;pointer-events:none}
.lesson-player-surface{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:0;background:transparent;color:white;font:inherit;cursor:pointer;z-index:1}
.lesson-player-surface[data-playing="true"]{color:transparent}
.lesson-player-surface:focus-visible{outline:3px solid var(--accent);outline-offset:-4px}
.lesson-player-controls{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap;padding:.8rem}
.lesson-player-controls label{margin:0;font-size:.8rem}
.lesson-player-controls input{padding:0;margin:.3rem 0 0;width:100%;accent-color:var(--accent)}
.lesson-player-seek{flex:1;min-width:130px}
.lesson-player-volume{width:90px}
.lesson-player-controls output{font-variant-numeric:tabular-nums;font-size:.85rem}
.lesson-player [data-player-status]{margin:0;padding:0 .8rem .6rem;color:var(--muted);font-size:.85rem}
.lesson-player:fullscreen{display:flex;flex-direction:column;justify-content:center;width:100%;height:100%;border:0;border-radius:0}
.lesson-player:fullscreen .lesson-player-stage{flex:1;min-height:0;aspect-ratio:auto}
.lesson-player:fullscreen .lesson-player-controls{flex-shrink:0}
.journey{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin:1.5rem 0}.journey span{border-top:2px solid var(--accent);padding:1rem .25rem;color:var(--text)}
.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin:1rem 0}.lesson-card{padding:1.2rem;border:1px solid var(--line);border-radius:10px;background:var(--bg-soft)}
.course-category>summary{cursor:pointer;display:flex;gap:1rem;align-items:center}.course-category h2{margin:.6rem 0;flex:1}.program-card{padding:1rem;margin-top:1rem;border-left:2px solid var(--accent);background:var(--bg-soft)}.program-card>summary{cursor:pointer;display:flex;justify-content:space-between}.program-card strong{display:block;font-size:1.2rem;margin:.35rem 0}
.registration-card{max-width:700px;margin:2rem auto}.registration-card fieldset{border:1px solid var(--line);border-radius:8px;margin:1rem 0;padding:1rem}.registration-card .check-row input{width:auto}
.inline-create{margin:1rem 0;border:1px dashed var(--line);border-radius:8px;padding:1rem}.inline-create>summary{cursor:pointer;color:var(--accent);font-weight:600}.inline-content-form{max-width:800px;margin:1rem 0 0}.inline-content-form details{margin:1rem 0}.inline-content-form details>summary{cursor:pointer;color:var(--muted)}.inline-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.inline-content-form .head-actions{margin-top:1rem}.course-category:target,.program-card:target,.lesson-card:target,.inline-create:target{outline:2px solid var(--accent);outline-offset:4px;scroll-margin-top:2rem}@media(max-width:600px){.inline-form-grid{grid-template-columns:1fr}}
.course-category>summary::after,.program-card>summary::after{content:'−';color:var(--muted);margin-left:.75rem}.course-category:not([open])>summary::after,.program-card:not([open])>summary::after{content:'+'}.program-card>summary{align-items:center;gap:1rem}.program-card>summary>span:first-child{flex:1}
.course-category>summary::after,.program-card>summary::after{content:'−';color:var(--muted);margin-left:.75rem}.course-category:not([open])>summary::after,.program-card:not([open])>summary::after{content:'+'}.program-card>summary{align-items:center;gap:1rem}.program-card>summary>span:first-child{flex:1}
.course-category>summary::after,.program-card>summary::after{content:'−';color:var(--muted);margin-left:.75rem}.course-category:not([open])>summary::after,.program-card:not([open])>summary::after{content:'+'}.program-card>summary{align-items:center;gap:1rem}.program-card>summary>span:first-child{flex:1}
.type-badge{color:#a8c7ff;letter-spacing:.06em;font-size:.7rem}.student-welcome{padding:2rem 0}.student-welcome h1{font-size:clamp(1.8rem,4vw,3rem);margin:.5rem 0}.access-pill{display:inline-block;padding:.6rem 1rem;border:1px solid var(--line);border-radius:30px;color:var(--muted);font-size:.85rem}
.lesson-accordion{margin:1rem 0;border:1px solid var(--line);border-radius:12px;background:var(--bg-elevated);overflow:hidden}.lesson-accordion>summary{cursor:pointer;display:flex;align-items:center;gap:1rem;padding:1.3rem}.lesson-heading{flex:1;display:grid;gap:.35rem}.lesson-heading strong{font-size:1.08rem}.lesson-heading .muted{font-size:.8rem}.lesson-expanded{padding:0 1.2rem 1.2rem}.resource-card{display:flex;align-items:center;gap:1.2rem;border:1px solid var(--line);border-radius:8px;padding:1rem;margin:1rem 0}.resource-card h3{margin:0 0 .5rem}
@media(max-width:700px){.journey{grid-template-columns:1fr 1fr}.course-category>summary{flex-wrap:wrap}.admin-topnav{gap:.7rem;flex-wrap:wrap}.lesson-accordion>summary{padding:1rem}.lesson-expanded{padding:0 .7rem .7rem}}
/* Enrollment review: compact tables, accessible confirmation, no-JS fallback. */
.registration-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.table-scroll{overflow-x:auto}.approval-year>summary{cursor:pointer;padding:.6rem;font-weight:700}
.delete-dialog{max-width:36rem;background:#111827;color:#e5e7eb;border:1px solid #64748b;border-radius:.5rem;padding:1.5rem}
.delete-dialog::backdrop{background:#000b}.delete-dialog form{display:inline-block;margin:.4rem}
