@charset "UTF-8";.frontiere-erreur{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:3rem 1.5rem;background-color:var(--bg)}.frontiere-erreur__carte{width:100%;max-width:32rem;padding:2.5rem;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-sm);text-align:center}.frontiere-erreur__code{margin:0;font-family:var(--font-mono);font-size:.85rem;letter-spacing:.18em;color:var(--danger)}.frontiere-erreur__titre{margin:.6rem 0 1.25rem;font-family:var(--font-heading);font-size:1.6rem;font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--ink)}.frontiere-erreur__texte{margin:0 0 1.5rem;font-size:.95rem;line-height:1.6;color:var(--ink-soft)}.frontiere-erreur__detail{margin:0 0 1.5rem;padding:.75rem .9rem;border-radius:10px;background:var(--surface-2);font-family:var(--font-mono);font-size:.78rem;line-height:1.5;color:var(--ink-soft);text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;max-height:9rem;overflow:auto}.frontiere-erreur__actions{display:flex;flex-direction:column;align-items:center;gap:.9rem}.frontiere-erreur__bouton{padding:.7rem 1.4rem;border:none;border-radius:10px;background:var(--brand);color:var(--brand-ink);font-weight:600;font-size:.9rem;cursor:pointer}.frontiere-erreur__bouton:hover{background:var(--brand-strong)}.frontiere-erreur__lien{color:var(--brand);font-size:.9rem;text-decoration:none}.frontiere-erreur__lien:hover{text-decoration:underline}.frontiere-erreur__bouton:focus-visible,.frontiere-erreur__lien:focus-visible{outline:2px solid var(--brand);outline-offset:3px}@media (max-width: 480px){.frontiere-erreur__carte{padding:1.75rem 1.25rem}}.theme-toggle{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background-color:var(--surface-2);color:var(--ink-soft);cursor:pointer;flex-shrink:0;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .15s ease}.theme-toggle:hover{border-color:var(--brand);color:var(--brand)}.theme-toggle:active{transform:scale(.94)}.theme-toggle__icon{position:absolute;width:19px;height:19px;transition:opacity .25s ease,transform .4s cubic-bezier(.34,1.56,.64,1)}.theme-toggle__icon--sun{opacity:1;transform:rotate(0) scale(1)}.theme-toggle__icon--moon{opacity:0;transform:rotate(-60deg) scale(.5)}.theme-toggle[aria-pressed=true] .theme-toggle__icon--sun{opacity:0;transform:rotate(60deg) scale(.5)}.theme-toggle[aria-pressed=true] .theme-toggle__icon--moon{opacity:1;transform:rotate(0) scale(1)}@media (prefers-reduced-motion: reduce){.theme-toggle__icon{transition:opacity .15s ease;transform:none!important}}:root{--header-hauteur: 74px}@media (max-width: 640px){:root{--header-hauteur: 69px}}.header{position:sticky;top:0;z-index:1000;background-color:var(--surface);border-bottom:1px solid var(--border)}.header__container{max-width:1400px;margin:0 auto;padding:.875rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:2rem}.header__logo{display:flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--ink)}.header__logo-mark{width:34px;height:34px;-o-object-fit:contain;object-fit:contain;flex-shrink:0;box-shadow:0 3px 10px color-mix(in srgb,var(--brand) 45%,transparent);border-radius:9px}.header__logo-text{display:flex;align-items:baseline;gap:.2rem;font-family:Space Grotesk,sans-serif;line-height:1}.header__logo-name{font-size:1.2rem;font-weight:700}.header__logo-suffix{font-size:1.2rem;font-weight:500;color:var(--ink-soft)}.header__nav{display:flex;align-items:center;gap:.25rem;flex:1;justify-content:center}.header__nav-link{white-space:nowrap;position:relative;padding:.6rem 1rem;border-radius:8px;color:var(--ink-soft);text-decoration:none;font-weight:600;font-size:.925rem;transition:color .2s ease,background-color .2s ease}.header__nav-link:hover{color:var(--ink);background-color:var(--surface-2)}.header__nav-link--active{color:var(--brand)}.header__nav-link--active:after{content:"";position:absolute;bottom:.1rem;left:1rem;right:1rem;height:2px;background:var(--brand);border-radius:2px}.header__actions{display:flex;align-items:center;gap:.75rem}.header__user-menu{position:relative}.header__user-button{display:flex;align-items:center;gap:.65rem;padding:.35rem .75rem .35rem .35rem;background-color:var(--surface-2);border:1px solid var(--border);border-radius:50px;color:var(--ink);cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.header__user-button:hover{border-color:var(--border-strong)}.header__user-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0}.header__user-info{display:flex;flex-direction:column;align-items:flex-start;text-align:left;line-height:1.25}.header__user-name{font-weight:600;font-size:.875rem;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-role{font-size:.72rem;color:var(--ink-faint)}.header__user-arrow{color:var(--ink-faint);transition:transform .2s ease;flex-shrink:0}.header__user-button[aria-expanded=true] .header__user-arrow{transform:rotate(180deg)}.header__user-dropdown{position:absolute;top:calc(100% + .5rem);right:0;min-width:190px;background-color:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden;animation:header-dropdown-in .18s ease}@keyframes header-dropdown-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.header__dropdown-item{display:flex;align-items:center;padding:.8rem 1.1rem;color:var(--danger);text-decoration:none;background:none;border:none;width:100%;text-align:left;font-size:.9rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.header__dropdown-item:hover{background-color:var(--danger-soft)}.header__mobile-toggle{display:none;align-items:center;justify-content:center;width:40px;height:40px;background:none;border:1px solid var(--border);border-radius:8px;color:var(--ink);cursor:pointer}.header__mobile-toggle-icon{display:inline-flex;flex-direction:column;gap:4px;width:18px}.header__mobile-toggle-icon span{display:block;height:2px;width:100%;background-color:currentColor;border-radius:1px;transition:transform .2s ease,opacity .2s ease}.header__mobile-toggle-icon--open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.header__mobile-toggle-icon--open span:nth-child(2){opacity:0}.header__mobile-toggle-icon--open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.header__mobile-nav{display:flex;flex-direction:column;padding:.5rem 1rem 1rem;background-color:var(--surface);border-top:1px solid var(--border);animation:header-dropdown-in .2s ease}.header__mobile-link{display:flex;align-items:center;padding:.85rem .75rem;color:var(--ink);text-decoration:none;font-weight:600;border-radius:8px;background:none;border:none;width:100%;text-align:left;cursor:pointer;font-size:1rem}.header__mobile-link:hover,.header__mobile-link--active{background-color:var(--surface-2);color:var(--brand)}.header__mobile-link--logout{color:var(--danger)}.header__mobile-divider{height:1px;background-color:var(--border);margin:.5rem 0}@media (max-width: 1340px){.header__logo-text{display:none}}@media (max-width: 1220px){.header__user-info{display:none}}@media (max-width: 1120px){.header__nav{display:none}.header__mobile-toggle{display:flex}}@media (max-width: 640px){.header__container{padding:.75rem 1rem}.header__user-button{padding:.3rem}}@media (prefers-reduced-motion: reduce){.header__user-dropdown,.header__mobile-nav{animation:none}}.footer{background-color:var(--surface);border-top:1px solid var(--border);margin-top:auto}.footer__container{max-width:1400px;margin:0 auto;padding:2rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap}.footer__brand{display:flex;flex-direction:column;gap:.5rem;max-width:340px}.footer__logo{display:flex;align-items:center;gap:.5rem;color:var(--ink);font-weight:700;font-family:Space Grotesk,sans-serif;font-size:1.05rem}.footer__logo-mark{width:24px;height:24px;-o-object-fit:contain;object-fit:contain;flex-shrink:0;border-radius:6px}.footer__tagline{font-size:.85rem;line-height:1.6;color:var(--ink-soft)}.footer__links{display:flex;gap:1.5rem;flex-wrap:wrap}.footer__link{color:var(--ink-soft);text-decoration:none;font-size:.875rem;font-weight:500;transition:color .15s ease}.footer__link:hover{color:var(--brand)}.footer__copyright{font-size:.8rem;color:var(--ink-faint);margin:0;white-space:nowrap}@media (max-width: 640px){.footer__container{padding:1.5rem 1rem;flex-direction:column;align-items:flex-start;text-align:left}}.scroll-to-top{position:fixed;right:1.5rem;bottom:1.5rem;z-index:900;display:flex;align-items:center;justify-content:center;width:46px;height:46px;border:none;border-radius:50%;background-color:var(--brand);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--brand) 45%,transparent);cursor:pointer;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .25s ease,transform .25s ease,visibility .25s ease,background-color .2s ease,box-shadow .2s ease}.scroll-to-top--visible{opacity:1;visibility:visible;transform:translateY(0)}.scroll-to-top:hover{background-color:var(--brand-strong);box-shadow:0 6px 16px color-mix(in srgb,var(--brand) 55%,transparent);transform:translateY(-2px)}.scroll-to-top:active{transform:translateY(0)}@media (max-width: 768px){.scroll-to-top{right:1rem;bottom:1rem;width:42px;height:42px}}@media (prefers-reduced-motion: reduce){.scroll-to-top{transition:opacity .15s ease,visibility .15s ease;transform:none}.scroll-to-top--visible{transform:none}}.badge-reveal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:1.5rem;background:color-mix(in srgb,var(--ink) 65%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:badge-reveal-backdrop .25s ease both}@keyframes badge-reveal-backdrop{0%{opacity:0}to{opacity:1}}.badge-reveal__card{position:relative;overflow:hidden;width:min(420px,100%);padding:2.5rem 2rem 2rem;border-radius:24px;text-align:center;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-xl);animation:badge-reveal-pop .45s cubic-bezier(.34,1.56,.64,1) both}@keyframes badge-reveal-pop{0%{opacity:0;transform:scale(.85) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.badge-reveal__card--gold,.badge-reveal__card--legendary{border-color:var(--accent)}.badge-reveal__kicker{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--accent-text);margin-bottom:1.25rem}.badge-reveal__medal{width:110px;height:110px;margin:0 auto 1.25rem;border-radius:50%;display:grid;place-items:center;font-size:3.25rem;background:var(--accent-soft);border:3px solid var(--accent);animation:badge-reveal-medal .9s ease .2s both}@keyframes badge-reveal-medal{0%{transform:scale(.2) rotate(-140deg);opacity:0}60%{transform:scale(1.12) rotate(8deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}.badge-reveal__card--legendary .badge-reveal__medal{background:var(--brand-soft);border-color:var(--brand);box-shadow:0 0 0 8px color-mix(in srgb,var(--brand) 15%,transparent)}.badge-reveal__name{font-family:Space Grotesk,sans-serif;font-size:1.6rem;font-weight:700;letter-spacing:-.01em;color:var(--ink);margin-bottom:.5rem}.badge-reveal__description{font-size:.95rem;line-height:1.55;color:var(--ink-soft);margin-bottom:1.25rem}.badge-reveal__reward{display:inline-block;font-weight:700;color:var(--accent-text);background:var(--accent-soft);padding:.35rem .9rem;border-radius:999px;margin-bottom:1.5rem}.badge-reveal__button{width:100%;padding:.85rem 1.5rem;border:none;border-radius:12px;background:linear-gradient(135deg,var(--brand),var(--brand-strong));color:var(--brand-ink);font-size:1rem;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.badge-reveal__button:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.badge-reveal__button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.badge-reveal__confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.badge-reveal__confetto{position:absolute;top:-12px;width:8px;height:14px;border-radius:2px;background:var(--accent);opacity:0;animation:badge-reveal-fall 1.6s ease-in .25s both}.badge-reveal__confetto:nth-child(3n){background:var(--brand)}.badge-reveal__confetto:nth-child(3n+1){background:var(--ok)}.badge-reveal__confetto:nth-child(4n){width:6px;height:6px;border-radius:50%}@keyframes badge-reveal-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(420px) rotate(540deg)}}@media (prefers-reduced-motion: reduce){.badge-reveal__confetti{display:none}}.layout{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg)}.layout__main{flex:1;display:flex;flex-direction:column}:root{--font-base: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif;--font-heading: Space Grotesk, Inter, sans-serif;--font-mono: JetBrains Mono, Fira Code, Consolas, monospace}:root,[data-theme=light]{--brand: #5b3df0;--brand-strong: #4527d6;--brand-soft: #efeafe;--accent: #f5a623;--accent-text: #9a5b00;--accent-soft: #fef3dc;--ok: #16a34a;--ok-text: #157f3c;--ok-soft: #e8f8ee;--danger: #dc2626;--danger-soft: #fdecec;--warn: var(--accent);--warn-text: var(--accent-text);--warn-soft: var(--accent-soft);--bg: #f6f5fb;--surface: #ffffff;--surface-2: #f0eefa;--ink: #17132a;--ink-soft: #5b5570;--ink-faint: #8d87a3;--border: #e3e0f0;--border-strong: #8d87a3;--banner-from: #17132a;--banner-to: #4527d6;--brand-ink: #ffffff;--theory: #2563eb;--theory-soft: #e7edfe;--quiz: #9333ea;--quiz-soft: #f3e8fe;--easy: var(--ok-text);--easy-soft: var(--ok-soft);--medium: var(--accent-text);--medium-soft: var(--accent-soft);--hard: var(--danger);--hard-soft: var(--danger-soft);--shadow-tint: 250deg 45% 20%;--shadow-sm: 0 1px 2px hsl(var(--shadow-tint) / .06);--shadow-md: 0 4px 10px hsl(var(--shadow-tint) / .1), 0 2px 4px hsl(var(--shadow-tint) / .06);--shadow-lg: 0 12px 24px hsl(var(--shadow-tint) / .14), 0 4px 8px hsl(var(--shadow-tint) / .08);--shadow-xl: 0 24px 48px hsl(var(--shadow-tint) / .18), 0 8px 16px hsl(var(--shadow-tint) / .1);color-scheme:light}[data-theme=dark]{--brand: #8471f5;--brand-strong: #a395f8;--brand-soft: #251c4a;--accent: #f7b940;--accent-text: #f7b940;--accent-soft: #3a2c10;--ok: #4ade80;--ok-text: #4ade80;--ok-soft: #113322;--danger: #f87171;--danger-soft: #3a1414;--warn: var(--accent);--warn-text: var(--accent-text);--warn-soft: var(--accent-soft);--bg: #110d22;--surface: #1b1633;--surface-2: #241d42;--ink: #edebf8;--ink-soft: #a79fc4;--ink-faint: #756e92;--border: #322a55;--border-strong: #6a5da0;--banner-from: #1e1838;--banner-to: #4a2ee0;--brand-ink: #140f26;--theory: #7fa2ff;--theory-soft: #1c2748;--quiz: #c98bf5;--quiz-soft: #2c1f42;--easy: var(--ok-text);--easy-soft: var(--ok-soft);--medium: var(--accent-text);--medium-soft: var(--accent-soft);--hard: var(--danger);--hard-soft: var(--danger-soft);--shadow-tint: 250deg 60% 2%;--shadow-sm: 0 1px 2px hsl(var(--shadow-tint) / .4);--shadow-md: 0 4px 10px hsl(var(--shadow-tint) / .5), 0 2px 4px hsl(var(--shadow-tint) / .3);--shadow-lg: 0 12px 24px hsl(var(--shadow-tint) / .55), 0 4px 8px hsl(var(--shadow-tint) / .35);--shadow-xl: 0 24px 48px hsl(var(--shadow-tint) / .6), 0 8px 16px hsl(var(--shadow-tint) / .4);color-scheme:dark}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border-width:0;border-style:solid;border-color:var(--border)}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;line-height:1.5;color:var(--ink);background-color:var(--bg);min-height:100vh}::-moz-selection{background-color:var(--brand);color:#fff}::selection{background-color:var(--brand);color:#fff}h1,h2,h3,h4,h5,h6{font-family:Space Grotesk,Inter,sans-serif;font-weight:700;line-height:1.2;margin:0}p{margin:0 0 1rem}a{color:var(--brand);text-decoration:none;transition:color .15s ease-in-out}a:hover{color:var(--brand-strong)}:where(button,input,optgroup,select,textarea){font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}:where(button,[type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button;background-color:transparent;background-image:none;cursor:pointer}:where(button,[type=button],[type=reset],[type=submit]):disabled{cursor:not-allowed}::-moz-placeholder{opacity:1;color:var(--ink-faint)}::placeholder{opacity:1;color:var(--ink-faint)}textarea{resize:vertical}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}ul,ol{list-style:none}code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.9em;background-color:var(--surface-2);padding:2px 6px;border-radius:.375rem}pre{margin:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}table{border-collapse:collapse;width:100%}hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.auth-page{min-height:100vh;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:3rem;background-color:var(--bg);background-image:radial-gradient(circle at 15% 20%,color-mix(in srgb,var(--brand) 12%,transparent),transparent 45%),radial-gradient(circle at 85% 80%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 45%);padding:2rem}.auth-logo{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--ink);font-family:Space Grotesk,Inter,sans-serif;font-weight:700;font-size:1.25rem;animation:fadeIn .2s cubic-bezier(.4,0,.2,1)}.auth-logo__mark{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:.625rem;background:linear-gradient(135deg,var(--brand),var(--brand-strong));color:var(--brand-ink);font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.85rem;box-shadow:0 4px 14px color-mix(in srgb,var(--brand) 40%,transparent)}.auth-container{width:100%;max-width:440px;display:flex;flex-direction:column;align-items:center;gap:2rem;animation:slideUp .32s cubic-bezier(.4,0,.2,1)}.auth-card{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;width:100%;box-shadow:var(--shadow-xl);padding:3rem}.auth-header{text-align:center;margin-bottom:3rem}.auth-header__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--ink);margin-bottom:1rem;margin-bottom:.5rem}.auth-header__subtitle{color:var(--ink-soft);font-size:.875rem}.auth-form__row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 400px){.auth-form__row{grid-template-columns:1fr}}.auth-form__group{margin-bottom:1.5rem}.auth-form__label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--ink);font-size:.875rem}.auth-form__input{width:100%;padding:1rem;background-color:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:.625rem;font-size:1rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.auth-form__input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 15%,transparent)}.auth-form__input::-moz-placeholder{color:var(--ink-faint)}.auth-form__input::placeholder{color:var(--ink-faint)}.auth-form__hint{display:block;margin-top:.5rem;color:var(--ink-faint);font-size:.75rem}.auth-form__error{margin-top:.5rem;color:var(--danger);font-size:.875rem}.auth-form__forgot{display:block;margin-top:.5rem;text-align:right;color:var(--brand);font-size:.75rem;font-weight:600;text-decoration:none}.auth-form__forgot:hover{text-decoration:underline}.auth-form__submit{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.5rem;font-weight:600;text-align:center;border-radius:.625rem;border:1px solid transparent;cursor:pointer;transition:transform .15s ease-in-out,box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem}.auth-form__submit:disabled{opacity:.5;cursor:not-allowed}.auth-form__submit:active:not(:disabled){transform:translateY(1px)}.auth-form__submit{background-color:var(--brand);color:#fff;box-shadow:0 1px 2px color-mix(in srgb,var(--brand) 30%,transparent)}.auth-form__submit:hover:not(:disabled){background-color:var(--brand-strong)}.auth-form__submit{width:100%;padding:1rem;font-size:1rem;margin-top:.5rem}.password-field{position:relative}.password-field__input{padding-right:3rem}.password-field__toggle{position:absolute;top:50%;right:.5rem;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:none;border-radius:.625rem;background:transparent;font-size:1.15rem;line-height:1;cursor:pointer;transition:background-color .15s ease-in-out,transform .15s ease-in-out}.password-field__toggle:hover{background-color:color-mix(in srgb,var(--brand) 10%,transparent)}.password-field__toggle:active{transform:translateY(-50%) scale(.9)}.password-field__toggle:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.auth-form__consent{display:flex;align-items:flex-start;gap:.5rem;margin:1rem 0;font-size:.9rem;color:var(--ink-soft);line-height:1.5}.auth-form__consent input[type=checkbox]{margin-top:.2rem;width:1.05rem;height:1.05rem;flex-shrink:0;accent-color:var(--brand);cursor:pointer}.auth-form__consent a{color:var(--brand);text-decoration:underline}.auth-footer{text-align:center;margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)}.auth-footer__text{color:var(--ink-soft);font-size:.875rem;margin-bottom:.5rem}.auth-footer__link{color:var(--brand);font-weight:600;transition:color .15s ease-in-out}.auth-footer__link:hover{color:var(--brand-strong);text-decoration:underline}.auth-alert{padding:1rem;border-radius:.625rem;margin-bottom:1.5rem;font-size:.875rem;line-height:1.5}.auth-alert ul{padding-left:1.5rem;list-style:disc}.auth-alert--error{background-color:var(--hard-soft);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent)}.auth-alert--success{background-color:var(--easy-soft);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 35%,transparent)}.chapters-page{min-height:100vh;background-color:var(--bg);padding:3rem 0}.chapters-container{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.chapters-container{padding:0 3rem}}.chapters-header{margin-bottom:4rem;animation:slideUp .32s cubic-bezier(.4,0,.2,1)}.chapters-header__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.875rem,4vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--ink);margin-bottom:1.5rem;text-align:center;margin-bottom:1rem}.chapters-header__subtitle{text-align:center;color:var(--ink-soft);font-size:1.125rem}.chapters-grid{display:grid;grid-template-columns:1fr;gap:2rem}@media (min-width: 768px){.chapters-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.chapters-grid{grid-template-columns:repeat(3,1fr)}.chapters-grid>:last-child:nth-child(3n+1){grid-column:1/-1}}.chapter-card{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1)}.chapter-card:hover{box-shadow:var(--shadow-lg);border-color:var(--border-strong);transform:translateY(-3px)}.chapter-card{display:flex;flex-direction:column;cursor:pointer;text-decoration:none;color:inherit;position:relative;overflow:hidden;padding-top:calc(2rem + 4px);animation:fadeIn .2s cubic-bezier(.4,0,.2,1)}.chapter-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--brand),var(--brand-strong))}@media (min-width: 768px){.chapter-card:last-child:nth-child(odd){grid-column:1/-1}}@media (min-width: 1024px){.chapter-card:last-child:nth-child(odd){grid-column:auto}.chapter-card:last-child:nth-child(3n+1){grid-column:1/-1}}.chapter-card--locked{cursor:default;opacity:.72}.chapter-card--locked:before{background:var(--border-strong)}.chapter-card--locked:hover{transform:none;box-shadow:var(--shadow-sm)}.chapter-card--locked .chapter-card__index{color:var(--ink-faint);background-color:var(--surface-2)}.chapter-card__locked-hint{margin-top:1rem;padding-top:1rem;border-top:1px dashed var(--border);font-size:.75rem;color:var(--ink-faint)}.chapter-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.chapter-card__index{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.875rem;font-weight:700;color:var(--brand);background-color:var(--brand-soft);padding:.2em .55em;border-radius:.375rem;letter-spacing:.02em;flex-shrink:0}.chapter-card__title{font-family:Space Grotesk,Inter,sans-serif;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.5;margin-bottom:1rem;margin-bottom:.5rem;color:var(--ink);transition:color .15s ease-in-out}.chapter-card:hover .chapter-card__title{color:var(--brand)}.chapter-card__description{color:var(--ink-soft);font-size:.875rem;line-height:1.75;margin-bottom:1.5rem;flex-grow:1}.chapter-card__meta{display:flex;align-items:center;gap:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border);font-size:.875rem;color:var(--ink-soft);flex-wrap:wrap}.chapter-card__meta-item{display:flex;align-items:center;gap:.25rem}.chapter-card__meta-item svg{width:16px;height:16px}.chapter-card__badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem 1rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background-color:var(--ok-soft);color:var(--ok-text);white-space:nowrap}.chapter-card__badge--locked{background-color:var(--surface-2);color:var(--ink-faint)}.chapter-detail-page{min-height:100vh;background-color:var(--bg);padding:0 0 3rem}.chapter-detail-container{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.chapter-detail-container{padding:0 3rem}}.chapter-breadcrumb{position:sticky;top:var(--header-hauteur, 0);z-index:900;background-color:var(--surface);padding:1.5rem 0;margin-bottom:3rem;font-size:.875rem;color:var(--ink-soft);box-shadow:var(--shadow-sm);border-bottom:1px solid var(--border);transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.chapter-breadcrumb__link{color:var(--brand);transition:color .15s ease-in-out;font-weight:500}.chapter-breadcrumb__link:hover{color:var(--brand-strong);text-decoration:underline}.chapter-breadcrumb__separator{margin:0 .5rem;color:var(--ink-faint)}.chapter-breadcrumb__current{color:var(--ink-soft);font-weight:500}.chapter-detail-header{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;margin-bottom:3rem;animation:slideUp .32s cubic-bezier(.4,0,.2,1)}.chapter-detail-header__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.875rem,4vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--ink);margin-bottom:1.5rem}.chapter-detail-header__description{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;line-height:1.75;color:var(--ink);color:var(--ink-soft);margin-bottom:2rem;max-width:68ch}.chapter-detail-header__meta{display:flex;align-items:center;gap:2rem;padding-top:1.5rem;border-top:1px solid var(--border);flex-wrap:wrap}.chapter-detail-header__meta-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--ink-soft)}.chapter-detail-header__meta-item svg{width:18px;height:18px;color:var(--brand)}.chapter-detail-header__meta-item strong{color:var(--ink);font-weight:600}.chapter-detail-header__badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem 1rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background-color:var(--ok);color:#fff}.lessons-section__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--ink);margin-bottom:1rem;margin-bottom:2rem}.lessons-list{display:flex;flex-direction:column;gap:1.5rem;position:relative}.lessons-list:before{content:"";position:absolute;top:24px;bottom:24px;left:24px;width:2px;background:repeating-linear-gradient(to bottom,var(--border-strong) 0,var(--border-strong) 4px,transparent 4px,transparent 9px);z-index:0}.lesson-card{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;display:flex;align-items:center;gap:1.5rem;transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:inherit;position:relative;z-index:1}.lesson-card:hover{box-shadow:var(--shadow-lg);border-color:var(--border-strong);transform:translate(6px)}.lesson-card--completed .lesson-card__number{background-color:var(--ok)}.lesson-card__number{flex-shrink:0;width:48px;height:48px;border-radius:9999px;background-color:var(--brand);color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:1.125rem;font-family:JetBrains Mono,Fira Code,Consolas,monospace;border:3px solid var(--bg);box-shadow:0 0 0 2px var(--border-strong)}.lesson-card__content{flex-grow:1}.lesson-card__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:1rem;flex-wrap:wrap}.lesson-card__title{font-size:1.25rem;font-weight:600;color:var(--ink);margin:0}.lesson-card__badges{display:flex;align-items:center;gap:.5rem}.lesson-card__badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem 1rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.lesson-card__badge--theory{background-color:var(--theory-soft);color:var(--theory)}.lesson-card__badge--exercise{background-color:var(--ok-soft);color:var(--ok-text)}.lesson-card__badge--quiz{background-color:var(--quiz-soft);color:var(--quiz)}.lesson-card__meta{display:flex;align-items:center;gap:1.5rem;font-size:.875rem;color:var(--ink-soft)}.lesson-card__meta-item{display:flex;align-items:center;gap:.25rem}.lesson-card__button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.5rem;font-weight:600;text-align:center;border-radius:.625rem;border:1px solid transparent;cursor:pointer;transition:transform .15s ease-in-out,box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem}.lesson-card__button:disabled{opacity:.5;cursor:not-allowed}.lesson-card__button:active:not(:disabled){transform:translateY(1px)}.lesson-card__button{background-color:var(--brand);color:#fff;box-shadow:0 1px 2px color-mix(in srgb,var(--brand) 30%,transparent)}.lesson-card__button:hover:not(:disabled){background-color:var(--brand-strong)}.lesson-card__button{padding:.5rem 1.5rem;font-size:.875rem;white-space:nowrap}.chapters-loading,.chapter-detail-loading,.chapters-error,.chapter-detail-error{display:flex;justify-content:center;align-items:center;min-height:100vh}.chapters-error__message,.chapter-detail-error__message{font-size:1.25rem;color:var(--danger)}.chapters-empty{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;text-align:center;padding:4rem}.chapters-empty__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--ink);color:var(--ink-soft);margin-bottom:1rem}.chapters-empty__message{color:var(--ink-faint)}.lesson-illustration{position:relative;overflow:hidden}.lesson-illustration:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:var(--lesson-illus, none);background-repeat:no-repeat;background-position:center right;background-size:var(--illus-taille, 85%);filter:blur(var(--illus-flou, 3px));opacity:var(--illus-opacite, .7);-webkit-mask-image:linear-gradient(to right,transparent var(--illus-depart, 15%),#000 var(--illus-fin, 70%));mask-image:linear-gradient(to right,transparent var(--illus-depart, 15%),#000 var(--illus-fin, 70%));pointer-events:none}.lesson-illustration>*{position:relative}[data-theme=dark] .lesson-illustration:before{opacity:var(--illus-opacite-sombre, .3)}@media (max-width: 767px){.lesson-illustration:before{display:none}}.lesson-page{min-height:100vh;background-color:var(--bg);padding:0 0 3rem}.lesson-container{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.lesson-container{padding:0 3rem}}.lesson-breadcrumb{position:sticky;top:var(--header-hauteur, 0);z-index:900;background-color:var(--surface);padding:1.5rem 0;margin-bottom:3rem;font-size:.875rem;color:var(--ink-soft);box-shadow:var(--shadow-sm);border-bottom:1px solid var(--border);transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.lesson-breadcrumb__link{color:var(--brand);transition:color .15s ease-in-out;font-weight:500}.lesson-breadcrumb__link:hover{color:var(--brand-strong);text-decoration:underline}.lesson-breadcrumb__separator{margin:0 .5rem;color:var(--ink-faint)}.lesson-breadcrumb__current{color:var(--ink-soft);font-weight:500}.lesson-header{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;margin-bottom:3rem;animation:slideUp .32s cubic-bezier(.4,0,.2,1)}.lesson-header.lesson-illustration{--illus-taille: 45%;--illus-depart: 50%;--illus-fin: 80%}@media (min-width: 768px){.lesson-header.lesson-illustration{padding-right:32%}}.lesson-header__meta{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.lesson-header__badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem 1rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.lesson-header__badge--theory{background-color:var(--theory-soft);color:var(--theory)}.lesson-header__badge--exercise{background-color:var(--ok-soft);color:var(--ok-text)}.lesson-header__badge--quiz{background-color:var(--quiz-soft);color:var(--quiz)}.lesson-header__info{font-size:.875rem;color:var(--ink-soft);display:flex;align-items:center;gap:.25rem}.lesson-header__info:before{content:"•";color:var(--ink-faint)}.lesson-header__info:first-child:before{content:none}.lesson-header__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.875rem,4vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--ink);margin-bottom:1.5rem;margin-bottom:0;text-wrap:balance}.lesson-content{background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm);padding:2rem;margin-bottom:3rem;animation:fadeIn .2s cubic-bezier(.4,0,.2,1);animation-delay:.1s}.lesson-markdown{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;line-height:1.75;color:var(--ink);max-width:none}.lesson-markdown h1{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.875rem,4vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--ink);margin-bottom:1.5rem;margin-top:4rem}.lesson-markdown h1:first-child{margin-top:0}.lesson-markdown h2{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--ink);margin-bottom:1rem;margin-top:3rem;padding-bottom:.5rem;border-bottom:2px solid var(--border)}.lesson-markdown h3{font-family:Space Grotesk,Inter,sans-serif;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.5;color:var(--ink);margin-bottom:1rem;margin-top:2rem}.lesson-markdown h4{font-size:1.25rem;font-weight:600;margin-top:1.5rem;margin-bottom:1rem}.lesson-markdown p{margin-bottom:1.5rem;color:var(--ink)}.lesson-markdown ul,.lesson-markdown ol{margin-bottom:1.5rem;padding-left:2rem;list-style:initial}.lesson-markdown ul{list-style-type:disc}.lesson-markdown ol{list-style-type:decimal}.lesson-markdown li{margin-bottom:.5rem;line-height:1.75}.lesson-markdown code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;background-color:var(--surface-2);padding:2px 6px;border-radius:.375rem;font-size:.9em;color:var(--brand-strong)}.lesson-markdown pre{font-family:JetBrains Mono,Fira Code,Consolas,monospace;background-color:#110d22;color:#e5e7eb;padding:1.5rem;border-radius:.625rem;overflow-x:auto;font-size:.875rem;line-height:1.75;margin:1.5rem 0}.lesson-markdown pre code{background:none;padding:0;color:inherit}.lesson-markdown blockquote{border-left:4px solid var(--brand);padding-left:1.5rem;margin:2rem 0;font-style:italic;color:var(--ink-soft);background-color:var(--surface-2);padding:1.5rem;border-radius:.625rem}.lesson-markdown blockquote p:last-child{margin-bottom:0}.lesson-markdown table{width:100%;margin:2rem 0;border-collapse:collapse;border:1px solid var(--border);border-radius:.625rem;overflow:hidden}.lesson-markdown table th{background-color:var(--surface-2);font-weight:600;text-align:left;padding:1rem;border-bottom:2px solid var(--border)}.lesson-markdown table td{padding:1rem;border-bottom:1px solid var(--border)}.lesson-markdown table tr:last-child td{border-bottom:none}.lesson-markdown hr{border:none;border-top:2px solid var(--border);margin:3rem 0}.lesson-markdown a{color:var(--brand);text-decoration:underline;font-weight:500}.lesson-markdown a:hover{color:var(--brand-strong)}.lesson-markdown img{max-width:100%;height:auto}.lesson-markdown p:has(>em:only-child){text-align:center;font-size:.875rem;color:var(--ink-faint);margin-top:-1rem;margin-bottom:3rem}.lesson-markdown strong{font-weight:700;color:var(--ink)}.lesson-markdown em{font-style:italic}.lesson-video{margin-top:3rem}.lesson-video__title{font-family:Space Grotesk,Inter,sans-serif;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.5;color:var(--ink);margin-bottom:1rem}.lesson-video__wrapper{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:.875rem;box-shadow:var(--shadow-lg)}.lesson-video__wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}.lesson-exercise__header{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--ink);margin-bottom:1rem;margin-bottom:1.5rem}.lesson-exercise__difficulty{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem 1rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:1.5rem}.lesson-exercise__difficulty--easy{background-color:var(--easy-soft);color:var(--easy)}.lesson-exercise__difficulty--medium{background-color:var(--medium-soft);color:var(--medium)}.lesson-exercise__difficulty--hard{background-color:var(--hard-soft);color:var(--hard)}.lesson-exercise__instructions{margin-bottom:2rem}.lesson-exercise__instructions h3{font-family:Space Grotesk,Inter,sans-serif;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.5;color:var(--ink);font-size:1.125rem;margin-bottom:1rem}.lesson-exercise__code-block{background-color:var(--surface-2);border-radius:.875rem;padding:1.5rem;margin-bottom:2rem}.lesson-exercise__code-block h3{font-family:Space Grotesk,Inter,sans-serif;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.5;color:var(--ink);font-size:1.125rem;margin-bottom:1rem}.lesson-exercise__code-block pre{font-family:JetBrains Mono,Fira Code,Consolas,monospace;background-color:#110d22;color:#e5e7eb;padding:1.5rem;border-radius:.625rem;overflow-x:auto;font-size:.875rem;line-height:1.75;margin:0}.lesson-exercise__placeholder{text-align:center;padding:3rem;color:var(--ink-faint);font-style:italic}.lesson-quiz__header{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700;letter-spacing:-.015em;line-height:1.2;color:var(--ink);margin-bottom:1rem;margin-bottom:1.5rem}.lesson-quiz__instructions{margin-bottom:2rem;color:var(--ink-soft)}.lesson-quiz__meta{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;font-size:.875rem;color:var(--ink-soft);flex-wrap:wrap}.lesson-quiz__meta-item:before{content:"•";margin-right:1rem;color:var(--ink-faint)}.lesson-quiz__meta-item:first-child:before{content:none}.lesson-quiz__placeholder{text-align:center;padding:4rem}.lesson-quiz__placeholder p{color:var(--ink-faint);font-style:italic;margin-bottom:2rem}.lesson-quiz__placeholder button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.5rem;font-weight:600;text-align:center;border-radius:.625rem;border:1px solid transparent;cursor:pointer;transition:transform .15s ease-in-out,box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem}.lesson-quiz__placeholder button:disabled{opacity:.5;cursor:not-allowed}.lesson-quiz__placeholder button:active:not(:disabled){transform:translateY(1px)}.lesson-quiz__placeholder button{background-color:var(--brand);color:#fff;box-shadow:0 1px 2px color-mix(in srgb,var(--brand) 30%,transparent)}.lesson-quiz__placeholder button:hover:not(:disabled){background-color:var(--brand-strong)}.lesson-navigation{display:flex;align-items:stretch;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.lesson-navigation__side{flex:1 1 0;min-width:180px;display:flex}.lesson-navigation__side--right{justify-content:flex-end}.lesson-navigation__button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.5rem;font-weight:600;text-align:center;border-radius:.625rem;border:1px solid transparent;cursor:pointer;transition:transform .15s ease-in-out,box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem}.lesson-navigation__button:disabled{opacity:.5;cursor:not-allowed}.lesson-navigation__button:active:not(:disabled){transform:translateY(1px)}.lesson-navigation__button--back,.lesson-navigation__button--finish{background-color:var(--surface-2);color:var(--ink)}.lesson-navigation__button--back:hover,.lesson-navigation__button--finish:hover{background-color:color-mix(in srgb,var(--surface-2) 92%,var(--ink) 8%)}.lesson-navigation__button--finish{background-color:var(--easy-soft);color:var(--easy)}.lesson-navigation__button--finish:hover{background-color:color-mix(in srgb,var(--easy-soft) 90%,var(--ink) 10%)}.lesson-navigation__button--prev,.lesson-navigation__button--next{display:flex;align-items:center;gap:.5rem;background-color:var(--surface);border:1px solid var(--border);color:var(--ink);max-width:100%}.lesson-navigation__button--prev:hover,.lesson-navigation__button--next:hover{border-color:var(--brand);background-color:var(--surface-2)}.lesson-navigation__button--next{text-align:right}.lesson-navigation__arrow{font-size:1.125rem;flex-shrink:0;color:var(--brand)}.lesson-navigation__text{display:flex;flex-direction:column;min-width:0;overflow:hidden}.lesson-navigation__label{font-size:.75rem;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.03em}.lesson-navigation__title{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 768px){.lesson-navigation__side{flex:1 1 100%}}.lesson-status{flex:0 0 auto;align-self:center;margin:0;padding:.5rem 1rem;border-radius:.625rem;font-size:.875rem;color:var(--ink-faint);text-align:center}.lesson-status--done{background-color:var(--easy-soft);color:var(--easy);font-weight:500}@media (max-width: 768px){.lesson-status{order:-1;width:100%}}.lesson-content__end{height:1px}.lesson-loading,.lesson-error{display:flex;justify-content:center;align-items:center;min-height:100vh}.lesson-loading__message,.lesson-error__message{font-size:1.25rem;color:var(--ink-soft)}.lesson-error__message{color:var(--danger)}.trainer{min-height:100vh;background-color:var(--bg)}.trainer__hero{background:linear-gradient(135deg,var(--ink),var(--brand-strong));padding:3rem 2rem;margin-bottom:2rem}[data-theme=dark] .trainer__hero{background:linear-gradient(135deg,#110d22,var(--brand-soft))}.trainer__hero-content{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.trainer__hero-content{padding:0 3rem}}.trainer__title{font-family:Space Grotesk,Inter,sans-serif;font-size:clamp(1.5rem,3.5vw,2.25rem);font-weight:700;color:#fff;margin-bottom:.25rem}.trainer__subtitle{color:#ffffffd1;font-size:.875rem;margin-bottom:0}.trainer__container{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.trainer__container{padding:0 3rem}}.trainer__container{padding-bottom:4rem}.trainer__loading{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:1rem;min-height:50vh;color:var(--ink-soft)}.trainer__loading p{margin:0}.trainer__error{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.trainer__error{padding:0 3rem}}.trainer__error{margin-top:2rem;margin-bottom:2rem;padding:1rem 1.5rem;border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:.875rem;background-color:var(--danger-soft);color:var(--danger);font-weight:500}.trainer__split{display:grid;grid-template-columns:1fr;gap:1.5rem}@media (min-width: 1024px){.trainer__split{grid-template-columns:1fr 1fr;align-items:start}}.trainer__placeholder{display:flex;justify-content:center;align-items:center;min-height:12rem;padding:2rem;border:1px dashed var(--border-strong);border-radius:1.25rem;background-color:var(--surface-2);color:var(--ink-faint);text-align:center}.trainer__placeholder p{margin:0}.trainer__tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.trainer-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:2rem}@media (max-width: 768px){.trainer-stats{grid-template-columns:1fr}}.trainer-stat{display:flex;flex-direction:column;gap:.25rem;padding:1.5rem;background-color:var(--surface);border:1px solid var(--border);border-radius:.875rem;box-shadow:var(--shadow-sm)}.trainer-stat__label{font-size:.75rem;color:var(--ink-soft)}.trainer-stat__value{font-family:Space Grotesk,Inter,sans-serif;font-size:1.875rem;font-weight:700;line-height:1;color:var(--ink)}.trainer-stat--learners .trainer-stat__value{color:var(--brand)}.trainer-stat--activity .trainer-stat__value{color:var(--ok-text)}.trainer-stat--completion .trainer-stat__value{color:var(--quiz)}.trainer-tab{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid var(--border);border-radius:9999px;background-color:var(--surface);color:var(--ink-soft);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,color .15s ease-in-out}.trainer-tab:hover{border-color:var(--brand);color:var(--ink)}.trainer-tab--active,.trainer-tab--active:hover{background-color:var(--brand);border-color:var(--brand);color:#fff}.trainer-panel{background-color:var(--surface);border:1px solid var(--border);border-radius:1.25rem;box-shadow:var(--shadow-sm);overflow:hidden}.trainer-panel__header{padding:1rem 1.5rem;border-bottom:1px solid var(--border)}.trainer-panel__title{font-family:Space Grotesk,Inter,sans-serif;font-size:1.125rem;font-weight:600;color:var(--ink);margin-bottom:0}.trainer-panel__subtitle{margin:.25rem 0 0;font-size:.875rem;color:var(--ink-soft)}.trainer-panel__body{padding:1.5rem}.trainer-panel__scroll{max-height:600px;overflow-y:auto}.trainer-panel__scroll--tall{max-height:700px}.trainer-empty{margin:0;padding:3rem 1.5rem;text-align:center;color:var(--ink-faint)}.learner-row{display:block;width:100%;padding:1rem 1.5rem;border-bottom:1px solid var(--border);border-left:4px solid transparent;background-color:transparent;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;text-align:left;cursor:pointer;transition:background-color .15s ease-in-out,border-left-color .15s ease-in-out}.learner-row:last-child{border-bottom:0}.learner-row:hover{background-color:var(--surface-2)}.learner-row--selected,.learner-row--selected:hover{background-color:var(--brand-soft);border-left-color:var(--brand)}.learner-row__name{display:block;font-size:.875rem;font-weight:600;color:var(--ink)}.learner-row__email{display:block;font-size:.875rem;color:var(--ink-faint)}.learner-row__meters{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.learner-row__stats{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem;font-size:.75rem;color:var(--ink-faint)}.learner-row__current{display:block;margin-top:.5rem;font-size:.75rem;color:var(--brand)}.meter{display:block}.meter__head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.25rem;font-size:.75rem;color:var(--ink-soft)}.meter__track{display:block;height:.5rem;border-radius:9999px;background-color:var(--surface-2);overflow:hidden}[data-theme=dark] .meter__track{background-color:color-mix(in srgb,var(--ink) 14%,transparent)}.meter__fill{display:block;height:100%;border-radius:9999px;background-color:var(--brand);transition:width .32s cubic-bezier(.4,0,.2,1)}.meter__fill--lessons{background-color:var(--ok)}.learner-detail__meta{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.5rem;font-size:.875rem}.learner-detail__level{color:var(--brand);font-weight:500}.learner-detail__points{color:var(--quiz);font-weight:500}.learner-detail__section-title{font-family:Space Grotesk,Inter,sans-serif;font-size:1rem;font-weight:600;color:var(--ink);margin-bottom:1rem}.learner-detail__chapters{display:flex;flex-direction:column;gap:1rem}.learner-detail__activities{margin-top:2rem}.chapter-progress{padding:1rem;border:1px solid var(--border);border-radius:.875rem;background-color:var(--surface)}.chapter-progress__head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.chapter-progress__title{font-size:.875rem;font-weight:600;color:var(--ink)}.chapter-progress__count{margin:.25rem 0 0;font-size:.875rem;color:var(--ink-faint)}.chapter-progress__rate{margin:.5rem 0 0;font-size:.75rem;color:var(--ink-faint)}.chapter-lock{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.5rem;font-weight:600;text-align:center;border-radius:.625rem;border:1px solid transparent;cursor:pointer;transition:transform .15s ease-in-out,box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem}.chapter-lock:disabled{opacity:.5;cursor:not-allowed}.chapter-lock:active:not(:disabled){transform:translateY(1px)}.chapter-lock{flex-shrink:0;padding:.5rem 1rem;border-radius:9999px;font-size:.875rem;color:#fff}.chapter-lock--unlocked{background-color:var(--ok-text)}.chapter-lock--unlocked:hover:not(:disabled){background-color:color-mix(in srgb,var(--ok-text) 85%,#000)}.chapter-lock--locked{background-color:var(--ink-faint)}.chapter-lock--locked:hover:not(:disabled){background-color:var(--ink-soft)}.chapter-lock__spinner{width:.9rem;height:.9rem;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.activity-mini{display:flex;flex-direction:column;gap:.5rem}.activity-mini__item{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem 1rem;border-radius:.625rem;background-color:var(--surface-2)}.activity-mini__label{margin:0;font-size:.875rem;color:var(--ink)}.activity-mini__date{margin:0;font-size:.75rem;color:var(--ink-faint)}.activity-feed{display:flex;flex-direction:column;gap:.5rem}.activity-card{display:flex;align-items:flex-start;gap:1rem;padding:1rem;border:1px solid var(--border);border-left-width:4px;border-radius:.875rem;background-color:var(--surface-2)}.activity-card--lesson-started{border-left-color:var(--theory);background-color:var(--theory-soft)}.activity-card--lesson-completed{border-left-color:var(--ok);background-color:var(--ok-soft)}.activity-card--exercise-submitted{border-left-color:var(--quiz);background-color:var(--quiz-soft)}.activity-card--quiz-completed{border-left-color:var(--warn);background-color:var(--medium-soft)}.activity-card--chapter-unlocked{border-left-color:var(--brand);background-color:var(--brand-soft)}.activity-card--badge-earned{border-left-color:var(--accent);background-color:var(--accent-soft)}.activity-card__icon{font-size:1.5rem;line-height:1}.activity-card__body{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex:1;min-width:0}@media (max-width: 768px){.activity-card__body{flex-direction:column;gap:.25rem}}.activity-card__user{margin:0;font-size:.875rem;font-weight:600;color:var(--ink)}.activity-card__type{margin:0;font-size:.875rem;color:var(--ink-soft)}.activity-card__context{margin:.25rem 0 0;font-size:.875rem;color:var(--ink)}.activity-card__date{flex-shrink:0;font-size:.75rem;color:var(--ink-faint);white-space:nowrap}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg);color:var(--ink);transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1)}.container{max-width:1280px;margin:0 auto;padding:0 1.5rem}@media (min-width: 1024px){.container{padding:0 3rem}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100%;left:1rem;z-index:2000;padding:.5rem 1.5rem;background-color:var(--brand);color:#fff;font-weight:600;border-radius:0 0 .625rem .625rem;transition:top .15s ease-in-out}.skip-link:focus{top:0}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:.375rem}.loading-spinner{display:inline-block;width:40px;height:40px;border:4px solid color-mix(in srgb,var(--brand) 20%,transparent);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.route-guard{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.route-guard__text{color:var(--ink-faint);font-size:.875rem}
