:root{--bg: #f5f7fa;--surface: #ffffff;--text: #1b2330;--muted: #5f6b7a;--border: #dde3ea;--accent: #0f6cbd;--accent-text: #ffffff;--accent-soft: #e6f0fa;--ok: #107c41;--ok-soft: #e5f4ea;--bad: #c4314b;--bad-soft: #fbe9ec;--radius: 12px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #11151b;--surface: #1a2029;--text: #e6eaf0;--muted: #9aa5b4;--border: #2c3441;--accent: #4ca0e8;--accent-text: #0b1520;--accent-soft: #1b2f44;--ok: #4fbf7a;--ok-soft: #173126;--bad: #ef6f86;--bad-soft: #3a1c23;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5}a{color:var(--accent)}h1{font-size:1.75rem;margin:0 0 .75rem}h2{font-size:1.2rem;margin:2rem 0 .75rem}h3{margin:.25rem 0 .5rem}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.75rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:.5rem;font-weight:700;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:var(--accent);color:var(--accent-text)}nav{display:flex;gap:.25rem;flex-wrap:wrap}nav a{padding:.35rem .75rem;border-radius:8px;color:var(--muted);text-decoration:none}nav a.active,nav a:hover{background:var(--accent-soft);color:var(--accent)}main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:2rem 1rem 3rem}footer{padding:1rem;text-align:center;font-size:.85rem;color:var(--muted);border-top:1px solid var(--border)}.muted{color:var(--muted)}.api-status{display:inline-block;margin-bottom:.35rem;padding:.1rem .6rem;border-radius:999px;font-family:ui-monospace,Consolas,monospace;font-size:.78rem}.api-status.on{background:var(--ok-soft);color:var(--ok)}.api-status.off{background:var(--bg);color:var(--muted)}.diag{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin:1rem 0 1.5rem}.diag .card{padding:.9rem}.diag strong{display:block;font-size:1.3rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.narrow{max-width:720px;margin:0 auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}.grid.two{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-top:1rem}.stack{display:grid;gap:.75rem}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-top:1rem}.row.between{justify-content:space-between;margin-top:0}.row.end{justify-content:flex-end}.row.center{justify-content:center}a.button{display:inline-block;text-decoration:none}button,a.button,select{font:inherit;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button.primary,a.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.bad-btn{color:var(--bad);border-color:var(--bad);background:transparent;margin-top:1rem}.row button.bad-btn{margin-top:0}.hero{padding:2rem;border-radius:var(--radius);background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--border)}.hero p{max-width:60ch}.domain .weight{font-size:.8rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.field{display:grid;gap:.35rem;margin-bottom:1rem;font-weight:600}.quiz-meta{display:flex;justify-content:space-between;gap:.5rem;flex-wrap:wrap;font-size:.9rem;color:var(--muted)}.tag{font-size:.8rem;padding:.15rem .55rem;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.bar{height:6px;background:var(--border);border-radius:999px;overflow:hidden;margin:.6rem 0}.bar>div{height:100%;background:var(--accent);transition:width .3s}.bar>div.good{background:var(--ok)}.question{font-size:1.2rem;margin:1.25rem 0 .75rem}.options{display:grid;gap:.6rem;margin-top:1rem}.option{display:flex;align-items:center;gap:.75rem;text-align:left;padding:.8rem 1rem}.option:disabled{opacity:1;cursor:default}.option .letter{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--bg);font-weight:700;font-size:.85rem}.option.selected{border-color:var(--accent);background:var(--accent-soft)}.option.correct{border-color:var(--ok);background:var(--ok-soft)}.option.wrong{border-color:var(--bad);background:var(--bad-soft)}.yesno{display:grid;gap:.6rem;margin-top:1rem}.yesno-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border:1px solid var(--border);border-radius:8px}.yesno-row.correct{border-color:var(--ok)}.yesno-row.wrong{border-color:var(--bad);background:var(--bad-soft)}.yesno-buttons{display:flex;gap:.4rem;flex:none}.yesno-buttons .option{padding:.4rem .9rem}@media(max-width:600px){.yesno-row{flex-direction:column;align-items:stretch}}.explain{margin-top:1rem;padding:1rem;border-radius:8px;border-left:4px solid}.explain.ok{background:var(--ok-soft);border-color:var(--ok)}.explain.bad{background:var(--bad-soft);border-color:var(--bad)}.score{font-size:2.5rem;font-weight:700;margin:.5rem 0}.score span{font-size:1.2rem;color:var(--muted)}.score.small{font-size:2rem;margin:0}.review{list-style:none;padding:0;display:grid;gap:.5rem}.review li{display:flex;gap:.75rem;padding:.6rem;border-radius:8px}.review li.ok>span{color:var(--ok);font-weight:700}.review li.bad{background:var(--bad-soft)}.review li.bad>span{color:var(--bad);font-weight:700}.boxes{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem;margin:1.25rem 0}.boxes>div{display:grid;justify-items:center;padding:.5rem;border-radius:8px;border:1px solid var(--border);background:var(--surface)}.boxes>div.current{border-color:var(--accent);background:var(--accent-soft)}.boxes span{font-size:1.3rem;font-weight:700}.boxes small{color:var(--muted);font-size:.75rem}.flashcard{width:100%;min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;border-radius:var(--radius);text-align:center}.flashcard.flipped{background:var(--accent-soft)}.flashcard .term{font-size:1.8rem;font-weight:700}.flashcard .definition{font-size:1.1rem;max-width:55ch}.flashcard .example{font-style:italic;color:var(--muted)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:.92rem}th,td{text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:600}.pill{font-size:.78rem;padding:.1rem .55rem;border-radius:999px;background:var(--bg);color:var(--muted);white-space:nowrap}.pill.bad{background:var(--bad-soft);color:var(--bad)}.errors{margin:.35rem 0 0;padding-left:1.1rem;color:var(--bad);font-size:.82rem}.pill.ok{background:var(--ok-soft);color:var(--ok)}.loader-overlay{--page: var(--surface);--page-line: color-mix(in srgb, var(--accent) 22%, transparent);--cover: var(--accent);position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-content:center;justify-items:center;gap:1.75rem;background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .25s ease,visibility 0s linear .25s}.loader-overlay.show{opacity:1;visibility:visible;transition:opacity .25s ease}.loader-scene{position:relative;width:200px;height:150px;perspective:900px;animation:book-float 3s ease-in-out infinite}.book{--w: 90px;--h: 120px;position:absolute;left:50%;top:50%;width:calc(var(--w) * 2);height:var(--h);margin:calc(var(--h) / -2) 0 0 calc(var(--w) * -1);transform-style:preserve-3d;transform:rotateX(52deg) rotate(-14deg)}.cover{position:absolute;top:-6px;width:calc(var(--w) + 6px);height:calc(var(--h) + 12px);background:linear-gradient(135deg,var(--cover),color-mix(in srgb,var(--cover) 70%,black));transform:translateZ(-2px)}.cover.left{left:-6px;border-radius:8px 2px 2px 8px}.cover.right{left:var(--w);border-radius:2px 8px 8px 2px}.spine{position:absolute;left:calc(var(--w) - 3px);top:-6px;width:6px;height:calc(var(--h) + 12px);background:color-mix(in srgb,var(--cover) 60%,black);transform:translateZ(-1px)}.page,.face{position:absolute;top:0;width:var(--w);height:var(--h);background:radial-gradient(circle at 24% 16%,var(--page-line) 0 5px,transparent 6px),radial-gradient(circle at 34% 13%,var(--page-line) 0 7px,transparent 8px),radial-gradient(circle at 44% 17%,var(--page-line) 0 5px,transparent 6px),repeating-linear-gradient(to bottom,transparent 0 30px,var(--page-line) 30px 32px,transparent 32px 40px),var(--page);background-size:100% 100%,100% 100%,100% 100%,72% 100%,100% 100%;background-position:center;background-repeat:no-repeat,no-repeat,no-repeat,no-repeat,no-repeat;border:1px solid var(--border)}.page.left{left:0;border-radius:4px 0 0 4px}.page.right{left:var(--w);border-radius:0 4px 4px 0}.sheet{position:absolute;left:var(--w);top:0;width:var(--w);height:var(--h);transform-origin:left center;transform-style:preserve-3d;animation:page-flip 1.8s cubic-bezier(.45,.05,.35,1) infinite}.face{left:0;backface-visibility:hidden}.face.front{border-radius:0 4px 4px 0;box-shadow:inset 12px 0 18px -14px color-mix(in srgb,var(--text) 35%,transparent)}.face.back{border-radius:4px 0 0 4px;transform:rotateY(180deg);box-shadow:inset -12px 0 18px -14px color-mix(in srgb,var(--text) 35%,transparent)}.book-shadow{position:absolute;left:50%;bottom:-6px;width:170px;height:22px;margin-left:-85px;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--text) 28%,transparent),transparent);animation:shadow-pulse 3s ease-in-out infinite}.loader-text{display:grid;justify-items:center;gap:.35rem;margin:0;color:var(--muted);font-size:.9rem}.loader-term{font-weight:600;color:var(--accent);font-size:1.05rem;animation:term-in .4s ease}@keyframes page-flip{0%,8%{transform:rotateY(0) translateZ(1px)}92%,to{transform:rotateY(-180deg) translateZ(1px)}}@keyframes book-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes shadow-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(.88);opacity:.7}}@keyframes term-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.loader-scene,.book-shadow,.sheet,.loader-term{animation:none}.sheet{display:none}}@media(max-width:600px){.topbar{padding:.75rem 1rem}.hero{padding:1.25rem}.boxes small{display:none}}
