:root{--text:#5b6472;--text-h:#0b1020;--bg:#fbfbfd;--surface:#fff;--surface-sunken:#f3f4f8;--border:#e2e4ec;--border-strong:#cbd0dd;--accent:#6d4aff;--accent-text:#fff;--accent-soft:#6d4aff1f;--danger:#c2410c;--success:#15803d;--commit:#6d4aff;--commit-stroke:#4a2fd0;--commit-text:#fff;--edge:#b6bccb;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--radius:10px;--gap:16px;font:16px/1.55 var(--sans);color-scheme:light dark;color:var(--text);background:var(--bg);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--text:#9aa3b2;--text-h:#f2f4f8;--bg:#0d1017;--surface:#151924;--surface-sunken:#10141d;--border:#262c3a;--border-strong:#39415380;--accent:#9d7bff;--accent-text:#14101f;--accent-soft:#9d7bff29;--danger:#fb923c;--success:#4ade80;--commit:#7c5cff;--commit-stroke:#a48bff;--commit-text:#fff;--edge:#3b4356}}*{box-sizing:border-box}body{background:var(--bg);min-height:100svh;margin:0}h1,h2,h3{color:var(--text-h);margin:0;font-weight:600;line-height:1.2}h1{letter-spacing:-.02em;font-size:clamp(28px,5vw,40px)}h2{letter-spacing:.04em;text-transform:uppercase;color:var(--text);font-size:15px;font-weight:600}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--mono);background:var(--surface-sunken);border:1px solid var(--border);color:var(--text-h);border-radius:5px;padding:2px 6px;font-size:.9em}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.page{text-align:left;flex-direction:column;gap:20px;width:100%;max-width:880px;margin:0 auto;padding:32px 20px 96px;display:flex}@media (width<=640px){.page{gap:16px;padding:20px 14px 72px}}.back-link{color:var(--text);align-self:start;font-size:14px}.back-link:hover{color:var(--accent)}.lede{max-width:62ch;font-size:17px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.panel-muted{background:var(--surface-sunken);border:1px dashed var(--border-strong);border-radius:var(--radius);padding:12px 16px}.section-label{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.lesson-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.lesson-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-h);align-items:center;gap:12px;padding:14px 16px;transition:border-color .15s,transform .15s;display:flex}.lesson-card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}.lesson-number{background:var(--surface-sunken);border:1px solid var(--border);width:26px;height:26px;font-family:var(--mono);color:var(--text);border-radius:50%;flex:none;place-items:center;font-size:12px;display:grid}.lesson-card.is-complete .lesson-number{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.lesson-title{font-size:15px;font-weight:500}.progress-note{font-size:14px;font-family:var(--mono);color:var(--text)}.graph-scroll{overscroll-behavior-x:contain;width:100%;overflow-x:auto}.graph-scroll svg{display:block}.graph-legend{color:var(--text);opacity:.8;max-width:62ch;margin-top:2px;font-size:12.5px}.remote-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-sunken);padding:6px 12px 4px}.remote-panel-title{font-family:var(--mono);letter-spacing:.06em;color:var(--text);text-transform:uppercase;font-size:12px}.repo-status{font-family:var(--mono);grid-template-columns:max-content 1fr;gap:2px 16px;margin:0;font-size:13px;display:grid}.repo-status dt{color:var(--text);opacity:.75}.repo-status dd{color:var(--text-h);margin:0}.repo-status dd.is-empty{color:var(--text);opacity:.4}.command-form{flex-direction:column;gap:8px;display:flex}.command-row{background:var(--surface-sunken);border:1px solid var(--border-strong);border-radius:var(--radius);align-items:center;gap:10px;padding:8px 10px;display:flex}.command-row:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.command-prompt{font-family:var(--mono);color:var(--accent);font-weight:700}.command-input{min-width:0;font-family:var(--mono);color:var(--text-h);background:0 0;border:none;outline:none;flex:1;padding:4px 0;font-size:14px}.command-input::placeholder{color:var(--text);opacity:.5}.button-primary{border:1px solid var(--accent);background:var(--accent);color:var(--accent-text);border-radius:7px;flex:none;padding:6px 14px;font-size:14px;font-weight:600}.button-primary:hover{filter:brightness(1.08)}.button-quiet{border:1px solid var(--border-strong);color:var(--text);background:0 0;border-radius:7px;padding:6px 12px;font-size:14px}.button-quiet:hover{color:var(--text-h);border-color:var(--accent)}.command-completions{flex-wrap:wrap;gap:6px;display:flex}.completion-chip{font-family:var(--mono);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:3px 8px;font-size:12px}.completion-chip:hover{border-color:var(--accent);color:var(--text-h)}.command-error,.command-hint{font-family:var(--mono);margin:0;font-size:13px}.command-error{color:var(--danger)}.command-hint{color:var(--text);opacity:.85}.notice{border-radius:var(--radius);padding:12px 14px;font-size:14px}.notice-conflict{border:1px solid var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--danger)}.notice-done{border:1px solid var(--success);background:color-mix(in srgb, var(--success) 10%, transparent);color:var(--text-h);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.notice-info{font-family:var(--mono);color:var(--text);font-size:13px}.notice-tip{border:1px solid var(--border-strong);background:var(--accent-soft);color:var(--text-h);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.notice-tip>div{flex:260px}kbd{font-family:var(--mono);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-h);border-radius:4px;padding:1px 5px;font-size:.85em}.actions{flex-wrap:wrap;gap:10px;display:flex}.lesson-header .eyebrow{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:12px}.concept p{max-width:68ch;margin-bottom:10px}.concept p:last-child{margin-bottom:0}.task{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0;padding:12px 16px}.task h2{margin-bottom:2px}.task p{color:var(--text-h);max-width:66ch}.graphs{flex-direction:column;gap:12px;display:flex}.graph-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px 14px}.graph-block-goal{background:var(--surface-sunken);border-style:dashed}.match-badge{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--success);border:1px solid var(--success);border-radius:999px;padding:1px 8px;font-size:11px}.chapter-blurb{max-width:66ch;margin-bottom:10px;font-size:15px}.exercise-tabs{flex-wrap:wrap;gap:6px;display:flex}.exercise-tab{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 14px;font-size:13px}.exercise-tab:hover{border-color:var(--accent);color:var(--text-h)}.exercise-tab.is-current{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.todo-panel{border:1px solid var(--accent);background:var(--accent-soft);border-radius:var(--radius);padding:14px 16px}.todo-list{counter-reset:todo;flex-direction:column;gap:6px;margin:0 0 14px;padding:0;list-style:none;display:flex}.todo-row{background:var(--surface);border:1px solid var(--border);border-radius:7px;flex-wrap:wrap;align-items:center;gap:10px;padding:6px 10px;display:flex}.todo-row.is-drop{opacity:.55}.todo-row.is-drop .todo-commit{text-decoration:line-through}.todo-commit{min-width:44px}.todo-actions{gap:4px;display:flex}.todo-action{border:1px solid var(--border);color:var(--text);font-size:12px;font-family:var(--mono);background:0 0;border-radius:999px;padding:2px 10px}.todo-action:hover{border-color:var(--accent);color:var(--text-h)}.todo-action.is-current{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.todo-move{gap:4px;margin-left:auto;display:flex}.todo-move button{padding:2px 8px;line-height:1.2}.console{flex-direction:column;gap:8px;display:flex}.response{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);flex-direction:column;gap:4px;margin:0;padding:10px 14px;font-size:14px;list-style:none;display:flex}.response li{color:var(--text-h);padding-left:16px;position:relative}.response li:before{content:"→";color:var(--accent);position:absolute;left:0}.response-error{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent)}.response-error li{color:var(--danger)}.response-error li:before{content:"✕";color:var(--danger)}.response-info li:before{content:"ℹ"}.stuck{color:var(--text);font-size:13px}.stuck-note{opacity:.6}.link-button{color:var(--accent);font-size:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.progress-track{background:var(--surface-sunken);border:1px solid var(--border);border-radius:999px;height:5px;margin-bottom:12px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .3s}.lesson-card.is-next{border-color:var(--accent)}.lesson-go{color:var(--accent);white-space:nowrap;margin-left:auto;font-size:13px}button:disabled{opacity:.4;cursor:not-allowed}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}details summary{cursor:pointer;color:var(--text);font-size:14px}details[open] summary{margin-bottom:6px}
