*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #3b82f6;--color-primary-dark: #2563eb;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-muted: #64748b;--color-danger: #ef4444;--color-success: #22c55e;--radius: 10px;--radius-lg: 14px;--shadow: 0 1px 4px rgba(0,0,0,.08), 0 4px 12px rgba(0,0,0,.05);--header-h: 60px}body{font-family:Segoe UI,system-ui,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.6}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.header{background:#ffffffeb;border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100;height:var(--header-h);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.header-inner{max-width:1200px;margin:0 auto;padding:0 1rem;height:100%;display:flex;align-items:center;gap:1.5rem}.logo{display:flex;align-items:center;gap:.45rem;font-weight:800;font-size:1.2rem;color:var(--color-text);letter-spacing:-.01em}.logo-svg{flex-shrink:0}.nav{display:flex;gap:1.2rem}.nav a{color:var(--color-muted);font-weight:500}.nav a:hover,.nav a.router-link-active{color:var(--color-primary);text-decoration:none}.header-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem}.avatar-btn{width:36px;height:36px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem}.icon-btn{font-size:1.3rem;color:var(--color-muted)}#app-root{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem 1rem}.main-content>.builder-page{margin:0 -1rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border-radius:var(--radius);font-weight:500;cursor:pointer;border:none;font-size:.95rem;transition:background .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-outline{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.btn-outline:hover{background:var(--color-bg)}.btn-danger{background:var(--color-danger);color:#fff}.btn-sm{padding:.3rem .7rem;font-size:.85rem}.btn-lg{padding:.7rem 1.6rem;font-size:1.05rem}.btn-block{width:100%;justify-content:center}.input,.select,.textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;background:var(--color-surface);color:var(--color-text);outline:none;transition:border-color .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary)}.textarea{resize:vertical}.input-sm{width:220px}.form-group{margin-bottom:1rem}.form-group label{display:block;font-weight:500;margin-bottom:.3rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.form-actions{margin-top:1.5rem;display:flex;gap:1rem;align-items:center}.field-error{color:var(--color-danger);font-size:.85rem}.badge{padding:.2rem .5rem;border-radius:4px;font-size:.78rem;font-weight:600}.badge-lang{background:#dbeafe;color:#1d4ed8}.badge-diff{background:#dcfce7;color:#15803d}.tag{background:var(--color-bg);border:1px solid var(--color-border);padding:.1rem .5rem;border-radius:20px;font-size:.82rem}.materials-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.materials-grid--4{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.material-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:box-shadow .2s,transform .2s;display:block;color:inherit;text-decoration:none}.material-card:hover{box-shadow:0 8px 28px #0000001f;transform:translateY(-2px);text-decoration:none}.card-thumb{position:relative;aspect-ratio:16/9;background:#e2e8f0;overflow:hidden}.card-thumb img{width:100%;height:100%;object-fit:cover}.card-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2.5rem}.card-type-badge{position:absolute;top:.4rem;right:.4rem;background:#0009;color:#fff;padding:.15rem .5rem;border-radius:4px;font-size:.75rem}.card-body{padding:.85rem}.card-title{font-weight:600;font-size:.97rem;margin-bottom:.25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-author{color:var(--color-muted);font-size:.85rem;margin-bottom:.5rem}.card-meta{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.views{color:var(--color-muted);font-size:.82rem;margin-left:auto}.card-skeleton{background:var(--color-border);border-radius:var(--radius);aspect-ratio:16/9;animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.catalog-page{display:grid;grid-template-columns:240px 1fr;gap:2rem}@media (max-width:768px){.catalog-page{grid-template-columns:1fr}}.sidebar{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;height:fit-content;position:sticky;top:calc(var(--header-h) + 1rem)}.sidebar h2{font-size:1rem;margin-bottom:1rem}.filter-group{margin-bottom:1rem}.filter-group label{font-size:.85rem;font-weight:500;display:block;margin-bottom:.25rem}.catalog-header{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem}.catalog-header h1{font-size:1.4rem}.total-count{color:var(--color-muted);font-size:.9rem}.pagination{display:flex;align-items:center;gap:1rem;margin-top:2rem;justify-content:center}.btn-block{width:100%}.video-page{max-width:900px;margin:0 auto}.video-player-wrapper{position:relative;background:#000;border-radius:var(--radius);overflow:hidden}.video-player{width:100%;display:block}.video-processing,.video-error{padding:3rem;text-align:center;color:var(--color-muted)}.spinner{width:40px;height:40px;border:4px solid #e2e8f0;border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}.video-info{padding:1.25rem 0}.lesson-nav{display:flex;gap:.55rem;flex-wrap:wrap;align-items:center;margin-top:.9rem}.lesson-nav--bottom{margin:1.2rem 0 0;justify-content:space-between;border-top:1px solid var(--color-border);padding-top:1rem}.lesson-nav-hint{margin:.45rem 0 0;color:var(--color-muted);font-size:.82rem}.btn-disabled{opacity:.55;pointer-events:none}.video-meta-top{display:flex;gap:.75rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.video-title{font-size:1.4rem;font-weight:700;margin-bottom:.5rem}.video-author{color:var(--color-muted);font-size:.9rem;margin-bottom:.75rem;display:flex;gap:.5rem;align-items:center}.video-description{color:var(--color-text);white-space:pre-wrap;margin-bottom:1rem}.video-tags{display:flex;gap:.4rem;flex-wrap:wrap}.verified-badge{color:var(--color-success)}.btn-favorite{background:none;border:1px solid var(--color-border);padding:.3rem .7rem;border-radius:20px;cursor:pointer;font-size:.88rem}.btn-favorite.active{background:#fef9c3;border-color:#ca8a04;color:#92400e}.attachments{background:var(--color-bg);border-radius:var(--radius);padding:1rem;margin-bottom:1.5rem}.attachments h3{margin-bottom:.75rem}.attachment-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .5rem;color:var(--color-text);border-bottom:1px solid var(--color-border)}.attachment-item:last-child{border-bottom:none}.file-size{color:var(--color-muted);font-size:.82rem}.comments-section{border-top:1px solid var(--color-border);padding-top:1.5rem}.comments-section h3{margin-bottom:1rem}.comment-form{margin-bottom:1.25rem;display:flex;flex-direction:column;gap:.5rem}.comment{padding:.75rem;background:var(--color-bg);border-radius:var(--radius);margin-bottom:.75rem}.comment-header{display:flex;gap:.5rem;align-items:center;margin-bottom:.3rem}.comment-date{color:var(--color-muted);font-size:.8rem}.btn-icon{background:none;border:none;cursor:pointer;color:var(--color-muted);font-size:1rem;margin-left:auto}.reply{margin-left:1.5rem;margin-top:.5rem;border-left:3px solid var(--color-border);padding-left:.75rem}.login-hint{color:var(--color-muted);font-size:.9rem;margin-bottom:1rem}@media (max-width: 740px){.lesson-nav--bottom{justify-content:flex-start}}.hero{background:linear-gradient(135deg,#0f172a,#1e3a5f 40%,#1d4ed8);color:#fff;padding:5rem 1rem 4rem;margin:-2rem -1rem 0;text-align:center;position:relative;overflow:hidden}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 70% 50%,rgba(99,102,241,.25) 0%,transparent 60%),radial-gradient(ellipse at 20% 80%,rgba(59,130,246,.2) 0%,transparent 50%);pointer-events:none}.hero-inner{max-width:780px;margin:0 auto;position:relative}.hero h1{font-size:3rem;font-weight:800;line-height:1.1;margin-bottom:1rem;letter-spacing:-.02em}.hero p{font-size:1.15rem;color:#ffffffbf;max-width:560px;margin:0 auto 2.25rem}.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2.5rem}.btn-ghost{background:#ffffff1a;border:1px solid rgba(255,255,255,.25);color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.btn-ghost:hover{background:#ffffff2e;text-decoration:none}.btn-white{background:#fff;color:var(--color-primary);font-weight:600}.btn-white:hover{background:#f0f9ff;text-decoration:none}.hero-code-preview{max-width:480px;margin:0 auto;background:#0f172ab3;border:1px solid rgba(255,255,255,.12);border-radius:12px;overflow:hidden;text-align:left;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 20px 60px #0006}.hero-code-bar{display:flex;align-items:center;gap:.45rem;padding:.6rem 1rem;background:#ffffff0d;border-bottom:1px solid rgba(255,255,255,.08)}.code-dot{width:10px;height:10px;border-radius:50%;background:#fff3}.code-dot:nth-child(1){background:#ff5f56}.code-dot:nth-child(2){background:#ffbd2e}.code-dot:nth-child(3){background:#27c93f}.code-filename{margin-left:auto;font-size:.75rem;color:#fff6;font-family:monospace}.hero-code-body{padding:1.25rem 1.5rem;font-family:Fira Code,Cascadia Code,Consolas,monospace;font-size:.9rem;line-height:1.75;color:#e2e8f0;margin:0;white-space:pre}.code-kw{color:#c084fc}.code-fn{color:#60a5fa}.code-str{color:#86efac}.code-comment{color:#64748b}.home-section{margin-bottom:3rem;margin-top:3rem}.section-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.25rem}.section-header h2{font-size:1.4rem;font-weight:700;letter-spacing:-.01em}.see-all{color:var(--color-primary);font-size:.9rem;font-weight:500}.see-all:hover{text-decoration:none;color:var(--color-primary-dark)}.langs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:1.1rem}.lang-card{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:14px;padding:1.4rem 1rem 1.2rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.7rem;color:var(--color-text);font-weight:600;transition:transform .18s,box-shadow .18s,border-color .18s;position:relative;overflow:hidden}.lang-card:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--lang-color, var(--color-primary));opacity:0;transition:opacity .18s}.lang-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001a;border-color:color-mix(in srgb,var(--lang-color, #3b82f6) 40%,transparent);text-decoration:none}.lang-card:hover:after{opacity:1}.lang-icon-wrap{width:68px;height:68px;border-radius:14px;background:var(--lang-bg, var(--color-bg));display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #00000014}.lang-name{font-size:.93rem;color:var(--color-text)}.empty-placeholder{padding:2.5rem;text-align:center;color:var(--color-muted);border:2px dashed var(--color-border);border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;gap:.75rem;font-size:.93rem}.cta-section{background:linear-gradient(135deg,#0f172a,#1e3a5f,#1d4ed8);border-radius:20px;margin-top:1rem;margin-bottom:2rem;position:relative;overflow:hidden}.cta-section:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 80% 50%,rgba(99,102,241,.3) 0%,transparent 60%);pointer-events:none}.cta-inner{text-align:center;padding:3.5rem 2rem;color:#fff;position:relative}.cta-inner h2{font-size:2rem;font-weight:800;margin-bottom:.6rem;letter-spacing:-.02em}.cta-inner p{color:#ffffffbf;margin-bottom:1.75rem;font-size:1.05rem}.auth-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--header-h) - 4rem)}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;width:100%;max-width:420px}.auth-card h1{font-size:1.5rem;margin-bottom:1.5rem;text-align:center}.auth-link{margin-top:1rem;text-align:center;font-size:.9rem;color:var(--color-muted)}.admin-page h1{font-size:1.5rem;margin-bottom:.75rem}.admin-header{margin-bottom:1.5rem}.admin-tabs{display:flex;gap:.5rem;margin-top:.75rem}.admin-tab{padding:.4rem 1rem;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;font-size:.9rem;font-weight:500;color:var(--color-muted);transition:all .15s}.admin-tab.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.admin-section{margin-top:.5rem}.admin-loading{padding:2rem;text-align:center;color:var(--color-muted)}.table-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.75rem}.table-toolbar h2{font-size:1.1rem;font-weight:700}.toolbar-right{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.table-wrap{overflow-x:auto}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1.75rem}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;text-align:center}.stat-value{display:block;font-size:2rem;font-weight:800;color:var(--color-primary)}.stat-value--warn{color:#f59e0b}.stat-label{color:var(--color-muted);font-size:.88rem}.admin-table{width:100%;border-collapse:collapse;font-size:.88rem}.admin-table th{text-align:left;padding:.55rem .75rem;background:var(--color-bg);border-bottom:2px solid var(--color-border);font-weight:600;white-space:nowrap}.admin-table td{padding:.5rem .75rem;border-bottom:1px solid var(--color-border);vertical-align:middle}.admin-table tr.row-blocked{background:#fef2f2}.table-link{color:var(--color-text);font-weight:500}.table-link:hover{color:var(--color-primary);text-decoration:none}.cell-muted{color:var(--color-muted)}.cell-center{text-align:center}.empty-row{text-align:center;color:var(--color-muted);padding:2rem}.type-pill{background:var(--color-bg);border:1px solid var(--color-border);padding:.1rem .5rem;border-radius:4px;font-size:.8rem}.status-badge.published{color:var(--color-success);font-weight:600}.status-badge.draft{color:var(--color-muted)}.status-badge.blocked{color:var(--color-danger);font-weight:600}.cell-user{display:flex;align-items:center;gap:.5rem}.user-avatar-sm{width:30px;height:30px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;flex-shrink:0}.role-select{padding:.2rem .5rem;border-radius:4px;border:1px solid var(--color-border);font-size:.82rem;cursor:pointer;font-weight:600}.role-select.role-admin{color:#7c3aed;background:#f5f3ff;border-color:#c4b5fd}.role-select.role-author{color:#0369a1;background:#f0f9ff;border-color:#7dd3fc}.role-select.role-student{color:var(--color-muted);background:var(--color-bg)}.verify-btn{background:none;border:1px solid var(--color-border);border-radius:4px;padding:.15rem .5rem;cursor:pointer;font-size:.8rem;color:var(--color-muted);white-space:nowrap}.verify-btn.verified{color:var(--color-success);border-color:#86efac;background:#f0fdf4}.status-dot{font-size:.82rem;font-weight:600}.status-dot.active{color:var(--color-success)}.status-dot.inactive{color:var(--color-danger)}.upload-page{max-width:720px;margin:0 auto}.upload-page h1{font-size:1.5rem;margin-bottom:1.5rem}.form-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem}.form-section h2{font-size:1.15rem;margin-bottom:1.25rem}.upload-block{border:2px dashed var(--color-border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.25rem}.upload-block h3{margin-bottom:.5rem}.hint{color:var(--color-muted);font-size:.87rem;margin-bottom:.75rem}.selected-file{display:flex;align-items:center;gap:1rem;margin-top:.75rem;flex-wrap:wrap}.status-badge{display:inline-block;margin-top:.5rem;padding:.3rem .75rem;border-radius:20px;font-size:.85rem;font-weight:600}.status-badge.pending,.status-badge.processing{background:#fef9c3;color:#92400e}.status-badge.ready{background:#dcfce7;color:#15803d}.status-badge.failed,.status-badge.blocked{background:#fee2e2;color:#991b1b}.attached-file{padding:.3rem 0;color:var(--color-muted);font-size:.88rem}.success-banner{background:#dcfce7;border:1px solid var(--color-success);padding:1rem 1.25rem;border-radius:var(--radius);color:#15803d}.error-banner{background:#fee2e2;border:1px solid #fca5a5;padding:1rem 1.25rem;border-radius:var(--radius);color:#dc2626;margin-top:1rem}.error-msg{background:#fee2e2;border:1px solid #fca5a5;padding:.75rem 1rem;border-radius:var(--radius);color:#991b1b;margin-bottom:1rem}.empty-state{text-align:center;padding:3rem;color:var(--color-muted)}.loading-page{text-align:center;padding:4rem;color:var(--color-muted)}.my-courses-page{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.page-header-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.page-header-row h1{font-size:1.8rem;font-weight:700}.courses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}.course-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.25rem;display:flex;flex-direction:column;gap:.6rem;transition:transform .14s ease,box-shadow .18s ease,border-color .18s ease}.course-card:hover{transform:translateY(-2px);border-color:#bfdbfe;box-shadow:0 12px 30px #1e40af14}.course-card-header{display:flex;align-items:center;justify-content:space-between}.course-badge{font-size:.72rem;padding:.2rem .6rem;border-radius:99px;font-weight:600}.badge--pub{background:#dcfce7;color:#15803d}.badge--draft{background:#f1f5f9;color:#64748b}.course-card-title{font-size:1.05rem;font-weight:600;color:var(--color-text)}.course-card-desc{font-size:.88rem;color:var(--color-muted);flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card-meta{display:flex;gap:1rem;font-size:.8rem;color:var(--color-muted)}.course-edit-btn{margin-top:.5rem}.icon-btn--danger{background:none;border:none;cursor:pointer;color:#ef4444;padding:.25rem;border-radius:4px}.icon-btn--danger:hover{background:#fee2e2}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:1000;display:flex;align-items:center;justify-content:center}.modal-box{background:var(--color-surface);border-radius:var(--radius-lg);padding:2rem;width:100%;max-width:480px;display:flex;flex-direction:column;gap:1rem}.modal-box h2{font-size:1.3rem;font-weight:700}.modal-actions{display:flex;gap:.75rem}.course-learning-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;display:flex;flex-direction:column;gap:.55rem;transition:transform .14s ease,box-shadow .18s ease,border-color .18s ease}.course-learning-card:hover{transform:translateY(-2px);border-color:#bfdbfe;box-shadow:0 12px 30px #1e40af14}.course-card-thumb{display:block;aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;background:#dbeafe;border:1px solid #bfdbfe;box-shadow:inset 0 1px #ffffff8c}.course-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}.course-learning-card .course-card-title{margin-top:.15rem;font-size:1.1rem;font-weight:700;line-height:1.32;color:var(--color-text)}.course-learning-card .course-card-title:hover{text-decoration:none;color:var(--color-primary)}.course-detail-page{max-width:900px;margin:0 auto}.course-header,.course-module{margin-bottom:2rem}.learning-progress-wrap{display:flex;flex-direction:column;gap:.35rem}.learning-progress{width:100%;height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}.learning-progress-fill{height:100%;background:linear-gradient(90deg,#22c55e,#16a34a)}.learning-progress-label{font-size:.82rem;color:var(--color-muted)}.lesson-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.lesson-complete-badge{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:50%;background:#dcfce7;color:#15803d;font-size:.8rem}.lesson-content-preview{font-family:inherit;white-space:pre-wrap;font-size:.92rem;line-height:1.55}.quiz-question{margin-bottom:1rem}.quiz-question-title{font-weight:600;margin-bottom:.45rem}.quiz-option{display:flex;gap:.45rem;align-items:center;font-size:.92rem;margin-bottom:.35rem}.quiz-result{margin-top:.6rem;font-size:.9rem;font-weight:600}.quiz-pass{color:#15803d}.quiz-fail{color:#991b1b}.builder-page{display:flex;flex-direction:column;min-height:calc(100vh - var(--header-h));overflow:hidden;border:1px solid #bfdbfe;border-radius:18px;background:linear-gradient(180deg,#eaf2ff,#f8fbff);box-shadow:0 20px 48px #2563eb14}.builder-topbar{display:flex;align-items:center;gap:1rem;padding:.85rem 1.25rem;border-bottom:1px solid #1d4ed8;background:#2563eb;color:#eff6ff;flex-shrink:0}.back-btn{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:#dbeafe;text-decoration:none;white-space:nowrap}.back-btn:hover{color:#fff}.builder-title-wrap{flex:1;min-width:0}.builder-title{font-size:1.1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#eff6ff}.builder-title svg{opacity:.65;flex-shrink:0}.builder-title:hover svg{opacity:1}.builder-title-input{font-size:1.1rem;font-weight:600;border:1px solid #bfdbfe;border-radius:var(--radius);padding:.3rem .6rem;width:100%;outline:none;background:#fffffff5;color:#0f172a}.builder-actions{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.builder-preview-link{text-decoration:none}.builder-topbar .btn-outline{border-color:#bfdbfea6;background:#0f172a29;color:#eff6ff}.builder-topbar .btn-outline:hover{background:#0f172a47;border-color:#dbeafe}.builder-topbar .btn-primary{background:#fff;color:#1d4ed8;border:1px solid #dbeafe;font-weight:600}.builder-topbar .btn-primary:hover:not(:disabled){background:#eff6ff}.publish-badge{font-size:.78rem;padding:.2rem .7rem;border-radius:99px;font-weight:600}.publish-badge.pub{background:#22c55e2e;color:#dcfce7;border:1px solid rgba(134,239,172,.55)}.publish-badge.draft{background:#94a3b838;color:#dbeafe;border:1px solid rgba(191,219,254,.4)}.builder-body{display:flex;flex:1;overflow:hidden}.builder-sidebar{width:290px;flex-shrink:0;border-right:1px solid #bfdbfe;background:linear-gradient(180deg,#dbeafe,#eff6ff 56%,#f8fbff);display:flex;flex-direction:column;overflow-y:auto}.sidebar-header{padding:.65rem .75rem .65rem .95rem;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#1e3a8a;border-bottom:1px solid #bfdbfe;background:#ffffff8c;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.course-cover-editor{display:flex;flex-direction:column;gap:.55rem;padding:.8rem .95rem .95rem;border-bottom:1px solid #bfdbfe;background:#ffffff85}.course-cover-thumb{width:100%;aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;border:1px solid #bfdbfe;background:#dbeafe}.course-cover-thumb img{width:100%;height:100%;display:block;object-fit:cover}.course-cover-thumb__empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#1e3a8a;font-size:.82rem;font-weight:600}.course-cover-actions{display:flex;gap:.5rem;flex-wrap:wrap}.modules-list{flex:1;padding:.5rem 0}.module-block{border-bottom:1px solid #bfdbfe}.module-head{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;cursor:pointer;gap:.5rem}.module-head:hover{background:#2563eb1f}.module-block--active .module-head{background:#2563eb2e}.module-title-wrap{display:flex;align-items:center;gap:.4rem;flex:1;min-width:0}.module-title{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.module-title-input{font-size:.88rem;font-weight:600;border:1px solid var(--color-primary);border-radius:4px;padding:.15rem .4rem;width:100%;outline:none}.module-btns{display:flex;gap:.25rem;flex-shrink:0}.icon-btn-sm{background:none;border:none;cursor:pointer;padding:.2rem .4rem;border-radius:4px;font-size:1rem;line-height:1;color:#1e3a8a}.icon-btn-sm:hover{background:#bfdbfe;color:#1e293b}.icon-btn-sm--danger:hover{background:#fee2e2;color:#ef4444}.lessons-list{padding:.25rem 0 .5rem 1.5rem}.lesson-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;border-radius:6px;cursor:pointer;font-size:.85rem}.lesson-item:hover{background:#2563eb24}.lesson-item--active{background:#2563eb33;color:#1d4ed8;font-weight:600}.lesson-type-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.dot--video{background:#3b82f6}.dot--text{background:#10b981}.dot--code{background:#f59e0b}.dot--presentation{background:#8b5cf6}.lesson-item-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ls-del{opacity:0;transition:opacity .15s}.lesson-item:hover .ls-del{opacity:1}.add-lesson-btn{width:100%;text-align:left;background:none;border:none;cursor:pointer;font-size:.82rem;color:var(--color-primary);padding:.4rem .75rem;border-radius:6px}.add-lesson-btn:hover{background:#2563eb1f}.add-module-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.45rem .7rem;border:1px solid #bfdbfe;border-radius:999px;background:#fff;cursor:pointer;font-size:.8rem;font-weight:600;color:#1d4ed8}.add-module-btn:hover{background:#eff6ff;border-color:#93c5fd}.add-module-btn--header{white-space:nowrap;text-transform:none;letter-spacing:normal}.builder-editor{flex:1;overflow-y:auto;padding:1.5rem 2rem;background:#fff}.editor-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:1rem;color:var(--color-muted);text-align:center}.lesson-editor{display:flex;flex-direction:column;gap:1.25rem;max-width:800px}.lesson-editor-header{display:flex;flex-direction:column;gap:.75rem}.lesson-title-input{font-size:1.4rem;font-weight:700;border:none;border-bottom:2px solid var(--color-border);padding:.25rem 0;outline:none;background:transparent;width:100%}.lesson-title-input:focus{border-bottom-color:var(--color-primary)}.lesson-type-tabs{display:flex;gap:.5rem;flex-wrap:wrap}.type-tab{display:flex;align-items:center;gap:.4rem;padding:.35rem .8rem;border:1px solid var(--color-border);border-radius:99px;background:none;cursor:pointer;font-size:.82rem;color:var(--color-muted)}.type-tab:hover{border-color:var(--color-primary);color:var(--color-primary)}.type-tab--active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.editor-section{display:flex;flex-direction:column;gap:.5rem}.editor-inline-hint{font-size:.82rem;color:var(--color-muted)}.field-label{font-size:.82rem;font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:.04em}.lesson-textarea{border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem 1rem;font-size:.95rem;resize:vertical;font-family:inherit;line-height:1.6;outline:none;width:100%}.lesson-textarea:focus{border-color:var(--color-primary)}.lesson-textarea--code{font-family:Fira Code,Consolas,monospace;font-size:.9rem;background:#0f172a;color:#e2e8f0}.lesson-textarea--sm{resize:none}.image-upload-block{display:flex;flex-direction:column;gap:.75rem}.images-preview{display:flex;flex-wrap:wrap;gap:.75rem}.img-thumb{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border)}.img-thumb img{display:block;width:120px;height:80px;object-fit:cover}.img-url-copy{position:absolute;bottom:0;left:0;right:0;background:#000000b3;color:#fff;font-size:.7rem;padding:.2rem .4rem;cursor:pointer;text-align:center}.lesson-preview-editor{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap}.lesson-preview-editor__thumb{width:280px;max-width:100%;aspect-ratio:16/9;border-radius:12px;border:1px solid var(--color-border);background:#e2e8f0;overflow:hidden}.lesson-preview-editor__thumb img{width:100%;height:100%;object-fit:cover;display:block}.lesson-preview-editor__empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:.8rem;text-align:center;color:var(--color-muted);font-size:.84rem}.lesson-preview-editor__actions{display:flex;flex-direction:column;gap:.55rem;min-width:220px}.selected-file-row{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;font-size:.88rem}.video-ready-badge{display:flex;align-items:center;gap:.5rem;color:#15803d;font-size:.9rem;font-weight:600}.video-status-badge{font-size:.82rem;padding:.3rem .7rem;border-radius:99px;display:inline-flex}.vs--pending,.vs--processing{background:#fef3c7;color:#92400e}.vs--ready{background:#dcfce7;color:#15803d}.vs--failed{background:#fee2e2;color:#991b1b}.attached-files{display:flex;flex-direction:column;gap:.4rem}.attached-item{display:flex;align-items:center;gap:.4rem;font-size:.88rem;color:var(--color-muted)}.editor-settings{background:#f8fbff;border:1px solid #dbeafe;border-radius:var(--radius);padding:1rem}.settings-row{display:flex;gap:1rem;flex-wrap:wrap}.form-group-sm{display:flex;flex-direction:column;gap:.3rem}.form-group-sm--checkbox{justify-content:flex-end;min-width:160px}.checkbox-inline{display:inline-flex;align-items:center;gap:.45rem;font-size:.88rem;color:var(--color-text)}.checkbox-inline input{width:16px;height:16px}.select-sm{border:1px solid var(--color-border);border-radius:var(--radius);padding:.35rem .6rem;font-size:.88rem;outline:none;background:#fff}.editor-footer{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0}.save-hint{font-size:.82rem;color:var(--color-muted)}.footer{margin-top:2rem;border-top:1px solid var(--color-border);background:#fff}.footer-inner{max-width:1200px;margin:0 auto;padding:1rem;display:grid;grid-template-columns:1fr auto auto;gap:.75rem 1rem;align-items:center;color:var(--color-muted);font-size:.9rem}.footer-brand{display:flex;align-items:center;gap:.75rem;min-width:0}.footer-brand .logo-text{font-weight:700;color:#1e3a8a}.footer-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.footer-links{display:flex;gap:.75rem;flex-wrap:wrap}.footer-links a{color:var(--color-muted);font-weight:500}.footer-links a:hover{color:var(--color-primary);text-decoration:none}.footer-copy{color:var(--color-muted);white-space:nowrap;justify-self:end}@media (max-width:600px){.hero h1{font-size:1.5rem}.nav{display:none}}@media (max-width: 980px){.builder-page{border-radius:0;border-left:0;border-right:0}.builder-body{flex-direction:column}.builder-sidebar{width:100%;max-height:46vh;border-right:0;border-bottom:1px solid #bfdbfe}.builder-editor{padding:1rem 1rem 1.25rem}.builder-topbar{flex-wrap:wrap;gap:.65rem}}@media (max-width: 860px){.footer-inner{grid-template-columns:1fr;justify-items:center;text-align:center}.footer-brand{justify-content:center;flex-wrap:wrap}.footer-text{white-space:normal}.footer-copy{justify-self:center}}
