:root{--bg: #f4f6fb;--ink: #0f172a;--muted: #5b6478;--line: #e3e8f0;--card: #ffffff;--brand: #4f46e5;--brand-2: #7c3aed;--ok: #16a34a;--ok-soft: #e8f7ee;--bad: #dc2626;--bad-soft: #fdeaea;--code-bg: #10172b;--code-ink: #dbe4f5;--radius: 16px;--shadow: 0 10px 30px -12px rgba(15, 23, 42, .18);--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:radial-gradient(900px 480px at 85% -10%,rgba(124,58,237,.14),transparent 60%),radial-gradient(700px 420px at -10% 20%,rgba(79,70,229,.12),transparent 55%),var(--bg);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}a{color:var(--brand)}.wrap{max-width:880px;margin:0 auto;padding:32px 20px 72px}.brand-pill{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;font-weight:700;font-size:13px;letter-spacing:.06em;padding:6px 14px;border-radius:999px;text-transform:uppercase;box-shadow:0 6px 18px -6px #4f46e58c}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{border:none;border-radius:12px;font-weight:600;font-size:15px;padding:12px 20px;transition:transform .06s ease,box-shadow .15s ease,background .15s ease;background:var(--line);color:var(--ink)}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 8px 20px -8px #4f46e599}.btn-ghost{background:transparent;border:1px solid var(--line)}.btn-ok{background:var(--ok);color:#fff}.btn-sm{padding:8px 14px;font-size:13px;border-radius:10px}.hero{text-align:center;padding:26px 0 10px}.hero h1{font-size:clamp(30px,5vw,46px);line-height:1.1;margin:18px 0 10px;letter-spacing:-.02em;font-weight:800}.hero h1 .grad{background:linear-gradient(90deg,var(--brand),var(--brand-2));-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{color:var(--muted);font-size:17px;margin:0 auto 26px;max-width:560px}.subject-box{padding:24px;margin-top:8px}.subject-box label{font-weight:700;font-size:14px;display:block;margin-bottom:10px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 15px;font-size:13.5px;font-weight:600;color:var(--ink);transition:all .12s ease}.chip:hover{border-color:var(--brand);color:var(--brand)}.chip.active{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;border-color:transparent;box-shadow:0 6px 14px -6px #4f46e58c}.input-row{display:flex;gap:10px}.input-row input{flex:1;border:1.5px solid var(--line);border-radius:12px;padding:12px 16px;font-size:15px;font-family:inherit;outline:none;background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.input-row input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #4f46e524}.hint{color:var(--muted);font-size:12.5px;margin:10px 2px 0}.recent{margin-top:30px}.recent h2{font-size:15px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 12px}.topic-row{display:flex;align-items:center;gap:14px;padding:14px 18px;margin-bottom:10px}.topic-row .who{flex:1;min-width:0}.topic-row .who b{display:block;font-size:16px}.topic-row .who span{color:var(--muted);font-size:13px}.pill{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.pill.ready{background:var(--ok-soft);color:var(--ok)}.pill.generating{background:#fff4e0;color:#b45309}.pill.error{background:var(--bad-soft);color:var(--bad)}.pill.muted{background:#eef1f7;color:var(--muted)}.stat{color:var(--muted);font-size:13px}.icon-btn{background:none;border:none;color:var(--muted);font-size:17px;padding:6px 8px;border-radius:8px;line-height:1}.icon-btn:hover{background:#f1f4fa;color:var(--bad)}.gen-card{padding:30px;text-align:center;max-width:620px;margin:30px auto 0}.spinner{width:58px;height:58px;margin:8px auto 18px;border-radius:50%;border:4px solid #e4e7f4;border-top-color:var(--brand);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.gen-card h2{margin:0 0 6px;font-size:24px;letter-spacing:-.01em}.gen-card .sub{color:var(--muted);margin:0 0 22px;font-size:14.5px}.gen-list{text-align:left;margin-top:6px}.gen-item{display:flex;align-items:center;gap:12px;padding:12px 4px;border-top:1px solid #f0f2f8}.gen-item .st{width:26px;text-align:center;font-weight:800}.gen-item .st.done{color:var(--ok)}.gen-item .st.err{color:var(--bad)}.gen-item .st.run{color:var(--brand);animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{50%{opacity:.25}}.gen-item .meta{flex:1}.gen-item .meta b{display:block;font-size:15px}.gen-item .meta small{color:var(--muted)}.track{height:6px;background:#edf0f7;border-radius:999px;overflow:hidden;margin-top:6px}.track i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand),var(--brand-2));transition:width .3s ease}.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:18px}@media (max-width: 560px){.mode-grid{grid-template-columns:1fr}}.mode-card{padding:30px 26px;text-align:center;transition:transform .12s ease,box-shadow .15s ease,border-color .15s}.mode-card:hover{transform:translateY(-3px);border-color:#4f46e566;box-shadow:0 18px 40px -16px #4f46e559}.mode-card .emoji{font-size:40px}.mode-card h3{margin:12px 0 6px;font-size:21px}.mode-card p{color:var(--muted);font-size:14px;margin:0 0 18px;line-height:1.5}.mode-card .row-stats{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.mini-stat{background:#f2f4fa;border-radius:10px;padding:5px 11px;font-size:12.5px;font-weight:600;color:var(--ink)}.topbar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.topbar .crumb{flex:1;min-width:0}.topbar .crumb b{font-size:18px;display:block}.topbar .crumb small{color:var(--muted)}.bar{height:8px;background:#e8ebf3;border-radius:999px;overflow:hidden;margin-bottom:18px}.bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand),var(--brand-2));transition:width .25s ease}.q-card{padding:28px 28px 22px}.q-seq{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--brand)}.q-text{font-size:21px;line-height:1.4;font-weight:700;letter-spacing:-.01em;margin:10px 0 18px}.opt{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:13px 16px;margin-bottom:10px;font-size:15px;color:var(--ink);transition:border-color .12s ease,background .12s ease}.opt .letter{flex:none;width:24px;height:24px;border-radius:8px;background:#eef1f8;font-weight:800;font-size:12.5px;display:flex;align-items:center;justify-content:center}.opt:not(:disabled):hover{border-color:var(--brand)}.opt.correct{border-color:var(--ok);background:var(--ok-soft)}.opt.wrong{border-color:var(--bad);background:var(--bad-soft)}.opt.reveal-correct{border-color:var(--ok);background:var(--ok-soft)}.opt.correct .letter,.opt.reveal-correct .letter{background:var(--ok);color:#fff}.opt.wrong .letter{background:var(--bad);color:#fff}.explain{margin-top:16px;padding:14px 16px;border-radius:12px;background:#f1f5ff;border:1px solid #dbe3ff;font-size:14.5px;line-height:1.55}.explain b{color:var(--brand)}.q-foot{display:flex;justify-content:space-between;align-items:center;margin-top:20px}.results{text-align:center;padding:40px 30px}.results .score{font-size:clamp(40px,8vw,64px);font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,var(--brand),var(--brand-2));-webkit-background-clip:text;background-clip:text;color:transparent}.results .verdict{color:var(--muted);margin:6px 0 24px}.seq-head{display:flex;align-items:baseline;gap:10px;padding:20px 24px 0}.seq-head .n{font-size:13px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-2));border-radius:999px;padding:4px 12px;letter-spacing:.04em}.seq-head h3{margin:0;font-size:19px}.seq-head p{color:var(--muted);font-size:13.5px;flex-basis:100%;margin:4px 0 0}.sec-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:22px 26px 10px}.sec-label small{font-weight:600;opacity:.75}.snippet{border-radius:14px;overflow:hidden;margin:0 24px 12px;border:1px solid var(--line)}.snippet .head{display:flex;justify-content:space-between;align-items:center;background:#0d1326;color:#9fb0d3;padding:9px 16px;font-size:12.5px}.snippet .head b{color:#e6ecfa;font-weight:600}.snippet .lang{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;background:#ffffff14;padding:2px 8px;border-radius:6px}.snippet pre{margin:0;overflow-x:auto}.snippet code{display:block;padding:16px 18px;font-family:var(--mono);font-size:13px;line-height:1.65;color:var(--code-ink);background:var(--code-bg);white-space:pre}.snippet .foot{padding:10px 16px;background:#fafbfe;font-size:13.5px;color:var(--muted);line-height:1.55;border-top:1px solid #eef1f8}.deck-wrap{margin:0 24px 8px;perspective:1200px}.flashcard{position:relative;min-height:230px;border-radius:16px;cursor:pointer;transition:transform .28s cubic-bezier(.2,.7,.3,1);transform-style:preserve-3d}.flashcard.flipped{transform:rotateY(180deg)}.face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:34px;border-radius:16px;backface-visibility:hidden;-webkit-backface-visibility:hidden;font-size:17.5px;font-weight:600;line-height:1.5}.face.front{background:linear-gradient(150deg,#eef0ff,#fff 70%);border:1.5px solid #dfe3ff}.face.front .tap{position:absolute;bottom:14px;font-size:11.5px;color:var(--muted);font-weight:500}.face.back{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;transform:rotateY(180deg);box-shadow:var(--shadow);font-weight:500;font-size:16.5px}.face.back .hint{font-size:12.5px;opacity:.85;font-weight:500;position:absolute;bottom:14px;padding:0 20px}.deck-ctl{display:flex;align-items:center;justify-content:space-between;margin:12px 24px 26px}.size-row{margin-top:18px;border-top:1px dashed #e3e8f0;padding-top:14px}.size-label{font-weight:700;font-size:14px;display:block;margin-bottom:10px}.size-ctrls{display:flex;gap:10px;flex-wrap:wrap}.size-ctrls label{flex:1;min-width:130px;font-size:12px;font-weight:600;color:var(--muted);display:flex;flex-direction:column;gap:5px}.size-ctrls select{border:1.5px solid var(--line);border-radius:10px;padding:8px 10px;font-size:14px;font-weight:600;color:var(--ink);background:#fff;outline:none;font-family:inherit;cursor:pointer}.size-ctrls select:focus{border-color:var(--brand)}.tabs{display:flex;gap:8px;margin-bottom:14px}.tab{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:10px 16px;font-size:14px;font-weight:700;color:var(--muted);transition:all .12s ease}.tab.active{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;border-color:transparent;box-shadow:0 6px 14px -6px #4f46e580}.notes-panel{padding:2px 0}.notes-search{margin-bottom:12px}.notes-search input{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:10px 14px;font-size:14px;font-family:inherit;outline:none}.notes-search input:focus{border-color:var(--brand)}.note-item{border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:#fff;overflow:hidden}.note-q{display:flex;gap:12px;align-items:flex-start;padding:13px 16px;font-weight:600;font-size:15px;line-height:1.45;border-bottom:1px solid #eef1f8;background:#fafbff}.note-no{flex:none;width:24px;height:24px;border-radius:8px;font-size:12px;font-weight:800;background:#eef1ff;color:var(--brand);display:flex;align-items:center;justify-content:center;margin-top:1px}.note-answer{padding:12px 16px 14px 52px;font-size:14.5px;line-height:1.65;color:#333c53;white-space:pre-wrap}.section-block{padding:18px 24px 26px;margin-bottom:18px}.top-actions{display:flex;gap:8px}.msg{border-radius:12px;padding:13px 16px;font-size:14px;margin:14px 0}.msg.err{background:var(--bad-soft);color:var(--bad);border:1px solid #f6caca}.msg.warn{background:#fff7e8;color:#9a5b00;border:1px solid #f3ddb0}.fade-in{animation:fadein .25s ease}@keyframes fadein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
