.projets-index{width:100%;display:flex;flex-direction:column;gap:clamp(1.5rem,3.5vw,2.35rem)}.project-card-excerpt>.rich-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.project-card-excerpt .katex-display,.project-card-excerpt .prose p{margin:0}.projects-index-preview{margin-bottom:.25rem;border:1px dashed var(--border);background:color-mix(in oklch,var(--muted) 35%,transparent);padding:.55rem .85rem;text-align:center;font-size:.6875rem;font-weight:600;color:var(--muted-foreground)}.projects-promo{display:flex;flex-direction:column;gap:clamp(1.85rem,4vw,2.75rem)}.projects-promo__head{justify-content:space-between;gap:.5rem 1rem;margin-bottom:.9rem;padding-bottom:.7rem;border-bottom:1px solid var(--border)}.projects-promo__head,.projects-promo__title{display:flex;flex-wrap:wrap;align-items:baseline}.projects-promo__title{gap:.5rem .7rem;margin:0;min-width:0}.projects-promo__code{display:inline-flex;align-items:center;padding:.14rem .45rem;border:none;background:color-mix(in oklch,var(--primary) 12%,var(--muted));font-size:.6875rem;font-weight:750;letter-spacing:.06em;text-transform:uppercase;color:color-mix(in oklch,var(--primary) 55%,var(--foreground))}.projects-promo__label{font-family:var(--font-heading,var(--font-sans));font-size:clamp(1.125rem,2.2vw,1.375rem);font-weight:700;letter-spacing:-.025em;line-height:1.2;color:var(--foreground)}.projects-promo__count{font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.projects-promo__grid{display:block;-moz-columns:1;column-count:1;-moz-column-gap:.6rem;column-gap:.6rem;margin:0;padding:0;list-style:none}@media (min-width:640px){.projects-promo__grid{-moz-columns:2;column-count:2}}@media (min-width:1100px){.projects-promo__grid{-moz-columns:3;column-count:3}}.projects-promo__item{display:block;width:100%;margin:0 0 .6rem;-moz-column-break-inside:avoid;break-inside:avoid;page-break-inside:avoid;-webkit-column-break-inside:avoid}.projects-promo__item:last-child{margin-bottom:0}.project-fiche{--project-fiche-accent:var(--primary);position:relative;display:grid;grid-template-columns:2.85rem minmax(0,1fr);width:100%;min-width:0;min-height:8.75rem;overflow:hidden;border:1px solid var(--border);border-radius:0;background:var(--card);color:inherit;text-decoration:none;transition:border-color .2s ease,background-color .2s ease}.project-fiche:hover{border-color:color-mix(in oklch,var(--project-fiche-accent) 40%,var(--border));background:color-mix(in oklch,var(--muted) 12%,var(--card))}.project-fiche:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.project-fiche__rail{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;align-self:stretch;min-height:0;padding:1rem .4rem;background:linear-gradient(180deg,color-mix(in oklch,var(--project-fiche-accent) 88%,black 6%),color-mix(in oklch,var(--project-fiche-accent) 72%,black 14%));color:color-mix(in oklch,white 92%,var(--project-fiche-accent))}.project-fiche__rail-icon{width:1.15rem;height:1.15rem;flex-shrink:0}.project-fiche__body{display:flex;flex-direction:column;gap:.65rem;min-width:0;padding:.95rem 1rem .85rem}.project-fiche__id{display:flex;align-items:baseline;gap:.65rem;min-width:0}.project-fiche__num{flex:none;font-family:var(--font-heading,var(--font-sans));font-size:1.35rem;font-weight:700;letter-spacing:-.05em;line-height:1;font-variant-numeric:tabular-nums;color:color-mix(in oklch,var(--project-fiche-accent) 28%,transparent)}.project-fiche__id-text{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}.project-fiche__title{margin:0;font-family:var(--font-heading,var(--font-sans));font-size:1.12rem;font-weight:700;line-height:1.18;letter-spacing:-.03em;text-wrap:balance;color:var(--foreground)}.project-fiche__cat{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.5625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}.project-fiche__cat-code{display:inline-flex;align-items:center;background:var(--muted);padding:.125rem .4375rem}.project-fiche__excerpt{margin:0;font-size:.8125rem;line-height:1.5;color:var(--muted-foreground)}.project-fiche__repo{display:flex;flex-direction:column;gap:.4rem;min-width:0;margin-top:auto;padding-top:.65rem;border-top:1px solid color-mix(in oklch,var(--border) 70%,transparent)}.project-fiche__repo-head{display:flex;align-items:center;gap:.45rem;min-width:0}.project-fiche__repo-mark{flex:none;width:.85rem;height:.85rem;color:color-mix(in oklch,var(--project-fiche-accent) 62%,var(--foreground))}.project-fiche__repo-counts{display:inline-flex;flex:none;align-items:center;gap:.55rem}.project-fiche__repo-count{display:inline-flex;align-items:center;gap:.22rem;font-size:.625rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.project-fiche__repo-count--date{font-weight:600}.project-fiche__repo-icon{width:.7rem;height:.7rem;flex-shrink:0}.project-fiche__repo .project-github__lang-chips{gap:.2rem .5rem}.project-fiche__foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto;padding-top:.15rem}.project-fiche__repo+.project-fiche__foot{margin-top:0}.project-fiche__cta{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:700;letter-spacing:-.01em;color:color-mix(in oklch,var(--project-fiche-accent) 62%,var(--foreground))}.project-fiche__cta-icon{width:.8rem;height:.8rem;opacity:.6;transition:opacity .14s ease,translate .14s ease}.project-fiche:hover .project-fiche__cta-icon{opacity:1;translate:.08rem -.08rem}.project-github{--gh-accent:var(--course-nav-accent,var(--course-accent,var(--primary)));--gh-accent-text:color-mix(in oklch,var(--gh-accent) 62%,var(--foreground));--gh-accent-soft:color-mix(in oklch,var(--gh-accent) 10%,transparent);--gh-accent-soft-strong:color-mix(in oklch,var(--gh-accent) 18%,transparent);--gh-accent-line:color-mix(in oklch,var(--gh-accent) 26%,var(--border));--gh-surface:var(--card);--gh-surface-sub:color-mix(in oklch,var(--muted) 45%,var(--card));--gh-border:var(--border);--gh-lang-lo:0.28;--gh-lang-hi:0.84;--gh-lang-1:var(--gh-accent);--gh-lang-2:color-mix(in oklch,var(--gh-accent) 72%,var(--foreground));--gh-lang-3:color-mix(in oklch,var(--gh-accent) 52%,var(--muted-foreground));--gh-lang-4:color-mix(in oklch,var(--gh-accent) 30%,var(--muted-foreground))}.sombre .project-github{--gh-lang-lo:0.42;--gh-lang-hi:0.92}@supports (color:oklch(from white l c h)){.project-github{--gh-lang-2:oklch(from var(--gh-accent) clamp(var(--gh-lang-lo),calc(l + 0.15),var(--gh-lang-hi)) max(calc(c * 1.15),0.095) calc(h + 52));--gh-lang-3:oklch(from var(--gh-accent) clamp(var(--gh-lang-lo),calc(l - 0.17),var(--gh-lang-hi)) max(calc(c * 1.35),0.115) calc(h - 58));--gh-lang-4:oklch(from var(--gh-accent) clamp(var(--gh-lang-lo),calc(l + 0.3),var(--gh-lang-hi)) max(calc(c * 1),0.08) calc(h + 112))}}.project-github__repo-id{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono,ui-monospace,monospace);font-size:.6875rem;line-height:1.3}.project-github__repo-owner{font-weight:550;color:var(--gh-accent-text)}.project-github__repo-sep{color:color-mix(in oklch,var(--muted-foreground) 60%,transparent)}.project-github__repo-name{font-weight:650;color:var(--foreground)}.project-github--panel{overflow:hidden;border:1px solid var(--gh-border);border-radius:0;background:var(--gh-surface);box-shadow:none}.project-github__panel-main{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:.85rem 1rem;padding:.95rem 1rem;background:transparent}@media (max-width:639px){.project-github__panel-main{grid-template-columns:auto 1fr}.project-github__panel-cta{grid-column:1/-1;justify-self:start}}.project-github__panel-brand{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border:none;background:var(--gh-surface-sub);color:var(--gh-accent-text)}.project-github__panel-github-icon{width:1.1rem;height:1.1rem}.project-github__panel-body{min-width:0}.project-github__panel-kicker{margin:0;font-size:.625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}.project-github__panel-repo-link{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:0;margin-top:.2rem;font-family:var(--font-mono,ui-monospace,monospace);font-size:clamp(.875rem,2vw,1rem);font-weight:650;line-height:1.35;color:var(--foreground);text-decoration-line:underline;text-decoration-color:transparent;text-decoration-thickness:1px;text-underline-offset:.25em;transition:text-decoration-color .14s ease}.project-github__panel-repo-link:hover{text-decoration-color:color-mix(in oklch,var(--gh-accent) 45%,transparent)}.project-github__panel-repo-arrow{width:.9rem;height:.9rem;margin-left:.35rem;translate:0 .05rem;color:var(--muted-foreground);opacity:.6;transition:opacity .14s ease,translate .14s ease}.project-github__panel-repo-link:hover .project-github__panel-repo-arrow{opacity:1;translate:.06rem -.06rem}.project-github__panel-metrics{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .45rem;margin-top:.6rem}.project-github__panel-cta{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--gh-accent-line);background:var(--gh-accent-soft);padding:.4rem .7rem;font-size:.75rem;font-weight:700;color:var(--gh-accent-text);text-decoration:none;white-space:nowrap;transition:background-color .14s ease,border-color .14s ease}.project-github__panel-cta:hover{border-color:color-mix(in oklch,var(--gh-accent) 45%,var(--border));background:var(--gh-accent-soft-strong)}.project-github__panel-langs{padding:.75rem 1rem .9rem;border-top:1px solid var(--gh-border);background:var(--gh-surface-sub)}.project-github__panel-langs .project-github__lang-chips{margin-top:.55rem}.project-github__metric{display:inline-flex;align-items:center;gap:.25rem;border:none;background:var(--gh-surface-sub);padding:.14rem .4rem;font-size:.6875rem;line-height:1.2;color:var(--foreground)}.project-github--panel .project-github__metric{background:color-mix(in oklch,var(--muted) 70%,var(--card))}.project-github--panel .project-github__metric--muted,.project-github__metric--muted{background:transparent;padding-inline:0;font-size:.75rem;font-weight:500;color:var(--muted-foreground)}.project-github__metric-icon{width:.78rem;height:.78rem;flex-shrink:0;color:var(--muted-foreground)}.project-github__metric-value{font-weight:700;font-variant-numeric:tabular-nums}.project-github__lang-bar-wrap--sm .project-github__lang-bar{height:.34rem}.project-github__lang-bar-wrap--md .project-github__lang-bar{height:.42rem}.project-github__lang-bar{display:flex;gap:2px;overflow:hidden;border:none;background:color-mix(in oklch,var(--muted-foreground) 14%,transparent)}.project-github__lang-segment{min-width:3px;background:var(--gh-lang,var(--gh-lang-1))}.project-github__lang-chips{display:flex;flex-wrap:wrap;gap:.28rem .6rem;margin:0;padding:0;list-style:none}.project-github__lang-chip{display:inline-flex;align-items:center;gap:.3rem;border:none;background:transparent;padding:0;font-size:.625rem;line-height:1.2;color:var(--muted-foreground)}.project-github__lang-chips--md .project-github__lang-chip{font-size:.6875rem}.project-github__lang-dot{width:.45rem;height:.45rem;flex-shrink:0;background:var(--gh-lang,var(--gh-lang-1))}.project-github__lang-chips--md .project-github__lang-dot{width:.5rem;height:.5rem}.project-github__lang-chip-name{font-weight:600;color:var(--foreground)}.project-github__lang-chip-pct{font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.project-github--pending{display:flex;align-items:center;justify-content:flex-start;gap:.75rem;min-height:3.5rem;padding:.95rem 1rem}.project-github__pending-text{margin:0;font-size:.8125rem;color:var(--muted-foreground)}.projects-shell .course-shell__home-header .projects-band{margin:0;width:100%}.project-article-intro{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:none;margin-bottom:2rem;min-width:0}.project-article-intro__lead{margin:0;width:100%;max-width:44rem;font-size:.9375rem;line-height:1.6;color:var(--muted-foreground)}.project-article-intro__lead .rich-text,.project-article-intro__lead .rich-text :where(p,li,span,strong,em){color:inherit;font-size:inherit;line-height:inherit}.project-article-intro__lead .rich-text p{margin:0 0 .5em}.project-article-intro__lead .rich-text p:last-child{margin-bottom:0}.project-article-intro__github{width:100%;min-width:0;max-width:none}.project-article-intro__github .project-github{width:100%}.projects-band{--projects-accent:var(--course-nav-accent,var(--course-accent,var(--primary)));--projects-band-pad-x:1.25rem;--projects-band-pad-y:1.15rem;position:relative;width:100%;background:var(--course-chrome-surface)}@media (min-width:640px){.projects-band{--projects-band-pad-x:1.75rem}}@media (min-width:1024px){.projects-band{--projects-band-pad-x:2.25rem}}@media (min-width:1280px){.projects-band{--projects-band-pad-x:2.5rem}}.projects-band__inner{position:relative;overflow:hidden;padding:var(--projects-band-pad-y) var(--projects-band-pad-x);transition:padding .24s cubic-bezier(.22,1,.36,1)}.projects-band.is-folded .projects-band__inner{padding-block:.45rem}.projects-band__glyph{pointer-events:none;position:absolute;right:-1.75rem;bottom:-3.5rem;z-index:0;width:clamp(8rem,20vw,12rem);height:clamp(8rem,20vw,12rem);color:var(--projects-accent);opacity:.22;transition:opacity .24s ease}.projects-band.is-folded .projects-band__glyph{opacity:0}.projects-band__copy{position:relative;z-index:1;min-width:0}.projects-band__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0;font-size:.625rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.projects-band__crumb-icon{flex-shrink:0;width:.95rem;height:.95rem;color:var(--projects-accent)}.projects-band__crumb-link{color:inherit;text-decoration:none;transition:color .14s ease}.projects-band__crumb-link:hover{color:var(--foreground)}.projects-band__crumb-sep{color:color-mix(in oklch,var(--muted-foreground) 55%,transparent)}.projects-band__crumb-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.projects-band__title{display:block;margin:.7rem 0 0;min-width:0;max-width:30ch;font-family:var(--font-heading,var(--font-sans));font-size:clamp(1.5rem,3.1vw,2.15rem);font-weight:700;letter-spacing:-.04em;line-height:1.06;text-wrap:balance;color:var(--foreground)}.projects-band--home .projects-band__title{max-width:34ch}.projects-band__lead{margin:.85rem 0 0;max-width:44rem;font-size:.9375rem;line-height:1.6;color:var(--muted-foreground)}.projects-band__lead .rich-text,.projects-band__lead .rich-text :where(p,li,span,strong,em){color:inherit;font-size:inherit;line-height:inherit}.projects-band__lead .rich-text p{margin:0 0 .4em}.projects-band__lead .rich-text p:last-child{margin-bottom:0}.projects-band__meta{display:flex;flex-wrap:wrap;gap:.4rem .7rem;margin-top:.9rem;font-size:.75rem}.projects-band__meta,.projects-band__pill{align-items:center;color:var(--muted-foreground)}.projects-band__pill{display:inline-flex;border:none;border-radius:0;background:var(--muted);padding:.125rem .4375rem;font-size:.5625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.projects-band__short{display:none;position:relative;z-index:1}.projects-band.is-folded .projects-band__full{display:none}.projects-band.is-folded .projects-band__short{display:block}.projects-band__short-row{display:flex;align-items:center;gap:.6rem;min-width:0}.projects-band__short-icon{flex:none;width:1.05rem;height:1.05rem;color:var(--projects-accent)}.projects-band__short-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;font-weight:700;letter-spacing:-.02em;color:var(--foreground)}.projects-band__short-meta{flex:none;font-size:.625rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.projects-band__rule{height:3px;background:color-mix(in oklch,var(--muted-foreground) 16%,transparent)}.projects-band__rule i{display:block;height:100%;background:var(--projects-accent);transition:width .12s linear}.projects-band .tutorat-inline-math .katex{font-size:1em}.projects-band__crumb .tutorat-inline-math,.projects-band__crumb .tutorat-inline-text__code{letter-spacing:0;text-transform:none}@media (max-width:639px){.projects-band__short-meta{display:none}}.profile-page{width:100%;max-width:none;min-width:0;overflow-x:hidden;--profile-gutter:clamp(1.25rem,3vw,3rem);--profile-line:color-mix(in oklch,var(--border) 92%,transparent);--profile-accent:var(--primary)}.profile-hero{border-bottom:1px solid var(--profile-line);background:var(--background)}.profile-hero__inner{padding:clamp(2rem,5vw,2.75rem) var(--profile-gutter)}.profile-hero__layout{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1.25rem 1.5rem}.profile-hero__primary{min-width:0;flex:1 1 16rem;max-width:42rem}.profile-hero__intro{padding-left:1.15rem;border-left:3px solid var(--profile-accent)}@media (min-width:640px){.profile-hero__intro{padding-left:1.35rem}}.profile-hero__eyebrow{margin:0;font-size:.6875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.profile-hero__title{margin:.45rem 0 0;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700;line-height:1.12;letter-spacing:-.03em;text-wrap:balance;color:var(--foreground)}.profile-hero__lead{margin:.55rem 0 0;font-size:.9375rem;line-height:1.55;color:var(--muted-foreground);word-break:break-all}.profile-hero__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.85rem}.profile-hero__chip{display:inline-flex;align-items:center;height:1.65rem;padding-inline:.55rem;border:1px solid var(--profile-line);border-radius:0;background:var(--card);font-size:.625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--foreground)}.profile-hero__chip--admin{border-color:var(--foreground);background:var(--foreground);color:var(--background)}.profile-hero__username{font-size:.8125rem;font-weight:600;color:var(--muted-foreground)}.profile-hero__secondary{display:flex;flex-direction:column;align-items:flex-end;gap:.75rem;flex-shrink:0}@media (max-width:639px){.profile-hero__secondary{width:100%;flex-direction:row;align-items:center;justify-content:space-between}}.profile-hero__monogram{display:flex;width:3.25rem;height:3.25rem;flex-shrink:0;border:1px solid color-mix(in oklch,var(--profile-accent) 28%,var(--border));background:color-mix(in oklch,var(--profile-accent) 8%,var(--card));font-weight:800;letter-spacing:.06em;color:var(--foreground)}.profile-hero__logout,.profile-hero__monogram{align-items:center;justify-content:center;border-radius:0;font-size:.8125rem}.profile-hero__logout{display:inline-flex;gap:.5rem;height:2.25rem;padding-inline:.875rem;border:1px solid color-mix(in oklch,var(--destructive) 32%,var(--border));background:color-mix(in oklch,var(--destructive) 14%,var(--card));font-weight:600;color:var(--destructive);box-shadow:none}.profile-hero__logout:hover{border-color:color-mix(in oklch,var(--destructive) 48%,var(--border));background:color-mix(in oklch,var(--destructive) 22%,var(--card));color:var(--destructive)}.profile-body{padding:clamp(1.5rem,4vw,2.25rem) var(--profile-gutter) clamp(2.5rem,6vw,4rem)}.profile-body__layout{display:grid;gap:1.5rem;align-items:start}@media (min-width:900px){.profile-body__layout{grid-template-columns:minmax(0,1fr) 17.5rem;gap:1.5rem}}@media (min-width:1024px){.profile-body__layout{grid-template-columns:minmax(0,1fr) 19rem}}.profile-body__main{gap:0;border:1px solid var(--profile-line);border-radius:0;background:var(--card)}.profile-body__aside,.profile-body__main{display:flex;flex-direction:column;min-width:0}.profile-body__aside{gap:1rem}@media (min-width:900px){.profile-body__aside{position:sticky;top:calc(var(--header-offset, 4rem) + .75rem)}}.profile-section{padding:1.25rem 1.15rem 1.35rem;border-bottom:1px solid var(--profile-line)}.profile-section:last-child{border-bottom:none}@media (min-width:640px){.profile-section{padding:1.35rem 1.35rem 1.5rem}}.profile-section--danger{background:color-mix(in oklch,oklch(.55 .14 25) 4%,transparent);box-shadow:inset 3px 0 0 color-mix(in oklch,oklch(.5 .14 25) 70%,transparent)}.profile-section__head{margin-bottom:1.1rem;max-width:36rem}.profile-section__eyebrow{display:inline-flex;align-items:center;gap:.35rem;margin:0;font-size:.6875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.profile-section__eyebrow--danger{color:oklch(.45 .14 25)}.sombre .profile-section__eyebrow--danger{color:oklch(.75 .1 25)}.profile-section__title{margin:.4rem 0 0;font-size:clamp(1.15rem,2.2vw,1.35rem);font-weight:700;letter-spacing:-.025em;line-height:1.2;color:var(--foreground)}.profile-section__lead{margin:.4rem 0 0;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.profile-account{margin:0}.profile-account__row{display:grid;grid-template-columns:minmax(7rem,9rem) minmax(0,1fr);gap:.75rem;padding:.8rem 0;border-top:1px solid color-mix(in oklch,var(--border) 75%,transparent)}.profile-account__row:first-child{border-top:none;padding-top:0}.profile-account__row:last-child{padding-bottom:0}.profile-account__row dt{font-size:.8125rem;color:var(--muted-foreground)}.profile-account__row dd{margin:0;font-size:.875rem;font-weight:600;color:var(--foreground);word-break:break-word}.profile-form{display:flex;flex-direction:column;gap:.95rem;max-width:28rem}.profile-form__input{border-radius:0;background:var(--background)}.profile-form__error{margin:0;border:1px solid color-mix(in oklch,oklch(.55 .14 25) 35%,var(--border));border-radius:0;background:color-mix(in oklch,oklch(.55 .14 25) 7%,transparent);padding:.65rem .8rem;font-size:.8125rem;line-height:1.45;color:oklch(.42 .14 25)}.sombre .profile-form__error{color:oklch(.78 .1 25)}.profile-form__success{display:flex;align-items:center;gap:.45rem;margin:0;border:1px solid color-mix(in oklch,var(--profile-accent) 28%,var(--border));border-radius:0;background:color-mix(in oklch,var(--profile-accent) 7%,transparent);padding:.65rem .8rem;font-size:.8125rem;line-height:1.45;color:var(--foreground)}.profile-form__submit{align-self:flex-start;min-height:2.25rem;border-radius:0;gap:.45rem}.profile-danger__hint,.profile-danger__warn{margin:0 0 .9rem;font-size:.8125rem;line-height:1.5;color:var(--muted-foreground)}.profile-danger__warn strong{color:oklch(.42 .14 25);font-weight:750;letter-spacing:.04em}.sombre .profile-danger__warn strong{color:oklch(.78 .1 25)}.profile-danger__reveal{border-radius:0;border-color:color-mix(in oklch,oklch(.55 .14 25) 35%,var(--border));color:oklch(.42 .14 25)}.sombre .profile-danger__reveal{color:oklch(.78 .1 25)}.profile-danger__actions{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:flex-start}.profile-danger__actions [data-slot=button]{border-radius:0}.profile-danger__submit{border-radius:0;background:oklch(.45 .14 25);color:white;border-color:oklch(.45 .14 25)}.profile-danger__submit:hover{background:oklch(.4 .14 25)}.profile-aside{border:1px solid var(--profile-line);border-radius:0;background:var(--card);padding:.65rem 0 .45rem}.profile-aside--privacy{padding:.9rem 1rem 1rem}.profile-aside__label{display:inline-flex;align-items:center;gap:.35rem;margin:0;padding:0 .9rem .5rem;font-size:.5625rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground)}.profile-aside--privacy .profile-aside__label{padding:0;margin-bottom:.55rem}.profile-aside__list{margin:0;padding:0;list-style:none}.profile-aside__link{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:.65rem;padding:.7rem .9rem;border-top:1px solid color-mix(in oklch,var(--border) 75%,transparent);color:inherit;text-decoration:none;transition:background-color .12s ease}.profile-aside__list li:first-child .profile-aside__link{border-top:none}.profile-aside__link:hover{background:color-mix(in oklch,var(--muted) 22%,transparent)}.profile-aside__icon{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;flex-shrink:0;border-radius:0;background:color-mix(in oklch,var(--profile-accent) 10%,var(--muted));color:var(--foreground)}.profile-aside__copy{min-width:0;display:flex;flex-direction:column;gap:.12rem}.profile-aside__title{font-size:.8125rem;font-weight:700;line-height:1.25;color:var(--foreground)}.profile-aside__desc{font-size:.6875rem;line-height:1.35;color:var(--muted-foreground)}.profile-aside__arrow{margin-top:.1rem;color:var(--muted-foreground)}.profile-aside__link:hover .profile-aside__arrow{color:var(--foreground)}.profile-aside__privacy-title{margin:0;font-size:.9375rem;font-weight:700;letter-spacing:-.02em;color:var(--foreground)}.profile-aside__privacy-desc{margin:.4rem 0 0;font-size:.8125rem;line-height:1.5;color:var(--muted-foreground)}.profile-aside__privacy-link{display:inline-flex;align-items:center;gap:.4rem;margin-top:.75rem;font-size:.8125rem;font-weight:600;color:var(--profile-accent);text-decoration:none}.profile-aside__privacy-link:hover{text-decoration:underline;text-underline-offset:3px}.privacy-doc{width:100%;max-width:none}.privacy-doc__hero{border-bottom:1px solid var(--profile-line,var(--border));background:var(--background);padding:clamp(2rem,5vw,2.75rem) var(--profile-gutter,clamp(1.25rem,3vw,3rem))}.privacy-doc__hero-inner{max-width:42rem;padding-left:1.15rem;border-left:3px solid var(--primary)}@media (min-width:640px){.privacy-doc__hero-inner{padding-left:1.35rem}}.privacy-doc__eyebrow{margin:0;font-size:.6875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.privacy-doc__title{margin:.45rem 0 0;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700;letter-spacing:-.03em;line-height:1.12;text-wrap:balance}.privacy-doc__lede{margin:.55rem 0 0;font-size:.9375rem;line-height:1.55;color:var(--muted-foreground);max-width:36rem}.privacy-doc__meta{margin:.75rem 0 0;font-size:.8125rem;color:var(--muted-foreground)}.privacy-doc__back{margin:1rem 0 0}.privacy-doc__back-link,.privacy-doc__link{font-weight:600;color:var(--primary);text-decoration:none}.privacy-doc__back-link:hover,.privacy-doc__link:hover{text-decoration:underline;text-underline-offset:3px}.privacy-doc__body{max-width:42rem;padding:clamp(1.5rem,4vw,2.25rem) var(--profile-gutter,clamp(1.25rem,3vw,3rem)) clamp(3rem,6vw,5rem)}.privacy-doc__section{margin-top:1.75rem;padding-top:1.5rem;border-top:1px solid color-mix(in oklch,var(--border) 80%,transparent)}.privacy-doc__section:first-child{margin-top:0;padding-top:0;border-top:none}.privacy-doc__heading{margin:0;font-size:1.05rem;font-weight:700;letter-spacing:-.02em}.privacy-doc__subheading{margin:0;font-size:.9rem;font-weight:650}.privacy-doc__p{line-height:1.65}.privacy-doc__list,.privacy-doc__p{margin:.65rem 0 0;font-size:.9375rem;color:color-mix(in oklch,var(--foreground) 78%,var(--muted-foreground))}.privacy-doc__list{padding-left:1.2rem;line-height:1.6}.privacy-doc__list li+li{margin-top:.35rem}.privacy-doc__subsection{margin-top:.9rem}@media (prefers-reduced-motion:reduce){.profile-aside__link{transition:none}}.reading-heatmap{--rh-1:22%;--rh-2:38%;--rh-3:56%;--rh-4:74%;min-width:0}.sombre .reading-heatmap{--rh-1:16%;--rh-2:28%;--rh-3:40%;--rh-4:55%}.reading-heatmap__bar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:.9rem 2rem;border-bottom:1px solid var(--border);padding-bottom:.9rem;margin-bottom:1.25rem}.rh-years{display:flex;align-items:center;gap:.15rem;min-width:0}.rh-years__nav{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.6rem;height:1.6rem;border:1px solid var(--border);background:var(--card);padding:0;color:var(--muted-foreground);cursor:pointer}.rh-years__nav:hover:not(:disabled){border-color:color-mix(in srgb,var(--foreground) 30%,var(--border));color:var(--foreground)}.rh-years__nav:disabled{opacity:.35;cursor:default}.rh-years__nav:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.rh-years__icon{width:.85rem;height:.85rem}.rh-years__list{display:flex;align-items:center;gap:.15rem;min-width:0;overflow-x:auto;scrollbar-width:none;margin-inline:.25rem}.rh-years__list::-webkit-scrollbar{display:none}.rh-years__year{flex-shrink:0;border:1px solid transparent;background:none;padding:.2rem .5rem;font-family:inherit;font-size:.75rem;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--muted-foreground);cursor:pointer}.rh-years__year:hover{color:var(--foreground)}.rh-years__year[data-active=true]{background:var(--foreground);color:var(--background)}.rh-years__year:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.reading-heatmap__stats{display:flex;flex-wrap:wrap;gap:.5rem 1.75rem;margin-left:auto}.rh-stat{margin:0;display:flex;flex-direction:column;gap:.1rem}.rh-stat__k{font-size:.5625rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-foreground)}.rh-stat__v{font-size:1.125rem;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--foreground)}.rh-stat__v small{font-size:.75rem;font-weight:500;letter-spacing:0;color:var(--muted-foreground)}.reading-heatmap__months{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1.5rem 1.75rem}.rh-month{min-width:0}.rh-month__label{margin:0 0 .5rem;font-size:.625rem;font-weight:750;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-foreground)}.rh-month__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.rh-month__weekday{padding-bottom:.2rem;text-align:center;font-size:.5rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.7}.rh-cell,.rh-month__weekday{color:var(--muted-foreground)}.rh-cell{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;min-width:0;border:1px solid var(--border);background:none;padding:0;font-family:inherit;font-size:.625rem;font-variant-numeric:tabular-nums}.rh-cell--blank{border-color:transparent}.rh-cell[data-today=true]{border-color:color-mix(in srgb,var(--foreground) 45%,var(--border))}.rh-cell[data-future=true]{border-color:color-mix(in srgb,var(--border) 45%,transparent)}.rh-cell[data-future=true] .rh-cell__num{opacity:.35}.rh-cell__num{line-height:1;opacity:.85}.rh-cell--read{cursor:pointer;color:var(--text-strong,var(--foreground));border-color:color-mix(in srgb,var(--rh-c) 35%,var(--border));transition:transform .12s ease,border-color .12s ease}.rh-cell--read[data-level="1"]{background:color-mix(in srgb,var(--rh-c) var(--rh-1),var(--card))}.rh-cell--read[data-level="2"]{background:color-mix(in srgb,var(--rh-c) var(--rh-2),var(--card))}.rh-cell--read[data-level="3"]{background:color-mix(in srgb,var(--rh-c) var(--rh-3),var(--card))}.rh-cell--read[data-level="4"]{background:color-mix(in srgb,var(--rh-c) var(--rh-4),var(--card));border-color:color-mix(in srgb,var(--rh-c) 65%,transparent)}.rh-cell--read .rh-cell__num{font-weight:700;opacity:1}.rh-cell--read[data-multi=true]{z-index:2}.rh-cell--read:focus-visible,.rh-cell--read:hover{border-color:var(--rh-c);z-index:30}.rh-cell--read:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.rh-cell__badge{position:absolute;top:-.3rem;right:-.3rem;display:inline-flex;align-items:center;justify-content:center;min-width:.95rem;height:.8rem;padding:0 .15rem;background:var(--foreground);font-size:.5rem;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--background)}.rh-pop{position:absolute;top:calc(100% + .35rem);z-index:40;display:flex;flex-direction:column;gap:.35rem;width:-moz-max-content;width:max-content;max-width:17rem;border:1px solid var(--border);background:var(--popover);box-shadow:var(--shadow-card);padding:.5rem .6rem;text-align:left;font-size:.6875rem;line-height:1.35;color:var(--foreground);pointer-events:none;cursor:default}.rh-cell--read[data-align=center] .rh-pop{left:50%;transform:translateX(-50%)}.rh-cell--read[data-align=start] .rh-pop{left:-.25rem}.rh-cell--read[data-align=end] .rh-pop{right:-.25rem}.rh-pop__head{display:flex;align-items:baseline;gap:.5rem;border-bottom:1px solid var(--border);padding-bottom:.3rem}.rh-pop__date{font-weight:700;letter-spacing:-.01em}.rh-pop__date:first-letter{text-transform:uppercase}.rh-pop__count{margin-left:auto;flex-shrink:0;font-size:.625rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.rh-pop__list{display:flex;flex-direction:column;gap:.2rem}.rh-pop__item{display:grid;grid-template-columns:.4rem minmax(0,1fr);align-items:baseline;gap:.1rem .4rem}.rh-pop__dot{grid-row:1/span 2;align-self:center;width:.4rem;height:.4rem}.rh-pop__page{min-width:0;overflow-wrap:anywhere}.rh-pop__course{grid-column:2;font-size:.5625rem;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted-foreground)}.rh-pop__more{font-size:.625rem;font-style:italic;color:var(--muted-foreground)}.reading-heatmap__legend{display:flex;align-items:flex-start;flex-wrap:wrap;gap:.75rem 1.5rem;border-top:1px solid var(--border);margin-top:1.5rem;padding-top:.9rem}.rh-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin:0;padding:0;list-style:none;min-width:0}.rh-legend__item{display:inline-flex;align-items:center;gap:.35rem;font-size:.6875rem;color:var(--muted-foreground)}.rh-legend__dot{width:.5rem;height:.5rem;flex-shrink:0}.rh-legend__name{color:var(--foreground)}.rh-legend__count{font-variant-numeric:tabular-nums;opacity:.8}.rh-legend__empty{margin:0;font-size:.75rem;font-style:italic}.rh-legend__empty,.rh-scale{color:var(--muted-foreground)}.rh-scale{display:inline-flex;align-items:center;gap:.25rem;margin:0 0 0 auto;flex-shrink:0;font-size:.5625rem;letter-spacing:.08em;text-transform:uppercase}.rh-scale__cell{width:.7rem;height:.7rem;border:1px solid var(--border);background:color-mix(in srgb,var(--foreground) var(--rh-level,20%),var(--card))}.rh-scale__cell[data-level="1"]{--rh-level:var(--rh-1)}.rh-scale__cell[data-level="2"]{--rh-level:var(--rh-2)}.rh-scale__cell[data-level="3"]{--rh-level:var(--rh-3)}.rh-scale__cell[data-level="4"]{--rh-level:var(--rh-4)}.reading-month{--rh-1:24%;--rh-2:42%;--rh-3:60%;--rh-4:78%;min-width:0;border:1px solid var(--border);background:var(--card);padding:1rem}.sombre .reading-month{--rh-1:18%;--rh-2:30%;--rh-3:42%;--rh-4:56%}.reading-month__head{margin-bottom:.85rem}.reading-month__nav{display:flex;align-items:center;gap:.25rem;margin-bottom:.2rem}.reading-month__kicker{margin:0 auto 0 0;font-size:.5625rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.reading-month__step{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.5rem;height:1.5rem;border:1px solid var(--border);background:none;padding:0;color:var(--muted-foreground);cursor:pointer}.reading-month__step:hover:not(:disabled){border-color:color-mix(in srgb,var(--foreground) 30%,var(--border));color:var(--foreground)}.reading-month__step:disabled{opacity:.35;cursor:default}.reading-month__step:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.reading-month__step-icon{width:.8rem;height:.8rem}.reading-month__title{margin:0;font-family:var(--font-heading,var(--font-sans));font-size:1.125rem;font-weight:750;line-height:1.1;letter-spacing:-.035em;color:var(--foreground)}.reading-month__title:first-letter{text-transform:uppercase}.reading-month__count{margin:.3rem 0 0;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.reading-month__count strong{font-weight:750;color:var(--foreground)}.reading-month .rh-month__grid{gap:3px}.reading-month .rh-month__weekday{padding-bottom:.3rem;font-size:.5625rem}.reading-month .rh-cell{font-size:.75rem}.reading-month .rh-cell__badge{top:-.35rem;right:-.35rem;min-width:1.1rem;height:.95rem;font-size:.5625rem}.reading-month__legend{display:flex;flex-direction:column;gap:.7rem;border-top:1px solid var(--border);margin-top:.9rem;padding-top:.8rem}.rh-legend--stack{flex-direction:column;gap:.3rem}.rh-legend--stack .rh-legend__item{display:flex;width:100%;min-width:0;font-size:.75rem}.rh-legend--stack .rh-legend__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rh-legend--stack .rh-legend__count{margin-left:auto;flex-shrink:0}.reading-month__legend .rh-scale{margin:0}.reading-heatmap--empty{display:flex;flex-direction:column;align-items:flex-start;border:1px dashed color-mix(in srgb,var(--foreground) 22%,var(--border));padding:clamp(1.25rem,4vw,2rem)}.reading-heatmap__empty-title{margin:0 0 .4rem;font-size:1rem;font-weight:700;letter-spacing:-.03em;color:var(--foreground)}.reading-heatmap__empty-text{margin:0 0 1rem;max-width:34rem;font-size:.875rem;line-height:1.55;color:var(--muted-foreground)}.reading-heatmap__empty-cta{display:inline-flex;align-items:center;min-height:2.25rem;background:var(--primary);padding-inline:1rem;font-size:.8125rem;font-weight:600;color:var(--primary-foreground);text-decoration:none}.reading-heatmap__empty-cta:hover{opacity:.88}.reading-heatmap__empty-cta:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media (max-width:30rem){.reading-heatmap__months{grid-template-columns:minmax(0,1fr)}}.settings-page{width:100%;max-width:none;min-width:0;overflow-x:hidden;--settings-gutter:clamp(1.25rem,3vw,3rem);--settings-line:color-mix(in oklch,var(--border) 92%,transparent);padding:clamp(1.5rem,4vw,2.75rem) var(--settings-gutter) clamp(2.75rem,7vw,4.5rem)}.settings-page__head{margin-bottom:clamp(1.35rem,3vw,2rem);padding-bottom:clamp(1rem,2vw,1.35rem);border-bottom:1px solid var(--settings-line)}.settings-page__kicker{margin:0 0 .35rem;font-size:.625rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.settings-page__title{margin:0;font-family:var(--font-heading,var(--font-sans));font-size:clamp(1.625rem,3.4vw,2.25rem);font-weight:750;line-height:1.08;letter-spacing:-.04em;color:var(--foreground)}.settings-page__lead{margin:.45rem 0 0;max-width:40rem;font-size:.9375rem;line-height:1.55;color:var(--muted-foreground)}.settings-page__body{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width:900px){.settings-page__body{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.15rem}.settings-block--nav{grid-column:1/-1}}.settings-block{display:flex;flex-direction:column;gap:1.15rem;min-width:0;padding:1.25rem 1.15rem 1.35rem;border:1px solid var(--settings-line);background:var(--card)}@media (min-width:640px){.settings-block{padding:1.4rem 1.5rem 1.55rem;gap:1.25rem}}.settings-block__head{display:flex;align-items:flex-start;gap:.85rem}.settings-block__icon{display:grid;place-items:center;width:2.35rem;height:2.35rem;flex-shrink:0;border:1px solid var(--settings-line);background:color-mix(in oklch,var(--muted) 45%,var(--background));color:var(--foreground)}.settings-block__icon svg{width:1.1rem;height:1.1rem}.settings-block__intro{min-width:0;flex:1}.settings-block__title{margin:0;font-size:1.0625rem;font-weight:700;letter-spacing:-.025em;line-height:1.25;color:var(--foreground)}.settings-block__lead{margin:.3rem 0 0;font-size:.84375rem;line-height:1.5;color:var(--muted-foreground)}.theme-mode-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.theme-mode-picker__option{display:flex;align-items:center;gap:.75rem;min-height:3.75rem;padding:.75rem .85rem;border:1px solid var(--settings-line);background:color-mix(in oklch,var(--muted) 28%,var(--background));color:var(--muted-foreground);text-align:left;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,color .14s ease,transform .16s cubic-bezier(.34,1.4,.64,1)}.theme-mode-picker__option:hover:not(:disabled){background:color-mix(in oklch,var(--muted) 48%,var(--background));color:var(--foreground)}.theme-mode-picker__option:active:not(:disabled){transform:scale(.985)}.theme-mode-picker__option:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.theme-mode-picker__option:disabled{opacity:.65;cursor:wait}.theme-mode-picker__option.is-selected{border-color:color-mix(in oklch,var(--primary) 42%,var(--border));background:color-mix(in oklch,var(--primary) 8%,var(--background));color:var(--foreground);box-shadow:inset 3px 0 0 var(--primary)}.theme-mode-picker__icon{display:grid;place-items:center;width:2rem;height:2rem;flex-shrink:0;border:1px solid var(--settings-line);background:var(--background);color:inherit}.theme-mode-picker__icon svg{width:1.05rem;height:1.05rem}.theme-mode-picker__option.is-selected .theme-mode-picker__icon{border-color:color-mix(in oklch,var(--primary) 30%,var(--border));background:color-mix(in oklch,var(--primary) 10%,var(--background))}.theme-mode-picker__copy{display:flex;min-width:0;flex-direction:column;gap:.1rem}.theme-mode-picker__label{font-size:.875rem;font-weight:650;letter-spacing:-.015em}.theme-mode-picker__desc{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground)}.theme-mode-picker__option.is-selected .theme-mode-picker__desc{color:color-mix(in oklch,var(--foreground) 55%,var(--muted-foreground))}.preferred-promo-picker{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:none}.preferred-promo-picker__label{font-size:.75rem;font-weight:650;letter-spacing:.02em;color:var(--muted-foreground)}.preferred-promo-picker__field{position:relative}.preferred-promo-picker__field:after{content:"";position:absolute;top:50%;right:.9rem;width:.45rem;height:.45rem;border-right:1.5px solid var(--muted-foreground);border-bottom:1.5px solid var(--muted-foreground);transform:translateY(-65%) rotate(45deg);pointer-events:none}.preferred-promo-picker__select{width:100%;min-height:2.75rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--settings-line,var(--border));border-radius:0;background:var(--background);padding:.55rem 2.25rem .55rem .85rem;font:inherit;font-size:.875rem;font-weight:500;color:var(--foreground);cursor:pointer;transition:border-color .14s ease,background-color .14s ease}.preferred-promo-picker__select:hover:not(:disabled){border-color:color-mix(in oklch,var(--foreground) 22%,var(--border))}.preferred-promo-picker__select:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.preferred-promo-picker__select:disabled{opacity:.65;cursor:wait}.preferred-promo-picker__hint{margin:0;font-size:.75rem;line-height:1.45;color:var(--muted-foreground)}@media (prefers-reduced-motion:reduce){.theme-mode-picker__option{transition-duration:.01ms!important}.theme-mode-picker__option:active:not(:disabled){transform:none}}.followed-courses{width:100%;max-width:none;padding:clamp(1.5rem,4vw,2.75rem) clamp(1rem,2.5vw,2rem) clamp(3rem,6vw,4.5rem)}.followed-courses__layout{display:grid;grid-template-columns:minmax(0,1fr);gap:1.75rem;align-items:start}@media (min-width:68rem){.followed-courses__layout{grid-template-columns:minmax(0,1fr) 24rem}}.followed-courses__aside,.followed-courses__main{min-width:0}@media (min-width:68rem){.followed-courses__aside{position:sticky;top:calc(var(--header-offset, 4rem) + .75rem)}}.followed-courses__head{display:flex;align-items:flex-end;flex-wrap:wrap;gap:1rem 2rem;margin-bottom:clamp(1.5rem,3vw,2rem);border-bottom:1px solid var(--border);padding-bottom:clamp(.9rem,2vw,1.25rem)}.followed-courses__titles{min-width:0}.followed-courses__kicker{margin:0 0 .3rem;font-size:.625rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.followed-courses__title{margin:0;font-family:var(--font-heading,var(--font-sans));font-size:clamp(1.625rem,3.4vw,2.25rem);font-weight:750;line-height:1.05;letter-spacing:-.04em;color:var(--foreground)}.followed-courses__stats{display:flex;flex-wrap:wrap;gap:.5rem 1.75rem;margin:0 0 0 auto}.suivi-stat{min-width:0}.suivi-stat__k{margin:0 0 .1rem;font-size:.5625rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-foreground)}.suivi-stat__v{margin:0;font-size:1.0625rem;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--foreground)}.suivi-stat__v small{font-size:.75rem;font-weight:500;letter-spacing:0;color:var(--muted-foreground)}.followed-courses__label{display:flex;align-items:center;gap:.6rem;margin:0 0 .7rem;font-size:.625rem;font-weight:750;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}.followed-courses__label:after{content:"";flex:1 1 auto;height:1px;background:var(--border)}.followed-courses__label-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.3rem;padding:.1rem .3rem;background:color-mix(in srgb,var(--foreground) 8%,transparent);font-size:.5625rem;letter-spacing:0;font-variant-numeric:tabular-nums;color:var(--foreground)}.followed-courses__group{margin-top:clamp(1.5rem,3vw,2rem)}.followed-courses__resume{margin-bottom:clamp(1.5rem,3vw,2rem)}.followed-courses__toolbar{display:flex;align-items:center;gap:.75rem 1rem;flex-wrap:wrap}.followed-courses__filters{display:inline-flex;flex-shrink:0;border:1px solid var(--border);background:var(--card)}.followed-courses__filter{display:inline-flex;align-items:center;gap:.4rem;border:0;border-right:1px solid var(--border);background:none;padding:.42rem .7rem;font-family:inherit;font-size:.6875rem;font-weight:650;color:var(--muted-foreground);cursor:pointer}.followed-courses__filter:last-child{border-right:0}.followed-courses__filter:hover{color:var(--foreground)}.followed-courses__filter[data-active=true]{background:var(--foreground);color:var(--background)}.followed-courses__filter:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.followed-courses__filter-count{font-variant-numeric:tabular-nums;opacity:.65}.followed-courses__search{position:relative;display:flex;align-items:center;gap:.55rem;flex:1 1 18rem;min-width:0;border:1px solid var(--border);background:var(--card);padding:0 .5rem 0 .75rem;transition:border-color .16s ease,box-shadow .16s ease}.followed-courses__search:hover{border-color:color-mix(in srgb,var(--foreground) 22%,transparent)}.followed-courses__search:focus-within{border-color:color-mix(in srgb,var(--primary) 55%,var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 35%,transparent)}.followed-courses__search-icon{width:1rem;height:1rem;flex-shrink:0;color:var(--muted-foreground);transition:color .16s ease}.followed-courses__search:focus-within .followed-courses__search-icon{color:var(--foreground)}.followed-courses__search-input{flex:1 1 auto;min-width:0;border:0;outline:none;background:none;padding:.5rem 0;font-family:inherit;font-size:.875rem;color:var(--foreground)}.followed-courses__search-input::-moz-placeholder{color:var(--muted-foreground)}.followed-courses__search-input::placeholder{color:var(--muted-foreground)}.followed-courses__search-input::-webkit-search-cancel-button,.followed-courses__search-input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.followed-courses__search-clear{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.5rem;height:1.5rem;border:0;background:none;padding:0;color:var(--muted-foreground);cursor:pointer}.followed-courses__search-clear:hover{background:color-mix(in srgb,var(--foreground) 8%,transparent);color:var(--foreground)}.followed-courses__search-clear:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.followed-courses__search-clear-icon{width:.85rem;height:.85rem}.followed-courses__search-hint{flex-shrink:0;padding-right:.15rem;font-size:.5625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);opacity:.75}.followed-courses__result{margin:.6rem 0 0;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.followed-courses__result:empty{display:none}.followed-courses__result strong{font-weight:750;color:var(--foreground)}@media (max-width:34rem){.followed-courses__search-hint{display:none}}.suivi-gauge{display:flex;gap:2px;min-width:0}.suivi-gauge__seg{flex-basis:0;min-width:0;height:.375rem;background:color-mix(in srgb,var(--foreground) 10%,transparent)}.suivi-gauge__fill{display:block;height:100%;width:var(--suivi-fill,0);background:var(--suivi-accent)}.suivi-gauge__seg[data-status=todo]{background:color-mix(in srgb,var(--foreground) 6%,transparent)}.suivi-hero{--suivi-accent:var(--primary);position:relative;overflow:hidden;display:grid;grid-template-columns:4px minmax(0,1fr);border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow-card)}.suivi-hero__rail{align-self:stretch;background:var(--suivi-accent)}.suivi-hero__mark{position:absolute;top:-.9rem;right:-.9rem;width:8.5rem;height:8.5rem;color:var(--suivi-accent);opacity:.09;pointer-events:none}.suivi-hero__body{position:relative;display:flex;flex-direction:column;gap:.55rem;min-width:0;padding:1.05rem 1.3rem 1.1rem}.suivi-hero__meta{display:flex;align-items:center;gap:.5rem;margin:0;min-width:0;font-size:.625rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-foreground)}.suivi-hero__dot{flex-shrink:0;width:.3rem;height:.3rem;background:var(--suivi-accent)}.suivi-hero__promo{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suivi-hero__ago{flex-shrink:0;margin-left:auto;text-transform:none;letter-spacing:.03em;font-weight:500}.suivi-hero__title{margin:0;max-width:30ch;font-family:var(--font-heading,var(--font-sans));font-size:clamp(1.25rem,2.6vw,1.5rem);font-weight:750;line-height:1.1;letter-spacing:-.04em;text-wrap:balance}.suivi-hero__title-link{color:var(--card-foreground,var(--foreground));text-decoration:none}.suivi-hero__title-link:hover{color:color-mix(in srgb,var(--foreground) 76%,var(--suivi-accent))}.suivi-hero__title-link:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.suivi-hero__actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.15rem;min-width:0}.suivi-hero__cta{display:inline-flex;align-items:center;gap:.45rem;min-width:0;max-width:100%;border:1px solid var(--suivi-accent);background:color-mix(in srgb,var(--suivi-accent) 12%,transparent);padding:.45rem .7rem;font-size:.8125rem;color:var(--foreground);text-decoration:none;transition:background-color .16s ease}.suivi-hero__cta:hover{background:color-mix(in srgb,var(--suivi-accent) 22%,transparent)}.suivi-hero__cta:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.suivi-hero__cta-play{width:.7rem;height:.7rem;flex-shrink:0;fill:currentColor;color:var(--suivi-accent)}.suivi-hero__cta-label{flex-shrink:0;font-weight:700;letter-spacing:-.01em}.suivi-hero__cta-num{flex-shrink:0;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.suivi-hero__cta-section{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-foreground)}.suivi-hero__cta-arrow{width:.9rem;height:.9rem;flex-shrink:0;margin-left:.1rem;transition:transform .18s ease}.suivi-hero__cta:hover .suivi-hero__cta-arrow{transform:translateX(.15rem)}.suivi-fiche__sheet,.suivi-hero__sheet{display:inline-flex;align-items:center;gap:.35rem;flex-shrink:0;border:1px solid var(--border);background:none;padding:.45rem .6rem;font-family:inherit;font-size:.6875rem;font-weight:650;color:var(--muted-foreground);cursor:pointer}.suivi-fiche__sheet:hover,.suivi-hero__sheet:hover{border-color:color-mix(in srgb,var(--suivi-accent) 45%,var(--border));color:var(--foreground)}.suivi-fiche__sheet:focus-visible,.suivi-hero__sheet:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.suivi-fiche__sheet-icon,.suivi-hero__sheet-icon{width:.85rem;height:.85rem}.suivi-hero__foot{display:flex;align-items:baseline;gap:.6rem;margin:.2rem 0 0;font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.suivi-hero__pct{margin-left:auto;font-size:.9375rem;font-weight:750;letter-spacing:-.02em;color:var(--foreground)}.followed-courses__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(17.5rem,1fr));gap:.75rem}.suivi-fiche{--suivi-accent:var(--primary);position:relative;overflow:hidden;display:grid;grid-template-columns:3px minmax(0,1fr);border:1px solid var(--border);background:var(--card);transition:border-color .18s ease,background-color .18s ease}.suivi-fiche:hover{border-color:color-mix(in srgb,var(--suivi-accent) 38%,var(--border));background:color-mix(in srgb,var(--suivi-accent) 3%,var(--card))}.suivi-fiche__rail{align-self:stretch;background:var(--suivi-accent)}.suivi-fiche[data-complete=true] .suivi-fiche__rail{background:color-mix(in srgb,var(--suivi-accent) 45%,transparent)}.suivi-fiche__mark{position:absolute;top:-.6rem;right:-.55rem;width:5rem;height:5rem;color:var(--suivi-accent);opacity:.08;pointer-events:none}.suivi-fiche__body{position:relative;display:flex;flex-direction:column;gap:.5rem;min-width:0;padding:.8rem .95rem .7rem}.suivi-fiche__meta{display:flex;align-items:center;gap:.5rem;margin:0;min-width:0;font-size:.5625rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-foreground)}.suivi-fiche__promo{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suivi-fiche__ago{flex-shrink:0;margin-left:auto;text-transform:none;letter-spacing:.03em;font-weight:500}.suivi-fiche__title{margin:0;font-family:var(--font-heading,var(--font-sans));font-size:.9375rem;font-weight:700;line-height:1.22;letter-spacing:-.028em}.suivi-fiche__title-link{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--card-foreground,var(--foreground));text-decoration:none}.suivi-fiche__title-link:hover{color:color-mix(in srgb,var(--foreground) 76%,var(--suivi-accent))}.suivi-fiche__title-link:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.suivi-fiche__part{display:flex;align-items:baseline;gap:.5rem;margin:0;min-width:0;font-size:.625rem;color:var(--muted-foreground)}.suivi-fiche__part-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suivi-fiche__ratio{flex-shrink:0;margin-left:auto;font-variant-numeric:tabular-nums}.suivi-fiche__foot{display:flex;border-top:1px solid var(--border);margin-top:auto;padding-top:.55rem}.suivi-fiche__foot,.suivi-fiche__resume{align-items:center;gap:.4rem;min-width:0}.suivi-fiche__resume{display:inline-flex;font-size:.75rem;color:var(--card-foreground,var(--foreground));text-decoration:none}.suivi-fiche__resume:after{content:"";position:absolute;inset:0}.suivi-fiche__resume:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.suivi-fiche__play{width:.65rem;height:.65rem;flex-shrink:0;fill:currentColor;color:var(--suivi-accent)}.suivi-fiche__label{flex-shrink:0;font-weight:700;letter-spacing:-.01em}.suivi-fiche__num{flex-shrink:0;font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.suivi-fiche__section{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-foreground)}.suivi-fiche__arrow{width:.8rem;height:.8rem;flex-shrink:0;color:var(--suivi-accent);transition:transform .18s ease}.suivi-fiche:hover .suivi-fiche__arrow{transform:translateX(.15rem)}.suivi-fiche__sheet{margin-left:auto;padding:.3rem .4rem}.suivi-fiche__sheet,.suivi-fiche__title-link,.suivi-hero__title-link{position:relative;z-index:2}.suivi-strip{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;border:1px solid var(--border);background:var(--card)}.suivi-strip__row{--suivi-accent:var(--primary);position:relative;display:flex;align-items:center;gap:.65rem;min-width:0;padding:.5rem .85rem;font-size:.8125rem}.suivi-strip__row+.suivi-strip__row{border-top:1px solid var(--border)}.suivi-strip__row:hover{background:color-mix(in srgb,var(--suivi-accent) 4%,transparent)}.suivi-strip__dot{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:.55rem;height:.55rem;background:var(--suivi-accent);color:var(--card)}.suivi-strip__check{width:.45rem;height:.45rem;stroke-width:3.5}.suivi-strip__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--card-foreground,var(--foreground));text-decoration:none}.suivi-strip__name:after{content:"";position:absolute;inset:0}.suivi-strip__name:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.suivi-strip__promo{font-size:.5625rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase}.suivi-strip__meta,.suivi-strip__promo{flex-shrink:0;color:var(--muted-foreground)}.suivi-strip__meta{font-size:.6875rem;font-variant-numeric:tabular-nums}.suivi-strip__go{display:inline-flex;align-items:center;gap:.3rem;flex-shrink:0;margin-left:auto;font-size:.75rem;font-weight:700;color:var(--foreground)}.suivi-strip__go-icon{width:.8rem;height:.8rem;color:var(--suivi-accent);transition:transform .18s ease}.suivi-strip__row:hover .suivi-strip__go-icon{transform:translateX(.15rem)}.suivi-strip--done .suivi-strip__name{color:var(--muted-foreground)}.suivi-strip--done .suivi-strip__dot{background:color-mix(in srgb,var(--suivi-accent) 50%,transparent)}.followed-courses__done>summary{cursor:pointer;list-style:none}.followed-courses__done>summary::-webkit-details-marker{display:none}.followed-courses__label--summary:before{content:"";flex-shrink:0;width:.3rem;height:.3rem;border-right:1.5px solid;border-bottom:1.5px solid;transform:rotate(-45deg);transition:transform .15s ease}.followed-courses__done[open] .followed-courses__label--summary:before{transform:rotate(45deg)}.followed-courses__done>summary:hover{color:var(--foreground)}.followed-courses__done>summary:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media (max-width:46rem){.suivi-strip__meta,.suivi-strip__promo{display:none}}.suivi-summary{--suivi-accent:var(--primary)}.suivi-summary__head{border-bottom:1px solid var(--border);padding:1rem 2.5rem .85rem 1.1rem}.suivi-summary__title{font-family:var(--font-heading,var(--font-sans));font-size:1.0625rem;font-weight:750;line-height:1.2;letter-spacing:-.035em;color:var(--foreground)}.suivi-summary__lead{margin:.2rem 0 0;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.suivi-summary__body{display:flex;flex-direction:column;gap:1rem;flex:1 1 auto;min-height:0;overflow-y:auto;padding:1rem 1.1rem 1.5rem}.suivi-summary__part{min-width:0}.suivi-summary__part-head{display:flex;align-items:baseline;gap:.35rem;margin:0 0 .4rem;font-size:.6875rem;font-weight:700;color:var(--foreground)}.suivi-summary__part-num,.suivi-summary__part[data-status=todo] .suivi-summary__part-head{color:var(--muted-foreground)}.suivi-summary__part-num{flex-shrink:0;font-variant-numeric:tabular-nums}.suivi-summary__part-title{min-width:0;overflow-wrap:anywhere}.suivi-summary__part-count{flex-shrink:0;margin-left:auto;font-size:.625rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.suivi-summary__sections{display:flex;flex-direction:column;gap:.15rem;margin:0;padding:0;list-style:none}.suivi-summary__section{display:flex;align-items:baseline;gap:.4rem;min-width:0;font-size:.75rem;line-height:1.45;color:var(--muted-foreground)}.suivi-summary__mark{position:relative;top:-.08em;flex-shrink:0;width:.4rem;height:.4rem;border:1px solid color-mix(in srgb,var(--foreground) 28%,transparent)}.suivi-summary__section[data-status=current] .suivi-summary__mark,.suivi-summary__section[data-status=done] .suivi-summary__mark{border-color:var(--suivi-accent);background:var(--suivi-accent)}.suivi-summary__section[data-status=current] .suivi-summary__mark{box-shadow:inset 0 0 0 1px var(--popover)}.suivi-summary__section[data-status=done]{color:color-mix(in srgb,var(--foreground) 55%,transparent)}.suivi-summary__section[data-status=current]{font-weight:700;color:var(--foreground)}.suivi-summary__num{flex-shrink:0;font-variant-numeric:tabular-nums;opacity:.75}.suivi-summary__section-title{min-width:0;overflow-wrap:anywhere}.suivi-summary__empty{margin:0;font-size:.6875rem;font-style:italic;color:var(--muted-foreground)}.suivi-fiche .tutorat-inline-text,.suivi-hero .tutorat-inline-text,.suivi-summary .tutorat-inline-text{min-width:0;overflow-wrap:anywhere}.suivi-fiche .tutorat-inline-text__code,.suivi-hero .tutorat-inline-text__code,.suivi-summary .tutorat-inline-text__code{background:color-mix(in srgb,var(--muted) 55%,transparent);padding:0 .22em;font-family:var(--font-mono,ui-monospace,monospace);font-size:.92em}.followed-courses__empty{display:flex;flex-direction:column;align-items:flex-start;margin-top:1rem;border:1px dashed color-mix(in srgb,var(--foreground) 22%,var(--border));background:color-mix(in srgb,var(--muted) 25%,var(--background));padding:clamp(1.5rem,4vw,2.5rem)}.followed-courses__empty-title{margin:0 0 .5rem;font-size:1.0625rem;font-weight:700;letter-spacing:-.03em;color:var(--foreground)}.followed-courses__empty-text{margin:0 0 1.25rem;max-width:34rem;font-size:.9375rem;line-height:1.55;color:var(--muted-foreground)}.followed-courses__empty-cta{display:inline-flex;align-items:center;min-height:2.5rem;background:var(--primary);padding-inline:1.125rem;font-size:.875rem;font-weight:600;color:var(--primary-foreground);text-decoration:none;transition:opacity .16s ease}.followed-courses__empty-cta:hover{opacity:.88}.followed-courses__empty-cta:focus-visible{outline:2px solid var(--ring);outline-offset:2px}