  :root{
    --ink:#16324F; --steel:#5C6B7A; --paper:#F5F7F9; --card:#FFFFFF;
    --line:#D9E0E6; --signal:#E4572E; --cleared:#1E7F5C; --locked:#AEB9C2;
    --admin:#7A3FA8; --radius:10px;
    --font-display:'Archivo',sans-serif; --font-body:'Public Sans',sans-serif;
    --font-mono:'IBM Plex Mono',monospace;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{transition:none!important;animation:none!important} }
  body{font-family:var(--font-body);background:var(--paper);color:var(--ink);line-height:1.6}
  button{font-family:inherit;cursor:pointer}
  :focus-visible{outline:3px solid var(--signal);outline-offset:2px}

  .layout{display:grid;grid-template-columns:300px 1fr;min-height:100vh}

  /* ---------- Sidebar ---------- */
  .sidebar{background:var(--ink);color:#E8EEF3;padding:28px 22px;position:sticky;top:0;height:100vh;overflow-y:auto}
  .sidebar .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8FA7BC}
  .sidebar h1{font-family:var(--font-display);font-weight:800;font-size:24px;line-height:1.15;margin:6px 0 4px}
  .sidebar .appname{font-size:13px;color:#B7C6D3;margin-bottom:16px}
  .trackswitch{display:flex;margin:0 0 16px;border:1px solid #33608A;border-radius:8px;overflow:hidden}
  .trackswitch button{flex:1;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:8px 6px;border:0;background:transparent;color:#B7C6D3;cursor:pointer}
  .trackswitch button:hover{background:#1E3F5F}
  .trackswitch button.active{background:var(--signal);color:#fff}
  .trackswitch button + button{border-left:1px solid #33608A}
  .langswitch{display:flex;gap:6px;margin-bottom:20px}
  .langswitch button{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;padding:5px 10px;border-radius:6px;border:1px solid #33608A;background:transparent;color:#B7C6D3}
  .langswitch button:hover{background:#1E3F5F}
  .langswitch button.active{background:var(--signal);border-color:var(--signal);color:#fff}
  .progressbar{height:6px;background:#0F2438;border-radius:3px;overflow:hidden;margin-bottom:8px}
  .progressbar > div{height:100%;width:0%;background:var(--signal);transition:width .4s ease}
  .progresslabel{font-family:var(--font-mono);font-size:11px;color:#8FA7BC;margin-bottom:24px}
  .chapterlist{list-style:none;display:flex;flex-direction:column;gap:6px}
  .chapterlist button{width:100%;display:flex;align-items:center;gap:10px;text-align:left;background:transparent;border:1px solid transparent;border-radius:8px;padding:10px 10px;color:#DCE6EE}
  .chapterlist button:hover:not(:disabled){background:#1E3F5F}
  .chapterlist button.active{background:#234968;border-color:#33608A}
  .chapterlist button:disabled{color:var(--locked);cursor:not-allowed}
  .ch-code{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;min-width:46px;color:#8FA7BC}
  .chapterlist button.active .ch-code{color:var(--signal)}
  .ch-title{flex:1;font-size:13.5px;font-weight:500}
  .ch-status{font-size:14px;min-width:18px;text-align:center}
  .ch-status.cleared{color:#5FCB9F}
  .instructor{margin-top:26px;padding-top:18px;border-top:1px solid #29486A}
  .instructor label{display:flex;align-items:center;gap:9px;font-size:12.5px;color:#B7C6D3;cursor:pointer}
  .instructor input{accent-color:var(--signal);width:15px;height:15px}
  .instructor small{display:block;margin-top:6px;font-size:11px;color:#7E93A6;line-height:1.45}
  .adminlink{margin-top:14px;background:none;border:none;color:#7E93A6;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-decoration:underline;padding:0}
  .adminlink:hover{color:#B7C6D3}
  .adminlink.on{color:#CE9BF0}

  /* ---------- Main ---------- */
  .main{padding:44px 56px 90px;max-width:860px}
  .crumb{font-family:var(--font-mono);font-size:12px;color:var(--steel);letter-spacing:.08em;display:flex;align-items:center;gap:10px}
  .crumb .code{color:var(--signal);font-weight:500}
  .crumb .mins{margin-left:auto}
  .main h2{font-family:var(--font-display);font-weight:800;font-size:38px;line-height:1.1;margin:10px 0 6px;letter-spacing:-.01em}
  .main .lede{font-size:16.5px;color:var(--steel);max-width:60ch;margin-top:16px;margin-bottom:34px}
  .stamp{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.12em;color:var(--cleared);border:2px solid var(--cleared);border-radius:6px;padding:4px 12px;transform:rotate(-2deg);margin:14px 0 0;user-select:none}

  .section{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;margin-bottom:18px}
  .section h3{font-family:var(--font-display);font-weight:700;font-size:19px;margin-bottom:10px}
  .section p,.section .body{color:#33475B;font-size:15px}
  .section .body div{margin-top:12px}   /* pasted <div> paragraphs get paragraph spacing */
  .steps{list-style:none;counter-reset:step;display:flex;flex-direction:column;gap:14px;margin-top:14px}
  .steps li{counter-increment:step;display:flex;gap:14px;font-size:15px;color:#33475B}
  .steps li::before{content:counter(step,decimal-leading-zero);font-family:var(--font-mono);font-size:12px;color:var(--signal);border:1px solid var(--line);border-radius:6px;min-width:34px;height:34px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .steps li strong{color:var(--ink)}
  .media{border:2px dashed #B9C6D0;border-radius:var(--radius);background:#EDF1F5;padding:34px 24px;text-align:center;margin-bottom:18px}
  .media.hasmedia{border-style:solid;background:var(--card);border:1px solid var(--line);padding:14px}
  .media .kind{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--signal);margin-bottom:8px}
  .media .cap{font-size:14px;color:var(--steel);max-width:52ch;margin:0 auto}
  .media img{max-width:100%;border-radius:6px;display:block;margin:0 auto 10px}
  .videowrap{position:relative;padding-top:56.25%;border-radius:6px;overflow:hidden;margin-bottom:10px;background:#000}
  .videowrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
  .callout{border-radius:var(--radius);padding:16px 20px;font-size:14.5px;margin-bottom:18px;display:flex;gap:12px;align-items:flex-start}
  .callout .tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;font-weight:500;padding:2px 8px;border-radius:4px;flex-shrink:0;margin-top:2px}
  .callout.warn{background:#FCEDE7;color:#7A2E12}
  .callout.warn .tag{background:#F5C6B3;color:#7A2E12}
  .callout.tip{background:#E9F3EE;color:#174D3A}
  .callout.tip .tag{background:#BFE3D2;color:#174D3A}

  /* ---------- Quiz ---------- */
  .quiz{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--signal);border-radius:var(--radius);padding:26px 28px;margin-top:30px}
  .quiz h3{font-family:var(--font-display);font-weight:700;font-size:19px}
  .quiz .sub{font-size:13.5px;color:var(--steel);margin:4px 0 20px}
  .q{margin-bottom:20px}
  .q p{font-weight:600;font-size:15px;margin-bottom:10px}
  .q label{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border:1px solid var(--line);border-radius:8px;margin-bottom:7px;font-size:14.5px;color:#33475B;cursor:pointer;transition:border-color .15s}
  .q label:hover{border-color:var(--steel)}
  .q input{accent-color:var(--signal);margin-top:3px}
  .q.correct label.picked{border-color:var(--cleared);background:#EDF7F2}
  .q.wrong label.picked{border-color:#C0392B;background:#FBEDEB}
  .quiz .actions{display:flex;align-items:center;gap:16px;margin-top:6px}
  .btn{background:var(--signal);color:#fff;border:none;border-radius:8px;padding:11px 22px;font-size:14.5px;font-weight:600}
  .btn:hover{background:#C94A24}
  .btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
  .btn.ghost:hover{border-color:var(--steel)}
  .btn:disabled{opacity:.45;cursor:not-allowed}
  .quiz .result{font-family:var(--font-mono);font-size:13px}
  .quiz .result.pass{color:var(--cleared)}
  .quiz .result.fail{color:#C0392B}
  .pager{display:flex;justify-content:space-between;margin-top:34px;gap:12px}

  /* ---------- Certificate ---------- */
  .cert{background:var(--card);border:2px solid var(--ink);border-radius:var(--radius);padding:44px 40px;text-align:center}
  .cert .eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;color:var(--signal);text-transform:uppercase}
  .cert h3{font-family:var(--font-display);font-weight:800;font-size:30px;margin:10px 0 8px}
  .cert p{color:var(--steel);max-width:48ch;margin:0 auto 18px}
  .cert .biglist{list-style:none;display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
  .cert .biglist li{font-family:var(--font-mono);font-size:12px;border:1.5px solid var(--cleared);color:var(--cleared);border-radius:6px;padding:5px 12px}

  /* ---------- Admin mode ---------- */
  body.admin .main{padding-top:0}
  .adminbar{position:sticky;top:0;z-index:20;background:#2E1247;color:#E9DCF5;border-radius:0 0 var(--radius) var(--radius);padding:12px 18px;margin:0 0 30px;display:flex;flex-direction:column;gap:8px;box-shadow:0 4px 14px rgba(46,18,71,.25)}
  .adminbar .row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
  .adminbar .who{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;margin-right:6px}
  .adminbar .abtn{background:#4B2670;border:1px solid #6C3BA0;color:#E9DCF5;border-radius:7px;padding:7px 12px;font-size:12.5px;font-weight:600}
  .adminbar .abtn:hover{background:#5B2F88}
  .adminbar .abtn.save{background:var(--signal);border-color:var(--signal);color:#fff}
  .adminbar details.hint{font-size:11.5px;color:#C9AEE6}
  .adminbar details.hint summary{cursor:pointer;font-weight:600;list-style:none;user-select:none;display:inline-flex;align-items:center;gap:6px;padding:2px 0}
  .adminbar details.hint summary::-webkit-details-marker{display:none}
  .adminbar details.hint summary::before{content:"▸";display:inline-block;transition:transform .15s ease}
  .adminbar details.hint[open] summary::before{transform:rotate(90deg)}
  .adminbar details.hint summary:hover{color:#E9DCF5}
  .adminbar details.hint > div{margin-top:6px;line-height:1.55;max-width:900px}
  .adminbar .dirty{font-family:var(--font-mono);font-size:11px;color:#FFC9B5}
  .adminbar .tlangs{display:flex;gap:8px;align-items:center;font-size:12px;color:#E9DCF5;padding:0 4px;border-left:1px solid #6C3BA0;margin-left:6px}
  .adminbar .tlangs label{display:flex;gap:4px;align-items:center;cursor:pointer;font-weight:600}
  .adminbar .abtn[disabled]{opacity:.5;cursor:wait}
  .adminbar .tstatus{font-family:var(--font-mono);font-size:11px;color:#C9AEE6;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .secwrap.justadded{outline:2px solid var(--signal);outline-offset:6px;border-radius:8px;animation:flashadd 1.5s ease}
  @keyframes flashadd{0%{background:rgba(255,122,69,.20)}100%{background:transparent}}

  .secwrap{position:relative}
  body.admin .secwrap{border:1px dashed transparent;border-radius:var(--radius)}
  body.admin .secwrap:hover{border-color:var(--admin)}
  .sechandle{display:none;position:absolute;top:6px;right:8px;z-index:5;gap:4px}
  body.admin .secwrap:hover .sechandle{display:flex}
  .sechandle button{background:#fff;border:1px solid var(--line);border-radius:6px;width:28px;height:28px;font-size:13px;color:var(--steel);line-height:1}
  .sechandle button:hover{border-color:var(--admin);color:var(--admin)}
  .sechandle .grab{cursor:grab}
  .secwrap.dragging{opacity:.4}
  .secwrap.dropbefore{box-shadow:0 -3px 0 0 var(--admin)}
  body.admin .steps li .stepdel{margin-left:auto;align-self:center;flex-shrink:0;background:#fff;border:1px solid var(--line);border-radius:6px;width:24px;height:24px;font-size:12px;color:var(--steel);line-height:1;opacity:0;transition:opacity .15s;cursor:pointer}
  body.admin .steps li:hover .stepdel{opacity:.7}
  body.admin .steps li .stepdel:hover{opacity:1;border-color:var(--admin);color:var(--admin)}
  .addstep{margin-top:12px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;padding:6px 12px;border:1px dashed var(--line);background:transparent;color:var(--steel);border-radius:6px;cursor:pointer}
  .addstep:hover{border-style:solid;border-color:var(--admin);color:var(--admin)}
  #chapterList button.dropinto{outline:2px dashed var(--admin);outline-offset:-2px}
  [contenteditable="true"]{outline:none;border-radius:4px}
  [contenteditable="true"]:hover{background:#F6F0FB}
  [contenteditable="true"]:focus{background:#F6F0FB;box-shadow:0 0 0 2px #D9BCF0}
  body.dropactive::after{content:"Drop to add to this chapter";position:fixed;inset:0;background:rgba(46,18,71,.55);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:26px;z-index:100;pointer-events:none;border:6px dashed #CE9BF0}

  /* ---------- Mobile nav drawer + responsive polish ---------- */
  .navtoggle{display:none}
  .navscrim{display:none}
  @media (max-width: 900px){
    .layout{grid-template-columns:1fr}
    .main{padding:66px 20px 74px}
    .main h2{font-size:30px}
    /* the sidebar becomes an off-canvas drawer */
    .sidebar{position:fixed;top:0;left:0;height:100vh;width:min(86vw,320px);transform:translateX(-100%);transition:transform .28s ease;z-index:55;box-shadow:0 0 34px rgba(9,22,36,.42)}
    body.nav-open .sidebar{transform:translateX(0)}
    .navtoggle{display:inline-flex;align-items:center;justify-content:center;position:fixed;top:12px;left:12px;z-index:60;width:46px;height:46px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:20px;line-height:1;box-shadow:0 2px 12px rgba(22,50,79,.2);cursor:pointer}
    .navtoggle:hover{border-color:var(--admin)}
    body.nav-open .navtoggle{display:none}
    .navscrim{position:fixed;inset:0;background:rgba(9,22,36,.5);z-index:50;border:0}
    body.nav-open .navscrim{display:block}
  }
  @media (max-width: 560px){
    .main{padding:62px 16px 60px}
    .main h2{font-size:25px}
    .main .lede{font-size:15.5px}
    .cert{padding:30px 20px}
    .adminbar{padding:10px 12px}
    .adminbar .abtn{padding:8px 11px}
  }
  /* touch devices: hover-only admin controls can't be hovered — reveal them and enlarge tap targets */
  @media (pointer: coarse){
    body.admin .secwrap .sechandle{display:flex}
    .sechandle button{width:34px;height:34px}
    body.admin .steps li .stepdel{opacity:.65;width:32px;height:32px}
  }
