:root{--bg:#fbfaf7;--surface:#fff;--text:#1d1d1b;--muted:#5f5e5a;--border:#e2e0d9;--accent:#2b6cb0;--accent-soft:#e6eef8;--good:#2f7d4f;--good-soft:#e4f2ea;--bad:#b3412e;--bad-soft:#f8e7e3;--code-bg:#f4f3ef;--font:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#161615;--surface:#1f1f1d;--text:#ecebe6;--muted:#a8a69f;--border:#34332f;--accent:#7fb0e8;--accent-soft:#1f2d3d;--good:#7cc79a;--good-soft:#1d3326;--bad:#ec8e7b;--bad-soft:#3a221d;--code-bg:#262624}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;line-height:1.6}a{color:var(--accent)}header.site{border-bottom:1px solid var(--border);background:var(--surface)}header.site .inner,main{max-width:860px;margin:0 auto;padding:0 16px}header.site .inner{align-items:center;gap:16px;height:56px;display:flex}header.site .brand{color:var(--text);font-weight:700;text-decoration:none}main{padding-top:24px;padding-bottom:64px}h1{margin:.2em 0 .4em;font-size:1.8rem;line-height:1.25}h2{margin-top:2em;font-size:1.3rem}code{background:var(--code-bg);border-radius:4px;padding:.1em .35em;font-size:.92em}.muted{color:var(--muted)}.badge{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.75rem}.badge.good{background:var(--good-soft);color:var(--good)}.badge.warn{background:var(--accent-soft);color:var(--muted,inherit);border:1px dashed}.badge.lvl7{background:var(--bad-soft);color:var(--bad)}.phase{margin-top:28px}.phase h2{margin:0 0 8px;font-size:1.05rem}.weeks{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.week{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:12px 14px;text-decoration:none;display:block}.week:hover{border-color:var(--accent)}.week.soon{opacity:.6}.week .num{color:var(--muted);justify-content:space-between;gap:8px;font-size:.8rem;display:flex}.week .t{margin:2px 0;font-weight:600}.week .d{color:var(--muted);font-size:.85rem}.cell{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:20px 0;overflow:hidden}.cell-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 12px;font-size:.9rem;display:flex}.cell-title{font-weight:600}.cell-editor .cm-editor{background:var(--code-bg);font-size:14px}.cell-editor .cm-gutters{background:var(--code-bg);border-right:1px solid var(--border)}.cell-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.cell-status{color:var(--muted);font-size:.85rem}button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:6px 12px;font-size:.9rem}button.primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}button.ghost{color:var(--muted);border-color:#0000}button:disabled{opacity:.5;cursor:default}.cell-output{border-top:1px solid var(--border);padding:10px 12px}.cell-output pre{white-space:pre-wrap;margin:0 0 8px;font-size:13px;overflow-x:auto}.cell-output pre.err{color:var(--bad)}.cell-output img{background:#fff;border-radius:6px;max-width:100%}.tests{margin:4px 0;padding:0;font-size:.92rem;list-style:none}.tests .pass{color:var(--good)}.tests .fail{color:var(--bad)}.verdict{border-radius:8px;margin:6px 0 0;padding:8px 10px;font-size:.92rem}.verdict.good{background:var(--good-soft);color:var(--good)}.verdict.bad{background:var(--bad-soft);color:var(--bad)}.answer-first{border:1px solid var(--border);border-left:4px solid var(--accent);background:var(--surface);border-radius:10px;margin:20px 0;padding:12px 14px}.answer-first .q{margin:0 0 8px;font-weight:600}.answer-first textarea{width:100%;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;margin-bottom:8px;padding:8px}.answer-first .hint{color:var(--muted);margin:6px 0 0;font-size:.8rem}.answer-first .mine,.answer-first .key{white-space:pre-wrap;border-radius:8px;margin-bottom:8px;padding:8px 10px}.answer-first .mine{background:var(--code-bg)}.answer-first .mine.old{border:1px dashed var(--border,#999);background:0 0}.checklist{border:1px solid var(--border,#ccc);border-radius:10px;margin:16px 0;padding:12px 16px}.checklist label{align-items:flex-start;gap:8px;padding:4px 0;display:flex}.checklist .muted{margin:4px 0 0}.answer-first .key{background:var(--good-soft)}.answer-first .grade{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.callout{background:var(--accent-soft);border-radius:10px;margin:16px 0;padding:10px 14px}.callout.trap{background:var(--bad-soft)}.tests .detail{color:var(--muted);margin-left:1.2em;font-size:.85rem}.quiz{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:24px 0;padding:12px 14px}.quiz-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.quiz-q{border:0;margin:0 0 14px;padding:0}.quiz-q legend{margin-bottom:4px;font-weight:600}.quiz-opt{cursor:pointer;border-radius:8px;align-items:flex-start;gap:8px;padding:6px 8px;display:flex}.quiz-opt input{margin-top:.35em}.quiz-opt.right{background:var(--good-soft)}.quiz-opt.wrong{background:var(--bad-soft)}.quiz-explain{color:var(--muted);margin:4px 0 0 8px;font-size:.92rem}.situation .sit-title{margin:0 0 6px;font-weight:700}.situation .key{white-space:normal}.situation .key>:first-child{margin-top:0}.situation .key table{border-collapse:collapse;font-size:.92rem}.situation .key td,.situation .key th{border:1px solid var(--border);padding:4px 8px}.media{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:16px 0;padding:12px 14px}.media.empty{border-style:dashed}.media figcaption{margin-bottom:8px}.media .video{padding-top:56.25%;position:relative}.media iframe{border:0;border-radius:8px;width:100%;height:100%;position:absolute;inset:0}.media audio{width:100%}.media p{margin:4px 0 0}.media-note{color:var(--muted);font-size:.9rem}.goals{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px}.goals ul{margin:6px 0 0;padding-left:20px}table{border-collapse:collapse;width:100%;margin:12px 0;font-size:.95rem;display:block;overflow-x:auto}th,td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}th{background:var(--code-bg)}blockquote{border-left:4px solid var(--border);color:var(--muted);margin:16px 0;padding:8px 14px}nav.site{gap:16px;margin-left:auto;font-size:.92rem;display:flex}nav.site a{color:var(--muted);text-decoration:none}nav.site a:hover{color:var(--accent)}.lesson-nav{border-top:1px solid var(--border);justify-content:space-between;gap:12px;margin-top:40px;padding-top:16px;display:flex}@media print{header.site,.lesson-nav,.no-print{display:none}body{color:#000;background:#fff}main{max-width:none}}pre.astro-code{border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-size:13px;overflow-x:auto;background-color:var(--code-bg)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) pre.astro-code,:root:not([data-theme=light]) pre.astro-code span{color:var(--shiki-dark)!important}}.deck{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:24px 0;padding:12px 14px}.deck-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.card{text-align:left;border:1px solid var(--border);background:var(--bg);border-radius:10px;flex-direction:column;gap:8px;width:100%;min-height:160px;padding:18px;font-size:1.05rem;line-height:1.5;display:flex}.card.flipped{background:var(--good-soft);border-color:var(--good)}.card-side{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.card-hint{color:var(--muted);margin-top:auto;font-size:.85rem}.deck-actions{justify-content:flex-end;gap:8px;margin-top:10px;display:flex}.deck-left{margin:8px 0 0;font-size:.85rem}.media video.video-file{background:#000;border-radius:8px;width:100%}.ai-feedback{margin-top:.75rem}.ai-feedback .ai-text{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:6px;margin-top:.5rem;padding:.75rem 1rem}.ai-feedback .ai-text p{white-space:pre-wrap;margin:.4rem 0 0}
