/* Model Map: learning path (gated lessons and quizzes) */
body.pathpage .layout{grid-template-columns:var(--sidebar) minmax(0,1fr)}
body.pathpage .content{max-width:800px}
.sidebar a.plocked{color:var(--muted)}
.sidebar .pstat{margin-left:auto;font-size:.78rem;color:var(--done);font-weight:700}
.sidebar a.plocked .pstat{color:var(--muted);font-weight:400}
.sidebar a.active .pstat{color:var(--accent-ink)}
.sidebar .pathhome{font-weight:650}
.dot.path{background:linear-gradient(135deg,var(--accent),var(--tool))}
.chip.path{background:var(--accent-soft);color:var(--accent)}

/* step navigation */
.stepnav{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:18px 0 6px}
.stepnav .sdot{display:inline-flex;align-items:center;gap:7px;padding:5px 11px 5px 5px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:.82rem;text-decoration:none;line-height:1.2}
.stepnav .sdot i{font-style:normal;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font-size:.75rem;font-weight:700}
.stepnav .sdot.open{color:var(--ink)}
.stepnav .sdot.open i{background:var(--accent-soft);color:var(--accent)}
.stepnav .sdot.done i{background:var(--done);color:#fff}
.stepnav .sdot span{max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
a.btn{text-decoration:none;display:inline-block}
.btn.small{padding:6px 12px;font-size:.84rem}
.btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.btn.danger{color:var(--warn-b);border-color:var(--warn-b)}
section.step{border-top:1px dashed var(--line);margin-top:34px;padding-top:6px;animation:stepin .45s ease}
@keyframes stepin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.steplock{margin:30px 0;padding:22px;border:2px dashed var(--line);border-radius:var(--radius);color:var(--muted);text-align:center;background:repeating-linear-gradient(135deg,transparent 0 12px,var(--surface-2) 12px 24px)}
.steplock span{font-size:1.3rem;margin-right:6px}
.stepfoot{margin:22px 0 4px}
.stepfoot .todo{color:var(--muted);font-size:.92rem;padding:10px 14px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:8px}

/* lock panel */
.lockpanel{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:34px;text-align:center;box-shadow:var(--shadow)}
.lockpanel .lk{font-size:2.6rem}
.lockpanel h2{margin-top:6px}

/* question cards */
.qcard{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:var(--radius);padding:16px 20px 14px;margin:22px 0;box-shadow:var(--shadow)}
.qcard.ok{border-left-color:var(--done)}
.qcard.bad{border-left-color:var(--warn-b)}
.qcard.part{border-left-color:var(--ex-b)}
.qtop{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.qbadge{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.qcard.ok .qbadge{color:var(--done)}
.qnew{margin-left:auto;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:8px;padding:3px 10px;font:inherit;font-size:.8rem;cursor:pointer}
.qprompt > p:first-child{margin-top:4px}
.qprompt table{margin:8px 0}
.qopt{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;margin:7px 0;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--bg);line-height:1.5}
.qopt:hover{border-color:var(--accent)}
.qopt input{margin-top:5px;flex:none;accent-color:var(--accent)}
.qopt.right{border-color:var(--done);background:color-mix(in srgb,var(--done) 12%,transparent)}
.qopt.picked-wrong{border-color:var(--warn-b);background:color-mix(in srgb,var(--warn-b) 10%,transparent)}
.qfields{display:flex;flex-wrap:wrap;gap:10px 18px;margin:10px 0}
.qfield{display:flex;flex-direction:column;gap:4px;font-size:.88rem;color:var(--muted)}
.qfield input,.qfield select{font:inherit;font-size:1rem;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);min-width:150px}
.qfield input.good,.qfield select.good{border-color:var(--done);box-shadow:0 0 0 2px color-mix(in srgb,var(--done) 25%,transparent)}
.qfield input.wrong,.qfield select.wrong{border-color:var(--warn-b);box-shadow:0 0 0 2px color-mix(in srgb,var(--warn-b) 20%,transparent)}
.qcard textarea,.codebox{width:100%;font:inherit;font-size:.95rem;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);margin:8px 0}
.qcheck{margin-top:8px}
.qhint{font-size:.85rem;color:var(--muted)}
.qfb{font-size:.93rem;margin-top:8px;min-height:0}
.qfb.ok{color:var(--done);font-weight:600}
.qfb.bad{color:var(--warn-b);font-weight:600}
.qexpl{display:none;margin-top:10px;padding:10px 14px;background:var(--surface-2);border-radius:10px;font-size:.95rem}
.qexpl .ans{font-weight:600}
.qexpl .mh{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:6px 0 4px}
.qmodel{border-left:3px solid var(--why-b);padding-left:12px;margin-bottom:12px}
.qmarks .qopt{background:var(--surface)}
.qcard.wasdone .qbadge::after{content:"  ✓ done";color:var(--done)}
.qcard.locked .qopt{cursor:default}

/* stage test */
div.test{background:var(--surface-2);border:1px solid var(--line);border-radius:18px;padding:18px 20px;margin:18px 0}
.testinfo p{margin:4px 0 10px}
.passtag{color:var(--done);font-weight:700}
.testbar{margin-top:14px}
.banner{border-radius:14px;padding:18px 20px;margin:12px 0}
.banner .big{font-size:1.35rem;font-weight:750}
.banner.win{background:color-mix(in srgb,var(--done) 16%,var(--surface));border:1px solid var(--done)}
.banner.lose{background:var(--warn);border:1px solid var(--warn-b)}
.banner .btn{margin:4px 6px 0 0}
.testbar .btn{margin-right:8px}

/* overview */
.pathsum{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin:10px 0 22px;box-shadow:var(--shadow)}
.pathsum .track{height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.pathsum .fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--done));border-radius:99px}
h3.pgroup{margin:26px 0 8px}
.pcard{display:flex;align-items:center;gap:14px;padding:12px 16px;margin:8px 0;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);text-decoration:none;box-shadow:var(--shadow)}
a.pcard:hover{border-color:var(--accent)}
.pcard .pn{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;font-weight:750;background:var(--accent-soft);color:var(--accent)}
.pcard.passed .pn{background:var(--done);color:#fff}
.pcard.locked{opacity:.6;box-shadow:none}
.pcard.locked .pn{background:var(--surface-2);color:var(--muted)}
.pcard .pt{flex:1;display:flex;flex-direction:column;line-height:1.35}
.pcard .pt small{color:var(--muted);font-size:.86rem;margin-top:2px}
.pcard .pm{font-size:.82rem;color:var(--muted);white-space:nowrap}
.pcard.passed .pm{color:var(--done);font-weight:700}
.pathtools{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px;padding-top:16px;border-top:1px solid var(--line)}
.pathcta{display:flex;gap:16px;align-items:center;background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--accent);border-radius:16px;padding:16px 20px;margin:18px 0;color:var(--ink);text-decoration:none}
.pathcta .ic{font-size:2rem}
.pathcta b{display:block;font-size:1.05rem}
.pathcta:hover{box-shadow:var(--shadow)}
@media (max-width:860px){body.pathpage .layout{grid-template-columns:1fr}.pcard .pm{display:none}.qfield input,.qfield select{min-width:120px}}
