:root{--ink:#1d2433;--muted:#5b6475;--line:#d7dce5;--bg:#f7f8fa;--accent:#1f6f50;--accent2:#e8f4ee;--bad:#9b2c2c;--badbg:#fdecec;--target:#fff7d6;--sel:#2b6cb0}
*{box-sizing:border-box}
body{margin:0;font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:#fff}
a{color:var(--accent)}
header.site{border-bottom:1px solid var(--line);background:#fff}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 1rem}
.brand{font-weight:700;text-decoration:none;color:var(--ink);font-size:1.15rem}
.brand span{color:var(--accent)}
nav a{margin-left:1rem;text-decoration:none}
.points{font-size:.9rem;color:var(--muted);margin-left:1rem}
.wrap{max-width:980px;margin:0 auto;padding:0 1rem}
main .wrap{padding-top:1.2rem;padding-bottom:3rem}
h1{font-size:1.9rem;line-height:1.25;margin:.6rem 0}
h2{font-size:1.35rem;margin-top:2rem}
code{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:0 .25em;font-size:.92em}
.lead{font-size:1.1rem;color:var(--muted)}
.cta{display:inline-block;background:var(--accent);color:#fff;padding:.6rem 1rem;border-radius:6px;text-decoration:none;font-weight:600}
.example{background:var(--bg);border-left:4px solid var(--accent);padding:.6rem 1rem;margin:1rem 0}
.exercise{border:1px solid var(--line);border-radius:8px;padding:1rem;margin:1.2rem 0;background:#fff}
.exercise h3{margin:.1rem 0 .5rem;font-size:1.05rem}
.exercise.done h3::after{content:" \2713";color:var(--accent)}
.gridwrap{overflow-x:auto;margin:.6rem 0;border:1px solid var(--line)}
table.grid{border-collapse:collapse;font:14px/1.3 "Segoe UI",Arial,sans-serif;min-width:100%}
table.grid th{background:#eef0f4;color:var(--muted);font-weight:500;padding:2px 6px;border:1px solid var(--line);text-align:center;min-width:2.2rem;user-select:none}
table.grid td{border:1px solid var(--line);padding:3px 6px;white-space:nowrap;min-width:5.5rem;height:1.7rem;cursor:cell}
table.grid td.num{text-align:right}
table.grid td.hdr{font-weight:600}
table.grid td.target{background:var(--target);outline:2px solid #e0b100;outline-offset:-2px}
table.grid td.fill{background:var(--target)}
table.grid td.ok{background:var(--accent2)}
table.grid td.wrongcell{background:var(--badbg)}
table.grid td.sel{outline:2px solid var(--sel);outline-offset:-2px}
.fbar{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.fbar .addr{font:600 14px monospace;background:var(--bg);border:1px solid var(--line);padding:.35rem .5rem;border-radius:4px;min-width:3.5rem;text-align:center}
.fbar .fx{font-style:italic;color:var(--muted)}
.fbar input{flex:1;min-width:14rem;font:15px monospace;padding:.4rem .5rem;border:1px solid #9aa3b2;border-radius:4px}
button{font:inherit;padding:.4rem .8rem;border-radius:5px;border:1px solid #9aa3b2;background:#fff;cursor:pointer}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.inspector{font:13px monospace;color:var(--muted);min-height:1.2em;margin-top:.3rem}
.feedback{margin-top:.6rem;padding:.5rem .75rem;border-radius:6px;display:none}
.feedback.bad{display:block;background:var(--badbg);color:var(--bad)}
.feedback.good{display:block;background:var(--accent2);color:var(--accent)}
.feedback.info{display:block;background:var(--bg);color:var(--ink)}
.gate{border:2px dashed var(--line);border-radius:8px;padding:1rem 1.2rem;background:var(--bg);margin:1.2rem 0}
.lesson-list{list-style:none;padding:0}
.lesson-list li{border:1px solid var(--line);border-radius:6px;padding:.6rem .8rem;margin:.5rem 0;display:flex;justify-content:space-between;gap:1rem}
.tag{font-size:.8rem;padding:.05rem .5rem;border-radius:999px;background:var(--accent2);color:var(--accent);white-space:nowrap}
.tag.locked{background:#eef0f4;color:var(--muted)}
.tag.done{background:var(--accent);color:#fff}
.pager{display:flex;justify-content:space-between;margin-top:2rem}
footer.site{border-top:1px solid var(--line);color:var(--muted);font-size:.9rem;padding:1.5rem 0;background:var(--bg)}
.hero{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}
.hero>div,.exercise{min-width:0}
.gridwrap{max-width:100%}
.topic-table{margin-top:.6rem;min-width:0!important;width:auto}
.clock{font-weight:600;margin-left:.5rem}
.faq dt{font-weight:600;margin-top:1rem}
.faq dd{margin:.2rem 0 0 0}
@media (max-width:640px){h1{font-size:1.5rem}nav a{margin-left:.6rem}.points{display:none}}
