:root{--bg:#0f1420;--card:#182033;--card2:#1f2a42;--fg:#e8edf7;--muted:#8d9ab5;--pri:#7c5cff;--ok:#2fd18b;--bad:#ff5c6c;--warn:#ffb020;--bd:#2b3858}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}code,pre,.answer{font-family:ui-monospace,Consolas,Menlo,monospace}code{background:#0b101b;padding:1px 6px;border-radius:5px;font-size:.92em;color:#b9e3ff;word-break:break-word}h1{font-size:1.4rem;margin:.2em 0}.app{max-width:820px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}main{flex:1;padding:14px 14px 90px}.top{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg);border-bottom:1px solid var(--bd)}.brand{font-weight:700}.stats{display:flex;gap:14px}.stats .on{color:var(--warn)}.tabs{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;background:#0b101b;border-top:1px solid var(--bd);padding-bottom:env(safe-area-inset-bottom)}.tabs button{flex:1;max-width:200px;background:none;border:0;color:var(--muted);padding:8px 0;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;font-size:1.2rem}.tabs button.act{color:var(--fg)}.tabs small{font-size:.7rem}.stack{display:flex;flex-direction:column;gap:12px}.card{background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}.course.locked{opacity:.55}.row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:520px){.grid2{grid-template-columns:1fr}}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center;padding:40px 10px}.btn{background:var(--card2);color:var(--fg);border:1px solid var(--bd);border-radius:10px;padding:10px 14px;font-size:.95rem;cursor:pointer}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--pri);border-color:var(--pri);font-weight:600}.btn.big{padding:16px 12px;font-size:1rem}.btn.small{padding:6px 10px;align-self:flex-start}.icon{background:none;border:0;color:var(--muted);font-size:1.3rem;cursor:pointer}.bar{position:relative;height:10px;background:#0b101b;border-radius:6px;overflow:hidden;flex:1}.bar i{position:absolute;left:0;top:0;bottom:0;background:var(--pri);transition:width .3s}.bar i.seen{background:#5b4bb8aa}.bar i.m{background:var(--pri);z-index:2}.bar .m+.seen{z-index:1}.chip{font-size:.7rem;padding:2px 8px;border-radius:99px;background:var(--card2);border:1px solid var(--bd);color:var(--muted)}.chip.warn{color:var(--warn);border-color:var(--warn)}.units{display:flex;flex-direction:column;gap:6px}.unit{display:flex;justify-content:space-between;background:var(--card2);border:1px solid var(--bd);color:var(--fg);padding:10px 12px;border-radius:10px;cursor:pointer;text-align:left}.lesson{display:flex;flex-direction:column;gap:12px;padding-top:6px}.lesson-top{display:flex;align-items:center;gap:10px}.tags{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.prompt{font-size:1.1rem;line-height:1.5;margin:.2em 0}.code{background:#0b101b;border-radius:10px;padding:12px;margin:0;overflow:auto;color:#9fe8b6}.answer{width:100%;background:#0b101b;color:var(--fg);border:2px solid var(--bd);border-radius:10px;padding:14px;font-size:1rem;outline:none}.answer:focus{border-color:var(--pri)}.answer.ok{border-color:var(--ok)}.answer.bad{border-color:var(--bad)}.hint{color:var(--warn);font-size:.9rem}.feedback.ok{border-color:var(--ok)}.feedback.bad{border-color:var(--bad)}.explain{margin:0;color:#c6d0e6;line-height:1.45}.actions{display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:0;padding:8px 0;background:linear-gradient(transparent,var(--bg) 40%)}.actions .btn.primary{min-width:150px}.summary .big{font-size:3rem}.summary{align-items:center}.login{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;text-align:center}.logo{font-size:3rem;font-weight:800;color:var(--pri)}.bad-text{color:var(--bad)}.concept{border-top:1px solid var(--bd);padding-top:8px;display:flex;flex-direction:column;gap:4px}.dots{display:flex;gap:3px}.dots i{width:10px;height:10px;border-radius:50%;background:#0b101b;border:1px solid var(--bd)}.dots i.on{background:var(--ok);border-color:var(--ok)}.dots i.half{background:var(--warn);border-color:var(--warn)}.trow{display:flex;flex-direction:column;gap:4px}.heat{display:grid;grid-template-columns:repeat(28,1fr);gap:3px}.heat i{aspect-ratio:1;background:#0b101b;border-radius:3px}.heat .l1{background:#3b3180}.heat .l2{background:#5d49d6}.heat .l3{background:var(--ok)}
