/* ============================================================
   CA Structural Pest Control — practice exam platform
   Shared stylesheet for index.html and exam.html
   ============================================================ */
:root{
  --ink:#211d17; --ink-2:#2a251d; --ink-3:#332c22;
  --paper:#f2ecdd; --paper-dim:#e5dcc4;
  --cream:#faf6ea;
  --amber:#e0a23d; --amber-ink:#5c410f;
  --moss:#8ca36a; --moss-ink:#37461f;
  --clay:#c17a45;
  --rust:#b25548; --rust-ink:#5a1f18;
  --wood:#a3814f;
  --line: rgba(242,236,221,.14);
  --line-strong: rgba(242,236,221,.30);
  --shadow: 0 14px 34px rgba(0,0,0,.38);
  --radius: 4px;
  --disp: 'Oswald', 'Arial Narrow', sans-serif;
  --body: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  --mono: 'IBM Plex Mono', 'Courier New', monospace;
  /* branch accents */
  --b1:#7f9fb5; --b2:#8ca36a; --b3:#c17a45; --ball:#b9a3c9;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:
    linear-gradient(180deg, rgba(255,255,255,.02), rgba(0,0,0,.08)),
    repeating-linear-gradient(0deg, transparent, transparent 27px, rgba(242,236,221,.035) 28px),
    var(--ink);
  color:var(--cream);
  font-family:var(--body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:820px;margin:0 auto;padding:28px 20px 80px;}
.wrap.wide{max-width:1000px;}
h1,h2,h3{font-family:var(--disp);font-weight:600;letter-spacing:.01em;margin:0;line-height:1.15;}
h1{font-size:clamp(30px,6vw,46px);}
h2{font-size:22px;}
h3{font-size:17px;}
a{color:var(--amber);}
button{font:inherit;color:inherit;cursor:pointer;}
button:focus-visible, .opt:focus-visible, a:focus-visible{outline:2px solid var(--amber);outline-offset:2px;}
.mono{font-family:var(--mono);}

/* ---------- masthead ---------- */
.mast{border-bottom:2px solid var(--line-strong);padding-bottom:14px;margin-bottom:26px;}
.mast p{margin:.5em 0 0;color:var(--paper-dim);max-width:62ch;}
.kicker{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
        color:var(--wood);margin:0 0 10px;}
.backlink{font-family:var(--mono);font-size:12px;text-decoration:none;display:inline-block;margin-bottom:14px;}
.backlink:hover{text-decoration:underline;}

.slip{margin:22px 0 26px;border:1px solid var(--line);border-left:3px solid var(--amber);
      background:var(--ink-2);}
.slip div{display:flex;justify-content:space-between;gap:16px;padding:9px 14px;
          border-bottom:1px solid var(--line);font-family:var(--mono);font-size:13px;}
.slip div:last-child{border-bottom:0;}
.slip span:first-child{color:var(--paper-dim);}
.slip span:last-child{color:var(--amber);font-weight:600;text-align:right;}

/* ---------- landing: exam catalog ---------- */
.lane{margin:0 0 34px;}
.lane > h2{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:8px;
           border-bottom:1px solid var(--line-strong);margin-bottom:4px;}
.lane > h2 small{font-family:var(--mono);font-size:11.5px;font-weight:400;color:var(--paper-dim);
                 letter-spacing:.04em;text-transform:uppercase;}
.lane p.laneNote{margin:10px 0 14px;color:var(--paper-dim);font-size:14.5px;max-width:66ch;}
.cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));}
.card{display:block;text-decoration:none;color:inherit;background:var(--ink-2);
      border:1px solid var(--line-strong);border-left:3px solid var(--wood);
      border-radius:var(--radius);padding:16px 18px;transition:border-color .12s,background .12s,transform .12s;}
.card:hover{background:var(--ink-3);border-color:var(--amber);border-left-color:var(--amber);transform:translateY(-1px);}
.card[data-branch="1"]{border-left-color:var(--b1);}
.card[data-branch="2"]{border-left-color:var(--b2);}
.card[data-branch="3"]{border-left-color:var(--b3);}
.card[data-branch="all"]{border-left-color:var(--ball);}
.card h3{color:var(--amber);margin-bottom:2px;}
.card .sub{font-family:var(--mono);font-size:11.5px;color:var(--moss);display:block;margin-bottom:8px;}
.card p{margin:0;color:var(--paper-dim);font-size:14.5px;line-height:1.5;}
.card .meta{display:block;margin-top:10px;font-family:var(--mono);font-size:11.5px;color:var(--wood);}
.card .count{color:var(--paper-dim);}

