/* ============================================================
   RoadMapp — light theme
   ============================================================ */
:root{
  --bg:#eef2f8; --bg2:#ffffff; --panel:#ffffff; --panel2:#f4f7fc;
  --line:#e4eaf3; --line2:#cfd9e8;
  --txt:#18222f; --muted:#57667a; --muted2:#8493a8;
  --accent:#0d9862; --accent-soft:#12b886; --accent2:#2f7fd4;
  --pink:#db2777; --amber:#c07708; --danger:#dc2626;
  --radius:14px; --radius-sm:9px;
  --shadow:0 1px 2px rgba(20,40,70,.05), 0 8px 24px rgba(20,40,70,.06);
  --shadow-sm:0 1px 2px rgba(20,40,70,.06);
  --mono:"JetBrains Mono",ui-monospace,"Cascadia Code","SFMono-Regular",Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:radial-gradient(1200px 600px at 85% -10%,rgba(47,127,212,.07),transparent 60%),
    radial-gradient(1000px 500px at -5% 0%,rgba(13,152,98,.07),transparent 55%),var(--bg);
  color:var(--txt);font-family:var(--sans);line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{line-height:1.2;margin:0}
p{margin:0}
.muted{color:var(--muted)}
.small{font-size:.82rem}
.accent{color:var(--accent)}

/* ---------- top bar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;
  padding:12px 26px;background:rgba(255,255,255,.85);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.2rem;letter-spacing:.3px}
.brand-mark{font-family:var(--mono);color:var(--accent);background:var(--panel2);
  border:1px solid var(--line2);border-radius:7px;padding:2px 7px;font-size:.95rem}
.brand-name .accent{color:var(--accent)}
.nav{display:flex;gap:4px;margin-left:8px;flex-wrap:wrap}
.nav a{padding:7px 13px;border-radius:8px;color:var(--muted);font-weight:600;font-size:.92rem;transition:.15s}
.nav a:hover{color:var(--txt);background:var(--panel2)}
.nav a.active{color:var(--accent);background:rgba(13,152,98,.1)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.mini-ring{
  --p:0;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:.68rem;font-weight:800;color:var(--accent);
  background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--line) 0);
}
.mini-ring span{width:31px;height:31px;border-radius:50%;background:var(--bg2);display:grid;place-items:center}

/* user menu */
.usermenu{position:relative}
.user-chip{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line);
  border-radius:30px;padding:4px 10px 4px 4px;cursor:pointer;font-family:inherit;font-weight:600;
  font-size:.88rem;color:var(--txt);transition:.15s}
.user-chip:hover{border-color:var(--line2);box-shadow:var(--shadow-sm)}
.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;
  background:linear-gradient(135deg,var(--accent-soft),var(--accent));color:#fff;font-weight:800;font-size:.9rem}
.avatar-lg{width:42px;height:42px;font-size:1.2rem}
.user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-caret{color:var(--muted2);font-size:.7rem}
.user-pop{position:absolute;right:0;top:calc(100% + 10px);width:250px;background:var(--panel);
  border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:14px;
  opacity:0;visibility:hidden;transform:translateY(-6px);transition:.16s;z-index:60}
