:root{--bg:#f8fafc;--bg-card:#ffffff;--bg-sidebar:#f1f5f9;--text:#0f172a;--text-secondary:#64748b;--accent:#6366f1;--accent-hover:#4f46e5;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--border:#e2e8f0;--radius:0.5rem;--radius-lg:0.75rem;--max-w:1200px;--prose:clamp(0.95rem,0.9rem + 0.25vw,1.05rem);--heading:clamp(1.75rem,1.5rem + 1vw,2.5rem);--subheading:clamp(1.15rem,1rem + 0.5vw,1.5rem);--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace}[data-theme=dark]{--bg:#0f172a;--bg-card:#1e293b;--bg-sidebar:#1e293b;--text:#f1f5f9;--text-secondary:#94a3b8;--accent:#818cf8;--accent-hover:#6366f1;--border:#334155}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f172a;--bg-card:#1e293b;--bg-sidebar:#1e293b;--text:#f1f5f9;--text-secondary:#94a3b8;--accent:#818cf8;--accent-hover:#6366f1;--border:#334155}}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;color-scheme:light dark}body,html{overflow-x:hidden}body{font-family:var(--font-sans);font-size:var(--prose);line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4{line-height:1.25;font-weight:700}h1{font-size:var(--heading)}h2{font-size:var(--subheading)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.container{max-width:var(--max-w);margin-inline:auto;padding-inline:clamp(1rem,3vw,2rem)}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:.625rem 1.25rem;border-radius:var(--radius);font-weight:600;font-size:.9rem;border:none;cursor:pointer;transition:background .2s,transform .1s;text-decoration:none}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);text-decoration:none}.btn-outline{background:transparent;border:1.5px solid var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.btn-sm{padding:.4rem .875rem;font-size:.8rem}.btn-lg{padding:.75rem 1.75rem;font-size:1rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg)}.progress-ring{transform:rotate(-90deg)}.progress-ring circle{transition:stroke-dashoffset .5s ease}.tag{display:inline-block;padding:.2rem .6rem;border-radius:1rem;font-size:.75rem;font-weight:600}.tag-level-beginner{background:#dcfce7;color:#166534}.tag-level-intermediate{background:#fef3c7;color:#92400e}.tag-level-advanced{background:#fce7f3;color:#9d174d}[data-theme=dark] .tag-level-beginner{background:#064e3b;color:#6ee7b7}[data-theme=dark] .tag-level-intermediate{background:#78350f;color:#fcd34d}[data-theme=dark] .tag-level-advanced{background:#831843;color:#f9a8d4}.skeleton{background:linear-gradient(90deg,var(--border) 25%,color-mix(in srgb,var(--border) 60%,transparent) 50%,var(--border) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}*,:after,:before{transition-duration:.01ms!important}}.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{padding:.75rem 1.25rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:#fff;box-shadow:0 10px 25px rgba(0,0,0,.15);transform:translateX(120%);opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1);pointer-events:auto;max-width:360px}.toast.show{transform:translateX(0);opacity:1}.toast-success{background:#16a34a}.toast-error{background:#dc2626}.toast-info{background:#2563eb}@media (prefers-reduced-motion:reduce){.toast{transition:opacity .01ms}.toast,.toast.show{transform:none}}