.portal-page{background:var(--bg-secondary);min-height:100vh;color:var(--text-primary);font-family:var(--font-body)}.portal-topbar{background:var(--bg-primary);border-bottom:1px solid var(--glass-border);min-height:80px;box-shadow:var(--shadow-sm);padding:var(--space-md)var(--space-xl);z-index:var(--z-sticky);-webkit-backdrop-filter:var(--glass-backdrop);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.portal-user{align-items:center;gap:var(--space-sm);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--font-bold);cursor:pointer;background:0 0;border:0;display:inline-flex}.portal-user svg{color:var(--text-secondary)}.portal-avatar{border-radius:var(--radius-full);background:var(--gray-200);width:40px;height:40px;color:var(--gray-400);place-items:center;display:grid;overflow:hidden}.portal-avatar.has-image img,.portal-hero-art.has-image img{object-fit:cover;width:100%;height:100%;display:block}.portal-avatar.has-image{background:var(--gray-100)}.portal-hero-art.has-image{padding:0;overflow:hidden}.portal-avatar.is-loading,.portal-hero-art.is-loading{background:var(--gray-100)}.portal-avatar-loading{border:2px solid #00194c24;border-top-color:var(--primary-brand);border-radius:var(--radius-full);width:45%;height:45%;animation:.8s linear infinite portal-avatar-spin}.identity-loading{border-radius:var(--radius-full);background:linear-gradient(90deg,var(--gray-100),var(--gray-200),var(--gray-100));background-size:200% 100%;width:4.5rem;height:1rem;animation:1.1s ease-in-out infinite portal-identity-shimmer;display:inline-block}@keyframes portal-avatar-spin{to{transform:rotate(360deg)}}@keyframes portal-identity-shimmer{0%,to{opacity:.65;background-position:0 0}50%{opacity:1;background-position:100% 0}}.portal-shell{grid-template-columns:280px minmax(0,1fr);min-height:calc(100vh - 80px);display:grid}.portal-sidebar{background:var(--gradient-primary);color:var(--text-inverse);padding:var(--space-xl)var(--space-md);flex-direction:column;align-self:start;height:calc(100vh - 80px);display:flex;position:sticky;top:80px;overflow-y:auto}.portal-header-brand,.portal-brand{align-items:center;gap:var(--space-sm);display:flex}.portal-header-brand{color:var(--primary-brand);text-decoration:none}.portal-header-brand:hover{color:var(--primary-brand-light)}.portal-brand{margin:0 var(--space-sm)var(--space-2xl)}.portal-brand-mark{border-radius:var(--radius-lg);background:var(--accent-brand);width:42px;height:42px;color:var(--text-inverse);font-family:var(--font-display);font-weight:var(--font-extrabold);font-size:var(--text-xl);place-items:center;display:grid}.portal-brand-copy{font-family:var(--font-display);font-size:var(--text-sm);line-height:1.15;font-weight:var(--font-bold);letter-spacing:.01em;color:inherit}.portal-brand-copy small{font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--font-medium);opacity:.72;margin-top:5px;display:block}.portal-nav{gap:var(--space-xs);display:grid}.admin-nav-group{margin-bottom:var(--space-md);gap:2px;display:grid}.admin-nav-group-label{padding:0 var(--space-md)var(--space-xs);color:#ffffff80;font-size:10px;font-weight:var(--font-bold);letter-spacing:.14em;text-transform:uppercase}.admin-nav-group .portal-nav-link{font-size:var(--text-sm)}.portal-nav-link{color:#ffffffd1;padding:var(--space-sm)var(--space-md);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:var(--font-medium);transition:all var(--transition-base);text-decoration:none}.portal-nav-link:hover,.portal-nav-link.active{color:var(--text-inverse);background:#ffffff29;transform:translate(2px)}.portal-nav-link.logout{margin-top:var(--space-sm);background:#f35a023d}.portal-nav-link.logout:hover{background:var(--accent-brand)}.portal-main{padding:var(--space-xl)var(--space-2xl)var(--space-4xl);max-width:var(--container-xl);width:100%}.portal-hero{border-radius:var(--radius-2xl);background:var(--gradient-primary);min-height:220px;padding:var(--space-2xl);color:var(--text-inverse);justify-content:space-between;align-items:center;gap:var(--space-xl);box-shadow:var(--shadow-lg);display:flex}.portal-eyebrow{margin:0 0 var(--space-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);letter-spacing:.14em;opacity:.82}.portal-hero h1{color:var(--text-inverse);font-family:var(--font-display);font-size:clamp(var(--text-xl),2.2vw,1.75rem);margin:0 0 var(--space-xs);letter-spacing:-.03em}.portal-hero p{color:#ffffffd6;max-width:470px;font-size:var(--text-sm);margin:0}.portal-hero-art{border-radius:var(--radius-full);background:var(--gray-50);width:142px;height:142px;color:var(--gray-400);box-shadow:var(--shadow-lg);border:8px solid #ffffffe0;flex:0 0 142px;place-items:center;display:grid}.portal-hero-art svg{width:82px;height:82px}.portal-profile{margin-top:var(--space-xl);background:var(--bg-primary);border-radius:var(--radius-2xl);padding:var(--space-xl);box-shadow:var(--shadow-md)}.portal-profile h2{margin:0 0 var(--space-xs);font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.03em}.portal-profile-intro{color:var(--text-secondary);font-size:var(--text-sm);margin:0}.portal-profile-grid{gap:var(--space-md);margin-top:var(--space-xl);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.portal-detail{border:1px solid var(--gray-100);border-radius:var(--radius-xl);min-height:128px;padding:var(--space-lg);background:var(--gradient-card);box-shadow:var(--shadow-sm)}.portal-detail-label{color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-xs);display:block}.portal-detail-value{color:var(--text-primary);font-weight:var(--font-bold);font-size:var(--text-base);line-height:1.35;display:block}.portal-detail-value.status{color:#067647}.portal-mobile-toggle{display:none}.portal-login-page{background:var(--bg-secondary);grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.portal-login-panel{padding:var(--space-2xl)var(--space-lg);place-items:center;display:grid}.portal-login-card{background:var(--bg-primary);width:min(100%,520px);padding:var(--space-2xl);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl)}.portal-login-brand{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xl);color:var(--primary-brand);display:flex}.portal-login-card h1{margin:0 0 var(--space-xs);font-family:var(--font-display);font-size:var(--text-4xl)}.portal-login-card .subtext{margin:0 0 var(--space-xl);color:var(--text-secondary)}.portal-field{gap:var(--space-xs);margin-bottom:var(--space-md);display:grid}.portal-field label{font-size:var(--text-sm);font-weight:var(--font-bold)}.portal-field input{border:1px solid var(--gray-300);border-radius:var(--radius-lg);width:100%;min-height:54px;padding:0 var(--space-md);font:inherit;color:var(--text-primary);transition:all var(--transition-base);outline:none}.portal-field input:focus{border-color:var(--primary-brand);box-shadow:0 0 0 4px #00194c1f}.portal-password-input{position:relative}.portal-password-input input{padding-right:3.25rem}.portal-password-toggle{border-radius:var(--radius-md);width:2.5rem;height:2.5rem;color:var(--text-secondary);cursor:pointer;transition:color var(--transition-base),background var(--transition-base);background:0 0;border:0;place-items:center;display:grid;position:absolute;top:50%;right:.7rem;transform:translateY(-50%)}.portal-password-toggle:hover,.portal-password-toggle:focus-visible{background:var(--gray-50);color:var(--primary-brand);outline:none}.portal-password-toggle svg{width:1.2rem;height:1.2rem}.portal-login-button{width:100%;min-height:46px;padding:var(--space-sm)var(--space-md);border-radius:var(--radius-md);color:var(--text-inverse);background:var(--gradient-primary);font:inherit;font-size:var(--text-sm);font-weight:var(--font-bold);cursor:pointer;transition:all var(--transition-base);border:0}.portal-login-button:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.portal-login-button:disabled,.portal-inline-button:disabled{cursor:wait;opacity:.7;transform:none}.portal-login-help{color:var(--primary-brand);font-size:var(--text-sm);margin-top:var(--space-md);display:inline-block}.portal-login-showcase{background:var(--gradient-primary);color:var(--text-inverse);padding:var(--space-2xl);place-items:center;display:grid}.portal-showcase-card{width:min(100%,560px);padding:var(--space-2xl);border-radius:var(--radius-2xl);background:#ffffff24;border:1px solid #ffffff29}.portal-showcase-card h2{color:var(--text-inverse);font-family:var(--font-display);font-size:clamp(var(--text-3xl),4vw,var(--text-5xl));max-width:520px;margin:var(--space-md)0}.portal-showcase-card p{color:#ffffffd9;font-size:var(--text-lg)}.portal-showcase-list{margin:var(--space-lg)0 0;padding-left:var(--space-lg);color:#ffffffe0;gap:var(--space-sm);display:grid}.portal-header-brand{align-items:baseline;gap:var(--space-sm);display:inline-flex}.portal-text-logo{font-family:var(--font-display);font-size:var(--text-lg);line-height:1;font-weight:var(--font-extrabold);letter-spacing:-.02em}.portal-text-logo-subtitle{color:var(--text-secondary);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--font-medium)}.portal-account{position:relative}.portal-account-menu{right:0;top:calc(100% + var(--space-sm));width:160px;padding:var(--space-xs);border:1px solid var(--gray-100);border-radius:var(--radius-lg);background:var(--bg-primary);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);position:absolute}.portal-account-menu a{padding:var(--space-sm)var(--space-md);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--text-sm);text-decoration:none;display:block}.portal-account-menu a:hover{background:var(--gray-50);color:var(--primary-brand)}.portal-sidebar-backdrop{display:none}.portal-login-simple{grid-template-columns:1fr}.portal-login-simple .portal-login-card{width:min(100%,460px)}.portal-login-simple .portal-login-brand{margin-bottom:var(--space-lg)}.portal-text-button{min-height:36px;margin-top:var(--space-sm);color:var(--primary-brand);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.portal-text-button:hover{text-decoration:underline}.portal-form-error{margin:var(--space-sm)0;color:#b42318;font-size:var(--text-sm)}.portal-form-message{padding:var(--space-md);border-radius:var(--radius-md);color:#067647;font-size:var(--text-sm);background:#06764714;line-height:1.5}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal-loading-state{place-items:center;min-height:120px;display:grid}.portal-ios-spinner{border:3px solid #00194c1f;border-top-color:var(--primary-brand);border-right-color:var(--primary-brand-light);border-radius:50%;width:34px;height:34px;animation:.75s linear infinite portal-spinner-rotate;display:block}@keyframes portal-spinner-rotate{to{transform:rotate(360deg)}}.portal-auth-loading{min-height:100vh;padding:var(--space-xl);background:var(--bg-secondary);place-items:center;display:grid}.portal-auth-loading-card{padding:var(--space-lg)var(--space-xl);border-radius:var(--radius-xl);background:var(--bg-primary);color:var(--text-secondary);box-shadow:var(--shadow-md);font-size:var(--text-sm)}.portal-auth-loading .portal-ios-spinner{width:30px;height:30px}@media (prefers-reduced-motion:reduce){.portal-ios-spinner{animation-duration:1.5s}}.portal-section-page{max-width:980px;padding-top:var(--space-xs)}.portal-section-eyebrow{color:var(--primary-brand);opacity:1}.portal-section-title{margin:0 0 var(--space-xs);font-family:var(--font-display);font-size:var(--text-3xl);color:var(--text-primary)}.portal-section-description{margin:0 0 var(--space-xl);color:var(--text-secondary);font-size:var(--text-sm)}.portal-list-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.portal-content-stack{gap:var(--space-md);display:grid}.portal-content-card{background:var(--bg-primary);border:1px solid var(--gray-100);border-radius:var(--radius-xl);padding:var(--space-xl);box-shadow:var(--shadow-sm)}.portal-content-card h2{margin:var(--space-xs)0;color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-xl)}.portal-content-card p{margin:0 0 var(--space-md);color:var(--text-secondary);font-size:var(--text-sm)}.portal-card-kicker{color:var(--primary-brand-light);font-size:var(--text-xs);font-weight:var(--font-bold);letter-spacing:.1em}.portal-inline-button{border-radius:var(--radius-md);padding:var(--space-sm)var(--space-md);background:var(--primary-brand);color:var(--text-inverse);font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;border:0}.portal-inline-button:hover{background:var(--primary-brand-light)}.portal-card-row{justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.portal-status-badge{border-radius:var(--radius-full);color:var(--accent-brand);font-size:var(--text-xs);font-weight:var(--font-semibold);white-space:nowrap;background:#f35a021a;padding:5px 10px}.portal-success-text{color:#067647!important}.portal-profile-image-block{align-items:center;gap:var(--space-lg);margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--gray-100);display:flex}.portal-profile-image-preview{border:1px solid var(--gray-200);background:var(--gray-50);border-radius:50%;flex:0 0 88px;place-items:center;width:88px;height:88px;display:grid;overflow:hidden}.portal-profile-image-preview img{object-fit:cover;width:100%;height:100%}.portal-profile-image-copy{justify-items:start;gap:6px;min-width:0;display:grid}.portal-profile-image-copy strong{color:var(--text-primary);font-size:var(--text-base)}.portal-profile-image-copy>span{color:var(--text-secondary);font-size:var(--text-sm)}.portal-upload-button{min-height:38px;margin-top:var(--space-xs);padding:0 var(--space-md);border:1px solid var(--primary-brand);border-radius:var(--radius-md);background:var(--primary-brand);color:#fff;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;justify-content:center;align-items:center;transition:background .2s,border-color .2s;display:inline-flex}.portal-upload-button:hover{border-color:var(--primary-brand-dark);background:var(--primary-brand-dark)}.portal-upload-button input{clip:rect(0,0,0,0);white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.portal-profile-image-copy .portal-success-text,.portal-profile-image-copy .portal-form-error{background:0 0;margin:0;padding:0;display:block}.portal-profile-heading{align-items:center;gap:var(--space-md);margin-bottom:var(--space-xl);display:flex}.portal-profile-heading h2{margin:0}.portal-profile-heading p{color:var(--text-secondary);font-size:var(--text-sm);margin:4px 0 0}.portal-setting-row{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-lg)0;border-bottom:1px solid var(--gray-100);cursor:pointer;display:flex}.portal-setting-row span{gap:4px;display:grid}.portal-setting-row strong{font-size:var(--text-sm)}.portal-setting-row small{color:var(--text-secondary);font-size:var(--text-xs)}.portal-setting-row input{width:18px;height:18px;accent-color:var(--primary-brand)}.portal-settings-card .portal-inline-button{margin-top:var(--space-lg)}.portal-tabs{gap:var(--space-xs);margin:0 0 var(--space-lg);padding-bottom:var(--space-xs);border-bottom:1px solid var(--gray-200);flex-wrap:wrap;display:flex}.portal-tab{border-radius:var(--radius-full);padding:var(--space-sm)var(--space-lg);background:var(--gray-100);color:var(--text-secondary);font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;border:0}.portal-tab.active,.portal-tab:hover{background:var(--primary-brand);color:var(--text-inverse)}.portal-card-meta{font-weight:var(--font-semibold);color:var(--primary-brand)!important}.portal-quiz-list{gap:var(--space-lg);margin:var(--space-xl)0;display:grid}.portal-quiz-list fieldset{padding:0 0 var(--space-md);border:0;border-bottom:1px solid var(--gray-100);gap:var(--space-sm);margin:0;display:grid}.portal-quiz-list legend{margin-bottom:var(--space-xs);color:var(--text-primary);font-weight:var(--font-semibold);font-size:var(--text-sm);padding:0}.portal-quiz-list label{align-items:center;gap:var(--space-sm);color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;display:flex}.portal-quiz-list input{accent-color:var(--primary-brand)}.portal-review-list{gap:var(--space-sm);display:grid}.portal-review-item{padding:var(--space-md);border-radius:var(--radius-lg);background:var(--gray-50);border-left:4px solid var(--gray-300);font-size:var(--text-sm);gap:5px;display:grid}.portal-review-item.correct{border-left-color:#067647}.portal-review-item.incorrect{border-left-color:var(--accent-brand)}.portal-review-item span{color:var(--text-secondary)}.portal-upload-label{margin:var(--space-md)0 var(--space-xs);color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-semibold);display:block}.portal-file-input{width:100%;max-width:420px;padding:var(--space-sm);border:1px dashed var(--gray-300);border-radius:var(--radius-md);color:var(--text-secondary);font:inherit;font-size:var(--text-sm);background:var(--gray-50);display:block}.portal-file-name{margin:var(--space-sm)0!important;color:var(--primary-brand)!important;font-size:var(--text-xs)!important}.portal-quiz-protected{-webkit-user-select:none;user-select:none}.portal-quiz-protected:before{content:"Quiz mode · copying and browser shortcuts are disabled";margin-bottom:var(--space-md);color:var(--text-muted);font-size:var(--text-xs);display:block}.admin-sidebar-title{margin:0 var(--space-sm)var(--space-lg);color:#ffffffb3;font-size:var(--text-xs);font-weight:var(--font-bold);letter-spacing:.1em}.admin-header-label{color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--font-semibold)}.admin-page .portal-hero{min-height:180px}.admin-hero-stat{min-width:120px;padding:var(--space-lg);border-radius:var(--radius-xl);text-align:center;background:#ffffff24}.admin-hero-stat strong{color:var(--text-inverse);font-family:var(--font-display);font-size:var(--text-3xl);display:block}.admin-hero-stat span{color:#fffc;font-size:var(--text-xs)}.admin-stat-grid{gap:var(--space-md);margin:var(--space-lg)0;grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.admin-stat-card{padding:var(--space-lg);border-radius:var(--radius-xl);background:var(--bg-primary);border:1px solid var(--gray-100);box-shadow:var(--shadow-sm)}.admin-stat-card span,.admin-stat-card small{color:var(--text-secondary);font-size:var(--text-sm);display:block}.admin-stat-card strong{margin:var(--space-xs)0;color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-3xl);display:block}.admin-action-grid{gap:var(--space-sm);flex-wrap:wrap;display:flex}.portal-footer{width:100%;padding:var(--space-md)var(--space-xl);border-top:1px solid var(--gray-100);background:var(--bg-primary);color:var(--text-secondary);text-align:center;font-size:var(--text-xs)}.admin-toolbar{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);display:flex}.admin-search-wrap{align-items:center;gap:var(--space-sm);max-width:560px;min-height:48px;padding:0 var(--space-md);border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:var(--bg-primary);flex:1;display:flex}.admin-search-wrap>span{color:var(--text-muted);font-size:var(--text-lg)}.admin-search{width:100%;color:var(--text-primary);font:inherit;font-size:var(--text-sm);background:0 0;border:0;outline:0}.admin-student-summary{align-items:baseline;gap:var(--space-sm);margin:var(--space-lg)0 var(--space-sm);color:var(--text-secondary);font-size:var(--text-sm);display:flex}.admin-student-summary strong{color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-2xl)}.admin-table-wrap{border:1px solid var(--gray-100);border-radius:var(--radius-xl);background:var(--bg-primary);box-shadow:var(--shadow-sm);overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:780px}.admin-table th,.admin-table td{padding:var(--space-md);text-align:left;border-bottom:1px solid var(--gray-100);font-size:var(--text-sm);white-space:nowrap}.admin-table th{color:var(--text-secondary);font-weight:var(--font-semibold);background:var(--gray-50)}.admin-student-form{margin:var(--space-lg)0}.admin-close-button{color:var(--text-secondary);font-size:var(--text-2xl);cursor:pointer;background:0 0;border:0}.admin-form-grid{gap:var(--space-md);margin:var(--space-lg)0;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.admin-form-grid label{gap:var(--space-xs);color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-semibold);display:grid}.admin-form-grid input{min-height:44px;padding:0 var(--space-sm);border:1px solid var(--gray-300);border-radius:var(--radius-md);color:var(--text-primary);font:inherit}.admin-form-grid input:focus{border-color:var(--primary-brand);outline:0;box-shadow:0 0 0 4px #00194c1f}.admin-status{border-radius:var(--radius-full);color:#067647;font-size:var(--text-xs);font-weight:var(--font-semibold);background:#0676471a;padding:5px 10px;display:inline-flex}.admin-status.completed{color:var(--text-secondary);background:#6670851f}.admin-row-actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.admin-row-actions button{border:1px solid var(--gray-200);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--primary-brand);font:inherit;font-size:var(--text-xs);cursor:pointer;padding:6px 10px}.admin-row-actions button:hover{background:var(--gray-50)}.admin-row-actions button.danger{color:#b42318}.admin-empty-state{padding:var(--space-xl);color:var(--text-secondary);text-align:center;font-size:var(--text-sm)}.admin-modal-backdrop{z-index:var(--z-modal);padding:var(--space-xl);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000f2e85;place-items:center;display:grid;position:fixed;inset:0}.admin-modal{width:min(100%,720px);max-height:min(90vh,760px);padding:var(--space-xl);border-radius:var(--radius-2xl);background:var(--bg-primary);box-shadow:var(--shadow-2xl);border:1px solid #ffffff80;overflow-y:auto}.admin-modal h2{margin:0 0 var(--space-xs);color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-2xl)}.admin-modal-hint{color:var(--text-secondary);font-size:var(--text-sm);margin:0;line-height:1.5}.admin-modal .admin-form-grid{margin:var(--space-xl)0}.admin-form-grid select{min-height:44px;padding:0 var(--space-sm);border:1px solid var(--gray-300);border-radius:var(--radius-md);color:var(--text-primary);background:var(--bg-primary);font:inherit}.admin-form-grid select:focus{border-color:var(--primary-brand);outline:0;box-shadow:0 0 0 4px #00194c1f}.admin-form-grid input:disabled{color:var(--text-secondary);background:var(--gray-50);cursor:not-allowed}.admin-modal-footer{justify-content:flex-end;gap:var(--space-sm);padding-top:var(--space-lg);border-top:1px solid var(--gray-100);display:flex}.admin-secondary-button{min-height:42px;padding:0 var(--space-md);border:1px solid var(--gray-200);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--primary-brand);font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer}.admin-secondary-button:hover{background:var(--gray-50)}.admin-secondary-button.danger{color:#b42318}.admin-danger-button{min-height:42px;padding:0 var(--space-md);border-radius:var(--radius-md);color:#fff;font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;background:#b42318;border:1px solid #b42318}.admin-danger-button:hover{background:#8f1d14;border-color:#8f1d14}.admin-danger-button:disabled{cursor:wait;opacity:.7}.admin-danger-button:focus-visible,.admin-secondary-button:focus-visible{outline-offset:2px;outline:3px solid #f35a024d}.course-image-field input[type=file]{min-height:44px;padding:9px var(--space-sm);background:var(--gray-50);cursor:pointer}.course-image-field small{color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-normal);line-height:1.45}.admin-confirm-modal{width:min(100%,560px)}.admin-confirm-modal .portal-card-row{align-items:flex-start}.admin-confirm-modal .admin-modal-footer{margin-top:var(--space-xl)}.programs-management{gap:var(--space-lg);display:grid}.programs-intro-card h2{margin-bottom:var(--space-xs)}.programs-intro-card p{max-width:680px}.program-create-form{align-items:flex-end;gap:var(--space-md);margin-top:var(--space-xl);display:flex}.program-create-form label{gap:var(--space-xs);color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-semibold);flex:1;display:grid}.program-create-form input{min-height:44px;padding:0 var(--space-sm);border:1px solid var(--gray-300);border-radius:var(--radius-md);color:var(--text-primary);font:inherit}.program-create-form input:focus{border-color:var(--primary-brand);outline:0;box-shadow:0 0 0 4px #00194c1f}.program-form-actions{gap:var(--space-sm);display:flex}.programs-toolbar{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.program-count{color:var(--text-secondary);font-size:var(--text-sm);white-space:nowrap}.program-list{gap:var(--space-sm);display:grid}.program-row{align-items:center;gap:var(--space-md);padding:var(--space-lg);grid-template-columns:54px minmax(0,1fr) auto;margin:0;display:grid}.program-index{border-radius:var(--radius-lg);width:42px;height:42px;color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--font-bold);background:#00194c14;place-items:center;display:grid}.program-row-copy h3{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-lg);margin:0 0 4px}.program-row-copy p{color:var(--text-secondary);font-size:var(--text-xs);margin:0}.program-row-actions{gap:var(--space-xs);display:flex}.admin-content-manager{gap:var(--space-lg)}.admin-content-card{min-width:0}.admin-content-card-actions{gap:var(--space-xs);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.admin-content-preview{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.admin-content-editor-modal{max-width:820px}.admin-long-textarea{resize:vertical;min-height:220px;line-height:1.65}.portal-long-text{white-space:pre-wrap;line-height:1.75}.portal-long-text-preview{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.portal-lesson-reader{margin:var(--space-md)0;padding:var(--space-md);border-left:3px solid var(--accent-brand);border-radius:var(--radius-md);background:var(--gray-50)}.portal-lesson-reader .portal-detail-label{margin-bottom:var(--space-xs);display:block}.portal-lesson-reader p{margin:0}.portal-lesson-card .portal-inline-button{margin:var(--space-xs)var(--space-xs)0 0}.admin-content-toolbar{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-md)0;display:flex}.admin-content-toolbar p{margin:var(--space-xs)0 0;color:var(--text-secondary);font-size:var(--text-sm)}.admin-content-card{gap:var(--space-md);display:grid}.admin-content-card-actions{padding-top:var(--space-sm);border-top:1px solid var(--gray-100);justify-content:flex-end;display:flex}.admin-content-form-grid{align-items:start}.admin-form-textarea{min-height:110px;padding:var(--space-sm);border:1px solid var(--gray-300);border-radius:var(--radius-md);color:var(--text-primary);background:var(--bg-primary);font:inherit;resize:vertical;line-height:1.5}.admin-form-textarea:focus{border-color:var(--primary-brand);outline:0;box-shadow:0 0 0 4px #00194c1f}.student-assignment-list{gap:var(--space-xs);max-height:48vh;margin:var(--space-xl)0;padding:var(--space-xs);display:grid;overflow-y:auto}.student-assignment-select-all,.student-assignment-option{align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-md);cursor:pointer;display:flex}.student-assignment-select-all{color:var(--primary-brand);font-size:var(--text-sm);font-weight:var(--font-semibold);background:#00194c0f}.student-assignment-option:hover{background:var(--gray-50)}.student-assignment-option input,.student-assignment-select-all input{width:18px;height:18px;accent-color:var(--primary-brand);flex:none}.student-assignment-option span{gap:2px;min-width:0;display:grid}.student-assignment-option strong{color:var(--text-primary);font-size:var(--text-sm)}.student-assignment-option small{color:var(--text-secondary);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mail-template-card>p{max-width:720px}.mail-template-field{gap:var(--space-xs);margin:var(--space-lg)0;color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-semibold);display:grid}.mail-template-field input,.mail-template-field textarea{width:100%;padding:var(--space-sm);border:1px solid var(--gray-300);border-radius:var(--radius-md);color:var(--text-primary);background:var(--bg-primary);font:inherit;resize:vertical;line-height:1.5}.mail-template-field input{min-height:44px}.mail-template-field input:focus,.mail-template-field textarea:focus{border-color:var(--primary-brand);outline:0;box-shadow:0 0 0 4px #00194c1f}.mail-template-variables{gap:var(--space-xs);margin:var(--space-lg)0;padding:var(--space-md);border-radius:var(--radius-lg);background:var(--gray-50);color:var(--text-secondary);font-size:var(--text-xs);display:grid}.mail-template-variables strong{color:var(--text-primary);font-size:var(--text-sm)}.mail-template-variables span{align-items:baseline;gap:var(--space-xs);display:inline-flex}.mail-template-variables code{color:var(--primary-brand);background:#00194c14;border-radius:4px;padding:2px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.public-enroll-page{min-height:100vh;color:var(--text-primary);background:linear-gradient(#f7faff 0%,#eef4fb 100%)}.enroll-public-header{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:22px max(5vw,var(--space-xl));background:#ffffffe6;border-bottom:1px solid #00194c14;display:flex}.enroll-public-brand{color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--font-extrabold);letter-spacing:-.03em;text-decoration:none}.enroll-public-brand span{margin-left:var(--space-xs);color:var(--accent-brand);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.16em}.enroll-back-link{color:var(--primary-brand);font-size:var(--text-sm);font-weight:var(--font-bold);text-decoration:none}.enroll-back-link:hover{color:var(--accent-brand)}.course-card-skeleton{pointer-events:none}.course-card-skeleton .course-image-wrap,.course-card-skeleton .course-card-body span,.course-card-skeleton .course-card-body strong,.course-card-skeleton .course-card-body em,.course-card-skeleton .course-card-body>div{border-radius:var(--radius-md);background:linear-gradient(90deg,#edf2f7 25%,#f8fafc 50%,#edf2f7 75%) 0 0/200% 100%;animation:1.3s ease-in-out infinite course-skeleton-shimmer}.course-card-skeleton .course-card-body span{width:36%;height:12px}.course-card-skeleton .course-card-body strong{width:78%;height:28px;margin:var(--space-sm)0}.course-card-skeleton .course-card-body em{width:100%;height:54px}.course-card-skeleton .course-card-body>div{width:100%;height:44px;margin-top:var(--space-lg)}.enroll-empty-state{justify-items:start;gap:var(--space-sm);padding:clamp(var(--space-xl),6vw,var(--space-2xl));border-radius:var(--radius-2xl);background:var(--bg-primary);box-shadow:var(--shadow-md);border:1px solid #00194c14;display:grid}.enroll-empty-state h2{color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-2xl);margin:0}.enroll-empty-state p{max-width:560px;margin:0 0 var(--space-md);color:var(--text-secondary);line-height:1.55}@keyframes course-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.enroll-hero{gap:var(--space-2xl);padding:clamp(72px,10vw,132px)max(5vw,var(--space-xl))clamp(52px,7vw,92px);color:var(--text-inverse);background:radial-gradient(circle at 84% 12%,#f35a0257,#0000 25%),linear-gradient(135deg,#00194c 0%,#043476 68%,#0b5b8f 100%);grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr);align-items:end;display:grid;position:relative;overflow:hidden}.enroll-hero:after{content:"";pointer-events:none;border:1px solid #ffffff1f;border-radius:50%;width:60vw;height:60vw;position:absolute;bottom:-45%;right:-10%;box-shadow:0 0 0 42px #ffffff0a,0 0 0 84px #ffffff08}.enroll-hero>*{z-index:1;position:relative}.enroll-hero h1{max-width:780px;margin:var(--space-md)0;color:var(--text-inverse);font-family:var(--font-display);letter-spacing:-.065em;font-size:clamp(2.4rem,6vw,5.6rem);line-height:.98}.enroll-hero p{color:#ffffffd1;max-width:650px;font-size:clamp(var(--text-base),2vw,var(--text-xl));margin:0;line-height:1.55}.enroll-hero-note{gap:var(--space-sm);max-width:330px;padding:var(--space-xl);border-radius:var(--radius-2xl);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffff1a;border:1px solid #ffffff2e;display:grid;box-shadow:0 20px 60px #00000024}.enroll-hero-note strong{color:#fff;font-family:var(--font-display);font-size:var(--text-xl)}.enroll-hero-note span{color:#ffffffc7;line-height:1.55}.enroll-section{width:min(1240px,90vw);margin:0 auto;padding:clamp(52px,8vw,100px) 0}.enroll-section-heading{justify-content:space-between;align-items:end;gap:var(--space-xl);margin-bottom:var(--space-2xl);display:flex}.enroll-section-heading h2{margin:var(--space-sm)0 0;color:var(--primary-brand);font-family:var(--font-display);font-size:clamp(var(--text-2xl),4vw,var(--text-4xl));letter-spacing:-.05em}.enroll-section-heading>p{max-width:360px;color:var(--text-secondary);margin:0;line-height:1.55}.course-grid{gap:var(--space-lg);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.course-card{border-radius:var(--radius-2xl);background:var(--bg-primary);min-width:0;box-shadow:var(--shadow-md);transition:transform var(--transition-base),box-shadow var(--transition-base);border:1px solid #00194c14;flex-direction:column;display:flex;overflow:hidden}.course-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-6px)}.course-image-wrap{aspect-ratio:4/3;background:linear-gradient(135deg,var(--primary-brand),var(--accent-brand));overflow:hidden}.course-image-wrap img{object-fit:cover;width:100%;height:100%;transition:transform .4s var(--ease-out,ease);display:block}.course-card:hover .course-image-wrap img{transform:scale(1.05)}.course-card-body{padding:var(--space-lg);flex-direction:column;flex:1;display:flex}.course-card-body h3{margin:var(--space-xs)0 var(--space-sm);color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.03em}.course-card-body p{margin:0 0 var(--space-lg);color:var(--text-secondary);font-size:var(--text-sm);flex:1;line-height:1.55}.course-card-meta{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--gray-100);color:var(--text-secondary);font-size:var(--text-sm);display:flex}.course-card-meta strong{color:var(--accent-brand);font-size:var(--text-base)}.course-card .portal-inline-button{text-align:center;width:100%}.enroll-modal{z-index:var(--z-modal);padding:var(--space-xl);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000f2e9e;place-items:center;display:grid;position:fixed;inset:0;overflow-y:auto}.enroll-modal-card{width:min(760px,100%);max-height:92vh;padding:clamp(var(--space-xl),5vw,var(--space-2xl));border-radius:var(--radius-2xl);background:var(--bg-primary);box-shadow:var(--shadow-2xl);position:relative;overflow-y:auto}.enroll-modal-card h2{margin:var(--space-sm)0;color:var(--primary-brand);font-family:var(--font-display);font-size:clamp(var(--text-2xl),4vw,var(--text-4xl))}.enroll-modal-card>p{margin:0 0 var(--space-xl);color:var(--text-secondary)}.enroll-modal-card .admin-close-button{top:var(--space-md);right:var(--space-md);position:absolute}.enroll-modal-card form{margin-top:var(--space-lg)}.enrollment-admin-intro .portal-card-row{align-items:center}.enrollment-courses-management{gap:var(--space-lg);display:grid}.enrollment-course-admin-row{align-items:center;gap:var(--space-lg);grid-template-columns:132px minmax(0,1fr) auto;display:grid}.enrollment-course-admin-image{aspect-ratio:1;border-radius:var(--radius-xl);color:#fff;background:var(--gradient-primary);width:132px;font-family:var(--font-display);font-size:var(--text-2xl);place-items:center;display:grid;overflow:hidden}.enrollment-course-admin-image img{object-fit:cover;width:100%;height:100%}.enrollment-course-admin-copy h3{margin:var(--space-xs)0;color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-xl)}.enrollment-course-admin-copy p{color:var(--text-secondary);margin:0;line-height:1.5}.enrollment-course-admin-meta{align-items:center;gap:var(--space-md);margin-top:var(--space-md);color:var(--text-secondary);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.enrollment-course-admin-meta strong{color:var(--accent-brand)}.enrollment-course-editor-preview{aspect-ratio:1;width:120px;margin-top:var(--space-md);border-radius:var(--radius-xl);background:var(--gray-100);overflow:hidden}.enrollment-course-editor-preview img{object-fit:cover;width:100%;height:100%}.admin-form-full-width{grid-column:1/-1}.enrollment-visibility-control{margin-top:var(--space-lg);justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-md)var(--space-lg);border:1px solid var(--gray-100);border-radius:var(--radius-xl);background:var(--gray-50);display:flex}.enrollment-visibility-control>div{gap:4px;display:grid}.enrollment-visibility-control strong{color:var(--text-primary);font-size:var(--text-sm)}.enrollment-visibility-control span:not(.toggle-track):not(.sr-only){color:var(--text-secondary);font-size:var(--text-sm);line-height:1.45}.toggle-control{cursor:pointer;flex:none;align-items:center;display:inline-flex;position:relative}.toggle-control input{opacity:0;width:1px;height:1px;position:absolute}.toggle-track{border-radius:var(--radius-full);background:var(--gray-300);width:48px;height:28px;padding:3px;transition:background .2s,box-shadow .2s;display:block}.toggle-track:after{content:"";width:22px;height:22px;box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;transition:transform .2s;display:block}.toggle-control input:checked+.toggle-track{background:var(--primary-brand)}.toggle-control input:checked+.toggle-track:after{transform:translate(20px)}.toggle-control input:focus-visible+.toggle-track{box-shadow:0 0 0 4px #00194c26}.toggle-control input:disabled+.toggle-track{cursor:wait;opacity:.65}.portal-settings-tabs{margin-bottom:var(--space-md);border-radius:var(--radius-lg);background:var(--gray-100);flex-wrap:wrap;gap:6px;width:fit-content;padding:5px;display:flex}.portal-settings-tabs button{border-radius:var(--radius-md);color:var(--text-secondary);font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;background:0 0;border:0;padding:10px 14px}.portal-settings-tabs button.active{background:var(--bg-primary);color:var(--primary-brand);box-shadow:var(--shadow-sm)}.password-change-panel{max-width:620px}.password-change-required{margin:var(--space-lg)0;padding:var(--space-md);border-left:3px solid var(--accent-brand);border-radius:var(--radius-md);color:var(--text-primary);background:#f35a0214;gap:4px;display:grid}.password-change-required span{color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5}.password-change-form{gap:var(--space-md);display:grid}.password-change-form label{color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-semibold);gap:6px;display:grid}.password-change-form input{width:100%;min-height:46px;padding:0 var(--space-md);border:1px solid var(--gray-300);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);font:inherit;outline:none}.password-change-form input:focus{border-color:var(--primary-brand);box-shadow:0 0 0 4px #00194c1a}.password-change-form small{color:var(--text-secondary);font-weight:var(--font-normal)}.password-change-form .portal-inline-button{width:fit-content}.reset-login-link{margin-top:var(--space-md);justify-content:center;align-items:center;text-decoration:none;display:flex}.enrollment-closed-state{background:linear-gradient(135deg,#f35a020f,var(--bg-primary));border-color:#f35a0233}@media (min-width:900px){.course-grid{gap:var(--space-lg);grid-template-columns:repeat(3,minmax(0,1fr))}.course-card{justify-self:center;width:100%;max-width:360px}.course-card-body{padding:var(--space-lg)}.course-card h3{font-size:var(--text-xl)}}@media (min-width:641px) and (max-width:899px){.course-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr))}.course-card{justify-self:center;width:100%;max-width:360px}}@media (max-width:1023px){.portal-shell{grid-template-columns:220px minmax(0,1fr)}.portal-main{padding:var(--space-lg)var(--space-md)var(--space-3xl)}.portal-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.portal-login-simple .portal-login-card{padding:var(--space-xl)}.portal-main{min-width:0}}@media (max-width:767px){.portal-topbar{min-height:72px;padding:var(--space-sm)var(--space-md)}.portal-topbar .portal-user>span:not(.portal-avatar){display:none}.portal-topbar .portal-user .portal-avatar{display:grid}.portal-shell{min-height:calc(100vh - 72px);display:block}.portal-header-brand{margin-left:52px}.portal-sidebar{width:min(82vw,300px);z-index:var(--z-modal);transition:transform var(--transition-slow);box-shadow:var(--shadow-2xl);position:fixed;inset:72px auto 0 0;overflow-y:auto;transform:translate(-105%)}.portal-sidebar.open{transform:translate(0)}.portal-mobile-toggle{z-index:1;background:var(--bg-primary);border:1px solid var(--gray-200);border-radius:var(--radius-lg);width:40px;height:40px;color:var(--text-primary);font-size:var(--text-xl);cursor:pointer;place-items:center;display:grid;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.portal-main{padding:var(--space-md)var(--space-md)var(--space-2xl)}.portal-hero{min-height:320px;padding:var(--space-xl)var(--space-md);text-align:center;flex-direction:column;justify-content:center}.portal-hero p{margin:0 auto}.portal-hero-art{order:-1;width:132px;height:132px}.portal-profile{margin-top:var(--space-md);padding:var(--space-lg)var(--space-md);border-radius:var(--radius-xl)}.portal-profile h2{font-size:var(--text-xl)}.portal-profile-grid{gap:var(--space-md);margin-top:var(--space-lg);grid-template-columns:1fr}.portal-detail{min-height:116px;padding:var(--space-lg)}.portal-login-page{grid-template-columns:1fr}.portal-login-showcase{display:none}.portal-login-card{width:100%;padding:var(--space-xl)var(--space-lg);border-radius:var(--radius-xl)}.portal-login-card .portal-login-button{min-height:44px}.portal-header-brand{gap:6px;margin-left:50px}.portal-text-logo{font-size:var(--text-base)}.portal-text-logo-subtitle{font-size:10px}.portal-account-menu{right:-4px}.portal-sidebar-backdrop{z-index:calc(var(--z-modal) - 1);cursor:pointer;background:#000f2e47;border:0;display:block;position:fixed;inset:72px 0 0}.portal-hero h1{font-size:var(--text-lg)}.portal-hero p{font-size:var(--text-xs)}.portal-section-title{font-size:var(--text-2xl)}.portal-list-grid{grid-template-columns:1fr}.portal-content-card{padding:var(--space-lg)}.portal-card-row{display:grid}.portal-profile-heading{align-items:flex-start}.portal-tabs{width:100%}.portal-tab{padding:var(--space-sm)var(--space-xs);font-size:var(--text-xs);flex:1}.portal-quiz-list{margin:var(--space-lg)0}.portal-upload-label{margin-top:var(--space-md)}.portal-file-input{font-size:var(--text-xs)}.portal-login-panel{padding:var(--space-lg)var(--space-sm)}.portal-login-card{padding:var(--space-lg)var(--space-md)}.portal-login-card h1{font-size:var(--text-2xl)}.portal-login-card .portal-field input{min-height:44px}.admin-page .portal-hero{min-height:220px}.admin-hero-stat{min-width:100px}.admin-stat-grid{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr))}.admin-stat-card{padding:var(--space-md)}.admin-stat-card strong{font-size:var(--text-2xl)}.admin-action-grid{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.admin-action-grid .portal-inline-button{width:100%;padding-left:var(--space-xs);padding-right:var(--space-xs)}.admin-toolbar{flex-direction:column;align-items:stretch}.admin-search-wrap{max-width:none}.admin-form-grid{grid-template-columns:1fr}.admin-row-actions{flex-direction:column;align-items:stretch}.admin-row-actions button{width:100%}.admin-modal-backdrop{align-items:end;padding:0}.admin-modal{width:100%;max-height:92vh;padding:var(--space-lg)var(--space-md);border-radius:var(--radius-2xl)var(--radius-2xl)0 0}.admin-modal-footer{flex-direction:column-reverse}.admin-modal-footer button{width:100%}.program-create-form{flex-direction:column;align-items:stretch}.program-form-actions{grid-template-columns:1fr 1fr;display:grid}.program-form-actions button{width:100%}.programs-toolbar,.admin-content-toolbar{flex-direction:column;align-items:stretch}.admin-content-toolbar .portal-inline-button{width:100%}.admin-content-card-actions{justify-content:stretch}.admin-content-card-actions button{width:100%}.program-row{grid-template-columns:42px minmax(0,1fr)}.enrollment-course-admin-row{grid-template-columns:96px minmax(0,1fr)}.enrollment-course-admin-row>.program-row-actions{grid-column:1/-1;justify-content:flex-end}.program-index{width:36px;height:36px}.program-row-actions{grid-column:1/-1}.program-row-actions button{flex:1}.portal-footer{padding:var(--space-md);font-size:11px}.enroll-public-header{padding:18px var(--space-md)}.enroll-public-brand{font-size:var(--text-base)}.enroll-back-link{font-size:var(--text-xs)}.enroll-hero{padding:72px var(--space-lg)56px;grid-template-columns:1fr}.enroll-hero-note{max-width:100%}.enroll-section{width:min(100% - 32px,720px)}.enroll-section-heading{align-items:start;display:grid}.course-grid{grid-template-columns:1fr}.enroll-modal{align-items:end;padding:0}.enroll-modal-card{border-radius:var(--radius-2xl)var(--radius-2xl)0 0;max-height:94vh}.enrollment-admin-intro .portal-card-row{align-items:start;display:grid}.enrollment-admin-intro .portal-inline-button{width:100%}.enrollment-course-admin-row{grid-template-columns:72px minmax(0,1fr);align-items:start}.enrollment-course-admin-image{width:72px}.enrollment-course-admin-row>.program-row-actions{justify-content:stretch}.enrollment-course-admin-row>.program-row-actions button{flex:1}.enroll-modal-card .admin-form-grid{grid-template-columns:1fr}.enrollment-visibility-control{padding:var(--space-md);align-items:flex-start}.portal-settings-tabs{width:100%}.portal-settings-tabs button{flex:1}.password-change-form .portal-inline-button{width:100%}}@media (max-width:480px){.portal-profile-image-block{align-items:flex-start;gap:var(--space-md)}.portal-profile-image-preview{flex-basis:72px;width:72px;height:72px}.portal-profile-image-copy>span{font-size:var(--text-xs)}.portal-upload-button{min-height:40px}.portal-login-card .portal-login-button{min-height:44px}}.portal-content-actions{align-items:center;gap:var(--space-xs);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.portal-submission-lock{margin:var(--space-md)0;padding:var(--space-md);border-radius:var(--radius-md);color:var(--text-secondary);background:#0085770f;border:1px solid #00857733;gap:4px;display:grid}.portal-submission-lock strong{color:var(--accent-brand)}.portal-submission-lock small,.portal-file-help{color:var(--text-secondary);font-size:var(--text-xs)}.portal-file-help{margin:var(--space-xs)0 var(--space-sm)}.portal-lesson-card .portal-status-badge.completed,.portal-content-card .portal-status-badge.completed{color:var(--accent-brand);background:#0085771a}.quiz-player{max-width:860px;margin-inline:auto}.quiz-timer{border-radius:var(--radius-md);background:var(--primary-brand);color:#fff;min-width:78px;font-family:var(--font-display);font-weight:var(--font-bold);text-align:center;letter-spacing:.04em;padding:8px 12px}.quiz-timer.urgent{background:#b42318}.quiz-question-list{gap:var(--space-md);margin:var(--space-lg)0;display:grid}.quiz-question{min-width:0;padding:var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-md);margin:0}.quiz-question legend{max-width:100%;color:var(--text-primary);font-family:var(--font-display);font-weight:var(--font-bold);padding:0 6px;line-height:1.5}.quiz-option{margin-top:var(--space-sm);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;align-items:flex-start;gap:10px;padding:10px;display:flex}.quiz-option:hover{background:var(--gray-50)}.quiz-option input{accent-color:var(--accent-brand);margin-top:4px}.quiz-result-card{text-align:center;max-width:640px;margin-inline:auto}.quiz-result-score{margin:var(--space-md)0;color:var(--primary-brand);font-family:var(--font-display);font-size:clamp(2.4rem,8vw,4.5rem);font-weight:var(--font-bold)}.quiz-back-button{margin-bottom:var(--space-md)}.portal-announcement-card .portal-announcement-body{margin:var(--space-md)0;padding:var(--space-md);border-left:3px solid var(--accent-brand);border-radius:var(--radius-md);background:var(--gray-50)}.portal-announcement-body p{margin:0}.portal-announcement-card.is-read{border-color:#00857729}@media (max-width:640px){.portal-content-actions{align-items:stretch}.portal-content-actions>button,.portal-lesson-card .portal-inline-button{text-align:center;width:100%}.quiz-timer{min-width:68px;font-size:var(--text-xs);padding-inline:8px}.quiz-question{padding:var(--space-sm)}}.quiz-builder{gap:var(--space-md);margin-top:var(--space-sm);padding:var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--gray-50);display:grid}.quiz-builder-item{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-md);background:#fff;display:grid}.quiz-builder-item>label,.quiz-builder-options label{color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-semibold);gap:6px;display:grid}.quiz-builder-options{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.submission-review-list{gap:var(--space-sm);max-height:52vh;display:grid;overflow-y:auto}.submission-review-row{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-md);display:flex}.submission-review-row>div{gap:4px;min-width:0;display:grid}.submission-review-row small,.submission-review-row span{overflow-wrap:anywhere;color:var(--text-secondary);font-size:var(--text-xs)}@media (max-width:640px){.quiz-builder-options{grid-template-columns:1fr}.submission-review-row{flex-direction:column;align-items:stretch}.submission-review-row .admin-secondary-button{text-align:center}}.portal-tabs .portal-tab{justify-content:space-between;align-items:center;gap:var(--space-sm);display:inline-flex}.portal-tab-count{border-radius:var(--radius-full);min-height:24px;color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-semibold);white-space:nowrap;background:#00194c14;align-items:center;padding:3px 8px;display:inline-flex}.portal-tab.active .portal-tab-count{color:inherit;background:#fff3}@media (max-width:640px){.portal-tabs .portal-tab{flex-direction:column;flex:1 1 0;align-items:flex-start;gap:4px}.portal-tab-count{font-size:11px}}.student-content-catalog{gap:var(--space-lg);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.student-content-catalog-card{min-width:0;min-height:250px;padding:var(--space-xl);border:1px solid var(--border-light);border-radius:var(--radius-xl);background:var(--bg-primary);color:var(--text-primary);box-shadow:var(--shadow-sm);transition:transform var(--transition-base),box-shadow var(--transition-base),border-color var(--transition-base);flex-direction:column;text-decoration:none;display:flex}.student-content-catalog-card:hover{box-shadow:var(--shadow-lg);border-color:#00194c33;transform:translateY(-3px)}.student-content-catalog-card h2{margin:var(--space-sm)0;font-family:var(--font-display);font-size:clamp(var(--text-lg),2vw,var(--text-2xl))}.student-content-catalog-card .portal-long-text-preview{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.student-content-card-footer{justify-content:space-between;align-items:center;gap:var(--space-sm);padding-top:var(--space-lg);color:var(--text-secondary);font-size:var(--text-xs);margin-top:auto;display:flex}.student-content-card-footer strong{color:var(--primary-brand);font-size:var(--text-sm)}.portal-detail-shell{width:min(100%,920px);margin:0 auto}.portal-back-link{margin-bottom:var(--space-lg);color:var(--primary-brand);font-size:var(--text-sm);font-weight:var(--font-semibold);align-items:center;text-decoration:none;display:inline-flex}.portal-back-link:hover{color:var(--accent-brand)}.portal-detail-header{margin-bottom:var(--space-lg);padding:clamp(var(--space-lg),4vw,var(--space-2xl));border-radius:var(--radius-2xl);background:var(--gradient-primary);color:var(--text-inverse);box-shadow:var(--shadow-lg)}.portal-detail-header .portal-eyebrow{color:#fffc}.portal-detail-header .portal-section-title{margin-bottom:var(--space-md);color:var(--text-inverse)}.portal-detail-meta{gap:var(--space-sm)var(--space-xl);color:#ffffffd1;font-size:var(--text-sm);flex-wrap:wrap;display:flex}.portal-detail-card{gap:var(--space-lg);padding:clamp(var(--space-lg),4vw,var(--space-2xl));border:1px solid var(--border-light);border-radius:var(--radius-2xl);background:var(--bg-primary);box-shadow:var(--shadow-md);display:grid}.portal-detail-reading{gap:var(--space-md);display:grid}.portal-detail-prose{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-base);line-height:1.85}.portal-detail-resource,.portal-assignment-notice{padding:var(--space-md);border-radius:var(--radius-md);background:var(--gray-50);color:var(--text-secondary);gap:5px;display:grid}.portal-detail-resource a{color:var(--primary-brand);font-weight:var(--font-semibold);overflow-wrap:anywhere}.portal-detail-submit{gap:var(--space-sm);padding-top:var(--space-sm);display:grid}.portal-detail-footer{justify-content:space-between;align-items:center;gap:var(--space-md);padding-top:var(--space-lg);border-top:1px solid var(--border-light);display:flex}.portal-detail-footer>div{gap:4px;display:grid}.portal-detail-footer small{color:var(--text-secondary);line-height:1.5}.portal-detail-footer .portal-secondary-button,.portal-detail-footer .portal-inline-button{text-align:center;flex:none;text-decoration:none}.quiz-start-panel{gap:var(--space-sm);padding:var(--space-xl);border-radius:var(--radius-lg);background:#0085770f;border:1px solid #00857733;display:grid}.quiz-start-panel strong{font-family:var(--font-display);font-size:var(--text-lg)}.quiz-start-panel span,.quiz-start-panel small{color:var(--text-secondary)}.quiz-detail-timer{padding:var(--space-md);border-radius:var(--radius-md);background:var(--gray-50);color:var(--text-secondary);justify-content:space-between;align-items:center;display:flex}.quiz-detail-timer strong{color:var(--primary-brand);font-family:var(--font-display);font-size:var(--text-xl)}.quiz-detail-timer strong.urgent{color:#b42318}@media (max-width:760px){.student-content-catalog{grid-template-columns:1fr}.student-content-catalog-card{min-height:220px;padding:var(--space-lg)}}@media (max-width:560px){.portal-detail-footer{flex-direction:column;align-items:stretch}.portal-detail-footer .portal-secondary-button,.portal-detail-footer .portal-inline-button{width:100%}.portal-detail-header{border-radius:var(--radius-xl)}}.student-content-catalog-card{gap:0}.student-content-card-top{justify-content:space-between;align-items:center;gap:var(--space-sm);min-height:28px;display:flex}.student-content-card-label{color:var(--primary-brand);font-size:11px;font-weight:var(--font-bold);letter-spacing:.14em}.student-content-card-category{margin-top:var(--space-lg);color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-semibold);display:block}.student-content-catalog-card h2{margin:7px 0 0;line-height:1.2}.student-content-catalog-card .portal-long-text-preview{min-height:5.8em;margin:var(--space-md)0 0;color:var(--text-secondary);line-height:1.65}.student-content-card-meta{justify-content:space-between;align-items:flex-end;gap:var(--space-md);margin-top:var(--space-xl);padding-top:var(--space-md);border-top:1px solid var(--border-light);display:flex}.student-content-card-meta-item{gap:3px;min-width:0;display:grid}.student-content-card-meta-item small{color:var(--text-secondary);font-size:10px;font-weight:var(--font-bold);letter-spacing:.1em;text-transform:uppercase}.student-content-card-meta-item strong{overflow-wrap:anywhere;color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-semibold)}.student-content-card-open{color:var(--primary-brand);font-size:var(--text-sm);font-weight:var(--font-bold);text-align:right;white-space:nowrap}.student-content-catalog-card:hover .student-content-card-open{color:var(--accent-brand)}.portal-detail-shell{max-width:980px}.portal-detail-header{position:relative;overflow:hidden}.portal-detail-header:after{content:"";border:1px solid #ffffff29;border-radius:50%;width:260px;height:260px;position:absolute;bottom:-100px;right:-70px}.portal-detail-header .portal-eyebrow,.portal-detail-header .portal-section-title,.portal-detail-meta{z-index:1;position:relative}.portal-detail-card{gap:var(--space-xl)}.portal-detail-reading{max-width:780px}.portal-detail-prose{color:var(--text-secondary)}.portal-detail-footer{align-items:center}.portal-detail-footer strong{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-base)}.portal-detail-footer .portal-secondary-button,.portal-detail-footer .portal-inline-button{min-width:150px}@media (max-width:760px){.student-content-card-meta{align-items:flex-start;gap:var(--space-sm);flex-direction:column}.student-content-card-open{text-align:left}}.payment-page,.admin-payments-page{gap:var(--space-lg);display:grid}.payment-overview-card{justify-content:space-between;align-items:stretch;gap:var(--space-xl);padding:clamp(var(--space-lg),4vw,var(--space-2xl));border-radius:var(--radius-2xl);background:var(--gradient-primary);color:var(--text-inverse);box-shadow:var(--shadow-lg);display:flex}.payment-overview-copy{min-width:0}.payment-overview-copy h2{margin:var(--space-xs)0;color:var(--text-inverse);font-family:var(--font-display);font-size:clamp(var(--text-xl),3vw,var(--text-3xl))}.payment-overview-copy p{color:#ffffffd1;font-size:var(--text-sm);margin:0;line-height:1.6}.payment-overview-card .portal-card-kicker{color:#ffffffb8}.payment-overview-stats{align-items:center;gap:var(--space-md);grid-template-columns:repeat(3,minmax(84px,1fr));min-width:min(100%,360px);display:grid}.payment-overview-stats div{padding-left:var(--space-md);border-left:1px solid #fff3;gap:4px;display:grid}.payment-overview-stats strong{color:var(--text-inverse);font-family:var(--font-display);font-size:var(--text-2xl)}.payment-overview-stats span{color:#ffffffb8;font-size:var(--text-xs);line-height:1.35}.payment-period-card{justify-content:space-between;align-items:center;gap:var(--space-lg);display:flex}.payment-period-card h2{margin:var(--space-xs)0;font-family:var(--font-display);font-size:var(--text-xl)}.payment-period-card p{max-width:680px;color:var(--text-secondary);font-size:var(--text-sm);margin:0;line-height:1.6}.payment-program-badge{border-radius:var(--radius-full);color:var(--primary-brand-light);font-size:var(--text-xs);font-weight:var(--font-bold);background:#0085771a;flex:none;padding:8px 12px}.payment-month-list,.admin-payment-month-list{gap:var(--space-md);display:grid}.payment-month-card,.admin-payment-month-row{gap:var(--space-md)var(--space-lg);padding:var(--space-xl);border:1px solid var(--gray-100);border-radius:var(--radius-xl);background:var(--bg-primary);box-shadow:var(--shadow-sm);border-left:4px solid #b42318;grid-template-columns:minmax(0,1fr) auto;display:grid}.payment-month-card.is-paid,.admin-payment-month-row.is-paid{border-left-color:#067647}.payment-month-card.is-current,.admin-payment-month-row.is-current{box-shadow:0 0 0 2px #00857724,var(--shadow-md)}.payment-month-heading h2,.admin-payment-month-copy h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-xl);margin:5px 0 4px}.payment-month-heading p,.admin-payment-month-copy p{color:var(--text-secondary);font-size:var(--text-sm);margin:0}.payment-month-number{color:var(--primary-brand);font-size:10px;font-weight:var(--font-bold);letter-spacing:.14em}.payment-status-badge{border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-bold);white-space:nowrap;align-self:start;padding:8px 12px}.payment-status-badge.paid{color:#067647;background:#0676471a}.payment-status-badge.unpaid{color:#b42318;background:#b423181a}.payment-month-note{justify-content:space-between;align-items:center;gap:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--gray-100);color:var(--text-secondary);font-size:var(--text-sm);grid-column:1/-1;line-height:1.5;display:flex}.payment-month-note strong{color:var(--primary-brand-light);font-size:var(--text-xs);white-space:nowrap}.admin-payment-layout{gap:var(--space-lg);grid-template-columns:minmax(220px,.72fr) minmax(0,1.65fr);align-items:start;display:grid}.admin-payment-student-list{top:calc(80px + var(--space-lg));padding:var(--space-lg);position:sticky}.admin-payment-list-heading h2{margin:var(--space-xs)0;font-family:var(--font-display);font-size:var(--text-xl)}.admin-payment-list-heading p{margin:0 0 var(--space-lg);color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5}.admin-payment-student-options{gap:6px;max-height:600px;display:grid;overflow-y:auto}.admin-payment-student-option{width:100%;padding:var(--space-md);border-radius:var(--radius-lg);background:var(--gray-50);color:var(--text-primary);text-align:left;cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),transform var(--transition-base);border:1px solid #0000;gap:4px;display:grid}.admin-payment-student-option:hover,.admin-payment-student-option.active{background:#00857714;border-color:#00194c29}.admin-payment-student-option.active{box-shadow:inset 3px 0 0 var(--primary-brand-light)}.admin-payment-student-option strong{overflow-wrap:anywhere;font-size:var(--text-sm)}.admin-payment-student-option span,.admin-payment-student-option small{overflow-wrap:anywhere;color:var(--text-secondary);font-size:var(--text-xs)}.admin-payment-workspace{gap:var(--space-lg);min-width:0;display:grid}.admin-payment-overview{gap:var(--space-lg);display:grid}.admin-payment-month-row{grid-template-columns:minmax(0,1fr) auto auto;align-items:center}.admin-payment-action{min-height:40px;padding:0 var(--space-md);border:1px solid var(--primary-brand);border-radius:var(--radius-md);background:var(--primary-brand);color:var(--text-inverse);font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;white-space:nowrap;transition:background var(--transition-base),border-color var(--transition-base),transform var(--transition-base)}.admin-payment-action:hover{border-color:var(--primary-brand-light);background:var(--primary-brand-light);transform:translateY(-1px)}.admin-payment-action.is-paid{border-color:var(--gray-300);color:var(--text-secondary);background:0 0}.admin-payment-action:disabled{cursor:wait;opacity:.65;transform:none}@media (max-width:900px){.admin-payment-layout{grid-template-columns:1fr}.admin-payment-student-list{position:static}.admin-payment-student-options{max-height:none;padding-bottom:4px;display:flex;overflow-x:auto}.admin-payment-student-option{min-width:210px}}@media (max-width:640px){.payment-overview-card,.payment-period-card{flex-direction:column;align-items:stretch}.payment-overview-stats{min-width:0}.payment-overview-stats div{padding-left:var(--space-sm)}.payment-overview-stats strong{font-size:var(--text-xl)}.payment-month-card,.admin-payment-month-row{padding:var(--space-lg);grid-template-columns:1fr}.payment-status-badge{justify-self:start}.payment-month-note{flex-direction:column;align-items:flex-start}.admin-payment-month-row .admin-payment-action{width:100%}}
