:root{--ink:#172337;--muted:#5e6b75;--paper:#fbfaf6;--line:#e4e1d7;--teal:#117b78;--soft:#eaf5f3;--coral:#dd6a58}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px system-ui,-apple-system,Segoe UI,sans-serif}main{max-width:650px;margin:auto;padding:18px}button{font:inherit;cursor:pointer}.topbar{display:flex;align-items:center;gap:8px;padding:0 0 14px;border-bottom:1px solid var(--line)}.topbar b{color:var(--teal);letter-spacing:-.5px}.topbar span{flex:1}.topbar button,.stage button{border:1px solid var(--line);border-radius:9px;background:white;padding:9px 11px;font-weight:700}.topbar .primary{background:var(--teal);border-color:var(--teal);color:#fff}.home{padding:46px 4px}.home h1{font-size:45px;line-height:1;margin:0 0 12px;letter-spacing:-2px}.home h1 em{font-family:Georgia,serif;color:var(--coral);font-weight:400}.home p{color:var(--muted);line-height:1.5}.groups{display:grid;gap:10px}.group{background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.group summary{padding:14px;cursor:pointer;font-weight:800}.group summary small{float:right;color:var(--teal)}.problem{width:100%;padding:11px 14px;text-align:left;border:0;border-top:1px solid #f0eee8;background:#fff;color:var(--ink)}.problem:hover{background:var(--soft)}.pill{float:right;padding:2px 7px;border-radius:999px;background:#f0efe8;color:var(--muted);font-size:11px}.lesson{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;margin-top:17px}.eyebrow{color:var(--teal);font-size:12px;font-weight:900;letter-spacing:1px}.lesson h1{font-size:31px;letter-spacing:-1.2px;margin:10px 0 5px}.brief{color:var(--muted);line-height:1.45;margin:0 0 18px}.stages{display:flex;gap:5px;overflow:auto;margin:0 -2px 16px}.stage{white-space:nowrap;border:0!important;padding:8px 10px!important;color:var(--muted)}.stage.active{background:var(--teal);border-color:var(--teal)!important;color:#fff}.content{border-top:1px solid var(--line);padding-top:18px}.content h2{font-size:20px;margin:0 0 8px}.content p,.content li{line-height:1.48;color:#35434c}.content ul{padding-left:20px}.problem-explanation{margin:14px 0;padding:13px;border-radius:11px;background:#f5f5ef}.problem-explanation h3{margin:0 0 6px;font-size:16px}.problem-explanation p{margin:0}.hint{margin-top:14px;border:1px solid #c7e2dc;border-radius:11px;background:#f3fbf9;padding:11px}.hint summary{color:var(--teal);font-weight:800;cursor:pointer}.code{white-space:pre-wrap;overflow:auto;background:#21343a;color:#edf7f5;border-radius:12px;padding:14px;font:13px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}.fix{margin:10px 0;padding:12px;border-left:3px solid var(--coral);background:#fff4f1;border-radius:0 8px 8px 0}.bottom{display:flex;justify-content:space-between;gap:8px;margin-top:18px}.bottom button{padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;font-weight:800}.bottom .next{background:var(--teal);border-color:var(--teal);color:#fff}
.mode-grid{display:grid;gap:12px;margin-top:28px}.mode-card{display:block;width:100%;padding:20px;text-align:left;border:1px solid var(--line);border-radius:15px;background:#fff;color:var(--ink)}.mode-card:hover{border-color:var(--teal);background:var(--soft)}.mode-card b{display:block;font-size:20px}.mode-card span{display:block;margin-top:5px;color:var(--muted);line-height:1.4}.mode-card.primary{background:var(--teal);border-color:var(--teal);color:#fff}.mode-card.primary span{color:#e4f5f2}.mode-heading{margin:20px 0 10px;font-size:25px}.walkthrough-start{display:flex;align-items:center;gap:12px;margin:18px 0 12px;padding:14px;border:1px solid var(--line);border-radius:13px;background:#fff}.walkthrough-start div{flex:1}.walkthrough-start b{display:block;font-size:17px}.walkthrough-start span{color:var(--muted);font-size:14px}.walkthrough-start .walkthrough-or{font-weight:800}.walkthrough-start button{border:0;border-radius:9px;background:var(--teal);color:#fff;padding:11px 13px;font-weight:800;white-space:nowrap}.language-picker,.difficulty-picker{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:700}.language-picker select,.difficulty-picker select{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:7px 9px;font:inherit}.home .language-picker{margin-top:22px}.difficulty{display:inline-block;margin-left:7px;padding:3px 8px;border-radius:999px;background:#f0efe8;color:#516169;font-size:11px;font-weight:900;letter-spacing:.4px;vertical-align:middle}.difficulty.hard{background:#fff0e9;color:#9a4738}.difficulty.medium{background:#fff8dd;color:#79600a}.difficulty.easy{background:#eaf5f3;color:#117b78}.drill-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;margin-top:17px}.drill-card h1{font-size:30px;letter-spacing:-1px;margin:10px 0}.drill-context{padding:13px;border-radius:11px;background:#f5f5ef;margin:14px 0}.drill-context b{display:block;margin-bottom:5px}.drill-context p{margin:0;color:#35434c;line-height:1.48}.drill-prompt{margin:16px 0 8px;font-weight:700}.drill-choice{display:block;width:100%;margin:7px 0;padding:12px;border:1px solid #d9ded9;border-radius:9px;background:#fff;text-align:left;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.drill-choice:hover{border-color:var(--teal);background:var(--soft)}@media(max-width:520px){.topbar{flex-wrap:wrap}.topbar span{order:3;flex-basis:100%}.topbar .language-picker{margin-left:auto}.walkthrough-start{align-items:stretch;flex-wrap:wrap}.walkthrough-start .walkthrough-or{display:none}.walkthrough-start button{width:100%}}

.walkthrough-start{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0 12px;padding:0;border:0;background:transparent}
.walkthrough-start .walkthrough-option{display:block;width:100%;min-height:104px;padding:16px;text-align:left;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);white-space:normal}
.walkthrough-start .walkthrough-option:hover{border-color:var(--teal);background:var(--soft)}
.walkthrough-start .walkthrough-option b{display:block;font-size:18px}
.walkthrough-start .walkthrough-option span{display:block;margin-top:5px;color:var(--muted);line-height:1.4}
.walkthrough-start .walkthrough-option.selected{background:var(--teal);border-color:var(--teal);color:#fff}
.walkthrough-start .walkthrough-option.selected span{color:#e4f5f2}
@media(max-width:520px){.walkthrough-start{grid-template-columns:1fr}}

.choice-list{display:grid;gap:8px;margin:12px 0}.choice-list button,.quiz button{width:100%;padding:11px;border:1px solid #d9ded9;border-radius:9px;background:#fff;text-align:left}.choice-list button:hover,.quiz button:hover{border-color:var(--teal);background:var(--soft)}.answer-feedback{margin:12px 0;padding:11px;border-radius:9px}.answer-feedback.good{background:#dff0e9;color:#21594e}.answer-feedback.bad{background:#fff0e9;color:#7b4537}.quiz{margin-top:18px;padding-top:15px;border-top:1px solid var(--line)}.quiz b{font-size:17px}.algorithm-builder{display:grid;gap:12px;margin:16px 0}.algorithm-builder>div{padding:13px;border:1px solid var(--line);border-radius:11px;background:#f8f7f2}.step-bank,.answer-bank{display:grid;gap:8px;margin-top:9px}.algorithm-candidate,.answer-step{width:100%;padding:10px;border:1px solid #d9ded9;border-radius:8px;background:#fff;text-align:left}.algorithm-candidate:hover{border-color:var(--teal);background:var(--soft)}.answer-step{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:grab}.answer-step button{border:0;background:transparent;color:var(--coral);font-size:20px;line-height:1}.empty-answer{margin:0;color:var(--muted)}.complexity-step{margin-top:16px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#f8f7f2}.code-continue{margin-top:12px}.lesson .difficulty{font-size:11px}.authored{float:right;margin-right:8px;color:var(--teal);font-size:11px;font-weight:900}

/* Navigation keeps its hierarchy at every width instead of squeezing controls together. */
.topbar{min-width:0}.topbar>span{min-width:0}.topbar>span b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .language-picker,.topbar .difficulty-picker{white-space:nowrap}

/* A drill's blank must be immediately recognizable in both snippets. */
.code .code-blank{display:inline-block;padding:0 5px;border-radius:4px;background:#ffdb8a;color:#172337;font-weight:900;box-shadow:0 0 0 1px #f0b742}
.code .code-masked-answer{display:inline-block;padding:0 5px;border-radius:4px;background:#f5e9bf;color:#5d4a16;font:inherit;font-weight:800}
.drill-code-context{margin:16px 0}.drill-context-code{max-height:22rem;overflow:auto;overscroll-behavior:contain;margin:0}
.drill-details{margin:12px 0;border:1px solid #c7e2dc;border-radius:11px;background:#f3fbf9}.drill-details summary{padding:11px;cursor:pointer;color:var(--teal);font-weight:800}.drill-details-body{padding:0 12px 12px;border-top:1px solid #c7e2dc;color:#35434c;line-height:1.48}.drill-details-body ul,.drill-details-body ol{margin:10px 0 0;padding-left:20px}.drill-details-body p{margin:10px 0 0}.drill-solution-details{margin-top:12px}
.drill-next{display:block;width:100%;margin-top:12px;padding:12px;border:1px solid var(--teal);border-radius:9px;background:var(--teal);color:#fff;font-weight:800}
.problem-source{margin-top:20px;padding-top:13px;border-top:1px solid var(--line);font-size:13px;font-weight:800}.problem-source a{color:var(--teal)}
@media(max-width:640px){main{padding:12px}.topbar{align-items:center;gap:8px}.topbar [data-home]{order:1;flex:0 0 auto}.topbar>span{order:2;flex:1 1 0}.topbar .language-picker{order:3;flex:1 1 100%;justify-content:space-between;margin:0}.topbar .difficulty-picker{order:4;flex:1 1 100%;justify-content:space-between}.topbar>button:not([data-home]){order:5;flex:1 1 calc(50% - 4px);min-width:0;white-space:normal}}

/* A code drill has one primary action. Give it its own clear row rather than
   letting a long label collapse into a narrow flex cell. */
@media(max-width:640px){.drill-topbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:10px}.drill-topbar [data-home]{grid-column:1;grid-row:1;order:initial}.drill-topbar>span{grid-column:2;grid-row:1;order:initial;min-width:0}.drill-topbar .language-picker{grid-column:1;grid-row:2;order:initial;min-width:0;justify-content:space-between}.drill-topbar .difficulty-picker{grid-column:2;grid-row:2;order:initial;min-width:0;justify-content:space-between}.drill-topbar [data-next-drill]{grid-column:1 / -1;grid-row:3;order:initial;width:100%;white-space:nowrap}}
@media(max-width:400px){.drill-topbar{grid-template-columns:1fr}.drill-topbar [data-home]{grid-column:1;grid-row:1}.drill-topbar>span{grid-column:1;grid-row:2}.drill-topbar .language-picker{grid-column:1;grid-row:3}.drill-topbar .difficulty-picker{grid-column:1;grid-row:4}.drill-topbar [data-next-drill]{grid-column:1;grid-row:5}}

.wip-tag{display:inline-block;margin:4px 0 0 7px;padding:3px 8px;border-radius:999px;background:#9a4738;color:#fff;font-size:10px;font-weight:900;letter-spacing:.45px;vertical-align:middle}.wip-banner{margin:14px 0;padding:13px 14px;border:2px solid #dd6a58;border-radius:11px;background:#fff0e9;color:#6f352b}.wip-banner b{display:block;font-size:16px;text-transform:uppercase;letter-spacing:.5px}.wip-banner p{margin:5px 0 0;color:#6f352b;line-height:1.45}