/* ---------- mode cards ---------- */
.modes{display:grid;gap:12px;margin:8px 0 24px;}
.mode{display:block;width:100%;text-align:left;background:var(--ink-2);border:1px solid var(--line-strong);
      border-radius:var(--radius);padding:16px 18px;transition:border-color .12s,background .12s;}
.mode:hover{border-color:var(--amber);background:var(--ink-3);}
.mode[disabled]{opacity:.4;cursor:not-allowed;}
.mode h3{color:var(--amber);}
.mode p{margin:.35em 0 0;color:var(--paper-dim);font-size:14.5px;}
.mode .tag{font-family:var(--mono);font-size:11.5px;color:var(--moss);display:block;margin-top:6px;}

.secpick{display:none;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin:0 0 24px;}
.secpick.on{display:grid;}
.secpick button{background:var(--ink-3);border:1px solid var(--line-strong);border-radius:var(--radius);
                padding:11px 12px;text-align:left;font-size:14px;}
.secpick button:hover{border-color:var(--moss);}
.secpick b{display:block;font-family:var(--disp);font-weight:600;line-height:1.2;}
.secpick i{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--paper-dim);}

.prefs{border-top:1px solid var(--line);padding-top:16px;margin-top:4px;}
.prefs label{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:14.5px;color:var(--paper-dim);cursor:pointer;}
.prefs input{margin-top:5px;accent-color:var(--amber);}

/* ---------- book map ---------- */
.bookmap{margin:26px 0 0;border-top:1px solid var(--line);padding-top:18px;}
.bookmap > p{color:var(--paper-dim);font-size:14.5px;margin:0 0 14px;max-width:66ch;}
.bm{border:1px solid var(--line);border-left:3px solid var(--clay);background:var(--ink-2);
    border-radius:var(--radius);padding:12px 15px;margin-bottom:10px;}
.bm h3{font-size:15px;color:var(--clay);margin-bottom:6px;}
.bm ul{margin:0;padding-left:18px;}
.bm li{font-size:14px;color:var(--paper-dim);margin-bottom:5px;line-height:1.45;}
.bm li b{color:var(--cream);font-weight:600;}
.bm li .pg{font-family:var(--mono);font-size:12px;color:var(--wood);}
.swatch{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;}
.swatch.blue{background:#5b7fa6;} .swatch.green{background:#6f8f4a;} .swatch.red{background:#a8483a;}

/* ---------- exam bar ---------- */
.bar{position:sticky;top:0;z-index:20;background:var(--ink);border-bottom:1px solid var(--line-strong);
     margin:-28px -20px 20px;padding:12px 20px 10px;}
.barrow{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:13px;}
.clock{font-size:21px;font-weight:600;color:var(--amber);letter-spacing:.02em;}
.clock.warn{color:var(--rust);}
.pace{color:var(--moss);}
.pace.behind{color:var(--rust);}
.barrow .spacer{flex:1;}
.rail{height:4px;background:var(--ink-3);margin-top:10px;border-radius:2px;overflow:hidden;}
.rail i{display:block;height:100%;background:var(--amber);width:0;transition:width .2s;}

/* ---------- question ---------- */
.qhead{display:flex;justify-content:space-between;gap:12px;font-family:var(--mono);font-size:12px;
       color:var(--paper-dim);margin-bottom:10px;}
.qhead .k{color:var(--wood);flex:0 0 auto;}
.stem{font-size:19px;line-height:1.5;margin:0 0 20px;}
.opts{display:grid;gap:9px;margin-bottom:22px;}
.opt{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;background:var(--ink-2);
     border:1px solid var(--line-strong);border-radius:var(--radius);padding:13px 15px;
     transition:border-color .12s,background .12s;font-size:16px;line-height:1.45;}
.opt:hover{border-color:var(--wood);}
.opt .ltr{font-family:var(--mono);font-size:13px;color:var(--paper-dim);flex:0 0 auto;padding-top:2px;}
.opt.sel{border-color:var(--amber);background:var(--ink-3);}
.opt.sel .ltr{color:var(--amber);}
.opt.right{border-color:var(--moss);background:rgba(140,163,106,.13);}
.opt.right .ltr{color:var(--moss);}
.opt.wrong{border-color:var(--rust);background:rgba(178,85,72,.13);}
.opt.wrong .ltr{color:var(--rust);}

.why{border-left:3px solid var(--moss);background:var(--ink-2);padding:13px 16px;margin:0 0 22px;
     font-size:15px;}
.why.no{border-left-color:var(--rust);}
.why b{font-family:var(--disp);font-weight:600;display:block;margin-bottom:4px;}
.why .src{display:block;margin-top:8px;font-family:var(--mono);font-size:11.5px;color:var(--wood);}

.acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center;
      border-top:1px solid var(--line);padding-top:16px;}
