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