.lesson{max-width:900px;margin:auto;padding:56px 24px 100px}.lesson>a{color:#526078}.lesson h1{font-size:clamp(2.2rem,6vw,4rem);line-height:1.08}.lesson section{margin:54px 0}.lesson h2{font-size:1.65rem}.lesson table{width:100%;border-collapse:collapse;background:#fff}.lesson th,.lesson td{border:1px solid #dce2ec;padding:12px;text-align:left;vertical-align:top}.lesson th{background:#eef2f8}.trace{padding:22px;background:#172033;color:#fff;border-radius:16px;overflow:auto}.steps li{padding:8px 4px}.check{background:#eef2f8;padding:24px;border-radius:18px}.check details,details{background:#fff;border:1px solid #dde3ee;border-radius:12px;padding:12px 16px;margin:10px 0}summary{cursor:pointer;font-weight:700}.next{margin-top:70px;border-top:1px solid #dce2ec;padding-top:24px}.next a{font-weight:800;color:#344e7a}@media(max-width:700px){.lesson{padding:36px 16px 80px}.lesson table{font-size:.9rem;display:block;overflow:auto}}
.lesson-toolbar{position:relative;margin:-20px 0 34px;padding:14px;border:1px solid #d8e1ee;border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(31,51,86,.06)}
.lesson-toolbar-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lesson-toolbar-row+.lesson-toolbar-row{margin-top:10px;padding-top:10px;border-top:1px solid #e7edf5}
.lesson-toolbar a{text-decoration:none;font-weight:800;color:#3d5681}
.lesson-toolbar-spacer{flex:1}
.lesson-toolbar-meta{font-size:.82rem;color:#748198;font-weight:800}
.lesson-toolbar-actions{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}
.lesson-nav-button{display:block;padding:9px 11px;border:1px solid #d3deeb;border-radius:10px;background:#f8faff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lesson-nav-button.next{text-align:right}
.lesson-complete{display:flex;align-items:center;gap:7px;font-size:.9rem;font-weight:800;color:#526078}
.lesson-complete input{width:auto}
@media(max-width:700px){.lesson-toolbar{margin-top:-10px}.lesson-toolbar-actions{grid-template-columns:1fr}.lesson-nav-button.next{text-align:left}}

.lesson-notes{margin-top:12px;border-top:1px solid #e7edf5;padding-top:10px}
.lesson-notes summary{background:transparent;border:0;padding:0;margin:0;color:#526078;font-size:.9rem}
.lesson-notes textarea{display:block;width:100%;min-height:120px;margin-top:10px;padding:12px;border:1px solid #cbd7e7;border-radius:11px;background:#fbfcfe;color:#172033;font:14px/1.55 system-ui,sans-serif;resize:vertical}
.lesson-note-status{margin-top:6px;text-align:right;color:#7a879b;font-size:.78rem}

.inline-lab{margin:54px 0;padding:24px;border:1px solid #cad8ec;border-radius:22px;background:linear-gradient(155deg,#ffffff,#f2f6ff);box-shadow:0 16px 40px rgba(31,51,86,.08)}
.inline-lab-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:8px}
.inline-lab-head h2{margin:.15em 0}
.inline-lab-kicker{margin:0;color:#315fcb;font-size:.72rem;font-weight:900;letter-spacing:.1em}
.inline-lab-state{flex:0 0 auto;padding:5px 9px;border-radius:999px;background:#e8edf5;color:#63728a;font-size:.75rem;font-weight:900}
.inline-lab-state.passed{background:#e6f7ed;color:#22683d}
.inline-lab-prompt{font-size:1rem;color:#465775}
.inline-lab-body{margin-top:18px}
.inline-code{display:block;width:100%;min-height:210px;padding:15px;border:1px solid #263550;border-radius:14px;background:#111a2d;color:#eef4ff;font:13.5px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;resize:vertical}
.inline-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.inline-actions button,.inline-choices button{padding:9px 13px;border:1px solid #b9c8dd;border-radius:10px;background:#fff;color:#172033;font:inherit;font-weight:800;cursor:pointer}
.inline-actions button:first-child{background:#315fcb;color:#fff;border-color:#315fcb}
.inline-console,.inline-simulated{min-height:70px;margin-top:10px;padding:13px;border-radius:12px;background:#0b1220;color:#dbe8ff;white-space:pre-wrap;font:13px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}
.inline-lab-feedback{margin-top:12px;padding:11px 13px;border-radius:11px;background:#e8edf5;color:#526078}
.inline-lab-feedback.ok{background:#e6f7ed;color:#22683d}.inline-lab-feedback.bad{background:#fff0f0;color:#963737}
.inline-web-editors{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.inline-web-editors label{font-size:.78rem;font-weight:900;color:#60708a}
.inline-web-editors .inline-code{min-height:180px;margin-top:5px}
.inline-preview{display:block;width:100%;height:300px;border:1px solid #cbd7e7;border-radius:14px;background:#fff}
.inline-terminal{display:flex;align-items:center;gap:9px;padding:10px 13px;background:#0b1220;border-radius:12px}
.inline-terminal-label{color:#7ee2a8;font:700 12px ui-monospace,SFMono-Regular,Consolas,monospace}
.inline-answer{flex:1;min-width:0;border:0;border-bottom:1px solid #40506b;border-radius:0;background:transparent;color:#fff;padding:8px 4px;font:14px ui-monospace,SFMono-Regular,Consolas,monospace;outline:0}
.inline-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.inline-solution{margin-top:12px}.inline-solution pre{margin-top:10px}
@media(max-width:760px){.inline-web-editors{grid-template-columns:1fr}.inline-choices{grid-template-columns:1fr}.inline-lab{padding:18px}.inline-lab-head{display:block}.inline-lab-state{display:inline-block;margin-top:6px}}

.lesson-read-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:100;background:transparent;pointer-events:none}
.lesson-read-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#315fcb,#7048d8);transition:width .08s linear}
.lesson-toc{margin:28px 0 8px;padding:0;border:1px solid #d4dfed;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(31,51,86,.05)}
.lesson-toc summary{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:13px 16px;margin:0;background:#f7f9fd;border-radius:16px;font-weight:900}
.lesson-toc summary span{font-size:.75rem;color:#748198;font-weight:700}
.lesson-toc nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:10px}
.lesson-toc nav a{padding:7px 9px;border-radius:8px;color:#586a86;text-decoration:none;font-size:.86rem;line-height:1.35}
.lesson-toc nav a:hover,.lesson-toc nav a.active{background:#eaf0fc;color:#294eaa}
.lesson-content-section{position:relative;padding:28px;border:1px solid #e0e6ef;border-radius:20px;background:rgba(255,255,255,.62);box-shadow:0 8px 30px rgba(31,51,86,.035)}
.lesson-content-section+.lesson-content-section{margin-top:28px}
.lesson-content-section h2:first-child{margin-top:0}
.code-frame{position:relative;margin:16px 0;border-radius:18px;overflow:hidden;box-shadow:0 12px 28px rgba(17,26,45,.12)}
.code-frame pre{margin:0;border-radius:0;box-shadow:none;border-top:0}
.code-frame-bar{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;background:#1b2740;border:1px solid #25334e;border-bottom:0;color:#aebdd5;font:700 11px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em}
.code-frame-bar button{padding:4px 8px;border:1px solid #43526b;border-radius:7px;background:#263550;color:#eef4ff;font:inherit;letter-spacing:0;cursor:pointer}
.code-frame-bar button:hover{background:#344561}
.inline-lab .code-frame{margin:10px 0}
.inline-lab .inline-console.code-frame,.inline-lab .inline-simulated.code-frame{overflow:auto}
@media(max-width:700px){.lesson-toc nav{grid-template-columns:1fr}.lesson-content-section{padding:20px}.lesson-toc{margin-top:20px}}
@media(min-width:1500px){
  .lesson-toc{position:fixed;top:96px;right:calc(50vw + 485px);width:240px;max-height:calc(100vh - 125px);overflow:auto;z-index:5}
  .lesson-toc nav{grid-template-columns:1fr}
  .lesson-toc summary span{display:none}
}

.lesson-arena-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-18px 0 30px;padding:14px 16px;border:1px solid #bfcfec;border-radius:14px;background:linear-gradient(135deg,#edf3ff,#f8f4ff);text-decoration:none;color:#253a68;box-shadow:0 8px 24px rgba(49,95,203,.07)}
.lesson-arena-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-arena-link span{font-weight:850}
.lesson-arena-link:hover{border-color:#91a9dc;transform:translateY(-1px)}
@media(max-width:650px){.lesson-arena-link{display:block}.lesson-arena-link span{display:block;margin-top:4px}}

.lesson-workshop-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #cbd9bf;border-radius:14px;background:linear-gradient(135deg,#f1f9ee,#fbfff8);text-decoration:none;color:#2d5a35;box-shadow:0 8px 24px rgba(56,125,72,.06)}
.lesson-workshop-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-workshop-link span{font-weight:850}
.lesson-workshop-link:hover{border-color:#9fc18f;transform:translateY(-1px)}
@media(max-width:650px){.lesson-workshop-link{display:block}.lesson-workshop-link span{display:block;margin-top:4px}}

.lesson-terminal-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #c8d2df;border-radius:14px;background:linear-gradient(135deg,#f1f4f8,#fbfcfe);text-decoration:none;color:#34445c;box-shadow:0 8px 24px rgba(31,51,86,.05)}
.lesson-terminal-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-terminal-link span{font-weight:850}
.lesson-terminal-link:hover{border-color:#9eacc0;transform:translateY(-1px)}
@media(max-width:650px){.lesson-terminal-link{display:block}.lesson-terminal-link span{display:block;margin-top:4px}}

.lesson-sql-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #d2c9e8;border-radius:14px;background:linear-gradient(135deg,#f6f2ff,#fcfaff);text-decoration:none;color:#57407f;box-shadow:0 8px 24px rgba(96,70,150,.06)}
.lesson-sql-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-sql-link span{font-weight:850}
.lesson-sql-link:hover{border-color:#b39bdb;transform:translateY(-1px)}
@media(max-width:650px){.lesson-sql-link{display:block}.lesson-sql-link span{display:block;margin-top:4px}}

.lesson-api-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #bcd9df;border-radius:14px;background:linear-gradient(135deg,#edfafd,#f9feff);text-decoration:none;color:#275c66;box-shadow:0 8px 24px rgba(42,125,142,.06)}
.lesson-api-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-api-link span{font-weight:850}
.lesson-api-link:hover{border-color:#8fbec8;transform:translateY(-1px)}
@media(max-width:650px){.lesson-api-link{display:block}.lesson-api-link span{display:block;margin-top:4px}}

.lesson-state-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #e0caa7;border-radius:14px;background:linear-gradient(135deg,#fff8e9,#fffdf8);text-decoration:none;color:#76541e;box-shadow:0 8px 24px rgba(145,105,38,.05)}
.lesson-state-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}.lesson-state-link span{font-weight:850}.lesson-state-link:hover{border-color:#c9a86f;transform:translateY(-1px)}
@media(max-width:650px){.lesson-state-link{display:block}.lesson-state-link span{display:block;margin-top:4px}}

.lesson-ts-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #bfcce9;border-radius:14px;background:linear-gradient(135deg,#eef3ff,#fafbff);text-decoration:none;color:#34538f;box-shadow:0 8px 24px rgba(57,89,158,.06)}
.lesson-ts-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}.lesson-ts-link span{font-weight:850}.lesson-ts-link:hover{border-color:#93aad7;transform:translateY(-1px)}
@media(max-width:650px){.lesson-ts-link{display:block}.lesson-ts-link span{display:block;margin-top:4px}}

.lesson-react-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #b9dce7;border-radius:14px;background:linear-gradient(135deg,#edfbff,#f9feff);text-decoration:none;color:#236274;box-shadow:0 8px 24px rgba(47,137,161,.06)}
.lesson-react-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}.lesson-react-link span{font-weight:850}.lesson-react-link:hover{border-color:#87c3d3;transform:translateY(-1px)}
@media(max-width:650px){.lesson-react-link{display:block}.lesson-react-link span{display:block;margin-top:4px}}

.lesson-network-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #b9d6df;border-radius:14px;background:linear-gradient(135deg,#edf9fb,#f9fdff);text-decoration:none;color:#285c6b;box-shadow:0 8px 24px rgba(39,112,132,.06)}
.lesson-network-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-network-link span{font-weight:850}
.lesson-network-link:hover{border-color:#87bdca;transform:translateY(-1px)}
@media(max-width:650px){.lesson-network-link{display:block}.lesson-network-link span{display:block;margin-top:4px}}

.lesson-incident-link{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-20px 0 30px;padding:14px 16px;border:1px solid #e0c6ba;border-radius:14px;background:linear-gradient(135deg,#fff4ee,#fffaf7);text-decoration:none;color:#7a4531;box-shadow:0 8px 24px rgba(145,79,50,.06)}
.lesson-incident-link strong{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.lesson-incident-link span{font-weight:850}
.lesson-incident-link:hover{border-color:#cfa18d;transform:translateY(-1px)}
@media(max-width:650px){.lesson-incident-link{display:block}.lesson-incident-link span{display:block;margin-top:4px}}

/* Rich programming chapter components */
.concept-map,.project-flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0;padding:16px;border:1px solid #d7e1ee;border-radius:16px;background:linear-gradient(135deg,#f7faff,#fff)}
.concept-map b,.project-flow span{padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #d6e0ed;box-shadow:0 4px 12px rgba(31,51,86,.04)}
.concept-map>span{color:#8190a5;font-weight:900}
.why-box{margin:18px 0;padding:15px 17px;border-left:4px solid #315fcb;border-radius:0 13px 13px 0;background:#eef4ff;color:#354c75}
.execution-table{display:grid;gap:7px;margin:18px 0}
.execution-table>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;padding:10px 12px;border:1px solid #dde5ef;border-radius:11px;background:#fff}
.execution-table b{color:#315fcb}
.two-models{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}
.two-models>div{padding:18px;border:1px solid #d9e2ed;border-radius:16px;background:#fff}
.two-models b{font-size:1.1rem}.two-models p{margin:.35em 0}
.project-flow{justify-content:flex-start}.project-flow span{font-size:.84rem;font-weight:800;color:#405474}
@media(max-width:700px){.execution-table>div{grid-template-columns:1fr}.two-models{grid-template-columns:1fr}.concept-map{align-items:flex-start}}

.three-models{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}
.three-models>div{padding:18px;border:1px solid #d9e2ed;border-radius:16px;background:#fff}
.three-models b{font-size:1.05rem}.three-models p{margin:.35em 0}
@media(max-width:700px){.three-models{grid-template-columns:1fr}}

.inline-mastery-meta{margin-top:9px;color:#77869c;font:700 11px ui-monospace,SFMono-Regular,Consolas,monospace}
.inline-test-plan{margin:12px 0;padding:12px 14px;border:1px solid #d3def0;border-radius:12px;background:#f8faff}
.inline-test-plan strong{font-size:.82rem;color:#354f82}.inline-test-plan ul{margin:7px 0 0;padding-left:20px}
.inline-test-plan li{margin:3px 0;color:#52627b;font-size:.88rem}
.inline-check-results{min-height:0;margin:10px 0 0;padding:0;background:transparent;color:#34445c;white-space:pre-wrap;font:700 12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
.inline-check-results:empty{display:none}
.inline-prediction{margin:16px 0;padding:14px;border:1px solid #e0d2ae;border-radius:14px;background:#fffaf0}
.inline-prediction strong{color:#72551b}.inline-prediction p{margin:.4em 0}
.inline-prediction-choices{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.inline-prediction-choices button{padding:8px 11px;border:1px solid #d3bf8e;border-radius:9px;background:#fff;font:inherit;font-weight:800;cursor:pointer}
.inline-prediction-result{font-size:.86rem;font-weight:800}.inline-prediction-result.ok{color:#22683d}.inline-prediction-result.bad{color:#8a5b14}
.inline-actions button[data-action="verify"]{background:#0d766e;color:#fff;border-color:#0d766e}