.btn{background:var(--ink-3);border:1px solid var(--line-strong);border-radius:var(--radius);padding:10px 16px;
     font-family:var(--disp);font-weight:600;font-size:15px;letter-spacing:.02em;}
.btn:hover{border-color:var(--amber);}
.btn.go{background:var(--amber);color:var(--amber-ink);border-color:var(--amber);}
.btn.go:hover{background:#ecb45f;}
.btn.on{border-color:var(--amber);color:var(--amber);}
.btn.small{padding:7px 12px;font-size:13px;}
.acts .spacer{flex:1;}

/* ---------- navigator ---------- */
.nav{display:none;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:6px;margin-top:18px;
     border-top:1px solid var(--line);padding-top:16px;}
.nav.on{display:grid;}
.nav button{font-family:var(--mono);font-size:12px;padding:7px 0;background:var(--ink-2);
            border:1px solid var(--line);border-radius:3px;}
.nav button.done{border-color:var(--line-strong);color:var(--amber);}
.nav button.flag{border-color:var(--clay);color:var(--clay);}
.nav button.now{background:var(--amber);color:var(--amber-ink);border-color:var(--amber);font-weight:700;}

/* ---------- results ---------- */
.score{text-align:center;border:1px solid var(--line-strong);border-top:4px solid var(--amber);
       background:var(--ink-2);padding:26px 20px;margin-bottom:24px;}
.score .pct{font-family:var(--disp);font-size:68px;line-height:1;font-weight:700;}
.score .verdict{font-family:var(--disp);font-size:21px;letter-spacing:.06em;margin-top:8px;}
.pass{color:var(--moss);} .fail{color:var(--rust);}
.score .sub{font-family:var(--mono);font-size:13px;color:var(--paper-dim);margin-top:10px;}
.bars{margin:0 0 24px;}
.bars .b{margin-bottom:12px;}
.bars .lab{display:flex;justify-content:space-between;gap:12px;font-family:var(--mono);font-size:12.5px;margin-bottom:4px;}
.bars .lab span:last-child{flex:0 0 auto;}
.bars .track{height:9px;background:var(--ink-3);border-radius:2px;overflow:hidden;}
.bars .fill{height:100%;background:var(--moss);}
.bars .fill.low{background:var(--rust);}
.bars .fill.mid{background:var(--amber);}
.note{border:1px solid var(--line);border-left:3px solid var(--clay);background:var(--ink-2);
      padding:14px 16px;margin-bottom:24px;font-size:15px;}
.rev{border-top:1px solid var(--line);padding-top:18px;margin-top:8px;}
.rev .item{border-bottom:1px solid var(--line);padding:16px 0;}
.rev .q{font-size:16.5px;margin:0 0 10px;}
.rev .ans{font-family:var(--mono);font-size:13px;margin:3px 0;}
.rev .ans.yes{color:var(--moss);} .rev .ans.no{color:var(--rust);}
.rev .ex{font-size:14.5px;color:var(--paper-dim);margin-top:8px;}
.rev .src{font-family:var(--mono);font-size:11.5px;color:var(--wood);margin-top:6px;display:block;}
.filters{display:flex;gap:8px;margin-bottom:4px;flex-wrap:wrap;}

/* ---------- account bar ---------- */
#account{margin:0 0 18px;}
.acct{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
      border:1px solid var(--line);border-radius:var(--radius);background:var(--ink-2);
      padding:9px 13px;}
.acct-note{font-family:var(--mono);font-size:11.5px;color:var(--paper-dim);}
.acct-who{display:flex;align-items:center;gap:10px;min-width:0;}
.acct-who img{width:28px;height:28px;border-radius:50%;flex:0 0 auto;background:var(--ink-3);}
.acct-name{display:flex;flex-direction:column;line-height:1.25;min-width:0;}
.acct-name b{font-family:var(--disp);font-weight:600;font-size:14.5px;color:var(--cream);
             overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.acct-sync{font-family:var(--mono);font-size:11px;color:var(--moss);}
.acct-link{margin-left:auto;background:transparent;border:0;padding:4px 2px;
           font-family:var(--mono);font-size:11.5px;color:var(--amber);
           text-decoration:none;cursor:pointer;}
.acct-link + .acct-link{margin-left:0;}
.acct-link:hover{text-decoration:underline;}
.gbtn{display:inline-flex;align-items:center;gap:9px;background:#fff;color:#3c4043;
      border:1px solid #dadce0;border-radius:4px;padding:8px 14px;
      font-family:'Roboto',var(--disp),sans-serif;font-weight:600;font-size:13.5px;
      letter-spacing:.01em;}
.gbtn:hover{background:#f7f8f8;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.gbtn svg{flex:0 0 auto;}
@media (max-width:520px){
  .acct{padding:8px 10px;gap:9px;}
  .acct-link{margin-left:0;}
}

/* ---------- account / progress dashboard ---------- */
.tiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0 0 26px;}
.tile{border:1px solid var(--line-strong);border-top:3px solid var(--amber);background:var(--ink-2);
      border-radius:var(--radius);padding:14px 16px;}
.tile b{display:block;font-family:var(--disp);font-size:30px;line-height:1.1;color:var(--cream);}
.tile span{display:block;margin-top:4px;font-family:var(--mono);font-size:11.5px;color:var(--paper-dim);}
.prow{border:1px solid var(--line);border-left:3px solid var(--wood);background:var(--ink-2);
      border-radius:var(--radius);padding:13px 16px;margin-bottom:10px;}
.prow[data-branch="1"]{border-left-color:var(--b1);}
.prow[data-branch="2"]{border-left-color:var(--b2);}
.prow[data-branch="3"]{border-left-color:var(--b3);}
.prow[data-branch="all"]{border-left-color:var(--ball);}
.prow .top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;}
.prow .top a{font-family:var(--disp);font-weight:600;font-size:16.5px;text-decoration:none;color:var(--cream);}
.prow .top a:hover{color:var(--amber);}
.prow .score{font-family:var(--disp);font-size:22px;font-weight:700;flex:0 0 auto;}
.prow .meta{font-family:var(--mono);font-size:11.5px;color:var(--paper-dim);margin-top:6px;}
.prow .spark{display:flex;align-items:flex-end;gap:3px;height:34px;margin-top:10px;}
.prow .spark i{flex:1 1 0;min-width:3px;max-width:14px;background:var(--ink-3);border-radius:1px;
               display:block;position:relative;}
.prow .spark i.pass{background:var(--moss);}
.prow .spark i.fail{background:var(--rust);}
.prow .weak{margin-top:9px;font-size:13.5px;color:var(--paper-dim);}
.prow .weak b{color:var(--rust);font-weight:600;}
.empty{border:1px solid var(--line);border-left:3px solid var(--clay);background:var(--ink-2);
       padding:16px;border-radius:var(--radius);color:var(--paper-dim);font-size:15px;}

/* ---------- three-part tab bar ---------- */
.tabs{display:flex;gap:0;margin:0 0 26px;border-bottom:2px solid var(--line-strong);flex-wrap:wrap;}
.tabs button{background:transparent;border:0;border-bottom:3px solid transparent;
             padding:11px 16px 10px;font-family:var(--disp);font-weight:600;font-size:15px;
             letter-spacing:.02em;color:var(--paper-dim);margin-bottom:-2px;white-space:nowrap;}
.tabs button:hover{color:var(--cream);}
.tabs button.on{color:var(--amber);border-bottom-color:var(--amber);}
.tabs button .n{font-family:var(--mono);font-size:11px;color:var(--wood);margin-right:6px;}
@media (max-width:520px){ .tabs button{padding:10px 10px 9px;font-size:13.5px;} .tabs button .n{display:none;} }

/* ---------- understanding-the-exam panel ---------- */
.lede{font-size:17px;line-height:1.55;color:var(--cream);margin:0 0 18px;max-width:66ch;}
.prose{color:var(--paper-dim);font-size:15.5px;line-height:1.6;max-width:68ch;}
.prose p{margin:0 0 12px;}
.prose b{color:var(--cream);}
.blk{margin:0 0 30px;}
.blk > h2{padding-bottom:8px;border-bottom:1px solid var(--line-strong);margin-bottom:14px;}
.outline{margin:0;}
.outline .row{border:1px solid var(--line);border-left:3px solid var(--amber);background:var(--ink-2);
              border-radius:var(--radius);padding:13px 16px;margin-bottom:10px;}
.outline .rowhead{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;}
.outline .rowhead b{font-family:var(--disp);font-weight:600;font-size:16px;color:var(--cream);}
.outline .rowhead .w{font-family:var(--mono);font-size:12.5px;color:var(--amber);flex:0 0 auto;}
.outline .wbar{height:5px;background:var(--ink-3);border-radius:2px;overflow:hidden;margin:8px 0 8px;}
.outline .wbar i{display:block;height:100%;background:var(--amber);}
.outline p{margin:0;font-size:14.5px;color:var(--paper-dim);line-height:1.5;}
.outline .qn{font-family:var(--mono);font-size:11.5px;color:var(--wood);display:block;margin-top:7px;}
ul.ticks{margin:0;padding-left:0;list-style:none;}
ul.ticks li{position:relative;padding-left:22px;margin-bottom:9px;color:var(--paper-dim);font-size:15px;line-height:1.5;}
ul.ticks li:before{content:"\2192";position:absolute;left:0;top:0;color:var(--wood);font-family:var(--mono);}
ul.ticks li b{color:var(--cream);}

/* ---------- study panel ---------- */
.studynav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 20px;}
.studynav button{background:var(--ink-2);border:1px solid var(--line-strong);border-radius:var(--radius);
                 padding:7px 12px;font-family:var(--mono);font-size:12px;color:var(--paper-dim);}
