  :root{
    --bg:#080C14;
    --panel:#0F1623;
    --panel-head:#161E2E;
    --border:#1E2D42;
    --border-2:#253550;
    --text:#E2EAF4;
    --text-dim:#94A3B8;
    --text-dimmer:#64748B;
    --cyan:#00D4FF;
    --purple:#A78BFA;
    --green:#4ADE80;
    --amber:#FBBF24;
    --red:#F87171;
  }
  *{box-sizing:border-box;}
  .visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--bg); color:var(--text);
    font-family:'Karla',sans-serif;
    line-height:1.5;
  }
  code, .mono, .badge, .brand, .marks-badge, .part-label, .stat-num, .timer, .chapnum {
    font-family:'Fira Code',monospace;
  }

  /* ---- header / nav ---- */
  header.site{
    background:var(--panel-head); border-bottom:1px solid var(--border);
    padding:0 24px; display:flex; align-items:center; justify-content:space-between;
    height:60px; position:sticky; top:0; z-index:20;
  }
  .brand{color:var(--cyan); font-weight:600; font-size:16px; text-decoration:none; display:flex; align-items:center; gap:8px;}
  .brand .tag{color:var(--text-dim);}
  nav.sitenav{display:flex; gap:26px; font-size:14px; color:var(--text-dim);}
  nav.sitenav a{color:var(--text-dim); text-decoration:none;}
  nav.sitenav a.current{color:var(--cyan);}
  nav.sitenav a:hover{color:var(--text);}
  @media(max-width:860px){nav.sitenav{display:none;}}

  main{max-width:900px; margin:0 auto; padding:36px 20px 100px;}

  .hero{margin-bottom:28px;}
  .eyebrow{font-family:'Fira Code',monospace; font-size:12px; color:var(--purple); letter-spacing:.5px; margin-bottom:8px;}
  .eyebrow:before{content:"// ";color:var(--text-dimmer);}
  h1{font-size:28px; margin:0 0 8px; font-weight:800; color:#fff;}
  .sub{color:var(--text-dim); font-size:14.5px; max-width:640px; margin:0 0 18px;}
  .statrow{display:flex; gap:22px; flex-wrap:wrap;}
  .stat{font-size:13px; color:var(--text-dim);}
  .stat .stat-num{color:var(--green); font-weight:600; font-size:14px;}

  /* ---- cards ---- */
  .panel{
    background:var(--panel); border:1px solid var(--border); border-radius:12px;
    margin-bottom:20px; overflow:hidden;
  }
  .panel-head{
    padding:14px 20px; background:var(--panel-head); border-bottom:1px solid var(--border);
    font-size:13px; color:var(--text-dim); display:flex; justify-content:space-between; align-items:center;
  }
  .panel-head b{color:var(--text); font-weight:600;}
  .panel-body{padding:20px;}

  /* ---- chapter picker ---- */
  .chapgroup-title{font-size:11px; color:var(--text-dimmer); text-transform:uppercase; letter-spacing:.5px; margin:16px 0 8px;}
  .chapgroup-title:first-child{margin-top:0;}
  .chapgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:8px;}
  .chip{
    display:flex; align-items:center; gap:10px; border:1px solid var(--border);
    background:var(--bg); border-radius:8px; padding:10px 12px; cursor:pointer; user-select:none;
    transition:border-color .15s, background .15s;
  }
  .chip:hover{border-color:var(--border-2);}
  .chip.active{border-color:var(--cyan); background:rgba(0,212,255,0.07);}
  .chip input{accent-color:var(--cyan);}
  .chapnum{color:var(--purple); font-size:12px; min-width:34px;}
  .chip .name{font-size:13.5px; flex:1;}
  .chip .count{font-family:'Fira Code',monospace; font-size:11px; color:var(--text-dimmer);}
  .chip.disabled{opacity:.35; cursor:not-allowed;}
  .selectrow{display:flex; gap:14px; margin-top:14px; font-size:12.5px;}
  .selectrow button{border:0;background:transparent;color:var(--cyan);padding:0;font:inherit;cursor:pointer;}
  .selectrow button:hover,.selectrow button:focus-visible{text-decoration:underline;}

  .hint{color:var(--text-dimmer); font-size:12px; margin-top:10px;}
  .pace-note{padding:14px 16px;border:1px solid rgba(0,212,255,.28);border-radius:9px;background:rgba(0,212,255,.07);color:var(--text-dim);font-size:12px;line-height:1.55}.pace-note strong{display:block;color:var(--cyan);margin-bottom:3px}
  .privacy-note{margin:14px 0;padding:14px 16px;border:1px solid rgba(251,191,36,.3);border-radius:9px;background:rgba(251,191,36,.07);color:var(--text-dim);font-size:12px;line-height:1.55}.privacy-note strong{display:block;color:var(--amber);margin-bottom:3px}.privacy-note a{color:var(--cyan)}
  .countrow{display:flex;flex-wrap:wrap;gap:9px;}
  .countbtn{min-width:46px;border:1px solid var(--border);background:var(--bg);color:var(--text-dim);border-radius:8px;padding:10px 14px;font:600 13px 'Fira Code',monospace;cursor:pointer}
  .countbtn.active{background:var(--purple);border-color:var(--purple);color:#090d15}
  .topic-scope{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:20px;padding:15px 17px;border:1px solid rgba(167,139,250,.35);border-radius:10px;background:rgba(167,139,250,.08)}
  .topic-scope strong{display:block;color:var(--text);font-size:14px}.topic-scope span{color:var(--text-dim);font-size:12px}.topic-scope a{color:var(--cyan);font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap}

  .startbtn{
    background:var(--cyan); color:#04202b; border:none; border-radius:9px;
    padding:14px 26px; font-size:14.5px; font-weight:700; cursor:pointer; width:100%;
    font-family:'Karla',sans-serif;
  }
  .startbtn:disabled{background:var(--border-2); color:var(--text-dimmer); cursor:not-allowed;}

  /* ---- test run ---- */
  .topbar{
    position:sticky; top:60px; z-index:15; background:var(--panel-head); border-bottom:1px solid var(--border);
    margin:0 0 20px; padding:12px 20px; display:flex; justify-content:space-between; align-items:center;
    border-radius:0 0 10px 10px;
  }
  .topbar .meta{font-size:13px; color:var(--text-dim);}
  .timer{display:grid;text-align:right;font-size:18px;font-weight:600;color:var(--amber)}.timer small{color:var(--text-dimmer);font:10px 'Karla',sans-serif}

  .q-card{border-left:3px solid var(--cyan);}
  .q-card-head{display:flex; justify-content:space-between; align-items:center; gap:10px;}
  .q-badge{font-size:11.5px; color:var(--cyan); background:rgba(0,212,255,0.08); padding:3px 9px; border-radius:5px; border:1px solid rgba(0,212,255,0.2);}
  .marks-badge{background:rgba(167,139,250,0.1); border:1px solid rgba(167,139,250,0.25); padding:2px 8px; border-radius:4px; font-size:11px; color:var(--purple);}
  .stem{font-size:14.5px; color:var(--text); font-style:italic; margin-bottom:4px; padding-bottom:14px; border-bottom:1px dashed var(--border);}
  .diagram-note{font-size:12px; color:var(--amber); margin-bottom:10px;}
  .part{margin-top:16px;}
  .part-label{color:var(--purple); font-size:12.5px; margin-right:8px;}
  .part-text{font-size:14px; color:var(--text); line-height:1.65;}
  .part-marks{color:var(--text-dimmer); font-size:12px; margin-left:6px;}
  .answer-box{
    width:100%; background:var(--bg); border:1px solid var(--border-2); border-radius:7px;
    color:var(--text); font-family:'Karla',sans-serif; font-size:13.5px; padding:10px 12px;
    resize:vertical; min-height:64px; margin-top:8px;
  }
  .answer-box:focus{outline:none; border-color:var(--cyan); box-shadow:0 0 0 2px rgba(0,212,255,0.12);}
  .opts{display:flex; flex-direction:column; gap:7px; margin:9px 0 0; padding:0; border:0; min-width:0;}
  .opt{display:flex; gap:9px; align-items:flex-start; font-size:13.5px; cursor:pointer;}
  .opt input{accent-color:var(--cyan); margin-top:3px;}

  .submitbar{position:sticky; bottom:0; background:var(--panel-head); border-top:1px solid var(--border); padding:16px 20px; margin-top:22px; border-radius:10px 10px 0 0; text-align:right;}

  /* ---- results ---- */
  .score-hero{text-align:center; padding:30px 20px;}
  .score-num{font-size:52px; font-weight:800; color:var(--green); font-family:'Fira Code',monospace;}
  .score-of{color:var(--text-dimmer); font-size:18px;}
  .score-label{color:var(--text-dim); font-size:13px; margin-top:6px;}
  .pace-result{max-width:650px;margin:20px auto 0;padding:15px 17px;border:1px solid var(--border-2);border-left:4px solid var(--green);border-radius:10px;background:var(--bg);text-align:left}.pace-result.slow{border-left-color:var(--red)}.pace-result.fast{border-left-color:var(--amber)}.pace-result strong{display:block;margin-bottom:4px;color:var(--text);font-size:14px}.pace-result p{margin:0;color:var(--text-dim);font-size:12px;line-height:1.55}

  .student-ans{background:rgba(251,191,36,0.06); border:1px solid rgba(251,191,36,0.25); border-radius:7px; padding:9px 11px; font-size:13px; margin:8px 0;}
  .student-ans b{color:var(--amber); font-weight:600;}
  .ms-box{background:var(--bg); border:1px solid var(--border-2); border-radius:8px; padding:12px 14px; margin-top:8px;}
  .ms-title{font-size:11px; color:var(--text-dimmer); text-transform:uppercase; letter-spacing:.4px; margin-bottom:8px; display:flex; justify-content:space-between;}
  .ms-title .awarded{color:var(--green); font-family:'Fira Code',monospace;}
  .tickline{display:flex; gap:7px; font-size:12.5px; margin:4px 0; align-items:flex-start;}
  .tickline.hit{color:var(--green);}
  .tickline.miss{color:var(--text-dimmer);}
  .source-scheme{margin:10px 0 0;padding:0 0 0 20px;color:var(--text);font-size:13px;}
  .source-scheme li{margin:6px 0;line-height:1.55;}
  .self-mark-box{margin-top:14px;padding:13px 14px;border:1px solid rgba(74,222,128,.3);border-radius:8px;background:rgba(74,222,128,.07);}
  .self-mark-box label{display:flex;flex-wrap:wrap;align-items:center;gap:9px;color:var(--text);font-size:13px;font-weight:700;}
  .self-mark-box select{min-width:74px;border:1px solid var(--border-2);border-radius:7px;background:var(--panel-head);color:var(--text);padding:8px 10px;font:600 13px 'Fira Code',monospace;}
  .self-mark-box select:focus{outline:2px solid var(--cyan);outline-offset:2px;}
  .self-mark-help{margin:7px 0 0;color:var(--text-dim);font-size:12px;}
  .self-mark-complete{color:var(--green);font-weight:700;}
  .save-note{margin:12px 0 0;color:var(--text-dim);font-size:12px;}

  .restartbtn{background:transparent; color:var(--cyan); border:1px solid var(--border-2); border-radius:8px; padding:10px 20px; font-size:13.5px; cursor:pointer; font-family:'Karla',sans-serif;}

  .hidden{display:none !important;}
  #test-result-heading:focus{outline:2px solid var(--cyan);outline-offset:5px;border-radius:4px;}
  .plan-notice{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:0 0 14px;padding:13px 15px;border:1px solid rgba(167,139,250,.35);border-radius:9px;background:rgba(167,139,250,.08);color:var(--text-dim);font-size:12px;}
  .plan-notice strong{display:block;color:var(--purple);font-size:11px;text-transform:uppercase;letter-spacing:.06em;}
  .plan-notice a{color:var(--cyan);font-weight:700;white-space:nowrap;text-decoration:none;}
  ::selection{background:rgba(0,212,255,0.3);}
