:root{--font-sans:"Outfit", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--font-mono:"Fira Code", source-code-pro, Menlo, Monaco, Consolas, monospace;--bg-darker:#f1f5f9;--bg-dark:#f8fafc;--bg-card:#fff;--bg-card-hover:#f1f5f9;--border-color:#e2e8f0;--border-light:#cbd5e1;--primary:#2563eb;--primary-glow:#2563eb0f;--primary-hover:#1d4ed8;--success:#059669;--success-glow:#0596690f;--danger:#dc2626;--danger-glow:#dc26260f;--warning:#d97706;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#64748b;--code-inline-bg:#f1f5f9;--code-inline-color:#d01760;--code-inline-border:#0000000d;--code-block-bg:#f6f8fa;--code-block-color:#24292f;--code-block-border:var(--border-color);--blockquote-bg:#2563eb0a;--blockquote-border:var(--primary);--math-inline-color:#2563eb;--sidebar-width:320px;--header-height:70px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000000d, 0 2px 4px -1px #00000008;--shadow-lg:0 10px 15px -3px #0000000d, 0 4px 6px -2px #00000005;--transition-fast:.15s ease;--transition-normal:.3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-darker);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;overflow-x:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-darker)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}@keyframes pulseGlow{0%,to{box-shadow:0 0 15px var(--primary-glow)}50%{box-shadow:0 0 25px #2563eb33}}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes progressPulse{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes bounceSlow{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.prose{color:var(--text-secondary);font-size:1.05rem;line-height:1.75}.prose h3{color:var(--text-primary);align-items:center;gap:.5rem;margin-top:1.5rem;margin-bottom:.75rem;font-size:1.4rem;font-weight:600;display:flex}.prose p{margin-bottom:.75rem}.prose code{font-family:var(--font-mono);background-color:var(--code-inline-bg);color:var(--code-inline-color);border:1px solid var(--code-inline-border);-webkit-text-fill-color:currentColor;border-radius:4px;padding:.2rem .4rem;font-size:.9em}.prose pre{background-color:var(--code-block-bg);border:1px solid var(--code-block-border);border-radius:8px;margin:1.25rem 0;padding:1rem;overflow-x:auto}.prose pre code{color:var(--code-block-color);-webkit-text-fill-color:currentColor;background-color:#0000;border:none;padding:0;font-size:.95em}.prose blockquote{border-left:4px solid var(--blockquote-border);background-color:var(--blockquote-bg);border-radius:0 8px 8px 0;margin:1rem 0;padding:.75rem 1rem}.prose blockquote p{margin-bottom:0}.prose .math-inline{font-family:var(--font-mono);color:var(--math-inline-color);font-style:italic}.prose ul,.prose ol{margin-bottom:1rem;margin-left:1.5rem}.prose li{color:var(--text-secondary);margin-bottom:.5rem;margin-left:1.5rem}.prose li.numbered-li{list-style-type:decimal}.prose strong{color:var(--text-primary);font-weight:600}.text-gradient{background:linear-gradient(135deg,#1d4ed8 0%,#2563eb 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text}.app-container{background-color:var(--bg-darker);flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{height:var(--header-height);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);z-index:100;background:#ffffffd9;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 1.5rem;display:flex}.header-left{align-items:center;gap:.75rem;display:flex}.logo-icon{color:var(--primary);justify-content:center;align-items:center;animation:3s infinite bounceSlow;display:flex}.logo-text{letter-spacing:-.025em;color:var(--text-primary);font-family:Outfit,sans-serif;font-size:1.25rem;font-weight:700}.header-center{flex-direction:column;flex:1;gap:.25rem;max-width:600px;margin:0 2rem;display:flex}.progress-info{justify-content:space-between;font-size:.85rem;display:flex}.progress-text{color:var(--text-secondary)}.progress-percentage{color:var(--primary);font-weight:600}.progress-bar-container{background-color:#0000000f;border:1px solid #00000008;border-radius:4px;height:8px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg,#2563eb,#059669);border-radius:4px;height:100%;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px #05966933}.chapter-progress-bar-container{background-color:#0000000a;border:1px solid #00000003;border-radius:2px;height:4px;margin-top:2px;overflow:hidden}.chapter-progress-bar-fill{background:linear-gradient(90deg,#f59e0b,#d97706);border-radius:2px;height:100%;transition:width .1s ease-out;box-shadow:0 0 4px #d9770626}.header-right{align-items:center;gap:1rem;display:flex}.motivation-bubble{color:var(--success);background:#05966914;border:1px solid #05966926;border-radius:20px;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:500;animation:.3s fadeIn;display:flex}.sidebar-toggle{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;padding:.5rem;display:none}.workspace-container{flex:1;display:flex;position:relative;overflow:hidden}.sidebar{width:var(--sidebar-width);border-right:1px solid var(--border-color);transition:transform var(--transition-normal), width var(--transition-normal);z-index:90;background-color:#fffffff2;flex-direction:column;display:flex;overflow-y:auto}.sidebar-section{border-bottom:1px solid #0000000d;padding:1rem 0}.section-title{text-transform:uppercase;color:var(--text-muted);letter-spacing:.05em;padding:0 1.25rem .5rem;font-size:.75rem;font-weight:700}.chapter-item{cursor:pointer;transition:background var(--transition-fast), border var(--transition-fast);border-left:3px solid #0000;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 1.25rem;display:flex}.chapter-item.locked{cursor:not-allowed;opacity:.5}.chapter-item.active{border-left-color:var(--primary);background-color:#2563eb0f}.chapter-item:hover:not(.locked):not(.active){background-color:#00000005}.chapter-info{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.chapter-num{color:var(--text-muted);font-size:.7rem;font-weight:500}.chapter-title{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:500;overflow:hidden}.chapter-item.active .chapter-title{color:var(--text-primary);font-weight:600}.chapter-status-icon{flex-shrink:0;justify-content:center;align-items:center;display:flex}.status-completed{color:var(--success)}.status-unlocked{color:var(--text-muted)}.status-locked{color:var(--text-muted);opacity:.7}.learning-workspace{flex:1;display:flex;overflow:hidden}.content-panel{background-color:var(--bg-dark);flex-direction:column;flex:1.1;gap:2rem;padding:2rem;display:flex;overflow-y:auto}.section-badge{color:var(--primary);text-transform:uppercase;letter-spacing:.025em;background-color:#2563eb14;border:1px solid #2563eb26;border-radius:12px;align-self:flex-start;padding:.25rem .75rem;font-size:.75rem;font-weight:600}.chapter-heading{color:var(--text-primary);margin-top:-.5rem;font-size:2rem;font-weight:700;line-height:1.2}.prose-container{animation:.4s fadeIn}.quiz-card{background:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--shadow-md);transition:transform var(--transition-fast), border-color var(--transition-fast);border-radius:12px;flex-direction:column;gap:1.25rem;margin-top:1rem;padding:1.5rem;display:flex}.quiz-card:hover{border-color:var(--border-light)}.quiz-header{color:var(--text-primary);align-items:center;gap:.5rem;font-size:1.1rem;font-weight:600;display:flex}.quiz-icon{color:var(--warning)}.quiz-question{color:var(--text-secondary);white-space:pre-wrap;font-size:1rem;line-height:1.5}.quiz-options{flex-direction:column;gap:.75rem;display:flex}.quiz-option-btn{border:1px solid var(--border-color);color:var(--text-secondary);text-align:left;cursor:pointer;transition:all var(--transition-fast);background:#fffc;border-radius:8px;align-items:center;gap:.75rem;padding:1rem;font-family:inherit;font-size:.95rem;display:flex;position:relative;overflow:hidden}.quiz-option-btn:hover:not(:disabled){background:var(--bg-card-hover);border-color:var(--border-light);color:var(--text-primary)}.quiz-option-btn.selected{border-color:var(--primary);color:var(--text-primary);background:#2563eb0f}.quiz-option-btn.correct{border-color:var(--success);color:var(--success);background:#05966914;font-weight:500}.quiz-option-btn.incorrect{border-color:var(--danger);color:var(--danger);background:#dc262614}.quiz-option-label{width:24px;height:24px;color:var(--text-secondary);background:#0000000a;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:600;display:flex}.quiz-option-text{flex:1}.quiz-feedback{animation:slideInUp var(--transition-fast);border-radius:8px;padding:1rem;font-size:.9rem;line-height:1.5}.quiz-feedback.success{color:var(--text-secondary);background:#0596690d;border:1px solid #05966926}.quiz-feedback.error{color:var(--text-secondary);background:#dc26260d;border:1px solid #dc262626}.feedback-title{align-items:center;gap:.35rem;margin-bottom:.25rem;font-weight:700;display:flex}.feedback-title.success{color:var(--success)}.feedback-title.error{color:var(--danger)}.navigation-actions{justify-content:space-between;margin-top:1rem;display:flex}.nav-btn{border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:8px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-weight:500;display:flex}.nav-btn:hover:not(:disabled){border-color:var(--border-light);color:var(--text-primary);background:#00000003}.nav-btn.primary-btn{background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;box-shadow:0 4px 12px #2563eb33;color:#fff!important}.nav-btn.primary-btn:hover:not(:disabled){background:linear-gradient(135deg,#1d4ed8,#1e40af);box-shadow:0 4px 16px #2563eb59}.nav-btn:disabled{opacity:.4;cursor:not-allowed}.practice-panel{background-color:var(--bg-darker);border-left:1px solid var(--border-color);flex-direction:column;flex:.9;display:flex;overflow:hidden}.panel-header{border-bottom:1px solid var(--border-color);background-color:#fffc;flex-shrink:0;justify-content:space-between;align-items:center;height:50px;padding:0 1.25rem;display:flex}.panel-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;display:flex}.panel-icon{color:var(--primary)}.sandbox-container{flex-direction:column;flex:1;display:flex;overflow:hidden}.editor-wrapper{background:#f6f8fa;flex-direction:column;flex:1.2;display:flex;position:relative}.code-editor{color:#24292f;width:100%;font-family:var(--font-mono);resize:none;background:0 0;border:none;outline:none;flex:1;padding:1.25rem;font-size:.95rem;line-height:1.6}.editor-footer{border-top:1px solid var(--border-color);background-color:#00000005;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.editor-shortcut{color:var(--text-muted);font-size:.75rem}.run-btn{cursor:pointer;transition:all var(--transition-fast);background:linear-gradient(135deg,#059669,#047857);border:none;border-radius:6px;align-items:center;gap:.35rem;padding:.5rem 1.25rem;font-size:.85rem;font-weight:600;display:flex;box-shadow:0 4px 10px #05966926;color:#fff!important}.run-btn:hover:not(:disabled){background:linear-gradient(135deg,#10b981,#047857);box-shadow:0 4px 14px #0596694d}.run-btn:disabled{opacity:.6;cursor:not-allowed}.console-wrapper{border-top:1px solid var(--border-color);background-color:#fff;flex-direction:column;flex:.8;display:flex;overflow:hidden}.console-header{text-transform:uppercase;color:var(--text-muted);letter-spacing:.05em;border-bottom:1px solid var(--border-color);background:#00000005;justify-content:space-between;align-items:center;padding:.5rem 1.25rem;font-size:.75rem;font-weight:700;display:flex}.console-status{background:var(--text-muted);border-radius:50%;width:8px;height:8px}.console-status.running{background:var(--warning);animation:1s infinite pulseGlow}.console-status.ready{background:var(--success)}.console-output{font-family:var(--font-mono);color:var(--text-secondary);white-space:pre-wrap;background:var(--bg-dark);flex:1;padding:1rem 1.25rem;font-size:.85rem;line-height:1.5;overflow-y:auto}.console-output.error{color:var(--danger)}.console-output.system{color:var(--primary)}.visualizer-container{flex-direction:column;flex:1;gap:1.5rem;padding:1.5rem;display:flex;overflow-y:auto}.visual-card{background:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);border-radius:8px;flex-direction:column;gap:.75rem;padding:1.25rem;display:flex}.visual-card-title{text-transform:uppercase;color:var(--text-muted);letter-spacing:.025em;font-size:.85rem;font-weight:700}.step-list{flex-direction:column;gap:.75rem;display:flex}.step-node{border:1px solid var(--border-color);transition:all var(--transition-fast);background:#00000005;border-radius:8px;flex-direction:column;gap:.25rem;padding:.75rem 1rem;display:flex}.step-node:hover{border-color:var(--primary);background:#2563eb05}.step-node-title{color:var(--text-primary);font-size:.9rem;font-weight:600}.step-node-desc{color:var(--text-secondary);font-size:.8rem;line-height:1.4}.interactive-vars{flex-direction:column;gap:1rem;display:flex}.var-slider-group{flex-direction:column;gap:.35rem;display:flex}.var-slider-label{justify-content:space-between;font-size:.85rem;font-weight:500;display:flex}.var-slider-ctrl{width:100%;accent-color:var(--primary);cursor:pointer}.var-math-preview{font-family:var(--font-mono);text-align:center;background:#00000005;border:1px solid #0000000f;border-radius:6px;padding:.75rem;font-size:.95rem}.var-math-preview.valid{color:var(--success);background:#05966905;border-color:#05966940}.var-math-preview.invalid{color:var(--danger);background:#dc262605;border-color:#dc262640}.gantt-chart{background:#00000005;border:1px solid #0000000f;border-radius:8px;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.gantt-timeline-header{border-bottom:1px solid var(--border-color);padding-bottom:.25rem;display:flex}.gantt-tick{text-align:center;color:var(--text-muted);font-size:.7rem;font-family:var(--font-mono);flex:1}.gantt-row{background:#00000003;border-radius:4px;align-items:center;height:32px;display:flex;position:relative}.gantt-bar{color:#fff;height:24px;box-shadow:var(--shadow-sm);cursor:pointer;transition:all var(--transition-fast);background:linear-gradient(90deg,#3b82f6,#1d4ed8);border-radius:4px;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex;position:absolute}.gantt-bar:hover{filter:brightness(1.1);transform:scaleY(1.05)}.bin-grid{grid-template-columns:1fr;gap:1rem;display:grid}.bin-box{border:1px dashed var(--border-color);background:#00000003;border-radius:8px;flex-direction:column;gap:.5rem;padding:1rem;display:flex}.bin-title{color:var(--text-secondary);font-size:.85rem;font-weight:600}.bin-items{flex-wrap:wrap;gap:.5rem;display:flex}.bin-item-tag{color:var(--primary);background:#2563eb14;border:1px solid #2563eb33;border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:500}.completion-canvas{text-align:center;background:radial-gradient(circle at center, #fff 0%, var(--bg-darker) 100%);flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2rem;animation:.6s fadeIn;display:flex;overflow-y:auto}.completion-icon{color:var(--success);margin-bottom:1.5rem;font-size:5rem;animation:3s infinite bounceSlow}.completion-heading{background:linear-gradient(135deg,#0f172a 0%,#334155 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:1rem;font-size:2.5rem;font-weight:800}.completion-sub{color:var(--text-secondary);max-width:600px;margin-bottom:2rem;font-size:1.15rem;line-height:1.6}.reset-btn{border:1px dashed var(--border-color);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:6px;margin-top:2rem;padding:.5rem 1rem;font-size:.8rem}.reset-btn:hover{border-color:var(--danger);color:var(--danger);background:#dc26260d}@media (width<=1024px){.workspace-container{flex-direction:column}.learning-workspace{flex-direction:column;overflow-y:auto}.content-panel{flex:none;overflow-y:visible}.practice-panel{border-left:none;border-top:1px solid var(--border-color);flex:none;height:450px}}@media (width<=768px){.app-header{height:auto;min-height:var(--header-height);flex-wrap:wrap;gap:0;padding:0 1rem}.logo-text{font-size:1rem}.header-center{flex:0 0 100%;order:3;max-width:100%;margin:0;padding:0 0 .5rem}.progress-info{font-size:.7rem}.progress-text{display:none}.progress-percentage{text-align:right;width:100%;margin-bottom:2px;display:block}.motivation-bubble{display:none}.chapter-progress-bar-container{background-color:#00000014;border:1px solid #0000000a;height:6px;margin-top:4px}.sidebar-toggle{display:flex}.sidebar{width:280px;position:absolute;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:10px 0 30px #0000000d}.sidebar.open{transform:translate(0)}.practice-panel{height:380px}.chapter-heading{font-size:1.5rem}}.sync-badge{color:var(--text-secondary);background:#00000008;border:1px solid #00000014;border-radius:20px;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.8rem;font-weight:500;display:flex}.sync-badge.local-only{color:#64748b;background:#64748b14;border-color:#64748b26}.google-login-btn{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;align-items:center;gap:.5rem;padding:.45rem .85rem;font-size:.85rem;font-weight:600;transition:all .2s;display:flex;box-shadow:0 1px 2px #0000000d}.google-login-btn:hover{background:#f9fafb;border-color:#c0c4cc;box-shadow:0 2px 4px #0000000d}.google-login-btn svg{flex-shrink:0}.auth-skeleton{background:#00000014;border-radius:6px;width:100px;height:34px}.user-profile-card{cursor:pointer;z-index:101;align-items:center;gap:.5rem;display:flex;position:relative}.user-avatar{border:2px solid var(--primary);background-color:var(--border-color);object-fit:cover;border-radius:50%;width:32px;height:32px;transition:transform .2s}.user-profile-card:hover .user-avatar{transform:scale(1.05)}.sync-status-indicator{border-radius:50%;justify-content:center;align-items:center;padding:.2rem;transition:all .3s;display:flex}.sync-status-indicator.synced{color:var(--success)}.sync-status-indicator.syncing{color:var(--primary);animation:1.5s linear infinite spin}.sync-status-indicator.error{color:var(--error)}.sync-status-indicator.local{color:var(--text-muted)}.user-info-dropdown{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);opacity:0;visibility:hidden;background:#fffffff2;border-radius:8px;flex-direction:column;gap:.35rem;min-width:180px;padding:.75rem 1rem;transition:all .2s;display:flex;position:absolute;top:calc(100% + 8px);right:0;transform:translateY(-5px);box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.user-profile-card:hover .user-info-dropdown,.user-profile-card:focus-within .user-info-dropdown{opacity:1;visibility:visible;transform:translateY(0)}.user-name{color:var(--text-primary);white-space:nowrap;font-size:.85rem;font-weight:700}.user-email{color:var(--text-muted);white-space:nowrap;margin-bottom:.25rem;font-size:.75rem}.logout-btn{color:#ef4444;cursor:pointer;background:#ef444414;border:1px solid #ef444433;border-radius:4px;justify-content:center;align-items:center;gap:.35rem;width:100%;padding:.35rem .5rem;font-size:.75rem;font-weight:600;transition:all .2s;display:flex}.logout-btn:hover{color:#fff;background:#ef4444}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (width<=480px){.header-hide-mobile{display:none!important}}
