:root{--bg1: #6a4cff;--bg2: #00c2ff;--accent: #ff7a59;--ink: #1f2a44;--muted: #6b7280;--correct: #2a9d8f;--correct-bg: #e6f7f4;--wrong: #e63946;--wrong-bg: #fdecec;--card: #ffffff;--radius: 20px;--shadow: 0 18px 40px rgba(31, 42, 68, .18)}*{box-sizing:border-box}body{margin:0;font-family:Nunito,Segoe UI,system-ui,-apple-system,sans-serif;color:var(--ink);background:linear-gradient(135deg,var(--bg1),var(--bg2));background-attachment:fixed;min-height:100vh}body:before{content:"🔭  ⚛️  🧲  🔊  🪁  ⚙️  🧪  🌊";position:fixed;top:0;right:0;bottom:0;left:0;font-size:2.6rem;opacity:.08;letter-spacing:5rem;line-height:6rem;word-spacing:2rem;pointer-events:none;z-index:0}.app{position:relative;z-index:1;max-width:720px;margin:0 auto;padding:28px 18px 60px}.app-header{text-align:center;color:#fff;margin-bottom:18px}.app-header h1{margin:0;font-size:2rem;text-shadow:0 3px 10px rgba(0,0,0,.2)}.tagline{margin:4px 0 0;opacity:.92;font-weight:700;letter-spacing:1px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px;animation:pop .35s cubic-bezier(.2,.9,.3,1.3)}@keyframes pop{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.welcome-card{text-align:center}.welcome-emoji{font-size:3rem;margin-bottom:6px}.welcome-card h2{margin:6px 0 12px;font-size:1.6rem}.welcome-text{color:var(--muted);font-size:1.05rem;line-height:1.6}.field-label{display:block;text-align:left;font-weight:800;margin:18px 0 8px}.text-input{width:100%;padding:14px 16px;font-size:1.05rem;font-family:inherit;border:2px solid #e3e8f0;border-radius:14px;transition:border-color .15s,box-shadow .15s}.text-input:focus{outline:none;border-color:var(--bg1);box-shadow:0 0 0 4px #6a4cff26}.textarea{resize:vertical;line-height:1.5}.btn{border:none;border-radius:14px;padding:14px 22px;font-size:1.05rem;font-weight:800;font-family:inherit;cursor:pointer;transition:transform .12s,box-shadow .12s,opacity .12s}.btn:active{transform:translateY(1px) scale(.99)}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 8px 18px #ff7a5966}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 22px #ff7a5973}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:#eef0ff;color:var(--bg1);box-shadow:none}.btn-ghost:hover:not(:disabled){transform:translateY(-2px);background:#e4e8ff}.big{width:100%;margin-top:22px;padding:16px;font-size:1.15rem}.choose-card{text-align:center}.choose-card h2{margin:0 0 8px}.quiz-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}.quiz-tile{--accent: #5b8def;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;background:#f7f9fc;border:2px solid #e3e8f0;border-top:6px solid var(--accent);border-radius:16px;padding:22px 16px;font-family:inherit;cursor:pointer;transition:transform .14s,box-shadow .14s,border-color .14s}.quiz-tile:hover{transform:translateY(-4px);box-shadow:0 14px 28px #1f2a4429;border-color:var(--accent)}.quiz-tile-emoji{font-size:2.6rem}.quiz-tile-title{font-size:1.25rem;font-weight:900;color:var(--ink)}.quiz-tile-sub{font-weight:800;color:var(--accent);font-size:.9rem}.quiz-tile-desc{color:var(--muted);font-size:.92rem;line-height:1.45;margin-top:4px}.quiz-tile-count{margin-top:8px;background:var(--accent);color:#fff;font-weight:800;font-size:.8rem;padding:4px 12px;border-radius:99px}.link-back{background:none;border:none;color:var(--bg1);font-family:inherit;font-weight:800;cursor:pointer;padding:0;margin:0 0 6px;float:left}.results-actions{flex-direction:column;gap:10px}.results-actions .big{margin-top:0}.section-list{display:flex;flex-direction:column;gap:12px;margin-top:20px}.section-row{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;background:#f7f9fc;border:2px solid #e3e8f0;border-left:6px solid var(--accent);border-radius:14px;padding:14px 16px;font-family:inherit;cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s}.section-row:hover{transform:translate(3px);box-shadow:0 8px 18px #1f2a441f}.section-row-main{display:flex;flex-direction:column;gap:3px;min-width:0}.section-row-title{font-weight:900;color:var(--ink)}.section-row-range{font-weight:700;color:var(--muted);font-size:.85rem}.section-row-topics{color:var(--muted);font-size:.85rem;font-weight:600}.grade-pill{flex:none;padding:6px 12px;border-radius:99px;font-weight:900;font-size:.9rem;color:#fff;white-space:nowrap}.grade-good{background:var(--correct)}.grade-ok{background:#f4a261}.grade-low{background:var(--wrong)}.grade-todo{background:var(--bg1)}.grade-empty{color:#c3cad8;font-weight:800}.grades-card h2{margin:0 0 12px}.quiz-tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.quiz-tab{background:#f0f3fa;border:2px solid #e3e8f0;border-radius:99px;padding:8px 16px;font-family:inherit;font-weight:800;color:var(--muted);cursor:pointer;transition:all .12s}.quiz-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.grades-scroll{overflow-x:auto;border-radius:12px;border:1px solid #e8ecf3}.grades-table{border-collapse:collapse;width:100%;font-size:.92rem}.grades-table th,.grades-table td{padding:10px 8px;text-align:center;border-bottom:1px solid #eef1f6}.grades-table thead th{background:#f4f6fb;font-weight:900;color:var(--ink)}.grades-table .sticky-col{position:sticky;left:0;text-align:left;background:#fff;font-weight:800;box-shadow:1px 0 #eef1f6}.grades-table thead .sticky-col{background:#f4f6fb}.grades-table tbody tr:nth-child(2n) td{background:#fbfcfe}.grades-table tbody tr:nth-child(2n) .sticky-col{background:#fbfcfe}.empty-grades{color:var(--muted);text-align:center;padding:24px 8px;font-weight:700}.grades-key{margin-top:12px}@media(max-width:520px){.quiz-grid{grid-template-columns:1fr}}.progress-wrap{height:12px;background:#fff6;border-radius:99px;overflow:hidden;margin-bottom:14px}.progress-bar{height:100%;background:linear-gradient(90deg,#ffd166,var(--accent));border-radius:99px;transition:width .4s ease}.quiz-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;color:#fff}.counter{font-weight:800}.topic-badge{background:#fffffff2;color:var(--bg1);padding:5px 14px;border-radius:99px;font-weight:800;font-size:.85rem}.question-text{margin:0 0 18px;font-size:1.45rem;line-height:1.4}.options{display:flex;flex-direction:column;gap:12px}.options-tf{flex-direction:row}.options-tf .option{flex:1;justify-content:center;font-size:1.2rem}.option{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:#f7f9fc;border:2px solid #e3e8f0;border-radius:14px;padding:14px 16px;font-size:1.05rem;font-family:inherit;font-weight:600;color:var(--ink);cursor:pointer;transition:all .15s}.option:hover:not(:disabled){border-color:var(--bg1);background:#f0f3ff;transform:translate(3px)}.option:disabled{cursor:default}.option.selected{border-color:var(--bg1);background:#eef0ff;box-shadow:0 0 0 3px #6a4cff1f}.option-letter{display:grid;place-items:center;width:34px;height:34px;flex:none;background:#fff;border:2px solid #d8dee9;border-radius:10px;font-weight:900;color:var(--bg1)}.option-label{flex:1}.option-correct{border-color:var(--correct);background:var(--correct-bg)}.option-correct .option-letter{background:var(--correct);color:#fff;border-color:var(--correct)}.option-wrong{border-color:var(--wrong);background:var(--wrong-bg)}.option-wrong .option-letter{background:var(--wrong);color:#fff;border-color:var(--wrong)}.option-dim{opacity:.55}.checkbox{display:grid;place-items:center;width:28px;height:28px;flex:none;border:2px solid #c3cad8;border-radius:8px;background:#fff;font-weight:900;color:#fff}.checkbox.checked{background:var(--bg1);border-color:var(--bg1)}.multi-hint{margin:-2px 0 4px;color:var(--muted);font-size:.9rem;font-weight:700}.feedback{margin-top:20px;padding:18px;border-radius:14px;animation:pop .3s ease}.feedback-correct{background:var(--correct-bg);border:2px solid var(--correct)}.feedback-wrong{background:var(--wrong-bg);border:2px solid var(--wrong)}.feedback-head{font-size:1.2rem;font-weight:900;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.feedback-correct .feedback-head{color:var(--correct)}.feedback-wrong .feedback-head{color:var(--wrong)}.ai-tag{font-size:.7rem;background:var(--bg1);color:#fff;padding:3px 9px;border-radius:99px;font-weight:800;letter-spacing:.3px}.feedback-note{margin:10px 0 0;font-weight:700}.feedback-answer{margin:10px 0 0}.feedback-explain{margin:10px 0 0;color:#374151;line-height:1.55}.actions{margin-top:22px;display:flex;justify-content:flex-end}.hint{color:var(--muted);font-size:.9rem}.error-text{color:var(--wrong);font-weight:700}.error-card{text-align:center}.diagram{margin:0 0 20px;background:#f7f9fc;border:2px dashed #d8dee9;border-radius:14px;padding:12px}.diagram-svg{width:100%;height:auto;display:block}.diagram-label{font-size:12px;font-weight:800;fill:var(--ink);font-family:inherit}.diagram-sub{font-size:11px;font-weight:700;fill:var(--muted);font-family:inherit}.diagram-pole{font-size:16px;font-weight:900;font-family:inherit}.results-card{text-align:center}.results-emoji{font-size:3.4rem}.results-card h2{margin:6px 0 18px}.score-ring{--pct: 0;width:170px;height:170px;margin:0 auto 18px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--pct) * 1%),#e9edf5 0);display:grid;place-items:center}.score-inner{width:130px;height:130px;background:#fff;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 2px 8px #0000000f}.score-num{font-size:1.9rem;font-weight:900;color:var(--ink)}.score-pct{font-size:1rem;font-weight:800;color:var(--accent)}.results-message{font-size:1.15rem;font-weight:700;color:var(--ink)}.review-title{margin:26px 0 12px;text-align:left}.review-list{list-style:none;padding:0;margin:0;text-align:left;display:flex;flex-direction:column;gap:8px}.review-list li{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:10px;font-weight:600}.review-correct{background:var(--correct-bg)}.review-wrong{background:var(--wrong-bg)}.review-mark{flex:none}code{background:#eef0ff;padding:2px 7px;border-radius:6px;font-size:.85em}@media(max-width:520px){.card{padding:20px}.question-text{font-size:1.25rem}.app-header h1{font-size:1.6rem}}
