.auth-wrapper{min-height:100vh;background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%);display:flex;align-items:center;justify-content:center;padding:var(--spacing-5)}.auth-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--spacing-5)}.auth-card{background:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);padding:var(--spacing-10);width:100%;max-width:450px;margin:0 auto}.terms-card{max-width:700px;max-height:90vh;overflow-y:auto}.auth-card h2{color:var(--color-gray-900);font-size:var(--font-size-3xl);font-family:var(--font-family-heading);font-weight:var(--font-weight-bold);margin-bottom:var(--spacing-2);text-align:center}.auth-subtitle{color:var(--color-gray-600);font-size:var(--font-size-base);font-family:var(--font-family-body);text-align:center;margin-bottom:var(--spacing-8);line-height:var(--line-height-relaxed)}.auth-form{margin-bottom:var(--spacing-6)}.form-group{margin-bottom:var(--spacing-5)}.form-group label{display:block;color:var(--color-gray-700);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-1-5);font-size:var(--font-size-sm)}.form-group input{width:100%;padding:var(--spacing-3) var(--spacing-4);border:var(--border-width-2) solid var(--color-gray-200);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-family:var(--font-family-body);transition:var(--transition-base)}.form-group input:focus{outline:none;border-color:var(--color-primary-600);box-shadow:0 0 0 3px var(--color-primary-100)}.form-group input:disabled{background-color:var(--color-gray-100);color:var(--color-gray-600);cursor:not-allowed}.form-help{color:var(--color-gray-600);font-size:var(--font-size-xs);font-family:var(--font-family-body);margin-top:var(--spacing-1)}.auth-button{width:100%;padding:var(--spacing-3-5) var(--spacing-5);border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);cursor:pointer;transition:var(--transition-base);margin-bottom:var(--spacing-4)}.auth-button.primary{background:linear-gradient(135deg,var(--color-primary-600),var(--color-primary-700));color:var(--color-white)}.auth-button.primary:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-700),var(--color-primary-800));transform:translateY(-1px);box-shadow:var(--shadow-primary-md)}.auth-button.secondary{background:var(--color-gray-100);color:var(--color-gray-700)}.auth-button.secondary:hover:not(:disabled){background:var(--color-gray-200)}.auth-button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.auth-links{text-align:center;margin-top:var(--spacing-6)}.auth-links p{color:var(--color-gray-600);font-family:var(--font-family-body);margin:0}.link-button{background:none;border:none;color:var(--color-primary-600);cursor:pointer;font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);text-decoration:none}.link-button:hover{text-decoration:underline}.error-message{background:var(--color-error-50);border:var(--border-width-1) solid var(--color-error-200);color:var(--color-error-600);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-lg);margin-bottom:var(--spacing-5);font-size:var(--font-size-sm);font-family:var(--font-family-body)}.success-message{background:var(--color-success-50);border:var(--border-width-1) solid var(--color-success-200);color:var(--color-success-700);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-lg);margin-bottom:var(--spacing-5);font-size:var(--font-size-sm);font-family:var(--font-family-body)}.loading-message{background:var(--color-primary-50);border:var(--border-width-1) solid var(--color-primary-200);color:var(--color-primary-700);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-lg);margin-bottom:var(--spacing-5);font-size:var(--font-size-sm);font-family:var(--font-family-body);text-align:center}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%);color:var(--color-white)}.loading-spinner{width:40px;height:40px;border:var(--border-width-4) solid rgba(255,255,255,.3);border-left:var(--border-width-4) solid var(--color-white);border-radius:var(--radius-full);animation:spin 1s linear infinite;margin-bottom:var(--spacing-4)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.verification-instructions{background:var(--color-gray-50);border:var(--border-width-1) solid var(--color-gray-200);border-radius:var(--radius-lg);padding:var(--spacing-5);margin:var(--spacing-6) 0}.verification-instructions h3{color:var(--color-gray-900);font-family:var(--font-family-heading);margin-bottom:var(--spacing-3);font-size:var(--font-size-base)}.verification-instructions ol{color:var(--color-gray-700);font-family:var(--font-family-body);padding-left:var(--spacing-5);line-height:var(--line-height-relaxed)}.verification-actions{text-align:center;margin:var(--spacing-6) 0}.verification-actions p{color:var(--color-gray-600);font-family:var(--font-family-body);margin-bottom:var(--spacing-3)}.terms-content{max-height:400px;overflow-y:auto;border:var(--border-width-1) solid var(--color-gray-200);border-radius:var(--radius-lg);padding:var(--spacing-5);margin:var(--spacing-6) 0;background:var(--color-gray-50)}.terms-content h3{color:var(--color-gray-900);font-family:var(--font-family-heading);margin-bottom:var(--spacing-5);border-bottom:var(--border-width-2) solid var(--color-gray-200);padding-bottom:var(--spacing-2)}.terms-content h4{color:var(--color-gray-700);font-family:var(--font-family-heading);margin:var(--spacing-5) 0 var(--spacing-2) 0;font-size:var(--font-size-base)}.terms-section{margin-bottom:var(--spacing-5)}.terms-section p{color:var(--color-gray-700);font-family:var(--font-family-body);line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-2)}.terms-section ul{color:var(--color-gray-700);font-family:var(--font-family-body);padding-left:var(--spacing-5);line-height:var(--line-height-relaxed)}.terms-section li{margin-bottom:var(--spacing-1)}.terms-agreement{margin:var(--spacing-6) 0;padding:var(--spacing-5);background:var(--color-warning-100);border:var(--border-width-1) solid var(--color-warning-300);border-radius:var(--radius-lg)}.checkbox-label{display:flex;align-items:flex-start;cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family-body);line-height:var(--line-height-normal);color:var(--color-gray-900)}.checkbox-label input[type=checkbox]{margin-right:var(--spacing-3);margin-top:var(--spacing-0-5);width:16px;height:16px;cursor:pointer}.terms-actions{text-align:center;margin:var(--spacing-6) 0}.terms-footer{text-align:center;margin-top:var(--spacing-6);padding-top:var(--spacing-4);border-top:var(--border-width-1) solid var(--color-gray-200)}.terms-footer small{color:var(--color-gray-600);font-family:var(--font-family-body);line-height:var(--line-height-relaxed)}.user-info{display:flex;align-items:center;justify-content:space-between;background:var(--color-white);padding:var(--spacing-3) var(--spacing-5);border-radius:var(--radius-lg);margin-bottom:var(--spacing-5);box-shadow:var(--shadow-sm)}.user-details{display:flex;align-items:center;gap:var(--spacing-3)}.user-avatar{width:40px;height:40px;background:linear-gradient(135deg,var(--color-primary-600),var(--color-primary-700));border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;color:var(--color-white);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.user-name{font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.user-email{font-family:var(--font-family-body);font-size:var(--font-size-sm);color:var(--color-gray-600)}.logout-button{background:var(--color-gray-100);border:var(--border-width-1) solid var(--color-gray-300);color:var(--color-gray-700);padding:var(--spacing-2) var(--spacing-4);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family-body);font-size:var(--font-size-sm);transition:var(--transition-base)}.logout-button:hover{background:var(--color-gray-200);border-color:var(--color-gray-400)}.oauth-section{margin-bottom:var(--spacing-6)}.oauth-button{width:100%;padding:var(--spacing-3) var(--spacing-5);border:var(--border-width-2) solid var(--color-gray-200);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);background:var(--color-white);cursor:pointer;transition:var(--transition-base);display:flex;align-items:center;justify-content:center;gap:var(--spacing-3);margin-bottom:var(--spacing-3)}.oauth-button:hover:not(:disabled){background:var(--color-gray-50);border-color:var(--color-gray-300);box-shadow:var(--shadow-sm)}.oauth-button:active:not(:disabled){transform:scale(.98)}.oauth-button:disabled{opacity:.6;cursor:not-allowed}.oauth-button.google{color:var(--color-gray-900)}.oauth-button.google:hover:not(:disabled){border-color:#4285f4;background:#f8faff}.oauth-button.microsoft{color:var(--color-gray-900)}.oauth-button.microsoft:hover:not(:disabled){border-color:#05a6f0;background:#f8fcff}.oauth-icon{width:20px;height:20px;flex-shrink:0}.divider{position:relative;text-align:center;margin:var(--spacing-6) 0}.divider:before{content:"";position:absolute;top:50%;left:0;right:0;height:var(--border-width-1);background:var(--color-gray-200)}.divider span{position:relative;background:var(--color-white);padding:0 var(--spacing-4);color:var(--color-gray-600);font-family:var(--font-family-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}@media (max-width: 480px){.auth-card{padding:var(--spacing-6);margin:0 var(--spacing-4)}.terms-card{padding:var(--spacing-5);margin:0 var(--spacing-2-5);max-height:95vh}.auth-card h2{font-size:var(--font-size-2xl)}.auth-subtitle{font-size:var(--font-size-sm)}.oauth-button{font-size:var(--font-size-sm);padding:var(--spacing-2-5) var(--spacing-4)}}.oauth-processing,.oauth-error{text-align:center;padding:var(--spacing-5)}.oauth-spinner{width:48px;height:48px;border:var(--border-width-4) solid var(--color-gray-200);border-top-color:var(--color-primary-600);border-radius:var(--radius-full);margin:0 auto var(--spacing-6);animation:spin 1s linear infinite}.oauth-processing h2{margin-bottom:var(--spacing-3);color:var(--color-gray-900);font-family:var(--font-family-heading)}.oauth-processing-text{color:var(--color-gray-600);font-family:var(--font-family-body);font-size:var(--font-size-base);margin:0}.oauth-error-icon{width:64px;height:64px;color:var(--color-error-600);margin:0 auto var(--spacing-6)}.oauth-error h2{margin-bottom:var(--spacing-3);color:var(--color-gray-900);font-family:var(--font-family-heading)}.oauth-error-text{color:var(--color-error-600);font-family:var(--font-family-body);font-size:var(--font-size-base);margin:0 0 var(--spacing-4) 0;font-weight:var(--font-weight-medium)}.oauth-redirect-text{color:var(--color-gray-600);font-family:var(--font-family-body);font-size:var(--font-size-sm);margin:0 0 var(--spacing-6) 0}.icon{display:inline-block;flex-shrink:0;vertical-align:middle;line-height:1;transition:var(--transition-colors)}.icon-xs{width:16px;height:16px}.icon-sm{width:20px;height:20px}.icon-base{width:24px;height:24px}.icon-lg{width:28px;height:28px}.icon-xl{width:32px;height:32px}.top-nav{position:sticky;top:0;z-index:var(--z-sticky);background:var(--color-bg-primary);border-bottom:var(--border-width-1) solid var(--color-border);box-shadow:var(--shadow-sm);height:var(--nav-height)}.top-nav-container{max-width:1200px;margin:0 auto;height:100%;padding:0 var(--spacing-4);display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-6)}@media (min-width: 768px){.top-nav-container{padding:0 var(--spacing-8)}}.top-nav-left{display:flex;align-items:center;gap:var(--spacing-8);flex:1;min-width:0}.logo{display:flex;align-items:center;gap:var(--spacing-2);text-decoration:none;color:var(--color-text-primary);font-family:var(--font-family-heading);font-weight:var(--font-weight-bold);font-size:var(--font-size-xl);transition:var(--transition-colors);flex-shrink:0}.logo:hover{color:var(--color-primary);text-decoration:none}.logo .icon{color:var(--color-primary)}.logo-text{display:none;background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-secondary-600) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@media (min-width: 640px){.logo-text{display:inline}}.nav-links{display:flex;align-items:center;gap:var(--spacing-1);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.nav-links::-webkit-scrollbar{display:none}.nav-link{display:flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-base);text-decoration:none;color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:var(--transition-colors);position:relative;white-space:nowrap;flex-shrink:0}@media (min-width: 1024px){.nav-link{font-size:var(--font-size-base);padding:var(--spacing-2) var(--spacing-4)}}.nav-link:hover{color:var(--color-primary);background-color:var(--color-primary-50);text-decoration:none}.nav-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.nav-link-active{color:var(--color-primary-700);background-color:var(--color-primary-100);font-weight:var(--font-weight-semibold)}.nav-link-active .nav-icon{color:var(--color-primary-600)}.nav-icon{flex-shrink:0;color:currentColor}.nav-label{display:none}@media (min-width: 768px){.nav-label{display:inline}}.top-nav-right{display:flex;align-items:center;gap:var(--spacing-4);flex-shrink:0}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-base);background:transparent;border:none;cursor:pointer;transition:var(--transition-colors);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}@media (min-width: 1024px){.user-menu-trigger{font-size:var(--font-size-base);padding:var(--spacing-2) var(--spacing-4)}}.user-menu-trigger:hover{background-color:var(--color-primary-50);color:var(--color-primary)}.user-menu-trigger:focus-visible{outline:none;box-shadow:var(--focus-ring)}.user-avatar{width:32px;height:32px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-secondary-500) 100%);color:var(--color-white);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);font-family:var(--font-family-heading);flex-shrink:0}.user-name{font-size:inherit;font-weight:inherit;color:inherit;white-space:nowrap}.dropdown-icon{flex-shrink:0;color:currentColor;transition:var(--transition-transform)}.user-menu-trigger[aria-expanded=true] .dropdown-icon{transform:rotate(180deg)}.user-dropdown{position:absolute;top:calc(100% + var(--spacing-2));right:0;min-width:180px;background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;z-index:var(--z-dropdown);animation:slideDown var(--duration-fast) var(--ease-out)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{width:100%;display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);background:transparent;border:none;text-align:left;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-700);cursor:pointer;transition:var(--transition-colors)}.dropdown-item:hover{background-color:var(--color-gray-100);color:var(--color-gray-900)}.dropdown-item:focus-visible{outline:none;background-color:var(--color-primary-50)}.dropdown-item-icon{flex-shrink:0;color:var(--color-gray-600)}.dropdown-item:hover .dropdown-item-icon{color:var(--color-primary-600)}.mobile-menu-button{display:none;align-items:center;gap:var(--spacing-2);justify-content:center;padding:var(--spacing-2) var(--spacing-3);background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.mobile-menu-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.mobile-menu-button:hover{color:var(--color-primary);background-color:var(--color-primary-50);border-radius:var(--radius-base)}@media (max-width: 768px){.mobile-menu-button{display:flex}.nav-links{display:none}.nav-links.mobile-open{display:flex;position:absolute;top:var(--nav-height);left:0;right:0;flex-direction:column;background:var(--color-bg-primary);border-bottom:var(--border-width-1) solid var(--color-border);box-shadow:var(--shadow-lg);padding:var(--spacing-4);gap:var(--spacing-2)}.nav-links.mobile-open .nav-label{display:inline}.nav-link{width:100%;justify-content:flex-start}}@media (max-width: 640px){.top-nav-left{gap:var(--spacing-4)}}.dashboard-layout{min-height:100vh;display:flex;flex-direction:column;background-color:var(--color-gray-50)}.dashboard-main{flex:1;padding-top:var(--spacing-8);padding-bottom:var(--spacing-8);max-width:1200px;margin:0 auto;width:100%;padding-left:var(--spacing-4);padding-right:var(--spacing-4)}@media (min-width: 768px){.dashboard-main{padding-left:var(--spacing-8);padding-right:var(--spacing-8)}}.dashboard-content{width:100%;max-width:100%;display:flex;flex-direction:column;flex:1}.class-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--spacing-4);padding:var(--spacing-6);background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base);position:relative;overflow:hidden}.class-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary-500) 0%,var(--color-secondary-500) 100%);opacity:0;transition:var(--transition-base)}.class-card:hover{border-color:var(--color-primary-300);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.class-card:hover:before{opacity:1}.class-card:focus{outline:none;box-shadow:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.class-card:active{transform:translateY(-2px)}.class-card-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--color-accent-50) 0%,var(--color-primary-50) 100%);color:var(--color-accent-600);transition:var(--transition-base)}.class-card:hover .class-card-icon{background:linear-gradient(135deg,var(--color-accent-100) 0%,var(--color-primary-100) 100%);transform:scale(1.05)}.class-card-content{flex:1;width:100%}.class-card-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--spacing-1) 0;font-family:var(--font-family-heading)}.class-card-period{font-size:var(--font-size-sm);color:var(--color-gray-700);margin:0 0 var(--spacing-3) 0}.class-card-stats{display:flex;gap:var(--spacing-4);margin-top:var(--spacing-2)}.class-card-stat{display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-sm);color:var(--color-gray-700)}.class-card-stat .icon{color:var(--color-primary-500)}.class-card-arrow{position:absolute;top:var(--spacing-6);right:var(--spacing-6);color:var(--color-gray-300);transition:var(--transition-base)}.class-card:hover .class-card-arrow{color:var(--color-primary-500);transform:translate(4px)}@media (max-width: 640px){.class-card{padding:var(--spacing-5)}.class-card-icon{width:48px;height:48px}}.modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--spacing-4);animation:fadeIn .2s ease-out}.modal-container{background:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);max-height:90vh;display:flex;flex-direction:column;animation:slideInUp .3s ease-out;position:relative}.modal-sm{width:100%;max-width:400px}.modal-md{width:100%;max-width:600px}.modal-lg{width:100%;max-width:800px}.modal-xl{width:100%;max-width:1200px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-6);border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text);margin:0;line-height:var(--line-height-tight)}.modal-close-button{background:none;border:none;width:32px;height:32px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.modal-close-button:hover{background:var(--color-bg-secondary);color:var(--color-text)}.modal-close-button:focus{outline:2px solid var(--color-primary);outline-offset:2px}.modal-body{padding:var(--spacing-6);overflow-y:auto;flex:1}.modal-body::-webkit-scrollbar{width:8px}.modal-body::-webkit-scrollbar-track{background:var(--color-bg-secondary);border-radius:var(--radius-md)}.modal-body::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-md)}.modal-body::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 640px){.modal-overlay{padding:0;align-items:flex-end}.modal-container{width:100%;max-width:100%;max-height:95vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:slideInUpMobile .3s ease-out}.modal-header{padding:var(--spacing-4)}.modal-title{font-size:var(--font-size-lg)}.modal-body{padding:var(--spacing-4)}}@keyframes slideInUpMobile{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.modal-overlay,.modal-container{animation:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);font-family:var(--font-family-body);font-weight:var(--font-weight-medium);line-height:1;border-radius:var(--radius-base);transition:var(--transition-base);cursor:pointer;border:var(--border-width-1) solid transparent;text-decoration:none;white-space:nowrap;-webkit-user-select:none;user-select:none;position:relative}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-sm{padding:var(--spacing-1-5) var(--spacing-3);font-size:var(--font-size-sm);min-height:var(--button-height-sm)}.btn-base{padding:var(--spacing-2-5) var(--spacing-4);font-size:var(--font-size-base);min-height:var(--button-height-base)}.btn-lg{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-lg);min-height:var(--button-height-lg)}.btn-with-icon{gap:var(--spacing-2)}.btn-icon-only{padding:var(--spacing-2);aspect-ratio:1}.btn-icon-only.btn-sm{padding:var(--spacing-1-5)}.btn-icon-only.btn-lg{padding:var(--spacing-3)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.btn-icon-left{margin-right:calc(var(--spacing-1) * -1)}.btn-icon-right{margin-left:calc(var(--spacing-1) * -1)}.btn-primary{background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);color:var(--color-text-inverse);box-shadow:var(--shadow-sm)}.btn-primary:active:not(:disabled){box-shadow:var(--shadow-xs);transform:translateY(0)}.btn-secondary{background:linear-gradient(135deg,var(--color-secondary-500) 0%,var(--color-secondary-600) 100%);color:var(--color-text-inverse);box-shadow:var(--shadow-sm)}.btn-secondary:active:not(:disabled){box-shadow:var(--shadow-xs);transform:translateY(0)}.btn-outline{background-color:var(--color-bg-primary);color:var(--color-primary-600);border-color:var(--color-primary-300);box-shadow:var(--shadow-xs)}.btn-outline:hover:not(:disabled){background-color:var(--color-primary-50);border-color:var(--color-primary-500);color:var(--color-primary-700);box-shadow:var(--shadow-sm)}.btn-outline:active:not(:disabled){background-color:var(--color-primary-100)}.btn-ghost{background-color:transparent;color:var(--color-gray-700)}.btn-ghost:hover:not(:disabled){background-color:var(--color-gray-100);color:var(--color-gray-900)}.btn-ghost:active:not(:disabled){background-color:var(--color-gray-200)}.btn-danger{background:linear-gradient(135deg,var(--color-error-500) 0%,var(--color-error-600) 100%);color:var(--color-text-inverse);box-shadow:var(--shadow-sm)}.btn-danger:active:not(:disabled){box-shadow:var(--shadow-xs);transform:translateY(0)}.btn-full-width{width:100%}.btn-loading{cursor:wait;pointer-events:none}.btn-spinner{display:inline-flex;align-items:center;justify-content:center;margin-right:var(--spacing-2)}.spinner{width:18px;height:18px}.spinner-track{opacity:.2}.spinner-indicator{animation:spin 1s cubic-bezier(.4,.15,.6,.85) infinite;transform-origin:center}@keyframes spin{0%{transform:rotate(0);stroke-dashoffset:60}50%{stroke-dashoffset:15}to{transform:rotate(360deg);stroke-dashoffset:60}}.btn-content-loading{opacity:.6}.btn-sm .spinner{width:14px;height:14px}.btn-lg .spinner{width:22px;height:22px}@media (max-width: 640px){.btn{font-size:var(--font-size-sm)}.btn-lg{font-size:var(--font-size-base);padding:var(--spacing-2-5) var(--spacing-5)}}.add-class-form{display:flex;flex-direction:column;gap:var(--spacing-5)}.form-error-banner{background:var(--color-danger-light);border:1px solid var(--color-danger);border-radius:var(--radius-md);padding:var(--spacing-3) var(--spacing-4);color:var(--color-danger-dark);font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--spacing-2)}.form-error-banner:before{content:"⚠";font-size:var(--font-size-lg)}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);line-height:var(--line-height-tight)}.form-label .required{color:var(--color-danger);margin-left:var(--spacing-1)}.form-input{width:100%;padding:var(--spacing-3);font-size:var(--font-size-md);font-family:var(--font-family);color:var(--color-text);background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast);line-height:var(--line-height-normal)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-input:disabled{background:var(--color-bg-secondary);color:var(--color-text-muted);cursor:not-allowed}.form-input::placeholder{color:var(--color-text-muted)}.form-input.input-error{border-color:var(--color-danger)}.form-input.input-error:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px var(--color-danger-light)}.form-textarea{resize:vertical;min-height:80px;font-family:var(--font-family)}select.form-input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236B7280' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-3) center;padding-right:var(--spacing-8)}@media (max-width: 640px){.form-row{grid-template-columns:1fr}}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.form-error-message{font-size:var(--font-size-xs);color:var(--color-danger);line-height:var(--line-height-normal);display:flex;align-items:center;gap:var(--spacing-1)}.form-error-message:before{content:"⚠";font-size:var(--font-size-sm)}.form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-3);margin-top:var(--spacing-4);padding-top:var(--spacing-5);border-top:1px solid var(--color-border)}@media (max-width: 640px){.form-actions{flex-direction:column-reverse}.form-actions button{width:100%}}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.dashboard-overview{width:100%;animation:fadeIn var(--duration-base) var(--ease-out)}.page-header h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-gray-900);margin-bottom:var(--spacing-2)}.page-header .tagline{font-size:var(--font-size-lg);color:var(--color-gray-700);margin:0}.quick-actions-section,.classes-section{margin-bottom:var(--spacing-10)}.section-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin:0 0 var(--spacing-4) 0}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-4);gap:var(--spacing-4)}.action-cards-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:var(--spacing-4)}@media (min-width: 640px){.action-cards-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.action-cards-grid{grid-template-columns:repeat(4,1fr)}}.action-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--spacing-4);padding:var(--spacing-6);background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base);text-align:left;position:relative;overflow:hidden}.action-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary-500) 0%,var(--color-secondary-500) 100%);opacity:0;transition:var(--transition-base)}.action-card:hover{border-color:var(--color-primary-300);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.action-card:hover:before{opacity:1}.action-card:active{transform:translateY(-2px)}.action-card-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-secondary-50) 100%);color:var(--color-primary-600);transition:var(--transition-base)}.action-card:hover .action-card-icon{background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-secondary-100) 100%);transform:scale(1.05)}.action-card-content{flex:1}.action-card-content h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--spacing-1) 0;font-family:var(--font-family-heading)}.action-card-content p{font-size:var(--font-size-sm);color:var(--color-gray-700);margin:0;line-height:var(--line-height-snug)}.action-arrow{position:absolute;top:var(--spacing-6);right:var(--spacing-6);color:var(--color-gray-300);transition:var(--transition-base)}.action-card:hover .action-arrow{color:var(--color-primary-500);transform:translate(4px)}.class-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:var(--spacing-4)}@media (min-width: 768px){.class-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.class-grid{grid-template-columns:repeat(3,1fr)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-16) var(--spacing-6);text-align:center;background:var(--color-bg-primary);border:var(--border-width-2) dashed var(--color-border);border-radius:var(--radius-xl);min-height:350px}.empty-icon{font-size:72px;margin-bottom:var(--spacing-6);opacity:.3;filter:grayscale(100%)}.empty-state h3{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--spacing-3) 0;font-family:var(--font-family-heading)}.empty-state p{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0 0 var(--spacing-6) 0;max-width:400px;line-height:var(--line-height-relaxed)}@media (max-width: 640px){.page-header{margin-bottom:var(--spacing-6)}.page-header h1{font-size:var(--font-size-2xl)}.tagline{font-size:var(--font-size-sm)}.section-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-3)}.action-card{padding:var(--spacing-4)}.action-card-icon{font-size:28px}.empty-state{padding:var(--spacing-8) var(--spacing-4);min-height:250px}.empty-icon{font-size:48px}}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-12) var(--spacing-6);text-align:center;min-height:400px}.loading-spinner{width:48px;height:48px;border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:var(--spacing-4)}.loading-state p{font-size:var(--font-size-md);color:var(--color-text-secondary);margin:0}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-12) var(--spacing-6);text-align:center;background:var(--color-white);border:2px solid var(--color-danger-light);border-radius:var(--radius-lg);min-height:400px}.error-icon{font-size:64px;margin-bottom:var(--spacing-4)}.error-state h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text);margin:0 0 var(--spacing-2) 0}.error-state p{font-size:var(--font-size-md);color:var(--color-text-secondary);margin:0 0 var(--spacing-4) 0;max-width:400px}.retry-button{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-white);background:var(--color-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.retry-button:hover{background:var(--color-primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}.retry-button:active{transform:translateY(0)}.students-page{width:100%;animation:fadeIn var(--duration-base) var(--ease-out)}.header-actions{display:flex;gap:var(--spacing-3)}.class-section.expanded{box-shadow:var(--shadow-md)}.class-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-5) var(--spacing-6);background:var(--color-gray-50);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:var(--border-width-1) solid var(--color-border)}.class-header.expanded{background:var(--color-primary-50);border-bottom:var(--border-width-2) solid var(--color-primary-500)}.class-info{display:flex;align-items:center;gap:var(--spacing-4);pointer-events:none}.class-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-accent-50) 0%,var(--color-primary-50) 100%);color:var(--color-accent-600)}.class-details h3{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);font-family:var(--font-family-heading)}.class-details p{margin:var(--spacing-1) 0 0 0;font-size:var(--font-size-sm);color:var(--color-gray-600)}.class-actions{display:flex;align-items:center;gap:var(--spacing-4)}.student-count{display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-sm);color:var(--color-gray-600);font-weight:var(--font-weight-medium)}.student-count .icon{color:var(--color-primary-500)}.expand-icon{display:flex;align-items:center;justify-content:center;color:var(--color-gray-400);transition:transform var(--duration-base) var(--ease-out)}.students-page .class-content{max-height:0;overflow:hidden;transition:max-height var(--duration-slow) var(--ease-out)}.students-page .class-content.expanded{max-height:3000px;transition:max-height var(--duration-slow) var(--ease-in)}.empty-class{padding:var(--spacing-12) var(--spacing-6);text-align:center;background:var(--color-bg-primary)}.empty-class p{margin:0 0 var(--spacing-4) 0;color:var(--color-gray-600);font-size:var(--font-size-base)}.table-container{background:var(--color-bg-primary);overflow:hidden}.students-table{width:100%;border-collapse:collapse}.students-table thead{background:var(--color-gray-50);border-bottom:var(--border-width-2) solid var(--color-border)}.students-table th{padding:var(--spacing-4) var(--spacing-5);text-align:left;font-weight:var(--font-weight-semibold);color:var(--color-gray-700);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;font-family:var(--font-family-heading)}.students-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition-base)}.students-table th.sortable:hover{background:var(--color-gray-100);color:var(--color-gray-900)}.th-content{display:flex;align-items:center;gap:var(--spacing-2)}.students-table tbody tr{border-bottom:var(--border-width-1) solid var(--color-border);transition:var(--transition-base)}.students-table tbody tr:hover{background:var(--color-gray-50)}.students-table tbody tr:last-child{border-bottom:none}.students-table td{padding:var(--spacing-4) var(--spacing-5);color:var(--color-gray-900);font-size:var(--font-size-base);text-align:left}.access-code{display:inline-block;font-family:Monaco,Courier New,monospace;background:var(--color-gray-100);padding:var(--spacing-1-5) var(--spacing-3);border-radius:var(--radius-base);font-size:var(--font-size-sm);color:var(--color-primary-600);font-weight:var(--font-weight-semibold);border:var(--border-width-1) solid var(--color-gray-200);letter-spacing:.05em}.table-actions{display:flex;gap:var(--spacing-2)}.action-button{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-2);background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-gray-600);transition:var(--transition-base)}.action-button:hover{background:var(--color-gray-50);border-color:var(--color-gray-300);color:var(--color-gray-900)}.action-delete:hover{background:var(--color-error-50);border-color:var(--color-error-300);color:var(--color-error-600)}.loading-spinner{width:48px;height:48px;border:4px solid var(--color-border);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin var(--duration-slow) linear infinite}.loading-state p{color:var(--color-gray-600);font-size:var(--font-size-base)}.error-message{color:var(--color-error-600);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);display:flex;align-items:center;gap:var(--spacing-2)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:var(--spacing-4);padding:var(--spacing-12) var(--spacing-6);text-align:center}.empty-icon{display:flex;align-items:center;justify-content:center;width:80px;height:80px;border-radius:var(--radius-xl);background:var(--color-gray-100);color:var(--color-gray-400)}.empty-state h3{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin:0;font-family:var(--font-family-heading)}.empty-state p{font-size:var(--font-size-base);color:var(--color-gray-600);margin:0 0 var(--spacing-4) 0;max-width:400px;line-height:var(--line-height-relaxed)}.student-form,.bulk-import-form{display:flex;flex-direction:column;gap:var(--spacing-5)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-4)}.form-group label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-700)}.form-group .required{color:var(--color-error-500)}.form-group input,.form-group textarea,.form-group select{padding:var(--spacing-3);font-size:var(--font-size-base);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-md);transition:var(--transition-base);font-family:inherit;color:var(--color-gray-900)}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--color-primary-500);box-shadow:var(--focus-ring)}.form-group input.error,.form-group textarea.error,.form-group select.error{border-color:var(--color-error-500)}.form-group input.error:focus,.form-group textarea.error:focus,.form-group select.error:focus{box-shadow:0 0 0 3px var(--color-error-100)}.error-message{color:var(--color-error-600);font-size:var(--font-size-sm)}.error-banner{padding:var(--spacing-3) var(--spacing-4);background:var(--color-error-50);border:var(--border-width-1) solid var(--color-error-300);border-radius:var(--radius-md);color:var(--color-error-700);font-size:var(--font-size-sm)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--spacing-3);margin-top:var(--spacing-6);padding-top:var(--spacing-5);border-top:var(--border-width-1) solid var(--color-border)}.form-help{padding:var(--spacing-4);background:var(--color-primary-50);border-radius:var(--radius-md);margin-bottom:var(--spacing-4);border:var(--border-width-1) solid var(--color-primary-200)}.form-help p{margin:0;font-size:var(--font-size-sm);color:var(--color-gray-700);line-height:var(--line-height-relaxed)}.form-help p+p{margin-top:var(--spacing-3)}.form-help strong{color:var(--color-gray-900);font-weight:var(--font-weight-semibold)}.text-muted{color:var(--color-gray-500);font-size:var(--font-size-sm)}@media (max-width: 768px){.students-page{padding:var(--spacing-4)}.page-header{flex-direction:column;gap:var(--spacing-4)}.page-title{font-size:var(--font-size-2xl)}.header-actions{width:100%;flex-direction:column}.header-actions button{width:100%}.class-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-4)}.class-info{width:100%}.class-actions{width:100%;flex-wrap:wrap;gap:var(--spacing-2)}.student-count{flex:0 0 auto}.form-row{grid-template-columns:1fr}.table-container{border:none;background:transparent;box-shadow:none}.students-table{display:block}.students-table thead{display:none}.students-table tbody{display:block}.students-table tbody tr{display:block;background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--spacing-4);padding:var(--spacing-4)}.students-table tbody tr:hover{background:var(--color-gray-50)}.students-table td{display:block;padding:var(--spacing-2) 0;border:none}.students-table td:before{content:attr(data-label);font-weight:var(--font-weight-semibold);color:var(--color-gray-600);display:block;margin-bottom:var(--spacing-1);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em}.table-actions{margin-top:var(--spacing-3);padding-top:var(--spacing-3);border-top:var(--border-width-1) solid var(--color-border);justify-content:flex-end}}.scores-page{width:100%;animation:fadeIn var(--duration-base) var(--ease-out)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-8);gap:var(--spacing-4)}.header-content{flex:1}.page-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-gray-900);margin:0 0 var(--spacing-2) 0;font-family:var(--font-family-heading)}.page-subtitle{font-size:var(--font-size-base);color:var(--color-gray-600);margin:0}.class-sections{display:flex;flex-direction:column;gap:var(--spacing-4)}.class-section{background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-sm);transition:var(--transition-base)}.class-section:hover{box-shadow:var(--shadow-md)}.class-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-5) var(--spacing-6);cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition-base);background:var(--color-gray-50);border-bottom:var(--border-width-1) solid var(--color-border)}.class-header:hover{background:var(--color-gray-100)}.class-info{display:flex;align-items:center;gap:var(--spacing-4);flex:1}.class-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-accent-50) 0%,var(--color-primary-50) 100%);color:var(--color-accent-600);flex-shrink:0}.expand-icon{display:flex;align-items:center;justify-content:center;color:var(--color-gray-400);transition:transform var(--duration-base) var(--ease-out);flex-shrink:0}.expand-icon.expanded{transform:rotate(180deg)}.class-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin:0;flex:1;font-family:var(--font-family-heading)}.class-stats{display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-sm);color:var(--color-gray-600);white-space:nowrap}.class-stats .icon{color:var(--color-primary-500)}.class-content{border-top:var(--border-width-1) solid var(--color-border);animation:fadeIn var(--duration-base) var(--ease-out)}.table-container{overflow-x:auto;background:var(--color-bg-primary);-webkit-overflow-scrolling:touch}.scores-table{width:100%;min-width:700px;border-collapse:collapse;background:var(--color-bg-primary);color:var(--color-gray-900);table-layout:fixed}@media (min-width: 768px){.scores-table{min-width:100%}}.scores-table thead{background:var(--color-gray-50);border-bottom:var(--border-width-2) solid var(--color-border);position:sticky;top:0;z-index:10}.scores-table th{padding:var(--spacing-2) var(--spacing-2);text-align:center;font-weight:var(--font-weight-semibold);color:var(--color-gray-700);font-size:10px;text-transform:uppercase;letter-spacing:.02em;white-space:normal;word-wrap:break-word;font-family:var(--font-family-heading);line-height:1.2;max-width:85px}.scores-table th:first-child,.scores-table th:nth-child(2){text-align:left;max-width:none}.scores-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition-base)}.scores-table th.sortable:hover{background:var(--color-gray-100);color:var(--color-gray-900)}.th-content{display:flex;align-items:center;justify-content:flex-start;gap:var(--spacing-2)}.sort-indicator{font-size:var(--font-size-xs);opacity:.5}.scores-table tbody tr{border-bottom:var(--border-width-1) solid var(--color-border);transition:var(--transition-base)}.scores-table tbody tr:hover{background:var(--color-gray-50)}.scores-table tbody tr:last-child{border-bottom:none}.scores-table td{padding:var(--spacing-2) var(--spacing-1-5);color:var(--color-gray-900);font-size:10px;text-align:center;vertical-align:middle}.scores-table td:first-child,.scores-table td:nth-child(2){text-align:left;padding-left:var(--spacing-2);font-size:var(--font-size-sm)}.score-cell{cursor:pointer;padding:var(--spacing-1) var(--spacing-1-5);transition:var(--transition-base);text-align:center;display:inline-flex;align-items:center;justify-content:center;min-width:40px;border-radius:var(--radius-sm);-webkit-tap-highlight-color:rgba(59,130,246,.1);touch-action:manipulation}@media (max-width: 768px){.score-cell{min-width:44px;min-height:44px;padding:var(--spacing-2)}}.score-cell.editing{background:var(--color-bg-primary);padding:var(--spacing-1);gap:var(--spacing-2);cursor:auto;pointer-events:auto}.edit-score-btn{display:inline-flex;align-items:center;gap:var(--spacing-2);margin-left:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);color:var(--color-white);border:none;cursor:pointer;transition:var(--transition-base);font-family:var(--font-family-body)}.edit-score-btn:hover{background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-700) 100%);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.edit-score-btn.save{background:linear-gradient(135deg,var(--color-success-500) 0%,var(--color-success-600) 100%)}.edit-score-btn.save:hover{background:linear-gradient(135deg,var(--color-success-600) 0%,var(--color-success-700) 100%)}.score-cell:hover{background:var(--color-primary-50)}.score-cell.has-score{font-weight:var(--font-weight-medium)}.score-cell.no-score{color:var(--color-gray-400);font-style:italic}.score-value{font-size:10px;color:var(--color-primary-600);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body)}.score-percentile{font-size:8px;color:var(--color-gray-500)}.score-empty{color:var(--color-gray-300);font-size:var(--font-size-xs)}.score-input{width:60px!important;padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-base);font-family:var(--font-family-body);font-weight:var(--font-weight-medium);border:var(--border-width-2) solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--color-text-primary);text-align:center;transition:var(--transition-base)}.score-input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.score-input::placeholder{color:var(--color-gray-400)}.empty-class{padding:var(--spacing-8);text-align:center;color:var(--color-text-tertiary)}.empty-class p{margin:0;font-size:var(--font-size-lg)}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:var(--spacing-4)}.loading-spinner{width:48px;height:48px;border:4px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:var(--spacing-4)}.error-message{color:var(--color-danger);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:var(--spacing-4);padding:var(--spacing-8);text-align:center}.empty-icon{font-size:72px;opacity:.3}.empty-state h3{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.empty-state p{font-size:var(--font-size-lg);color:var(--color-text-secondary);margin:0}.score-form{display:flex;flex-direction:column;gap:var(--spacing-4)}.form-group label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.form-group .required{color:var(--color-danger)}.form-group input{padding:var(--spacing-3);font-size:var(--font-size-base);font-family:var(--font-family-body);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-md);transition:var(--transition-base);background:var(--color-bg-primary);color:var(--color-text-primary)}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.form-group input.error{border-color:var(--color-error)}.form-group input.error:focus{box-shadow:0 0 0 3px var(--color-error-50)}.error-message{color:var(--color-error);font-size:var(--font-size-sm)}.error-banner{padding:var(--spacing-3);background:var(--color-error-50);border:var(--border-width-1) solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:var(--font-size-sm)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--spacing-3);margin-top:var(--spacing-4);padding-top:var(--spacing-4);border-top:var(--border-width-1) solid var(--color-border)}.form-help{padding:var(--spacing-4);background:var(--color-gray-50);border-radius:var(--radius-md);margin-bottom:var(--spacing-2)}.form-help p{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.form-help p+p{margin-top:var(--spacing-2)}.text-muted{color:var(--color-text-tertiary);font-size:var(--font-size-xs)}@media (max-width: 1024px){.scores-page{padding:var(--spacing-4)}.class-name{font-size:var(--font-size-lg)}.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.scores-table{min-width:600px}.scores-table th,.scores-table td{padding:var(--spacing-2) var(--spacing-3)}}@media (max-width: 768px){.page-header{flex-direction:column;gap:var(--spacing-3)}.class-info{flex-wrap:wrap}.class-stats{width:100%;margin-left:var(--spacing-7)}.scores-table{font-size:var(--font-size-sm)}.score-cell{min-width:50px}.score-value{font-size:var(--font-size-base)}}.score-actions{display:flex;justify-content:flex-end;gap:var(--spacing-3);padding:var(--spacing-4);background:var(--color-gray-50);border-top:var(--border-width-1) solid var(--color-border)}.score-actions .btn-primary,.score-actions .btn-secondary{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-base);font-family:var(--font-family-body)}.score-actions .btn-primary{background:var(--color-primary);color:var(--color-white);border:none}.score-actions .btn-primary:hover{background:var(--color-primary-600);transform:translateY(-1px);box-shadow:var(--shadow-md)}.score-actions .btn-primary:focus{outline:none;box-shadow:var(--focus-ring)}.score-actions .btn-secondary{background:var(--color-white);color:var(--color-gray-700);border:var(--border-width-1) solid var(--color-border)}.score-actions .btn-secondary:hover{background:var(--color-gray-50);border-color:var(--color-gray-400)}.score-actions .btn-secondary:focus{outline:none;box-shadow:var(--focus-ring)}.worksheets-page{min-height:100vh;padding:var(--spacing-6);animation:var(--animation-fade-in)}.worksheets-header{margin-bottom:var(--spacing-6)}.worksheets-header-content h1{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--spacing-2) 0}.worksheets-header-content p{font-size:var(--font-size-lg);color:var(--color-text-secondary);margin:0}.classes-list{display:flex;flex-direction:column;gap:var(--spacing-4)}.class-worksheet-card{background:var(--color-white);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);transition:all var(--transition-normal)}.class-worksheet-card:hover{box-shadow:var(--shadow-md)}.class-worksheet-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-5);cursor:pointer;transition:background-color var(--transition-fast)}.class-worksheet-header:hover{background:var(--color-gray-50)}.class-info{display:flex;align-items:center;gap:var(--spacing-3);flex:1}.expand-icon{font-size:var(--font-size-sm);color:var(--color-text-secondary);transition:transform var(--transition-fast)}.class-name{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--spacing-1) 0}.class-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.class-worksheet-status{display:flex;align-items:center;gap:var(--spacing-2)}.status-badge{padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.status-badge.generated{background:var(--color-green-100);color:var(--color-green-800)}.status-badge.not-generated{background:var(--color-gray-100);color:var(--color-gray-700)}.class-worksheet-actions{padding:0 var(--spacing-5) var(--spacing-5) var(--spacing-5)}.generate-all-btn{width:100%;padding:var(--spacing-3) var(--spacing-4);background:var(--color-primary);color:var(--color-white);border:none;border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.generate-all-btn:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}.generate-all-btn:disabled{opacity:.6;cursor:not-allowed}.generated-actions{display:flex;gap:var(--spacing-2);align-items:center}.week-download-section{display:flex;align-items:center;gap:var(--spacing-2);flex:1}.week-download-section label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);white-space:nowrap}.week-download-select{flex:1;padding:var(--spacing-2) var(--spacing-3);border:1px solid var(--color-border-medium);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-white);cursor:pointer;transition:all var(--transition-fast)}.week-download-select:hover:not(:disabled){border-color:var(--color-primary)}.week-download-select:disabled{opacity:.6;cursor:not-allowed;background:var(--color-gray-50)}.action-btn{flex:1;padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--spacing-1)}.action-btn.secondary{background:var(--color-white);color:var(--color-text-primary);border:1px solid var(--color-border-medium)}.action-btn.secondary:hover{background:var(--color-gray-50);border-color:var(--color-border-dark)}.students-worksheet-list{border-top:1px solid var(--color-border-light);background:var(--color-gray-50);padding:var(--spacing-5);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:1000px}}.students-list-header h4{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--spacing-4) 0}.no-students{text-align:center;padding:var(--spacing-8);color:var(--color-text-secondary)}.students-grid{display:flex;flex-direction:column;gap:var(--spacing-3)}.student-worksheet-item{background:var(--color-white);border:1px solid var(--color-border-light);border-radius:var(--radius-md);padding:var(--spacing-3);display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--spacing-3)}.student-name{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-selector{display:flex;align-items:center;gap:var(--spacing-2);flex-shrink:0}.week-selector label{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:var(--font-weight-medium);white-space:nowrap}.week-select{padding:var(--spacing-1) var(--spacing-2);border:1px solid var(--color-border-medium);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-gray-50);cursor:pointer;width:110px}.week-select:hover{border-color:var(--color-primary);background:var(--color-white)}.week-select:focus{outline:2px solid var(--color-primary);outline-offset:1px;background:var(--color-white)}.print-btn{padding:var(--spacing-2) var(--spacing-3);background:var(--color-primary);color:var(--color-white);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;min-width:40px;height:32px}.print-btn:hover{background:var(--color-primary-dark);transform:scale(1.05)}.print-btn:disabled{opacity:.6;cursor:not-allowed}.print-btn .spinner{width:16px;height:16px}.spinner{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.worksheets-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-16) var(--spacing-8);text-align:center}.worksheets-empty-icon{font-size:80px;margin-bottom:var(--spacing-4);opacity:.4}.worksheets-empty-state h2{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--spacing-2) 0}.worksheets-empty-state p{font-size:var(--font-size-lg);color:var(--color-text-secondary);margin:0 0 var(--spacing-6) 0;max-width:500px}.worksheets-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-16) var(--spacing-8);text-align:center}.loading-spinner{width:48px;height:48px;border:4px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-4)}.worksheets-loading p{font-size:var(--font-size-lg);color:var(--color-text-secondary)}.worksheets-error{padding:var(--spacing-4);background:var(--color-red-50);border:1px solid var(--color-red-200);border-radius:var(--radius-lg);color:var(--color-red-800);margin-bottom:var(--spacing-4)}@media (max-width: 768px){.worksheets-page{padding:var(--spacing-4)}.students-grid{grid-template-columns:1fr}.generated-actions{flex-direction:column}.student-worksheet-item{flex-wrap:wrap}.student-name{min-width:100%;max-width:100%;margin-bottom:var(--spacing-2)}.week-selector{width:100%;justify-content:flex-start}}.worksheet-plans-page{display:flex;flex-direction:column;height:100vh;background-color:#f5f7fa}.worksheet-plans-header{background:#fff;border-bottom:1px solid #e2e8f0;padding:2rem}.header-content h1{margin:0 0 .5rem;color:#1a202c;font-size:2rem}.header-content p{margin:0;color:#64748b;font-size:.95rem}.error-banner{margin-top:1rem;padding:1rem;background:#fee;border:1px solid #fcc;border-radius:6px;color:#c33}.worksheet-plans-content{display:grid;grid-template-columns:300px 1fr;gap:2rem;padding:2rem;flex:1;overflow:hidden}.student-selector-panel{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px #0000001a;overflow-y:auto}.student-selector-panel h3{margin:0 0 1rem;font-size:1.1rem;color:#1a202c}.student-list{display:flex;flex-direction:column;gap:.5rem}.student-item{padding:1rem;border-radius:6px;cursor:pointer;transition:all .2s;border:2px solid transparent}.student-item:hover{background:#f7fafc}.student-item.selected{background:#ebf4ff;border-color:#3b82f6}.student-name{font-weight:600;color:#1a202c;margin-bottom:.25rem}.student-plans-count{font-size:.85rem;color:#64748b}.plan-details-panel{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;overflow:hidden}.plan-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e2e8f0}.student-info h2{margin:0 0 .5rem;color:#1a202c}.scores-summary{display:flex;gap:.5rem;flex-wrap:wrap}.score-badge{display:inline-block;padding:.25rem .75rem;background:#e0f2fe;color:#0369a1;border-radius:12px;font-size:.85rem;font-weight:500}.plan-viewer{display:flex;flex-direction:column;flex:1;overflow:hidden}.week-tabs{display:flex;gap:.5rem;padding:1rem 1.5rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;overflow-x:auto}.week-tab{padding:.5rem 1rem;border:none;background:#fff;border-radius:6px;cursor:pointer;font-weight:500;color:#64748b;transition:all .2s;white-space:nowrap}.week-tab:hover{background:#e0f2fe;color:#0369a1}.week-tab.active{background:#3b82f6;color:#fff}.week-content{flex:1;overflow-y:auto;padding:1.5rem}.week-header h3{margin:0;color:#1a202c}.quadrants-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.quadrant-card{background:#fafbfc;border:1px solid #e2e8f0;border-radius:8px;padding:1.5rem}.quadrant-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.concept-code{font-size:.75rem;color:#64748b;background:#fff;padding:.25rem .5rem;border-radius:4px;font-family:Courier New,monospace}.concept-title{color:#64748b;margin-bottom:1rem;font-size:.9rem}.items-details summary{cursor:pointer;font-weight:600;color:#3b82f6;-webkit-user-select:none;user-select:none}.items-details summary:hover{text-decoration:underline}.item-preview{background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:1rem}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.item-type{font-size:.85rem;font-weight:600;padding:.25rem .75rem;border-radius:12px}.item-type.example{background:#e0f2fe;color:#0369a1}.item-type.practice{background:#f0fdf4;color:#15803d}.item-id{font-size:.75rem;color:#94a3b8;font-family:Courier New,monospace}.item-stem{color:#1a202c;margin-bottom:.5rem;line-height:1.5}.no-plan-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.no-plan-icon{font-size:4rem;margin-bottom:1rem}.no-plan-state h3{margin:0 0 1rem;color:#1a202c}.no-plan-state p{color:#64748b;max-width:500px;margin:0 auto 1rem}.plan-info{background:#f8fafc;border-radius:8px;padding:1.5rem;margin-top:1rem!important}.plan-info ul{list-style:none;padding:0;margin:.5rem 0 0;text-align:left}.plan-info li{padding:.5rem 0;color:#475569}.plan-info li:before{content:"✓ ";color:#22c55e;font-weight:700;margin-right:.5rem}.no-week-data{text-align:center;padding:3rem;color:#64748b}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.empty-icon{font-size:5rem;margin-bottom:1rem}.empty-state h2{margin:0 0 1rem;color:#1a202c}.empty-state p{color:#64748b;max-width:500px}.loading-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem;text-align:center}.loading-spinner{width:40px;height:40px;border:4px solid #e2e8f0;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.spinner{display:inline-block;width:14px;height:14px;border:2px solid #e2e8f0;border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite;margin-right:.5rem}.page-header{margin-bottom:var(--spacing-8)}.page-header h1{display:flex;align-items:center;gap:var(--spacing-3);margin:0 0 var(--spacing-2) 0;color:var(--color-gray-900);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);font-family:var(--font-family-heading)}.header-icon{color:var(--color-primary-600)}.page-subtitle{margin:0;color:var(--color-gray-600);font-size:var(--font-size-base)}.card{background:var(--color-bg-primary);border-radius:var(--radius-xl);padding:var(--spacing-6);margin-bottom:var(--spacing-6);box-shadow:var(--shadow-sm);border:var(--border-width-1) solid var(--color-border)}.card h2{margin:0 0 var(--spacing-4) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);font-family:var(--font-family-heading)}.class-selector-section{background:var(--color-bg-primary);color:var(--color-gray-900)}.class-selector-section h2{color:var(--color-gray-900)}.class-selector{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--spacing-3);margin-bottom:var(--spacing-4);max-height:400px;overflow-y:auto;padding-right:var(--spacing-2)}@media (max-width: 768px){.class-selector{grid-template-columns:1fr;max-height:none}}.class-selector::-webkit-scrollbar{width:8px}.class-selector::-webkit-scrollbar-track{background:var(--color-gray-100);border-radius:var(--radius-base)}.class-selector::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-base)}.class-selector::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.class-button{background:var(--color-bg-primary);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-4);cursor:pointer;transition:var(--transition-base);color:var(--color-gray-900);text-align:left}.class-button:hover{background:var(--color-primary-50);border-color:var(--color-primary-300);transform:translateY(-2px);box-shadow:var(--shadow-md)}.class-button.active{background:var(--color-primary-100);color:var(--color-primary-700);border-color:var(--color-primary-500);box-shadow:var(--shadow-lg)}.class-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);margin-bottom:var(--spacing-1);font-family:var(--font-family-heading)}.class-period{font-size:var(--font-size-sm);opacity:.9}.class-count{font-size:var(--font-size-sm);margin-top:var(--spacing-2);opacity:.85}.class-actions{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-2)}.build-progress{margin:0;font-size:.9rem;color:#ffffffe6}.students-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.students-header h2{margin:0}.class-print-actions{display:flex;align-items:center;gap:.75rem;background:#f9fafb;padding:.75rem 1rem;border-radius:6px;border:1px solid #e2e8f0}.class-print-actions label{font-weight:500;color:#1a202c;font-size:.9rem}.week-select{padding:.5rem .75rem;border:2px solid #e2e8f0;border-radius:6px;font-size:.9rem;background:#fff;cursor:pointer;transition:border-color .2s}.week-select:hover{border-color:#cbd5e0}.week-select:focus{outline:none;border-color:#3b82f6}.students-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-2);max-height:600px;overflow-y:auto;padding-right:var(--spacing-2);padding-bottom:var(--spacing-4)}.student-card{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--spacing-2);background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-2) var(--spacing-3);cursor:pointer;transition:var(--transition-base);position:relative;overflow:hidden;min-height:auto}.student-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary-500) 0%,var(--color-secondary-500) 100%);opacity:0;transition:var(--transition-base)}.student-card:hover{border-color:var(--color-primary-300);box-shadow:var(--shadow-md);transform:translateY(-2px)}.student-card:hover:before{opacity:1}.student-card.selected{border-color:var(--color-primary-500);background:var(--color-primary-50);box-shadow:var(--shadow-lg)}.student-card.selected:before{opacity:1}.student-card.has-plan{border-color:var(--color-success-200)}.student-card.has-plan:hover{border-color:var(--color-success-300)}.student-card.no-plan{background:var(--color-bg-primary);border-color:var(--color-border)}.student-card .student-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;color:var(--color-gray-900);font-family:var(--font-family-heading);line-height:var(--line-height-snug);flex:1}.status-badge{display:inline-flex;align-items:center;gap:var(--spacing-1);padding:var(--spacing-0-5) var(--spacing-1-5);border-radius:var(--radius-full);font-size:9px;font-weight:var(--font-weight-medium);white-space:nowrap;flex-shrink:0}.status-badge.success{background:var(--color-success-100);color:var(--color-success-700)}.status-badge.pending{background:var(--color-gray-100);color:var(--color-gray-600)}.status-badge.pending{background:#fef3c7;color:#92400e}.delete-plan-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-2);background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-gray-600);transition:var(--transition-base)}.delete-plan-btn:hover{background:var(--color-error-50);border-color:var(--color-error-300);color:var(--color-error-600)}.delete-plan-btn:disabled{opacity:.5;cursor:not-allowed}.student-detail-section{margin-top:1rem}.student-detail-header h2{color:#1a202c;margin-bottom:1rem}.plan-meta{display:flex;gap:2rem;margin:1rem 0;padding:1rem;background:#f9fafb;border-radius:6px;font-size:.9rem}.plan-meta strong{color:#1a202c}.category-rits-display{margin:1.5rem 0;padding:1rem;background:#f0f8ff;border-radius:8px;border:1px solid #bfdbfe}.category-rits-display h3{margin:0 0 1rem;font-size:1rem;color:#1e40af}.category-rits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:.75rem}.category-rit-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#fff;border-left:3px solid #4CAF50;border-radius:4px;box-shadow:0 1px 2px #0000000d}.category-rit-item strong{color:#1a202c;font-size:.9rem}.rit-range{font-weight:600;color:#4caf50;font-size:.95rem;padding:.25rem .75rem;background:#f0fdf4;border-radius:4px}.week-tabs{display:flex;gap:.5rem;margin:1.5rem 0;flex-wrap:wrap}.week-tab{padding:.5rem 1rem;border:2px solid #e2e8f0;background:#fff;border-radius:6px;cursor:pointer;transition:all .2s;font-weight:500;color:#64748b}.week-tab:hover{border-color:#cbd5e0;background:#f9fafb}.week-tab.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.week-content{margin-top:1.5rem}.week-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.week-header h3{margin:0;font-size:1.5rem;color:#1a202c}.week-actions{display:flex;gap:.75rem}.quadrants-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(450px,1fr));gap:1.5rem}.quadrant-card{border:2px solid #e2e8f0;border-radius:8px;padding:1.25rem;background:#fff}.quadrant-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.quadrant-header h4{margin:0;color:#1a202c;font-size:1.1rem}.concept-code{font-size:.85rem;color:#64748b;background:#f1f5f9;padding:.25rem .5rem;border-radius:4px}.concept-title{margin-bottom:1rem;color:#475569;font-size:.95rem}.items-summary{display:flex;gap:2rem;margin-bottom:1rem}.item-count{display:flex;flex-direction:column;align-items:center}.item-count .count{font-size:2rem;font-weight:700;color:#3b82f6}.item-count .label{font-size:.85rem;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.items-details{margin-top:1rem;border-top:1px solid #e2e8f0;padding-top:1rem}.items-details summary{cursor:pointer;font-weight:500;color:#3b82f6;padding:.5rem;border-radius:4px;transition:background .2s}.items-details summary:hover{background:#f1f5f9}.items-list{margin-top:1rem;display:flex;flex-direction:column;gap:1rem}.item-preview{padding:1rem;background:#f9fafb;border-radius:6px;border-left:3px solid #3b82f6}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.item-type{font-size:.85rem;font-weight:600;padding:.25rem .5rem;border-radius:4px}.item-type.example{background:#dbeafe;color:#1e40af}.item-type.practice{background:#fef3c7;color:#92400e}.item-id{font-size:.75rem;color:#94a3b8;font-family:monospace}.item-stem{margin-bottom:.5rem;color:#1a202c;line-height:1.5}.item-answer{font-size:.9rem;color:#64748b}.item-answer strong{color:#1a202c}.loading,.error,.info{text-align:center;padding:3rem;color:#64748b;font-size:1.1rem}.error{color:#dc2626;background:#fee;border-radius:8px}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;margin-right:.5rem}@media (max-width: 1200px){.quadrants-grid{grid-template-columns:1fr}}@media (max-width: 768px){.students-grid,.class-selector{grid-template-columns:1fr}.week-tabs{gap:.25rem}.week-tab{padding:.4rem .75rem;font-size:.9rem}}.student-answers-section{margin:2rem 0;padding:1.5rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.student-answers-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.student-answers-section h3{margin:0;color:#1a202c;font-size:1.3rem}.answers-summary{display:flex;gap:2rem;margin-bottom:2rem;padding:1.25rem;background:linear-gradient(135deg,#f9fafb,#f3f4f6);border-radius:8px;flex-wrap:wrap}.stat{display:flex;flex-direction:column;gap:.25rem}.stat-label{font-size:.85rem;color:#6b7280;font-weight:500}.stat-value{font-size:1.5rem;font-weight:700;color:#1f2937}.stat-value.correct{color:#10b981}.stat-value.incorrect{color:#ef4444}.missed-questions{margin:2rem 0;padding:1.5rem;background:#fef2f2;border-left:4px solid #ef4444;border-radius:8px}.missed-questions h4{margin:0 0 1.5rem;color:#991b1b;font-size:1.1rem}.answer-card{background:#fff;padding:1.25rem;margin:1rem 0;border-radius:8px;border:2px solid #e5e7eb;box-shadow:0 1px 3px #0000001a}.answer-card.missed{border-color:#fca5a5}.answer-header{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}.badge{padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:600}.week-badge{background:#dbeafe;color:#1e40af}.category-badge{background:#e0e7ff;color:#4338ca}.concept{color:#6b7280;font-size:.9rem;font-weight:500}.question-text{margin:1rem 0;padding:1rem;background:#f9fafb;border-radius:6px;font-size:1rem;line-height:1.6;color:#1f2937}.choices{display:flex;flex-direction:column;gap:.75rem;margin:1rem 0}.choice{padding:.875rem;border:2px solid #e5e7eb;border-radius:6px;background:#fff;transition:all .2s;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.choice-letter{font-weight:700;color:#4b5563;min-width:30px}.choice.selected-wrong{background:#fee2e2;border-color:#ef4444;border-width:3px}.choice.correct{background:#d1fae5;border-color:#10b981;border-width:3px}.badge-inline{padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;margin-left:auto}.badge-inline.wrong{background:#ef4444;color:#fff}.badge-inline.correct{background:#10b981;color:#fff}.explanation{margin-top:1rem;padding:1rem;background:#eff6ff;border-left:4px solid #3b82f6;border-radius:6px;color:#1e40af;line-height:1.6}.explanation strong{display:block;margin-bottom:.5rem;color:#1e3a8a}.all-answers-toggle{margin-top:2rem;padding:1rem;background:#f0fdf4;border-radius:8px;border:1px solid #bbf7d0}.all-answers-toggle summary{cursor:pointer;font-weight:600;color:#166534;font-size:1.05rem;padding:.5rem;list-style-position:outside}.all-answers-toggle summary:hover{color:#15803d}.correct-answers-list{margin-top:1rem}.week-answers{margin:1.5rem 0}.week-answers h5{margin:0 0 1rem;color:#065f46;font-size:1.05rem;padding-bottom:.5rem;border-bottom:2px solid #bbf7d0}.compact-answers-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}.compact-answer-card{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#fff;border:1px solid #d1fae5;border-radius:6px;font-size:.9rem}.concept-mini{flex:1;color:#4b5563;font-weight:500}.answer-mini{color:#059669;font-weight:600;font-size:.85rem}.loading-answers{display:flex;align-items:center;gap:1rem;padding:1.5rem;background:#f9fafb;border-radius:8px;color:#6b7280;margin:2rem 0}.student-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%);padding:var(--spacing-5)}.student-login-container{background:var(--color-white);border-radius:var(--radius-2xl);padding:var(--spacing-10);max-width:500px;width:100%;box-shadow:var(--shadow-2xl)}.student-login-header{text-align:center;margin-bottom:var(--spacing-10)}.student-icon-wrapper{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;background:linear-gradient(135deg,var(--color-secondary-500),var(--color-secondary-600));border-radius:var(--radius-full);margin-bottom:var(--spacing-4);color:var(--color-white)}.student-login-header h1{font-size:var(--font-size-4xl);font-family:var(--font-family-heading);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-2-5) 0;color:var(--color-gray-900)}.student-login-header p{font-size:var(--font-size-lg);font-family:var(--font-family-body);color:var(--color-gray-600);margin:0}.student-login-form{display:flex;flex-direction:column;gap:var(--spacing-5)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-2)}.form-group label{font-size:var(--font-size-base);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.access-code-input{padding:var(--spacing-4);font-size:var(--font-size-xl);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);text-align:center;letter-spacing:3px;border:var(--border-width-2) solid var(--color-gray-200);border-radius:var(--radius-lg);transition:var(--transition-base);text-transform:uppercase}.access-code-input:focus{outline:none;border-color:var(--color-primary-600);box-shadow:0 0 0 3px var(--color-primary-100)}.access-code-input:disabled{background-color:var(--color-gray-100);cursor:not-allowed}.last-name-input{padding:var(--spacing-4);font-size:var(--font-size-base);font-family:var(--font-family-body);border:var(--border-width-2) solid var(--color-gray-200);border-radius:var(--radius-lg);transition:var(--transition-base)}.last-name-input:focus{outline:none;border-color:var(--color-primary-600);box-shadow:0 0 0 3px var(--color-primary-100)}.last-name-input:disabled{background-color:var(--color-gray-100);cursor:not-allowed}.help-text{font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-gray-600);margin:0}.error-message{padding:var(--spacing-3);background-color:var(--color-error-50);color:var(--color-error-600);border:var(--border-width-1) solid var(--color-error-200);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-family:var(--font-family-body);text-align:center}.login-button{padding:var(--spacing-4);font-size:var(--font-size-lg);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--color-white);background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base);margin-top:var(--spacing-2-5)}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-primary-lg)}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.student-login-footer{margin-top:var(--spacing-8);text-align:center;padding-top:var(--spacing-5);border-top:var(--border-width-1) solid var(--color-gray-200)}.student-login-footer p{margin:0;color:var(--color-gray-600);font-family:var(--font-family-body);font-size:var(--font-size-sm)}.student-login-footer a{color:var(--color-primary-600);text-decoration:none;font-weight:var(--font-weight-semibold)}.student-login-footer a:hover{text-decoration:underline}@media (max-width: 600px){.student-login-container{padding:var(--spacing-8) var(--spacing-5)}.student-login-header h1{font-size:var(--font-size-3xl)}.access-code-input{font-size:var(--font-size-lg)}}.student-portal{padding:20px;max-width:1200px;margin:0 auto}.portal-header{text-align:center;margin-bottom:40px}.portal-header h1{font-size:2.5rem;color:#1f2937;margin-bottom:10px}.portal-header .subtitle{font-size:1.2rem;color:#6b7280}.loading,.error{text-align:center;padding:40px;font-size:1.2rem}.error{color:#dc2626}.worksheets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;margin-top:30px}.no-worksheets{grid-column:1 / -1;text-align:center;padding:60px 20px;background:#f9fafb;border-radius:8px;color:#6b7280}.worksheet-card{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:20px;transition:transform .2s,box-shadow .2s}.worksheet-card:hover{transform:translateY(-4px);box-shadow:0 4px 12px #00000026}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid #e5e7eb}.card-header h3{margin:0;font-size:1.5rem;color:#1f2937}.status-badge{padding:4px 12px;border-radius:12px;font-size:.85rem;font-weight:600;text-transform:uppercase}.status-badge.green{background:#d1fae5;color:#065f46}.status-badge.blue{background:#dbeafe;color:#1e40af}.status-badge.gray{background:#e5e7eb;color:#4b5563}.card-body{margin:16px 0}.dates{color:#6b7280;font-size:.9rem;margin-bottom:12px}.score-display{display:flex;align-items:center;gap:8px;margin-top:12px}.score-label{color:#6b7280;font-size:.9rem}.score-value{font-size:1.5rem;font-weight:700;color:#3b82f6}.card-actions{display:flex;gap:12px;margin-top:20px}.btn{flex:1;padding:10px 16px;border-radius:6px;text-align:center;text-decoration:none;font-weight:500;transition:background-color .2s;border:none;cursor:pointer}.btn-primary{background:#3b82f6;color:#fff}.btn-primary:hover{background:#2563eb}.btn-secondary{background:#e5e7eb;color:#1f2937}.btn-secondary:hover{background:#d1d5db}.ai-tutor-chat{display:flex;flex-direction:column;height:600px;min-height:500px;background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.chat-header{background:linear-gradient(135deg,#667eea,#764ba2);color:var(--color-white);padding:var(--spacing-3) var(--spacing-4);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2);flex-shrink:0}.chat-header h2{margin:0;font-size:18px;font-weight:600;font-family:var(--font-family-heading);color:var(--color-white)}.chat-header p{margin:0;font-size:var(--font-size-sm);opacity:.9;line-height:1.3}.chat-messages{flex:1;overflow-y:auto;padding:var(--spacing-5);background:var(--color-gray-50)}.welcome-section{display:flex;justify-content:center;align-items:center;height:100%}.welcome-message{text-align:center;max-width:500px}.welcome-message h3{font-size:22px;color:var(--color-gray-900);margin-bottom:var(--spacing-4);font-family:var(--font-family-heading);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.welcome-message p{color:var(--color-gray-600);margin-bottom:var(--spacing-5);font-family:var(--font-family-body)}.suggestions{display:flex;flex-direction:column;gap:var(--spacing-3)}.suggestion-btn{padding:var(--spacing-3) var(--spacing-5);background:var(--color-white);border:var(--border-width-2) solid var(--color-primary);border-radius:var(--radius-md);color:var(--color-primary);font-size:var(--font-size-sm);font-family:var(--font-family-body);cursor:pointer;transition:var(--transition-base)}.suggestion-btn:hover{background:var(--color-primary);color:var(--color-white);transform:translate(var(--spacing-1))}.message{display:flex;gap:var(--spacing-3);margin-bottom:var(--spacing-5);animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(var(--spacing-3))}to{opacity:1;transform:translateY(0)}}.message.user{flex-direction:row-reverse}.message-avatar{width:40px;height:40px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-white)}.message.user .message-avatar{background:linear-gradient(135deg,var(--color-primary) 0%,#0056b3 100%)}.message.assistant .message-avatar{background:linear-gradient(135deg,#667eea,#764ba2)}.message-content{max-width:70%}.message.user .message-content{text-align:right}.message-text{padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-lg);line-height:1.5;font-size:var(--font-size-base);font-family:var(--font-family-body)}.message.user .message-text{background:var(--color-primary);color:var(--color-white);border-bottom-right-radius:var(--spacing-1)}.message.assistant .message-text{background:var(--color-white);color:var(--color-gray-900);border:var(--border-width-1) solid var(--color-gray-200);border-bottom-left-radius:var(--spacing-1)}.message-time{font-size:var(--font-size-xs);color:var(--color-gray-500);margin-top:var(--spacing-1);font-family:var(--font-family-body)}.message.user .message-time{text-align:right}.typing-indicator{display:flex;gap:var(--spacing-1);padding:var(--spacing-3) var(--spacing-4);background:var(--color-white);border:var(--border-width-1) solid var(--color-gray-200);border-radius:var(--radius-lg);border-bottom-left-radius:var(--spacing-1)}.typing-indicator span{width:8px;height:8px;border-radius:var(--radius-full);background:#667eea;animation:typing 1.4s infinite}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{transform:translateY(0);opacity:.6}30%{transform:translateY(-10px);opacity:1}}.chat-input-section{display:flex;gap:var(--spacing-3);padding:var(--spacing-5);background:var(--color-white);border-top:var(--border-width-1) solid var(--color-gray-200)}.chat-input{flex:1;padding:var(--spacing-3);border:var(--border-width-2) solid var(--color-gray-200);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:var(--font-family-body);resize:none;transition:var(--transition-base)}.chat-input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.chat-input:disabled{background:var(--color-gray-50);cursor:not-allowed}.send-btn{padding:var(--spacing-3) var(--spacing-6);background:linear-gradient(135deg,#667eea,#764ba2);color:var(--color-white);border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;font-family:var(--font-family-body);cursor:pointer;transition:var(--transition-base);white-space:nowrap}.send-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea4d}.send-btn:disabled{opacity:.5;cursor:not-allowed}.tutor-tips{padding:var(--spacing-4) var(--spacing-5);background:#fff3cd;border-top:var(--border-width-1) solid #ffc107;font-size:var(--font-size-sm);color:#856404;text-align:center;font-family:var(--font-family-body);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.chat-messages::-webkit-scrollbar{width:8px}.chat-messages::-webkit-scrollbar-track{background:var(--color-gray-100)}.chat-messages::-webkit-scrollbar-thumb{background:#667eea;border-radius:var(--radius-sm)}.chat-messages::-webkit-scrollbar-thumb:hover{background:#764ba2}@media (max-width: 768px){.ai-tutor-chat{height:500px;min-height:400px}.chat-header{padding:var(--spacing-2) var(--spacing-3)}.chat-header h2{font-size:16px}.chat-header p{font-size:var(--font-size-xs)}.chat-messages{padding:var(--spacing-4)}.message-content{max-width:85%}.chat-input-section{flex-direction:column;padding:var(--spacing-4)}.send-btn{width:100%}.welcome-message{padding:0 var(--spacing-5)}.suggestion-btn{font-size:var(--font-size-sm);padding:var(--spacing-2) var(--spacing-4)}}.student-worksheet{max-width:1200px;margin:0 auto;padding:var(--spacing-6);font-family:var(--font-family-body)}.student-worksheet.loading,.student-worksheet.error{display:flex;justify-content:center;align-items:center;min-height:400px;font-size:var(--font-size-lg);color:var(--color-gray-600)}.student-worksheet.error{color:var(--color-error-600)}.worksheet-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-8);padding-bottom:var(--spacing-6);border-bottom:var(--border-width-2) solid var(--color-border);gap:var(--spacing-4)}.header-left{display:flex;flex-direction:column;gap:var(--spacing-3);flex:1}.worksheet-header h1{margin:0;font-size:var(--font-size-2xl);font-family:var(--font-family-heading);font-weight:var(--font-weight-bold);color:var(--color-gray-900)}.week-selector{display:flex;align-items:center;gap:var(--spacing-2)}.week-selector label{font-weight:var(--font-weight-semibold);color:var(--color-gray-700);font-size:var(--font-size-base)}.week-selector select{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-base);font-family:var(--font-family-body);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);cursor:pointer;transition:var(--transition-base)}.week-selector select:hover{border-color:var(--color-primary)}.week-selector select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.user-menu{display:flex;align-items:center;gap:var(--spacing-3)}.user-avatar{width:40px;height:40px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--color-primary-500),var(--color-secondary-500));color:var(--color-white);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-base);font-weight:var(--font-weight-bold);font-family:var(--font-family-heading);cursor:pointer;transition:var(--transition-base)}.user-avatar:hover{transform:scale(1.05);box-shadow:var(--shadow-md)}.logout-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-2);background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-gray-600);transition:var(--transition-base)}.logout-btn:hover{background:var(--color-error-50);border-color:var(--color-error-300);color:var(--color-error-600)}.category-tabs{display:flex;gap:var(--spacing-2);margin-bottom:var(--spacing-8);overflow-x:auto}@media (max-width: 640px){.category-tabs{flex-direction:column;overflow-x:visible}}.category-tab{padding:var(--spacing-3) var(--spacing-6);background:var(--color-bg-primary);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-lg);font-family:var(--font-family-body);font-weight:var(--font-weight-medium);color:var(--color-gray-700);cursor:pointer;transition:var(--transition-base);white-space:nowrap}.category-tab:hover{border-color:var(--color-primary);background:var(--color-gray-50)}.category-tab.active{background:var(--color-primary);color:var(--color-white);border-color:var(--color-primary)}.category-title{font-size:var(--font-size-2xl);font-family:var(--font-family-heading);font-weight:var(--font-weight-bold);color:var(--color-gray-900);margin-bottom:var(--spacing-8);padding-bottom:var(--spacing-4);border-bottom:var(--border-width-2) solid var(--color-primary)}.examples-section,.questions-section{margin-bottom:var(--spacing-10)}.examples-section h3,.questions-section h3{display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-lg);font-family:var(--font-family-heading);font-weight:var(--font-weight-semibold);color:var(--color-gray-800);margin-bottom:var(--spacing-4)}.concept-group{margin-bottom:var(--spacing-8)}.concept-heading{margin:var(--spacing-6) 0 var(--spacing-4);padding:var(--spacing-3) var(--spacing-4);padding-bottom:var(--spacing-3);border-bottom:var(--border-width-3) solid var(--color-primary);border-left:var(--border-width-4) solid var(--color-primary);color:var(--color-gray-900);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);font-family:var(--font-family-heading);background:linear-gradient(90deg,var(--color-primary-50) 0%,transparent 100%);border-radius:var(--radius-md) 0 0 0}.example-card-container{display:flex;gap:var(--spacing-6);margin-bottom:var(--spacing-8);align-items:flex-start;scroll-margin-top:var(--spacing-8)}.example-card{background:linear-gradient(135deg,var(--color-gray-50) 0%,var(--color-gray-100) 100%);border-left:var(--border-width-4) solid var(--color-success-500);border-radius:var(--radius-lg);padding:var(--spacing-6);box-shadow:var(--shadow-sm);flex:1;min-width:0}.example-chat-panel{flex:1;min-width:0;background:var(--color-bg-primary);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-4);box-shadow:var(--shadow-md)}.ai-help-btn{display:inline-flex;align-items:center;gap:var(--spacing-2);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-secondary-600) 100%);color:var(--color-white);border:none;padding:var(--spacing-1-5) var(--spacing-3);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);transition:var(--transition-base);box-shadow:var(--shadow-sm)}.ai-help-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.example-card .question-header{margin-bottom:var(--spacing-4);display:flex;align-items:center;gap:var(--spacing-2);flex-wrap:wrap}.example-card .question-number{background:var(--color-success-500);color:var(--color-white);padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-sm);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);font-family:var(--font-family-body)}.rit-badge{background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-secondary-600) 100%);color:var(--color-white);padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-sm);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);font-family:var(--font-family-body)}.example-card .question-text{font-size:var(--font-size-lg);line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-4);color:var(--color-gray-900);font-family:var(--font-family-body)}.example-card .choices{display:flex;flex-direction:column;gap:var(--spacing-2);margin-bottom:var(--spacing-4)}.example-card .choice{padding:var(--spacing-2-5) var(--spacing-4);background:var(--color-bg-primary);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:var(--font-family-body)}.example-card .choice.correct{border-color:var(--color-success-500);background:var(--color-success-50);font-weight:var(--font-weight-semibold)}.explanation{background:var(--color-bg-primary);border-radius:var(--radius-md);padding:var(--spacing-4);margin-top:var(--spacing-4)}.explanation-header{display:flex;align-items:center;gap:var(--spacing-2);color:var(--color-success-700);margin-bottom:var(--spacing-2);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body)}.explanation-text{color:var(--color-gray-700);line-height:var(--line-height-relaxed);font-size:var(--font-size-base);font-family:var(--font-family-body)}.question-card{background:var(--color-bg-primary);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-6);margin-bottom:var(--spacing-6);transition:var(--transition-base)}.question-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary)}.question-card .question-header{margin-bottom:var(--spacing-4);display:flex;align-items:center;gap:var(--spacing-2);flex-wrap:wrap}.question-card .question-number{background:var(--color-primary);color:var(--color-white);padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-sm);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);font-family:var(--font-family-body)}.question-card .question-text{font-size:var(--font-size-lg);line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-4);color:var(--color-gray-900);font-family:var(--font-family-body)}.question-card .choices{display:flex;flex-direction:column;gap:var(--spacing-2-5)}.question-card .choice{padding:var(--spacing-3) var(--spacing-4);background:var(--color-bg-primary);font-family:var(--font-family-body);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);cursor:pointer;transition:var(--transition-base);text-align:left}.question-card .choice:hover{border-color:var(--color-primary);background:var(--color-gray-50);transform:translate(4px)}.question-card .choice.selected{border-color:var(--color-primary);background:var(--color-primary-50);font-weight:var(--font-weight-semibold)}.question-card .choice.disabled{cursor:not-allowed;opacity:.6}.submit-btn{margin-top:var(--spacing-4);padding:var(--spacing-3) var(--spacing-7);background:linear-gradient(135deg,var(--color-success-500) 0%,var(--color-success-600) 100%);color:var(--color-white);border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-sm);width:100%}.submit-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.submit-btn:disabled{background:var(--color-gray-400);cursor:not-allowed;transform:none;box-shadow:none}.submission-feedback{margin-top:var(--spacing-6);padding:var(--spacing-4);border-radius:var(--radius-lg);display:flex;gap:var(--spacing-3);align-items:flex-start;animation:fadeIn var(--duration-base) var(--ease-out)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.submission-feedback.correct{background:linear-gradient(135deg,var(--color-success-50) 0%,var(--color-success-100) 100%);border:var(--border-width-2) solid var(--color-success-500);color:var(--color-success-900)}.submission-feedback.incorrect{background:linear-gradient(135deg,var(--color-error-50) 0%,var(--color-error-100) 100%);border:var(--border-width-2) solid var(--color-error-500);color:var(--color-error-900)}.feedback-icon{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);line-height:1;flex-shrink:0}.feedback-message{flex:1;line-height:var(--line-height-relaxed);font-family:var(--font-family-body)}.feedback-message strong{display:block;margin-bottom:6px;font-size:17px}.feedback-explanation{margin-top:10px;padding-top:10px;border-top:1px solid rgba(0,0,0,.1);font-size:15px;font-style:italic}@media (max-width: 768px){.student-worksheet{padding:10px}.worksheet-header{flex-direction:column;gap:15px;align-items:stretch}.worksheet-header h1{font-size:22px}.chat-toggle-btn{width:100%}.category-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.category-content h2{font-size:20px}.example-card-container{flex-direction:column}.example-chat-panel{width:100%}.example-card,.question-card{padding:15px}.example-card .question-text,.question-card .question-text{font-size:16px}.example-card .choice,.question-card .choice{font-size:14px}.concept-heading{font-size:17px}.submit-btn{padding:10px 20px;font-size:15px}.feedback-icon{font-size:24px}}.progress-dashboard{width:100%;animation:fadeIn var(--duration-base) var(--ease-out)}.progress-dashboard.loading,.progress-dashboard.error{display:flex;justify-content:center;align-items:center;min-height:400px;font-size:var(--font-size-lg);color:var(--color-gray-600)}.progress-dashboard.error{color:var(--color-error-600)}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-8);padding-bottom:var(--spacing-5);border-bottom:var(--border-width-2) solid var(--color-border);flex-wrap:wrap;gap:var(--spacing-4)}.dashboard-header h1{margin:0;font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-gray-900);font-family:var(--font-family-heading);flex:0 0 auto}.class-selector{display:flex;align-items:baseline;gap:var(--spacing-3);flex:0 0 auto}.class-selector label{font-weight:var(--font-weight-semibold);color:var(--color-gray-700);font-size:var(--font-size-base)}.class-selector select{padding:var(--spacing-2-5) var(--spacing-4);border:var(--border-width-2) solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-gray-900);background:var(--color-bg-primary);cursor:pointer;transition:var(--transition-base);font-family:var(--font-family-body);max-height:300px;overflow-y:auto}.class-selector select:focus{outline:none;border-color:var(--color-primary-500);box-shadow:var(--focus-ring)}.progress-content-grid{display:grid;grid-template-columns:2fr 1fr;gap:var(--spacing-8);align-items:start}.students-section{min-width:0}.students-section h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin:0 0 var(--spacing-5) 0;font-family:var(--font-family-heading)}.students-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-4);max-height:600px;overflow-y:auto;padding-right:var(--spacing-2)}.students-grid::-webkit-scrollbar{width:8px}.students-grid::-webkit-scrollbar-track{background:var(--color-gray-100);border-radius:var(--radius-base)}.students-grid::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-base)}.students-grid::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.student-progress-card{background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-3);cursor:pointer;transition:var(--transition-base);overflow:hidden}.student-progress-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-300)}.student-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-2);gap:var(--spacing-2)}.student-header h3{margin:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);font-family:var(--font-family-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.status-badge{display:inline-flex;align-items:center;gap:var(--spacing-1);padding:var(--spacing-0-5) var(--spacing-1-5);border-radius:var(--radius-full);font-size:10px;font-weight:var(--font-weight-medium);flex-shrink:0}.status-badge.active{background:var(--color-success-100);color:var(--color-success-700)}.status-badge.inactive{background:var(--color-gray-100);color:var(--color-gray-600)}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.status-dot.active{background:var(--color-success-500)}.status-dot.inactive{background:var(--color-gray-400)}.student-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-1-5);margin-bottom:var(--spacing-2)}.stat{display:flex;flex-direction:column;gap:var(--spacing-0-5)}.stat-label{font-size:10px;color:var(--color-gray-600);text-transform:uppercase;letter-spacing:.02em}.stat-value{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-primary-600)}.current-worksheet{margin-top:var(--spacing-1-5);padding:var(--spacing-1-5);background:var(--color-gray-50);border-radius:var(--radius-md);font-size:10px;color:var(--color-gray-700);text-align:center}.activity-section{background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-5);height:fit-content;max-height:800px;display:flex;flex-direction:column;position:sticky;top:var(--spacing-6)}.activity-section h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin:0 0 var(--spacing-4) 0;font-family:var(--font-family-heading)}.activity-feed{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-3);padding-right:var(--spacing-2)}.activity-feed::-webkit-scrollbar{width:8px}.activity-feed::-webkit-scrollbar-track{background:var(--color-gray-100);border-radius:var(--radius-base)}.activity-feed::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-base)}.activity-feed::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.activity-item{display:flex;gap:var(--spacing-3);padding:var(--spacing-3);background:var(--color-gray-50);border-left:var(--border-width-4) solid var(--color-primary-500);border-radius:var(--radius-md);transition:var(--transition-base)}.activity-item:hover{background:var(--color-gray-100);transform:translate(4px);box-shadow:var(--shadow-sm)}.activity-icon{font-size:var(--font-size-xl);flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.activity-content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-1)}.activity-text{font-size:var(--font-size-sm);color:var(--color-gray-700);line-height:var(--line-height-normal)}.activity-text strong{color:var(--color-primary-600);font-weight:var(--font-weight-semibold)}.activity-time{font-size:var(--font-size-xs);color:var(--color-gray-500)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn var(--transition-base)}.modal-content{background:var(--color-bg-primary);border-radius:var(--radius-xl);padding:var(--spacing-8);max-width:600px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-2xl);animation:slideUp var(--transition-base)}@keyframes slideUp{0%{opacity:0;transform:translateY(var(--spacing-5))}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-5);padding-bottom:var(--spacing-4);border-bottom:var(--border-width-2) solid var(--color-border)}.modal-header h2{margin:0;font-size:var(--font-size-2xl);color:var(--color-gray-900);font-family:var(--font-family-heading);font-weight:var(--font-weight-semibold)}.close-btn{background:none;border:none;font-size:var(--font-size-3xl);color:var(--color-gray-400);cursor:pointer;line-height:1;transition:var(--transition-base);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md)}.close-btn:hover{color:var(--color-gray-900);background:var(--color-gray-100)}.modal-body h3{font-size:var(--font-size-lg);color:var(--color-gray-900);margin:var(--spacing-5) 0 var(--spacing-4) 0;font-family:var(--font-family-heading);font-weight:var(--font-weight-semibold)}.detail-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-4);margin-bottom:var(--spacing-5)}.detail-stat{background:var(--color-gray-50);padding:var(--spacing-4);border-radius:var(--radius-lg);text-align:center;border:var(--border-width-1) solid var(--color-border)}.detail-label{display:block;font-size:var(--font-size-sm);color:var(--color-gray-600);margin-bottom:var(--spacing-2)}.detail-value{display:block;font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-primary-600)}.detail-value.correct{color:var(--color-success-600)}.detail-value.incorrect{color:var(--color-error-600)}.category-performance{display:flex;flex-direction:column;gap:var(--spacing-4)}.category-bar{display:flex;align-items:center;gap:var(--spacing-3)}.category-label{min-width:150px;font-size:var(--font-size-sm);color:var(--color-gray-700);font-weight:var(--font-weight-medium)}.progress-bar{flex:1;height:32px;background:var(--color-gray-200);border-radius:var(--radius-full);overflow:hidden}.progress-fill{height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-white);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);transition:width .5s ease;background:linear-gradient(90deg,var(--color-primary-500) 0%,var(--color-secondary-500) 100%)}.no-students{text-align:center;padding:var(--spacing-8);color:var(--color-gray-500);font-size:var(--font-size-base)}.loading{text-align:center;padding:var(--spacing-8);color:var(--color-gray-600);font-size:var(--font-size-base)}.error{text-align:center;padding:var(--spacing-8);color:var(--color-error-600);font-size:var(--font-size-base);background:var(--color-error-50);border:var(--border-width-1) solid var(--color-error-200);border-radius:var(--radius-lg);margin:var(--spacing-6)}@media (max-width: 1200px){.progress-content-grid{grid-template-columns:1fr}.activity-section{position:static;max-height:500px}}@media (max-width: 768px){.progress-dashboard{padding:var(--spacing-3)}.page-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-4)}.page-header h1{font-size:var(--font-size-xl)}.class-selector{width:100%;flex-direction:column;align-items:stretch}.class-selector select{width:100%}.students-grid{grid-template-columns:1fr}.student-progress-card{padding:var(--spacing-4)}.student-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-2)}.activity-section{padding:var(--spacing-4)}.detail-stats{grid-template-columns:1fr}.category-bar{flex-direction:column;align-items:stretch;gap:var(--spacing-2)}.category-label{min-width:auto}.modal-content{padding:var(--spacing-5)}}.landing-page{min-height:100vh;background:var(--color-white);font-family:var(--font-family-body)}.hero{background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%);color:var(--color-white);padding:var(--spacing-16) var(--spacing-5);text-align:center;min-height:90vh;display:flex;align-items:center;justify-content:center;position:relative}.hero:before{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"><defs><pattern id="grid" width="100" height="100" patternUnits="userSpaceOnUse"><path d="M 100 0 L 0 0 0 100" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(%23grid)"/></svg>');pointer-events:none}.hero-content{max-width:900px;margin:0 auto;position:relative;z-index:1}.logo-section{display:flex;align-items:center;justify-content:center;gap:var(--spacing-4);margin-bottom:var(--spacing-8)}.logo-icon{width:64px;height:64px;background:var(--color-white);border-radius:var(--radius-xl);display:flex;align-items:center;justify-content:center;color:var(--color-primary-600);box-shadow:var(--shadow-xl)}.brand-name{font-size:48px;font-weight:var(--font-weight-bold);font-family:var(--font-family-heading);margin:0;color:var(--color-white)}.tagline{font-size:32px;font-weight:var(--font-weight-bold);font-family:var(--font-family-heading);margin-bottom:var(--spacing-6);line-height:var(--line-height-tight);color:var(--color-white)}.subtitle{font-size:var(--font-size-lg);margin-bottom:var(--spacing-8);line-height:var(--line-height-relaxed);max-width:700px;margin-left:auto;margin-right:auto;color:var(--color-primary-100)}.cta-buttons{display:flex;gap:var(--spacing-4);justify-content:center;flex-wrap:wrap;margin-bottom:var(--spacing-4)}.cta-primary{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);background:var(--color-white);color:var(--color-primary-600);border:none;border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-xl)}.cta-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-2xl);background:var(--color-gray-50)}.cta-secondary{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);background:transparent;color:var(--color-white);border:var(--border-width-2) solid var(--color-white);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base)}.cta-secondary:hover{background:#ffffff26;transform:translateY(-2px)}.hero-note{font-size:var(--font-size-sm);color:var(--color-primary-200);margin-top:var(--spacing-4)}.section-content{max-width:var(--container-xl);margin:0 auto;padding:var(--spacing-16) var(--spacing-5)}.section-content h2{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);font-family:var(--font-family-heading);color:var(--color-gray-900);text-align:center;margin:0 0 var(--spacing-6) 0;line-height:var(--line-height-tight)}.section-intro{font-size:var(--font-size-xl);color:var(--color-gray-600);text-align:center;margin-bottom:var(--spacing-10);line-height:var(--line-height-relaxed);max-width:800px;margin-left:auto;margin-right:auto}.problem-section{background:var(--color-gray-50)}.problem-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-8);margin-top:var(--spacing-10)}.problem-card{background:var(--color-white);padding:var(--spacing-8);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);position:relative;transition:var(--transition-base)}.problem-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl)}.problem-number{position:absolute;top:var(--spacing-6);right:var(--spacing-6);width:48px;height:48px;background:linear-gradient(135deg,var(--color-primary-500),var(--color-secondary-500));color:var(--color-white);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);font-family:var(--font-family-heading)}.problem-card h3{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);font-family:var(--font-family-heading);color:var(--color-gray-900);margin:0 0 var(--spacing-3) 0;padding-right:var(--spacing-12)}.problem-card p{color:var(--color-gray-600);line-height:var(--line-height-relaxed);font-size:var(--font-size-base);margin:0}.solution-section{background:var(--color-white)}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-8);margin-top:var(--spacing-10)}.feature-card{text-align:center;padding:var(--spacing-6);background:var(--color-gray-50);border-radius:var(--radius-xl);transition:var(--transition-base)}.feature-card:hover{background:var(--color-white);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.feature-icon{width:80px;height:80px;margin:0 auto var(--spacing-5);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;color:var(--color-white);box-shadow:var(--shadow-md)}.feature-icon-primary{background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-700))}.feature-icon-secondary{background:linear-gradient(135deg,var(--color-secondary-500),var(--color-secondary-700))}.feature-icon-accent{background:linear-gradient(135deg,var(--color-accent-500),var(--color-accent-700))}.feature-icon-success{background:linear-gradient(135deg,var(--color-success-500),var(--color-success-700))}.feature-card h3{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);font-family:var(--font-family-heading);color:var(--color-gray-900);margin:0 0 var(--spacing-3) 0}.feature-card p{color:var(--color-gray-600);line-height:var(--line-height-relaxed);font-size:var(--font-size-base);margin:0}.how-it-works{background:var(--color-gray-50)}.steps{display:flex;flex-direction:column;gap:var(--spacing-10);max-width:900px;margin:var(--spacing-10) auto 0}.step{display:flex;gap:var(--spacing-6);align-items:flex-start;background:var(--color-white);padding:var(--spacing-8);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:var(--transition-base)}.step:hover{box-shadow:var(--shadow-lg);transform:translate(var(--spacing-2))}.step-number{width:64px;height:64px;flex-shrink:0;background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-700));color:var(--color-white);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);font-family:var(--font-family-heading);box-shadow:var(--shadow-primary)}.step-content h3{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);font-family:var(--font-family-heading);color:var(--color-gray-900);margin:0 0 var(--spacing-3) 0}.step-content p{color:var(--color-gray-600);line-height:var(--line-height-relaxed);font-size:var(--font-size-base);margin:0}.benefits-section{background:var(--color-white)}.benefits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-8);margin-top:var(--spacing-10)}.benefit-card{background:var(--color-white);border:var(--border-width-2) solid var(--color-gray-200);padding:var(--spacing-8);border-radius:var(--radius-xl);transition:var(--transition-base);text-align:center}.benefit-card:hover{border-color:var(--color-primary-500);box-shadow:var(--shadow-primary);transform:translateY(-4px)}.benefit-icon{width:80px;height:80px;margin:0 auto var(--spacing-5);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;color:var(--color-white);box-shadow:var(--shadow-md)}.benefit-icon.benefit-icon-primary{background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-700))}.benefit-icon.benefit-icon-secondary{background:linear-gradient(135deg,var(--color-secondary-500),var(--color-secondary-700))}.benefit-icon.benefit-icon-accent{background:linear-gradient(135deg,var(--color-accent-500),var(--color-accent-700))}.benefit-icon.benefit-icon-success{background:linear-gradient(135deg,var(--color-success-500),var(--color-success-700))}.benefit-card h3{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);font-family:var(--font-family-heading);color:var(--color-gray-900);margin:0 0 var(--spacing-4) 0}.benefit-card p{line-height:var(--line-height-relaxed);font-size:var(--font-size-base);color:var(--color-gray-600);margin:0}.final-cta{background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%);color:var(--color-white);text-align:center;padding:var(--spacing-16) var(--spacing-5);position:relative}.final-cta:before{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"><defs><pattern id="grid2" width="100" height="100" patternUnits="userSpaceOnUse"><path d="M 100 0 L 0 0 0 100" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(%23grid2)"/></svg>');pointer-events:none}.final-cta .section-content{position:relative;z-index:1}.final-cta h2{color:var(--color-white);font-size:var(--font-size-4xl);margin-bottom:var(--spacing-4)}.final-cta p{font-size:var(--font-size-xl);margin-bottom:var(--spacing-8);color:var(--color-primary-100)}.cta-features{display:flex;gap:var(--spacing-8);justify-content:center;flex-wrap:wrap;margin-top:var(--spacing-8)}.cta-feature{display:flex;align-items:center;gap:var(--spacing-2);color:var(--color-primary-100);font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.landing-footer{background:var(--color-gray-900);color:var(--color-gray-300);padding:var(--spacing-12) var(--spacing-5) var(--spacing-6)}.footer-content{max-width:var(--container-xl);margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--spacing-10);margin-bottom:var(--spacing-8)}.footer-brand{display:flex;flex-direction:column;gap:var(--spacing-4)}.footer-logo{display:flex;align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-2)}.footer-logo .brand-name{font-size:var(--font-size-xl);color:var(--color-white)}.footer-section h4{font-family:var(--font-family-heading);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-white);margin:0 0 var(--spacing-4) 0}.footer-section a{display:block;color:var(--color-gray-400);text-decoration:none;margin-bottom:var(--spacing-3);cursor:pointer;transition:var(--transition-colors);font-size:var(--font-size-base);font-weight:var(--font-weight-normal)}.footer-section a:hover{color:var(--color-primary-400)}.footer-section p{color:var(--color-gray-400);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);margin:0}.footer-bottom{border-top:var(--border-width-1) solid var(--color-gray-800);padding-top:var(--spacing-6);text-align:center;max-width:var(--container-xl);margin:0 auto}.footer-bottom p{color:var(--color-gray-500);font-size:var(--font-size-sm);margin:0}@media (max-width: 1024px){.footer-content{grid-template-columns:1fr 1fr;gap:var(--spacing-8)}.footer-brand{grid-column:1 / -1}}@media (max-width: 768px){.brand-name{font-size:32px}.tagline{font-size:24px}.subtitle{font-size:var(--font-size-base)}.section-content h2{font-size:var(--font-size-3xl)}.section-intro{font-size:var(--font-size-lg)}.cta-buttons{flex-direction:column;width:100%}.cta-primary,.cta-secondary{width:100%}.step{flex-direction:column;text-align:center}.step-number{margin:0 auto}.problem-grid,.features-grid,.benefits-grid{grid-template-columns:1fr}.problem-card{text-align:center}.problem-number{position:static;margin:0 auto var(--spacing-4)}.problem-card h3{padding-right:0}.footer-content{grid-template-columns:1fr;gap:var(--spacing-6);text-align:center}.footer-logo{justify-content:center}.footer-brand{grid-column:1}.cta-features{flex-direction:column;gap:var(--spacing-3)}}@media (max-width: 640px){.hero{padding:var(--spacing-12) var(--spacing-4);min-height:85vh}.logo-icon{width:48px;height:48px}.section-content{padding:var(--spacing-12) var(--spacing-4)}.feature-icon{width:64px;height:64px}.step-number{width:56px;height:56px;font-size:var(--font-size-xl)}.benefit-icon{font-size:40px}}.admin-panel{max-width:1400px;margin:0 auto;padding:2rem}.admin-header{margin-bottom:2rem}.admin-header h1{font-size:2rem;font-weight:700;color:var(--color-text-primary);margin:0 0 .5rem}.admin-subtitle{color:var(--color-gray-700);margin:0}.admin-tabs{display:flex;gap:.5rem;margin-bottom:2rem;border-bottom:2px solid var(--color-gray-200);padding-bottom:0}.admin-tabs .tab{padding:.75rem 1.5rem;background:transparent;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:.95rem;font-weight:500;color:var(--color-gray-600);transition:all .2s ease}.admin-tabs .tab:hover{color:var(--color-primary)}.admin-tabs .tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.admin-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem;color:var(--color-gray-600)}.admin-loading .spinner{width:40px;height:40px;border:3px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}.admin-error{text-align:center;padding:4rem;background:var(--color-background-secondary);border-radius:12px}.admin-error h2{color:var(--color-error);margin-bottom:1rem}.admin-error p{color:var(--color-gray-700);margin-bottom:2rem}.admin-error-banner{background:var(--color-error-light, #fee2e2);border:1px solid var(--color-error);border-radius:8px;padding:1rem;margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center}.admin-error-banner p{margin:0;color:var(--color-error)}.admin-error-banner button{background:transparent;border:none;color:var(--color-error);cursor:pointer;font-weight:500}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}.stat-card{background:var(--color-background-primary);border:1px solid var(--color-gray-200);border-radius:12px;padding:1.5rem;text-align:center;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.stat-card h3{font-size:.85rem;font-weight:500;color:var(--color-gray-600);margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.5px}.stat-value{font-size:2.5rem;font-weight:700;color:var(--color-primary);line-height:1.2}.stat-recent{font-size:.85rem;color:var(--color-success, #10b981);margin-top:.5rem}.admin-table{width:100%;border-collapse:collapse;background:var(--color-background-primary);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.admin-table th,.admin-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--color-gray-200)}.admin-table th{background:var(--color-background-secondary);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-gray-700)}.admin-table tr:hover{background:var(--color-background-secondary)}.admin-table tr:last-child td{border-bottom:none}.teacher-name{display:flex;align-items:center;gap:.75rem}.profile-pic{width:32px;height:32px;border-radius:50%;object-fit:cover}.auth-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;text-transform:uppercase}.auth-badge.email{background:var(--color-gray-100);color:var(--color-gray-700)}.auth-badge.google{background:#e8f5e9;color:#2e7d32}.auth-badge.oauth{background:#e3f2fd;color:#1565c0}.admin-toggle{width:32px;height:32px;border-radius:50%;border:2px solid var(--color-gray-300);background:transparent;cursor:pointer;font-size:1rem;transition:all .2s ease}.admin-toggle:hover{border-color:var(--color-primary)}.admin-toggle.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.teacher-ref{display:block;font-weight:500}.teacher-email{display:block;font-size:.8rem;color:var(--color-gray-500)}.no-data{text-align:center;padding:2rem;color:var(--color-gray-500)}.admin-activity{display:grid;gap:2rem}.activity-section{background:var(--color-background-primary);border:1px solid var(--color-gray-200);border-radius:12px;padding:1.5rem}.activity-section h3{margin:0 0 1rem;font-size:1.1rem;color:var(--color-text-primary);border-bottom:1px solid var(--color-gray-200);padding-bottom:.75rem}.activity-list{display:flex;flex-direction:column;gap:.75rem;max-height:400px;overflow-y:auto}.activity-item{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--color-background-secondary);border-radius:8px;border-left:3px solid var(--color-gray-300)}.activity-item.correct{border-left-color:var(--color-success, #10b981)}.activity-item.incorrect{border-left-color:var(--color-error, #ef4444)}.activity-item.plan{border-left-color:var(--color-primary)}.activity-item.chat{border-left-color:var(--color-info, #3b82f6)}.activity-main{display:flex;justify-content:space-between;align-items:center}.student-name{font-weight:600;color:var(--color-text-primary)}.activity-detail{font-size:.85rem;color:var(--color-gray-600)}.activity-meta{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--color-gray-500)}.result-badge{padding:.15rem .5rem;border-radius:4px;font-weight:600}.result-badge.correct{background:#d1fae5;color:#065f46}.result-badge.incorrect{background:#fee2e2;color:#991b1b}.plan-weeks{background:var(--color-primary-light, #e0e7ff);color:var(--color-primary);padding:.15rem .5rem;border-radius:4px;font-weight:500}.chat-content{display:flex;gap:.5rem;align-items:flex-start;margin-top:.25rem}.role-badge{padding:.15rem .4rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase}.role-badge.user{background:#dbeafe;color:#1d4ed8}.role-badge.assistant{background:#f3e8ff;color:#7c3aed}.chat-text{flex:1;font-size:.85rem;color:var(--color-gray-700);line-height:1.4}.timestamp{font-size:.75rem;color:var(--color-gray-400)}.btn-primary{background:var(--color-primary);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-weight:500;cursor:pointer;transition:background .2s ease}.btn-primary:hover{background:var(--color-primary-dark, #4338ca)}@media (max-width: 768px){.admin-panel{padding:1rem}.stats-grid{grid-template-columns:repeat(2,1fr)}.admin-table{font-size:.85rem}.admin-table th,.admin-table td{padding:.75rem .5rem}.admin-tabs{overflow-x:auto}}.worksheet-generator{max-width:1200px;margin:0 auto;padding:20px}.generator-header{text-align:center;margin-bottom:30px;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:15px}.generator-header h2{margin:0 0 10px;font-size:2rem}.generator-header p{margin:0;opacity:.9;font-size:1.1rem}.step-nav{display:flex;justify-content:center;margin-bottom:30px;gap:15px;flex-wrap:wrap}.step-btn{padding:12px 20px;border:2px solid #e2e8f0;background:#fff;border-radius:25px;font-weight:600;cursor:pointer;transition:all .3s ease;min-width:150px}.step-btn:hover:not(:disabled){border-color:#667eea;color:#667eea}.step-btn.active{background:#667eea;border-color:#667eea;color:#fff}.step-btn:disabled{opacity:.5;cursor:not-allowed}.step-content{background:#fff;padding:30px;border-radius:15px;box-shadow:0 4px 20px #0000001a}.step-content h3{margin:0 0 25px;color:#1f2937;font-size:1.5rem;text-align:center}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:#374151}.class-select,.session-name-input{width:100%;padding:12px 15px;border:2px solid #e5e7eb;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.class-select:focus,.session-name-input:focus{outline:none;border-color:#667eea}.student-selection-header{margin-bottom:20px;padding:15px;background:#f8fafc;border-radius:8px}.selection-controls{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.btn-select-all,.btn-select-none{padding:8px 16px;border:1px solid #d1d5db;background:#fff;border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s ease}.btn-select-all:hover{background:#10b981;color:#fff;border-color:#10b981}.btn-select-none:hover{background:#ef4444;color:#fff;border-color:#ef4444}.selection-count{font-weight:600;color:#6b7280;margin-left:auto}.students-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:15px;margin-bottom:20px}.student-checkbox-card{border:2px solid #e5e7eb;border-radius:8px;transition:all .3s ease;cursor:pointer}.student-checkbox-card:hover{border-color:#667eea;transform:translateY(-2px);box-shadow:0 4px 12px #667eea26}.student-checkbox-label{display:flex;align-items:center;padding:15px;cursor:pointer;margin:0}.student-checkbox-label input[type=checkbox]{margin-right:12px;transform:scale(1.2)}.student-info{flex:1}.student-name{font-weight:600;color:#1f2937;margin-bottom:4px}.student-details{font-size:.9rem;color:#6b7280}.session-form{max-width:600px;margin:0 auto}.session-summary{background:#f0f9ff;padding:20px;border-radius:8px;border-left:4px solid #0ea5e9;margin:20px 0}.session-summary h4{margin:0 0 10px;color:#0c4a6e}.session-summary p{margin:5px 0;color:#164e63}.btn-next,.btn-create-session,.btn-generate,.btn-print{padding:12px 30px;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:1rem;display:block;margin:20px auto 0}.btn-next{background:#10b981;color:#fff}.btn-next:hover{background:#059669;transform:translateY(-2px)}.btn-create-session{background:#667eea;color:#fff;width:100%}.btn-create-session:hover:not(:disabled){background:#5a67d8;transform:translateY(-2px)}.btn-create-session:disabled{background:#9ca3af;cursor:not-allowed}.btn-generate{background:#f59e0b;color:#fff;width:100%}.btn-generate:hover:not(:disabled){background:#d97706}.btn-generate:disabled{background:#9ca3af;cursor:not-allowed}.btn-print{background:#8b5cf6;color:#fff;width:100%}.btn-print:hover{background:#7c3aed}.sessions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-top:20px}.session-card{background:#fff;border:2px solid #e5e7eb;border-radius:12px;padding:20px;transition:all .3s ease}.session-card:hover{border-color:#667eea;box-shadow:0 8px 25px #0000001a}.session-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.session-header h4{margin:0 10px 0 0;color:#1f2937;flex:1}.status-badge{padding:4px 12px;border-radius:20px;font-size:.8rem;font-weight:600;text-transform:uppercase}.status-badge.draft{background:#fef3c7;color:#92400e}.status-badge.generated{background:#d1fae5;color:#065f46}.status-badge.archived{background:#f3f4f6;color:#374151}.session-info p{margin:8px 0;color:#6b7280;font-size:.9rem}.session-actions{margin-top:15px;padding-top:15px;border-top:1px solid #e5e7eb}.no-sessions{text-align:center;padding:60px 20px;color:#6b7280;background:#f9fafb;border-radius:12px}.no-sessions p{font-size:1.1rem;margin:0}@media (max-width: 768px){.worksheet-generator{padding:15px}.step-nav{gap:10px}.step-btn{min-width:120px;padding:10px 15px;font-size:.9rem}.students-grid,.sessions-grid{grid-template-columns:1fr}.selection-controls{flex-direction:column;align-items:stretch}.selection-count{margin-left:0;text-align:center;margin-top:10px}}.pdf-downloads{margin-top:15px;padding:15px;background-color:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.pdf-downloads h5{margin:0 0 10px;color:#4a5568;font-size:1rem}.pdf-list{display:flex;flex-direction:column;gap:8px}.pdf-item{display:flex;align-items:center;gap:12px;padding:8px;background:#fff;border-radius:6px;border:1px solid #e2e8f0}.student-name{font-weight:600;color:#2d3748;min-width:150px}.download-link{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;background-color:#667eea;color:#fff;text-decoration:none;border-radius:4px;font-size:.9rem;transition:background-color .2s ease}.download-link:hover{background-color:#5a67d8;text-decoration:none;color:#fff}.file-info{font-size:.8rem;color:#718096;margin-left:auto}.no-pdfs{margin-top:15px;padding:15px;background-color:#fef5e7;border:1px solid #f6ad55;border-radius:8px;color:#744210}.no-pdfs p{margin:0;font-size:.9rem}.generation-progress{margin:15px 0;padding:15px;background-color:#f0f4ff;border:2px solid #667eea;border-radius:8px}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.progress-status{font-weight:600;color:#4a5568;font-size:.95rem}.progress-counter{font-weight:700;color:#667eea;font-size:1rem}.progress-bar-container{width:100%;height:24px;background-color:#e2e8f0;border-radius:12px;overflow:hidden;margin-bottom:8px;box-shadow:inset 0 2px 4px #0000001a}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#667eea,#764ba2);transition:width .5s ease;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;box-shadow:0 2px 4px #667eea66}.progress-note{margin:5px 0 0;font-size:.85rem;color:#718096;font-style:italic}.wait-message{margin-top:10px;padding:10px;background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;color:#856404;font-size:.9rem;text-align:center}.btn-print:disabled,.btn-generate:disabled{opacity:.6;cursor:not-allowed}.btn-print:disabled:hover,.btn-generate:disabled:hover{background-color:inherit;transform:none}:root{--color-primary-50: #EFF6FF;--color-primary-100: #DBEAFE;--color-primary-200: #BFDBFE;--color-primary-300: #93C5FD;--color-primary-400: #60A5FA;--color-primary-500: #3B82F6;--color-primary-600: #2563EB;--color-primary-700: #1D4ED8;--color-primary-800: #1E40AF;--color-primary-900: #1E3A8A;--color-secondary-50: #F0FDFA;--color-secondary-100: #CCFBF1;--color-secondary-200: #99F6E4;--color-secondary-300: #5EEAD4;--color-secondary-400: #2DD4BF;--color-secondary-500: #14B8A6;--color-secondary-600: #0D9488;--color-secondary-700: #0F766E;--color-secondary-800: #115E59;--color-secondary-900: #134E4A;--color-accent-50: #FAF5FF;--color-accent-100: #F3E8FF;--color-accent-200: #E9D5FF;--color-accent-300: #D8B4FE;--color-accent-400: #C084FC;--color-accent-500: #A855F7;--color-accent-600: #9333EA;--color-accent-700: #7E22CE;--color-accent-800: #6B21A8;--color-accent-900: #581C87;--color-success-50: #F0FDF4;--color-success-100: #DCFCE7;--color-success-200: #BBF7D0;--color-success-300: #86EFAC;--color-success-400: #4ADE80;--color-success-500: #22C55E;--color-success-600: #16A34A;--color-success-700: #15803D;--color-success-800: #166534;--color-success-900: #14532D;--color-warning-50: #FFFBEB;--color-warning-100: #FEF3C7;--color-warning-200: #FDE68A;--color-warning-300: #FCD34D;--color-warning-400: #FBBF24;--color-warning-500: #F59E0B;--color-warning-600: #D97706;--color-warning-700: #B45309;--color-warning-800: #92400E;--color-warning-900: #78350F;--color-error-50: #FEF2F2;--color-error-100: #FEE2E2;--color-error-200: #FECACA;--color-error-300: #FCA5A5;--color-error-400: #F87171;--color-error-500: #EF4444;--color-error-600: #DC2626;--color-error-700: #B91C1C;--color-error-800: #991B1B;--color-error-900: #7F1D1D;--color-white: #FFFFFF;--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E2E8F0;--color-gray-300: #CBD5E1;--color-gray-400: #94A3B8;--color-gray-500: #64748B;--color-gray-600: #475569;--color-gray-700: #334155;--color-gray-800: #1E293B;--color-gray-900: #0F172A;--color-primary: var(--color-primary-500);--color-primary-hover: var(--color-primary-600);--color-primary-light: var(--color-primary-400);--color-primary-dark: var(--color-primary-700);--color-primary-bg: var(--color-primary-50);--color-secondary: var(--color-secondary-500);--color-secondary-hover: var(--color-secondary-600);--color-secondary-light: var(--color-secondary-400);--color-secondary-bg: var(--color-secondary-50);--color-accent: var(--color-accent-500);--color-accent-hover: var(--color-accent-600);--color-accent-bg: var(--color-accent-50);--color-success: var(--color-success-500);--color-success-hover: var(--color-success-600);--color-success-light: var(--color-success-400);--color-success-bg: var(--color-success-50);--color-warning: var(--color-warning-500);--color-warning-hover: var(--color-warning-600);--color-warning-bg: var(--color-warning-50);--color-error: var(--color-error-500);--color-error-hover: var(--color-error-600);--color-error-bg: var(--color-error-50);--color-text-primary: var(--color-gray-900);--color-text-secondary: var(--color-gray-600);--color-text-tertiary: var(--color-gray-500);--color-text-disabled: var(--color-gray-400);--color-text-inverse: var(--color-white);--color-bg-primary: var(--color-white);--color-bg-secondary: var(--color-gray-50);--color-bg-tertiary: var(--color-gray-100);--color-bg-hover: var(--color-gray-100);--color-bg-active: var(--color-gray-200);--color-bg-disabled: var(--color-gray-100);--color-border: var(--color-gray-200);--color-border-light: var(--color-gray-100);--color-border-medium: var(--color-gray-300);--color-border-dark: var(--color-gray-400);--color-border-focus: var(--color-primary-500);--font-family-heading: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-size-5xl: 3rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-snug: 1.375;--line-height-normal: 1.5;--line-height-relaxed: 1.625;--line-height-loose: 1.75;--letter-spacing-tighter: -.05em;--letter-spacing-tight: -.025em;--letter-spacing-normal: 0;--letter-spacing-wide: .025em;--letter-spacing-wider: .05em;--letter-spacing-widest: .1em;--spacing-0: 0;--spacing-0-5: .125rem;--spacing-1: .25rem;--spacing-1-5: .375rem;--spacing-2: .5rem;--spacing-2-5: .625rem;--spacing-3: .75rem;--spacing-3-5: .875rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-7: 1.75rem;--spacing-8: 2rem;--spacing-9: 2.25rem;--spacing-10: 2.5rem;--spacing-11: 2.75rem;--spacing-12: 3rem;--spacing-14: 3.5rem;--spacing-16: 4rem;--spacing-20: 5rem;--spacing-24: 6rem;--border-width-0: 0;--border-width-1: 1px;--border-width-2: 2px;--border-width-4: 4px;--border-width-8: 8px;--radius-none: 0;--radius-sm: .25rem;--radius-base: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-3xl: 2rem;--radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgba(15, 23, 42, .05);--shadow-sm: 0 1px 3px 0 rgba(15, 23, 42, .1), 0 1px 2px -1px rgba(15, 23, 42, .1);--shadow-base: 0 1px 3px 0 rgba(15, 23, 42, .1), 0 1px 2px -1px rgba(15, 23, 42, .1);--shadow-md: 0 4px 6px -1px rgba(15, 23, 42, .1), 0 2px 4px -2px rgba(15, 23, 42, .1);--shadow-lg: 0 10px 15px -3px rgba(15, 23, 42, .1), 0 4px 6px -4px rgba(15, 23, 42, .1);--shadow-xl: 0 20px 25px -5px rgba(15, 23, 42, .1), 0 8px 10px -6px rgba(15, 23, 42, .1);--shadow-2xl: 0 25px 50px -12px rgba(15, 23, 42, .25);--shadow-inner: inset 0 2px 4px 0 rgba(15, 23, 42, .05);--shadow-primary: 0 4px 14px 0 rgba(59, 130, 246, .25);--shadow-secondary: 0 4px 14px 0 rgba(20, 184, 166, .25);--shadow-success: 0 4px 14px 0 rgba(34, 197, 94, .25);--shadow-error: 0 4px 14px 0 rgba(239, 68, 68, .25);--focus-ring: 0 0 0 3px rgba(59, 130, 246, .3);--focus-ring-error: 0 0 0 3px rgba(239, 68, 68, .3);--focus-ring-success: 0 0 0 3px rgba(34, 197, 94, .3);--focus-ring-offset: 2px;--ease-linear: linear;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--duration-instant: 50ms;--duration-fast: .15s;--duration-base: .2s;--duration-slow: .3s;--duration-slower: .5s;--transition-fast: all var(--duration-fast) var(--ease-out);--transition-base: all var(--duration-base) var(--ease-out);--transition-slow: all var(--duration-slow) var(--ease-out);--transition-colors: color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out);--transition-opacity: opacity var(--duration-fast) var(--ease-out);--breakpoint-xs: 475px;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px;--z-base: 0;--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--button-height-sm: 2rem;--button-height-base: 2.5rem;--button-height-lg: 3rem;--button-padding-x-sm: var(--spacing-3);--button-padding-x-base: var(--spacing-4);--button-padding-x-lg: var(--spacing-6);--card-padding: var(--spacing-6);--card-radius: var(--radius-lg);--card-shadow: var(--shadow-sm);--card-shadow-hover: var(--shadow-md);--input-height-sm: 2rem;--input-height-base: 2.5rem;--input-height-lg: 3rem;--input-padding-x: var(--spacing-3);--input-border-radius: var(--radius-base);--nav-height: 4rem;--nav-item-padding: var(--spacing-4);--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px;--container-2xl: 1536px}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-family-body);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-secondary);min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text-primary);margin-bottom:var(--spacing-3);letter-spacing:var(--letter-spacing-tight)}h1{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tighter)}h2{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold)}h3{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold)}h4{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}h5{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium)}h6{font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}p{margin-bottom:var(--spacing-4);line-height:var(--line-height-relaxed);color:var(--color-text-secondary)}a{color:var(--color-primary);text-decoration:none;transition:var(--transition-colors);font-weight:var(--font-weight-medium)}a:hover{color:var(--color-primary-hover);text-decoration:underline}a:focus-visible{outline:none;box-shadow:var(--focus-ring);outline-offset:var(--focus-ring-offset);border-radius:var(--radius-sm)}strong,b{font-weight:var(--font-weight-semibold)}small{font-size:var(--font-size-sm)}code{font-family:var(--font-family-mono);font-size:.9em;padding:var(--spacing-0-5) var(--spacing-1);background-color:var(--color-gray-100);border-radius:var(--radius-sm)}input,textarea,select,button{font-family:inherit;font-size:inherit;line-height:inherit}button{cursor:pointer;border:none;background:none;padding:0}button:disabled{cursor:not-allowed;opacity:.5}*:focus-visible{outline:none;box-shadow:var(--focus-ring);outline-offset:var(--focus-ring-offset)}ul,ol{list-style:none}img,picture,video,canvas,svg{display:block;max-width:100%}table{border-collapse:collapse;width:100%}.page-container{width:100%;display:flex;flex-direction:column}.card{background:var(--color-bg-primary);border:var(--border-width-1) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-5);transition:var(--transition-base);position:relative;overflow:hidden}.card-clickable{cursor:pointer}.card-clickable:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary-500) 0%,var(--color-secondary-500) 100%);opacity:0;transition:var(--transition-base)}.card-clickable:hover{border-color:var(--color-primary-300);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.card-clickable:hover:before{opacity:1}.card-compact{padding:var(--spacing-4)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-4)}.card-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);font-family:var(--font-family-heading);margin:0}.card-body{color:var(--color-gray-700)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-2-5) var(--spacing-5);font-family:var(--font-family-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);line-height:1.5;text-align:center;text-decoration:none;border:var(--border-width-1) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);color:var(--color-white);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-700) 100%);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-secondary{background:linear-gradient(135deg,var(--color-secondary-500) 0%,var(--color-secondary-600) 100%);color:var(--color-white);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:linear-gradient(135deg,var(--color-secondary-600) 0%,var(--color-secondary-700) 100%);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-outline{background:var(--color-bg-primary);color:var(--color-gray-700);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-gray-50);border-color:var(--color-gray-300)}.btn-ghost{background:transparent;color:var(--color-gray-700)}.btn-ghost:hover:not(:disabled){background:var(--color-gray-100)}.btn-danger{background:linear-gradient(135deg,var(--color-error-500) 0%,var(--color-error-600) 100%);color:var(--color-white);box-shadow:var(--shadow-sm)}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,var(--color-error-600) 0%,var(--color-error-700) 100%);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-sm{padding:var(--spacing-1-5) var(--spacing-3);font-size:var(--font-size-xs)}.btn-lg{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-base)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media print{.no-print{display:none!important}}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-center{text-align:center}.text-right{text-align:right}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--color-gray-100);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-sm);border:2px solid var(--color-gray-100)}::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}::selection{background-color:var(--color-primary-100);color:var(--color-primary-800)}@media print{body{background:#fff;color:#000}.page-break{page-break-after:always}.no-break{page-break-inside:avoid}a[href]:after{content:" (" attr(href) ")"}}@media (max-width: 640px){html{font-size:14px}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes flashGreen{0%{background-color:var(--color-success-bg)}to{background-color:transparent}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.animate-fade-in{animation:fadeIn var(--duration-base) var(--ease-out)}.animate-fade-out{animation:fadeOut var(--duration-base) var(--ease-in)}.animate-slide-in-right{animation:slideInRight var(--duration-base) var(--ease-out)}.animate-slide-in-left{animation:slideInLeft var(--duration-base) var(--ease-out)}.animate-slide-in-up{animation:slideInUp var(--duration-base) var(--ease-out)}.animate-slide-in-down{animation:slideInDown var(--duration-base) var(--ease-out)}.animate-spin{animation:spin .8s linear infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-bounce{animation:bounce 1s infinite}.animate-shimmer{animation:shimmer 2s infinite}.animate-flash-green{animation:flashGreen .8s var(--ease-out)}.animate-shake{animation:shake .4s var(--ease-in-out)}.animate-scale-in{animation:scaleIn var(--duration-base) var(--ease-out)}.animate-scale-out{animation:scaleOut var(--duration-base) var(--ease-in)}.transition-all{transition:var(--transition-all)}.transition-colors{transition:var(--transition-colors)}.transition-transform{transition:var(--transition-transform)}.transition-none{transition:none}*{box-sizing:border-box}html{height:100%}body{margin:0;min-height:100%}#root{min-height:100vh}
