:root{--primary:#5b4bff;--primary-dark:#4638cc;--primary-light:#eeecff;--on-primary:#fff;--text:#4b4757;--text-heading:#17141f;--text-muted:#8a8595;--bg:#faf9fc;--surface:#fff;--border:#e8e6ee;--border-strong:#d6d1e8;--success:#22a06b;--success-text:#1a7d52;--success-bg:#e3f6ed;--success-border:#9ad9bd;--warning-text:#a86a00;--warning-bg:#fff3dd;--danger:#c22b45;--danger-bg:#fdeef1;--danger-border:#f2c0ca;--info-bg:#e8f1fd;--info-text:#2456a6;--input-bg:#e8eefb;--input-border:#dbe4f3;--surface-alt:#f4f6fb;--rose-bg:#ffe6f1;--rose-text:#b3227a;--rank-argent-bg:#eef0f4;--rank-argent-text:#5e6675;--rank-bronze-bg:#f9ece2;--rank-bronze-text:#97562a;--tooltip-bg:#17141f;--tooltip-text:#fff;--radius:14px;--shadow:0 2px 12px #17141f0f;--shadow-hover:0 8px 24px #17141f1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--primary:#8b7bff;--primary-dark:#b3a9ff;--primary-light:#262040;--on-primary:#fff;--text:#c6c2d2;--text-heading:#f3f1f8;--text-muted:#8d8799;--bg:#121017;--surface:#1a1722;--border:#2d2839;--border-strong:#413a52;--success:#35c98c;--success-text:#5fdcaa;--success-bg:#14322a;--success-border:#2c6b53;--warning-text:#f0b95e;--warning-bg:#382a15;--danger:#ff7089;--danger-bg:#3a1a23;--danger-border:#6b2f3d;--info-bg:#15243d;--info-text:#8ab6f0;--input-bg:#221e2c;--input-border:#3a3348;--surface-alt:#211d2b;--rose-bg:#3b1729;--rose-text:#f08cbd;--rank-argent-bg:#2b2735;--rank-argent-text:#b0aabe;--rank-bronze-bg:#35271c;--rank-bronze-text:#d9a173;--tooltip-bg:#37304a;--tooltip-text:#f3f1f8;--shadow:0 2px 12px #0006;--shadow-hover:0 8px 24px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:no-preference){.page,.auth-page,.onboarding-page,.course-player{animation:.35s both fadeInUp}.course-grid>*,.showcase-grid>*,.mycourses-grid>*,.challenge-list>*,.job-list>*,.request-list>*{animation:.4s both fadeInUp}.course-grid>:first-child{animation-delay:30ms}.course-grid>:nth-child(2){animation-delay:60ms}.course-grid>:nth-child(3){animation-delay:90ms}.course-grid>:nth-child(4){animation-delay:.12s}.course-grid>:nth-child(5){animation-delay:.15s}.course-grid>:nth-child(6){animation-delay:.18s}.showcase-grid>:first-child{animation-delay:30ms}.showcase-grid>:nth-child(2){animation-delay:60ms}.showcase-grid>:nth-child(3){animation-delay:90ms}.showcase-grid>:nth-child(4){animation-delay:.12s}.showcase-grid>:nth-child(5){animation-delay:.15s}.showcase-grid>:nth-child(6){animation-delay:.18s}.notif-panel{transform-origin:100% 0;animation:.16s both popIn}.quiz-question{animation:.3s both fadeInUp}}.app-splash{min-height:100vh;color:var(--text-muted);justify-content:center;align-items:center;font-size:.95rem;display:flex}.app-splash:before{content:"";border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:20px;height:20px;margin-right:10px;animation:.7s linear infinite spin}.spinner{opacity:.85;vertical-align:-.15em;border:2px solid;border-top-color:#0000;border-radius:50%;flex-shrink:0;animation:.7s linear infinite spin;display:inline-block}.page-loader{color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:64px 20px;font-size:.95rem;display:flex}.route-progress{z-index:9999;transform-origin:0;background:linear-gradient(90deg, var(--primary), #8b7bff);width:100%;height:3px;animation:10s cubic-bezier(.1,.6,.2,1) forwards route-progress;position:fixed;top:0;left:0;box-shadow:0 0 10px #5b4bff80}@keyframes route-progress{0%{transform:scaleX(0)}30%{transform:scaleX(.45)}60%{transform:scaleX(.72)}to{transform:scaleX(.92)}}.route-loading{min-height:55vh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;font-size:.95rem;animation:.25s .12s both fadeIn;display:flex}.route-loading .spinner{color:var(--primary);border-width:3px}@media (prefers-reduced-motion:reduce){.route-progress{animation:none;transform:scaleX(.5)}.route-loading{animation:none}}.page-loader .spinner{color:var(--primary);border-width:3px}.btn .spinner,.auth-submit .spinner{margin-right:8px}.btn:disabled,.auth-submit:disabled{opacity:.65;cursor:not-allowed}.skeleton{background:linear-gradient(90deg, var(--border) 25%, #7f7f7f1f 37%, var(--border) 63%);background-size:400% 100%;border-radius:6px;animation:1.4s infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100%}to{background-position:0}}.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.skeleton-cover{border-radius:0;height:130px}.skeleton-body{flex-direction:column;gap:10px;padding:20px;display:flex}.skeleton-line{height:12px}.skeleton-line-sm{width:40%}.skeleton-line-lg{width:75%}.skeleton-rows{flex-direction:column;gap:12px;display:flex}.skeleton-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:14px;padding:16px 20px;display:flex}.skeleton-avatar{border-radius:50%;flex-shrink:0;width:40px;height:40px}.skeleton-row-body{flex-direction:column;flex:1;gap:8px;display:flex}.btn,.sidebar-link,.pill,.tag,.like-btn,.role-select,.notif-bell{transition:transform .12s,background .15s,border-color .15s,box-shadow .15s,color .15s}.btn:active:not(:disabled){transform:scale(.97)}.notif-bell:hover{transform:scale(1.06)}.like-btn:active{transform:scale(.92)}.notif-dot,.badge{animation:.25s both popIn}body{background:var(--bg);color:var(--text);font-family:Rethink Sans,Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.6}button,input,select,textarea{font-family:inherit}.brand-logo{vertical-align:middle;width:auto;height:22px;display:inline-block}.app{flex-direction:column;min-height:100vh;display:flex}main{flex:1}h1,h2,h3{color:var(--text-heading);line-height:1.25}h1{font-size:2.2rem}h2{font-size:1.5rem}a{color:inherit;text-decoration:none}.page-subtitle{color:var(--text-muted);margin:8px 0 28px}.link{color:var(--primary);font-weight:600}.link:hover{text-decoration:underline}.btn{cursor:pointer;border:2px solid #0000;border-radius:10px;justify-content:center;align-items:center;padding:12px 24px;font-size:1rem;font-weight:600;transition:all .15s;display:inline-flex}.btn-icon{align-items:center;gap:8px;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px)}.btn-outline{border-color:var(--border);color:var(--text-heading);background:0 0}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.btn-sm{padding:8px 16px;font-size:.88rem}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:24px;display:flex}.course-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;display:grid}.course-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}.course-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-4px)}.course-cover{justify-content:center;align-items:center;height:130px;display:flex;position:relative;overflow:hidden}.course-banner-img{object-fit:cover;width:100%;height:100%}.course-emoji{font-size:3.2rem;font-weight:700}.level{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:700}.course-cover .level{position:absolute;top:12px;right:12px}.level-débutant{background:var(--success-bg);color:var(--success-text)}.level-intermédiaire{background:var(--warning-bg);color:var(--warning-text)}.level-avancé{background:var(--danger-bg);color:var(--danger)}.course-body{flex-direction:column;flex:1;gap:10px;padding:20px;display:flex}.course-category{color:var(--primary);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem;font-weight:700}.course-desc{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.92rem;display:-webkit-box;overflow:hidden}.course-meta{color:var(--text-muted);flex-wrap:wrap;gap:8px 16px;margin-top:auto;font-size:.85rem;display:flex}.progress-wrap{align-items:center;gap:10px;display:flex}.progress-bar{background:var(--border);border-radius:999px;flex:1;height:8px;overflow:hidden}.progress-fill{background:var(--success);border-radius:999px;height:100%;transition:width .3s}.progress-label{color:var(--text-muted);white-space:nowrap;font-size:.8rem;font-weight:600}.filters{flex-direction:column;gap:16px;margin-bottom:32px;display:flex}.search-input{border:1px solid var(--border);background:var(--surface);width:100%;max-width:440px;color:var(--text-heading);border-radius:10px;padding:12px 18px;font-size:1rem}.search-input:focus{outline:2px solid var(--primary);border-color:#0000}.category-pills{flex-wrap:wrap;gap:8px;display:flex}.pill{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;padding:8px 18px;font-size:.9rem;font-weight:500;transition:all .15s}.pill:hover{border-color:var(--primary);color:var(--primary)}.pill-active{background:var(--primary);border-color:var(--primary);color:#fff}.pill-count{opacity:.7;background:0 0;border-radius:0;padding:0;font-weight:600;display:inline}.empty-state{text-align:center;color:var(--text-muted);padding:48px 0;font-size:1.05rem}.detail-header{border-radius:var(--radius);align-items:flex-start;gap:28px;margin:20px 0 40px;padding:36px;display:flex}.detail-emoji{font-size:4rem;font-weight:700;line-height:1}.detail-banner-img{object-fit:cover;border-radius:16px;flex-shrink:0;width:140px;height:140px}.banner-field{margin-top:18px}.banner-preview{align-items:center;gap:14px;display:flex}.banner-preview img{object-fit:cover;border:1px solid var(--border);border-radius:10px;width:160px;height:90px}.detail-info{flex-direction:column;gap:12px;display:flex}.detail-info h1{font-size:1.9rem}.detail-actions{flex-wrap:wrap;align-items:center;gap:20px;margin-top:6px;display:flex}.detail-progress{min-width:260px}.curriculum-title{margin-bottom:20px}.curriculum{flex-direction:column;gap:18px;display:flex}.module{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.module-head{background:var(--primary-light);cursor:pointer;text-align:left;width:100%;color:inherit;font:inherit;border:none;justify-content:space-between;align-items:center;gap:12px;padding:16px 22px;display:flex}.module-head h3{flex:1;font-size:1.02rem}.module-caret{color:var(--primary-dark);flex-shrink:0;transition:transform .15s}.module.open .module-caret{transform:rotate(90deg)}.module-count{color:var(--text-muted);font-size:.85rem}.chapters{list-style:none}.chapter-row{border-top:1px solid var(--border)}.chapter-link{color:var(--text-heading);align-items:center;gap:14px;padding:14px 22px;transition:background .12s;display:flex}.chapter-link:not(.locked):hover{background:var(--primary-light)}.chapter-link.locked{cursor:default;color:var(--text-muted)}.chapter-status{text-align:center;flex-shrink:0;width:22px;font-size:1rem}.chapter-name{flex:1;min-width:0;font-weight:500}.chapter-row.done .chapter-name{color:var(--text-muted)}.chapter-quizcount{color:var(--primary-dark);background:var(--primary-light);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.8rem}.chapter-duration{color:var(--text-muted);white-space:nowrap;text-align:right;min-width:52px;font-size:.85rem}.hint{color:var(--text-muted);margin-top:20px;font-size:.95rem}.stats-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px;margin-bottom:36px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:22px;display:flex}.stat-card strong{color:var(--text-heading);font-size:1.8rem}.stat-card span{color:var(--text-muted);font-size:.92rem}.dash-stats{grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}.dash-stats .stat-highlight{background:linear-gradient(135deg, var(--primary) 0%, var(--primary) 100%);border-color:#0000;gap:6px}.stat-highlight .stat-label{text-transform:uppercase;letter-spacing:.05em;color:#fffc;font-size:.75rem;font-weight:700}.stat-highlight strong{color:#fff;font-size:2rem;line-height:1.1}.stat-bar{background:#ffffff47;margin-top:6px}.stat-highlight .progress-fill{background:var(--surface)}.stat-sub{color:var(--text-muted);font-size:1.1rem;font-weight:600}.profile-progress-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:30px;padding:22px 24px;display:flex}.profile-progress-head{justify-content:space-between;align-items:flex-start;gap:20px;width:100%;display:flex}.profile-progress-head h2{margin-bottom:4px;font-size:1.05rem}.profile-progress-head p{color:var(--text-muted);font-size:.88rem;line-height:1.5}.profile-progress-value{color:var(--primary-dark);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700}.profile-progress-bar{flex:0 0 8px;width:100%;height:8px}.profile-progress-bar .progress-fill{background:var(--primary)}.profile-missing{flex-wrap:wrap;gap:8px;padding:0;list-style:none;display:flex}.profile-missing li{color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:4px 11px;font-size:.8rem;font-weight:600}.profile-missing-more{border-style:dashed}.dashboard-list{flex-direction:column;gap:14px;display:flex}.dashboard-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:box-shadow .15s,border-color .15s;overflow:hidden}.dashboard-item:hover{box-shadow:var(--shadow-hover);border-color:var(--border-strong)}.dashboard-item-main{color:inherit;align-items:center;gap:20px;padding:18px 22px;text-decoration:none;display:flex}.dashboard-item-groups{border-top:1px solid var(--border);background:var(--bg);flex-wrap:wrap;gap:8px;padding:12px 22px 14px;display:flex}.dashboard-group-chip{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:999px;align-items:center;gap:9px;padding:7px 13px;font-size:.86rem;text-decoration:none;transition:border-color .12s,color .12s;display:inline-flex}.dashboard-group-chip:hover{border-color:var(--primary);color:var(--primary-dark)}.dashboard-group-chip svg{color:var(--primary);flex-shrink:0}.dashboard-group-name{font-weight:600}.dashboard-group-teacher{color:var(--text-muted);font-size:.8rem}.dashboard-group-teacher:before{content:"·";margin-right:8px}.dashboard-group-go{color:var(--primary);white-space:nowrap;font-size:.8rem;font-weight:600}.dashboard-emoji{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:58px;height:58px;font-size:1.8rem;font-weight:700;display:flex}.leaderboard-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;display:grid}.leaderboard-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:inherit;padding:18px 20px;transition:box-shadow .15s;display:block}.leaderboard-card:hover{box-shadow:var(--shadow-hover)}.leaderboard-head{align-items:center;gap:12px;margin-bottom:14px;display:flex}.leaderboard-head .dashboard-emoji{border-radius:10px;width:36px;height:36px;font-size:1rem}.leaderboard-head h3{color:var(--text-heading);font-size:.98rem}.leaderboard-list{flex-direction:column;gap:8px;list-style:none;display:flex}.leaderboard-row{border-radius:8px;align-items:center;gap:10px;padding:6px 8px;font-size:.88rem;display:flex}.leaderboard-row.me{background:var(--primary-light)}.leaderboard-rank{background:var(--bg);width:24px;height:24px;color:var(--text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.78rem;font-weight:700;display:flex}.leaderboard-rank.rank-1{background:var(--warning-bg);color:var(--warning-text)}.leaderboard-rank.rank-2{background:var(--bg);color:var(--text)}.leaderboard-rank.rank-3{background:var(--primary-light);color:var(--primary-dark)}.leaderboard-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-heading);flex:1;font-weight:500;overflow:hidden}.leaderboard-points{color:var(--text-heading);white-space:nowrap;font-weight:700}.leaderboard-sep{text-align:center;color:var(--text-muted);font-size:.8rem}.dashboard-info{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.continue-label{color:var(--primary);white-space:nowrap;font-weight:600}.done-badge{background:var(--success-bg);color:var(--success);white-space:nowrap;border-radius:999px;padding:5px 14px;font-size:.85rem;font-weight:700}.empty-dashboard{text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:10px;padding:60px 20px;display:flex}.empty-icon{font-size:3rem}.empty-dashboard .btn{margin-top:10px}.mycourses-filters{margin:20px 0 8px}.mycourses-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:22px;margin-top:16px;display:grid}.mycourse-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}.mycourse-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-4px)}.mycourse-cover{justify-content:center;align-items:center;height:96px;display:flex;position:relative}.mycourse-emoji{font-size:2.8rem;font-weight:700}.mycourse-done{background:var(--success-bg);color:var(--success);border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:700;position:absolute;top:12px;right:12px}.mycourse-body{flex-direction:column;flex:1;gap:8px;padding:18px 20px;display:flex}.mycourse-body h3{font-size:1.08rem;line-height:1.3}.mycourse-progress{flex-direction:column;gap:6px;margin-top:auto;padding-top:10px;display:flex}.mycourse-progress .progress-label{align-self:flex-start}.mycourse-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.mycourse-detail-link{color:var(--text-muted);font-size:.88rem;font-weight:600}.mycourse-detail-link:hover{color:var(--primary);text-decoration:underline}.auth-page{background:var(--surface);flex-direction:column;min-height:100vh;display:flex}.auth-hero{background:var(--info-bg);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:40px 24px 72px;display:flex}.auth-logo{margin-bottom:56px}:root[data-theme=dark] .brand-logo{filter:brightness(0)invert()}.auth-logo .brand-logo{height:30px}.auth-hero h1{color:var(--text);font-size:1.9rem}.auth-hero p{color:var(--text-muted);max-width:420px;font-size:1.05rem}.auth-form{flex-direction:column;gap:18px;width:100%;max-width:445px;margin:48px auto 0;padding:0 24px;display:flex}.auth-error,.auth-info,.auth-demo{border-radius:8px;padding:10px 14px;font-size:.9rem}.auth-demo{background:var(--surface-alt);color:var(--text);border:1px dashed var(--input-border)}.auth-error{background:var(--danger-bg);color:var(--danger)}.auth-info{background:var(--info-bg);color:var(--info-text)}.field{text-align:left;flex-direction:column;gap:8px;display:flex}.field span{color:var(--text);font-size:.95rem}.field input,.field select,.password-wrap input{border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--text-heading);border-radius:6px;padding:15px 16px;font-size:1rem}.field input:focus,.field select:focus,.password-wrap input:focus{outline:2px solid var(--primary);border-color:#0000}.password-wrap{position:relative}.password-wrap input{padding-right:48px}.eye-button{cursor:pointer;background:0 0;border:none;align-items:center;padding:10px;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.auth-row{justify-content:space-between;align-items:center;font-size:.92rem;display:flex}.remember{color:var(--text);cursor:pointer;align-items:center;gap:8px;display:flex}.remember input{width:16px;height:16px;accent-color:var(--primary)}.auth-submit{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;width:100%;margin-top:8px;padding:16px;font-size:1.05rem;font-weight:500;transition:background .15s;display:flex}.auth-submit:hover{background:var(--primary-dark)}.auth-divider{color:var(--text-muted);align-items:center;gap:14px;margin-top:6px;font-size:.8rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-socials{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.auth-socials button{height:54px;color:var(--text-heading);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:border-color .15s,box-shadow .15s;display:flex}.auth-socials button:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.auth-switch{color:var(--text-muted);text-align:center;font-size:.92rem}.auth-lang{text-align:center;color:var(--text);margin-top:auto;padding:72px 0 40px;font-size:.95rem}.link-button{color:var(--primary);font-weight:500;font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0}.link-button:hover{text-decoration:underline}.avatar{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-weight:700;display:flex}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);z-index:30;flex-direction:column;flex-shrink:0;width:252px;height:100vh;padding:20px 12px 12px;transition:width .2s;display:flex;position:sticky;top:0;overflow:visible}.sidebar.collapsed{width:76px}.sidebar-top{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:0 8px 18px;display:flex}.sidebar.collapsed .sidebar-top{flex-direction:column;gap:14px;padding:0 0 16px}.sidebar-logo{align-items:center;min-width:0;display:flex;overflow:hidden}.brand-mark{color:var(--primary);display:block}.sidebar-toggle{border:1px solid var(--border);background:var(--bg);width:28px;height:28px;color:var(--text-muted);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:.9rem;display:flex}.sidebar-toggle:hover{border-color:var(--primary);color:var(--primary)}.sidebar-nav{scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex-direction:column;flex:1;gap:16px;min-height:0;padding-bottom:8px;display:flex;overflow:hidden auto}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.sidebar-group{flex-direction:column;gap:2px;display:flex}.sidebar-group-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:6px;padding:0 12px;font-size:.68rem;font-weight:700}.sidebar.collapsed .sidebar-group+.sidebar-group{border-top:1px solid var(--border);padding-top:12px}.sidebar-link{color:var(--text);border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:.94rem;font-weight:500;transition:background .12s,color .12s;display:flex;position:relative}.sidebar-link:hover{background:var(--bg);color:var(--text-heading)}.sidebar-link:hover .sidebar-icon{color:var(--primary)}.sidebar-link.active{background:var(--primary-light);color:var(--primary-dark);font-weight:700}.sidebar-link.active:before{content:"";background:var(--primary);border-radius:0 3px 3px 0;width:3px;height:20px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.sidebar-link.active .sidebar-icon{color:var(--primary)}.sidebar-icon{width:22px;height:20px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;transition:color .12s;display:flex}.sidebar-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar-tip{background:var(--tooltip-bg);color:var(--tooltip-text);white-space:nowrap;pointer-events:none;z-index:60;box-shadow:var(--shadow-hover);border-radius:7px;padding:6px 11px;font-size:.82rem;font-weight:600;animation:.1s both fadeIn;position:fixed;left:84px;transform:translateY(-50%)}.sidebar-tip:before{content:"";border:5px solid #0000;border-right-color:var(--tooltip-bg);position:absolute;top:50%;right:100%;transform:translateY(-50%)}.sidebar.collapsed .sidebar-label,.sidebar.collapsed .sidebar-group-title,.sidebar.collapsed .beta-capsule,.sidebar.collapsed .sidebar-user-info{display:none}.sidebar.collapsed .sidebar-link{justify-content:center}.sidebar.collapsed .sidebar-user{flex-direction:column;gap:10px}.sidebar.collapsed .sidebar-user-link{flex:0}.sidebar-user{border-top:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;margin-top:4px;padding:12px 4px 0;display:flex}.sidebar-user-info{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.sidebar-user-info strong{color:var(--text-heading);text-overflow:ellipsis;white-space:nowrap;font-size:.92rem;overflow:hidden}.sidebar-user-info span{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.sidebar-settings{border:1px solid var(--border);cursor:pointer;width:34px;height:34px;color:var(--text-muted);background:0 0;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .12s,color .12s,background .12s;display:flex}.sidebar-settings:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.sidebar-settings.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.app-content{background:var(--bg);flex:1;min-width:0}.page{max-width:1060px;margin:0 auto;padding:40px 32px}.dash-section{margin-top:40px}.showcase-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;display:grid}.showcase-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.showcase-cover{background:var(--bg);justify-content:center;align-items:center;height:160px;display:flex;overflow:hidden}.showcase-emoji{color:var(--text-muted);font-size:2.8rem;font-weight:700}.showcase-img{object-fit:cover;width:100%;height:100%;display:block}.showcase-body{padding:18px 20px 20px}.showcase-author{align-items:center;gap:6px;display:flex}.like-btn{border:1px solid var(--border);cursor:pointer;color:var(--text-muted);white-space:nowrap;background:0 0;border-radius:999px;padding:3px 12px;font-size:.85rem;font-weight:600}.like-btn:hover{border-color:var(--danger)}.like-btn.liked{border-color:var(--danger);color:var(--danger)}.showcase-links{align-items:center;gap:10px;margin-top:14px;display:flex}.showcase-link{background:var(--primary-light);color:var(--primary-dark);border-radius:8px;padding:6px 14px;font-size:.85rem;font-weight:600}.showcase-link:hover{background:var(--primary-light)}.showcase-del{border:1px solid var(--border);cursor:pointer;color:var(--text-muted);background:0 0;border-radius:8px;margin-left:auto;padding:5px 10px}.showcase-del:hover{border-color:var(--danger);color:var(--danger)}.showcase-form{margin-bottom:24px}.showcase-form-preview{align-items:center;gap:16px;margin-top:8px;display:flex}.showcase-form-preview .showcase-img{border:1px solid var(--border);border-radius:10px;width:160px;height:100px}.showcase-head{justify-content:space-between;align-items:center;display:flex}.showcase-likes{color:var(--text-muted);font-size:.88rem}.showcase-author{color:var(--text-muted);margin-bottom:8px;font-size:.85rem}.showcase-desc{margin-bottom:12px;font-size:.92rem}.tag-list{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--primary-light);color:var(--primary-dark);border-radius:999px;padding:3px 10px;font-size:.78rem;font-weight:600}.course-card-wrap{position:relative}.course-card-wrap .remove-btn{z-index:2;position:absolute;top:12px;right:12px}.search-field{align-items:center;max-width:440px;display:flex;position:relative}.search-field svg{color:var(--text-muted);pointer-events:none;position:absolute;left:16px}.search-input-icon{padding-left:44px}.session-card{position:relative}.session-past{opacity:.65}.session-date-badge{background:var(--surface);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;align-items:center;padding:6px 10px;line-height:1.1;display:flex;position:absolute;top:12px;left:12px}.session-date-day{color:var(--text-heading);font-size:1.1rem;font-weight:700}.session-date-month{text-transform:uppercase;color:var(--text-muted);letter-spacing:.03em;font-size:.7rem;font-weight:600}.session-registered-chip{background:var(--success);color:#fff;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:700;position:absolute;top:12px;right:12px}.session-past-chip{background:var(--border);color:var(--text-muted);position:absolute;top:12px;right:12px}.meta-icon-item{align-items:center;gap:5px;display:inline-flex}.session-registered-inline{color:var(--success);font-weight:700}.challenge-list{flex-direction:column;gap:16px;display:flex}.challenge-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:20px;padding:20px 24px;display:flex}.challenge-main{flex:1;min-width:0}.challenge-title-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:4px;display:flex}.challenge-desc{color:var(--text-muted);margin-bottom:8px;font-size:.92rem}.challenge-image{object-fit:cover;border-radius:12px;flex-shrink:0;width:96px;height:96px}.participate-form{border-top:1px solid var(--border);max-width:420px;margin-top:12px;padding-top:12px}.participation-done{color:var(--success);margin-top:8px;font-size:.88rem}.diff-facile{background:var(--success-bg);color:var(--success-text)}.diff-moyen{background:var(--warning-bg);color:var(--warning-text)}.diff-difficile{background:var(--danger-bg);color:var(--danger)}.page-title-icon{align-items:baseline;gap:10px;display:flex}.page-title-icon svg{color:var(--primary);flex-shrink:0}.salary-page-scope,.salary-list{--lvl-junior:#b3aaff;--lvl-mid:#5b4bff;--lvl-senior:#2c1d8c}:root[data-theme=dark] .salary-page-scope,:root[data-theme=dark] .salary-list{--lvl-junior:#4c40a8;--lvl-mid:#7d6dff;--lvl-senior:#c3b9ff}.insight-row{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin:24px 0 8px;display:grid}.insight-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:4px;padding:18px 20px;display:flex}.insight-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary) 100%);border-color:#0000}.insight-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.75rem;font-weight:600}.insight-value{color:var(--text-heading);font-size:1.6rem;font-weight:700;line-height:1.2}.insight-growth{color:var(--success)}.insight-hint{color:var(--text-muted);font-size:.82rem}.insight-primary .insight-label,.insight-primary .insight-hint{color:#ffffffc7}.insight-primary .insight-value{color:#fff}.salary-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin:28px 0 20px;display:flex}.salary-controls{flex-wrap:wrap;gap:20px;display:flex}.control-group{flex-direction:column;gap:6px;display:flex}.control-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.72rem;font-weight:600}.segmented{background:var(--bg);border:1px solid var(--border);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segment{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;padding:7px 14px;font-size:.86rem;font-weight:600;transition:background .15s,color .15s}.segment:hover{color:var(--primary)}.segment-active{background:var(--surface);color:var(--primary-dark);box-shadow:var(--shadow)}.salary-legend{color:var(--text-muted);justify-content:space-between;align-items:center;gap:16px;padding:0 4px 10px;font-size:.76rem;display:flex}.legend-markers{gap:16px;display:flex}.legend-dot-item{align-items:center;gap:6px;display:inline-flex}.legend-dot-item.active{color:var(--text-heading);font-weight:600}.legend-dot,.range-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.dot-junior{background:var(--lvl-junior)}.dot-mid{background:var(--lvl-mid)}.dot-senior{background:var(--lvl-senior)}.legend-scale{font-variant-numeric:tabular-nums;white-space:nowrap}.salary-list{flex-direction:column;gap:12px;display:flex}.salary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s,box-shadow .15s;overflow:hidden}.salary-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.salary-card.open{border-color:var(--primary);box-shadow:var(--shadow)}.salary-row{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;align-items:center;gap:18px;padding:18px 20px;display:flex}.salary-rank{background:var(--bg);width:28px;height:28px;color:var(--text-muted);font-variant-numeric:tabular-nums;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:.82rem;font-weight:700;display:flex}.salary-card:first-child .salary-rank{background:var(--warning-bg);color:var(--warning-text)}.salary-card:nth-child(2) .salary-rank{background:var(--rank-argent-bg);color:var(--rank-argent-text)}.salary-card:nth-child(3) .salary-rank{background:var(--rank-bronze-bg);color:var(--rank-bronze-text)}.salary-body{flex:1;min-width:0}.salary-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.salary-role{color:var(--text-heading);font-size:1rem;font-weight:600}.salary-figures{white-space:nowrap;align-items:center;gap:10px;display:inline-flex}.growth-chip{background:var(--success-bg);color:var(--success);border-radius:999px;padding:3px 8px;font-size:.74rem;font-weight:700}.salary-value{color:var(--primary-dark);font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:700}.range-track{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:8px;position:relative}.range-fill{background:linear-gradient(90deg, var(--lvl-junior), var(--lvl-senior));border-radius:999px;height:6px;transition:left .35s,width .35s;position:absolute;top:50%;transform:translateY(-50%)}.range-dot{border:2px solid var(--surface);transition:left .35s,width .15s,height .15s;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #17141f1a}.range-dot.active{z-index:1;width:15px;height:15px;box-shadow:0 0 0 3px #5b4bff2e}.salary-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:10px;font-size:.8rem;display:flex}.range-caption{font-variant-numeric:tabular-nums}.median-badge{border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600}.median-badge.above{background:var(--success-bg);color:var(--success-text)}.median-badge.below{background:var(--danger-bg);color:var(--danger)}.median-badge.equal{background:var(--bg);color:var(--text-muted)}.salary-caret{color:var(--text-muted);flex-shrink:0;transition:transform .2s}.salary-card.open .salary-caret{color:var(--primary);transform:rotate(90deg)}.salary-detail{border-top:1px solid var(--border);padding:4px 20px 18px 66px;animation:.2s both fadeIn}.detail-row{align-items:center;gap:14px;padding:9px 0;display:flex}.detail-label{width:110px;color:var(--text);flex-direction:column;flex-shrink:0;font-size:.86rem;font-weight:600;display:flex}.detail-label small{color:var(--text-muted);font-size:.72rem;font-weight:500}.detail-row.active .detail-label{color:var(--primary-dark)}.detail-track{background:var(--bg);border-radius:999px;flex:1;height:10px;overflow:hidden}.detail-bar{border-radius:999px;height:100%;transition:width .4s}.bar-junior{background:var(--lvl-junior)}.bar-mid{background:var(--lvl-mid)}.bar-senior{background:var(--lvl-senior)}.detail-value{text-align:right;width:110px;color:var(--text-heading);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.9rem;font-weight:700}.detail-footer{border-top:1px dashed var(--border);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding-top:14px;font-size:.85rem;display:flex}.detail-footer strong{color:var(--success)}.job-list{flex-direction:column;gap:16px;margin-top:28px;display:flex}.job-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;gap:20px;padding:20px 24px;display:flex}.job-main{min-width:0}.job-title-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.job-type{background:var(--primary-light);color:var(--primary-dark);border-radius:999px;padding:3px 10px;font-size:.78rem;font-weight:700}.job-company{color:var(--text-muted);margin:4px 0 10px;font-size:.9rem}.job-side{flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:6px;display:flex}.job-salary{color:var(--text-heading);font-weight:700}.job-posted{color:var(--text-muted);font-size:.8rem}.course-player{grid-template-columns:290px 1fr;align-items:start;gap:28px;max-width:1160px;margin:0 auto;padding:28px 32px;display:grid}.course-outline{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:calc(100vh - 40px);padding:18px;position:sticky;top:20px;overflow-y:auto}.outline-course{align-items:center;gap:12px;margin-bottom:14px;display:flex}.outline-emoji{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.4rem;font-weight:700;display:flex}.outline-course-info{flex-direction:column;min-width:0;display:flex}.outline-course-info strong{color:var(--text-heading);font-size:.95rem;line-height:1.3}.outline-course-info span{color:var(--text-muted);font-size:.8rem}.outline-bar{margin-bottom:18px}.outline-modules{flex-direction:column;gap:16px;display:flex}.outline-module-title{color:var(--text-heading);margin-bottom:6px;font-size:.82rem;font-weight:700}.outline-module ul{flex-direction:column;gap:2px;list-style:none;display:flex}.outline-ch{color:var(--text);border-radius:8px;align-items:center;gap:9px;padding:8px 10px;font-size:.88rem;transition:background .12s;display:flex}.outline-ch:hover{background:var(--bg)}.outline-ch.active{background:var(--primary-light);color:var(--primary-dark);font-weight:600}.outline-ch.done .outline-ch-name{color:var(--text-muted)}.outline-ch.locked{color:var(--text-muted);opacity:.55;cursor:not-allowed}.outline-ch-status{text-align:center;flex-shrink:0;width:18px;font-size:.85rem}.outline-ch-name,.lesson-main{min-width:0}.lesson-breadcrumb{color:var(--text-muted);margin-bottom:12px;font-size:.85rem}.chapter-head{margin-bottom:24px}.chapter-head h1{margin-bottom:10px}.lesson-body{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:32px}.lesson-text>*+*{margin-top:16px}.lesson-text h2{margin-top:28px;font-size:1.3rem}.lesson-text h3{margin-top:22px;font-size:1.08rem}.lesson-text p{color:var(--text);line-height:1.7}.lesson-text .lesson-list{flex-direction:column;gap:6px;padding-left:22px;display:flex}.lesson-text .lesson-list li{line-height:1.6}.lesson-text code{background:var(--primary-light);color:var(--primary-dark);border-radius:5px;padding:1px 6px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.9em}.lesson-code{background:var(--text-heading);border-radius:12px;padding:18px 20px;overflow-x:auto}.lesson-code code{color:#e6e1f5;white-space:pre;background:0 0;padding:0;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.88rem;line-height:1.6}.lesson-tip{background:var(--warning-bg);border-left:3px solid var(--warning-text);color:var(--warning-text);border-radius:8px;padding:12px 16px;font-size:.93rem}.lesson-figure{margin:0}.lesson-image{border:1px solid var(--border);border-radius:10px;max-width:100%;display:block}.lesson-figure figcaption{color:var(--text-muted);text-align:center;margin-top:6px;font-size:.85rem}.lesson-table-wrap{overflow-x:auto}.lesson-table{border-collapse:collapse;width:100%;font-size:.92rem}.lesson-table th,.lesson-table td{border:1px solid var(--border);text-align:left;padding:10px 14px}.lesson-table th{background:var(--bg);color:var(--text-heading);font-weight:700}.lesson-table tr:nth-child(2n) td{background:var(--bg)}.video-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;overflow:hidden}.video-block summary{cursor:pointer;color:var(--text-heading);padding:16px 20px;font-weight:600;list-style:none}.video-block summary::-webkit-details-marker{display:none}.video-block summary:before{content:"▸ ";color:var(--primary)}.video-block[open] summary:before{content:"▾ "}.video-block-body{padding:0 20px 20px}.video-frame{aspect-ratio:16/9;background:#000;border-radius:12px;width:100%;position:relative;overflow:hidden}.video-frame iframe,.video-frame video{border:none;width:100%;height:100%;position:absolute;inset:0}.video-link{color:var(--primary);font-weight:600;display:inline-block}.video-loading{color:#cfcbdd;justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.upload-row{flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px;display:flex}.upload-btn{background:var(--primary-light);color:var(--primary-dark);border:1px dashed var(--primary);cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:.88rem;font-weight:600;display:inline-flex}.upload-btn:hover{background:var(--primary-light)}.upload-btn.small{padding:6px 12px;font-size:.82rem}.content-toolbar{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.uploaded-video{background:var(--bg);border:1px solid var(--border);color:var(--text-heading);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:.9rem;display:flex}.chapter-nav{justify-content:space-between;gap:12px;margin-top:28px;display:flex}.quiz{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px}.quiz-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.quiz-count{color:var(--text-muted);font-size:.85rem}.quiz-passed-banner{background:var(--success-bg);color:var(--success-text);border-radius:10px;margin-bottom:8px;padding:10px 14px;font-size:.9rem}.quiz-question{border:1px solid var(--border);border-radius:12px;margin-top:18px;padding:18px 20px}.quiz-question.q-correct{border-color:var(--success-border);background:var(--success-bg)}.quiz-question.q-wrong{border-color:var(--danger-border);background:var(--danger-bg)}.quiz-q-title{color:var(--text-heading);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;font-weight:600;display:flex}.quiz-q-num{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.82rem;display:inline-flex}.quiz-q-type{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;margin-left:auto;padding:2px 8px;font-size:.72rem;font-weight:700}.quiz-options{flex-direction:column;gap:10px;display:flex}.quiz-tf{flex-direction:row}.quiz-tf .quiz-option{flex:1}.quiz-option{border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:12px 16px;transition:border-color .12s,background .12s;display:flex}.quiz-option:hover{border-color:var(--primary)}.quiz-option.selected{border-color:var(--primary);background:var(--primary-light)}.quiz-option.reveal-correct{border-color:var(--success);background:var(--success-bg)}.quiz-option input{accent-color:var(--primary)}.quiz-fill{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-heading);border-radius:10px;padding:12px 16px;font-size:1rem}.quiz-fill:focus{outline:2px solid var(--primary);border-color:#0000}.quiz-feedback{border-radius:8px;margin-top:12px;padding:10px 14px;font-size:.9rem}.quiz-feedback.ok{background:var(--success-bg);color:var(--success-text)}.quiz-feedback.ko{background:var(--danger-bg);color:var(--danger)}.quiz-submit{width:100%;margin-top:22px}.quiz-submit:disabled{opacity:.55;cursor:not-allowed;transform:none}.quiz-result{text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:8px;margin-top:22px;padding:20px;display:flex}.quiz-result.pass{background:var(--success-bg);color:var(--success-text)}.quiz-result.fail{background:var(--danger-bg);color:var(--danger)}.quiz-result strong{color:inherit;font-size:1.3rem}.page-head-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:8px;display:flex}.owner-actions{gap:8px;display:flex}.btn.danger{color:var(--danger)}.btn.danger:hover{border-color:var(--danger)}.mine-badge,.custom-badge{background:var(--primary);color:#fff;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.68rem;font-weight:700;display:inline-block}.custom-badge{margin:0;position:absolute;top:12px;left:12px}.builder-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:20px;padding:24px}.builder-card>h2{margin-bottom:18px;font-size:1.2rem}.builder-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.builder-grid .span-2{grid-column:1/-1}.builder .field input,.builder .field select,.builder .field textarea{border:1px solid var(--border);background:var(--bg);color:var(--text-heading);border-radius:8px;width:100%;padding:11px 14px;font-size:.95rem}.builder .field textarea{resize:vertical}.builder .field input:focus,.builder .field select:focus,.builder .field textarea:focus{outline:2px solid var(--primary);border-color:#0000}.content-area{font-family:SFMono-Regular,Consolas,monospace;font-size:.88rem}.field-hint{color:var(--text-muted);margin-top:4px;font-size:.8rem}.field-hint code{background:var(--primary-light);color:var(--primary-dark);border-radius:4px;padding:1px 5px;font-size:.85em}.builder-pickers{flex-wrap:wrap;gap:40px;margin-top:18px;display:flex}.picker-label{color:var(--text-heading);margin-bottom:8px;font-size:.88rem;font-weight:600;display:block}.picker-row{flex-wrap:wrap;gap:8px;display:flex}.emoji-pick{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:8px;width:40px;height:40px;font-size:1.2rem}.emoji-pick.on{border-color:var(--primary);background:var(--primary-light)}.color-pick{cursor:pointer;border:2px solid #0000;border-radius:50%;width:34px;height:34px}.color-pick.on{border-color:var(--text-heading);box-shadow:0 0 0 2px var(--surface) inset}.module-card{border-left:3px solid var(--primary)}.builder-card-head{align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.module-title-field{flex:1}.remove-btn{border:1px solid var(--border);cursor:pointer;color:var(--text-muted);background:0 0;border-radius:8px;flex-shrink:0;padding:8px 12px;font-size:.9rem}.remove-btn:hover{border-color:var(--danger);color:var(--danger)}.remove-btn.small{padding:4px 10px;font-size:.8rem}.add-btn{background:var(--primary-light);color:var(--primary-dark);border:1px dashed var(--primary);cursor:pointer;border-radius:10px;width:100%;margin-top:14px;padding:12px 18px;font-size:.92rem;font-weight:600}.add-btn:hover{background:var(--primary-light)}.add-btn.small{width:auto;margin-top:8px;padding:7px 14px;font-size:.85rem}.add-module{background:0 0;margin-top:18px}.chapter-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;margin-top:14px;padding:14px 18px}.chapter-card.open{padding-bottom:18px}.chapter-card-head{align-items:center;gap:10px;display:flex}.chapter-card .field{margin-top:12px}.chapter-caret-btn{border:1px solid var(--border);background:var(--surface);width:28px;height:28px;color:var(--text-muted);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chapter-caret-btn:hover{border-color:var(--primary);color:var(--primary)}.chapter-caret{transition:transform .15s}.chapter-card.open .chapter-caret{transform:rotate(90deg)}.chapter-title-input{min-width:0;color:var(--text-heading);background:0 0;border:1px solid #0000;border-radius:8px;flex:1;padding:6px 8px;font-size:.95rem;font-weight:600}.chapter-title-input:hover,.chapter-title-input:focus{border-color:var(--border);background:var(--surface)}.chapter-duration-input{width:90px;color:var(--text-muted);text-align:right;background:0 0;border:1px solid #0000;border-radius:8px;flex-shrink:0;padding:6px 8px;font-size:.85rem}.chapter-duration-input:hover,.chapter-duration-input:focus{border-color:var(--border);background:var(--surface)}.chapter-meta-count{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:.78rem}.builder-summary{gap:10px;margin:14px 0 6px;display:flex}.builder-summary span{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:4px 12px;font-size:.82rem;font-weight:600}.quiz-builder{border-top:1px dashed var(--border);margin-top:16px;padding-top:14px}.quiz-builder-title{color:var(--text-heading);margin-bottom:10px;font-size:.95rem;font-weight:700}.qb-question{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;margin-bottom:12px;padding:14px;display:flex}.qb-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.qb-type{border:1px solid var(--border);background:var(--bg);color:var(--text-heading);border-radius:8px;padding:7px 12px;font-size:.88rem}.qb-input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-heading);border-radius:8px;padding:10px 12px;font-size:.9rem}.qb-input:focus{outline:2px solid var(--primary);border-color:#0000}.qb-explanation{font-style:italic}.qb-options{flex-direction:column;gap:8px;display:flex}.qb-option{align-items:center;gap:10px;display:flex}.qb-option input[type=radio]{width:18px;height:18px;accent-color:var(--success);flex-shrink:0}.qb-tf{gap:20px;display:flex}.qb-tf label{cursor:pointer;align-items:center;gap:8px;display:flex}.qb-tf input[type=radio]{accent-color:var(--primary)}.builder-actions{gap:12px;margin-top:24px;display:flex}.builder-actions-sticky{background:var(--bg);border-top:1px solid var(--border);z-index:5;padding:14px 0;position:sticky;bottom:0}.beta-capsule{color:#fff;text-transform:uppercase;letter-spacing:.04em;background:linear-gradient(135deg,#8b5cf6,#6366f1);border-radius:999px;margin-left:auto;padding:2px 7px;font-size:.62rem;font-weight:700}.badge{background:var(--danger);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:20px;margin-left:auto;padding:0 6px;font-size:.72rem;font-weight:700;display:inline-flex}.curriculum-title .badge{vertical-align:middle;margin-left:8px}.topbar{justify-content:flex-end;align-items:center;gap:10px;padding:14px 32px 0;display:flex}.theme-toggle{border:1px solid var(--border);background:var(--surface);width:42px;height:42px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:box-shadow .15s,border-color .15s,color .15s;display:flex}.theme-toggle:hover{border-color:var(--primary);color:var(--primary);box-shadow:var(--shadow)}.notif{position:relative}.notif-bell{border:1px solid var(--border);background:var(--surface);width:42px;height:42px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:box-shadow .15s,border-color .15s;display:flex;position:relative}.notif-bell:hover{border-color:var(--primary);box-shadow:var(--shadow)}.notif-dot{background:var(--danger);color:#fff;border:2px solid var(--surface);border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 5px;font-size:.72rem;font-weight:700;display:flex;position:absolute;top:-4px;right:-4px}.notif-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:340px;max-width:calc(100vw - 40px);box-shadow:var(--shadow-hover);z-index:40;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.notif-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:14px 18px;display:flex}.notif-head .badge{background:var(--primary);margin-left:0}.notif-empty{text-align:center;color:var(--text-muted);padding:24px 18px;font-size:.92rem}.notif-list{max-height:320px;list-style:none;overflow-y:auto}.notif-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;display:flex}.notif-item-info{min-width:0;color:inherit;flex:1;text-decoration:none;display:block}.notif-time{color:var(--text-muted);font-size:.72rem}.notif-item-info strong{color:var(--text-heading);font-size:.92rem}.notif-item-info p{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;overflow:hidden}.notif-item-actions{flex-shrink:0;gap:6px;display:flex}.notif-ok,.notif-ko{border:1px solid var(--border);cursor:pointer;border-radius:8px;width:30px;height:30px;font-weight:700}.notif-ok{background:var(--success-bg);color:var(--success-text);border-color:var(--success-border)}.notif-ko{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.notif-all{text-align:center;color:var(--primary);border-top:1px solid var(--border);padding:12px 18px;font-size:.9rem;font-weight:600;display:block}.notif-all:hover{background:var(--bg)}.req-history{flex-direction:column;gap:8px;list-style:none;display:flex}.req-history-item{background:var(--bg);border:1px solid var(--border);border-radius:10px;grid-template-columns:1fr auto auto;align-items:center;gap:16px;padding:12px 16px;display:grid}.req-history-course{color:var(--text-heading);font-weight:600}.req-history-date{color:var(--text-muted);font-size:.82rem}.enroll-status{border-radius:10px;padding:12px 16px;font-size:.92rem;font-weight:500;display:inline-block}.enroll-status.pending{background:var(--warning-bg);color:var(--warning-text)}.enroll-status.rejected{background:var(--danger-bg);color:var(--danger);padding:6px 12px;font-size:.85rem}.request-list{flex-direction:column;gap:14px;margin-top:16px;display:flex}.request-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;display:flex}.request-card.processed{background:var(--bg);padding:12px 18px}.request-info{flex-direction:column;gap:2px;min-width:0;display:flex}.request-email{color:var(--text-muted);font-size:.82rem}.request-course{margin-top:4px;font-size:.95rem}.request-date{color:var(--text-muted);margin-top:4px;font-size:.78rem}.request-actions{gap:8px;display:flex}.req-status{white-space:nowrap;font-size:.85rem;font-weight:700}.req-status.approved{color:var(--success)}.req-status.rejected{color:var(--danger)}.role-chip{background:var(--primary-light);color:var(--primary-dark);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:.72rem;font-weight:700;display:inline-flex}.sidebar-user-info .role-chip{align-self:flex-start;margin-top:2px}.role-admin{background:var(--danger-bg);color:var(--danger)}.role-conseiller{background:var(--warning-bg);color:var(--warning-text)}.role-etudiant{background:var(--success-bg);color:var(--success-text)}.profile-name-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.reset-password-banner{background:var(--primary-light);color:var(--primary-dark);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:16px 0;padding:12px 18px;font-size:.9rem;display:flex}.reset-password-banner code{background:#fff9;border-radius:6px;padding:2px 8px;font-weight:700}.reset-banner-close{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;padding:4px;font-size:.9rem;line-height:1}.reset-banner-close:hover{opacity:1}.stat-etudiant strong{color:var(--success-text)}.stat-conseiller strong{color:var(--warning-text)}.stat-admin strong{color:var(--danger)}.user-table{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-top:24px;overflow:hidden}.user-row{border-top:1px solid var(--border);grid-template-columns:2.2fr 190px 190px 48px;align-items:center;gap:16px;padding:12px 20px;display:grid;position:relative}.user-row:first-child{border-top:none}.user-row-head{background:var(--bg);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:12px 20px;font-size:.78rem;font-weight:700}.user-cell{align-items:center;gap:12px;min-width:0;display:flex}.user-avatar{flex-shrink:0;width:36px;height:36px;font-size:.95rem}.role-avatar-etudiant{background:var(--success-bg);color:var(--success-text)}.role-avatar-conseiller{background:var(--warning-bg);color:var(--warning-text)}.role-avatar-admin{background:var(--danger-bg);color:var(--danger)}.user-cell-info{flex-direction:column;gap:2px;min-width:0;display:flex}.user-cell-name{color:var(--text-heading);align-items:center;gap:8px;font-weight:600;display:flex}.user-cell-name a{color:inherit}.user-cell-name a:hover{color:var(--primary)}.user-cell-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.status-pill{white-space:nowrap;border-radius:999px;align-items:center;padding:3px 10px;font-size:.8rem;font-weight:600;display:inline-flex}.status-active{background:var(--success-bg);color:var(--success)}.status-suspended{background:var(--danger-bg);color:var(--danger);white-space:normal}.status-neutral{color:var(--text-muted);background:0 0}.user-cell-actions{justify-content:flex-end;display:flex}.menu-trigger{width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;font-size:1.1rem;line-height:1}.menu-trigger:hover{background:var(--bg);border-color:var(--border);color:var(--text-heading)}.user-menu{background:var(--surface);border:1px solid var(--border);z-index:20;border-radius:10px;flex-direction:column;min-width:220px;margin-top:4px;display:flex;position:absolute;top:100%;right:20px;overflow:hidden;box-shadow:0 12px 28px #00000024}.user-menu-label{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);padding:8px 14px 2px;font-size:.72rem;font-weight:700}.user-menu-item{text-align:left;color:var(--text-heading);cursor:pointer;border:none;border-top:1px solid var(--border);background:0 0;padding:10px 14px;font-size:.88rem}.user-menu-item:first-child{border-top:none}.user-menu-item:hover{background:var(--bg)}.user-menu-item.warn{color:var(--warning-text)}.user-menu-item.danger{color:var(--danger)}.assign-row{gap:10px;margin-bottom:18px;display:flex}.assign-row .role-select{flex:1}.assigned-list{flex-direction:column;gap:12px;display:flex}.assigned-course{background:var(--bg);border:1px solid var(--border);border-radius:12px;align-items:center;gap:16px;padding:14px 18px;display:flex}.assigned-info{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.assigned-course-block{flex-direction:column;gap:10px;display:flex}.chapter-progress-detail{border-left:2px solid var(--border);flex-direction:column;gap:10px;margin-left:26px;padding-left:12px;display:flex}.chapter-progress-row{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px}.chapter-progress-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.quiz-score-chip{border-radius:999px;margin-left:auto;padding:2px 9px;font-size:.78rem;font-weight:700}.quiz-score-chip.pass{background:var(--success-bg);color:var(--success)}.quiz-score-chip.fail{background:var(--danger-bg);color:var(--danger)}.quiz-answers-list{flex-direction:column;gap:8px;list-style:none;display:flex}.quiz-answer-item{border-radius:8px;align-items:flex-start;gap:10px;padding:8px 10px;font-size:.88rem;display:flex}.quiz-answer-item.ok{background:var(--success-bg)}.quiz-answer-item.ko{background:var(--danger-bg)}.quiz-answer-question{color:var(--text-heading);font-weight:500}.quiz-answer-values{color:var(--text-muted);margin-top:2px;font-size:.85rem}.empty-state.small{text-align:left;padding:0;font-size:.85rem}.assigned-info strong{color:var(--text-heading)}.you-badge{background:var(--primary);color:#fff;border-radius:999px;padding:1px 8px;font-size:.68rem;font-weight:700}.role-select{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-heading);cursor:pointer;border-radius:8px;padding:8px 10px;font-size:.88rem}.pagination{justify-content:center;align-items:center;gap:18px;margin-top:20px;display:flex}.pagination-info{color:var(--text-muted);white-space:nowrap;font-size:.88rem}.settings-link-btn{margin-top:12px;display:inline-block}.logs-filters{margin:16px 0 20px}.logs-list{flex-direction:column;gap:8px;display:flex}.log-row{background:var(--surface);border:1px solid var(--border);border-radius:10px;grid-template-columns:130px 1fr auto;align-items:center;gap:16px;padding:12px 18px;display:grid}.log-cat{text-transform:uppercase;letter-spacing:.03em;text-align:center;background:var(--primary-light);color:var(--primary-dark);border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:700}.log-auth{background:var(--info-bg);color:var(--info-text)}.log-account{background:var(--primary-light);color:var(--primary-dark)}.log-role{background:var(--danger-bg);color:var(--danger)}.log-course{background:var(--success-bg);color:var(--success-text)}.log-enrollment{background:var(--warning-bg);color:var(--warning-text)}.log-showcase{background:var(--rose-bg);color:var(--rose-text)}.log-main{min-width:0}.log-message{color:var(--text-heading);font-size:.94rem}.log-actor{color:var(--text-muted);font-size:.8rem}.log-actor .log-role{color:var(--text-muted);background:0 0;padding:0;font-weight:400}.log-date{color:var(--text-muted);white-space:nowrap;font-size:.8rem}.onboarding-page{background:var(--bg);min-height:100vh;padding:40px 20px 60px}.onboarding-inner{max-width:760px;margin:0 auto}.onboarding-head{text-align:center;margin-bottom:24px}.onboarding-head .brand-logo{height:26px;margin-bottom:24px}.onboarding-head h1{margin-bottom:6px}.onboarding-head p{color:var(--text-muted)}.profile-form .builder-card{margin-top:18px}.avatar-upload{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:20px;padding:20px 24px;display:flex}.avatar-preview,.avatar-placeholder{object-fit:cover;border-radius:50%;flex-shrink:0;width:84px;height:84px}.avatar-placeholder{background:var(--primary);color:#fff;justify-content:center;align-items:center;font-size:2rem;font-weight:700;display:flex}.avatar-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.cv-uploaded{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:14px 18px;display:flex}.cv-file{color:var(--text-heading);text-overflow:ellipsis;font-weight:600;overflow:hidden}.cv-actions{align-items:center;gap:8px;display:flex}.edu-list{flex-direction:column;gap:10px;margin-bottom:16px;list-style:none;display:flex}.edu-item{background:var(--bg);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.edu-item.view{justify-content:flex-start;gap:14px}.edu-icon{font-size:1.4rem}.edu-sub{color:var(--text-muted);margin-top:2px;font-size:.88rem}.edu-form{border-top:1px dashed var(--border);padding-top:16px}.profile-header{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:24px;margin:12px 0 24px;padding:28px;display:flex}.profile-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:104px;height:104px}.profile-avatar-fallback{background:var(--primary);color:#fff;justify-content:center;align-items:center;font-size:2.6rem;font-weight:700;display:flex}.profile-identity h2{font-size:1.5rem}.profile-title{color:var(--primary);font-weight:600}.profile-location{color:var(--text-muted);margin-top:2px;font-size:.9rem}.profile-links{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.profile-link{background:var(--primary-light);color:var(--primary-dark);border-radius:999px;padding:6px 14px;font-size:.88rem;font-weight:600}.profile-link:hover{background:var(--primary-light)}.profile-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:24px}.profile-section h3{margin-bottom:12px}.profile-info-list{flex-direction:column;gap:12px;list-style:none;display:flex}.profile-info-list li{border-bottom:1px solid var(--border);justify-content:space-between;gap:16px;padding-bottom:10px;display:flex}.profile-info-list li:last-child{border-bottom:none;padding-bottom:0}.profile-info-list span{color:var(--text-muted)}.create-user-layout{grid-template-columns:1.4fr 1fr;align-items:start;gap:20px;max-width:900px;display:grid}.create-user-form{margin-top:20px}.role-picker{flex-wrap:wrap;gap:10px;display:flex}.role-option{border:1.5px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:.88rem;font-weight:600;display:flex}.role-option:disabled{cursor:default}.role-option-icon{border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.role-option.active{color:var(--text-heading)}.create-user-submit{margin-top:18px}.role-option-etudiant.active{border-color:var(--success-text)}.role-option-conseiller.active{border-color:var(--warning-text)}.role-option-admin.active{border-color:var(--danger)}.create-user-preview{text-align:center;flex-direction:column;align-items:center;gap:6px;margin-top:20px;display:flex;position:sticky;top:20px}.create-user-preview-avatar{width:64px;height:64px;margin-bottom:8px;font-size:1.6rem}.create-user-preview-name{color:var(--text-heading);font-size:1.05rem}.create-user-preview-email{color:var(--text-muted);word-break:break-all;font-size:.88rem}.create-user-preview-role{margin-top:10px}.create-user-preview-desc{color:var(--text-muted);margin-top:14px;font-size:.85rem;line-height:1.5}@media (width<=720px){.create-user-layout{grid-template-columns:1fr}.create-user-preview{position:static}}.settings-page .builder-card{max-width:620px;margin-top:18px}.settings-page .field{margin-bottom:14px}.danger-zone{border-color:var(--danger-border)}.sidebar-user-link{border-radius:10px;flex:1;align-items:center;gap:10px;min-width:0;padding:4px;transition:background .12s;display:flex}.sidebar-user-link:hover{background:var(--bg)}.avatar-img{object-fit:cover;padding:0}.sidebar-settings{text-decoration:none}.mobile-topbar,.sidebar-close,.sidebar-backdrop{display:none}@media (width<=900px){.app-shell{flex-direction:column}.mobile-topbar{z-index:40;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}.mobile-menu-btn{border:1px solid var(--border);background:var(--bg);width:36px;height:36px;color:var(--text-heading);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:flex}.sidebar-backdrop{z-index:49;background:#00000073;display:block;position:fixed;inset:0}.sidebar{z-index:50;width:260px;max-width:82vw;height:100vh;box-shadow:var(--shadow-hover);transition:transform .25s;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0)}.sidebar.collapsed{width:260px;max-width:82vw}.sidebar.collapsed .sidebar-top{flex-direction:row;padding:0 12px 24px}.sidebar.collapsed .sidebar-logo{opacity:1;pointer-events:auto;width:auto}.sidebar.collapsed .sidebar-label,.sidebar.collapsed .sidebar-group-title,.sidebar.collapsed .beta-capsule{display:revert}.sidebar.collapsed .sidebar-user-info{display:flex}.sidebar.collapsed .sidebar-link{justify-content:flex-start}.sidebar.collapsed .sidebar-user,.sidebar.collapsed .sidebar-user-link{flex-direction:row}.sidebar-toggle{display:none}.sidebar-close{border:1px solid var(--border);background:var(--bg);width:28px;height:28px;color:var(--text-muted);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.salary-toolbar{align-items:stretch}.salary-controls{gap:14px}.segmented{width:100%}.segment{text-align:center;flex:1;padding:8px 10px}.salary-row{align-items:flex-start;gap:12px;padding:16px}.salary-rank{margin-top:2px}.salary-caret{margin-top:6px}.salary-head{flex-direction:column;align-items:flex-start;gap:6px}.page-title-icon svg{position:relative;top:3px}.salary-legend{flex-wrap:wrap;gap:8px}.legend-markers{order:3;justify-content:space-between;width:100%}.salary-detail{padding:4px 16px 16px}.detail-label{width:88px}.detail-value{width:92px;font-size:.84rem}.job-card,.challenge-card{flex-direction:column;align-items:flex-start}.job-side{align-items:flex-start}.course-player{grid-template-columns:1fr;padding:20px}.course-outline{max-height:320px;position:static}.builder-grid{grid-template-columns:1fr}.user-row{grid-template-columns:1fr;gap:8px}.user-row-head{display:none}.user-cell-actions{justify-content:flex-start}.assigned-course{flex-wrap:wrap}}@media (width<=640px){.detail-header{flex-direction:column;padding:24px}}.group-cover{background:var(--primary-light);color:var(--primary)}.group-header{background:var(--primary-light)}.group-header-icon{background:var(--primary-light);width:88px;height:88px;color:var(--primary);border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.group-dashboard-icon{background:var(--primary-light);color:var(--primary)}.group-members{margin:24px 0 32px}.course-groups-section{margin:40px 0 8px}.course-groups-section .section-head{margin-bottom:14px}.course-groups-list{flex-direction:column;gap:12px;display:flex}.course-group-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:16px;padding:16px 20px;transition:border-color .15s,box-shadow .15s;display:flex}.course-group-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.course-group-icon{background:var(--primary-light);width:40px;height:40px;color:var(--primary);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.course-group-body{min-width:0;color:inherit;flex-direction:column;flex:1;gap:3px;text-decoration:none;display:flex}.course-group-body strong{color:var(--text-heading);font-size:.98rem}.course-group-meta{color:var(--text-muted);font-size:.84rem}.course-group-link{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;align-items:center;gap:10px;padding:9px 14px;font-size:.88rem;text-decoration:none;transition:border-color .15s,color .15s;display:flex}.course-group-link:hover{border-color:var(--primary);color:var(--primary-dark)}.course-group-link svg{color:var(--primary);flex-shrink:0}.course-group-name{font-weight:600}.course-group-teacher{color:var(--text-muted);font-size:.82rem}.course-group-go{color:var(--primary);white-space:nowrap;margin-left:auto;font-size:.82rem;font-weight:600}.workflow-hint{color:var(--text-muted);margin-bottom:14px;font-size:.86rem}.course-group-assign{border-left:2px solid var(--border);background:var(--bg);border-radius:0 10px 10px 0;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0 0 62px;padding:10px 14px;display:flex}.course-group-badge{background:var(--primary-light);color:var(--primary-dark);border-radius:999px;align-items:center;gap:7px;padding:5px 12px;font-size:.85rem;font-weight:600;display:inline-flex}.course-group-empty{color:var(--text-muted);font-size:.85rem}.group-course-link{color:var(--primary-dark);background:var(--primary-light);border-radius:999px;align-items:center;gap:7px;width:fit-content;padding:5px 12px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.student-picker{margin:12px 0}.student-picker-results{border:1px solid var(--border);border-radius:var(--radius);max-height:220px;margin:10px 0 0;padding:0;list-style:none;overflow:hidden auto}.student-picker-results li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.student-picker-results li:last-child{border-bottom:none}.member-chips{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.member-chip{background:var(--surface);border:1px solid var(--border);border-radius:999px;align-items:center;gap:8px;padding:6px 8px 6px 14px;font-size:.88rem;display:inline-flex}.member-chip button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.member-chip button:hover{background:var(--border);color:var(--text)}.group-tabs{gap:8px;margin-bottom:24px;display:flex}.assignment-list{flex-direction:column;gap:16px;display:flex}.assignment-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:flex-start;gap:16px;padding:20px;display:flex}.assignment-main{flex-direction:column;gap:8px;display:flex}.group-chat{flex-direction:column;gap:16px;height:480px;display:flex}.chat-messages{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.chat-message{background:var(--bg,#f4f5f9);border-radius:12px;align-self:flex-start;max-width:70%;padding:8px 14px}.chat-message.mine{background:var(--primary);color:#fff;align-self:flex-end}.chat-message.mine .chat-author,.chat-message.mine .chat-time{color:#fffc}.chat-message-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.chat-author{color:var(--primary);margin-bottom:2px;font-size:.78rem;font-weight:700;display:block}.chat-delete-btn{color:inherit;opacity:.5;cursor:pointer;background:0 0;border:none;flex-shrink:0;align-items:center;padding:2px;display:flex}.chat-delete-btn:hover{opacity:1}.chat-image,.chat-video{border-radius:8px;max-width:100%;max-height:260px;margin:4px 0;display:block}.chat-code{white-space:pre-wrap;word-break:break-word;background:#0000000f;border-radius:8px;margin:4px 0;padding:10px 12px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem;overflow-x:auto}.chat-message.mine .chat-code{background:#ffffff26}.chat-code-lang{text-transform:uppercase;letter-spacing:.04em;opacity:.7;margin-bottom:6px;font-family:inherit;font-size:.7rem;font-weight:700;display:block}.chat-message p{white-space:pre-wrap;word-break:break-word;margin:0}.chat-time{color:var(--text-muted);text-align:right;margin-top:4px;font-size:.7rem;display:block}.chat-input-row{align-items:flex-end;gap:10px;display:flex}.chat-input-row input,.chat-input-row textarea{border:1px solid var(--border);background:var(--surface);color:var(--text-heading);resize:none;border-radius:10px;flex:1;max-height:140px;padding:12px 16px;font-family:inherit;font-size:1rem}.chat-input-row textarea.code-input{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem}.chat-input-row input:focus,.chat-input-row textarea:focus{outline:2px solid var(--primary);border-color:#0000}.chat-input-row button{justify-content:center;align-items:center;display:flex}.chat-attach-btn{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text-muted);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-attach-btn:hover{color:var(--primary);border-color:var(--primary)}.chat-attach-btn.active{color:#fff;background:var(--primary);border-color:var(--primary)}.chat-attach-btn input[type=file]{display:none}.code-composer-bar{align-items:center;gap:10px;display:flex}.code-language-input{border:1px solid var(--border);background:var(--surface);color:var(--text-heading);border-radius:8px;flex:1;padding:8px 14px;font-size:.85rem}.theme-choices{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.theme-choice{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:10px 16px;font-size:.92rem;font-weight:600;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.theme-choice:hover{border-color:var(--border-strong)}.theme-choice.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.feature-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:20px;margin-top:12px;padding:14px 0;display:flex}.feature-row-main{flex-direction:column;gap:3px;min-width:0;display:flex}.feature-row-main strong{color:var(--text-heading);font-size:.98rem}.feature-row-main span{color:var(--text-muted);font-size:.88rem}.switch{background:var(--border-strong);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;width:46px;height:26px;padding:3px;transition:background .16s;display:flex}.switch.on{background:var(--success)}.switch:disabled{opacity:.55;cursor:progress}.switch-knob{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .16s;box-shadow:0 1px 3px #00000040}.switch.on .switch-knob{transform:translate(20px)}::view-transition-old(root){z-index:0;animation:none}::view-transition-new(root){z-index:1;animation:none}.theme-toggle-icon{animation:.45s cubic-bezier(.22,1,.36,1) both themeIconIn;display:flex}@keyframes themeIconIn{0%{opacity:0;transform:rotate(-140deg)scale(.4)}to{opacity:1;transform:rotate(0)scale(1)}}@media (prefers-reduced-motion:reduce){.theme-toggle-icon{animation:none}}.notif-panel{transform-origin:100% 0;animation:.26s cubic-bezier(.22,1,.36,1) both notifPanelIn}@keyframes notifPanelIn{0%{opacity:0;transform:translateY(-8px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}.notif-panel .notif-item{animation:.28s both notifItemIn;animation-delay:calc(90ms + var(--i,0) * 35ms)}@keyframes notifItemIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.notif-panel .notif-head,.notif-panel .notif-empty,.notif-panel .notif-all{animation:.3s 80ms both fadeIn}.notif-bell-icon{transform-origin:50% 15%;display:flex}.notif-bell-icon.sonne{animation:.6s cubic-bezier(.36,.07,.19,.97) both notifSonne}@keyframes notifSonne{0%{transform:rotate(0)}15%{transform:rotate(16deg)}30%{transform:rotate(-13deg)}45%{transform:rotate(9deg)}60%{transform:rotate(-6deg)}75%{transform:rotate(3deg)}to{transform:rotate(0)}}.notif-bell.open{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.notif-bell:active{transform:scale(.92)}.notif-bell{transition:box-shadow .15s,border-color .15s,background .15s,color .15s,transform .1s}@media (prefers-reduced-motion:reduce){.notif-panel,.notif-panel .notif-item,.notif-panel .notif-head,.notif-panel .notif-empty,.notif-panel .notif-all,.notif-bell-icon.sonne{animation:none}.notif-bell:active{transform:none}}.sidebar-icon{transition:transform .18s cubic-bezier(.22,1,.36,1);display:flex}.sidebar-icon svg *,.sidebar-icon svg{transform-box:fill-box;transform-origin:50%}.sidebar-link:hover [data-anim=grille] rect,.sidebar-link.active [data-anim=grille] rect{animation:.5s both tuilePop}.sidebar-link:hover [data-anim=grille] rect:nth-child(2),.sidebar-link.active [data-anim=grille] rect:nth-child(2){animation-delay:60ms}.sidebar-link:hover [data-anim=grille] rect:nth-child(3),.sidebar-link.active [data-anim=grille] rect:nth-child(3){animation-delay:.12s}.sidebar-link:hover [data-anim=grille] rect:nth-child(4),.sidebar-link.active [data-anim=grille] rect:nth-child(4){animation-delay:.18s}@keyframes tuilePop{0%{transform:scale(1)}45%{transform:scale(.72)}to{transform:scale(1)}}.sidebar-link:hover [data-anim=livre] svg,.sidebar-link.active [data-anim=livre] svg{animation:.6s both livreOuvre}@keyframes livreOuvre{0%{transform:rotate(0)scale(1)}40%{transform:rotate(-9deg)scale(1.08)}to{transform:rotate(0)scale(1)}}.sidebar-link:hover [data-anim=toque] path:first-child,.sidebar-link.active [data-anim=toque] path:first-child{animation:.6s cubic-bezier(.34,1.56,.64,1) both toqueSaut}@keyframes toqueSaut{0%{transform:translateY(0)}40%{transform:translateY(-3px)}to{transform:translateY(0)}}.sidebar-link:hover [data-anim=crayon] path:last-child,.sidebar-link.active [data-anim=crayon] path:last-child{animation:.62s both crayonEcrit}@keyframes crayonEcrit{0%{transform:translate(0)rotate(0)}25%{transform:translate(1.5px,-1.5px)rotate(6deg)}55%{transform:translate(-1px,1px)rotate(-5deg)}to{transform:translate(0)rotate(0)}}.sidebar-link:hover [data-anim=onde] svg,.sidebar-link.active [data-anim=onde] svg{animation:.7s both ondePulse}.sidebar-link:hover [data-anim=onde] path:first-child,.sidebar-link.active [data-anim=onde] path:first-child{animation:.7s both cligne}@keyframes ondePulse{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes cligne{0%,35%,55%,to{opacity:1}45%{opacity:.15}}.sidebar-link:hover [data-anim=fusee] svg,.sidebar-link.active [data-anim=fusee] svg{animation:.65s cubic-bezier(.34,1.56,.64,1) both fuseeDecolle}@keyframes fuseeDecolle{0%{transform:translate(0)}35%{transform:translate(2.5px,-3px)}to{transform:translate(0)}}.sidebar-link:hover [data-anim=trophee] svg,.sidebar-link.active [data-anim=trophee] svg{animation:.7s both tropheeLeve}@keyframes tropheeLeve{0%{transform:translateY(0)rotate(0)}30%{transform:translateY(-2.5px)rotate(-10deg)}60%{transform:translateY(-2.5px)rotate(8deg)}to{transform:translateY(0)rotate(0)}}.sidebar-link:hover [data-anim=portefeuille] svg,.sidebar-link.active [data-anim=portefeuille] svg{animation:.6s cubic-bezier(.34,1.56,.64,1) both porteMonnaie}@keyframes porteMonnaie{0%{transform:translateY(0)scaleY(1)}35%{transform:translateY(-2px)scaleY(1.1)}70%{transform:translateY(0)scaleY(.94)}to{transform:translateY(0)scaleY(1)}}.sidebar-link:hover [data-anim=mallette] path,.sidebar-link.active [data-anim=mallette] path{animation:.6s both anseLeve}@keyframes anseLeve{0%{transform:translateY(0)}40%{transform:translateY(-2.5px)}to{transform:translateY(0)}}.sidebar-link:hover [data-anim=bouclier] svg,.sidebar-link.active [data-anim=bouclier] svg{animation:.6s both bouclierPulse}@keyframes bouclierPulse{0%{transform:scale(1)}30%{transform:scale(1.16)}55%{transform:scale(.95)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.sidebar-icon,.sidebar-icon svg,.sidebar-icon svg *{transition:none;animation:none!important}}@media (width<=560px){.page{padding:24px 16px 48px}.page h1{font-size:1.55rem}.page-subtitle{margin-bottom:20px}.topbar{padding:10px 16px 0}body{overflow-x:clip}.page p,.chat-message,.assignment-main,.notif-item-info{overflow-wrap:anywhere}.detail-header,.group-header{flex-direction:column;gap:16px;padding:20px}.detail-progress{width:100%;min-width:0}.group-header-icon{border-radius:14px;width:60px;height:60px}.dash-stats{grid-template-columns:1fr 1fr;gap:12px}.dashboard-item-main{flex-direction:column;align-items:flex-start;gap:12px;padding:16px}.dashboard-item-groups{padding:10px 16px 12px}.assignment-card{flex-direction:column;align-items:stretch;padding:16px}.group-chat{height:min(480px,62vh)}.chat-messages{padding:12px}.chat-message{max-width:88%}.chat-input-row textarea{font-size:16px}.log-row{grid-template-columns:1fr;gap:8px;padding:14px 16px}.builder-pickers{gap:20px}.builder-actions{flex-wrap:wrap}.builder-actions .btn{flex:auto}.theme-choice{flex:auto;justify-content:center}.feature-row{align-items:flex-start;gap:14px}.notif-panel{width:auto;max-width:none;position:fixed;top:64px;left:12px;right:12px}.course-grid,.mycourses-grid,.showcase-grid,.leaderboard-grid{grid-template-columns:1fr}.search-input,.search-field{max-width:none}.btn{min-height:42px}}@media (width<=380px){.dash-stats,.stats-row,.insight-row{grid-template-columns:1fr}.auth-socials{gap:10px}}