.studynav button:hover{border-color:var(--amber);color:var(--cream);}
.unit{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--ink-2);
      margin-bottom:14px;overflow:hidden;}
.unit > h3{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;
           padding:14px 16px;margin:0;cursor:pointer;background:var(--ink-3);
           border-left:3px solid var(--moss);}
.unit > h3:hover{background:#3a3228;}
.unit > h3 .w{font-family:var(--mono);font-size:12px;color:var(--moss);font-weight:400;flex:0 0 auto;}
.unit > h3 .caret{font-family:var(--mono);font-size:12px;color:var(--wood);flex:0 0 auto;}
.unit .body{display:none;padding:16px;}
.unit.open .body{display:block;}
.unit .lead{font-size:15.5px;color:var(--cream);margin:0 0 16px;line-height:1.55;}
.unit h4{font-family:var(--disp);font-weight:600;font-size:15px;color:var(--amber);margin:18px 0 6px;}
.unit h4:first-of-type{margin-top:0;}
.unit .body p{margin:0 0 10px;color:var(--paper-dim);font-size:15px;line-height:1.58;}
.unit .body p b{color:var(--cream);}
.unit .body ul{margin:0 0 12px;padding-left:19px;}
.unit .body li{color:var(--paper-dim);font-size:14.8px;line-height:1.5;margin-bottom:6px;}
.unit .body li b{color:var(--cream);}
.nums{border:1px solid var(--line);border-left:3px solid var(--amber);background:var(--ink-3);
      border-radius:var(--radius);padding:4px 14px;margin:16px 0 6px;}
.nums h5{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
         color:var(--amber);margin:11px 0 6px;}
.nums div{display:flex;justify-content:space-between;gap:14px;padding:6px 0;
          border-bottom:1px solid var(--line);font-size:14px;}
.nums div:last-child{border-bottom:0;padding-bottom:11px;}
.nums div span:first-child{color:var(--paper-dim);}
.nums div span:last-child{font-family:var(--mono);font-size:13px;color:var(--cream);
                          text-align:right;flex:0 0 auto;max-width:46%;}
.drillbtn{margin-top:14px;}

/* ---------- glossary ---------- */
.gloss{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));}
.gterm{background:var(--ink-2);border:1px solid var(--line-strong);border-radius:var(--radius);
       padding:12px 14px;cursor:pointer;transition:border-color .12s;}
.gterm:hover{border-color:var(--amber);}
.gterm b{display:block;font-family:var(--disp);font-weight:600;font-size:15px;color:var(--cream);}
.gterm span{display:none;margin-top:7px;font-size:14px;color:var(--paper-dim);line-height:1.5;}
.gterm.on span{display:block;}
.gterm em{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--wood);display:block;margin-top:4px;}

.hide{display:none;}
footer{margin-top:46px;border-top:1px solid var(--line);padding-top:14px;
       font-family:var(--mono);font-size:11.5px;color:var(--paper-dim);line-height:1.7;}
@media (prefers-reduced-motion: reduce){*{transition:none !important;}}
@media (max-width:520px){
  .wrap{padding:20px 14px 60px;}
  .bar{margin:-20px -14px 18px;padding:10px 14px 8px;}
  .stem{font-size:17.5px;}
  .score .pct{font-size:54px;}
}
