.portal-body{margin:0;padding:0;font-family:Inter,sans-serif;overflow-x:hidden}.portal-landing{min-height:100vh;background:linear-gradient(135deg,#1f2937,#374151 50%,#4b5563);position:relative;display:flex;flex-direction:column}.portal-landing:after{background-image:radial-gradient(circle at 20% 80%,rgba(16,185,129,.1) 0,transparent 50%),radial-gradient(circle at 80% 20%,rgba(16,185,129,.1) 0,transparent 50%),linear-gradient(45deg,transparent 30%,rgba(16,185,129,.05) 50%,transparent 70%)}.portal-landing:after,.portal-landing:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:1}.portal-landing:before{background:rgba(0,0,0,.4)}.portal-content{position:relative;z-index:2;flex:1;display:flex;flex-direction:column;justify-content:space-between;padding:1rem}.portal-header{gap:1rem;margin-bottom:2rem}.portal-header,.portal-logo{display:flex;align-items:center}.portal-logo{width:60px;height:60px;border-radius:50%;background:white;justify-content:center;box-shadow:0 4px 8px rgba(0,0,0,.2)}.portal-title{font-size:1.5rem;font-weight:700;letter-spacing:2px}.portal-subtitle,.portal-title{color:white;text-transform:uppercase}.portal-subtitle{font-size:1rem;font-weight:500;letter-spacing:1px}.portal-main{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:2rem}.portal-dots{display:flex;gap:.5rem;margin-bottom:2rem}.portal-dot{width:12px;height:12px;border-radius:50%;background:rgba(255,255,255,.5);transition:background .3s ease}.portal-dot.active{background:#10b981}.portal-cta{background:transparent;border:2px solid white;color:white;padding:1rem 2rem;font-size:1.1rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;border-radius:8px;cursor:pointer;transition:all .3s ease;text-decoration:none;display:inline-block}.portal-cta:hover{background:white;color:#1f2937}.portal-footer{gap:1rem;color:white;font-size:.9rem;margin-top:2rem;text-align:center}.portal-contact,.portal-footer{display:flex;flex-direction:column}.portal-contact{gap:.25rem}.portal-contact a{color:white;text-decoration:none}.portal-contact a:hover{text-decoration:underline}.portal-auth{min-height:100vh;background:#1f2937;display:flex;flex-direction:column}.portal-auth-header{background:linear-gradient(135deg,#10b981,#059669);padding:2rem;text-align:center;position:relative;overflow:hidden}.portal-auth-header:before{content:"";position:absolute;top:-50%;right:-20%;width:200px;height:200px;background:rgba(255,255,255,.1);border-radius:50%}.portal-auth-header:after{content:"";position:absolute;bottom:-30%;left:-10%;width:150px;height:150px;background:rgba(255,255,255,.05);border-radius:50%}.portal-auth-icons{gap:1rem;margin-bottom:2rem;position:relative;z-index:2}.portal-auth-icons,.portal-icon{display:flex;justify-content:center}.portal-icon{width:60px;height:60px;background:rgba(255,255,255,.2);border-radius:12px;align-items:center;backdrop-filter:blur(10px)}.portal-icon.primary{background:rgba(255,255,255,.3);transform:scale(1.1)}.portal-auth-title{color:white;font-size:1.8rem;font-weight:700;text-transform:uppercase;letter-spacing:2px;margin-bottom:1rem;position:relative;z-index:2}.portal-auth-subtitle{color:rgba(255,255,255,.9);font-size:1rem;position:relative;z-index:2}.portal-auth-main{flex:1;padding:3rem 2rem;display:flex;flex-direction:column;align-items:center;gap:2rem}.portal-auth-buttons{display:flex;flex-direction:column;gap:1rem;max-width:600px;width:100%}.portal-auth-button{flex:1;background:#374151;border:none;border-radius:12px;padding:2rem;color:white;cursor:pointer;transition:all .3s ease;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:1rem}.portal-auth-button:hover{background:#4b5563;transform:translateY(-2px)}.portal-auth-icon{width:40px;height:40px;background:rgba(255,255,255,.1);border-radius:8px;display:flex;align-items:center;justify-content:center}.portal-auth-text{font-size:1.1rem;font-weight:500}.portal-form{max-width:400px;width:100%;background:#374151;padding:2rem;border-radius:12px;margin:2rem auto}.portal-form-title{color:white;font-size:1.5rem;font-weight:700;text-align:center;margin-bottom:2rem}.portal-form-group{margin-bottom:1.5rem}.portal-form-label{display:block;color:white;font-size:.9rem;font-weight:500;margin-bottom:.5rem}.portal-form-input{width:100%;padding:.75rem;background:#4b5563;border:1px solid #6b7280;border-radius:6px;color:white;font-size:1rem}.portal-form-input:focus{outline:none;border-color:#10b981;box-shadow:0 0 0 2px rgba(16,185,129,.2)}.portal-form-button{width:100%;background:#10b981;color:white;border:none;padding:.75rem;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .3s ease}.portal-form-button:hover{background:#059669}.portal-form-links{text-align:center;margin-top:1rem}.portal-form-link{color:#10b981;text-decoration:none;font-size:.9rem}.portal-form-link:hover{text-decoration:underline}.portal-dashboard{min-height:100vh;background:#f9fafb;display:flex;flex-direction:column}.portal-dashboard.dark{background:#1f2937;color:white}.portal-dashboard-header{background:white;border-bottom:1px solid #e5e7eb;padding:1rem}.portal-dashboard.dark .portal-dashboard-header{background:#374151;border-bottom-color:#4b5563}.portal-dashboard-nav{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.portal-dashboard-logo{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.2rem}.portal-icon-button{display:inline-flex;align-items:center;justify-content:center}.portal-mobile-menu-toggle{display:none;background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;color:#374151;align-items:center;justify-content:center}.portal-dashboard.dark .portal-mobile-menu-toggle{color:#d1d5db}.portal-mobile-menu-toggle:hover{background:#f3f4f6;border-radius:4px}.portal-dashboard.dark .portal-mobile-menu-toggle:hover{background:#4b5563}.portal-dashboard-user{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.9rem}.portal-dark-mode-toggle,.portal-logout{background:#10b981;color:white;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;text-decoration:none;font-size:.9rem;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:.25rem}.portal-dark-mode-toggle:hover,.portal-logout:hover{background:#059669}.portal-dashboard-content{display:flex;flex:1;flex-direction:column}.portal-dashboard-sidebar{width:100%;min-width:200px;background:white;border-bottom:1px solid #e5e7eb;padding:1rem;order:2;max-height:200px;overflow-y:auto;transition:transform .3s ease}.portal-dashboard.dark .portal-dashboard-sidebar{background:#374151;border-bottom-color:#4b5563}.portal-dashboard-nav-menu{display:flex;flex-direction:column;gap:.5rem;padding-bottom:.5rem}.portal-nav-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:none;border:none;border-radius:8px;cursor:pointer;text-align:left;transition:all .3s ease;color:#374151;width:100%}.portal-dashboard.dark .portal-nav-item{color:#d1d5db}.portal-nav-item:hover{background:#f3f4f6}.portal-dashboard.dark .portal-nav-item:hover{background:#4b5563}.portal-nav-item.active{background:#10b981;color:white}.portal-nav-icon{flex-shrink:0}.portal-nav-label{font-weight:500}.portal-dashboard-main{flex:1;padding:1rem;overflow-y:auto}.portal-dashboard-main h1{margin-bottom:1.5rem;color:#1f2937;font-size:1.5rem}.portal-dashboard.dark .portal-dashboard-main h1{color:white}.portal-quick-actions{display:grid;grid-template-columns:1fr;gap:1rem;margin-top:2rem}.portal-action-card{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1);transition:transform .3s ease}.portal-dashboard.dark .portal-action-card{background:#374151}.portal-action-card:hover{transform:translateY(-2px)}.portal-action-card h3{margin-bottom:.5rem;color:#1f2937;font-size:1.1rem}.portal-dashboard.dark .portal-action-card h3{color:white}.portal-action-card p{color:#6b7280;margin-bottom:1rem;font-size:.9rem}.portal-action-card button{background:#10b981;color:white;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;width:100%}.portal-action-card button:hover{background:#059669}.portal-profile-card{background:white;border-radius:12px;padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;align-items:center;text-align:center;box-shadow:0 4px 6px rgba(0,0,0,.1)}.portal-dashboard.dark .portal-profile-card{background:#374151}.portal-profile-avatar{width:80px;height:80px;background:#10b981;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem}.portal-profile-info h2{margin-bottom:.5rem;color:#1f2937;font-size:1.3rem}.portal-dashboard.dark .portal-profile-info h2{color:white}.portal-profile-info p{color:#6b7280;margin-bottom:.25rem;font-size:.9rem}.portal-course-list{display:flex;flex-direction:column;gap:1rem}.portal-course-card{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1)}.portal-dashboard.dark .portal-course-card{background:#374151}.portal-course-card h3{margin-bottom:.5rem;color:#1f2937;font-size:1.1rem}.portal-dashboard.dark .portal-course-card h3{color:white}.portal-course-card p{font-size:.9rem;margin-bottom:.25rem}.portal-course-progress{margin-top:1rem}.portal-progress-bar{width:100%;height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden;margin-bottom:.5rem}.portal-progress-fill{height:100%;background:#10b981;transition:width .3s ease}.portal-no-data{text-align:center;padding:2rem;color:#6b7280}.portal-dashboard.dark .portal-no-data{color:#9ca3af}.portal-no-data p{font-size:1rem;margin:0}.portal-grades-table{background:white;border-radius:12px;overflow:hidden;box-shadow:0 4px 6px rgba(0,0,0,.1);overflow-x:auto}.portal-dashboard.dark .portal-grades-table{background:#374151}.portal-grades-table table{width:100%;border-collapse:collapse;min-width:600px}.portal-grades-table td,.portal-grades-table th{padding:.75rem;text-align:left;border-bottom:1px solid #e5e7eb;font-size:.9rem}.portal-dashboard.dark .portal-grades-table td,.portal-dashboard.dark .portal-grades-table th{border-bottom-color:#4b5563}.portal-grades-table th{background:#f9fafb;font-weight:600;color:#374151}.portal-dashboard.dark .portal-grades-table th{background:#4b5563;color:white}.portal-library-categories,.portal-schedule-calendar{display:flex;flex-direction:column;gap:1rem}.portal-library-category,.portal-schedule-item{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1)}.portal-dashboard.dark .portal-library-category,.portal-dashboard.dark .portal-schedule-item{background:#374151}.portal-library-category h3,.portal-schedule-item h3{margin-bottom:.5rem;color:#1f2937;font-size:1.1rem}.portal-dashboard.dark .portal-library-category h3,.portal-dashboard.dark .portal-schedule-item h3{color:white}.portal-library-category p,.portal-schedule-item p{font-size:.9rem;margin-bottom:.25rem}.portal-library-search{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.portal-library-search input{flex:1;padding:.75rem;border:1px solid #d1d5db;border-radius:6px;background:white}.portal-dashboard.dark .portal-library-search input{background:#4b5563;border-color:#6b7280;color:white}.portal-library-search button{background:#10b981;color:white;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer}.portal-library-search button:hover{background:#059669}.portal-messages-list{display:flex;flex-direction:column;gap:1rem}.portal-message-item{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1)}.portal-dashboard.dark .portal-message-item{background:#374151}.portal-message-item h3{margin-bottom:.5rem;color:#1f2937;font-size:1.1rem}.portal-dashboard.dark .portal-message-item h3{color:white}.portal-message-item span{color:#6b7280;font-size:.9rem}.portal-settings-sections{display:flex;flex-direction:column;gap:2rem}.portal-settings-section{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1)}.portal-dashboard.dark .portal-settings-section{background:#374151}.portal-settings-section h3{margin-bottom:1rem;color:#1f2937;font-size:1.1rem}.portal-dashboard.dark .portal-settings-section h3{color:white}.portal-settings-section button{background:#10b981;color:white;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;margin-right:.5rem;margin-bottom:.5rem;font-size:.9rem}.portal-settings-section button:hover{background:#059669}.portal-error-message{color:#ef4444}.portal-error-message,.portal-success-message{margin-bottom:1rem;text-align:center;font-size:.9rem}.portal-success-message{color:#10b981}.portal-loading-container{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.2rem}.portal-back-link{position:absolute;top:1rem;right:1rem;color:white;text-decoration:none;font-size:.9rem;z-index:3}.portal-back-link:hover{text-decoration:underline}.portal-course-progress-fill-75{height:100%;background:#10b981;transition:width .3s ease;width:75%}.portal-course-progress-fill-45{height:100%;background:#10b981;transition:width .3s ease;width:45%}.portal-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.portal-modal-content{background:#1f2937;border-radius:16px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 25px 50px rgba(0,0,0,.5)}.portal-modal-close{position:absolute;top:1rem;right:1rem;background:rgba(255,255,255,.1);border:none;color:white;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;z-index:10;transition:background .3s ease}.portal-modal-close:hover{background:rgba(255,255,255,.2)}.portal-modal-header{background:linear-gradient(135deg,#10b981,#059669);padding:2rem;text-align:center;position:relative;overflow:hidden;border-radius:16px 16px 0 0}.portal-modal-header:before{content:"";position:absolute;top:-50%;right:-20%;width:200px;height:200px;background:rgba(255,255,255,.1);border-radius:50%}.portal-modal-header:after{content:"";position:absolute;bottom:-30%;left:-10%;width:150px;height:150px;background:rgba(255,255,255,.05);border-radius:50%}.portal-modal-icons{display:flex;justify-content:center;gap:1rem;margin-bottom:1.5rem;position:relative;z-index:2}.portal-modal-icon{width:50px;height:50px;background:rgba(255,255,255,.2);border-radius:12px;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(10px)}.portal-modal-icon-primary{background:rgba(255,255,255,.3);transform:scale(1.1)}.portal-modal-title{color:white;font-size:1.5rem;font-weight:700;text-transform:uppercase;letter-spacing:2px;margin-bottom:.5rem;position:relative;z-index:2}.portal-modal-subtitle{color:rgba(255,255,255,.9);font-size:1rem;position:relative;z-index:2}.portal-modal-tabs{display:flex;flex-direction:column;gap:1rem;padding:1.5rem 2rem 0;background:#1f2937}.portal-modal-tab{flex:1;background:#374151;border:none;border-radius:12px;padding:1rem;color:white;cursor:pointer;transition:all .3s ease;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:.75rem}.portal-modal-tab:hover{background:#4b5563;transform:translateY(-2px)}.portal-modal-tab.active{background:#10b981}.portal-modal-tab-icon{width:32px;height:32px;background:rgba(255,255,255,.1);border-radius:8px;display:flex;align-items:center;justify-content:center}.portal-modal-tab-text{font-size:1rem;font-weight:500}.portal-modal-form{padding:2rem;background:#1f2937}.portal-modal-form-title{color:white;font-size:1.3rem;font-weight:700;text-align:center;margin-bottom:1.5rem}.portal-modal-form-group{margin-bottom:1rem}.portal-modal-form-label{display:block;color:white;font-size:.9rem;font-weight:500;margin-bottom:.5rem}.portal-modal-form-input{width:100%;padding:.75rem;background:#4b5563;border:1px solid #6b7280;border-radius:6px;color:white;font-size:1rem}.portal-modal-form-input:focus{outline:none;border-color:#10b981;box-shadow:0 0 0 2px rgba(16,185,129,.2)}.portal-modal-form-button{width:100%;background:#10b981;color:white;border:none;padding:.75rem;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .3s ease;margin-top:1rem}.portal-modal-form-button:hover:not(:disabled){background:#059669}.portal-modal-form-button:disabled{opacity:.6;cursor:not-allowed}.portal-modal-form-links{text-align:center;margin-top:1rem}.portal-modal-form-link{color:#10b981;text-decoration:none;font-size:.9rem}.portal-modal-form-link:hover{text-decoration:underline}.portal-modal-error-message{color:#ef4444;background:rgba(239,68,68,.1);border-radius:6px;border:1px solid rgba(239,68,68,.3)}.portal-modal-error-message,.portal-modal-success-message{margin-bottom:1rem;text-align:center;font-size:.9rem;padding:.75rem}.portal-modal-success-message{color:#10b981;background:rgba(16,185,129,.1);border-radius:6px;border:1px solid rgba(16,185,129,.3)}@media (max-width:767px){.portal-mobile-menu-toggle{display:flex}.portal-dashboard-nav{flex-wrap:wrap}.portal-dashboard-user{gap:.25rem}.portal-logout span{display:none}.portal-dark-mode-toggle span,.portal-logout span{font-size:.85rem}.portal-dashboard-sidebar{position:fixed;top:70px;left:0;right:0;z-index:100;max-height:calc(100vh - 70px);transform:translateX(-100%);box-shadow:0 4px 6px rgba(0,0,0,.1)}.portal-dashboard-sidebar.open{transform:translateX(0)}}@media (min-width:768px){.portal-content{padding:2rem}.portal-title{font-size:2rem}.portal-subtitle{font-size:1.2rem}.portal-footer{flex-direction:row;justify-content:space-between;align-items:center;text-align:left}.portal-auth-buttons{flex-direction:row;gap:2rem}.portal-dashboard-content{flex-direction:row}.portal-dashboard-sidebar{width:220px;min-width:220px;order:1;border-right:1px solid #e5e7eb;border-bottom:none;position:static;overflow-y:auto;transform:none!important;max-height:none}.portal-dashboard.dark .portal-dashboard-sidebar{border-right-color:#4b5563}.portal-dashboard-main{padding:2rem}.portal-dashboard-main h1{font-size:2rem}.portal-quick-actions{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.portal-profile-card{flex-direction:row;text-align:left}.portal-library-search,.portal-modal-tabs{flex-direction:row}}@media (min-width:1024px){.portal-dashboard-header{padding:1rem 2rem}.portal-dashboard-user{gap:1rem}}