:root{--primary:#4f46e5;--primary-dark:#4338ca;--primary-light:#ede9fe;--success:#059669;--error:#dc2626;--bg:#f1f5f9;--surface:#fff;--text:#1e293b;--text-light:#64748b;--border:#e2e8f0;--correct-bg:#f0fdf4;--correct-border:#86efac;--correct-text:#166534;--wrong-bg:#fef2f2;--wrong-border:#fca5a5;--wrong-text:#991b1b;--tip-bg:#fffbeb;--tip-border:#fde68a;--tip-accent:#f59e0b;--tip-text:#78350f;--demo-from:#f5f3ff;--demo-to:#ede9fe;--demo-border:#c4b5fd;--demo-title:#7c3aed;--demo-hint:#6d28d9;--info-bg:#eff6ff;--info-border:#bfdbfe;--info-text:#1e40af}[data-theme=dark]{--bg:#0f172a;--surface:#1e293b;--text:#f1f5f9;--text-light:#94a3b8;--border:#334155;--primary-light:#1e1b4b;--correct-bg:#052e16;--correct-border:#166534;--correct-text:#86efac;--wrong-bg:#450a0a;--wrong-border:#991b1b;--wrong-text:#fca5a5;--tip-bg:#1c1a0a;--tip-border:#854d0e;--tip-accent:#d97706;--tip-text:#fef3c7;--demo-from:#1e1b4b;--demo-to:#2d1b69;--demo-border:#5b21b6;--demo-title:#a78bfa;--demo-hint:#c4b5fd;--info-bg:#0c1a3b;--info-border:#1e3a8a;--info-text:#93c5fd}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6;transition:background .25s,color .25s}#root{min-height:100vh}h1,h2,h3,h4{margin:0;line-height:1.25}p{margin:0}ul{margin:0;padding:0}a{color:inherit}button{font-family:inherit}.layout{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.header{z-index:100;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;height:60px;padding:0 2rem;transition:background .25s,border-color .25s;display:flex;position:sticky;top:0;box-shadow:0 1px 4px #0000000f}.logo{color:var(--text);letter-spacing:-.3px;align-items:center;gap:.55rem;font-size:1.1rem;font-weight:800;text-decoration:none;display:flex}.logo:hover{color:var(--primary)}.logo-text-group{flex-direction:column;line-height:1.15;display:flex}.logo-version{color:var(--text-light);letter-spacing:.02em;opacity:.75;font-size:.7rem;font-weight:600}.header-right{align-items:center;gap:.6rem;display:flex}.progress-label{color:var(--text-light);white-space:nowrap;font-size:.8rem;font-weight:600}.progress-bar-wrapper{background:var(--border);border-radius:999px;width:100px;height:8px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--primary), #818cf8);border-radius:999px;height:100%;transition:width .4s}.icon-btn{border:1px solid var(--border);width:34px;height:34px;color:var(--text-light);cursor:pointer;background:0 0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;text-decoration:none;transition:background .15s,color .15s;display:flex}.icon-btn:hover{background:var(--border);color:var(--text)}.theme-btn{border:none;font-size:1.05rem}.main{flex:1;width:100%;max-width:820px;margin:0 auto;padding:2rem 1.5rem 6rem}.lesson-nav{background:var(--surface);border-top:1px solid var(--border);z-index:100;justify-content:space-between;align-items:center;padding:.75rem 2rem;transition:background .25s,border-color .25s;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 8px #0000000f}.nav-counter{color:var(--text-light);font-size:.85rem}.nav-btn{cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border:none;border-radius:8px;max-width:260px;padding:.5rem 1.25rem;font-size:.9rem;font-weight:600;transition:background .15s;overflow:hidden}.nav-btn--prev{background:var(--bg);color:var(--text);border:1px solid var(--border)}.nav-btn--prev:hover{background:var(--border)}.nav-btn--next{background:var(--primary);color:#fff}.nav-btn--next:hover{background:var(--primary-dark)}.nav-btn--disabled{opacity:.7;background:var(--border)!important;color:var(--text-light)!important;cursor:not-allowed!important}@media (width<=600px){.header{gap:.5rem;padding:0 1rem}.logo-text{display:none}.progress-bar-wrapper{width:60px}.progress-label{display:none}.main{padding:1.5rem 1rem 7rem}.lesson-nav{gap:.5rem;padding:.75rem 1rem}.nav-btn{max-width:160px;padding:.45rem .8rem;font-size:.8rem}}.home{padding-bottom:3rem}.hero{text-align:center;padding:3rem 1rem 2rem}.hero-logo{justify-content:center;margin-bottom:.75rem;display:flex}.hero-title{color:var(--text);margin-bottom:.75rem;font-size:2.5rem;font-weight:800}.hero-subtitle{color:var(--text-light);max-width:540px;margin:0 auto 1.75rem;font-size:1.05rem;line-height:1.7}.hero-cta{background:var(--primary);color:#fff;border-radius:12px;padding:.85rem 2.25rem;font-size:1rem;font-weight:700;text-decoration:none;transition:background .15s,transform .1s;display:inline-block;box-shadow:0 4px 16px #4f46e559}.hero-cta:hover{background:var(--primary-dark);transform:translateY(-1px)}.progress-summary{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:1rem;margin:1.5rem 0;padding:.75rem 1rem;transition:background .25s,border-color .25s;display:flex}.progress-summary-text{color:var(--text-light);white-space:nowrap;font-size:.85rem;font-weight:600}.progress-bar-big-wrapper{background:var(--border);border-radius:999px;flex:1;height:10px;overflow:hidden}.progress-bar-big-fill{background:linear-gradient(90deg, var(--primary), #818cf8);border-radius:999px;height:100%;transition:width .5s}.lesson-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem;margin-top:1rem;display:grid}.lesson-card{background:var(--surface);border:2px solid var(--border);color:var(--text);border-radius:14px;flex-direction:column;gap:.35rem;padding:1.25rem;text-decoration:none;transition:border-color .15s,transform .1s,box-shadow .15s,background .25s;display:flex}.lesson-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 16px #4f46e51f}.lesson-card--done{border-color:var(--success);background:var(--correct-bg)}.lesson-card--next{border-color:var(--primary);box-shadow:0 2px 10px #4f46e526}.lesson-card-top{justify-content:space-between;align-items:center;margin-bottom:.25rem;display:flex}.lesson-emoji{font-size:1.75rem}.done-badge{background:var(--success);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.8rem;font-weight:700;display:flex}.next-badge{background:var(--primary);color:#fff;border-radius:999px;padding:.2em .55em;font-size:.7rem;font-weight:700}.lesson-number{color:var(--text-light);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:600}.lesson-card-title{color:var(--text);margin:0;font-size:1rem;font-weight:700}.lesson-desc{color:var(--text-light);margin:0;font-size:.85rem;line-height:1.5}.reset-section{text-align:center;margin-top:2.5rem}.reset-btn{border:1px solid var(--border);color:var(--text-light);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1.5rem;font-size:.85rem;transition:border-color .15s,color .15s}.reset-btn:hover{border-color:var(--error);color:var(--error)}@media (width<=600px){.hero-title{font-size:1.9rem}.lesson-grid{grid-template-columns:1fr}}.code-block{background:#1e1e2e;border-radius:10px;margin:1.25rem 0;position:relative;overflow:hidden;box-shadow:0 4px 24px #00000040}.code-block-toolbar{z-index:1;background:#ffffff0a;border-bottom:1px solid #ffffff0f;align-items:center;gap:.4rem;height:2.25rem;padding:0 .9rem;display:flex;position:absolute;top:0;left:0;right:0}.code-block-dot{background:#ffffff26;border-radius:50%;width:11px;height:11px}.code-block-dot:first-child{background:#ff5f57}.code-block-dot:nth-child(2){background:#ffbd2e}.code-block-dot:nth-child(3){background:#28c840}.copy-btn{color:#a6adc8;cursor:pointer;white-space:nowrap;background:#ffffff14;border:1px solid #ffffff1f;border-radius:5px;margin-left:auto;padding:.15rem .6rem;font-size:.72rem;transition:background .15s,color .15s}.copy-btn:hover{color:#cdd6f4;background:#ffffff29}.copy-btn--copied{color:#a6e3a1;background:#a6e3a114;border-color:#a6e3a14d}.content-renderer{flex-direction:column;gap:.25rem;display:flex}.content-heading{color:var(--text);border-bottom:2px solid var(--primary-light);margin:1.5rem 0 .25rem;padding-bottom:.3rem;font-size:1.15rem;font-weight:700}.content-text{color:var(--text);margin:.4rem 0;font-size:1rem;line-height:1.75}.content-text code{background:var(--primary-light);color:var(--primary);border-radius:4px;padding:.1em .35em;font-family:Fira Code,Courier New,monospace;font-size:.9em}.tip-box{background:var(--tip-bg);border:1px solid var(--tip-border);border-left:4px solid var(--tip-accent);border-radius:8px;gap:.75rem;margin:.75rem 0;padding:.9rem 1rem;transition:background .25s,border-color .25s;display:flex}.tip-icon{flex-shrink:0;margin-top:.1rem;font-size:1.2rem}.tip-box p{color:var(--tip-text);margin:0;font-size:.95rem;line-height:1.6}.demo-box{background:linear-gradient(135deg, var(--demo-from), var(--demo-to));border:1px solid var(--demo-border);text-align:center;border-radius:12px;margin:1rem 0;padding:1.25rem 1.5rem;transition:background .25s,border-color .25s}.demo-label{text-transform:uppercase;letter-spacing:.05em;color:var(--demo-title);margin-bottom:1rem;font-size:.8rem;font-weight:600}.demo-counter{justify-content:center;align-items:center;gap:1.5rem;margin:.75rem 0;display:flex}.demo-count{color:var(--primary);min-width:3rem;font-size:2.5rem;font-weight:800;display:inline-block}.demo-btn{cursor:pointer;border:none;border-radius:50%;width:44px;height:44px;font-size:1.4rem;font-weight:700;transition:transform .1s}.demo-btn:active{transform:scale(.9)}.demo-btn--minus{color:#dc2626;background:#fee2e2}.demo-btn--plus{color:#16a34a;background:#dcfce7}.demo-hint{color:var(--demo-hint);margin-top:.75rem;font-size:.8rem}.demo-toggle-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1.5rem;font-size:.95rem;font-weight:600;transition:background .15s}.demo-toggle-btn:hover{background:var(--primary-dark)}.demo-message{color:var(--primary);margin-top:1rem;font-size:1rem;font-weight:600;animation:.25s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.confetti-wrapper{pointer-events:none;z-index:9999;width:100vw;height:100vh;position:fixed;top:0;left:0;overflow:hidden}.confetti-piece{opacity:0;border-radius:2px;animation:linear both confetti-fall;position:absolute;top:-12px}.confetti-piece--circle{border-radius:50%}@keyframes confetti-fall{0%{transform:translateY(0) rotate(var(--rotate));opacity:1}15%{opacity:1}85%{opacity:.8}to{transform:translateY(110vh) rotate(calc(var(--rotate) + 720deg));opacity:0}}.quiz-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-top:2.5rem;padding:1.75rem;transition:background .25s,border-color .25s;position:relative;box-shadow:0 2px 12px #4f46e514}.quiz-title{color:var(--primary);border-bottom:1px solid var(--border);margin-bottom:1.25rem;padding-bottom:.75rem;font-size:1.2rem;font-weight:700}.quiz-inner{flex-direction:column;gap:1rem;display:flex}.quiz-question{color:var(--text);font-size:1.05rem;font-weight:600;line-height:1.5}.mcq-options{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.mcq-option{background:var(--bg);border:2px solid var(--border);width:100%;color:var(--text);cursor:pointer;text-align:left;border-radius:10px;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;font-size:.95rem;line-height:1.45;transition:border-color .15s,background .15s;display:flex}.mcq-option:hover:not(:disabled),.mcq-option--selected{border-color:var(--primary);background:var(--primary-light)}.mcq-option--correct{border-color:var(--correct-border);background:var(--correct-bg);color:var(--correct-text)}.mcq-option--wrong{border-color:var(--wrong-border);background:var(--wrong-bg);color:var(--wrong-text)}.mcq-letter{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.8rem;font-weight:700;display:inline-flex}.code-fill-wrapper{background:#1e1e2e;border-radius:10px;overflow:hidden}.code-fill-pre{margin:0;padding:1.25rem 1.5rem;overflow-x:auto}.code-fill-pre code{color:#cdd6f4;font-family:Fira Code,Courier New,monospace;font-size:.9rem;line-height:1.7}.code-dim{color:#6c7086}.code-fill-input{color:#89b4fa;caret-color:#89b4fa;background:#313244;border:2px solid #89b4fa;border-radius:4px;outline:none;width:10em;padding:.1em .4em;font-family:Fira Code,Courier New,monospace;font-size:.9rem;display:inline-block}.code-fill-answer--correct{color:#a6e3a1;font-weight:700}.code-fill-answer--wrong{color:#f38ba8;font-weight:700}.attempts-hint{color:var(--error);font-size:.85rem;font-weight:500}.quiz-submit-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;align-self:flex-start;padding:.65rem 1.5rem;font-size:.95rem;font-weight:600;transition:background .15s}.quiz-submit-btn:hover:not(:disabled){background:var(--primary-dark)}.quiz-submit-btn:disabled{opacity:.45;cursor:not-allowed}.retry-btn{border:2px solid var(--error);color:var(--error);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;margin-top:.5rem;padding:.5rem 1.25rem;font-size:.9rem;font-weight:600;transition:background .15s}.retry-btn:hover{background:var(--wrong-bg)}.quiz-feedback{border-radius:10px;flex-direction:column;gap:.5rem;padding:1rem 1.25rem;animation:.3s feedbackIn;display:flex;position:relative;overflow:hidden}@keyframes feedbackIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.quiz-feedback--correct{background:var(--correct-bg);border:1px solid var(--correct-border)}.quiz-feedback--wrong{background:var(--wrong-bg);border:1px solid var(--wrong-border)}.feedback-status{font-size:1.05rem;font-weight:700}.quiz-feedback--correct .feedback-status{color:var(--correct-text)}.quiz-feedback--wrong .feedback-status{color:var(--wrong-text)}.quiz-feedback--revealed .feedback-status{color:var(--info-text)}.quiz-feedback--revealed{background:var(--info-bg);border:1px solid var(--info-border)}.feedback-explanation{color:var(--text);font-size:.92rem;line-height:1.6}.quiz-feedback-actions{flex-wrap:wrap;gap:.6rem;margin-top:.25rem;display:flex}.show-answer-btn{border:2px solid var(--text-light);color:var(--text-light);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;padding:.45rem 1rem;font-size:.88rem;font-weight:600;transition:border-color .15s,color .15s,background .15s}.show-answer-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.inline-answer{color:#a6e3a1;background:#1e1e2e;border-radius:4px;padding:.1em .45em;font-family:Fira Code,Courier New,monospace;font-size:.95em;font-weight:700}.lesson-page{padding-bottom:1rem}.lesson-header{margin-bottom:2rem}.lesson-badge{background:var(--primary-light);color:var(--primary);text-transform:uppercase;letter-spacing:.06em;border-radius:999px;margin-bottom:.75rem;padding:.2em .7em;font-size:.75rem;font-weight:700;display:inline-block}.lesson-page-title{color:var(--text);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:2rem;font-weight:800;line-height:1.2;display:flex}.lesson-page-emoji{font-size:1.8rem}.lesson-page-desc{color:var(--text-light);margin:0;font-size:1.05rem;line-height:1.6}.lesson-divider{border:none;border-top:2px dashed var(--border);margin:2.5rem 0}.lesson-done-banner{background:var(--correct-bg);border:1px solid var(--correct-border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem;display:flex}.lesson-done-text{color:var(--correct-text);font-size:.95rem;font-weight:500}.done-banner-actions{flex-wrap:wrap;gap:.6rem;display:flex}.retake-btn{background:var(--primary-light);border:2px solid var(--primary);color:var(--primary);cursor:pointer;white-space:nowrap;border-radius:8px;padding:.5rem 1.25rem;font-size:.9rem;font-weight:700;transition:background .15s,color .15s}.retake-btn:hover{background:var(--primary);color:#fff}.retake-btn--new{border-color:var(--success);color:var(--success);background:0 0}.retake-btn--new:hover{background:var(--correct-bg);color:var(--correct-text);border-color:var(--correct-border)}.try-another-row{justify-content:flex-start;margin-top:1.25rem;display:flex}.try-another-btn{border:2px solid var(--success);color:var(--success);cursor:pointer;background:0 0;border-radius:10px;align-items:center;gap:.5rem;padding:.6rem 1.35rem;font-size:.9rem;font-weight:700;transition:background .15s,color .15s;display:flex}.try-another-btn:hover{background:var(--correct-bg);color:var(--correct-text)}.try-another-count{background:var(--success);color:#fff;border-radius:999px;padding:.1em .55em;font-size:.78rem;font-weight:800}@media (width<=600px){.lesson-page-title{font-size:1.5rem}.lesson-done-banner{flex-direction:column;align-items:flex-start}}.quiz-locked-banner{background:var(--surface);border:2px dashed var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:1rem;padding:1.25rem 1.5rem;display:flex}.quiz-locked-icon{flex-shrink:0;font-size:2rem}.quiz-locked-body{flex:1;min-width:0}.quiz-locked-title{color:var(--text);margin:0 0 .25rem;font-size:1rem;font-weight:700}.quiz-locked-msg{color:var(--text-light);margin:0;font-size:.9rem;line-height:1.5}.quiz-locked-link{color:var(--primary);font-weight:600;text-decoration:none}.quiz-locked-link:hover{text-decoration:underline}.quiz-locked-btn{background:var(--primary);color:#fff;white-space:nowrap;border-radius:8px;flex-shrink:0;padding:.55rem 1.25rem;font-size:.9rem;font-weight:700;text-decoration:none;transition:opacity .15s}.quiz-locked-btn:hover{opacity:.88}@media (width<=520px){.quiz-locked-banner{flex-direction:column;align-items:flex-start}.quiz-locked-btn{text-align:center;width:100%}}.complete-page{text-align:center;padding:2rem 1rem}.confetti-row{letter-spacing:.5rem;margin-bottom:1.5rem;font-size:2rem;animation:.9s infinite alternate bounce}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-8px)}}.complete-title{color:var(--text);margin-bottom:.75rem;font-size:2.8rem;font-weight:800}.complete-subtitle{color:var(--text-light);max-width:480px;margin:0 auto 2.5rem;font-size:1.1rem;line-height:1.7}.certificate{background:var(--surface);border:3px solid #fbbf24;border-radius:20px;max-width:520px;margin:0 auto 2.5rem;padding:2.5rem 2rem;transition:background .25s;box-shadow:0 0 0 6px #fbbf2426,0 8px 32px #00000014}.cert-icon{margin-bottom:.75rem;font-size:3rem}.cert-title{color:#d97706;margin-bottom:1rem;font-size:1.4rem;font-weight:800}.cert-body{color:var(--text-light);margin-bottom:1rem;font-size:.95rem;line-height:1.7}.cert-date{color:var(--text-light);font-size:.85rem;font-weight:600}.complete-reset{margin-top:-1rem;margin-bottom:2rem}.complete-reset-btn{border:1px solid var(--border);color:var(--text-light);cursor:pointer;background:0 0;border-radius:8px;padding:.45rem 1.25rem;font-size:.82rem;transition:border-color .15s,color .15s}.complete-reset-btn:hover{border-color:var(--error);color:var(--error)}.complete-actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.action-btn{border-radius:10px;padding:.75rem 1.75rem;font-size:.95rem;font-weight:700;text-decoration:none;transition:background .15s,transform .1s}.action-btn:hover{transform:translateY(-1px)}.action-btn--primary{background:var(--primary);color:#fff}.action-btn--primary:hover{background:var(--primary-dark)}.action-btn--secondary{background:var(--surface);color:var(--text);border:2px solid var(--border)}.action-btn--secondary:hover{border-color:var(--primary);color:var(--primary)}
