@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--background);color:var(--text);font-family:Inter,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}input,textarea,select{font:inherit}img{max-width:100%;display:block}ul{list-style:none}#root{min-height:100vh}:root{--primary:#7d8d3d;--primary-dark:#5f6c2d;--primary-hover:#6b7a33;--primary-light:#f1f4e4;--primary-rgb:125,141,61;--secondary:#1e2616;--secondary-light:#2e3a22;--gradient-primary:linear-gradient(135deg,#8a9a46 0%,#66752f 100%);--gradient-surface:linear-gradient(180deg,#fff 0%,#fafbf6 100%);--background:#f6f7f2;--surface:#fff;--surface-raised:#fff;--gray-50:#f9faf7;--gray-100:#f1f3ec;--gray-200:#e6e8df;--gray-300:#d3d6c8;--gray-400:#9ea392;--gray-500:#6e7366;--gray-600:#4f5348;--gray-700:#383c31;--gray-800:#23261f;--text:#1e2616;--text-light:#5e665a;--text-muted:#8e958a;--text-inverse:#fff;--border:#e6e9de;--border-light:#eff1e8;--border-strong:#d3d8c4;--success:#5f6c2d;--success-light:#eef2df;--danger:#e5484d;--danger-light:#fdecec;--warning:#f5a623;--warning-light:#fef6e7;--radius-none:0;--radius-xs:6px;--radius-sm:10px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-2xl:32px;--radius-pill:999px;--shadow-xs:0 1px 2px #1e26160a;--shadow-sm:0 1px 2px #1e26160a, 0 2px 6px #1e26160d;--shadow-md:0 2px 4px #1e26160a, 0 8px 20px #1e261614;--shadow-lg:0 4px 8px #1e26160a, 0 16px 40px #1e26161f;--shadow-glow:0 4px 16px rgba(var(--primary-rgb),.28);--font-sans:"Plus Jakarta Sans","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--fs-xs:12px;--fs-sm:13px;--fs-base:14px;--fs-md:15px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--ls-tight:-.01em;--ls-wide:.02em;--sidebar-width:270px;--sidebar-collapse-width:80px;--header-height:72px;--ease:cubic-bezier(.4,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);--transition:.2s var(--ease);--transition-slow:.35s var(--ease-out)}body{font-family:var(--font-sans);color:var(--text);background:var(--background);-webkit-font-smoothing:antialiased}.btn{border-radius:var(--radius-md);height:44px;font-family:inherit;font-size:var(--fs-base);font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);cursor:pointer;white-space:nowrap;transition:transform var(--transition), box-shadow var(--transition), background var(--transition);border:none;justify-content:center;align-items:center;gap:8px;padding:0 22px;display:inline-flex;position:relative}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb),.3);outline:none}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff24}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-glow), inset 0 1px 0 #ffffff2e;transform:translateY(-1px)}.btn-secondary{background:var(--surface);color:var(--primary-dark);border:1px solid var(--border-strong);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--primary-light);border-color:var(--primary)}.btn-ghost{color:var(--text-light);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--gray-100);color:var(--text)}.btn-danger{background:var(--danger);color:#fff;box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff1f}.btn-danger:hover:not(:disabled){background:#d63c41;transform:translateY(-1px)}.btn-sm{height:36px;font-size:var(--fs-sm);border-radius:var(--radius-sm);padding:0 16px}.btn-lg{height:52px;font-size:var(--fs-md);border-radius:var(--radius-lg);padding:0 30px}.btn-block{width:100%}.btn-pill{border-radius:var(--radius-pill)}.main-layout{--sidebar-width:270px;--sidebar-collapsed-width:80px;--header-height:72px;--page-gutter:24px;background:#f5f7fb;min-height:100vh;display:flex}.main-container{min-width:0;margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-height:100vh;transition:margin-left .25s;display:flex}.main-container.collapsed{margin-left:var(--sidebar-collapsed-width)}.main-header-slot{z-index:40;position:sticky;top:0}.page-content{min-width:0;padding:0 var(--page-gutter) var(--page-gutter);flex:1}@media (width<=768px){.main-layout{--page-gutter:16px;--header-height:64px}.main-container,.main-container.collapsed{margin-left:0}}.sidebar{width:var(--sidebar-width);background:var(--surface);border-right:1px solid var(--border-light);height:100vh;transition:width var(--transition-slow);z-index:1000;box-shadow:var(--shadow-sm);flex-direction:column;display:flex;position:fixed;top:0;left:0;overflow:visible}.sidebar.collapsed{width:var(--sidebar-collapsed-width,var(--sidebar-collapse-width,80px))}.collapse-toggle{top:calc(var(--header-height) / 2);border:1px solid var(--border);background:var(--surface);width:28px;height:28px;color:var(--text-light);cursor:pointer;box-shadow:var(--shadow-sm);z-index:1001;transition:background var(--transition), color var(--transition), box-shadow var(--transition);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;right:-14px;transform:translateY(-50%)}.collapse-toggle:hover{background:var(--gray-100);color:var(--text);box-shadow:var(--shadow-md)}.sidebar-header{height:var(--header-height);padding:0 14px 0 calc((var(--sidebar-collapsed-width,var(--sidebar-collapse-width,80px)) - 36px) / 2);border-bottom:1px solid var(--border-light);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex;overflow:hidden}.logo{cursor:pointer;flex-shrink:0;align-items:center;gap:10px;min-width:0;text-decoration:none;display:flex;overflow:hidden}.logo-image{object-fit:contain;mix-blend-mode:multiply;flex-shrink:0;width:36px;height:36px}.logo-image-wide{width:auto;max-width:120px}.mobile-close{border:1px solid var(--border);border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-light);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;flex-shrink:0;justify-content:center;align-items:center;display:none}.mobile-close:hover{background:var(--gray-100);color:var(--text)}.menu{flex-direction:column;flex:1;gap:4px;padding:16px 12px;display:flex;overflow:hidden auto}.menu-item{border-radius:var(--radius-md);height:48px;color:var(--text-light);transition:background-color var(--transition), color var(--transition), box-shadow var(--transition);font-weight:var(--fw-medium);font-size:var(--fs-base);white-space:nowrap;flex-shrink:0;justify-content:flex-start;align-items:center;gap:16px;padding:0 16px;text-decoration:none;display:flex}.menu-item svg{flex-shrink:0;min-width:22px}.menu-item:hover{background:var(--gray-100);color:var(--text)}.menu-item.active{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-glow);transition:none}.menu-item.active:hover{background:var(--gradient-primary);color:#fff}.sidebar.collapsed .menu-item span,.sidebar.collapsed .logout-btn span,.sidebar.collapsed .profile-info{display:none}.sidebar.collapsed .profile{justify-content:center;padding:16px 0}.sidebar.collapsed .collapse-toggle svg{transform:rotate(180deg)}.profile{border-top:1px solid var(--border-light);cursor:pointer;transition:background var(--transition);flex-shrink:0;align-items:center;gap:12px;padding:16px 18px;text-decoration:none;display:flex}.profile:hover{background:var(--gray-100)}.profile-info{overflow:hidden}.profile-info strong{color:var(--secondary);font-size:var(--fs-base);font-weight:var(--fw-semibold);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.profile-info small{color:var(--text-light);font-size:var(--fs-xs)}.logout-btn{border-radius:var(--radius-md);height:48px;color:var(--text-light);font-weight:var(--fw-medium);font-family:inherit;font-size:var(--fs-base);white-space:nowrap;cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;flex-shrink:0;justify-content:flex-start;align-items:center;gap:16px;margin:0 12px 16px;padding:0 16px;display:flex}.logout-btn svg{flex-shrink:0;min-width:22px}.logout-btn:hover{background:var(--danger-light);color:var(--danger)}.menu-item-disabled{border-radius:var(--radius-md);height:48px;color:var(--text-light);opacity:.55;cursor:not-allowed;-webkit-user-select:none;user-select:none;white-space:nowrap;font-weight:var(--fw-medium);font-size:var(--fs-base);flex-shrink:0;justify-content:flex-start;align-items:center;gap:16px;padding:0 16px;display:flex}.menu-item-disabled svg{flex-shrink:0;min-width:22px}.menu-item-disabled:hover{color:var(--text-light);background:0 0}.menu-badge{background:var(--gray-100);color:var(--text-muted);font-size:9px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);border-radius:999px;margin-left:auto;padding:2px 8px}.sidebar.collapsed .menu-badge{display:none}.menu::-webkit-scrollbar{width:5px}.menu::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}.sidebar-backdrop{display:none}@media (width>=769px){.collapse-toggle{display:flex}}@media (width<=768px){.mobile-close{display:flex}.sidebar-backdrop{z-index:1050;background:#0f182980;display:block;position:fixed;inset:0}.sidebar,.sidebar.collapsed{width:min(280px,80vw);transition:transform var(--transition-slow);z-index:1100;transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0)}.collapse-toggle{display:none}}.user-avatar-el{background:var(--gradient-primary,var(--primary));color:#fff;font-weight:var(--fw-bold);letter-spacing:var(--ls-wide,.02em);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.user-avatar-el img{object-fit:cover;width:100%;height:100%;display:block}.header{width:100%;height:var(--header-height);background:var(--surface);border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;padding:0 30px;display:flex}.header-left{flex-direction:column;min-width:0;display:flex}.header-left-top{align-items:center;gap:12px;display:flex}.header-left h2{font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--secondary);letter-spacing:var(--ls-tight);margin:0;line-height:1.2}.header-left p{color:var(--text-light);font-size:var(--fs-sm);white-space:nowrap;text-overflow:ellipsis;margin-top:3px;overflow:hidden}.mobile-menu-btn{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--gray-50);width:36px;height:36px;color:var(--secondary);cursor:pointer;transition:background var(--transition), color var(--transition);flex-shrink:0;justify-content:center;align-items:center;display:none}.mobile-menu-btn:hover{background:var(--primary-light);color:var(--primary)}.header-right{flex-shrink:0;align-items:center;gap:16px;display:flex}.notification-btn{border-radius:var(--radius-md);background:var(--gray-50);width:44px;height:44px;color:var(--secondary);cursor:pointer;transition:background var(--transition), color var(--transition);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.notification-btn:hover{background:var(--primary-light);color:var(--primary)}.notification-btn:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb), .25);outline:none}.notification-badge{background:var(--danger);color:#fff;width:17px;height:17px;font-size:10px;font-weight:var(--fw-bold);border:2px solid var(--surface);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:6px;right:6px}.header-user{cursor:pointer;align-items:center;gap:12px;text-decoration:none;display:flex}.header-user:focus-visible{outline:none}.header-user:focus-visible .user-avatar{box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff26, 0 0 0 3px rgba(var(--primary-rgb), .25)}.user-avatar{background:var(--gradient-primary);color:#fff;width:42px;height:42px;font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:var(--ls-wide);box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff26;transition:box-shadow var(--transition);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.header-user:hover .user-avatar{box-shadow:var(--shadow-glow), inset 0 1px 0 #ffffff26}.user-details{flex-direction:column;min-width:0;display:flex}.user-details strong{color:var(--secondary);font-size:var(--fs-base);font-weight:var(--fw-semibold);white-space:nowrap;text-overflow:ellipsis;max-width:140px;transition:color var(--transition);overflow:hidden}.header-user:hover .user-details strong{color:var(--primary)}.user-details span{color:var(--text-light);font-size:var(--fs-xs);text-transform:capitalize}@media (width<=768px){.header{padding:0 16px}.mobile-menu-btn{display:flex}.header-left h2{font-size:var(--fs-lg)}.header-left p{display:none}.header-right{gap:10px}.notification-btn{width:38px;height:38px}.user-avatar{width:36px;height:36px;font-size:var(--fs-xs)}.user-details{display:none}}.public-layout{background:var(--background);flex-direction:column;min-height:100vh;display:flex}.public-content{flex:1;width:100%}.home{background:#fff;width:100%;min-height:100vh;padding-top:70px;overflow-x:hidden}.site-logo{text-align:left;max-width:1280px;margin:0 auto;padding:0 20px}.site-logo img{object-fit:contain;mix-blend-mode:multiply;width:200px;height:auto;margin:0;display:block}.hero{grid-template-columns:1.05fr 1fr;align-items:center;gap:60px;max-width:1280px;margin:0 auto;padding:clamp(40px,6vw,64px) 20px clamp(48px,7vw,80px);display:grid;position:relative}.hero:before{content:"";background:radial-gradient(circle, rgba(var(--primary-rgb), .07), transparent 70%);pointer-events:none;z-index:0;width:520px;height:520px;position:absolute;top:-15%;right:-8%}.hero-content{z-index:1;flex-direction:column;align-items:flex-start;display:flex;position:relative}.hero-badge{background:var(--primary-light);color:var(--primary);font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);border-radius:50px;margin-bottom:20px;padding:8px 16px;display:inline-block}.hero h1{letter-spacing:-.02em;color:var(--secondary);margin:0 0 20px;font-size:clamp(2rem,4vw + 1.2rem,3.6rem);font-weight:800;line-height:1.15}.hero p{color:var(--text-light);font-size:var(--fs-md);max-width:46ch;margin:0 0 32px;line-height:1.8}.hero-buttons{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:28px;display:flex}.hero-btn-placeholder{visibility:hidden}.hero-account-btn{align-items:center;gap:8px;display:inline-flex}.hero-buttons .btn-secondary{background:var(--background);border-color:var(--border-strong)}.hero-trust{font-size:var(--fs-sm);color:var(--text-light);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.hero-trust strong{color:var(--secondary);font-weight:var(--fw-semibold)}.hero-trust-dot{color:var(--gray-300)}.hero-image{z-index:1;position:relative}.hero-image img{border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;box-shadow:var(--shadow-lg);display:block}.hero-image-chip{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;gap:2px;padding:14px 20px;display:flex;position:absolute;bottom:-20px;left:-20px}.hero-image-chip-value{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--primary);line-height:1}.hero-image-chip-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted)}@media (prefers-reduced-motion:reduce){.hero-buttons .btn-secondary{transition:none}}@media (width<=1024px){.site-logo{padding-top:28px}.site-logo img{width:150px}.hero{text-align:center;grid-template-columns:1fr;gap:44px}.hero:before{width:420px;height:420px;top:-10%;right:-20%}.hero-content{align-items:center}.hero-image{order:-1}.hero p{max-width:100%}.hero-trust{justify-content:center}}@media (width<=768px){.site-logo{padding-top:24px}.site-logo img{width:135px}.hero{padding:40px 20px 48px}.hero h1{margin:0 0 16px}.hero p{margin:0 0 28px}.hero-image-chip{padding:12px 16px;bottom:16px;left:16px}}@media (width<=480px){.site-logo{padding-top:20px;padding-left:16px;padding-right:16px}.site-logo img{width:120px}.hero{padding:32px 16px 40px}.hero-badge{font-size:var(--fs-xs);padding:6px 14px}.hero-buttons{flex-direction:column;align-items:stretch}.hero-buttons .btn{width:100%}.hero-trust{font-size:var(--fs-xs);gap:6px 10px}.hero-image-chip{padding:10px 14px;bottom:12px;left:12px}.hero-image-chip-value{font-size:var(--fs-lg)}.hero-image-chip-label{font-size:11px}}.dashboard{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.dashboard-hero{min-height:200px;width:calc(100% + var(--page-gutter) * 2);margin:0 calc(var(--page-gutter) * -1);padding:28px var(--page-gutter);background:var(--surface);border:none;border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);align-items:center;gap:20px;display:flex}.dashboard-hero-icon{background:var(--soft,var(--primary-light));width:56px;height:56px;color:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.dashboard-hero-text{flex:1;min-width:0}.dashboard-hero-text h1{font-size:var(--fs-2xl,var(--fs-xl));font-weight:var(--fw-bold);color:var(--text);letter-spacing:var(--ls-tight);margin:0 0 4px;line-height:1.2}.dashboard-hero-text p{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.dashboard-hero-stat{border-left:1px solid var(--border-light,var(--border));flex-direction:column;flex-shrink:0;align-items:flex-end;padding-left:24px;display:flex}.dashboard-error{font-size:var(--fs-sm);color:var(--danger);margin:0}.dashboard-section-heading-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.dashboard-view-all{appearance:none;cursor:pointer;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--primary);background:0 0;border:none;flex-shrink:0;align-items:center;gap:4px;padding:2px 0;display:inline-flex}.dashboard-stats-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.dashboard-stat-card,.dashboard-stat-card:hover{background:var(--surface);border-radius:var(--radius-md,12px);align-items:center;gap:14px;padding:16px 18px;display:flex;border:1px solid var(--border)!important;box-shadow:none!important;transform:none!important}.dashboard-stat-icon{border-radius:var(--radius-md,10px);background:var(--soft,var(--primary-light));width:40px;height:40px;color:var(--primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.dashboard-stat-body{flex-direction:column;min-width:0;display:flex}.dashboard-stat-value{font-size:var(--fs-xl,22px);font-weight:var(--fw-bold);color:var(--text);line-height:1.2}.dashboard-stat-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dashboard-grid{grid-template-columns:2fr 1fr;align-items:start;gap:24px;display:grid}.dashboard-row-list{flex-direction:column;gap:10px;display:flex}.dashboard-course-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,12px);transition:background var(--transition), border-color var(--transition);grid-template-columns:40px 1fr auto;align-items:center;gap:14px;padding:14px;display:grid}.dashboard-course-row:hover{background:var(--gray-50);border-color:var(--border-strong,var(--border))}.dashboard-row-icon{border-radius:var(--radius-md,10px);background:var(--soft,var(--primary-light));width:40px;height:40px;color:var(--primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.dashboard-row-body{flex-direction:column;gap:6px;min-width:0;display:flex}.dashboard-row-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dashboard-row-meta{font-size:var(--fs-xs);color:var(--text-muted)}.dashboard-progress{background:var(--gray-100);border-radius:999px;width:100%;height:6px;overflow:hidden}.dashboard-progress-fill{background:var(--primary);border-radius:999px;height:100%}.dashboard-row-trailing{flex-shrink:0;align-items:center;gap:6px;display:flex}.dashboard-row-percent{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--primary)}.dashboard-row-chevron{color:var(--text-muted)}.dashboard-class-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,12px);transition:background var(--transition), border-color var(--transition);align-items:center;gap:12px;padding:14px;display:flex}.dashboard-class-row:hover{background:var(--gray-50);border-color:var(--border-strong,var(--border))}.dashboard-time-badge{background:var(--soft,var(--primary-light));color:var(--primary);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:4px 10px;display:inline-flex}.dashboard-class-row .dashboard-row-title{flex:1}@media (width<=992px){.dashboard-stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}}@media (width<=760px){.dashboard-hero{padding:24px}.course-section{padding:22px 20px}}@media (width<=640px){.dashboard{gap:16px}.dashboard-hero{flex-direction:column;align-items:flex-start;gap:14px;padding:20px}.dashboard-hero-stat{border-left:none;border-top:1px solid var(--border-light,var(--border));align-items:flex-start;width:100%;padding-top:14px;padding-left:0}.dashboard-hero-text h1{font-size:var(--fs-xl)}.dashboard-stats-grid{grid-template-columns:1fr}.course-section{padding:18px}.dashboard-course-row{grid-template-columns:36px 1fr auto}}@media (prefers-reduced-motion:reduce){.dashboard-course-row,.dashboard-class-row{transition:none}}.page-header{min-height:200px;width:calc(100% + var(--page-gutter) * 2);margin:0 calc(var(--page-gutter) * -1);padding:28px var(--page-gutter);background:var(--surface);border:none;border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);align-items:center;gap:20px;display:flex}.page-header-icon{background:var(--soft,var(--primary-light));width:56px;height:56px;color:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.page-header-media{flex-shrink:0}.page-header-text{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.page-header-text h1{font-size:var(--fs-2xl,var(--fs-xl));font-weight:var(--fw-bold);color:var(--text);letter-spacing:var(--ls-tight);margin:0;line-height:1.2}.page-header-text p{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.page-header-meta{font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px 18px;display:flex}.page-header-trailing{border-left:1px solid var(--border-light,var(--border));flex-direction:column;flex-shrink:0;align-items:flex-end;gap:12px;padding-left:24px;display:flex}.page-header-trailing .stat-value{font-size:var(--fs-2xl,28px);font-weight:var(--fw-bold);color:var(--primary);line-height:1.1}.page-header-trailing .stat-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide);margin-top:2px}@media (width<=760px){.page-header{padding:24px}}@media (width<=640px){.page-header{flex-direction:column;align-items:flex-start;gap:14px;padding:20px}.page-header-trailing{border-left:none;border-top:1px solid var(--border-light,var(--border));align-items:flex-start;width:100%;padding-top:14px;padding-left:0}.page-header-text h1{font-size:var(--fs-xl)}}.ul-auth-page{background:var(--background);min-height:100vh;color:var(--text);justify-content:center;align-items:center;padding:24px;font-family:Inter,Segoe UI,system-ui,sans-serif;display:flex}.ul-auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-md);padding:40px 36px}.ul-auth-header{text-align:center;margin-bottom:24px}.ul-auth-wordmark{color:var(--secondary);margin-bottom:8px;font-size:22px;font-weight:700;display:block}.ul-auth-subtitle{color:var(--text-light);margin:0;font-size:13.5px}.ul-auth-tabs{background:var(--background);border-radius:var(--radius-md);margin-bottom:24px;padding:4px;display:flex}.ul-auth-tab{color:var(--text-light);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;flex:1;padding:10px 0;font-size:13.5px;font-weight:600}.ul-auth-tab.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm)}.ul-auth-form{flex-direction:column;gap:18px;display:flex}.ul-auth-form-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.ul-auth-form-group{flex-direction:column;gap:6px;min-width:0;display:flex}.ul-auth-form-group label{color:var(--text);font-size:12.5px;font-weight:600}.ul-auth-form-group input[type=text],.ul-auth-form-group input[type=email],.ul-auth-form-group input[type=tel],.ul-auth-form-group input[type=password],.ul-auth-password-box{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;height:44px;transition:border-color var(--transition), box-shadow var(--transition)}.ul-auth-form-group input[type=text],.ul-auth-form-group input[type=email],.ul-auth-form-group input[type=tel],.ul-auth-form-group input[type=password]{color:var(--text);padding:0 12px;font-family:inherit;font-size:13.5px}.ul-auth-form-group input::placeholder{color:var(--text-muted)}.ul-auth-form-group input:focus,.ul-auth-password-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);outline:none}.ul-auth-password-box{align-items:center;display:flex}.ul-auth-password-box input{min-width:0;height:100%;color:var(--text);background:0 0;border:none;flex:1;padding:0 0 0 12px;font-family:inherit;font-size:13.5px}.ul-auth-password-box input:focus{outline:none}.ul-auth-visibility-btn{width:40px;height:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.ul-auth-visibility-btn:hover{color:var(--primary)}.ul-auth-options{color:var(--text-light);justify-content:space-between;align-items:center;font-size:12.5px;display:flex}.ul-auth-options label{cursor:pointer;align-items:center;gap:6px;display:flex}.ul-auth-options input[type=checkbox]{width:14px;height:14px;accent-color:var(--primary);cursor:pointer}.ul-auth-options a{color:var(--primary);font-weight:600;text-decoration:none}.ul-auth-options a:hover{color:var(--primary-hover)}.ul-auth-terms{color:var(--text-light);align-items:flex-start;gap:8px;font-size:12.5px;line-height:1.5;display:flex}.ul-auth-terms input{width:14px;height:14px;accent-color:var(--primary);cursor:pointer;flex-shrink:0;margin-top:2px}.ul-auth-terms a{color:var(--primary);font-weight:600;text-decoration:none}.ul-auth-terms a:hover{color:var(--primary-hover)}.ul-auth-btn{border-radius:var(--radius-sm);width:100%;height:46px;color:var(--surface);background:var(--primary);cursor:pointer;transition:background var(--transition), transform var(--transition);border:none;font-size:14px;font-weight:700}.ul-auth-btn:hover{background:var(--primary-hover)}.ul-auth-btn:active{transform:translateY(1px)}.ul-auth-switch{text-align:center;color:var(--text-light);justify-content:center;align-items:center;gap:6px;margin-top:4px;font-size:13px;display:flex}.ul-auth-switch button{color:var(--primary);cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.ul-auth-switch button:hover{color:var(--primary-hover);text-decoration:underline}@media (width<=480px){.ul-auth-card{padding:28px 22px}.ul-auth-form-row{grid-template-columns:1fr}}.ul-auth-error{color:#d92d20;margin:-4px 0 4px;font-size:.85rem}.vr-row{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);width:100%;color:var(--text);transition:background var(--transition), border-color var(--transition), box-shadow var(--transition);align-items:center;gap:12px;padding:8px 12px;text-decoration:none;display:flex}.vr-row:hover{background:var(--gray-50);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.vr-thumb{border-radius:var(--radius-sm);background:var(--secondary);flex-shrink:0;width:84px;height:48px;position:relative;overflow:hidden}.vr-thumb img{object-fit:cover;width:100%;height:100%;display:block}.vr-thumb-fallback{background:var(--secondary);width:100%;height:100%;display:block}.vr-play{color:#fff;background:#00000047;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.vr-title{min-width:0;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.vr-chevron{color:var(--text-muted);flex-shrink:0;display:flex}@media (width<=860px){.vr-thumb{width:64px;height:40px}.vr-title{font-size:var(--fs-xs)}.vr-row{gap:10px;padding:8px 10px}}.form-field{flex-direction:column;gap:8px;display:flex}.form-field label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted)}.form-field-optional{text-transform:none;font-weight:var(--fw-medium);letter-spacing:normal;color:var(--gray-400)}.form-field input[type=text],.form-field textarea{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--text);background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius-md);resize:none;transition:border-color var(--transition), background var(--transition);padding:12px 14px}.form-field textarea{resize:vertical;min-height:90px;line-height:1.5}.form-field input[type=text]::placeholder,.form-field textarea::placeholder{color:var(--gray-400)}.form-field input[type=text]:focus,.form-field textarea:focus{border-color:var(--primary);background:var(--surface);outline:none}.form-field input:disabled,.form-field textarea:disabled{opacity:.6;cursor:not-allowed}.form-dropzone{text-align:center;border:1.5px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--gray-50);color:var(--text-muted);cursor:pointer;transition:border-color var(--transition), background var(--transition), color var(--transition);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px;display:flex;position:relative}.form-dropzone:hover,.form-dropzone.dragging{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.form-dropzone-icon{background:var(--surface);border:1px solid var(--border-strong);width:42px;height:42px;color:var(--text-muted);box-shadow:var(--shadow-xs);transition:color var(--transition), border-color var(--transition);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.form-dropzone:hover .form-dropzone-icon,.form-dropzone.dragging .form-dropzone-icon{border-color:var(--primary);color:var(--primary)}.form-dropzone-text{font-size:var(--fs-sm);color:var(--text-light);line-height:1.4}.form-dropzone-text strong{color:var(--text);font-weight:var(--fw-semibold)}.form-file-chip{border:1px solid var(--border);background:var(--gray-50);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);align-items:center;gap:12px;padding:12px 14px;display:flex}.form-file-icon{border-radius:var(--radius-sm);background:var(--primary-light);width:36px;height:36px;color:var(--primary-dark);flex-shrink:0;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.form-file-meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.form-file-name{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.form-file-size{font-size:var(--fs-xs);color:var(--text-muted)}.form-file-remove{appearance:none;color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;width:26px;height:26px;transition:background var(--transition), color var(--transition);background:0 0;border:none;flex-shrink:0;font-size:18px;line-height:1}.form-file-remove:hover:not(:disabled){background:var(--gray-100);color:var(--danger)}.submission-form-body{flex-direction:column;gap:20px;padding:26px 28px;display:flex;overflow-y:auto}.submission-form-error{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--danger);background:var(--danger-light);border-radius:var(--radius-sm);margin:0;padding:10px 12px}.submission-form-footer{border-top:1px solid var(--border);background:var(--gray-50);border-radius:0 0 var(--radius-xl) var(--radius-xl);justify-content:flex-end;gap:10px;padding:18px 28px;display:flex}.submission-form-spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:13px;height:13px;animation:.7s linear infinite submission-form-spin}@keyframes submission-form-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.submission-form-spinner{animation:none}}@media (width<=520px){.submission-form-body,.submission-form-footer{padding-left:18px;padding-right:18px}.submission-form-footer{border-radius:0;flex-direction:column-reverse}.submission-form-footer .btn{width:100%}}.submission-modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;background:#15223880;justify-content:center;align-items:center;padding:20px;animation:.15s ease-out submission-fade-in;display:flex;position:fixed;inset:0}@keyframes submission-fade-in{0%{opacity:0}to{opacity:1}}.submission-modal{background:var(--gradient-surface);border-radius:var(--radius-xl);width:100%;max-width:560px;box-shadow:var(--shadow-lg), 0 0 0 1px #1522380a;max-height:90vh;animation:submission-rise-in var(--transition-slow);flex-direction:column;display:flex}@keyframes submission-rise-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.submission-modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:24px 28px;display:flex}.submission-modal-header h2{font-size:var(--fs-lg);font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);color:var(--secondary);margin:0}.submission-modal-close{appearance:none;background:var(--gray-100);color:var(--text-light);border-radius:var(--radius-sm);cursor:pointer;width:30px;height:30px;transition:background var(--transition), color var(--transition);border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.submission-modal-close:hover{background:var(--gray-200);color:var(--text)}.submission-modal-close:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb), .25);outline:none}@media (prefers-reduced-motion:reduce){.submission-modal-backdrop,.submission-modal{animation:none}}@media (width<=520px){.submission-modal-header{padding-left:18px;padding-right:18px}}.submission-checking{font-size:var(--fs-xs);color:var(--text-muted)}.submission-block{justify-content:space-between;align-items:center;gap:16px;display:flex}.submission-block-submitted{align-items:flex-start}.submission-block-empty{align-items:center}.submission-summary{flex-direction:column;align-items:flex-start;gap:5px;min-width:0;display:flex}.status-pill{font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:999px;align-items:center;gap:5px;padding:3px 10px;display:inline-flex}.status-submitted{color:var(--primary-dark);background:var(--primary-light)}.status-pending{color:var(--danger);background:var(--danger-light,#dc262614)}.submission-summary-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text)}.submission-summary-desc{font-size:var(--fs-xs);color:var(--text-muted);text-overflow:ellipsis;-webkit-box-orient:vertical;max-width:480px;display:-webkit-box;overflow:hidden}.submission-file-link{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--primary);align-items:center;gap:6px;max-width:100%;text-decoration:none;display:inline-flex}.submission-file-link span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.submission-file-link svg{flex-shrink:0}.submission-file-link:hover{text-decoration:underline}.submission-empty-text{font-size:var(--fs-sm);color:var(--text-muted)}.submission-actions{flex-shrink:0;gap:8px;display:flex}.submission-delete-btn,.submission-reupload-btn,.submission-submit-btn{appearance:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-family:inherit;font-size:var(--fs-xs);font-weight:var(--fw-medium);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition), border-color var(--transition), color var(--transition);white-space:nowrap;padding:7px 14px}.submission-delete-btn:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.submission-reupload-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.submission-submit-btn{border-color:var(--primary);color:#fff;background:var(--primary)}.submission-submit-btn:hover:not(:disabled){opacity:.9}.submission-delete-btn:disabled,.submission-reupload-btn:disabled,.submission-submit-btn:disabled{opacity:.5;cursor:not-allowed}@media (width<=480px){.submission-block{flex-direction:column;align-items:stretch;gap:12px}.submission-summary{align-items:flex-start}.submission-summary-desc{max-width:100%}.submission-actions{width:100%}.submission-delete-btn,.submission-reupload-btn{flex:1;justify-content:center}.submission-submit-btn{width:100%}}.sub-status-badge{font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-2xl);white-space:nowrap;align-items:center;gap:5px;padding:3px 10px;display:inline-flex}.sub-status-badge.is-not-submitted{background:var(--gray-100);color:var(--gray-500)}.sub-status-badge.is-pending{background:var(--primary-light);color:var(--primary-dark)}.sub-status-badge.is-graded{background:var(--success-light);color:var(--success)}.sub-status-feedback{font-size:var(--fs-xs);color:var(--text-light);margin:4px 0 0;line-height:1.5}.toast-stack{z-index:2000;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast-item{border-radius:var(--radius-md,10px);min-width:240px;max-width:360px;box-shadow:var(--shadow-lg,0 8px 24px #1522382e);font-size:var(--fs-sm,13px);font-weight:var(--fw-medium,500);cursor:pointer;pointer-events:auto;align-items:center;gap:10px;padding:12px 16px;animation:.22s ease-out toast-slide-in;display:flex}.toast-success{color:#067a4d;background:#eafff3;border:1px solid #b6efd0}.toast-error{color:#b3261e;background:#fff0f0;border:1px solid #f6c6c2}.toast-icon{flex-shrink:0;display:inline-flex}.toast-message{line-height:1.4}@keyframes toast-slide-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=520px){.toast-stack{bottom:16px;left:16px;right:16px}.toast-item{min-width:0;max-width:none}}@media (width<=480px){.task-card{padding:16px 18px}.task-card:before{display:none}}.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);transition:box-shadow var(--transition), border-color var(--transition);padding:18px 20px 18px 22px;position:relative}.task-card:before{content:"";background:var(--secondary);opacity:.55;border-radius:0 3px 3px 0;width:3px;position:absolute;top:14px;bottom:14px;left:0}.task-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.task-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.task-card-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text);margin:0 0 8px;line-height:1.3}.task-card-badge{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-light);background:var(--gray-100);border-radius:999px;flex-shrink:0;padding:3px 10px}.task-card-brief{font-size:var(--fs-sm);color:var(--text-light);margin:0 0 10px;line-height:1.55}.task-card-meta-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.task-card-due{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.task-card-due.overdue{color:var(--danger)}.task-card-feedback{font-size:var(--fs-xs);color:var(--text-light);background:var(--gray-50);border-radius:var(--radius-sm);margin:8px 0 0;padding:8px 10px;line-height:1.55}.task-card-footer{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.task-card-locked{background:var(--gray-50);border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-light);align-items:center;gap:10px;padding:10px 12px;display:flex}.task-card-locked svg{color:var(--text-muted);flex-shrink:0}.task-card-locked-info{flex-direction:column;gap:2px;min-width:0;display:flex}.task-card-locked-info a{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--primary);text-overflow:ellipsis;white-space:nowrap;text-decoration:none;overflow:hidden}.task-card-locked-info a:hover{text-decoration:underline}.task-card-locked-info span{font-size:var(--fs-xs);color:var(--text-muted)}@media (width<=480px){.task-card{padding:16px 18px}.task-card:before{display:none}}.course-detail{font-family:var(--font-sans);color:var(--text);padding-top:var(--page-gutter)}.course-detail-state{text-align:center;color:var(--text-light);font-size:var(--fs-md);padding:3rem 1.5rem}.course-detail .page-header{margin-top:calc(-1 * var(--page-gutter))}.course-hero-media{border-radius:var(--radius-md);background:var(--gray-100);width:96px;height:96px;overflow:hidden}.course-hero-media img{object-fit:cover;width:100%;height:100%;display:block}.course-detail .page-header-text h1{font-size:var(--fs-2xl);color:var(--secondary);line-height:1.22}.course-detail .page-header-text p{font-size:var(--fs-md);color:var(--text-light);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.55;display:-webkit-box;overflow:hidden}.course-stats-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.course-stat{font-size:var(--fs-sm);color:var(--text-light)}.course-stat strong{color:var(--text);font-weight:var(--fw-semibold)}.course-stat-dot{color:var(--gray-300);font-size:var(--fs-sm)}.course-fee-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.course-price-chip{font-size:var(--fs-md);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:#fff;background:var(--primary);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);padding:6px 16px}.course-tabs{border-bottom:1px solid var(--border);scrollbar-width:none;align-items:stretch;gap:4px;display:flex;overflow-x:auto}.course-tabs::-webkit-scrollbar{display:none}.course-tab{appearance:none;cursor:pointer;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);white-space:nowrap;transition:color var(--transition);background:0 0;border:none;align-items:center;gap:8px;margin-right:28px;padding:14px 6px;display:inline-flex;position:relative}.course-tab:after{content:"";background:var(--primary);transform-origin:50%;height:2px;transition:transform var(--transition);border-radius:2px 2px 0 0;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.course-tab:hover{color:var(--text)}.course-tab.active{color:var(--primary)}.course-tab.active:after{transform:scaleX(1)}.course-tab:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb), .25);border-radius:var(--radius-sm);outline:none}.course-tab-icon{color:var(--text-muted);transition:color var(--transition)}.course-tab:hover .course-tab-icon{color:var(--text-light)}.course-tab.active .course-tab-icon{color:var(--primary)}.course-tab-count{font-size:11px;font-weight:var(--fw-semibold);color:var(--text-muted);background:var(--gray-100);min-width:19px;height:19px;transition:color var(--transition), background var(--transition);border-radius:999px;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.course-tab.active .course-tab-count{color:#fff;background:var(--primary)}.course-tab-panel{padding-top:24px}.tab-error{color:var(--danger);font-size:var(--fs-base)}.tab-empty,.tab-note{color:var(--text-muted);font-size:var(--fs-base)}.tab-note{margin:0 0 14px}.tab-empty{background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);text-align:center;padding:2.5rem}.tab-section-heading{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide);border-top:1px solid var(--border-light);margin:20px 0 2px;padding-top:16px}.tab-section-heading:first-child{border-top:none;margin-top:0;padding-top:0}.curriculum{flex-direction:column;gap:8px;max-width:52rem;display:flex}.lesson-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);transition:box-shadow var(--transition), border-color var(--transition);overflow:hidden}.lesson-row.open{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.lesson-row-header{appearance:none;cursor:pointer;text-align:left;width:100%;color:var(--text);transition:background var(--transition);background:0 0;border:none;grid-template-columns:1.75rem 1fr auto;align-items:center;gap:12px;padding:10px 14px;font-family:inherit;display:grid}.lesson-row-header:hover{background:var(--gray-50)}.lesson-row-header:focus-visible{box-shadow:inset 0 0 0 2px rgba(var(--primary-rgb), .3);outline:none}.lesson-index{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--primary)}.lesson-name-col{flex-direction:column;gap:2px;min-width:0;display:flex}.lesson-title{font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lesson-subtext{font-size:var(--fs-xs);color:var(--text-muted)}.lesson-chevron{color:var(--text-muted);transition:transform var(--transition);flex-shrink:0}.lesson-row.open .lesson-chevron{transform:rotate(180deg)}.lesson-body{border-top:1px solid var(--border-light);flex-direction:column;gap:18px;margin-top:-1px;padding:16px;display:flex}.lesson-video-list{flex-direction:column;gap:8px;display:flex}.lesson-notes{font-size:var(--fs-sm);color:var(--text-light);margin:0;line-height:1.6}.lesson-skeleton-list{flex-direction:column;gap:8px;display:flex}.lesson-skeleton{border-radius:var(--radius-lg);background:linear-gradient(90deg, var(--gray-100) 0%, var(--gray-50) 50%, var(--gray-100) 100%);background-size:200% 100%;height:60px;animation:1.3s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.card-list{flex-direction:column;gap:10px;max-width:52rem;display:flex}@media (width<=860px){.course-detail .page-header{padding:20px var(--page-gutter);flex-direction:column;align-items:stretch;gap:16px}.course-hero-media{width:100%;height:160px}.course-detail .page-header-text h1{font-size:20px}.course-detail .page-header-text p{font-size:var(--fs-base)}.course-detail .page-header-trailing{border-left:none;border-top:1px solid var(--border-light,var(--border));flex-direction:row;justify-content:space-between;align-items:center;width:100%;padding-top:14px;padding-left:0}.course-tab{font-size:var(--fs-xs);margin-right:18px;padding:12px 4px}.lesson-row-header{grid-template-columns:1.4rem 1fr auto;gap:8px;padding:10px 12px}.lesson-body{padding:12px}}@media (prefers-reduced-motion:reduce){.course-tab,.course-tab:after,.course-tab-icon,.course-tab-count,.lesson-chevron,.lesson-skeleton,.lesson-row{transition:none;animation:none}}.my-courses{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.my-courses-hero{min-height:200px;width:calc(100% + var(--page-gutter) * 2);margin:0 calc(var(--page-gutter) * -1);padding:28px var(--page-gutter);background:var(--surface);border:none;border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);align-items:center;gap:20px;display:flex}.my-courses-hero-icon{background:var(--soft,var(--primary-light));width:56px;height:56px;color:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.my-courses-hero-text{flex:1;min-width:0}.my-courses-hero-text h1{font-size:var(--fs-2xl,var(--fs-xl));font-weight:var(--fw-bold);color:var(--text);letter-spacing:var(--ls-tight);margin:0 0 4px;line-height:1.2}.my-courses-hero-text p{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.my-courses-hero-stat{border-left:1px solid var(--border-light,var(--border));flex-direction:column;flex-shrink:0;align-items:flex-end;padding-left:24px;display:flex}.stat-value{font-size:var(--fs-2xl,28px);font-weight:var(--fw-bold);color:var(--primary);line-height:1.1}.stat-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide);margin-top:2px}.course-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,16px);flex-direction:column;gap:20px;width:100%;padding:28px 32px;display:flex}.course-section-heading h2{font-size:var(--fs-md,17px);font-weight:var(--fw-semibold);color:var(--text);margin:0 0 4px}.my-courses-state{text-align:center;color:var(--text-muted);padding:48px 20px}.my-courses-state p{font-size:var(--fs-sm);margin:0 0 16px}.course-list{flex-direction:column;gap:16px;display:flex}.course-card,.course-card:hover,.course-card:active,.course-card:focus{background:var(--surface);border-radius:var(--radius-md,12px);flex-direction:row;align-items:stretch;width:100%;text-decoration:none;display:flex;overflow:hidden;border:1px solid var(--border)!important;box-shadow:none!important;margin:0!important;transition:none!important;top:0!important;transform:scale(1)!important}.course-card-media{background:var(--gray-100);flex-shrink:0;width:280px;position:relative;overflow:hidden}.course-image{object-fit:cover;width:100%;height:100%;display:block}.course-card-body{flex-direction:column;flex:1;justify-content:center;gap:8px;min-width:0;padding:24px 28px;display:flex}.course-card-badge{background:var(--soft,var(--primary-light));color:var(--primary);font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);border-radius:999px;align-self:flex-start;align-items:center;padding:3px 10px;display:inline-flex}.course-card-title{font-size:var(--fs-lg,20px);font-weight:var(--fw-semibold);color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin:0;line-height:1.3;overflow:hidden}.course-card-desc{font-size:var(--fs-sm);color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.course-card-footer{border-top:1px solid var(--border-light,var(--border));justify-content:space-between;align-items:center;gap:12px;margin-top:6px;padding-top:14px;display:flex}.course-card-price{font-size:var(--fs-md,17px);font-weight:var(--fw-bold);color:var(--text)}.course-card-cta{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--primary);flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.course-card-skeleton{pointer-events:none}.skeleton-block{background:var(--gray-100);position:relative;overflow:hidden}.skeleton-line{background:var(--gray-100);border-radius:6px;height:12px;position:relative;overflow:hidden}.skeleton-line-badge{border-radius:999px;width:64px;height:18px}.skeleton-line-title{width:80%;height:16px}.skeleton-line-desc{width:100%}.skeleton-line-desc.short{width:60%}.skeleton-block:after,.skeleton-line:after{content:"";background:linear-gradient(90deg,#0000,#fff9,#0000);animation:1.4s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}@media (width<=760px){.my-courses-hero{padding:24px}.course-section{padding:22px 20px}.course-card-media{width:220px}.course-card-body{padding:20px}}@media (width<=640px){.my-courses{gap:16px}.my-courses-hero{flex-direction:column;align-items:flex-start;gap:14px;padding:20px}.my-courses-hero-stat{border-left:none;border-top:1px solid var(--border-light,var(--border));align-items:flex-start;width:100%;padding-top:14px;padding-left:0}.my-courses-hero-text h1{font-size:var(--fs-xl)}.course-section{padding:18px}.course-list{gap:12px}.course-card{flex-direction:column}.course-card-media{aspect-ratio:16/9;width:100%}.course-card-body{justify-content:flex-start;padding:16px}.course-card-title{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}@media (prefers-reduced-motion:reduce){.skeleton-block:after,.skeleton-line:after{animation:none}}.account-disabled{background:var(--background);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.account-disabled-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:440px;box-shadow:var(--shadow-lg);text-align:center;padding:40px 36px}.account-disabled-icon{background:var(--danger-light);width:64px;height:64px;color:var(--danger);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 24px;display:flex}.account-disabled-icon svg{width:28px;height:28px}.account-disabled-card h1{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--text);letter-spacing:var(--ls-tight);margin:0 0 12px}.account-disabled-card p{font-size:var(--fs-base);font-weight:var(--fw-regular);color:var(--text-light);margin:0 0 28px;line-height:1.6}.account-disabled-card p strong{color:var(--text);font-weight:var(--fw-medium)}.account-disabled-actions{flex-direction:column;gap:10px;display:flex}.account-disabled-card button{border-radius:var(--radius-md);width:100%;height:44px;font-family:inherit;font-size:var(--fs-base);font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);cursor:pointer;white-space:nowrap;transition:transform var(--transition), box-shadow var(--transition), background var(--transition);border:none;justify-content:center;align-items:center;gap:8px;padding:0 20px;display:inline-flex}.account-disabled-card button:active{transform:translateY(1px)}.account-disabled-card button:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb),.25);outline:none}.account-disabled-btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff1f}.account-disabled-btn-primary:hover{box-shadow:var(--shadow-glow), inset 0 1px 0 #ffffff29;transform:translateY(-1px)}.account-disabled-btn-secondary{background:var(--surface);color:var(--primary);border:1px solid var(--border-strong);box-shadow:var(--shadow-xs)}.account-disabled-btn-secondary:hover{background:var(--primary-light);border-color:var(--primary)}.account-disabled-support{border-top:1px solid var(--border-light);font-size:var(--fs-sm);color:var(--text-muted);margin-top:24px;padding-top:20px}.account-disabled-support a{color:var(--primary);font-weight:var(--fw-medium);text-decoration:none}.account-disabled-support a:hover{text-decoration:underline}.ul-404-page{background:var(--surface);justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;inset:0;overflow:hidden}.ul-404-bg-code{font-size:min(48vw,640px);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--primary);opacity:.05;-webkit-user-select:none;user-select:none;pointer-events:none;white-space:nowrap;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-52%)}.ul-404-content{z-index:1;text-align:center;flex-direction:column;align-items:center;width:100%;max-width:560px;padding:24px;display:flex;position:relative}.ul-404-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--primary);background:var(--primary-light);border-radius:var(--radius-sm);margin-bottom:20px;padding:4px 12px;display:inline-flex}.ul-404-title{font-size:clamp(32px,4.5vw,48px);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--secondary);margin:0 0 14px;line-height:1.15}.ul-404-text{font-size:var(--fs-md);color:var(--text-light);max-width:30rem;margin:0 0 36px;line-height:1.6}.ul-404-redirect{flex-direction:column;align-items:center;gap:12px;width:100%;max-width:320px;margin-bottom:36px;display:flex}.ul-404-progress-track{background:var(--gray-100);border-radius:999px;width:100%;height:4px;overflow:hidden}.ul-404-progress-fill{background:var(--gradient-primary);border-radius:999px;height:100%;transition:width 1s linear}.ul-404-redirect-text{font-size:var(--fs-sm);color:var(--text-muted)}.ul-404-redirect-text strong{color:var(--primary);font-weight:var(--fw-semibold)}.ul-404-actions{gap:12px;display:flex}.ul-404-btn{appearance:none;cursor:pointer;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);border-radius:var(--radius-md);transition:background var(--transition), color var(--transition), border-color var(--transition), filter var(--transition);padding:13px 28px}.ul-404-btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-xs);border:none}.ul-404-btn-primary:hover{filter:brightness(.95)}.ul-404-btn-secondary{border:1px solid var(--border);color:var(--text);background:0 0}.ul-404-btn-secondary:hover{background:var(--gray-50)}@media (width<=480px){.ul-404-actions{flex-direction:column;width:100%}.ul-404-btn{width:100%}}@media (prefers-reduced-motion:reduce){.ul-404-progress-fill,.ul-404-btn{transition:none}}.learn-state{text-align:center;color:var(--text-light);font-size:var(--fs-md);padding:3rem 1.5rem}.learn-page{font-family:var(--font-sans);color:var(--text)}.learn-topbar{border-bottom:1px solid var(--border);align-items:center;gap:14px;margin-bottom:20px;padding-bottom:16px;display:flex}.learn-back{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-light);transition:color var(--transition);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.learn-back:hover{color:var(--primary)}.learn-back-icon{transform:rotate(180deg)}.learn-course-title{font-size:var(--fs-sm);color:var(--text-muted);border-left:1px solid var(--border);padding-left:14px}.learn-body{transition:grid-template-columns var(--transition-slow);grid-template-columns:1fr 320px;align-items:start;gap:24px;display:grid}.learn-body.sidebar-collapsed{grid-template-columns:1fr 64px}.learn-sidebar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);flex-direction:column;gap:8px;max-height:calc(100vh - 160px);padding:8px;display:flex;position:sticky;top:88px;overflow:hidden}.learn-sidebar-toggle{appearance:none;cursor:pointer;border-radius:var(--radius-md);width:100%;color:var(--text-muted);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;transition:background var(--transition), color var(--transition);background:0 0;border:none;flex-shrink:0;align-items:center;gap:8px;padding:8px 10px;display:flex}.learn-sidebar-toggle svg{flex-shrink:0}.learn-sidebar-toggle:hover{background:var(--gray-100);color:var(--text)}.learn-sidebar-scroll{flex-direction:column;gap:16px;padding:0 4px 4px;display:flex;overflow:hidden auto}.learn-lesson-group{flex-direction:column;gap:6px;display:flex}.learn-lesson-heading{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--secondary);align-items:center;gap:8px;padding:6px 8px;display:flex}.learn-lesson-index{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--primary)}.learn-video-list{flex-direction:column;gap:2px;display:flex}.learn-video-item{appearance:none;cursor:pointer;text-align:left;border-radius:var(--radius-md);width:100%;font-family:inherit;font-size:var(--fs-sm);color:var(--text-light);transition:background var(--transition), color var(--transition);background:0 0;border:none;align-items:center;gap:10px;padding:8px 10px;display:flex}.learn-video-item:hover{background:var(--gray-50);color:var(--text)}.learn-video-item.active{background:var(--gradient-primary);color:#fff}.learn-video-marker{background:var(--gray-100);width:20px;height:20px;color:var(--text-muted);font-size:11px;font-weight:var(--fw-semibold);transition:background var(--transition), color var(--transition);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.learn-video-item.active .learn-video-marker{color:#fff;background:#ffffff40}.learn-video-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.learn-body.sidebar-collapsed .learn-sidebar-toggle{justify-content:center;padding:8px}.learn-body.sidebar-collapsed .learn-video-item{justify-content:center;padding:8px 0}.learn-body.sidebar-collapsed .learn-lesson-group{gap:4px}.learn-main{flex-direction:column;gap:18px;min-width:0;display:flex}.learn-frame{aspect-ratio:16/9;background:var(--secondary);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-md);position:relative;overflow:hidden}.learn-frame iframe,.learn-frame video{border:none;width:100%;height:100%;display:block}.learn-meta{flex-direction:column;gap:4px;display:flex}.learn-meta-lesson{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--primary)}.learn-video-heading{font-size:var(--fs-xl,var(--fs-lg));font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--secondary);margin:0}.learn-notes{font-size:var(--fs-sm);color:var(--text-light);max-width:52rem;margin:0;line-height:1.65}.learn-nav-row{border-top:1px solid var(--border-light);justify-content:space-between;padding-top:8px;display:flex}.learn-nav-btn{appearance:none;cursor:pointer;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--text);transition:background var(--transition), color var(--transition), border-color var(--transition);align-items:center;gap:8px;padding:10px 18px;display:inline-flex}.learn-nav-btn:hover:not(:disabled){background:var(--gray-50)}.learn-nav-btn:disabled{opacity:.4;cursor:not-allowed}.learn-nav-btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.learn-nav-btn.primary:hover:not(:disabled){background:var(--primary);filter:brightness(.95)}.learn-nav-icon.prev{transform:rotate(180deg)}@media (width<=860px){.learn-body,.learn-body.sidebar-collapsed{grid-template-columns:1fr}.learn-sidebar{max-height:none;position:static}.learn-sidebar-toggle{display:none}.learn-body.sidebar-collapsed .learn-video-item{justify-content:flex-start;padding:8px 10px}.learn-body.sidebar-collapsed .learn-video-title{display:block}.learn-video-heading{font-size:18px}.learn-topbar{flex-wrap:wrap}.learn-course-title{border-left:none;padding-left:0}}@media (prefers-reduced-motion:reduce){.learn-video-item,.learn-nav-btn,.learn-back,.learn-body,.learn-sidebar-toggle{transition:none}}.profile-page{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.profile-loading{text-align:center;color:var(--text-muted);font-size:var(--fs-sm);padding:60px 20px}.profile-hero{min-height:200px;width:calc(100% + var(--page-gutter) * 2);margin:0 calc(var(--page-gutter) * -1);padding:28px var(--page-gutter);background:var(--surface);border:none;border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);align-items:center;gap:20px;display:flex}.profile-avatar-wrap{cursor:pointer;border-radius:50%;flex-shrink:0;width:96px;height:96px;position:relative}.profile-avatar-edit-badge{border:2px solid var(--surface);background:var(--primary);color:#fff;cursor:pointer;width:30px;height:30px;transition:opacity var(--transition), transform var(--transition);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;bottom:-2px;right:-2px}.profile-avatar-edit-badge:hover:not(:disabled){opacity:.9;transform:scale(1.05)}.profile-avatar-edit-badge:disabled{opacity:.6;cursor:not-allowed}.profile-spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite profile-spin}@keyframes profile-spin{to{transform:rotate(360deg)}}.profile-hero-text{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.page-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--primary);text-transform:uppercase;letter-spacing:var(--ls-wide);margin-bottom:-2px;display:block}.profile-name{font-size:var(--fs-2xl,var(--fs-xl));font-weight:var(--fw-bold);color:var(--text);letter-spacing:var(--ls-tight);margin:0;line-height:1.2}.profile-identity-meta{font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px 18px;display:flex}.profile-meta-item{align-items:center;gap:6px;min-width:0;display:inline-flex}.profile-meta-item svg{opacity:.7;flex-shrink:0}.profile-hero-trailing{border-left:1px solid var(--border-light,var(--border));flex-direction:column;flex-shrink:0;align-items:flex-end;gap:12px;padding-left:24px;display:flex}.profile-role-badge{background:var(--soft,var(--primary-light));color:var(--primary);font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);border-radius:999px;align-items:center;padding:3px 10px;display:inline-flex}.profile-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,16px);flex-direction:column;gap:20px;width:100%;padding:28px 32px;display:flex}.profile-card-heading h2{font-size:var(--fs-md,17px);font-weight:var(--fw-semibold);color:var(--text);margin:0 0 4px}.profile-card-heading p{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.profile-form{flex-direction:column;gap:20px;width:100%;display:flex}.profile-field-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;width:100%;display:grid}.profile-field{flex-direction:column;gap:6px;min-width:0;display:flex}.profile-field label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-light)}.profile-field input{border:1px solid var(--border);border-radius:var(--radius-sm,8px);height:42px;font-size:var(--fs-sm);color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);width:100%;padding:0 14px}.profile-field input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #0399941a}.profile-field-locked{border-radius:var(--radius-sm,8px);background:var(--soft,var(--primary-light));height:42px;color:var(--text-muted);font-size:var(--fs-sm);align-items:center;gap:8px;padding:0 14px;display:flex}.profile-field-locked svg{opacity:.6;flex-shrink:0}.profile-view-grid{align-items:stretch}.profile-view-item{background:var(--soft,var(--primary-light));border-radius:var(--radius-sm,8px);align-items:center;gap:12px;min-width:0;padding:14px 16px;display:flex}.profile-row-icon{background:var(--surface);width:30px;height:30px;color:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.profile-row-text{flex-direction:column;gap:3px;min-width:0;display:flex}.profile-row-label{font-size:var(--fs-xs);color:var(--text-muted)}.profile-row-value{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text);overflow-wrap:anywhere}.profile-form-actions{justify-content:flex-end;gap:10px;display:flex}.profile-btn-primary{appearance:none;border:1px solid var(--primary);background:var(--primary);color:#fff;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);border-radius:var(--radius-sm,8px);cursor:pointer;transition:opacity var(--transition);flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:10px 20px;display:inline-flex}.profile-btn-primary:hover:not(:disabled){opacity:.9}.profile-btn-primary:disabled{opacity:.5;cursor:not-allowed}.profile-btn-ghost{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);border-radius:var(--radius-sm,8px);cursor:pointer;transition:border-color var(--transition);padding:10px 20px}.profile-btn-ghost:hover{border-color:var(--border-strong)}.profile-mobile-fab{display:none}.profile-lightbox{z-index:1000;cursor:zoom-out;background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.profile-lightbox-img{object-fit:contain;border-radius:var(--radius-lg,16px);cursor:default;max-width:min(92vw,640px);max-height:86vh}.profile-lightbox-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;transition:background .2s;display:flex;position:absolute;top:20px;right:20px}.profile-lightbox-close:hover{background:#ffffff47}@media (width<=640px){.profile-mobile-fab{z-index:900;justify-content:center;align-items:center;gap:6px;display:inline-flex;position:fixed;bottom:20px;right:20px}}.admin-sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:4px;width:230px;height:100vh;padding:18px 12px;display:flex;position:sticky;top:0}.admin-sidebar-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:6px;padding:4px 8px 16px;display:flex}.admin-sidebar-brand{color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-semibold);align-items:center;gap:8px;text-decoration:none;display:flex}.admin-sidebar-close{appearance:none;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;display:none}.admin-sidebar-nav{flex-direction:column;gap:2px;display:flex}.admin-sidebar-link{border-radius:var(--radius-sm,8px);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);transition:background var(--transition), color var(--transition);align-items:center;gap:10px;padding:9px 10px;text-decoration:none;display:flex}.admin-sidebar-link:hover{background:var(--gray-50);color:var(--text)}.admin-sidebar-link.is-active{background:var(--soft,var(--primary-light));color:var(--primary)}.admin-sidebar-link-disabled{color:var(--text-muted);opacity:.55;cursor:not-allowed}.admin-sidebar-badge{font-size:9px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);color:var(--text-muted);background:var(--gray-100);border-radius:999px;margin-left:auto;padding:2px 6px}@media (width<=900px){.admin-sidebar{z-index:60;width:260px;height:100vh;transition:transform var(--transition);box-shadow:none;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.admin-sidebar.is-open{transform:translate(0);box-shadow:4px 0 24px #0000001f}.admin-sidebar-close{justify-content:center;align-items:center;display:inline-flex}}.admin-layout{background:var(--bg,#fff);min-height:100vh;width:calc(100% + var(--page-gutter,24px) * 2);margin:0 calc(var(--page-gutter,24px) * -1) calc(var(--page-gutter,24px) * -1);align-items:flex-start;display:flex}.admin-layout-content{flex:1;min-width:0;padding:28px 32px 80px}.admin-mobile-toggle{z-index:50;border-radius:var(--radius-sm,8px);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;align-items:center;gap:6px;padding:8px 12px;display:none;position:fixed;top:14px;left:14px}.admin-sidebar-overlay{display:none}@media (width<=900px){.admin-layout{flex-direction:column}.admin-mobile-toggle{display:inline-flex}.admin-sidebar-overlay{z-index:55;background:#0f172a59;display:block;position:fixed;inset:0}.admin-layout-content{width:100%;padding:68px 18px 60px}}.admin-panel{flex-direction:column;gap:24px;width:100%;margin:0 auto;padding:0 0 80px;display:flex}.admin-card-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.admin-card,.admin-card:hover{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,12px);transition:background var(--transition), border-color var(--transition);align-items:flex-start;gap:14px;padding:18px;text-decoration:none;display:flex;position:relative}.admin-card:hover{background:var(--gray-50);border-color:var(--border-strong,var(--border))}.admin-card-disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.admin-card-icon{border-radius:var(--radius-md,10px);background:var(--soft,var(--primary-light));width:40px;height:40px;color:var(--primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.admin-card-body h3{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text);margin:0 0 4px}.admin-card-body p{font-size:var(--fs-xs);color:var(--text-muted);margin:0;line-height:1.5}.admin-card-badge{font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);color:var(--text-muted);background:var(--gray-100);border-radius:999px;padding:3px 8px;position:absolute;top:12px;right:12px}@media (width<=700px){.admin-page-header{flex-direction:column;align-items:stretch}}.admin-users{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.admin-page-header-right{flex-shrink:0;align-items:center;gap:16px;display:flex}.admin-users-total{flex-direction:column;align-items:flex-end;display:flex}.admin-users-total-value{font-size:var(--fs-xl,22px);font-weight:var(--fw-bold);color:var(--text);line-height:1.2}.admin-users-total-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.admin-users-export{position:relative}.admin-users-export-btn{appearance:none;border-radius:var(--radius-md,10px);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;transition:background var(--transition), border-color var(--transition);align-items:center;gap:8px;padding:9px 16px;display:inline-flex}.admin-users-export-btn:hover{background:var(--gray-50);border-color:var(--primary-light)}.admin-users-export-backdrop{z-index:10;position:fixed;inset:0}.admin-users-export-menu{z-index:20;border-radius:var(--radius-md,10px);border:1px solid var(--border);background:var(--surface);flex-direction:column;min-width:200px;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 12px 28px #0f172a1f}.admin-users-export-menu button{appearance:none;border-radius:var(--radius-sm,8px);width:100%;color:var(--text);font-size:var(--fs-sm);text-align:left;cursor:pointer;transition:background var(--transition);background:0 0;border:none;align-items:center;gap:10px;padding:9px 10px;display:flex}.admin-users-export-menu button:hover{background:var(--gray-50)}.course-section-heading{flex-direction:column;gap:18px;display:flex}.course-section-heading h2{margin:0}.course-section-heading p{color:var(--text-muted);margin:4px 0 0}.admin-users-tabs{border-bottom:1px solid var(--border);align-items:center;gap:0;margin-top:8px;display:flex}.admin-users-tab{appearance:none;color:var(--text-muted);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-medium);background:0 0;border:none;align-items:center;gap:8px;padding:14px 20px;transition:color .2s;display:inline-flex;position:relative}.admin-users-tab:hover{color:var(--text)}.admin-users-tab:after{content:"";background:var(--primary);width:100%;height:3px;transition:transform .25s;position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.admin-users-tab.active{color:var(--primary)}.admin-users-tab.active:after{transform:scaleX(1)}.admin-users-tab-count{background:var(--gray-100);min-width:22px;height:22px;color:var(--text-muted);border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}.admin-users-tab.active .admin-users-tab-count{background:var(--primary-light);color:var(--primary)}@media (width<=700px){.admin-users-tabs{white-space:nowrap;scrollbar-width:none;overflow-x:auto}.admin-users-tabs::-webkit-scrollbar{display:none}.admin-users-tab{flex-shrink:0;padding:14px 16px}}.admin-users-error{color:var(--danger);font-size:var(--fs-sm)}.admin-users-table-wrap{border:1px solid var(--border);border-radius:var(--radius-md,10px);width:100%;overflow-x:auto}.admin-users-table{border-collapse:collapse;width:100%;min-width:720px}.admin-users-table thead tr{background:var(--gray-50)}.admin-users-table th{text-align:left;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide);border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 16px}.admin-users-table td{font-size:var(--fs-sm);color:var(--text);border-bottom:1px solid var(--border);vertical-align:middle;padding:12px 16px}.admin-users-table tbody tr:last-child td{border-bottom:none}.admin-users-table tbody tr{background:var(--surface);transition:background var(--transition)}.admin-users-table tbody tr:hover{background:var(--gray-50)}.admin-users-identity{align-items:center;gap:10px;display:flex}.admin-users-avatar{background:var(--primary-light);width:32px;height:32px;color:var(--primary);font-size:12px;font-weight:var(--fw-semibold);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.admin-users-name{font-weight:var(--fw-medium);color:var(--text);white-space:nowrap}.admin-users-muted{color:var(--text-muted);white-space:nowrap}.admin-users-role-badge{width:fit-content;font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:4px 12px;display:inline-flex}.admin-users-role-badge.role-admin{background:var(--danger-light);color:var(--danger)}.admin-users-role-badge.role-tutor{color:#2563eb;background:#3b82f61f}.admin-users-role-badge.role-student{color:#16a34a;background:#22c55e1f}.admin-users-switch{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;display:inline-flex}.admin-users-switch input{opacity:0;width:0;height:0;position:absolute}.admin-users-switch-track{background:var(--gray-200,#d1d5db);width:38px;height:22px;transition:background var(--transition);border-radius:999px;flex-shrink:0;position:relative}.admin-users-switch-knob{width:18px;height:18px;transition:transform var(--transition);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0f172a40}.admin-users-switch input:checked+.admin-users-switch-track{background:#16a34a}.admin-users-switch input:checked+.admin-users-switch-track .admin-users-switch-knob{transform:translate(16px)}.admin-users-switch input:disabled+.admin-users-switch-track{opacity:.5;cursor:not-allowed}.admin-users-switch input:focus-visible+.admin-users-switch-track{outline:2px solid var(--primary);outline-offset:2px}.admin-users-switch-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);white-space:nowrap}.admin-users-switch-label.is-active{color:#16a34a}.admin-users-switch-label.is-inactive{color:var(--danger)}.admin-users-delete-btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:var(--radius-sm,8px);cursor:pointer;width:32px;height:32px;transition:background var(--transition), color var(--transition), border-color var(--transition);justify-content:center;align-items:center;display:flex}.admin-users-delete-btn:hover:not(:disabled){background:var(--danger-light);color:var(--danger);border-color:var(--danger)}.admin-users-delete-btn:disabled{opacity:.5;cursor:not-allowed}.admin-users-empty{text-align:center;color:var(--text-muted);font-size:var(--fs-sm);padding:48px 20px}.admin-users-skeleton{flex-direction:column;gap:8px;display:flex}.admin-users-skeleton-row{border-radius:var(--radius-md,10px);background:linear-gradient(90deg, var(--gray-100) 0%, var(--gray-50) 50%, var(--gray-100) 100%);background-size:200% 100%;height:46px;animation:1.3s ease-in-out infinite shimmer}@media (width<=700px){.admin-page-header{flex-direction:column;align-items:stretch}.admin-page-header-right{justify-content:space-between}.admin-users-total{flex-direction:row;align-items:flex-start;gap:6px}}.admin-course-lessons{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.admin-icon-btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:var(--radius-sm,8px);cursor:pointer;width:30px;height:30px;transition:background var(--transition), color var(--transition), border-color var(--transition);flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.admin-form-row input,.admin-form-row textarea{border-radius:var(--radius-sm,8px);border:1px solid var(--border);background:var(--bg,#fff);font-size:var(--fs-sm);color:var(--text);width:100%;padding:9px 12px;font-family:inherit}.admin-lesson-video-rows{flex-direction:column;gap:8px;display:flex}.admin-lesson-video-row{background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius-sm,8px);align-items:center;gap:8px;padding:10px;display:flex}.admin-lesson-video-row-grid{flex:1;grid-template-columns:2.2fr 1.6fr 110px 90px;gap:8px;display:grid}.admin-lesson-video-row-grid input{border-radius:var(--radius-sm,8px);border:1px solid var(--border);background:var(--surface);font-size:var(--fs-sm);color:var(--text);padding:8px 10px;font-family:inherit}.admin-lesson-video-row-grid input:focus{border-color:var(--primary);outline:none}.admin-video-row-remove{width:30px;height:30px}.admin-add-video-btn{align-self:flex-start;margin-top:2px}.admin-lessons-list{flex-direction:column;gap:10px;display:flex}.admin-lesson-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px);overflow:hidden}.admin-lesson-card-header{justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.admin-lesson-expand-btn{cursor:pointer;color:var(--text);text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:10px;padding:0;display:flex}.admin-lesson-order{font-size:var(--fs-xs);color:var(--text-muted);font-weight:var(--fw-semibold)}.admin-lesson-title{font-size:var(--fs-sm);font-weight:var(--fw-medium)}.admin-lesson-preview-badge{font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--soft,var(--primary-light));color:var(--primary);text-transform:uppercase;border-radius:999px;padding:2px 8px}.admin-lesson-video-count{font-size:var(--fs-xs);color:var(--text-muted);margin-left:auto}.admin-lesson-card-body{border-top:1px solid var(--border);background:var(--gray-50);flex-direction:column;gap:12px;padding:14px;display:flex}.admin-videos-list{flex-direction:column;gap:6px;display:flex}.admin-video-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm,8px);grid-template-columns:40px 1fr 60px auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.admin-video-order{font-size:var(--fs-xs);color:var(--text-muted)}.admin-video-title{font-size:var(--fs-sm);color:var(--text)}.admin-video-duration{text-align:right}.admin-videos-hint{font-size:var(--fs-xs)}@media (width<=700px){.admin-form-grid{grid-template-columns:1fr}.admin-lesson-video-row{flex-direction:column;align-items:stretch}.admin-lesson-video-row-grid{grid-template-columns:1fr}.admin-video-row-remove{align-self:flex-end}.admin-page-header{flex-direction:column;align-items:stretch}}.admin-courses{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.admin-secondary-btn{border-radius:var(--radius-sm,8px);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;transition:background var(--transition);align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.admin-secondary-btn:hover{background:var(--gray-50)}.admin-icon-btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:var(--radius-sm,8px);cursor:pointer;width:30px;height:30px;transition:background var(--transition), color var(--transition), border-color var(--transition);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.admin-icon-btn:hover:not(:disabled){background:var(--gray-50)}.admin-icon-btn-danger:hover:not(:disabled){background:var(--danger-light);color:var(--danger);border-color:var(--danger)}.admin-course-form-section{flex-direction:column;gap:16px;display:flex}.course-section-heading h2{font-size:var(--fs-lg,18px);font-weight:var(--fw-semibold);margin:0}.course-section-heading p{font-size:var(--fs-sm);color:var(--text-muted);margin:2px 0 0}.admin-course-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px);flex-direction:column;gap:14px;padding:18px;display:flex}.admin-form-row{flex-direction:column;gap:6px;display:flex}.admin-form-row label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.admin-form-row input,.admin-form-row textarea{border-radius:var(--radius-sm,8px);border:1px solid var(--border);background:var(--bg,#fff);font-size:var(--fs-sm);color:var(--text);padding:9px 12px;font-family:inherit}.admin-form-row input:focus,.admin-form-row textarea:focus{border-color:var(--primary);outline:none}.admin-form-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.admin-form-checkbox-row{flex-direction:row;justify-content:space-between;align-items:center}.admin-form-checkbox-row input{width:18px;height:18px}.admin-form-actions{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.admin-back-link{font-size:var(--fs-sm);color:var(--text-muted);align-items:center;gap:6px;width:fit-content;text-decoration:none;display:inline-flex}.admin-back-link:hover{color:var(--text)}.admin-courses-error{color:var(--danger);font-size:var(--fs-sm)}.admin-courses-table{flex-direction:column;gap:2px;display:flex}.admin-courses-table-head,.admin-courses-row{grid-template-columns:2fr 1fr 1fr 110px;align-items:center;gap:12px;padding:12px 14px;display:grid}.admin-courses-table-head{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.admin-courses-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px)}.admin-courses-row:hover{background:var(--gray-50)}.admin-courses-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text)}.admin-courses-muted{font-size:var(--fs-sm);color:var(--text-muted)}.admin-courses-status{width:fit-content;font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide);border-radius:999px;padding:3px 10px;display:inline-flex}.admin-courses-status.is-published{background:var(--soft,var(--primary-light));color:var(--primary)}.admin-courses-status.is-draft{background:var(--gray-100);color:var(--text-muted)}.admin-courses-actions{justify-content:flex-end;gap:6px;display:flex}.admin-courses-skeleton{flex-direction:column;gap:8px;display:flex}.admin-courses-skeleton-row{border-radius:var(--radius-md,10px);background:linear-gradient(90deg, var(--gray-100) 0%, var(--gray-50) 50%, var(--gray-100) 100%);background-size:200% 100%;height:46px;animation:1.3s ease-in-out infinite shimmer}.admin-videos-empty{font-size:var(--fs-sm);color:var(--text-muted);margin:0}@media (width<=700px){.admin-courses-table-head{display:none}.admin-courses-row{grid-template-columns:1fr;gap:4px}.admin-form-grid{grid-template-columns:1fr}.admin-page-header{flex-direction:column;align-items:stretch}}.subs-page{z-index:1000;background:var(--surface);flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.subs-page-header{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;padding:20px clamp(20px,4vw,48px) 0}.subs-page-header-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.subs-page-heading{flex-direction:column;gap:2px;display:flex}.subs-page-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.subs-page-heading h1{font-size:var(--fs-xl,22px);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--text);margin:0}.subs-page-maxscore{font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--text-muted)}.subs-page-close{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:38px;height:38px;color:var(--text-muted);cursor:pointer;transition:background var(--transition), color var(--transition), border-color var(--transition);justify-content:center;align-items:center;display:inline-flex}.subs-page-close:hover{background:var(--gray-100);color:var(--text);border-color:var(--border-strong)}.subs-page-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;display:flex}.subs-filter-tabs{background:var(--gray-50);border:1px solid var(--border-light);border-radius:var(--radius-lg,12px);gap:4px;width:fit-content;padding:4px;display:flex}.subs-filter-tab{appearance:none;border-radius:var(--radius-md,8px);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);white-space:nowrap;cursor:pointer;transition:background var(--transition), color var(--transition), box-shadow var(--transition);background:0 0;border:none;align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.subs-filter-tab:hover:not(.active){color:var(--text);background:var(--gray-100)}.subs-filter-tab.active{background:var(--surface);color:var(--primary);font-weight:var(--fw-semibold);box-shadow:var(--shadow-xs)}.subs-filter-count{font-size:11px;font-weight:var(--fw-semibold);color:var(--text-muted);background:var(--gray-100);border-radius:999px;justify-content:center;align-items:center;min-width:19px;height:19px;padding:0 5px;display:inline-flex}.subs-filter-tab.active .subs-filter-count{color:#fff;background:var(--primary)}.subs-search{align-items:center;min-width:260px;display:flex;position:relative}.subs-search-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:12px}.subs-search input{border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;font-size:var(--fs-sm);font-family:var(--font-sans);color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);padding:9px 12px 9px 34px}.subs-search input:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb), .15);outline:none}.subs-page-body{flex:1;padding:24px clamp(20px,4vw,48px) 60px;overflow-y:auto}.subs-status{color:var(--text-muted);font-size:var(--fs-base);text-align:center;padding:60px 0}.subs-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;max-width:1400px;display:grid}.subs-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);flex-direction:column;padding:18px;display:flex}.subs-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-xs)}.subs-card.is-graded{border-left:3px solid var(--success)}.subs-card.is-pending{border-left:3px solid var(--gray-300)}.subs-card-top{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:6px;display:flex}.subs-card-who{flex-direction:column;gap:2px;min-width:0;display:flex}.subs-card-who strong{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text)}.subs-card-who span{font-size:var(--fs-xs);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subs-status-pill{font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-2xl);white-space:nowrap;flex-shrink:0;padding:3px 10px}.subs-status-pill.is-graded{background:var(--success-light);color:var(--success)}.subs-status-pill.is-pending{background:var(--gray-100);color:var(--gray-500)}.subs-card-title{font-weight:var(--fw-semibold);font-size:var(--fs-base);color:var(--text);margin:6px 0 2px}.subs-card-desc{font-size:var(--fs-sm);color:var(--text-light);margin:0 0 10px}.subs-card-file{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--primary);align-items:center;gap:6px;margin-bottom:14px;text-decoration:none;display:inline-flex}.subs-card-file:hover{color:var(--primary-hover);text-decoration:underline}.subs-card-graded-summary{border-top:1px dashed var(--border);flex-direction:column;gap:4px;margin-top:auto;padding-top:12px;display:flex}.subs-card-graded-score{width:fit-content;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--success);background:var(--success-light);border-radius:var(--radius-2xl);align-items:center;gap:6px;padding:3px 12px;display:inline-flex}.subs-card-graded-feedback{font-size:var(--fs-sm);color:var(--text-light);margin:2px 0 0;line-height:1.5}.subs-card-grade{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.subs-card-grade input[type=number],.subs-card-grade input[type=text]{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--fs-sm);font-family:var(--font-sans);color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);padding:8px 10px}.subs-card-grade input[type=number]{width:76px}.subs-card-grade input[type=text]{flex:1;min-width:120px}.subs-card-grade input:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb), .15);outline:none}.subs-card-score-field{flex-direction:column;gap:4px;display:flex}.subs-card-grade input[type=number].has-error{border-color:var(--danger)}.subs-card-grade input[type=number].has-error:focus-visible{box-shadow:0 0 0 3px rgba(var(--danger-rgb,220, 38, 38), .15)}.subs-card-score-error{font-size:11px;font-weight:var(--fw-medium);color:var(--danger);white-space:nowrap;align-items:center;gap:3px;display:inline-flex}@media (width<=640px){.subs-page-controls{flex-direction:column;align-items:stretch}.subs-search{min-width:0}.subs-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.subs-filter-tab,.subs-page-close,.subs-card,.subs-search input,.subs-card-grade input{transition:none}}.admin-assignments{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}@media (width<=700px){.admin-page-header{flex-direction:column;align-items:stretch}}.admin-modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;background:#15223873;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.admin-modal{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);flex-direction:column;gap:6px;width:100%;max-width:440px;max-height:90vh;padding:28px;display:flex;overflow-y:auto}.admin-modal-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.admin-modal-header h2{font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--text);margin:0}.admin-modal-close{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.admin-modal-close:hover{background:var(--gray-100);color:var(--text)}.admin-modal label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-light);margin-top:10px}.admin-modal input[type=text],.admin-modal input[type=number],.admin-modal input[type=date],.admin-modal textarea{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--fs-base);font-family:var(--font-sans);color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);padding:9px 12px}.admin-modal input[type=text]:focus-visible,.admin-modal input[type=number]:focus-visible,.admin-modal input[type=date]:focus-visible,.admin-modal textarea:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb), .15);outline:none}.admin-modal input:disabled,.admin-modal textarea:disabled{background:var(--gray-50);opacity:.7;cursor:not-allowed}.admin-modal textarea{resize:vertical;min-height:76px}.admin-modal-checkbox{font-weight:var(--fw-medium);color:var(--text);cursor:pointer;align-items:center;gap:8px;margin-top:14px;display:flex}.admin-modal-checkbox input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.admin-modal-error{color:var(--danger);font-size:var(--fs-sm);margin:8px 0 0}.admin-modal-footer{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.admin-projects{flex-direction:column;gap:24px;width:100%;max-width:1400px;margin:0 auto;padding:0 0 80px;display:flex}.admin-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.admin-page-header h1{font-size:var(--fs-xl,22px);font-weight:var(--fw-semibold);color:var(--text);margin:0 0 4px}.admin-page-header p{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.admin-primary-btn{border-radius:var(--radius-sm,8px);background:var(--primary);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-semibold);cursor:pointer;transition:opacity var(--transition);border:none;align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.admin-primary-btn:hover:not(:disabled){opacity:.9}.admin-primary-btn:disabled{opacity:.6;cursor:not-allowed}.admin-page-empty{color:var(--text-muted);font-size:var(--fs-sm);text-align:center;padding:32px 0}.admin-course-tabs-wrap{flex-direction:column;gap:8px;display:flex}.admin-course-tabs-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.admin-course-tabs{background:var(--gray-50);border:1px solid var(--border-light);border-radius:var(--radius-lg,12px);gap:4px;width:fit-content;max-width:100%;padding:4px;display:flex;overflow-x:auto}.admin-course-tab{appearance:none;border-radius:var(--radius-md,8px);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);white-space:nowrap;cursor:pointer;transition:background var(--transition), color var(--transition), box-shadow var(--transition);background:0 0;border:none;padding:8px 16px}.admin-course-tab:hover:not(.is-active){color:var(--text);background:var(--gray-100)}.admin-course-tab.is-active{background:var(--surface);color:var(--primary);font-weight:var(--fw-semibold);box-shadow:var(--shadow-xs)}.admin-course-tab:disabled{opacity:.5;cursor:not-allowed}.admin-table{border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-sm);overflow:hidden}.admin-table thead{background:var(--gray-50)}.admin-table th,.admin-table td{text-align:left;font-size:var(--fs-base);border-bottom:1px solid var(--border-light);padding:14px 18px}.admin-table th{font-weight:var(--fw-semibold);color:var(--text-light);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wide)}.admin-table tbody tr{transition:background var(--transition)}.admin-table tbody tr:hover{background:var(--gray-50)}.admin-table tbody tr:last-child td{border-bottom:none}.admin-tag-list{flex-wrap:wrap;gap:6px;display:flex}.admin-tag{background:var(--primary-light);color:var(--primary-dark);font-size:var(--fs-xs);font-weight:var(--fw-medium);border-radius:var(--radius-2xl);padding:3px 10px}.admin-status-pill{border-radius:var(--radius-2xl);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);padding:3px 12px;display:inline-block}.admin-status-pill.is-published{background:var(--success-light);color:var(--success)}.admin-status-pill.is-draft{background:var(--gray-100);color:var(--gray-500)}.admin-table-actions{flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.admin-submissions-btn{border:1px solid var(--border);border-radius:var(--radius-md,8px);background:var(--surface);color:var(--text-light);font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;cursor:pointer;transition:background var(--transition), color var(--transition), border-color var(--transition);align-items:center;gap:6px;padding:7px 12px;display:inline-flex}.admin-submissions-btn:hover:not(:disabled){background:var(--primary-light);color:var(--primary-dark);border-color:var(--primary)}.admin-submissions-btn:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb), .2);outline:none}.admin-actions-divider{background:var(--border);width:1px;height:20px;margin:0 2px}.admin-icon-btn{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-light);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.admin-icon-btn:hover:not(:disabled){background:var(--gray-100);color:var(--text)}.admin-icon-btn:focus-visible{box-shadow:0 0 0 3px rgba(var(--primary-rgb), .2);outline:none}.admin-icon-btn.is-danger:hover:not(:disabled){background:var(--danger-light);color:var(--danger)}.admin-icon-btn:disabled{opacity:.4;cursor:not-allowed}@media (width<=700px){.admin-page-header{flex-direction:column;align-items:stretch}}
