@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{box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;min-width:0;color:var(--text);transition:background var(--transition), border-color var(--transition), box-shadow var(--transition);flex-direction:row;align-items:center;gap:12px;padding:10px 12px;text-decoration:none;display:flex}.vr-row:hover{background:var(--primary-light);border-color:var(--border-strong);box-shadow:var(--shadow-xs)}.vr-row:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.vr-thumb{isolation:isolate;border-radius:var(--radius-sm);background:var(--gray-100);flex:0 0 104px;width:104px;height:60px;display:block;position:relative;overflow:hidden}.vr-thumb img{object-fit:cover;width:100%;height:100%;display:block}.vr-thumb-fallback{background:var(--primary-light);width:100%;height:100%;display:block}.vr-play{z-index:1;color:#fff;background:#1e26161f;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.vr-play svg{box-sizing:border-box;color:#fff;background:#1e2616b8;border-radius:50%;flex:0 0 32px;width:32px;height:32px;padding:8px;display:block}.vr-thumb-locked img{filter:brightness(.65)}.vr-lock{z-index:2;box-sizing:border-box;color:#fff;-webkit-backdrop-filter:blur(3px);pointer-events:none;background:#1e26167a;border:1px solid #fff6;border-radius:8px;justify-content:center;align-items:center;width:27px;height:27px;padding:0;display:flex;position:absolute;top:5px;right:5px}.vr-lock svg{flex:0 0 16px;width:16px;height:16px;margin:0;display:block}.vr-title{min-width:0;color:var(--text);font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;text-overflow:ellipsis;flex:1;align-self:center;margin:0;padding:0;line-height:1.4;display:block;overflow:hidden}.vr-chevron{width:24px;height:28px;color:var(--text-muted);flex:0 0 24px;justify-content:center;align-items:center;margin:0;padding:0;display:flex}.vr-chevron svg{flex-shrink:0;display:block}.vr-row:hover .vr-chevron{color:var(--primary-dark)}@media (width<=860px){.vr-row{gap:10px;padding:9px 10px}.vr-thumb{flex-basis:84px;width:84px;height:50px}.vr-title{font-size:var(--fs-xs)}.vr-lock{border-radius:6px;width:23px;height:23px;top:4px;right:4px}.vr-lock svg{flex-basis:14px;width:14px;height:14px}.vr-play svg{flex-basis:28px;width:28px;height:28px;padding:7px}.vr-chevron{flex-basis:20px;width:20px}}@media (prefers-reduced-motion:reduce){.vr-row{transition:none}}.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}}.tech-pills{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.tech-pill{border-radius:var(--radius-pill);background:var(--primary);color:var(--text-inverse);font-size:var(--fs-sm);font-weight:var(--fw-semibold);white-space:nowrap;cursor:default;transition:transform var(--transition), background var(--transition), box-shadow var(--transition);align-items:center;gap:8px;padding:7px 14px;line-height:1.2;display:inline-flex}.tech-pill:hover{background:var(--primary-hover);box-shadow:var(--shadow-glow);transform:translateY(-2px)}.tech-pill-icon{flex-shrink:0;width:16px;height:16px}.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{gap:10px}.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-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:24px;display:grid}.curriculum{flex-direction:column;gap:12px;min-width:0;display:flex}.lesson-card{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-card.open{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.lesson-card.is-locked .lesson-title,.lesson-card.is-locked .lesson-index{opacity:.7}.lesson-card-main{grid-template-columns:1.75rem minmax(0,1fr) auto;align-items:center;gap:14px;padding:16px 18px;display:grid}.lesson-index{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--primary)}.lesson-card-info{flex-direction:column;gap:6px;min-width:0;display:flex}.lesson-title{font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--text);margin:0;line-height:1.35}.lesson-card-meta{flex-wrap:wrap;align-items:center;gap:6px 14px;display:flex}.lesson-subtext{font-size:var(--fs-xs);color:var(--text-muted)}.lesson-date{display:inline-flex}.lesson-lock-note{font-size:var(--fs-xs);color:#8a5c08;align-items:center;gap:6px;display:inline-flex}.lesson-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.lesson-btn{border-radius:var(--radius-md,10px);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);white-space:nowrap;cursor:pointer;transition:background var(--transition), border-color var(--transition), color var(--transition);border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:9px 16px;text-decoration:none;display:inline-flex}.lesson-btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.lesson-btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.lesson-btn-outline{background:var(--surface);border-color:var(--primary);color:var(--primary-dark)}.lesson-btn-outline:hover:not(:disabled){background:var(--primary-light)}.lesson-btn:disabled{opacity:.5;cursor:not-allowed}.lesson-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.lesson-toggle{appearance:none;border:none;border-top:1px solid var(--border-light);background:var(--gray-50);width:100%;color:var(--text-light);cursor:pointer;font-family:inherit;font-size:var(--fs-xs);font-weight:var(--fw-medium);justify-content:center;align-items:center;gap:6px;padding:9px 14px;display:flex}.lesson-toggle:hover{color:var(--text)}.lesson-toggle:focus-visible{box-shadow:inset 0 0 0 2px rgba(var(--primary-rgb), .3);outline:none}.lesson-chevron{transition:transform var(--transition);flex-shrink:0}.lesson-card.open .lesson-chevron{transform:rotate(180deg)}.lesson-body{border-top:1px solid var(--border-light);flex-direction:column;gap:18px;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}.curriculum-layout.has-stack{grid-template-columns:minmax(0,1fr) 20rem}.course-tech-side{top:calc(var(--header-height) + 24px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:20px;position:sticky}.course-tech-head{border-bottom:1px solid var(--border-light,var(--border));justify-content:space-between;align-items:center;gap:10px;margin:0 0 16px;padding-bottom:14px;display:flex}.course-tech-title{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--secondary);letter-spacing:var(--ls-tight);margin:0;line-height:1.3}.course-tech-count{border-radius:var(--radius-pill);background:var(--primary-light);min-width:26px;color:var(--primary);font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-align:center;flex-shrink:0;padding:2px 9px}.course-tech-side .tech-pills{gap:8px}.course-tech-side .tech-pill{gap:6px;padding:6px 12px;font-size:13px}.course-tech-side .tech-pill-icon{width:15px;height:15px}.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){.curriculum-layout.has-stack{grid-template-columns:minmax(0,1fr)}.course-tech-side{order:-1;position:static}.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-card-main{grid-template-columns:1.4rem minmax(0,1fr);gap:10px 8px;padding:14px 12px}.lesson-card-actions{grid-column:1/-1;justify-content:stretch}.lesson-card-actions .lesson-btn{flex:1}.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-card{transition:none;animation:none}}.lesson-quiz-chip{width:fit-content;font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--primary-light);color:var(--primary-dark);border-radius:999px;padding:2px 8px;display:inline-block}.lesson-quiz-chip.is-passed{background:var(--success-light);color:var(--success)}.enroll-btn{letter-spacing:.2px;cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:10px;padding:12px 22px;font-size:15px;font-weight:600;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,transform .2s;display:inline-flex}.enroll-btn--dark{color:#fff;background:#17191f;border-color:#17191f;box-shadow:0 3px 8px #00000014}.enroll-btn--dark:hover:not(:disabled){background:#30343d;border-color:#30343d;box-shadow:0 6px 14px #00000024}.enroll-btn--outline{color:#17191f;background:#fff;border-color:#d1d5db}.enroll-btn--outline:hover:not(:disabled){background:#f5f6f8;border-color:#17191f;box-shadow:0 4px 10px #0000000f}.enroll-btn--blue{color:#294fc4;background:#e8eeff;border-color:#e8eeff}.enroll-btn--blue:hover:not(:disabled){background:#d8e2ff;border-color:#d8e2ff;box-shadow:0 4px 12px #294fc41f}.enroll-btn:hover:not(:disabled){transform:translateY(-2px)}.enroll-btn:active:not(:disabled){transform:translateY(0)}.enroll-btn:focus-visible{outline-offset:3px;outline:3px solid #a5b4fc}.enroll-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.enroll-btn__arrow{transition:transform .2s}.enroll-btn:hover:not(:disabled) .enroll-btn__arrow{transform:translate(2px,-2px)}@media (prefers-reduced-motion:reduce){.enroll-btn,.enroll-btn__arrow{transition:none}}.status-badge{color:#166849;white-space:nowrap;background:#e8f6ef;border:1px solid #c5e9d6;border-radius:999px;align-items:center;gap:6px;width:fit-content;padding:6px 10px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.status-badge svg{flex-shrink:0}.status-label{color:#166849;white-space:nowrap;align-items:center;gap:6px;width:fit-content;padding:6px 10px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.status-label svg{flex-shrink:0}.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-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}}.tracked-player{background:#000;border:0;width:100%;height:100%;display:block}.tracked-player iframe{border:0;width:100%;height:100%;display:block}.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}}.learn-lesson-heading.is-locked{opacity:.65}.learn-lesson-lock{color:var(--text-muted);flex-shrink:0;margin-left:auto}.learn-video-item.is-locked{opacity:.5;cursor:not-allowed}.learn-video-item.is-locked:hover{background:0 0}.learn-quiz-item{color:var(--primary-dark);font-weight:var(--fw-semibold);text-decoration:none}.learn-quiz-item.is-passed{color:var(--success)}.learn-locked-note{border-radius:var(--radius-md,10px);background:var(--warning-light);color:#8a5c08;font-size:var(--fs-sm);align-items:center;gap:8px;margin:12px 0 0;padding:10px 14px;display:flex}.learn-quiz-card{border:1px solid var(--primary);background:var(--primary-light);border-radius:var(--radius-lg,14px);align-items:center;gap:14px;margin:18px 0 0;padding:14px 16px;display:flex}.learn-quiz-card.is-passed{border-color:var(--success);background:var(--success-light)}.learn-quiz-icon{background:var(--surface);width:38px;height:38px;color:var(--primary-dark);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.learn-quiz-card.is-passed .learn-quiz-icon{color:var(--success)}.learn-quiz-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.learn-quiz-text strong{font-size:var(--fs-sm);color:var(--text)}.learn-quiz-text span{font-size:var(--fs-xs);color:var(--text-light)}.learn-quiz-btn{border-radius:var(--radius-md,10px);background:var(--primary);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-semibold);white-space:nowrap;padding:9px 16px;text-decoration:none}.learn-quiz-btn:hover{background:var(--primary-hover)}.learn-quiz-card.is-passed .learn-quiz-btn{background:var(--surface);color:var(--success);border:1px solid var(--success)}@media (width<=640px){.learn-quiz-card{flex-wrap:wrap}.learn-quiz-btn{text-align:center;width:100%}}.learn-video-done{color:var(--success);flex-shrink:0;margin-left:auto}.learn-video-percent{font-size:var(--fs-xs);color:var(--text-muted);font-weight:var(--fw-medium);flex-shrink:0;margin-left:auto}.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-header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.json-import{background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius-md,10px);flex-direction:column;gap:10px;margin-bottom:16px;padding:14px;display:flex}.json-import-hint{font-size:var(--fs-sm);color:var(--text-muted);margin:0;line-height:1.5}.json-import-hint code{background:var(--gray-100);border-radius:4px;padding:1px 6px;font-size:12px}.json-import-file-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.json-import-file-name{font-size:var(--fs-sm);color:var(--text-muted)}.json-import textarea{border:1px solid var(--border);border-radius:var(--radius-sm,8px);background:var(--surface);width:100%;color:var(--text);resize:vertical;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.json-import textarea:focus{border-color:var(--primary);outline:none}.json-import-error{white-space:pre-wrap;margin:0}.admin-secondary-btn:disabled{opacity:.5;cursor:not-allowed}.admin-danger-btn{color:var(--danger)}.admin-danger-btn:hover:not(:disabled){background:var(--danger-light);border-color:var(--danger)}.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-icon-btn.admin-quiz-btn{width:auto;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--primary-dark);border-color:var(--primary);background:var(--primary-light);gap:6px;padding:0 10px}.admin-icon-btn.admin-quiz-btn:hover:not(:disabled){background:var(--primary);color:#fff}.admin-lesson-quiz-badge{font-size:var(--fs-xs);font-weight:var(--fw-semibold);white-space:nowrap;border-radius:999px;padding:2px 8px}.admin-lesson-quiz-badge.is-published{background:var(--success-light);color:var(--success)}.admin-lesson-quiz-badge.is-draft{background:var(--warning-light);color:#9a6a0a}@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}}.tag-input{flex-direction:column;gap:6px;display:flex}.tag-input-box{border:1px solid var(--border);border-radius:var(--radius-sm,8px);background:var(--surface);flex-wrap:wrap;align-items:center;gap:6px;min-height:42px;padding:6px 10px;display:flex}.tag-input-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb), .15)}.tag-input-box input{min-width:140px;font:inherit;font-size:var(--fs-sm);color:var(--text);box-shadow:none;background:0 0;border:none;outline:none;flex:1;padding:4px 2px}.tag-input-pill{background:var(--primary-light);color:var(--primary-dark);font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:999px;align-items:center;gap:4px;padding:4px 6px 4px 10px;display:inline-flex}.tag-input-pill button{appearance:none;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:50%;padding:2px;display:inline-flex}.tag-input-pill button:hover{background:#00000014}.tag-input small{color:var(--text-muted);font-size:var(--fs-xs)}.admin-courses{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);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);padding:9px 12px;font-family:inherit}.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-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-skeleton{flex-direction:column;gap:8px;display:flex}@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}}.course-picker{flex-direction:column;gap:10px;display:flex}.course-picker-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.course-picker-empty{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.course-picker-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.course-picker-card{appearance:none;text-align:left;cursor:pointer;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-md,12px);transition:border-color var(--transition), box-shadow var(--transition), transform var(--transition);flex-direction:column;padding:0;display:flex;overflow:hidden}.course-picker-card:hover{border-color:var(--primary);transform:translateY(-1px)}.course-picker-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.course-picker-card.is-active{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary)}.course-picker-thumb{aspect-ratio:16/9;background:var(--gray-50,#f5f5f0);display:block;position:relative;overflow:hidden}.course-picker-thumb img{object-fit:cover;width:100%;height:100%;display:block}.course-picker-thumb-fallback{font-size:32px;font-weight:var(--fw-semibold);color:var(--primary);background:var(--soft,var(--primary-light));justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.course-picker-check{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:flex;position:absolute;top:8px;right:8px}.course-picker-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:10px 12px 12px;line-height:1.35;display:-webkit-box;overflow:hidden}@media (width<=600px){.course-picker-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}}.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-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)}@media (width<=700px){.admin-page-header{flex-direction:column;align-items:stretch}}.course-list{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:20px;width:100%;display:grid}.course-card,.course-card:hover,.course-card:active,.course-card:focus{background:var(--surface);border-radius:var(--radius-md,12px);flex-direction:column;align-items:stretch;width:100%;min-width:0;height:100%;text-decoration:none;display:flex;overflow:hidden;border:1px solid var(--border)!important;box-shadow:none!important;margin:0!important;transition:border-color .2s!important;top:0!important;transform:scale(1)!important}.course-card:hover{border-color:var(--text-muted)!important}.course-card-media{aspect-ratio:16/9;background:var(--gray-100);flex-shrink:0;width:100%;position:relative;overflow:hidden}.course-image{object-fit:cover;width:100%;height:100%;display:block}.course-card-body{flex-direction:column;flex:1;gap:10px;min-width:0;padding:16px;display:flex}.course-card-badge{flex-shrink:0;align-self:flex-start;max-width:100%}.course-card-title{min-width:0;font-size:var(--fs-md,17px);font-weight:var(--fw-semibold);color:var(--text);white-space:normal;overflow-wrap:anywhere;word-break:normal;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:1.4;display:-webkit-box;overflow:hidden}.course-card-desc{min-width:0;font-size:var(--fs-sm);color:var(--text-muted);-webkit-line-clamp:2;line-clamp:2;overflow-wrap:anywhere;-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));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;min-width:0;margin-top:auto;padding-top:14px;display:flex}.course-card-price{min-width:0;font-size:var(--fs-md,17px);font-weight:var(--fw-bold);color:var(--text);overflow-wrap:anywhere}.course-card-cta{min-width:0;max-width:100%;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--primary);overflow-wrap:anywhere;align-items:center;gap:5px;display:inline-flex}.course-card-skeleton{pointer-events:none;min-height:300px}.course-card-skeleton .course-card-body{gap:12px}@media (width<=1100px){.course-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}}@media (width<=800px){.course-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.course-card-body{padding:14px}}@media (width<=480px){.course-list{grid-template-columns:minmax(0,1fr);gap:14px}.course-card-body{padding:16px}.course-card-title{font-size:var(--fs-md,17px)}}.admin-course-lessons{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}.additional-info{clear:both;display:flex}.admin-batch-info{font-size:var(--fs-xs);color:var(--text-muted);font-weight:var(--fw-semibold);padding-top:10px;padding-right:15px}.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-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);flex-shrink:0;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:disabled{opacity:.5;cursor:not-allowed}.admin-icon-btn-danger:hover:not(:disabled){background:var(--danger-light);color:var(--danger);border-color:var(--danger)}.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-muted{font-size:var(--fs-sm);color:var(--text-muted)}.admin-courses-actions{justify-content:flex-end;gap:6px;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-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);width:100%;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-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-batch-expand-btn{cursor:pointer;color:var(--text);text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:10px;padding:0}.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-empty{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.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-batch-expand-btn{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.admin-batch-title-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-batch-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.admin-batch-filter,.admin-batch-move,.admin-course-form select{border-radius:var(--radius-sm,8px);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-sm);padding:7px 10px}.additional-info{flex-wrap:wrap}.admin-batch-students{flex-direction:column;gap:6px;display:flex}.admin-batch-student-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm,8px);grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:8px 10px;display:grid}.admin-batch-student-main{flex-direction:column;min-width:0;display:flex}.admin-batch-student-main strong{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text)}.admin-batch-student-main span{font-size:var(--fs-xs);color:var(--text-muted);text-overflow:ellipsis;overflow:hidden}.admin-batch-student-row .admin-courses-actions{align-items:center;gap:6px;display:inline-flex}@media (width<=700px){.admin-batch-student-row{grid-template-columns:1fr}}.admin-batch-heading,.admin-batch-heading>div{text-align:left}.admin-course-form input[readonly]{background:var(--gray-50);color:var(--text-muted)}.aq-tabs{border-bottom:1px solid var(--border);gap:4px;display:flex;overflow-x:auto}.aq-tab{appearance:none;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px}.aq-tab:hover{color:var(--text)}.aq-tab.is-active{color:var(--primary-dark);border-bottom-color:var(--primary);font-weight:var(--fw-semibold)}.aq-hint{font-size:var(--fs-sm);color:var(--text-muted);margin:0;line-height:1.5}.aq-hint code{background:var(--gray-100);border-radius:4px;padding:1px 6px;font-size:12px}.aq-warn{color:var(--danger)}.aq-section-title{font-size:var(--fs-lg,18px);font-weight:var(--fw-semibold);margin:0 0 4px}.aq-sub{color:var(--text-muted);font-size:var(--fs-xs);font-weight:400;display:block}.aq-form-actions{align-items:center}.aq-danger-btn{color:var(--danger);border-color:var(--danger-light);margin-right:auto}.aq-danger-btn:hover{background:var(--danger-light)}.aq-questions{flex-direction:column;gap:16px;display:flex}.aq-questions-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.aq-toolbar-actions{flex-wrap:wrap;gap:8px;display:flex}.aq-import{background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius-md,10px);flex-direction:column;gap:10px;padding:14px;display:flex}.aq-import textarea{border:1px solid var(--border);border-radius:var(--radius-sm,8px);background:var(--surface);width:100%;color:var(--text);padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.aq-import textarea:focus{border-color:var(--primary);outline:none}.aq-question-list{flex-direction:column;gap:10px;display:flex}.aq-question-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px);grid-template-columns:32px 1fr auto;align-items:flex-start;gap:12px;padding:14px;display:grid}.aq-question-num{background:var(--primary-light);width:28px;height:28px;color:var(--primary-dark);font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.aq-question-text{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text);margin:0 0 8px}.aq-option-preview{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;margin:0;padding:0;list-style:none;display:grid}.aq-option-preview li{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:6px;display:flex}.aq-option-preview li span{font-weight:var(--fw-semibold)}.aq-option-preview li.is-correct{color:var(--success);font-weight:var(--fw-semibold)}.aq-question-form{background:var(--gray-50);border:1px solid var(--primary);border-radius:var(--radius-md,10px);flex-direction:column;gap:12px;padding:16px;display:flex}.aq-options{flex-direction:column;gap:8px;display:flex}.aq-option-row{grid-template-columns:20px 20px 1fr 30px;align-items:center;gap:8px;display:grid}.aq-option-row input[type=radio]{width:16px;height:16px;accent-color:var(--primary)}.aq-option-letter{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.aq-attempts{flex-direction:column;gap:16px;display:flex}.aq-stats{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.aq-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px);flex-direction:column;gap:2px;padding:14px 16px;display:flex}.aq-stat span{font-size:22px;font-weight:var(--fw-semibold);color:var(--text)}.aq-stat small{font-size:var(--fs-xs);color:var(--text-muted)}.aq-attempts-toolbar{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.aq-filter{gap:6px;display:flex}.aq-filter-btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:var(--fs-sm);cursor:pointer;border-radius:999px;padding:6px 14px}.aq-filter-btn.is-active{background:var(--primary-light);color:var(--primary-dark);border-color:var(--primary);font-weight:var(--fw-semibold)}.aq-search{border:1px solid var(--border);border-radius:var(--radius-sm,8px);background:var(--surface);color:var(--text-muted);align-items:center;gap:8px;min-width:240px;padding:0 12px;display:flex}.aq-search input{font-size:var(--fs-sm);color:var(--text);background:0 0;border:none;outline:none;width:100%;padding:8px 0}.aq-table{border:1px solid var(--border);border-radius:var(--radius-md,10px);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.aq-table-head,.aq-table-row{font-size:var(--fs-sm);grid-template-columns:2fr .7fr 1.4fr .9fr 1.4fr 48px;align-items:center;gap:12px;padding:12px 16px;display:grid}.aq-table-head{background:var(--gray-50);color:var(--text-muted);font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide)}.aq-attempt+.aq-attempt{border-top:1px solid var(--border-light,var(--border))}.aq-table-row:hover{background:var(--gray-50)}.aq-student{flex-direction:column;min-width:0;display:flex}.aq-student strong{font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.aq-student small{color:var(--text-muted);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.aq-badge{font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:999px;padding:3px 10px;display:inline-block}.aq-badge.is-pass{background:var(--success-light);color:var(--success)}.aq-badge.is-fail{background:var(--danger-light);color:var(--danger)}.aq-attempt-detail{background:var(--gray-50);border-top:1px solid var(--border);flex-direction:column;gap:10px;padding:14px 16px 18px;display:flex}.aq-review{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm,8px);border-left-width:4px;padding:12px 14px}.aq-review.is-correct{border-left-color:var(--success)}.aq-review.is-wrong{border-left-color:var(--danger)}.aq-review-q{font-size:var(--fs-sm);font-weight:var(--fw-medium);margin:0 0 8px}.aq-review-q span{color:var(--text-muted);margin-right:4px}.aq-review ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.aq-review li{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:6px;display:flex}.aq-review li span{font-weight:var(--fw-semibold)}.aq-review li em{color:var(--text);font-style:normal}.aq-review li.is-correct{color:var(--success);font-weight:var(--fw-semibold)}.aq-review li.is-picked-wrong{color:var(--danger);font-weight:var(--fw-semibold)}@media (width<=800px){.aq-stats{grid-template-columns:repeat(2,1fr)}.aq-table-head{display:none}.aq-table-row{grid-template-columns:1fr auto;row-gap:6px}.aq-option-preview{grid-template-columns:1fr}.aq-search{width:100%;min-width:0}}.quiz-page{flex-direction:column;gap:18px;width:100%;max-width:820px;margin:0 auto;padding:8px 0 90px;display:flex}.quiz-state{text-align:center;color:var(--text-muted);padding:60px 0}.quiz-back{width:fit-content;font-size:var(--fs-sm);color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.quiz-back:hover{color:var(--text)}.quiz-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,16px);flex-direction:column;gap:16px;padding:26px;display:flex}.quiz-card h1{font-size:24px;font-weight:var(--fw-semibold);color:var(--text);margin:0}.quiz-card h2{font-size:17px;font-weight:var(--fw-semibold);margin:0}.quiz-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.08em;color:var(--primary-dark)}.quiz-desc{color:var(--text-light);line-height:1.6;font-size:var(--fs-sm);margin:0}.quiz-facts,.quiz-score-row{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.quiz-facts>div,.quiz-score-row>div{background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius-md,12px);text-align:center;flex-direction:column;align-items:center;gap:2px;padding:14px;display:flex}.quiz-facts strong,.quiz-score-row strong{color:var(--text);font-size:22px}.quiz-facts span,.quiz-score-row span{font-size:var(--fs-xs);color:var(--text-muted)}.quiz-rules{color:var(--text-light);font-size:var(--fs-sm);flex-direction:column;gap:4px;margin:0;padding-left:18px;list-style:outside;display:flex}.quiz-actions{flex-wrap:wrap;gap:10px;display:flex}.quiz-btn{border-radius:var(--radius-md,10px);border:1px solid var(--border-strong,var(--border));background:var(--surface);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-semibold);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:11px 20px;transition:opacity .15s,background .15s;display:inline-flex}.quiz-btn:hover:not(:disabled){background:var(--gray-50)}.quiz-btn:disabled{opacity:.6;cursor:not-allowed}.quiz-btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.quiz-btn.primary:hover:not(:disabled){background:var(--primary-hover)}.quiz-passed-banner{border-radius:var(--radius-md,10px);background:var(--success-light);color:var(--success);font-size:var(--fs-sm);font-weight:var(--fw-medium);align-items:center;gap:10px;padding:12px 14px;display:flex}.quiz-history{flex-direction:column;display:flex}.quiz-history-row{font-size:var(--fs-sm);border-top:1px solid var(--border-light,var(--border));grid-template-columns:1fr 1.2fr auto 1.2fr;align-items:center;gap:12px;padding:10px 0;display:grid}.quiz-history-row:first-child{border-top:none}.quiz-muted{color:var(--text-muted);font-size:var(--fs-xs);align-items:center;gap:4px;display:inline-flex}.quiz-pill{font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:999px;padding:3px 10px}.quiz-pill.is-pass{background:var(--success-light);color:var(--success)}.quiz-pill.is-fail{background:var(--danger-light);color:var(--danger)}.quiz-locked{align-items:flex-start}.quiz-locked p{color:var(--text-light);margin:0;line-height:1.6}.quiz-topbar{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.quiz-topbar h1{font-size:22px;font-weight:var(--fw-semibold);margin:2px 0 0}.quiz-attempt-tag{font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--primary-light);color:var(--primary-dark);white-space:nowrap;border-radius:999px;padding:4px 10px}.quiz-progress{z-index:5;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px);font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;align-items:center;gap:12px;padding:10px 14px;display:flex;position:sticky;top:0}.quiz-progress-bar{background:var(--gray-100);border-radius:999px;flex:1;height:8px;overflow:hidden}.quiz-progress-bar>div{background:var(--gradient-primary,var(--primary));border-radius:999px;height:100%;transition:width .2s}.quiz-questions{flex-direction:column;gap:14px;display:flex}.quiz-question{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg,14px);min-width:0;margin:0;padding:20px}.quiz-question legend{font-size:var(--fs-md,16px);font-weight:var(--fw-semibold);color:var(--text);float:left;align-items:flex-start;gap:12px;width:100%;margin-bottom:14px;padding:0 4px;line-height:1.5;display:flex}.quiz-question-num{background:var(--primary-light);width:28px;height:28px;color:var(--primary-dark);font-size:var(--fs-xs);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.quiz-options{clear:both;flex-direction:column;gap:8px;display:flex}.quiz-option{border:1px solid var(--border);border-radius:var(--radius-md,10px);cursor:pointer;font-size:var(--fs-sm);color:var(--text);align-items:center;gap:12px;padding:12px 14px;transition:border-color .15s,background .15s;display:flex}.quiz-option:hover{border-color:var(--primary);background:var(--gray-50)}.quiz-option.is-selected{border-color:var(--primary);background:var(--primary-light)}.quiz-option input{opacity:0;pointer-events:none;position:absolute}.quiz-option-letter{border:1px solid var(--border-strong,var(--border));width:26px;height:26px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);background:var(--surface);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.quiz-option.is-selected .quiz-option-letter{background:var(--primary);border-color:var(--primary);color:#fff}.quiz-option:focus-within{outline:2px solid var(--primary);outline-offset:2px}.quiz-submit-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,14px);font-size:var(--fs-sm);color:var(--text-muted);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;bottom:12px;box-shadow:0 6px 24px #1e26161a}.quiz-result{text-align:center;align-items:center}.quiz-result-icon{border-radius:50%;justify-content:center;align-items:center;width:68px;height:68px;display:flex}.quiz-result.is-pass .quiz-result-icon{background:var(--success-light);color:var(--success)}.quiz-result.is-fail .quiz-result-icon{background:var(--danger-light);color:var(--danger)}.quiz-result-sub{max-width:520px;color:var(--text-light);line-height:1.6;font-size:var(--fs-sm);margin:0}.quiz-result .quiz-score-row{width:100%}.quiz-result .quiz-actions{justify-content:center}.quiz-review{flex-direction:column;gap:12px;display:flex}.quiz-review h2{font-size:18px;font-weight:var(--fw-semibold);margin:0}.quiz-note{font-size:var(--fs-sm);color:var(--text-muted);margin:0}.quiz-review-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md,10px);border-left-width:4px;padding:14px 16px}.quiz-review-item.is-correct{border-left-color:var(--success)}.quiz-review-item.is-wrong{border-left-color:var(--danger)}.quiz-review-q{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);align-items:flex-start;gap:8px;margin:0 0 8px;display:flex}.quiz-review-item.is-correct .quiz-review-q svg{color:var(--success);flex-shrink:0}.quiz-review-item.is-wrong .quiz-review-q svg{color:var(--danger);flex-shrink:0}.quiz-review-item ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.quiz-review-item li{font-size:var(--fs-sm);color:var(--text-muted);border-radius:6px;padding:4px 8px}.quiz-review-item li em{color:var(--text);font-style:normal}.quiz-review-item li.is-correct{color:var(--success);background:var(--success-light);font-weight:var(--fw-medium)}.quiz-review-item li.is-picked-wrong{color:var(--danger);background:var(--danger-light);font-weight:var(--fw-medium)}.quiz-review-item li.is-picked:not(.is-correct):not(.is-picked-wrong){background:var(--gray-100);color:var(--text)}.quiz-review-item small{color:var(--text-muted)}.quiz-explanation{background:var(--gray-50);font-size:var(--fs-xs);color:var(--text-light);border-radius:6px;margin:8px 0 0;padding:8px 10px}@media (width<=640px){.quiz-card{padding:18px}.quiz-history-row{grid-template-columns:1fr 1fr}.quiz-submit-bar{text-align:center;flex-direction:column;align-items:stretch}}
