:root{--bg:#fff;--bg-elevated:#f7f8fa;--fg:#16181d;--muted:#5c6470;--border:#e3e6ea;--accent:#1f5fd0;--accent-fg:#fff;--accent-soft:#eaf1fd;--focus:#1f5fd0;--success:#1a7f45;--success-soft:#e8f6ee;--code-keyword:#0033b3;--code-function:#00627a;--code-string:#067d17;--code-number:#1750eb;--code-comment:#8c8c8c;--code-type:#871094;--code-operator:#5c6470;--radius:10px;--container:1080px;--space:1rem;--font-mono:ui-monospace, "SF Mono", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace}:root[data-theme=dark]{--bg:#0f1115;--bg-elevated:#171a20;--fg:#e6e8eb;--muted:#98a1ad;--border:#272c34;--accent:#6ea8fe;--accent-fg:#0f1115;--accent-soft:#1b2536;--focus:#6ea8fe;--success:#4cc38a;--success-soft:#13261c;--code-keyword:#cf8e6d;--code-function:#56a8f5;--code-string:#6aab73;--code-number:#2aacb8;--code-comment:#7a7e85;--code-type:#c77dbb;--code-operator:#a9b0ba}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1115;--bg-elevated:#171a20;--fg:#e6e8eb;--muted:#98a1ad;--border:#272c34;--accent:#6ea8fe;--accent-fg:#0f1115;--accent-soft:#1b2536;--focus:#6ea8fe;--success:#4cc38a;--success-soft:#13261c;--code-keyword:#cf8e6d;--code-function:#56a8f5;--code-string:#6aab73;--code-number:#2aacb8;--code-comment:#7a7e85;--code-type:#c77dbb;--code-operator:#a9b0ba}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.65}code,pre{font-family:ui-monospace,SF Mono,Cascadia Code,Menlo,Consolas,monospace;font-size:.9em}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}.container{width:100%;max-width:var(--container);padding-inline:var(--space);margin:0 auto}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:var(--space);top:var(--space);z-index:10;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .85rem}.site-header{border-bottom:1px solid var(--border);background:var(--bg);z-index:5;position:sticky;top:0}.site-header__inner{justify-content:space-between;align-items:center;gap:var(--space);min-height:60px;display:flex}.site-header__brand{color:var(--fg);align-items:center;gap:.6rem;font-weight:600;text-decoration:none;display:inline-flex}.site-header__mark{background:var(--accent);width:32px;height:32px;color:var(--accent-fg);letter-spacing:.02em;border-radius:8px;place-items:center;font-size:.7rem;font-weight:700;display:inline-grid}.site-nav{align-items:center;gap:.35rem;display:flex}.site-nav__link{color:var(--fg);border-radius:var(--radius);padding:.45rem .7rem;text-decoration:none}.site-nav__link:hover{background:var(--bg-elevated)}.icon-button{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:36px;height:36px;color:var(--fg);cursor:pointer;place-items:center;font-size:1rem;display:inline-grid}.icon-button:hover{background:var(--bg-elevated)}.theme-icon--moon,:root[data-theme=dark] .theme-icon--sun{display:none}:root[data-theme=dark] .theme-icon--moon{display:inline}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-icon--sun{display:none}:root:not([data-theme=light]) .theme-icon--moon{display:inline}}.site-main{padding-block:2.5rem 4rem}h1{margin:0 0 .75rem;font-size:clamp(1.75rem,1.2rem + 2vw,2.4rem);line-height:1.25}h2{margin:0 0 .5rem;font-size:clamp(1.25rem,1.05rem + .8vw,1.5rem);line-height:1.3}.lead{color:var(--muted);max-width:62ch;margin:0 0 2rem;font-size:1.05rem}.button{border-radius:var(--radius);background:var(--accent);color:var(--accent-fg);border:1px solid #0000;padding:.65rem 1.25rem;font-weight:600;text-decoration:none;display:inline-block}.button:hover{filter:brightness(1.08)}.grid{grid-template-columns:1fr;gap:1rem;display:grid}@media (min-width:640px){.grid--features{grid-template-columns:repeat(3,1fr)}}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);padding:1.15rem}.card__title{margin:0 0 .35rem;font-size:1.05rem}.card__text{color:var(--muted);margin:0}.module{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1.15rem}.module__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.75rem;display:flex}.module__meta{color:var(--muted);font-size:.9rem}.lesson-list{gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.lesson-list__item{border-radius:var(--radius);background:var(--bg);border:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem .75rem;display:flex}.badge{background:var(--accent-soft);color:var(--accent);border:1px solid var(--border);border-radius:999px;flex:none;padding:.15rem .55rem;font-size:.8rem}.narrow{max-width:26rem;margin:0 auto}.form{gap:1rem;margin-top:1.5rem;display:grid}.field{gap:.35rem;display:grid}.field__label{font-size:.95rem;font-weight:600}.field__input{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--fg);font:inherit;padding:.6rem .75rem;font-size:1rem}.field__hint{color:var(--muted);font-size:.85rem}.form__error{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-elevated);color:var(--fg);margin:0;padding:.6rem .75rem}.form__aside{color:var(--muted);margin-top:1.25rem}.button[disabled]{opacity:.6;cursor:default}.site-nav__link--button{font:inherit;cursor:pointer;background:0 0;border:1px solid #0000}.site-nav__user{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:14rem;font-size:.9rem;overflow:hidden}@media (max-width:560px){.site-nav__user{display:none}}.progress-summary{color:var(--muted);margin:-.5rem 0 2rem;font-size:.95rem}.lesson-list__link{color:var(--fg);border-bottom:1px solid #0000;text-decoration:none}.lesson-list__link:hover{border-bottom-color:var(--accent)}.lesson-list__body{gap:.15rem;min-width:0;display:grid}.lesson-list__summary{color:var(--muted);font-size:.85rem;line-height:1.45}.badge--ready{background:var(--bg);color:var(--muted)}.badge--done{border-color:var(--success);background:var(--success-soft);color:var(--success);font-weight:600}.lesson-list__item--done{border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:var(--success-soft)}.module--done{border-color:var(--success);box-shadow:inset 4px 0 0 var(--success)}.lesson__back{margin-bottom:1rem;font-size:.9rem}.lesson__text{max-width:48rem;margin-inline:auto}.lesson__text .lead{max-width:none}.prose{line-height:1.7}.prose h2{margin-top:2.5rem;font-size:1.3rem}.prose code{background:var(--bg-elevated);border:1px solid var(--border);font-family:var(--font-mono);border-radius:4px;padding:.1em .35em;font-size:.9em}.prose pre{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);tab-size:4;padding:.9rem 1.1rem;line-height:1.6;overflow-x:auto}.prose pre code{color:var(--fg);background:0 0;border:none;padding:0;font-size:.875rem}.sql-keyword{color:var(--code-keyword);font-weight:600}.sql-function{color:var(--code-function)}.sql-string,.sql-ident{color:var(--code-string)}.sql-number{color:var(--code-number)}.sql-comment{color:var(--code-comment);font-style:italic}.sql-type{color:var(--code-type)}.sql-operator{color:var(--code-operator)}.note{--note-accent:var(--accent);border:1px solid var(--border);border-left:3px solid var(--note-accent);border-radius:var(--radius);background:var(--bg-elevated);margin:1.5rem 0;padding:.9rem 1.1rem}.note>:first-child{margin-top:0}.note>:last-child{margin-bottom:0}.note__title{color:var(--note-accent);margin:0 0 .6rem;font-weight:600}.note--info{--note-accent:var(--accent)}.note--tip{--note-accent:#2e9e6b}.note--important{--note-accent:#8a63d2}.note--warning{--note-accent:#c98a1b}.note--alert{--note-accent:#d1495b}:root[data-theme=dark] .note--tip{--note-accent:#56c596}:root[data-theme=dark] .note--important{--note-accent:#a98eea}:root[data-theme=dark] .note--warning{--note-accent:#e0a63c}:root[data-theme=dark] .note--alert{--note-accent:#f07785}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .note--tip{--note-accent:#56c596}:root:not([data-theme=light]) .note--important{--note-accent:#a98eea}:root:not([data-theme=light]) .note--warning{--note-accent:#e0a63c}:root:not([data-theme=light]) .note--alert{--note-accent:#f07785}}.cut{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);margin:1rem 0}.cut__summary{cursor:pointer;border-radius:var(--radius);align-items:center;gap:.5rem;padding:.6rem .9rem;font-weight:600;list-style:none;display:flex}.cut__summary::-webkit-details-marker{display:none}.cut__summary:before{content:"▸";color:var(--muted);transition:transform .15s}.cut[open]>.cut__summary:before{transform:rotate(90deg)}.cut__summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.cut__body{border-top:1px solid var(--border);padding:0 .9rem .4rem}.cut__body>:first-child{margin-top:.8rem}.note .cut{background:var(--bg-elevated)}.prose table{border-collapse:collapse;width:100%;margin:1.25rem 0}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:.5rem .75rem}.prose th{background:var(--bg-elevated)}.workspace{grid-template-columns:minmax(0,1fr) 16rem;align-items:start;gap:1.5rem;margin-top:2.5rem;display:grid}.workspace__main{min-width:0}.tasks{flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.tasks__tab{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--muted);font:inherit;cursor:pointer;align-items:center;gap:.4rem;padding:.4rem .8rem;font-size:.9rem;display:inline-flex}.tasks__tab--active{border-color:var(--accent);color:var(--fg);background:var(--bg-elevated)}.tasks__solved{color:var(--accent);font-weight:700}.task__prompt{margin:0 0 1rem}.task__prompt>:first-child{margin-top:0}.task__prompt>:last-child{margin-bottom:0}.editor{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);overflow:hidden}.editor .cm-editor{max-height:22rem}.editor .cm-focused{outline:none}.task__actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.task__hint{color:var(--muted);font-size:.85rem}.button--quiet{color:var(--fg);border:1px solid var(--border);background:0 0}.verdict{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);border-left-width:3px;gap:.25rem;margin:1.25rem 0 0;padding:.75rem 1rem;display:grid}.verdict--ok{border-left-color:var(--accent)}.verdict--wrong,.verdict--error{border-left-color:var(--muted)}.verdict__detail{color:var(--muted);font-size:.9rem}.result{margin-top:1.25rem}.result__note{color:var(--muted);flex-wrap:wrap;gap:.5rem;margin:0 0 .5rem;font-size:.85rem;display:flex}.result__timing{margin-left:auto}.table-scroll{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.result__table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:.85rem}.result__table th,.result__table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:.4rem .7rem}.result__table th{background:var(--bg-elevated);position:sticky;top:0}.result__table tr:last-child td{border-bottom:none}.cell-null{color:var(--muted);font-style:italic}.schema{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);padding:1rem;position:sticky;top:1rem}.schema__title{margin:0 0 .75rem;font-size:.95rem}.schema__list,.schema__columns{margin:0;padding:0;list-style:none}.schema__table{width:100%;color:var(--fg);font:inherit;font-family:var(--font-mono);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.4rem;padding:.35rem 0;font-size:.85rem;display:flex}.schema__caret{color:var(--muted)}.schema__count{color:var(--muted);margin-left:auto;font-size:.8rem}.schema__columns{margin:0 0 .5rem 1.1rem}.schema__column{font-family:var(--font-mono);justify-content:space-between;gap:.5rem;padding:.15rem 0;font-size:.8rem;display:flex}.schema__column-type{color:var(--muted);text-align:right}.schema__required{font-size:.75em}.schema__more{color:var(--accent);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;margin-top:.75rem;padding:0;font-size:.85rem}.schema__more:hover{text-decoration:underline}.schema__empty{color:var(--muted);margin:0;font-size:.85rem}@media (max-width:900px){.workspace{grid-template-columns:minmax(0,1fr)}.schema{position:static}}