.usermenu.open .user-pop{opacity:1;visibility:visible;transform:none}
.user-pop-head{display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.user-pop-head b{display:block;font-size:.95rem}
.user-pop-head small{color:var(--muted);font-size:.78rem;word-break:break-all}
.user-pop-btn{width:100%;background:var(--panel2);border:1px solid var(--line2);border-radius:9px;
  padding:9px;font-family:inherit;font-weight:700;font-size:.86rem;color:var(--txt);cursor:pointer;transition:.14s}
.user-pop-btn:hover{border-color:var(--danger);color:var(--danger)}
@media(max-width:560px){.user-name{display:none}}

/* ---------- layout ---------- */
.wrap{max-width:1120px;margin:0 auto;padding:30px 26px 60px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px 22px;box-shadow:var(--shadow-sm)}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.card-head h2{font-size:1.05rem}
.badge{font-family:var(--mono);font-size:.8rem;color:var(--accent);background:rgba(13,152,98,.1);
  border:1px solid rgba(13,152,98,.25);border-radius:20px;padding:2px 11px;font-weight:700}
.page-head{margin-bottom:26px}
.page-head h1{font-size:1.9rem;margin-bottom:8px}
.lead{color:var(--muted);max-width:70ch}
.section-head{margin-bottom:20px}
.section-head h2{font-size:1.5rem}
.section-head p{color:var(--muted)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:10px;
  font-weight:700;font-size:.93rem;border:1px solid transparent;cursor:pointer;transition:.16s;font-family:inherit}
.btn-sm{padding:8px 13px;font-size:.85rem}
.btn-primary{background:linear-gradient(180deg,var(--accent-soft),var(--accent));color:#fff;
  box-shadow:0 6px 16px rgba(13,152,98,.28)}
.btn-primary:hover{filter:brightness(1.05);transform:translateY(-1px)}
.btn-ghost{background:var(--panel);border-color:var(--line2);color:var(--txt)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.link-danger{background:none;border:none;color:var(--muted2);cursor:pointer;font-size:.82rem;padding:0;font-family:inherit}
.link-danger:hover{color:var(--danger)}

/* ---------- progress bars ---------- */
.bar{height:8px;background:var(--line);border-radius:20px;overflow:hidden}
.bar>span{display:block;height:100%;border-radius:20px;
  background:linear-gradient(90deg,var(--accent-soft),var(--accent2));transition:width .4s ease}
.bar-sm{height:6px}
.bar-lg{height:11px}

/* ---------- hero ---------- */
.hero{display:flex;gap:34px;align-items:center;justify-content:space-between;
  background:linear-gradient(135deg,#ffffff,#eef4fb);border:1px solid var(--line);
  border-radius:20px;padding:34px 34px;margin-bottom:26px;box-shadow:var(--shadow)}
.hero-text{max-width:60ch}
.hero h1{font-size:2.5rem;letter-spacing:-.5px}
.tagline{color:var(--accent);font-weight:600;margin:6px 0 14px;font-family:var(--mono);font-size:.95rem}
.hero-sub{color:var(--muted)}
.hero-cta{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.hero-ring{text-align:center;flex-shrink:0}
.ring{--p:0;width:150px;height:150px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--line) 0);position:relative}
.ring-inner{width:118px;height:118px;border-radius:50%;background:var(--bg2);display:grid;place-items:center;align-content:center;box-shadow:inset 0 0 0 1px var(--line)}
.ring-pct{font-size:2rem;font-weight:800;font-family:var(--mono);color:var(--accent)}
.ring-label{font-size:.75rem;color:var(--muted)}
.ring-caption{margin-top:10px;color:var(--muted);font-size:.82rem}

/* ---------- section cards ---------- */
.section-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:26px}
.scard{--c:var(--accent);background:var(--panel);
  border:1px solid var(--line);border-top:3px solid var(--c);border-radius:var(--radius);
  padding:18px 20px;transition:.18s;display:block;box-shadow:var(--shadow-sm)}
.scard:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.scard-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.scard-num{font-family:var(--mono);color:var(--c);font-weight:800;font-size:1.1rem;opacity:.9}
.scard-tag{font-size:.72rem;color:var(--muted);background:var(--panel2);border:1px solid var(--line);
  border-radius:20px;padding:2px 9px}
.scard h3{font-size:1.15rem;margin-bottom:6px}
.scard p{color:var(--muted);font-size:.88rem;min-height:2.6em;margin-bottom:14px}
.scard .bar{margin-bottom:8px}
.scard-foot{font-size:.8rem;color:var(--muted);font-family:var(--mono)}

/* ---------- next up ---------- */
.nextup{margin-bottom:30px}
.nextup-label{text-transform:uppercase;letter-spacing:2px;font-size:.72rem;color:var(--muted2);margin-bottom:8px;font-weight:700}
.nextup-card{display:flex;align-items:center;gap:20px;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;transition:.16s;box-shadow:var(--shadow-sm)}
.nextup-card:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.nextup-daynum{font-family:var(--mono);text-align:center;color:var(--muted);font-size:.75rem;line-height:1.1}
.nextup-daynum b{font-size:2rem;color:var(--accent)}
.nextup-body{flex:1}
.nextup-body h3{margin:8px 0 4px;font-size:1.2rem}
.nextup-body p{color:var(--muted);font-size:.9rem}
.nextup-go{font-size:1.8rem;color:var(--accent)}

.pill{display:inline-block;font-size:.75rem;font-weight:700;color:var(--c,#0d9862);
  background:color-mix(in srgb,var(--c,#0d9862) 12%,white);
  border:1px solid color-mix(in srgb,var(--c,#0d9862) 32%,white);
  border-radius:20px;padding:3px 12px}

/* ---------- roadmap phases ---------- */
.phase{--c:var(--accent);background:var(--panel);
  border:1px solid var(--line);border-left:3px solid var(--c);border-radius:var(--radius);
  padding:18px 22px;margin-bottom:16px;box-shadow:var(--shadow-sm)}
.phase-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.phase-title{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.phase-tag{font-family:var(--mono);font-size:.72rem;color:var(--c);font-weight:700;
  border:1px solid color-mix(in srgb,var(--c) 40%,white);border-radius:6px;padding:2px 7px}
.phase-title h3{font-size:1.2rem}
.phase-title h3 a:hover{color:var(--c)}
.phase-days{font-size:.78rem;color:var(--muted2);font-family:var(--mono)}
.phase-meta{display:flex;align-items:center;gap:10px;min-width:160px}
.phase-meta .bar{flex:1;min-width:90px}
.phase-count{font-family:var(--mono);font-size:.82rem;color:var(--muted)}
.phase-summary{color:var(--muted);font-size:.88rem;margin:10px 0 14px;max-width:85ch}
.day-chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:flex;flex-direction:column;gap:2px;background:var(--panel2);border:1px solid var(--line);
  border-radius:9px;padding:7px 11px;min-width:118px;max-width:160px;transition:.14s}
.chip:hover{border-color:var(--c);transform:translateY(-2px);box-shadow:var(--shadow-sm)}
.chip-n{font-family:var(--mono);font-size:.72rem;color:var(--muted2);font-weight:700}
.chip-t{font-size:.78rem;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip-done{background:color-mix(in srgb,var(--c) 12%,white);border-color:color-mix(in srgb,var(--c) 40%,white)}
.chip-done .chip-n{color:var(--c)}
.chip-done .chip-n::after{content:" ✓"}
.chip-part{border-color:var(--amber);border-style:dashed}
.chip-current{outline:2px solid var(--accent);outline-offset:1px}
.chip-quiz{background:transparent;border-style:dashed;border-color:var(--line2)}
.chip-quiz .chip-n{color:var(--amber)}

/* ---------- crumbs ---------- */
.crumbs{color:var(--muted2);font-size:.85rem;margin-bottom:18px;font-family:var(--mono)}
.crumbs a:hover{color:var(--accent)}

/* ---------- day view ---------- */
.day-head{--c:var(--accent);display:flex;gap:20px;align-items:center;margin-bottom:22px;
  background:var(--panel);border:1px solid var(--line);
  border-left:4px solid var(--c);border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow-sm)}
.day-badge{font-family:var(--mono);text-align:center;color:var(--muted);font-size:.7rem;
  background:var(--panel2);border:1px solid var(--line2);border-radius:12px;padding:12px 16px;line-height:1.1}
.day-badge b{display:block;font-size:2.1rem;color:var(--c)}
.day-head-body h1{font-size:1.6rem;margin:8px 0 6px}
.day-focus{color:var(--muted)}
.day-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:18px;align-items:start}
.tasks{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.task label{display:flex;align-items:flex-start;gap:12px;padding:11px 10px;border-radius:9px;cursor:pointer;transition:.13s}
.task label:hover{background:var(--panel2)}
.task input{position:absolute;opacity:0;width:0;height:0}
.tick{flex-shrink:0;width:22px;height:22px;border-radius:6px;border:2px solid var(--line2);background:var(--bg2);
  display:grid;place-items:center;transition:.15s;margin-top:1px}
.tick::after{content:"✓";font-size:.8rem;color:#fff;opacity:0;font-weight:900}
.task input:checked+.tick,.toggle:checked+.tick{background:var(--accent);border-color:var(--accent)}
.task input:checked+.tick::after,.toggle:checked+.tick::after{opacity:1}
.task-text{font-size:.95rem}
.task-on .task-text{color:var(--muted2);text-decoration:line-through}
.done-banner{margin-top:16px;padding:11px 16px;border-radius:10px;font-weight:700;
  background:rgba(13,152,98,.1);border:1px solid rgba(13,152,98,.3);color:var(--accent)}
.day-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:24px}

/* ---------- resources ---------- */
.res-card .muted{margin-bottom:8px}
.res-group{margin-bottom:16px}
.res-group-title{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;font-weight:700}
.res-list{display:flex;flex-direction:column;gap:6px}
.res{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;
  background:var(--panel2);border:1px solid var(--line);transition:.14s;font-size:.88rem}
.res:hover{border-color:var(--accent2);transform:translateX(3px);box-shadow:var(--shadow-sm)}
.res-ico{flex-shrink:0;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:.75rem;
  background:var(--bg2);border:1px solid var(--line2)}
.res-label{flex:1;overflow:hidden;text-overflow:ellipsis}
.res-ext{color:var(--muted2);font-size:.8rem}
.res-lab .res-ico,.res-lab.res-ico{color:var(--accent)}
.res-video .res-ico{color:var(--pink)}
.res-blog .res-ico{color:var(--accent2)}
.res-notes .res-ico{color:var(--amber)}
.res-cta{display:flex;flex-direction:column;gap:8px;margin-top:6px}

/* ---------- module view ---------- */
.module-head{--c:var(--accent);background:var(--panel);
  border:1px solid var(--line);border-left:4px solid var(--c);border-radius:var(--radius);padding:22px 24px;margin-bottom:20px;box-shadow:var(--shadow-sm)}
.module-head h1{font-size:1.8rem;margin:10px 0 8px}
.module-stats{display:flex;gap:26px;margin:16px 0}
.stat{display:flex;flex-direction:column}
.stat b{font-size:1.3rem;font-family:var(--mono);color:var(--txt)}
.stat span{font-size:.78rem;color:var(--muted)}
.stat-lg b{font-size:1.9rem;color:var(--accent)}
.module-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;align-items:start}
.daylist{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:8px}
.daylist-item a{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:10px;
  background:var(--panel2);border:1px solid var(--line);transition:.14s}
.daylist-item a:hover{border-color:var(--accent);transform:translateX(3px);box-shadow:var(--shadow-sm)}
.dl-num{font-family:var(--mono);font-weight:800;color:var(--muted);width:26px;text-align:center;flex-shrink:0}
.dl-body{flex:1;display:flex;flex-direction:column}
.dl-body b{font-size:.95rem}
.dl-body small{color:var(--muted);font-size:.8rem}
.dl-prog{font-family:var(--mono);font-size:.82rem;color:var(--muted)}
.daylist-item.is-done .dl-num{color:var(--accent)}
.daylist-item.is-done .dl-prog{color:var(--accent)}

/* ---------- quiz ---------- */
.quiz-head{--c:var(--accent);margin-bottom:20px}
.quiz-head h1{font-size:1.7rem;margin:10px 0 6px}
.best-badge{margin-left:8px;font-family:var(--mono);font-size:.8rem;color:var(--amber);
  border:1px solid color-mix(in srgb,var(--amber) 40%,white);border-radius:20px;padding:2px 10px}
.qcard{display:flex;gap:16px;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:14px;box-shadow:var(--shadow-sm)}
.qnum{font-family:var(--mono);font-weight:800;color:var(--muted2);flex-shrink:0}
.qbody{flex:1}
.qtext{font-weight:600;margin-bottom:12px}
.qopts-form{display:flex;flex-direction:column;gap:8px}
.qopt{display:block;cursor:pointer}
.qopt input{position:absolute;opacity:0}
.qopt-box{display:block;padding:11px 14px;border-radius:9px;background:var(--panel2);
  border:1px solid var(--line);transition:.13s;font-size:.92rem}
.qopt:hover .qopt-box{border-color:var(--line2)}
.qopt input:checked+.qopt-box{border-color:var(--accent);background:rgba(13,152,98,.1);color:var(--txt)}
.qopts{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:7px}
.qopts li{display:flex;align-items:center;gap:10px;padding:10px 13px;border-radius:9px;
  background:var(--panel2);border:1px solid var(--line);font-size:.9rem;color:var(--muted)}
.opt-mark{font-family:var(--mono);width:16px;font-weight:800}
.opt-correct{border-color:var(--accent);background:rgba(13,152,98,.1);color:var(--txt)}
.opt-correct .opt-mark{color:var(--accent)}
.opt-wrongpick{border-color:var(--danger);background:rgba(220,38,38,.07)}
.opt-wrongpick .opt-mark{color:var(--danger)}
.opt-yours{margin-left:auto;font-style:normal;font-size:.72rem;color:var(--muted2);font-family:var(--mono)}
.qwhy{font-size:.85rem;color:var(--muted);background:var(--panel2);border-left:2px solid var(--line2);
  padding:8px 12px;border-radius:0 8px 8px 0;margin-top:10px}
.qcard.q-correct{border-left:3px solid var(--accent)}
.qcard.q-wrong{border-left:3px solid var(--danger)}
.result-banner{display:flex;align-items:center;gap:22px;border-radius:var(--radius);padding:20px 26px;margin-bottom:20px}
.result-pass{background:rgba(13,152,98,.1);border:1px solid rgba(13,152,98,.4)}
.result-ok{background:rgba(192,119,8,.1);border:1px solid rgba(192,119,8,.35)}
.result-fail{background:rgba(220,38,38,.08);border:1px solid rgba(220,38,38,.35)}
.result-score{font-family:var(--mono);font-size:2.4rem;font-weight:800}
.result-score span{color:var(--muted);font-size:1.4rem}
.result-msg b{font-size:1.3rem;margin-right:8px}

/* ---------- labs ---------- */
.labstats{display:flex;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.labstats .stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 22px;min-width:120px;box-shadow:var(--shadow-sm)}
.labs-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:18px;align-items:start}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field>span{font-size:.82rem;color:var(--muted);font-weight:600}
.field input,.field select,.field textarea{background:var(--bg2);border:1px solid var(--line2);
  border-radius:9px;padding:10px 13px;color:var(--txt);font-family:inherit;font-size:.92rem;width:100%}
.field textarea{resize:vertical;font-family:var(--mono);font-size:.85rem}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(13,152,98,.12)}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.empty{color:var(--muted);text-align:center;padding:30px 20px;border:1px dashed var(--line2);border-radius:12px}
.sub-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.sub{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--muted2);
  border-radius:11px;padding:14px 16px;position:relative}
.sub-completed{border-left-color:var(--accent)}
.sub-in-progress{border-left-color:var(--amber)}
.sub-stuck{border-left-color:var(--danger)}
.sub-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.sub-name{font-size:1rem}
.sub-status{font-size:.72rem;font-family:var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.sub-meta{display:flex;gap:10px;align-items:center;margin-top:5px;flex-wrap:wrap}
.tagchip{font-size:.72rem;background:var(--bg2);border:1px solid var(--line2);border-radius:20px;padding:2px 10px;color:var(--muted)}
.sub-date{font-size:.75rem;color:var(--muted2);font-family:var(--mono)}
.sub-flags{margin-top:8px;font-size:.85rem;color:var(--accent);font-family:var(--mono)}
.sub-notes{margin-top:8px;font-size:.86rem;color:var(--muted);white-space:pre-wrap}
.sub-del{position:absolute;top:12px;right:14px}

/* ---------- web section ---------- */
.webprog{display:flex;align-items:center;gap:14px;margin-top:16px;max-width:560px}
.webprog .bar{flex:1}
.webprog-num{font-family:var(--mono);font-size:.82rem;color:var(--muted);white-space:nowrap}
.web-level{margin-bottom:28px}
.level-title{display:flex;align-items:center;gap:10px;font-size:1.2rem;margin-bottom:14px}
.level-dot{width:11px;height:11px;border-radius:50%;background:var(--muted2)}
.level-dot.level-basics{background:var(--accent2)}
.level-dot.level-core{background:var(--accent)}
.level-dot.level-intermediate{background:var(--pink)}
.web-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.web-card{transition:.15s}
.web-card.web-done{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.web-card-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.web-card-head h3{font-size:1.08rem;flex:1}
.webcheck{cursor:pointer;position:relative;display:grid;place-items:center}
.webcheck input{position:absolute;opacity:0}
.lvl-badge{font-size:.68rem;font-family:var(--mono);padding:2px 9px;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}
.lvl-basics{color:var(--accent2);border:1px solid color-mix(in srgb,var(--accent2) 40%,white)}
.lvl-core{color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,white)}
.lvl-intermediate{color:var(--pink);border:1px solid color-mix(in srgb,var(--pink) 40%,white)}
.web-summary{color:var(--muted);font-size:.88rem;margin-bottom:14px}
.web-res .res-group{margin-bottom:12px}

/* ---------- interview ---------- */
.iv-note{margin-top:14px;font-size:.85rem;color:var(--amber);background:rgba(192,119,8,.08);
  border:1px solid rgba(192,119,8,.25);border-radius:10px;padding:10px 14px;max-width:70ch}
.iv-cat{margin-bottom:26px}
.iv-cat-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.iv-cat-head h2{font-size:1.25rem}
.iv-qs{display:flex;flex-direction:column;gap:10px}
.iv-q{background:var(--panel);border:1px solid var(--line);
  border-radius:11px;overflow:hidden;transition:.15s;box-shadow:var(--shadow-sm)}
.iv-q.iv-reviewed{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
.iv-q details summary{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;list-style:none}
.iv-q details summary::-webkit-details-marker{display:none}
.iv-qmark{font-family:var(--mono);font-weight:800;color:var(--accent2);flex-shrink:0}
.iv-qtext{flex:1;font-weight:600;font-size:.95rem}
.iv-chev{color:var(--muted2);transition:.2s}
.iv-q details[open] .iv-chev{transform:rotate(180deg)}
.iv-a{padding:0 16px 16px 44px;color:var(--muted);font-size:.9rem;border-top:1px solid var(--line);padding-top:14px;margin-top:2px}
.iv-review{display:flex;align-items:center;gap:9px;padding:10px 16px;border-top:1px solid var(--line);
  cursor:pointer;font-size:.82rem;color:var(--muted)}
.iv-review input{position:absolute;opacity:0}
.iv-review .tick{width:18px;height:18px}
.iv-reviewed .iv-review{color:var(--accent)}

/* ---------- footer ---------- */
.foot{max-width:1120px;margin:0 auto;padding:24px 26px 40px;display:flex;justify-content:space-between;
  align-items:center;gap:16px;color:var(--muted2);font-size:.82rem;border-top:1px solid var(--line);
  font-family:var(--mono)}

/* ---------- responsive ---------- */
@media(max-width:900px){
  .hero{flex-direction:column;text-align:center}
  .section-cards{grid-template-columns:1fr}
  .day-grid,.module-grid,.labs-grid{grid-template-columns:1fr}
  .web-cards{grid-template-columns:1fr}
  .nav{display:none}
}
@media(max-width:560px){
  .wrap{padding:20px 16px 50px}
  .hero h1{font-size:2rem}
  .field-row{grid-template-columns:1fr}
  .module-stats{gap:16px}
  .topbar{padding:10px 16px}
}

/* ============================================================
   Auth screen
   ============================================================ */
.btn-block{width:100%;justify-content:center;padding:13px 18px;font-size:.95rem}
.auth-body{min-height:100vh;display:grid;place-items:center;
  background:radial-gradient(1100px 700px at 12% 20%,rgba(13,152,98,.10),transparent 55%),
    radial-gradient(1000px 700px at 90% 85%,rgba(47,127,212,.10),transparent 55%),var(--bg)}
.auth-shell{width:min(1000px,94vw);margin:24px auto;display:grid;grid-template-columns:1.05fr .95fr;
  background:var(--panel);border:1px solid var(--line);border-radius:24px;overflow:hidden;
  box-shadow:0 24px 60px rgba(20,40,70,.14)}
.auth-brand{padding:48px 44px;color:#eafff6;position:relative;display:flex;flex-direction:column;justify-content:center;
  background:linear-gradient(150deg,#0b3d2c 0%,#0d5a3f 42%,#0f6b56 100%);overflow:hidden}
.auth-brand::after{content:"";position:absolute;inset:0;opacity:.4;pointer-events:none;
  background:radial-gradient(500px 300px at 100% 0%,rgba(255,255,255,.14),transparent 60%)}
.auth-brand-logo{color:#fff;font-size:1.25rem;margin-bottom:28px;position:relative;z-index:1}
.auth-brand-logo .brand-mark{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.25);color:#eafff6}
.auth-brand-logo .brand-name .accent{color:#8ff0c4}
.auth-hero{font-size:2rem;line-height:1.15;letter-spacing:-.4px;position:relative;z-index:1;color:#fff}
.auth-hero .accent{color:#8ff0c4}
.auth-hero-sub{margin-top:14px;color:rgba(233,255,246,.82);font-size:.95rem;max-width:42ch;position:relative;z-index:1}
.auth-points{list-style:none;margin:30px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}
.auth-points li{display:flex;align-items:center;gap:12px;font-size:.9rem;color:rgba(233,255,246,.92)}
.auth-points li span{font-family:var(--mono);font-size:.72rem;font-weight:800;flex-shrink:0;
  width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2)}
.auth-main{padding:44px 42px;display:flex;align-items:center}
.auth-card{width:100%}
.auth-tabs{position:relative;display:grid;grid-template-columns:1fr 1fr;background:var(--panel2);
  border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:22px}
.auth-tab{position:relative;z-index:1;background:none;border:none;padding:10px;border-radius:9px;cursor:pointer;
  font-family:inherit;font-weight:700;font-size:.9rem;color:var(--muted);transition:color .18s}
.auth-tab.is-active{color:var(--txt)}
.auth-tab-ink{position:absolute;top:4px;left:4px;width:calc(50% - 4px);height:calc(100% - 8px);
  background:var(--panel);border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow-sm);
  transition:transform .22s cubic-bezier(.4,0,.2,1);z-index:0}
.auth-tab-ink[data-pos="1"]{transform:translateX(100%)}
.auth-alert{background:rgba(220,38,38,.08);border:1px solid rgba(220,38,38,.3);color:#b91c1c;
  border-radius:10px;padding:11px 14px;font-size:.86rem;margin-bottom:18px}
.auth-form{display:none;animation:fade .25s ease}
.auth-form.is-active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.auth-form .field{margin-bottom:16px}
.auth-form .field input{padding:12px 14px;font-size:.95rem}
.auth-switch{margin-top:16px;text-align:center;font-size:.86rem;color:var(--muted)}
.auth-switch a{color:var(--accent);font-weight:700}
.auth-switch a:hover{text-decoration:underline}
.auth-fineprint{margin-top:22px;text-align:center;font-size:.76rem;color:var(--muted2)}
@media(max-width:760px){
  .auth-shell{grid-template-columns:1fr;width:min(460px,94vw)}
  .auth-brand{padding:34px 30px}
  .auth-hero{font-size:1.6rem}
  .auth-points{display:none}
  .auth-main{padding:30px 26px}
}

/* ============================================================
   Polish
   ============================================================ */
.btn{letter-spacing:.1px}
.hero h1{background:linear-gradient(120deg,var(--txt),#3a4a5e);-webkit-background-clip:text;background-clip:text}
::selection{background:rgba(13,152,98,.22)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.scard,.phase,.iv-q,.web-card,.qcard,.nextup-card{will-change:transform}
html{scrollbar-color:var(--line2) transparent}
*::-webkit-scrollbar{width:11px;height:11px}
*::-webkit-scrollbar-thumb{background:var(--line2);border-radius:20px;border:3px solid var(--bg)}
*::-webkit-scrollbar-track{background:transparent}
