.loading-spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-3xl);min-height:200px}.loading-spinner-container.small{padding:var(--spacing-lg);min-height:100px}.loading-spinner-container.large{padding:var(--spacing-4xl);min-height:400px}.loading-spinner{position:relative;width:64px;height:64px}.loading-spinner-container.small .loading-spinner{width:32px;height:32px}.loading-spinner-container.large .loading-spinner{width:96px;height:96px}.spinner-ring{position:absolute;width:100%;height:100%;border:4px solid transparent;border-top-color:var(--primary-physics);border-radius:50%;animation:spin 1.2s cubic-bezier(.5,0,.5,1) infinite}.spinner-ring:nth-child(1){animation-delay:-.45s;border-top-color:var(--primary-physics)}.spinner-ring:nth-child(2){animation-delay:-.3s;border-top-color:var(--primary-chemistry);width:80%;height:80%;top:10%;left:10%}.spinner-ring:nth-child(3){animation-delay:-.15s;border-top-color:var(--primary-biology);width:60%;height:60%;top:20%;left:20%}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-message{margin-top:var(--spacing-lg);font-size:var(--font-size-base);color:var(--text-medium);font-weight:var(--font-weight-medium)}.loading-spinner-container.small .loading-message{font-size:var(--font-size-sm);margin-top:var(--spacing-md)}.loading-spinner-container.large .loading-message{font-size:var(--font-size-lg);margin-top:var(--spacing-xl)}.app{min-height:100vh;display:flex;flex-direction:column}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.fade-in{animation:fadeIn .6s cubic-bezier(.4,0,.2,1)}.fade-in-up{animation:fadeInUp .6s cubic-bezier(.4,0,.2,1)}.slide-in-right{animation:slideInRight .5s cubic-bezier(.4,0,.2,1)}.scale-in{animation:scaleIn .4s cubic-bezier(.4,0,.2,1)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);transition:all var(--transition-base);cursor:pointer;border:none;outline:none;position:relative;overflow:hidden}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#fff3;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn:hover:before{width:300px;height:300px}.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(135deg,var(--primary-physics) 0%,var(--primary-physics-dark) 100%);color:#fff;box-shadow:var(--shadow-physics)}.btn-primary:hover{box-shadow:var(--shadow-xl),var(--shadow-physics)}.btn-secondary{background:var(--bg-white);color:var(--text-dark);border:2px solid var(--border-medium);box-shadow:var(--shadow-sm)}.btn-secondary:hover{border-color:var(--primary-physics);color:var(--primary-physics)}.btn-ghost{background:transparent;color:var(--text-dark)}.btn-ghost:hover{background:var(--gray-100)}.back-to-top{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:56px;height:56px;background:linear-gradient(135deg,var(--primary-physics) 0%,var(--primary-physics-dark) 100%);color:#fff;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:var(--shadow-xl),var(--shadow-physics);cursor:pointer;transition:all var(--transition-base);z-index:var(--z-fixed);border:none;outline:none}.back-to-top:hover{transform:translateY(-4px) scale(1.05);box-shadow:var(--shadow-2xl),var(--shadow-physics)}.back-to-top:active{transform:translateY(-2px) scale(1.02)}.page-container{min-height:100vh;padding-top:var(--navbar-height)}.page-main{padding:var(--spacing-3xl) var(--spacing-xl)}@media (max-width: 1024px){.page-container{padding-top:var(--navbar-height-tablet)}.page-main{padding:var(--spacing-2xl) var(--spacing-lg)}}@media (max-width: 768px){.page-container{padding-top:var(--navbar-height-mobile)}.page-main{padding:var(--spacing-xl) var(--spacing-md)}}.container{width:100%;max-width:1440px;margin:0 auto;padding:0 var(--spacing-xl)}.container-narrow{max-width:1200px}.container-wide{max-width:1600px}.card{background:var(--bg-white);border-radius:var(--radius-xl);padding:var(--spacing-xl);box-shadow:var(--shadow-md);transition:all var(--transition-base);border:1px solid var(--border-light)}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.card-elevated{box-shadow:var(--shadow-xl)}@media (max-width: 1024px){.container{padding:0 var(--spacing-lg)}}@media (max-width: 768px){.back-to-top{bottom:var(--spacing-lg);right:var(--spacing-lg);width:48px;height:48px;font-size:20px}.btn{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-sm)}}@media (max-width: 480px){.container{padding:0 var(--spacing-md)}}.error-boundary{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--gray-50) 0%,var(--bg-white) 100%);padding:var(--spacing-xl)}.error-boundary-content{max-width:600px;text-align:center;background:var(--bg-white);padding:var(--spacing-3xl);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);border:1px solid var(--border-light)}.error-icon{font-size:64px;margin-bottom:var(--spacing-lg);animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.error-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--text-dark);margin-bottom:var(--spacing-md)}.error-message{font-size:var(--font-size-lg);color:var(--text-medium);margin-bottom:var(--spacing-xl);line-height:1.6}.error-details{text-align:left;margin:var(--spacing-xl) 0;padding:var(--spacing-md);background:var(--gray-50);border-radius:var(--radius-md);border:1px solid var(--border-light)}.error-details summary{cursor:pointer;font-weight:var(--font-weight-semibold);color:var(--text-dark);margin-bottom:var(--spacing-sm)}.error-stack{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--error-main);white-space:pre-wrap;word-break:break-word;margin-top:var(--spacing-sm);padding:var(--spacing-sm);background:var(--bg-white);border-radius:var(--radius-sm);overflow-x:auto}.error-actions{display:flex;gap:var(--spacing-md);justify-content:center;margin-top:var(--spacing-xl)}@media (max-width: 768px){.error-boundary-content{padding:var(--spacing-xl)}.error-title{font-size:var(--font-size-2xl)}.error-actions{flex-direction:column}.error-actions .btn{width:100%}}*{margin:0;padding:0;box-sizing:border-box}:root{--primary-physics: #3B82F6;--primary-chemistry: #F59E0B;--primary-biology: #10B981;--primary-math: #8B5CF6;--primary-physics-light: #60A5FA;--primary-physics-dark: #2563EB;--primary-chemistry-light: #FBBF24;--primary-chemistry-dark: #D97706;--primary-biology-light: #34D399;--primary-biology-dark: #059669;--primary-math-light: #A78BFA;--primary-math-dark: #7C3AED;--gray-50: #F9FAFB;--gray-100: #F3F4F6;--gray-200: #E5E7EB;--gray-300: #D1D5DB;--gray-400: #9CA3AF;--gray-500: #6B7280;--gray-600: #4B5563;--gray-700: #374151;--gray-800: #1F2937;--gray-900: #111827;--bg-light: var(--gray-50);--bg-white: #FFFFFF;--bg-dark: #0F172A;--text-dark: var(--gray-900);--text-medium: var(--gray-700);--text-light: var(--gray-500);--text-lighter: var(--gray-400);--border-light: var(--gray-200);--border-medium: var(--gray-300);--border-dark: var(--gray-400);--success-main: #10B981;--success-light: #D1FAE5;--success-dark: #059669;--warning-main: #F59E0B;--warning-light: #FEF3C7;--warning-dark: #D97706;--error-main: #EF4444;--error-light: #FEE2E2;--error-dark: #DC2626;--info-main: #3B82F6;--info-light: #DBEAFE;--info-dark: #2563EB;--primary-main: var(--primary-physics);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--spacing-3xl: 64px;--spacing-4xl: 96px;--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-mono: "SF Mono", "Monaco", "Inconsolata", "Fira Code", "Fira Mono", "Droid Sans Mono", "Courier New", monospace;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 30px;--font-size-4xl: 36px;--font-size-5xl: 48px;--font-size-6xl: 60px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);--shadow-physics: 0 10px 25px -5px rgba(59, 130, 246, .3);--shadow-chemistry: 0 10px 25px -5px rgba(245, 158, 11, .3);--shadow-biology: 0 10px 25px -5px rgba(16, 185, 129, .3);--shadow-math: 0 10px 25px -5px rgba(139, 92, 246, .3);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--transition-bounce: .5s cubic-bezier(.68, -.55, .265, 1.55);--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-navbar: 1000;--navbar-height: 64px;--navbar-height-tablet: 60px;--navbar-height-mobile: 56px}body{font-family:var(--font-family-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text-dark);background-color:var(--bg-light);line-height:var(--line-height-normal);font-size:var(--font-size-base)}code{font-family:var(--font-family-mono);font-size:.9em}a{text-decoration:none;color:inherit;transition:color var(--transition-fast)}button{cursor:pointer;border:none;outline:none;font-family:inherit;transition:all var(--transition-base)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--gray-100);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb{background:var(--gray-400);border-radius:var(--radius-full);border:2px solid var(--gray-100)}::-webkit-scrollbar-thumb:hover{background:var(--gray-500)}::selection{background-color:var(--primary-physics);color:#fff}:focus-visible{outline:2px solid var(--primary-physics);outline-offset:2px;border-radius:var(--radius-sm)}.badge,.tag,.label{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);white-space:nowrap;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.2);min-height:24px}.grade-badge,.grade-tag,.chapter-grade-badge,.chapter-grade-tag{background:linear-gradient(135deg,#1e293b,#334155);color:#fff!important;border:2px solid var(--subject-color, var(--primary-physics));box-shadow:0 2px 8px #0003,0 0 0 1px #ffffff1a inset;-webkit-text-fill-color:#FFFFFF!important;text-fill-color:#FFFFFF!important;text-shadow:0 1px 3px rgba(0,0,0,.5)}.badge-primary{background:var(--primary-physics);color:#fff;border:none}.badge-chemistry{background:var(--primary-chemistry);color:#fff;border:none}.badge-biology{background:var(--primary-biology);color:#fff;border:none}.badge-math{background:var(--primary-math);color:#fff;border:none}.badge-light{background:var(--bg-light);color:var(--text-dark);border:1px solid var(--border-medium)}.badge-warning,.review-badge{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff!important;border:none;box-shadow:0 2px 8px #f59e0b4d;text-shadow:0 1px 2px rgba(0,0,0,.3);-webkit-text-fill-color:#FFFFFF!important;text-fill-color:#FFFFFF!important}.badge-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;box-shadow:0 2px 8px #10b9814d;text-shadow:0 1px 2px rgba(0,0,0,.3)}.badge-error{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:none;box-shadow:0 2px 8px #ef44444d;text-shadow:0 1px 2px rgba(0,0,0,.3)}.badge-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;box-shadow:0 2px 8px #3b82f64d;text-shadow:0 1px 2px rgba(0,0,0,.3)}.data-label,.info-label{color:var(--text-medium);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.data-value,.info-value{color:var(--text-dark);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base)}.dark-bg .data-label,.dark-bg .info-label{color:#fffc}.dark-bg .data-value,.dark-bg .info-value{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}.btn{font-weight:var(--font-weight-semibold);text-shadow:none}.btn-primary,.btn-reset{color:#fff!important;text-shadow:0 1px 2px rgba(0,0,0,.2)}.btn-secondary{color:var(--text-dark);background:var(--bg-white);border:2px solid var(--border-medium)}.btn-secondary:hover{color:var(--primary-physics);border-color:var(--primary-physics);background:var(--bg-light)}.card,.panel{background:var(--bg-white);color:var(--text-dark)}.card-title,.panel-title{color:var(--text-dark);font-weight:var(--font-weight-bold)}.card-text,.panel-text{color:var(--text-medium)}input,textarea,select{background:var(--bg-white);color:var(--text-dark);border:1px solid var(--border-medium)}input::placeholder,textarea::placeholder{color:var(--text-light);opacity:.7}input:focus,textarea:focus,select:focus{border-color:var(--primary-physics);outline:none;box-shadow:0 0 0 3px #3b82f61a}a{color:var(--primary-physics);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-physics-dark);text-decoration:underline}.dark-bg a{color:#60a5fa}.dark-bg a:hover{color:#93c5fd}h1,h2,h3,h4,h5,h6{color:var(--text-dark);font-weight:var(--font-weight-bold)}.gradient-title{background:linear-gradient(135deg,var(--primary-physics) 0%,var(--primary-chemistry) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.custom-tooltip{background:var(--gray-900);color:#fff;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);box-shadow:var(--shadow-lg);text-shadow:none}@media (max-width: 768px){.badge,.tag,.label{font-size:var(--font-size-xs);padding:3px var(--spacing-sm);min-height:20px}}@media (prefers-contrast: high){.badge,.tag,.label{border-width:2px;font-weight:var(--font-weight-bold)}.btn{border-width:2px}.card,.panel{border:2px solid var(--border-dark)}}@media print{.badge,.tag,.label{background:transparent!important;color:var(--text-dark)!important;border:1px solid var(--border-dark)!important;-webkit-text-fill-color:var(--text-dark)!important;text-fill-color:var(--text-dark)!important}}
