/* The practice page and the course (gen-learn.mjs), served as /latex/learn.css after /latex/style.css, whose tokens
   it reuses. A question is a white card: the formula, the box to type in, the typed maths under it, then Hint and
   Show answer. A right answer gives the card a green edge and a tick, nothing louder. */
:root{--ok:#2d7a4b;--ok-line:#9fcfb1}
/* admin test mode (learn-gate.js): nothing shows until the server has confirmed an admin */
html.learn-locked body{visibility:hidden}
@media screen{:root[data-theme="dark"]{--ok:#7cc79a;--ok-line:#2f6b47}}
.pnote{color:var(--text-3);font-size:14.5px;margin:-12px 0 10px}
.course-ref{margin:0 0 22px}
.progress{display:flex;align-items:center;gap:14px;margin:0 0 6px;font-size:14.5px;color:var(--text-2)}
.progress .bar{flex:0 1 260px;height:6px;border-radius:99px;background:var(--surface-3);overflow:hidden}
.progress .bar i{display:block;height:100%;width:0;background:var(--ok);transition:width .25s}
@media(prefers-reduced-motion:reduce){.progress .bar i{transition:none}}
.topic-nav{margin:14px 0 6px}
.topic{margin:40px 0 0;scroll-margin-top:84px}
.topic-h{display:flex;align-items:baseline;justify-content:space-between;gap:6px 14px;flex-wrap:wrap}
.topic-h h2{margin:0}
.topic-count{font-size:14px;color:var(--text-3);font-variant-numeric:tabular-nums}
.topic-intro{color:var(--text-2);margin:8px 0 4px;max-width:72ch}
.topic-intro .katex{font-size:1em}
.topic-ref{font-size:14.5px;margin:0 0 16px;color:var(--text-3)}
.qs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(330px,100%),1fr));gap:14px;counter-reset:q}
.q{position:relative;display:flex;flex-direction:column;gap:9px;min-width:0;background:var(--surface);border:1px solid var(--border);
border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:14px 16px 13px;counter-increment:q;transition:border-color .2s}
.q::before{content:counter(q);position:absolute;top:9px;left:12px;font-size:12px;font-weight:600;color:var(--text-3)}
.q.is-right{border-color:var(--ok-line);box-shadow:0 0 0 1px var(--ok-line),var(--sh-1)}
.q-target{min-height:70px;display:flex;align-items:center;justify-content:center;overflow-x:auto;overflow-y:hidden;padding:8px 6px;color:var(--text)}
.q-target .katex-display{margin:0}
.q-target .katex{font-size:1.22em}
.q-in{width:100%;min-width:0;font-family:var(--mono);font-size:15px;line-height:1.4;padding:9px 11px;color:var(--text);
background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r)}
.q-in::placeholder{color:var(--text-3)}
.q-in:focus{outline:2px solid var(--accent-line);outline-offset:0;border-color:var(--accent);background:var(--surface)}
.q.is-right .q-in{border-color:var(--ok-line)}
.q-keys{display:none;gap:6px;flex-wrap:wrap}
@media(pointer:coarse){.q:focus-within .q-keys{display:flex}}
.q-keys button{min-width:42px;height:38px;padding:0 10px;font-family:var(--mono);font-size:17px;color:var(--text);
background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);cursor:pointer}
/* what the visitor typed, typeset under the box and centred like the question, so the two can be compared */
.q-mine{display:flex;align-items:center;justify-content:center;min-height:46px}
.q-mine .out{max-width:100%;overflow-x:auto;overflow-y:hidden;color:var(--text)}
.q-mine .out:empty::before{content:attr(data-empty);font-size:13px;color:var(--text-3)}
.q-mine .out .katex-display{margin:0}
.q-mine .out .katex{font-size:1.12em}
.stale{opacity:.4}
.q-status{min-height:1.45em;margin:0;font-size:14px;color:var(--text-2)}
.q.is-right .q-status{color:var(--ok);font-weight:600}
.q-tools{display:flex;gap:8px;flex-wrap:wrap}
.q-btn{font:inherit;font-size:13.5px;font-weight:500;color:var(--text-2);background:var(--surface);border:1px solid var(--border);
border-radius:var(--r);padding:5px 12px;cursor:pointer}
.q-btn:hover{color:var(--text);border-color:var(--border-strong)}
.q-btn[aria-expanded="true"]{background:var(--surface-2);color:var(--text)}
.q-btn:focus-visible,.q-keys button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.q-hint{margin:0;font-size:14.5px;line-height:1.55;color:var(--text-2)}
.q-ans{display:flex;gap:8px;align-items:stretch}
.q-ans[hidden],.q-hint[hidden]{display:none}
.q-ans code{flex:1;min-width:0;display:flex;align-items:center;padding:8px 11px;font-size:14px;white-space:pre;overflow-x:auto;
color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r)}
.q-ans .copybtn{padding:0 14px;font-size:13.5px}
.learn-cta{margin-top:44px}
/* the course: a box to edit a formula and see it change */
.tryit{margin:0 0 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-1);overflow:hidden}
.tryit-out{min-height:62px;display:flex;align-items:center;justify-content:center;padding:14px 16px;overflow-x:auto;overflow-y:hidden;
background:var(--surface-2);border-bottom:1px solid var(--border)}
.tryit-out .katex-display{margin:0}
.tryit-out .katex{font-size:1.2em}
.tryit label{display:block;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);padding:10px 16px 0}
.tryit .q-in{display:block;width:calc(100% - 32px);margin:6px 16px 14px}
.lesson-kicker{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}
.lesson{max-width:800px}
/* a lesson's exercises sit in the blog's prose (blog.css), whose list, paragraph and inline-code rules they undo */
.lesson-body ol.qs{padding:0;margin:8px 0 28px}
.lesson-body .qs .q{margin:0}
.lesson-body .q p{margin:0}
.lesson-body .q-ans code{font-size:14px;padding:8px 11px;color:var(--text);border-radius:var(--r);overflow-wrap:normal}
.lesson-body blockquote{margin:0 0 22px;padding:14px 20px;background:var(--surface);border:1px solid var(--border);
border-left:3px solid var(--accent-line);border-radius:var(--r)}
.lesson-body blockquote p{margin:0}
.lesson-nav{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:36px 0 0;padding:18px 0 0;border-top:1px solid var(--border)}
.lesson-nav a{font-weight:600}
.lessons{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:10px;counter-reset:l}
.lessons li{display:flex;gap:14px;align-items:baseline;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
padding:14px 18px;counter-increment:l}
.lessons li::before{content:counter(l);flex:none;width:1.6em;font-weight:600;color:var(--text-3);font-variant-numeric:tabular-nums}
.lessons .lt{font-weight:600}
.lessons .ld{display:block;color:var(--text-2);font-size:15px;margin-top:2px}
.lessons + .topic-ref{margin-top:18px}
@media(max-width:520px){.q-target .katex{font-size:1.1em}.q{padding:13px 13px 12px}}
