@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-size:16px}body{font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh;line-height:1.6;overflow-x:hidden}#root{flex-direction:column;min-height:100dvh;display:flex}a{color:var(--color-primary-light);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;background:0 0;border:none}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);background-color:#0000}input:focus,select:focus,textarea:focus{outline:2px solid var(--color-primary);outline-offset:2px}img{max-width:100%;height:auto}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-light)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background:var(--color-primary);color:#fff}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-weight:600;font-size:var(--text-sm);transition:all var(--transition-fast);white-space:nowrap;min-width:44px;min-height:44px;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);box-shadow:var(--shadow-glow)}.btn-secondary{background:var(--color-bg-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-card);border-color:var(--color-border-light)}.btn-accent{background:var(--color-accent);color:var(--color-bg)}.btn-accent:hover:not(:disabled){background:var(--color-accent-dark)}.btn-ghost{color:var(--color-text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-bg-surface);color:var(--color-text)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{padding:var(--space-xs) var(--space-md);font-size:var(--text-xs);min-height:36px}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--text-base);min-height:52px}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg)}.card-hoverable:hover{border-color:var(--color-primary);box-shadow:var(--shadow-glow);cursor:pointer}.modal-overlay{z-index:var(--z-modal);padding:var(--space-md);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.modal-content{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-xl);width:100%;max-width:480px;max-height:90dvh;overflow-y:auto}.badge{align-items:center;gap:var(--space-xs);padding:2px var(--space-sm);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;display:inline-flex}.badge-primary{background:var(--color-primary);color:#fff}.badge-success{background:var(--color-success);color:#fff}.badge-warning{background:var(--color-warning);color:var(--color-bg)}.badge-error{background:var(--color-error);color:#fff}.progress-bar{background:var(--color-bg-surface);border-radius:var(--radius-full);width:100%;height:8px;overflow:hidden}.progress-bar-fill{border-radius:var(--radius-full);height:100%;transition:width var(--transition-slow);background:var(--color-primary)}.toast-container{top:var(--space-md);right:var(--space-md);z-index:var(--z-toast);gap:var(--space-sm);flex-direction:column;max-width:360px;display:flex;position:fixed}.toast{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);align-items:flex-start;gap:var(--space-sm);box-shadow:var(--shadow-lg);animation:.3s slideInRight;display:flex}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.offline-banner{background:var(--color-warning);color:var(--color-bg);text-align:center;padding:var(--space-sm);font-size:var(--text-sm);z-index:var(--z-toast);font-weight:600;position:fixed;bottom:0;left:0;right:0}.difficulty-tag{border-radius:var(--radius-full);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;align-items:center;padding:2px 8px;font-weight:700;display:inline-flex}.difficulty-easy{background:var(--color-easy);color:#fff}.difficulty-medium{background:var(--color-medium);color:var(--color-bg)}.difficulty-hard{background:var(--color-hard);color:#fff}.mastery-tag{align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);font-size:var(--text-xs);padding:2px 8px;font-weight:600;display:inline-flex}.mastery-strong{background:var(--color-mastery-strong);color:#fff}.mastery-developing{background:var(--color-mastery-developing);color:var(--color-bg)}.mastery-needs-focus{background:var(--color-mastery-needs-focus);color:#fff}.mastery-unassessed{background:var(--color-mastery-unassessed);color:#fff}.ai-source-label{align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);font-size:var(--text-xs);background:var(--color-primary);color:#fff;opacity:.85;padding:2px 8px;font-weight:600;display:inline-flex}.ai-source-label.locally-generated{background:var(--color-info)}:root{--color-primary:#6c5ce7;--color-primary-light:#a29bfe;--color-primary-dark:#4a3db5;--color-accent:#00cec9;--color-accent-light:#55efc4;--color-accent-dark:#00b894;--color-bg:#0f0f1a;--color-bg-elevated:#1a1a2e;--color-bg-surface:#16213e;--color-bg-card:#1e2a4a;--color-text:#e2e8f0;--color-text-secondary:#94a3b8;--color-text-muted:#64748b;--color-border:#2d3a5c;--color-border-light:#3d4f7c;--color-success:#10b981;--color-warning:#f59e0b;--color-error:#ef4444;--color-info:#3b82f6;--color-rank-1:#cd7f32;--color-rank-2:silver;--color-rank-3:gold;--color-rank-4:#5b8def;--color-rank-5:#9b59b6;--color-rank-6:#ff6b6b;--rarity-common:#9aa5b1;--rarity-uncommon:#4caf50;--rarity-rare:#2196f3;--rarity-epic:#9c27b0;--rarity-legendary:#ff9800;--color-easy:#10b981;--color-medium:#f59e0b;--color-hard:#ef4444;--color-mastery-strong:#10b981;--color-mastery-developing:#f59e0b;--color-mastery-needs-focus:#ef4444;--color-mastery-unassessed:#64748b;--color-xp:#6c5ce7;--color-currency:gold;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--text-4xl:2.5rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px #0006;--shadow-lg:0 10px 15px #00000080;--shadow-glow:0 0 20px #6c5ce74d;--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.4s ease;--z-base:0;--z-dropdown:100;--z-sticky:200;--z-modal:300;--z-toast:400;--z-celebration:500}[data-theme=light]{--color-bg:#f8fafc;--color-bg-elevated:#fff;--color-bg-surface:#f1f5f9;--color-bg-card:#fff;--color-text:#1e293b;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--color-border:#e2e8f0;--color-border-light:#cbd5e1;--shadow-sm:0 1px 2px #00000014;--shadow-md:0 4px 6px #0000001a;--shadow-lg:0 10px 15px #0000001f;--shadow-glow:0 0 20px #6c5ce726}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes xpFill{0%{width:0%}to{width:var(--target-width,100%)}}@keyframes coinTickUp{0%{transform:scale(1)}50%{color:var(--color-currency);transform:scale(1.2)}to{transform:scale(1)}}@keyframes floatUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes glow{0%,to{box-shadow:0 0 5px var(--color-primary)}50%{box-shadow:0 0 20px var(--color-primary), 0 0 40px var(--color-primary-light)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes flipCard{0%{transform:rotateY(0)}to{transform:rotateY(180deg)}}@keyframes breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.02)}}@keyframes celebratePulse{0%{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-reduced-motion=true] *,[data-reduced-motion=true] :before,[data-reduced-motion=true] :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}@media (min-width:480px){.responsive-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:768px){.responsive-grid{grid-template-columns:repeat(3,1fr)}.app-layout{flex-direction:row}.sidebar{width:260px;height:100dvh;position:sticky;top:0}}@media (min-width:1024px){.responsive-grid{grid-template-columns:repeat(4,1fr)}.main-content{max-width:960px;margin:0 auto}}
