.grades-page{width:100%}.course-shell__content:has(.grades-page--course){padding:0!important}.course-grades-hero{--poste-c:var(--course-accent,var(--primary));--grades-rail-w:5.5rem;--grades-rail-icon:2.65rem;grid-template-columns:var(--grades-rail-w) minmax(0, 1fr);border-bottom:1px solid color-mix(in oklch, var(--foreground) 10%, transparent);background:var(--background);min-height:12.5rem;color:var(--foreground);display:grid;position:relative;overflow:hidden}.course-grades-hero__rail{z-index:2;background:linear-gradient(180deg, color-mix(in oklch, var(--poste-c) 88%, black 6%), color-mix(in oklch, var(--poste-c) 72%, black 14%));color:color-mix(in oklch, white 92%, var(--poste-c));flex-direction:column;align-items:center;padding-top:1.65rem;display:flex;position:relative}.course-grades-hero__rail-icon{width:var(--grades-rail-icon);height:var(--grades-rail-icon)}.course-grades-hero__inner{z-index:1;min-width:0;padding:clamp(1.35rem,3vw,2rem) clamp(1.25rem,4vw,2.75rem) clamp(1.35rem,3vw,1.85rem);position:relative}.course-grades-hero__top{margin-bottom:1.1rem}.course-grades-hero__back{color:var(--muted-foreground);align-items:center;gap:.35rem;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex}.course-grades-hero__back:hover{color:var(--foreground)}.course-grades-hero__main{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:1.25rem 2rem;display:grid}.course-grades-hero__copy{min-width:0}.course-grades-hero__crumb{letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:700}.course-grades-hero__title{max-width:16ch;font-family:var(--font-heading,var(--font-sans));letter-spacing:-.045em;text-wrap:balance;margin:.55rem 0 0;font-size:clamp(2rem,5vw,2.85rem);font-weight:800;line-height:.98}.course-grades-hero__sub{max-width:36ch;color:var(--muted-foreground);margin:.7rem 0 0;font-size:.95rem;line-height:1.45}.course-grades-hero__stats{grid-template-columns:repeat(3,minmax(4.75rem,auto));gap:.85rem 1.25rem;margin:0;padding:0;list-style:none;display:grid}.course-grades-hero__stat{text-align:right;min-width:0}.course-grades-hero__stat-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.5625rem;font-weight:700}.course-grades-hero__stat-value{font-variant-numeric:tabular-nums;letter-spacing:-.04em;color:var(--poste-c);margin:.25rem 0 0;font-size:clamp(1.35rem,2.5vw,1.75rem);font-weight:200;line-height:1}.course-grades-hero__stat-value.is-puzzle{letter-spacing:-.02em;justify-content:flex-end;align-items:center;gap:.35rem;font-weight:600;display:inline-flex}.course-grades-hero__puzzle-icon{width:1rem;height:1rem}.course-grades-hero__stat-hint{color:var(--muted-foreground);margin:.25rem 0 0;font-size:.5625rem}.course-grades-hero__glyph{z-index:0;opacity:.06;pointer-events:none;width:min(16rem,40vw);height:min(16rem,40vw);color:var(--poste-c);position:absolute;bottom:-2.5rem;right:-1.5rem}.course-grades-hero__glyph-icon{width:100%;height:100%}@media (max-width:960px){.course-grades-hero__main{grid-template-columns:1fr;gap:1.15rem}.course-grades-hero__stats{border-top:1px solid color-mix(in oklch, var(--foreground) 10%, transparent);justify-content:start;width:100%;padding-top:.85rem}.course-grades-hero__stat{text-align:left}.course-grades-hero__stat-value.is-puzzle{justify-content:flex-start}}@media (max-width:767px){.course-grades-hero{--grades-rail-w:3.1rem;--grades-rail-icon:1.45rem;min-height:0}.course-grades-hero__rail{padding-top:1.15rem}.course-grades-hero__inner{padding:1.15rem 1rem 1.25rem}.course-grades-hero__title{max-width:none;font-size:clamp(1.75rem,8vw,2.25rem)}.course-grades-hero__stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem}.course-grades,.course-grades__empty{padding-inline:1rem}.course-grades__empty-bn{width:2.5rem}}.grades-page--course{--course-grades-accent:var(--poste-c,var(--course-nav-accent,var(--course-accent,var(--primary))));padding-bottom:3rem}.course-grades{flex-direction:column;gap:0;padding:0 clamp(1.25rem,4vw,2.75rem);display:flex}.course-grades__toolbar{border-bottom:1px solid color-mix(in oklch, var(--foreground) 10%, transparent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.875rem 1.25rem;padding:1.35rem 0 .85rem;display:flex}.course-grades__section-title{font-family:var(--font-heading,var(--font-sans));letter-spacing:-.02em;color:var(--foreground);background:0 0;border:none;margin:0;padding:0;font-size:clamp(1.05rem,2vw,1.25rem);font-weight:650;line-height:1.26}.course-grades__section-link{color:var(--course-grades-accent);align-items:center;gap:.3rem;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex}.course-grades__section-link:hover{text-underline-offset:.15em;text-decoration:underline}.course-grades--exo{margin-top:.5rem}.course-grades-exo.exo-sets__list{margin:0;padding:0;list-style:none}.course-grades--exo .exo-set-piste{--exo-set-accent:var(--course-grades-accent,var(--course-accent,var(--primary)))}.course-grades__view-toggle.grades-view-toggle{border-color:color-mix(in oklch, var(--course-grades-accent) 18%, var(--border));background:color-mix(in oklch, var(--course-grades-accent) 5%, var(--muted))}.grades-page--course .grades-view-toggle__btn.is-active{background:var(--course-grades-accent);color:#fff;box-shadow:0 1px 4px color-mix(in oklch, var(--course-grades-accent) 28%, transparent)}.course-grades__groups{flex-direction:column;gap:1.5rem;display:flex}.course-grades__group-head{margin-bottom:.625rem}.course-grades__panel{box-shadow:none;background:0 0;border:none;border-radius:0;overflow:visible}.grades-page--course .grades-entry-list{margin:0}.grades-page--course .grades-entry,.grades-page--course .grades-qcm-block{--grades-entry-accent:var(--course-grades-accent)}.grades-page--course .grades-entry{border-bottom:1px solid color-mix(in oklch, var(--foreground) 9%, transparent);padding-block:1rem}.grades-page--course .grades-entry:hover{background:color-mix(in srgb, var(--course-grades-accent) 5%, transparent)}.grades-page--course .grades-entry__lead{border-left-color:color-mix(in oklch, var(--course-grades-accent) 55%, var(--border))}.course-grades__empty{background:linear-gradient(180deg, color-mix(in oklch, var(--muted) 36%, var(--background)) 0%, color-mix(in oklch, var(--muted) 16%, var(--background)) 100%);text-align:left;border-top:none;align-items:flex-start;gap:clamp(.85rem,2.5vw,1.5rem);margin:0;padding:2rem clamp(1.25rem,4vw,2.75rem) 2.5rem;display:flex}.course-grades__empty-bn{letter-spacing:-.05em;width:3.5rem;color:color-mix(in oklch, var(--foreground) 28%, transparent);flex:none;font-size:clamp(1.75rem,3.5vw,2.4rem);font-weight:200;line-height:1}.course-grades__empty-copy{flex:1;min-width:0;padding-top:.15rem}.course-grades__empty-k{letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);margin:0 0 .3rem;font-size:.625rem;font-weight:700}.course-grades__empty-title{letter-spacing:-.03em;color:var(--foreground);margin:0;font-size:clamp(1.25rem,2.6vw,1.55rem);font-weight:650;line-height:1.2}.course-grades__empty-text{max-width:40ch;color:var(--muted-foreground);margin:.55rem 0 0;font-size:.9rem;line-height:1.5}.course-grades__empty-actions{flex-wrap:wrap;gap:.55rem;margin-top:1.15rem;display:flex}.course-grades__empty-link{border:1px solid color-mix(in oklch, var(--course-grades-accent) 40%, var(--border));background:var(--course-grades-accent);color:color-mix(in oklch, white 92%, var(--course-grades-accent));border-radius:0;align-items:center;gap:.2rem;margin-top:0;padding:.55rem .9rem;font-size:.8125rem;font-weight:650;text-decoration:none;transition:background .14s,border-color .14s;display:inline-flex}.course-grades__empty-link:hover{background:color-mix(in srgb, var(--course-grades-accent) 88%, #000);border-color:color-mix(in srgb, var(--course-grades-accent) 88%, #000);color:color-mix(in oklch, white 92%, var(--course-grades-accent))}.course-grades__empty-link--secondary{color:var(--foreground);border-color:color-mix(in oklch, var(--course-grades-accent) 28%, var(--border));background:0 0}.course-grades__empty-link--secondary:hover{background:color-mix(in oklch, var(--course-grades-accent) 10%, var(--background));border-color:color-mix(in oklch, var(--course-grades-accent) 40%, var(--border));color:var(--foreground)}.grades-page-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:2rem;width:100%;margin-bottom:2rem;padding-bottom:1.75rem;scroll-margin-top:5rem;display:flex}@media (max-width:640px){.grades-page-header{flex-direction:column;align-items:flex-start;gap:1.25rem}}.grades-page-header__body{border-left:3px solid var(--course-color,var(--primary));flex:1;min-width:0;padding-left:1.15rem}.grades-page-header__kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);margin:0 0 .35rem;font-size:.6875rem;font-weight:700}.grades-page-header__title{letter-spacing:-.035em;text-wrap:balance;max-width:none;color:var(--foreground);margin:0;font-size:clamp(1.5rem,3.5vw,2.25rem);font-weight:700;line-height:1.12}.grades-page-header__meta{color:var(--muted-foreground);margin:.45rem 0 0;font-size:.875rem}.grades-page-header__stats{flex-shrink:0;align-items:flex-start;gap:0 2rem;margin:0;padding:0;list-style:none;display:flex}@media (max-width:640px){.grades-page-header__stats{gap:0 1.5rem}}.grades-page-header__stat{text-align:right;min-width:4rem}.grades-page-header__stat-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.5625rem;font-weight:700}.grades-page-header__stat-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--foreground);margin:.2rem 0 0;font-size:1.375rem;font-weight:800}.grades-page-header__stat-hint{color:var(--muted-foreground);margin:.1rem 0 0;font-size:.5625rem}.grades-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:1.5rem 0 1rem;display:flex}.grades-toolbar__title{border-left:2px solid var(--course-color,var(--primary));letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);margin:0;padding-left:.65rem;font-size:.8125rem;font-weight:700}.grades-view-toggle{border:1px solid var(--border);background:color-mix(in oklch, var(--muted) 35%, transparent);border-radius:999px;gap:.15rem;padding:.2rem;display:inline-flex}.grades-view-toggle__btn{color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:.45rem .85rem;font-size:.75rem;font-weight:600;transition:background .15s,color .15s}.grades-view-toggle__btn.is-active{background:var(--course-color,var(--primary));color:var(--primary-foreground);box-shadow:0 1px 4px color-mix(in oklch, var(--course-color,var(--primary)) 30%, transparent)}.grades-subject{border:1px solid color-mix(in oklch, var(--course-color,var(--primary)) 25%, var(--border));border-left:3px solid var(--course-color,var(--primary));background:var(--card);box-shadow:0 1px 3px color-mix(in oklch, var(--foreground) 4%, transparent);border-radius:1rem;margin-bottom:1.75rem;overflow:hidden}.grades-subject__head{border-bottom:1px solid var(--border);background:color-mix(in oklch, var(--muted) 8%, var(--card));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;padding:.875rem 1rem .875rem 0;display:flex}.grades-subject__accent{flex-shrink:0;align-self:stretch;width:.35rem;margin-right:.875rem}.grades-subject__identity{flex:1;min-width:0}.grades-subject__name{letter-spacing:.04em;text-transform:uppercase;color:var(--foreground);align-items:center;gap:.5rem;margin:0;font-size:.9375rem;font-weight:800;display:flex}.grades-subject__meta{color:var(--muted-foreground);margin:.2rem 0 0;font-size:.6875rem;font-weight:600}.grades-subject__average{text-align:right}.grades-subject__aside{flex-shrink:0;align-items:flex-start;gap:1.25rem;display:flex}.grades-subject__average-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.625rem;font-weight:700}.grades-subject__average-value{font-variant-numeric:tabular-nums;color:var(--foreground);margin:.1rem 0 0;font-size:1.25rem;font-weight:800}.grades-subject__link{color:var(--muted-foreground);margin-top:.35rem;font-size:.6875rem;font-weight:600;text-decoration:none;display:inline-flex}.grades-subject__link:hover{color:var(--foreground);text-decoration:underline}.grades-entry-list{margin:0;padding:0;list-style:none}.grades-entry{--grades-entry-accent:var(--course-color,var(--primary));border-top:1px solid color-mix(in oklch, var(--border) 88%, transparent);grid-template-columns:minmax(0,1fr);gap:.875rem;padding:1rem 1.0625rem;transition:background-color .15s;display:grid}.grades-entry:first-child{border-top:none}.grades-entry:hover{background:0 0}.grades-entry--qcm-follow{border-top-style:dashed;border-top-color:color-mix(in oklch, var(--grades-entry-accent) 18%, var(--border));padding-top:.6875rem}.grades-entry__aside{min-width:0}.grades-entry__lead{border-left:2px solid color-mix(in oklch, var(--grades-entry-accent) 42%, var(--border));flex-direction:column;gap:.3125rem;padding-left:.6875rem;display:flex}.grades-entry--pending .grades-entry__lead{border-left-color:color-mix(in oklch, var(--muted-foreground) 35%, var(--border))}.grades-entry__type{letter-spacing:.14em;text-transform:uppercase;color:var(--grades-entry-accent);margin:0;font-size:.5625rem;font-weight:800;line-height:1.2}.grades-entry--pending .grades-entry__type{color:var(--muted-foreground)}.grades-entry__date{background:0 0;border:none;flex-direction:column;gap:.0625rem;margin:0;padding:0;line-height:1.15;display:flex}.grades-entry__date-day{font-variant-numeric:tabular-nums;letter-spacing:-.04em;color:var(--foreground);font-size:1.125rem;font-weight:700}.grades-entry__date-caption{letter-spacing:.01em;color:var(--muted-foreground);font-size:.6875rem;font-weight:600}.grades-entry__date-caption--muted{letter-spacing:.04em;text-transform:uppercase;font-size:.625rem;font-weight:700}.grades-entry__body{min-width:0}.grades-entry__headline{flex-wrap:wrap;align-items:baseline;gap:.375rem .625rem;display:flex}.grades-entry__title{font-family:var(--font-heading,var(--font-sans));letter-spacing:-.015em;color:var(--foreground);margin:0;font-size:.9375rem;font-weight:650;line-height:1.35}.grades-entry__attempt{border:1px solid color-mix(in oklch, var(--grades-entry-accent) 22%, var(--border));background:color-mix(in oklch, var(--grades-entry-accent) 10%, var(--background));letter-spacing:.03em;color:var(--grades-entry-accent);white-space:nowrap;border-radius:999px;align-items:center;padding:.125rem .4375rem;font-size:.625rem;font-weight:700;display:inline-flex}.grades-entry__meta{color:var(--muted-foreground);margin:.35rem 0 0;font-size:.75rem;line-height:1.45}.grades-entry__score-wrap{flex-shrink:0}.grades-entry__score-card{text-align:right;background:0 0;border:none;border-radius:0;flex-direction:column;align-items:flex-end;gap:.1rem;min-width:5.25rem;padding:0;display:flex}.grades-entry__score-card--high .grades-entry__score-value{color:color-mix(in oklch, #3d8f5a 82%, var(--foreground))}.grades-entry__score-card--mid .grades-entry__score-value{color:color-mix(in oklch, #9a7c38 88%, var(--foreground))}.grades-entry__score-card--low .grades-entry__score-value{color:color-mix(in oklch, #b85a4a 88%, var(--foreground))}.grades-entry__score-card--pending .grades-entry__score-value,.grades-entry__score-card--unknown .grades-entry__score-value{color:var(--muted-foreground)}.grades-entry__score-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground);font-size:.5625rem;font-weight:700}.grades-entry__score-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--foreground);font-size:1.0625rem;font-weight:800;line-height:1.1}.grades-entry__score-card--pending .grades-entry__score-value{letter-spacing:.02em;text-transform:uppercase;color:var(--muted-foreground);font-size:.75rem;font-weight:700}.grades-entry__percent{font-variant-numeric:tabular-nums;color:var(--muted-foreground);font-size:.6875rem;font-weight:700}.grades-entry__action{color:var(--grades-entry-accent);margin-top:.45rem;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex}.grades-entry__action:hover{color:color-mix(in oklch, var(--grades-entry-accent) 72%, var(--foreground));text-underline-offset:3px;text-decoration:underline}.grades-qcm-block{--grades-entry-accent:var(--course-color,var(--primary));border-top:1px solid color-mix(in oklch, var(--border) 88%, transparent);padding:1rem 1.0625rem .875rem}.grades-qcm-block:first-child{border-top:none}.grades-qcm-block__header{grid-template-columns:minmax(0,1fr);gap:.875rem;display:grid}.grades-qcm-block__aside{min-width:0}.grades-qcm-block__lead{border-left:2px solid color-mix(in oklch, var(--grades-entry-accent) 42%, var(--border));flex-direction:column;gap:.3125rem;padding-left:.6875rem;display:flex}.grades-qcm-block__type{letter-spacing:.14em;text-transform:uppercase;color:var(--grades-entry-accent);margin:0;font-size:.5625rem;font-weight:800;line-height:1.2}.grades-qcm-block__date{flex-direction:column;gap:.0625rem;margin:0;line-height:1.15;display:flex}.grades-qcm-block__date-day{font-variant-numeric:tabular-nums;letter-spacing:-.04em;color:var(--foreground);font-size:1.125rem;font-weight:700}.grades-qcm-block__date-caption{color:var(--muted-foreground);font-size:.6875rem;font-weight:600}.grades-qcm-block__body{min-width:0}.grades-qcm-block__title{font-family:var(--font-heading,var(--font-sans));letter-spacing:-.015em;color:var(--foreground);margin:0;font-size:.9375rem;font-weight:650;line-height:1.35}.grades-qcm-block__meta{color:var(--muted-foreground);margin:.35rem 0 0;font-size:.75rem;line-height:1.45}.grades-qcm-block__score-wrap{flex-shrink:0}.grades-qcm-block__score-card{text-align:right;flex-direction:column;align-items:flex-end;gap:.1rem;min-width:5.25rem;display:flex}.grades-qcm-block__score-card--high .grades-qcm-block__score-value{color:color-mix(in oklch, #3d8f5a 82%, var(--foreground))}.grades-qcm-block__score-card--mid .grades-qcm-block__score-value{color:color-mix(in oklch, #9a7c38 88%, var(--foreground))}.grades-qcm-block__score-card--low .grades-qcm-block__score-value{color:color-mix(in oklch, #b85a4a 88%, var(--foreground))}.grades-qcm-block__score-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground);font-size:.5625rem;font-weight:700}.grades-qcm-block__score-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--foreground);font-size:1.125rem;font-weight:800;line-height:1.1}.grades-qcm-block__percent{font-variant-numeric:tabular-nums;color:var(--muted-foreground);font-size:.6875rem;font-weight:700}.grades-qcm-block__attempts{border-top:1px dashed color-mix(in oklch, var(--grades-entry-accent) 20%, var(--border));margin:.75rem 0 0;padding:0;list-style:none}.grades-qcm-block__attempt{border-top:1px solid color-mix(in oklch, var(--border) 72%, transparent);grid-template-columns:2.25rem minmax(0,1fr) auto auto;align-items:center;gap:.5rem .75rem;padding:.5rem 0;font-size:.8125rem;display:grid}.grades-qcm-block__attempt:first-child{border-top:none}.grades-qcm-block__attempt-index{letter-spacing:.06em;text-transform:uppercase;color:var(--grades-entry-accent);font-variant-numeric:tabular-nums;font-size:.625rem;font-weight:800}.grades-qcm-block__attempt-date{min-width:0;color:var(--muted-foreground);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:500;overflow:hidden}.grades-qcm-block__attempt-score{font-variant-numeric:tabular-nums;color:var(--foreground);white-space:nowrap;flex-direction:column;align-items:flex-end;gap:.0625rem;font-weight:700;display:flex}.grades-qcm-block__attempt-percent{color:var(--muted-foreground);font-size:.625rem;font-weight:600}.grades-qcm-block__attempt-delta{text-align:center;min-width:4.5rem}.grades-qcm-block__delta{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;gap:.125rem;padding:.125rem .4375rem;font-size:.625rem;font-weight:700;display:inline-flex}.grades-qcm-block__delta--up{color:color-mix(in oklch, #2d7a48 90%, var(--foreground));background:color-mix(in oklch, #3d8f5a 12%, var(--background))}.grades-qcm-block__delta--down{color:color-mix(in oklch, #a84838 90%, var(--foreground));background:color-mix(in oklch, #b85a4a 12%, var(--background))}.grades-qcm-block__delta--flat{color:var(--muted-foreground);background:color-mix(in oklch, var(--muted) 40%, var(--background))}.grades-qcm-block__delta--none{color:color-mix(in oklch, var(--muted-foreground) 55%, transparent);background:0 0}.grades-qcm-block__attempt-link{color:var(--grades-entry-accent);grid-column:2/-1;justify-self:start;font-size:.6875rem;font-weight:600;text-decoration:none}.grades-qcm-block__attempt-link:hover{text-underline-offset:3px;text-decoration:underline}@media (min-width:640px){.grades-qcm-block__attempt{grid-template-columns:2.5rem minmax(0,1fr) 5.5rem 5.5rem auto;gap:.5rem 1rem}.grades-qcm-block__attempt-link{grid-column:auto;justify-self:end}}@media (min-width:768px){.grades-qcm-block__header{grid-template-columns:6.25rem minmax(0,1fr) 7rem;align-items:start;gap:1rem 1.5rem}.grades-entry{grid-template-columns:6.25rem minmax(0,1fr) 6.75rem;align-items:start;gap:1rem 1.5rem}.grades-entry__aside{grid-area:1/1}.grades-entry__lead{justify-content:center;min-height:100%}.grades-entry__body{grid-area:1/2}.grades-entry__score-wrap{grid-area:1/3}}.grades-empty{border:1px dashed var(--border);background:color-mix(in oklch, var(--muted) 25%, transparent);text-align:center;border-radius:1rem;padding:2.5rem 1.5rem}.grades-empty__title{margin:0;font-size:1.0625rem;font-weight:700}.grades-empty__text{max-width:24rem;color:var(--muted-foreground);margin:.5rem auto 0;font-size:.875rem}@media (prefers-reduced-motion:reduce){.grades-entry,.grades-view-toggle__btn,.grades-tabs__tab,.grades-markbook__row{transition:none}}.grades-transcript-page{width:100%;max-width:none;min-height:calc(100dvh - var(--header-offset,3.75rem));--grades-gutter:clamp(1.25rem, 3vw, 3rem);background:var(--background);flex-direction:column;flex:1;display:flex}.grades-transcript-header-band{border-bottom:1px solid var(--border);padding:clamp(1.25rem, 3vw, 1.75rem) var(--grades-gutter);padding-left:calc(var(--grades-rail-w) + var(--grades-gutter));--grades-rail-w:6.25rem;position:relative;overflow:hidden}.grades-transcript-header-band:before{content:"";inset-block:0;z-index:0;width:var(--grades-rail-w);background:linear-gradient(180deg, color-mix(in oklch, var(--course-color,var(--primary)) 88%, black 6%), color-mix(in oklch, var(--course-color,var(--primary)) 72%, black 14%));pointer-events:none;position:absolute;left:0}.grades-transcript-header-band__icon{left:calc((var(--grades-rail-w) - 3rem) / 2);z-index:1;width:3rem;height:3rem;color:color-mix(in oklch, white 92%, var(--course-color,var(--primary)));position:absolute;top:1.6rem}.grades-transcript-header-band .grades-page-header{z-index:1;border-bottom:none;margin-bottom:0;padding-bottom:0;position:relative}.grades-transcript-header-band .grades-page-header__body{border-left:none;padding-left:0}@media (max-width:640px){.grades-transcript-header-band{--grades-rail-w:3.5rem}.grades-transcript-header-band__icon{left:calc((var(--grades-rail-w) - 1.75rem) / 2);width:1.75rem;height:1.75rem;top:1.25rem}}.grades-transcript-tabs-band{top:var(--header-offset,3.75rem);z-index:20;border-bottom:1px solid var(--border);background:var(--background);position:sticky}.grades-tabs{width:100%}.grades-tabs__scroll{padding:.45rem var(--grades-gutter);overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:center;gap:.2rem;display:flex;overflow-x:auto}.grades-tabs__scroll::-webkit-scrollbar{display:none}.grades-tabs__tab{color:var(--muted-foreground);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;flex-shrink:0;align-items:center;gap:.4rem;padding:.42rem .85rem;font-size:.75rem;font-weight:600;line-height:1.2;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.grades-tabs__tab:hover{background:color-mix(in oklch, var(--muted) 50%, transparent);color:var(--foreground);border-color:var(--border)}.grades-tabs__tab.is-active{background:var(--primary);color:var(--primary-foreground);box-shadow:0 1px 4px color-mix(in oklch, var(--primary) 30%, transparent);border-color:#0000;font-weight:700}.grades-tabs__tab--subject{max-width:12rem}.grades-tabs__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.grades-tabs__avg{font-variant-numeric:tabular-nums;background:color-mix(in oklch, var(--primary-foreground) 15%, transparent);color:inherit;opacity:.85;border-radius:999px;flex-shrink:0;padding:.1rem .35rem;font-size:.625rem;font-weight:800}.grades-tabs__tab:not(.is-active) .grades-tabs__avg{background:color-mix(in oklch, var(--muted) 60%, transparent);color:var(--foreground);opacity:1}.grades-tabs__divider{background:var(--border);flex-shrink:0;width:1px;height:1.1rem;margin-inline:.15rem}.grades-transcript-main{width:100%;max-width:none;padding:clamp(1.25rem, 3vw, 1.75rem) var(--grades-gutter) clamp(4.5rem, 8vw, 5.5rem);background:var(--background);flex:1}.grades-transcript-main .grades-panels{width:100%;max-width:none;box-shadow:none;background:0 0;border:none;border-radius:0;margin:0;padding:0;overflow:visible}.grades-panels{padding:1.25rem clamp(1rem,2.5vw,1.5rem) 1.5rem}.grades-panel-head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem 1.5rem;margin-bottom:1.25rem;padding-bottom:1.25rem;display:flex}.grades-panel-head__copy{border-left:3px solid var(--primary);flex:1;min-width:0;max-width:40rem;padding-left:1.15rem}.grades-panel-head--subject .grades-panel-head__copy{border-left-color:var(--panel-accent,var(--primary))}.grades-panel-head__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:700}.grades-panel-head__title{letter-spacing:-.025em;color:var(--foreground);margin:.4rem 0 0;font-size:clamp(1.25rem,2.5vw,1.625rem);font-weight:700;line-height:1.15}.grades-panel-head__meta{color:var(--muted-foreground);margin:.45rem 0 0;font-size:.8125rem;line-height:1.45}.grades-panel-head__link{color:var(--muted-foreground);margin-top:.55rem;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex}.grades-panel-head__link:hover{color:var(--foreground);text-underline-offset:3px;text-decoration:underline}.grades-panel-head__aside{border:1px solid var(--border);text-align:right;background:0 0;border-radius:.55rem;flex-shrink:0;min-width:5.5rem;padding:.65rem .85rem}.grades-panel-head__aside-stack{flex-direction:column;align-items:flex-end;gap:.75rem;display:flex}.grades-panel-head__stat-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.5625rem;font-weight:700}.grades-panel-head__stat-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--foreground);margin:.2rem 0 0;font-size:1.375rem;font-weight:800}.grades-panel__empty{border:1px dashed var(--border);text-align:center;color:var(--muted-foreground);background:0 0;border-radius:.5rem;margin:0;padding:2rem 1rem;font-size:.875rem}.grades-panel--general{padding:0}.grades-panel--general .grades-general{margin:0}.grades-panel--general .grades-markbook__table-wrap{background:0 0;border:none;border-radius:0;overflow-x:auto}.grades-transcript-page .grades-markbook__table-wrap,.grades-transcript-page .grades-markbook__table thead,.grades-transcript-page .grades-bulletin__head{background:0 0}.grades-transcript-page .grades-markbook__table-wrap{border:none;border-radius:0}.grades-markbook__table-wrap{border:1px solid var(--border);background:var(--background);border-radius:.55rem;overflow-x:auto}.grades-markbook__table{border-collapse:collapse;width:100%;min-width:min(100%,36rem);font-size:.8125rem}.grades-markbook__table thead{background:color-mix(in oklch, var(--muted) 32%, var(--card));border-bottom:1px solid var(--border)}.grades-markbook__table th{letter-spacing:.08em;text-transform:uppercase;text-align:left;color:var(--muted-foreground);white-space:nowrap;padding:.4rem .65rem;font-size:.6rem;font-weight:700}.grades-markbook__table td{border-top:1px solid color-mix(in oklch, var(--border) 75%, transparent);vertical-align:middle;padding:.45rem .65rem}.grades-panel--general .grades-markbook__table{min-width:0;font-size:.75rem}.grades-panel--general .grades-markbook__table th{padding:.35rem .55rem}.grades-panel--general .grades-markbook__table td{padding:.3rem .55rem}.grades-panel--general .grades-markbook__average{min-width:2rem;padding:.08rem .3rem;font-size:.75rem}.grades-markbook__row{transition:background-color .12s}.grades-markbook__row:hover{background:color-mix(in oklch, var(--primary) 5%, transparent)}.grades-markbook__table th.grades-markbook__col--num,.grades-markbook__table th.grades-markbook__col--action,.grades-markbook__col--num,.grades-markbook__col--action{text-align:right;white-space:nowrap}.grades-markbook__col--hide-sm{display:none}@media (min-width:640px){.grades-markbook__col--hide-sm{display:table-cell}}.grades-markbook__subject{max-width:100%;font:inherit;color:var(--foreground);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:0;font-weight:700;display:inline-flex}.grades-markbook__subject:hover .grades-markbook__subject-name{text-underline-offset:3px;text-decoration:underline}.grades-markbook__subject-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.grades-markbook__meta{color:var(--muted-foreground);font-size:.75rem}.grades-markbook__num{font-variant-numeric:tabular-nums;font-weight:600}.grades-markbook__average{font-variant-numeric:tabular-nums;text-align:center;background:color-mix(in oklch, var(--course-color,var(--primary)) 12%, var(--muted));min-width:2.35rem;color:var(--foreground);border-radius:.25rem;padding:.12rem .35rem;font-size:.8125rem;font-weight:800;display:inline-block}.grades-markbook__average--empty{color:var(--muted-foreground);background:0 0;font-weight:600}.grades-markbook__actions{justify-content:flex-end;align-items:center;gap:.35rem;display:inline-flex}.grades-markbook__go{width:1.65rem;height:1.65rem;color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;border-radius:.35rem;justify-content:center;align-items:center;padding:0;transition:color .12s,background-color .12s;display:inline-flex}.grades-markbook__go:hover{color:var(--foreground);background:color-mix(in oklch, var(--muted) 40%, transparent)}.grades-markbook__link{color:var(--muted-foreground);white-space:nowrap;font-size:.625rem;font-weight:600;text-decoration:none}.grades-markbook__link:hover{color:var(--foreground);text-decoration:underline}.grades-subject--panel{box-shadow:none;background:0 0;border:none;border-radius:0;margin-bottom:0;overflow:visible}.grades-subject--panel .grades-panel-head{margin-bottom:1rem}.grades-bulletin{border:1px solid var(--border);background:var(--background);border-radius:.55rem;overflow:hidden}.grades-transcript-page .grades-bulletin{background:0 0;border:none;border-radius:0}.grades-bulletin__head{border-bottom:1px solid var(--border);background:color-mix(in oklch, var(--muted) 32%, var(--card));letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);grid-template-columns:4.5rem 1fr 5.5rem;gap:.75rem;padding:.5rem 1rem;font-size:.625rem;font-weight:700;display:none}@media (min-width:640px){.grades-bulletin__head{display:grid}.grades-bulletin__list .grades-entry{grid-template-columns:5.75rem 1fr 6.75rem;align-items:center;gap:.75rem}.grades-bulletin__list .grades-entry__lead{border-left:none;gap:.125rem;padding-left:0}.grades-bulletin__list .grades-entry__type{letter-spacing:.1em;font-size:.5625rem}.grades-bulletin__list .grades-entry__date{flex-flow:wrap;align-items:baseline;gap:.2rem}.grades-bulletin__list .grades-entry__date-day{font-size:.8125rem;font-weight:700}.grades-bulletin__list .grades-entry__date-caption{font-size:.75rem;font-weight:600}.grades-bulletin__list .grades-entry__score-wrap{text-align:right}}.grades-bulletin--chrono .grades-bulletin__list .grades-entry__meta{font-weight:500}.grades-puzzle-value,.grades-stat-value--puzzle{font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;gap:.3rem;display:inline-flex}.grades-puzzle-value__icon,.grades-stat-value__puzzle-icon{opacity:.85;flex-shrink:0;width:.95em;height:.95em}.grades-markbook__puzzle{font-weight:650}.grades-markbook__puzzle .grades-puzzle-value__icon{width:.9rem;height:.9rem}
.app-status{--app-status-accent:var(--primary);isolation:isolate;place-items:center;min-height:min(72vh,42rem);padding:clamp(2rem,6vw,4rem) 1.25rem;display:grid;position:relative;overflow:hidden}.app-status__atmosphere{z-index:0;pointer-events:none;background:radial-gradient(55% 60% at 50% 0%, color-mix(in oklch, var(--app-status-accent) 18%, transparent), transparent 72%), radial-gradient(40% 45% at 85% 30%, color-mix(in oklch, var(--muted-foreground) 8%, transparent), transparent 70%);height:70%;position:absolute;inset:-20% -10% auto}.sombre .app-status__atmosphere{background:radial-gradient(55% 60% at 50% 0%, color-mix(in oklch, var(--app-status-accent) 22%, transparent), transparent 72%), radial-gradient(42% 48% at 12% 40%, #ffffff0d, transparent 70%)}@supports (color:lab(0% 0 0)){.sombre .app-status__atmosphere{background:radial-gradient(55% 60% at 50% 0%, color-mix(in oklch, var(--app-status-accent) 22%, transparent), transparent 72%), radial-gradient(42% 48% at 12% 40%, lab(100% 0 0/.05), transparent 70%)}}.app-status__panel{z-index:1;text-align:center;flex-direction:column;align-items:center;width:min(100%,28rem);animation:.55s cubic-bezier(.22,1,.36,1) both app-status-in;display:flex;position:relative}.app-status__icon{border:1px solid color-mix(in oklch, var(--app-status-accent) 28%, var(--border));background:color-mix(in oklch, var(--app-status-accent) 10%, var(--background));width:3.5rem;height:3.5rem;color:color-mix(in oklch, var(--app-status-accent) 72%, var(--foreground));border-radius:1rem;place-items:center;margin-bottom:1.35rem;display:grid}.app-status__glyph{width:1.45rem;height:1.45rem}.app-status__kicker{letter-spacing:.12em;text-transform:uppercase;color:color-mix(in oklch, var(--app-status-accent) 55%, var(--muted-foreground));margin:0;font-size:.6875rem;font-weight:700}.app-status__title{letter-spacing:-.035em;color:var(--foreground);text-wrap:balance;margin:.55rem 0 0;font-size:clamp(1.35rem,2.6vw,1.75rem);font-weight:750;line-height:1.2}.app-status__text{max-width:24rem;color:color-mix(in oklch, var(--foreground) 72%, var(--muted-foreground));text-wrap:pretty;margin:.85rem 0 0;font-size:.9375rem;line-height:1.55}.app-status__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.65rem;margin-top:1.75rem;display:flex}.app-status__btn{border-radius:999px;justify-content:center;align-items:center;gap:.4rem;min-height:2.5rem;padding:.55rem 1.15rem;font-size:.8125rem;font-weight:650;text-decoration:none;transition:background-color .18s,border-color .18s,color .18s,transform .18s;display:inline-flex}.app-status__btn:hover{transform:translateY(-1px)}.app-status__btn--primary{border:1px solid color-mix(in oklch, var(--app-status-accent) 45%, transparent);background:var(--app-status-accent);color:var(--primary-foreground,#fff)}.app-status__btn--primary:hover{filter:brightness(1.05)}.app-status__btn--ghost{border:1px solid var(--border);background:color-mix(in oklch, var(--background) 88%, transparent);color:var(--foreground)}.app-status__btn--ghost:hover{background:color-mix(in oklch, var(--muted) 55%, var(--background))}@keyframes app-status-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.app-status__panel{animation:none}.app-status__btn:hover{transform:none}}
.home-page{--home-gutter:clamp(1.25rem, 3vw, 3rem);width:100%;max-width:none}.home-page__inner{width:100%;max-width:none;padding-inline:var(--home-gutter);margin-inline:auto}.home-page__inner--narrow{max-width:48rem}.home-page__inner--wide{max-width:80rem}.home-section--contrast .home-page__eyebrow{color:color-mix(in oklch, var(--background) 70%, transparent)}.home-section--contrast .home-page__title{color:var(--background)}.home-section--accent-surface{background:color-mix(in oklch, var(--home-section-accent,var(--primary)) 8%, var(--background))}.home-page__intro--accent{border-left-color:var(--home-section-accent,var(--primary))}.home-page__intro.text-center{border-left:none;border-top:3px solid var(--primary);padding-top:.85rem;padding-left:0}.home-page__intro.text-center.home-page__intro--accent{border-top-color:var(--home-section-accent,var(--primary))}.home-page__intro.text-right{border-left:none;border-right:3px solid var(--primary);padding-left:0;padding-right:1.15rem}.home-page__intro.text-right.home-page__intro--accent{border-right-color:var(--home-section-accent,var(--primary))}.home-nested-blocks__item>.home-carousel--nested,.home-nested-blocks__item>.home-features--nested,.home-nested-blocks__item>.home-quick-links--nested{margin-inline:0}.home-carousel--cards .home-carousel__slide--card{border:1px solid var(--border);background:var(--card);box-shadow:0 1px 3px color-mix(in oklch, var(--foreground) 6%, transparent);border-radius:0;overflow:hidden}.home-carousel--compact .home-carousel__slide--compact .home-carousel__slide-desc{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.home-carousel--compact .home-carousel__body{padding-block:.85rem}.home-config-grid__cell{min-width:0}.home-banner{border:1px solid var(--border);background:var(--muted);border-radius:0;padding:.85rem 1rem}.home-banner--info{background:color-mix(in oklch, var(--primary) 8%, var(--muted));border-color:color-mix(in oklch, var(--primary) 25%, var(--border))}.home-banner--success{background:color-mix(in oklch, #4a7c59 10%, var(--muted));border-color:color-mix(in oklch, #4a7c59 30%, var(--border))}.home-banner--warning{background:color-mix(in oklch, #b7a66a 14%, var(--muted));border-color:color-mix(in oklch, #b7a66a 35%, var(--border))}.home-banner--accent{background:color-mix(in oklch, var(--primary) 12%, var(--card));border-color:color-mix(in oklch, var(--primary) 35%, var(--border))}.home-banner__message{color:var(--foreground)}.home-stats--cards{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.home-stats--cards .home-stats__item{border:1px solid var(--border);background:var(--card);border-radius:0;padding:1rem 1.1rem}.home-stats--inline{flex-wrap:wrap;gap:1.25rem 2rem;margin:0;padding:0;list-style:none;display:flex}.home-stats--minimal{text-align:center;grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.home-stats__icon{color:var(--primary);margin-bottom:.35rem;display:inline-flex}.home-stats__value{letter-spacing:-.03em;color:var(--foreground);margin:0;font-size:clamp(1.5rem,3vw,2rem);font-weight:800;line-height:1.1}.home-stats__suffix{color:var(--muted-foreground);margin-left:.12em;font-size:.72em;font-weight:700}.home-stats__label{color:var(--muted-foreground);margin:.35rem 0 0;font-size:.8125rem;font-weight:600}.home-stats__hint{color:color-mix(in oklch, var(--muted-foreground) 85%, transparent);margin:.2rem 0 0;font-size:.6875rem}.home-page__intro{border-left:3px solid var(--primary);max-width:42rem;padding-left:1.15rem}@media (min-width:640px){.home-page__intro{padding-left:1.35rem}}.home-page__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:700}.home-page__title{letter-spacing:-.03em;text-wrap:balance;color:var(--foreground);margin:.45rem 0 0;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700;line-height:1.12}.home-page__intro>:not(:first-child){margin-top:.55rem}.home-hero--split{min-height:min(48vh,26rem)!important}.home-hero__layout{align-items:start;gap:1.25rem;display:grid}@media (min-width:768px){.home-hero__layout{grid-template-columns:minmax(0,1fr) 17.5rem;gap:1.35rem}}@media (min-width:1024px){.home-hero__layout{grid-template-columns:minmax(0,1fr) 19rem;gap:1.5rem}}.home-hero__actions{margin-top:1.5rem}.home-hero__layout .home-page__intro{max-width:none}.home-hero__aside{border:1px solid var(--border);background:var(--card);border-radius:0;padding:.65rem 0 .45rem}@media (min-width:900px){.home-hero__aside{margin-top:.15rem}}.home-hero__aside-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground);margin:0;padding:0 .9rem .5rem;font-size:.5625rem;font-weight:700}.home-hero__highlights{margin:0;padding:0;list-style:none}.home-hero__highlight{border-top:1px solid color-mix(in oklch, var(--border) 75%, transparent);color:inherit;grid-template-columns:auto 1fr auto;align-items:start;gap:.65rem;padding:.7rem .9rem;text-decoration:none;transition:background-color .12s;display:grid}.home-hero__highlights li:first-child .home-hero__highlight{border-top:none}a.home-hero__highlight:hover{background:color-mix(in oklch, var(--muted) 22%, transparent)}.home-hero__highlight-icon{background:color-mix(in oklch, var(--primary) 10%, var(--muted));width:1.75rem;height:1.75rem;color:var(--foreground);border-radius:0;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.home-hero__highlight-copy{flex-direction:column;gap:.12rem;min-width:0;display:flex}.home-hero__highlight-title-row{flex-wrap:wrap;align-items:center;gap:.3rem .4rem;display:flex}.home-hero__highlight-title{color:var(--foreground);font-size:.8125rem;font-weight:700;line-height:1.25}.home-hero__highlight-meta{background:color-mix(in oklch, var(--muted) 40%, transparent);letter-spacing:.05em;text-transform:uppercase;color:var(--muted-foreground);border-radius:.2rem;padding:.06rem .35rem;font-size:.5rem;font-weight:700}.home-hero__highlight-desc{color:var(--muted-foreground);font-size:.6875rem;line-height:1.35}.home-hero__highlight-arrow{color:var(--muted-foreground);margin-top:.1rem}a.home-hero__highlight:hover .home-hero__highlight-arrow{color:var(--foreground)}
.home-carousel{--hc-autoplay-ms:7s;padding-block:1.35rem 1.75rem}@media (min-width:640px){.home-carousel{padding-block:1.5rem 2rem}}.home-carousel__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.25rem;margin-bottom:1rem;display:flex}.home-carousel__intro{flex:1;min-width:0;max-width:36rem;margin-bottom:0}.home-carousel__controls{flex-shrink:0;align-items:center;gap:.5rem;display:inline-flex}.home-carousel__nav-btn{border:1px solid var(--border);background:var(--card);width:2.25rem;height:2.25rem;color:var(--foreground);cursor:pointer;border-radius:0;justify-content:center;align-items:center;transition:background-color .15s;display:inline-flex}.home-carousel__nav-btn:hover{background:color-mix(in oklch, var(--muted) 30%, var(--card))}.home-carousel__counter{font-variant-numeric:tabular-nums;min-width:3.25rem;color:var(--muted-foreground);justify-content:center;align-items:baseline;gap:.15rem;margin:0;display:inline-flex}.home-carousel__counter-current{color:var(--foreground);font-size:1rem;font-weight:800}.home-carousel__counter-sep{opacity:.45;font-size:.6875rem}.home-carousel__counter-total{font-size:.6875rem;font-weight:700}.home-carousel__tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:0;margin-bottom:1rem;display:flex}.home-carousel__tab{color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.55rem .9rem;font-size:.8125rem;font-weight:600;line-height:1.2;transition:color .15s,border-color .15s;position:relative}.home-carousel__tab:hover{color:var(--foreground)}.home-carousel__tab.is-active{color:var(--foreground);border-bottom-color:var(--primary)}.home-carousel__viewport{border:1px solid var(--border);background:var(--card);border-radius:0;overflow:hidden}.home-carousel__content{margin-left:0!important}.home-carousel__item{min-width:0}.home-carousel__link-wrap{color:inherit;outline:none;text-decoration:none;display:block}.home-carousel__link-wrap:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.home-carousel__slide{grid-template-columns:1fr;display:grid}@media (min-width:768px){.home-carousel__slide{grid-template-columns:1.15fr 1fr;min-height:15rem}}.home-carousel__media{aspect-ratio:16/10;background:var(--muted);position:relative;overflow:hidden}@media (min-width:768px){.home-carousel__media{aspect-ratio:auto;min-height:15rem}}.home-carousel__media img,.home-carousel__media .home-carousel__placeholder{width:100%;height:100%}.home-carousel__placeholder{color:var(--muted-foreground);justify-content:center;align-items:center;font-size:.875rem;display:flex}.home-carousel__body{border-top:1px solid var(--border);flex-direction:column;justify-content:center;gap:.5rem;padding:1.15rem 1.25rem;display:flex}@media (min-width:768px){.home-carousel__body{border-top:none;border-left:1px solid var(--border);padding:1.35rem 1.5rem}}.home-carousel__slide-title{letter-spacing:-.02em;color:var(--foreground);margin:0;font-size:clamp(1.0625rem,2vw,1.375rem);font-weight:700;line-height:1.2}.home-carousel__slide-desc{color:var(--muted-foreground);margin:0;font-size:.8125rem;line-height:1.55}.home-carousel__link{color:var(--foreground);align-items:center;gap:.3rem;margin-top:.25rem;font-size:.75rem;font-weight:700;display:inline-flex}.home-carousel__dots{flex-wrap:wrap;gap:.4rem;margin-top:.85rem;display:flex}.home-carousel__dot{background:color-mix(in oklch, var(--foreground) 16%, transparent);cursor:pointer;border:none;border-radius:0;width:1.75rem;height:.28rem;padding:0;position:relative;overflow:hidden}.home-carousel__dot.is-active{background:color-mix(in oklch, var(--primary) 20%, transparent);width:2.25rem}.home-carousel__dot-progress{border-radius:inherit;background:var(--primary);width:0;position:absolute;inset:0 auto 0 0}.home-carousel__dot.is-animating .home-carousel__dot-progress{animation:home-carousel-autoplay var(--hc-autoplay-ms) linear forwards}@keyframes home-carousel-autoplay{0%{width:0}to{width:100%}}@media (prefers-reduced-motion:reduce){.home-carousel__dot.is-animating .home-carousel__dot-progress{width:100%;animation:none}}
.portfolio-page{--portfolio-gutter:clamp(1.25rem, 3vw, 3rem);--portfolio-section-gap:clamp(3rem, 7vw, 5rem);width:100%;min-width:0;max-width:100%;overflow-x:hidden}.portfolio-hero{border-bottom:1px solid var(--border);background:var(--background)}.portfolio-hero__grid{padding:clamp(2rem, 5vw, 3.5rem) var(--portfolio-gutter);gap:2rem;display:grid}@media (min-width:960px){.portfolio-hero__grid{grid-template-columns:minmax(0,1fr) minmax(14rem,18rem);align-items:start;gap:2.5rem}}.portfolio-hero__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:800}.portfolio-hero__name{letter-spacing:-.04em;flex-direction:column;gap:.1rem;margin:.75rem 0 0;font-size:clamp(2.75rem,8vw,4.75rem);font-weight:800;line-height:.95;display:flex}.portfolio-hero__name-line--accent{color:var(--primary)}.portfolio-hero__subtitle{letter-spacing:.01em;color:var(--muted-foreground);margin:1rem 0 0;font-size:.9375rem;font-weight:600}.portfolio-hero__lead{max-width:40rem;color:var(--foreground);margin:1rem 0 0;font-size:1rem;line-height:1.65}.portfolio-hero__stats{flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.portfolio-hero__stat{border:1px solid var(--border);background:var(--card);letter-spacing:.04em;text-transform:uppercase;color:var(--foreground);border-radius:999px;padding:.375rem .75rem;font-size:.6875rem;font-weight:700}.portfolio-hero__actions{flex-wrap:wrap;gap:.625rem;margin-top:1.75rem;display:flex}.portfolio-btn{border-radius:.625rem;align-items:center;gap:.5rem;min-height:2.5rem;padding:0 1rem;font-size:.875rem;font-weight:700;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s;display:inline-flex}.portfolio-btn--primary{border:1px solid var(--primary);background:var(--primary);color:var(--primary-foreground)}.portfolio-btn--primary:hover{filter:brightness(1.05)}.portfolio-btn--ghost{border:1px solid var(--border);background:var(--card);color:var(--foreground)}.portfolio-btn--ghost:hover{border-color:color-mix(in oklch, var(--foreground) 18%, var(--border));background:var(--muted)}.portfolio-hero__stack{flex-wrap:wrap;gap:.375rem;margin:1.75rem 0 0;padding:0;list-style:none;display:flex}.portfolio-hero__stack-item{border:1px solid var(--border);background:color-mix(in oklch, var(--muted) 50%, transparent);color:var(--muted-foreground);border-radius:.4375rem;padding:.25rem .5rem;font-size:.6875rem;font-weight:600}.portfolio-hero__card{border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow-soft);border-radius:1rem;flex-direction:column;gap:1rem;padding:1.25rem;display:flex}.portfolio-hero__card-monogram{border:2px solid var(--primary);background:var(--background);letter-spacing:.08em;width:3.5rem;height:3.5rem;color:var(--primary);border-radius:.875rem;justify-content:center;align-items:center;font-size:.875rem;font-weight:900;display:flex}.portfolio-hero__card-copy{flex-direction:column;gap:.625rem;display:flex}.portfolio-hero__card-location,.portfolio-hero__card-open{color:var(--foreground);align-items:center;gap:.5rem;margin:0;font-size:.8125rem;font-weight:600;display:flex}.portfolio-hero__card-open{color:var(--muted-foreground)}.portfolio-section{min-width:0;max-width:100%;padding:var(--portfolio-section-gap) var(--portfolio-gutter);border-bottom:1px solid var(--border)}.portfolio-section.portfolio-xp-section{overflow:visible}.portfolio-section__head{max-width:42rem;margin-bottom:2rem}.portfolio-section__head--compact{margin-bottom:1.25rem}.portfolio-section__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:800}.portfolio-section__title{letter-spacing:-.03em;color:var(--foreground);margin:.5rem 0 0;font-size:clamp(1.5rem,3vw,2rem);font-weight:800;line-height:1.15}.portfolio-section__lead{color:var(--muted-foreground);margin:.75rem 0 0;font-size:.9375rem;line-height:1.6}.portfolio-projects{gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media (min-width:768px){.portfolio-projects{grid-template-columns:repeat(3,minmax(0,1fr))}}.portfolio-project-card{border:1px solid var(--border);background:var(--card);height:100%;min-height:12rem;color:inherit;box-shadow:var(--shadow-soft);border-radius:1rem;flex-direction:column;gap:.75rem;padding:1.25rem;text-decoration:none;transition:transform .22s,border-color .22s,box-shadow .22s;display:flex}.portfolio-project-card:hover{border-color:color-mix(in oklch, var(--primary) 35%, var(--border));box-shadow:var(--shadow-card);transform:translateY(-2px)}.portfolio-project-card--muted{opacity:.85}.portfolio-project-card__tags{letter-spacing:.08em;text-transform:uppercase;color:var(--primary);font-size:.625rem;font-weight:800}.portfolio-project-card__title{letter-spacing:-.02em;color:var(--foreground);margin:0;font-size:1.125rem;font-weight:800;line-height:1.25}.portfolio-project-card__desc{color:var(--muted-foreground);flex:1;margin:0;font-size:.875rem;line-height:1.55}.portfolio-project-card__cta{letter-spacing:.04em;text-transform:uppercase;color:var(--primary);align-items:center;gap:.375rem;font-size:.75rem;font-weight:800;display:inline-flex}.portfolio-projects-all{border:1px dashed var(--border);color:inherit;border-radius:.875rem;align-items:center;gap:1rem;margin-top:1.5rem;padding:1rem 1.25rem;text-decoration:none;transition:border-color .16s,background-color .16s;display:flex}.portfolio-projects-all:hover{border-color:color-mix(in oklch, var(--primary) 30%, var(--border));background:color-mix(in oklch, var(--primary) 5%, transparent)}.portfolio-projects-all__arrow{color:var(--primary);font-size:1.5rem;font-weight:300;line-height:1}.portfolio-projects-all__copy{flex-direction:column;gap:.2rem;display:flex}.portfolio-projects-all__copy strong{color:var(--foreground);font-size:.9375rem;font-weight:800}.portfolio-projects-all__copy span{color:var(--muted-foreground);font-size:.8125rem}.portfolio-profile-grid{gap:2rem;display:grid}@media (min-width:960px){.portfolio-profile-grid{grid-template-columns:minmax(0,1.4fr) minmax(16rem,22rem);align-items:start}}.portfolio-profile__body{flex-direction:column;gap:1rem;display:flex}.portfolio-profile__paragraph{color:var(--foreground);margin:0;font-size:.9375rem;line-height:1.65}.portfolio-profile__highlight{border-left:3px solid var(--primary);background:color-mix(in oklch, var(--primary) 6%, transparent);color:var(--foreground);border-radius:0 .75rem .75rem 0;margin:.5rem 0 0;padding:1rem 1.125rem;font-size:.9375rem;font-style:normal;line-height:1.6}.portfolio-formation{border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow-soft);border-radius:1rem;padding:1.25rem}.portfolio-formation__title{letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:800}.portfolio-formation__degree{color:var(--foreground);margin:.625rem 0 0;font-size:1.0625rem;font-weight:800;line-height:1.35}.portfolio-formation__badge{border:1px solid var(--border);background:var(--muted);letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);border-radius:.375rem;margin-top:.5rem;padding:.125rem .4375rem;font-size:.5625rem;font-weight:800;display:inline-flex}.portfolio-formation__location{color:var(--muted-foreground);margin:.75rem 0 0;font-size:.8125rem;font-weight:600}.portfolio-formation__meta{flex-direction:column;gap:1rem;margin:1.25rem 0 0;display:flex}.portfolio-formation__meta dt{letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground);font-size:.625rem;font-weight:800}.portfolio-formation__meta dd{color:var(--foreground);margin:.25rem 0 0;font-size:.875rem;font-weight:600}.portfolio-formation__link{color:var(--primary);align-items:center;gap:.375rem;text-decoration:none;display:inline-flex}.portfolio-formation__link:hover{text-decoration:underline}.portfolio-skills{gap:1.25rem;display:grid}@media (min-width:768px){.portfolio-skills{grid-template-columns:repeat(3,minmax(0,1fr))}}.portfolio-skills__group{border:1px solid var(--border);background:var(--card);border-radius:1rem;padding:1.125rem}.portfolio-skills__group-title{letter-spacing:.06em;text-transform:uppercase;color:var(--foreground);margin:0;font-size:.75rem;font-weight:800}.portfolio-skills__list{flex-wrap:wrap;gap:.375rem;margin:.875rem 0 0;padding:0;list-style:none;display:flex}.portfolio-skills__item{border:1px solid var(--border);background:var(--background);color:var(--muted-foreground);border-radius:.4375rem;padding:.3125rem .5625rem;font-size:.75rem;font-weight:600}.portfolio-cta{padding:clamp(2.5rem, 6vw, 4rem) var(--portfolio-gutter);text-align:center;background:color-mix(in oklch, var(--muted) 30%, var(--background))}.portfolio-cta__title{margin:0;letter-spacing:-.03em;text-wrap:balance;max-width:28rem;color:var(--foreground);margin-inline:auto;font-size:clamp(1.375rem,3vw,1.75rem);font-weight:800;line-height:1.2}.portfolio-cta__lead{max-width:32rem;color:var(--muted-foreground);margin:.875rem auto 0;font-size:.9375rem;line-height:1.6}.portfolio-cta__actions{flex-wrap:wrap;justify-content:center;gap:.625rem;margin-top:1.5rem;display:flex}@media (prefers-reduced-motion:reduce){.portfolio-project-card,.portfolio-btn,.portfolio-projects-all{transition:none}.portfolio-project-card:hover{transform:none}}
.portfolio-xp-section{border:1px solid color-mix(in oklch, var(--border) 88%, transparent);box-shadow:none;background:0 0;border-radius:0;padding:1.25rem 1rem}@media (min-width:640px){.portfolio-xp-section{padding:1.5rem}}.portfolio-xp-section__head{border-bottom:1px solid color-mix(in oklch, var(--border) 88%, transparent);margin-bottom:1.125rem;padding-bottom:.875rem}.portfolio-timeline-wrap{width:100%;min-width:0;max-width:100%}.portfolio-timeline{isolation:isolate;grid-template-columns:minmax(0,1fr);width:100%;min-width:0;max-width:100%;display:grid;position:relative}.portfolio-timeline__fade{pointer-events:none;z-index:2;width:1.5rem;position:absolute;inset-block:0}.portfolio-timeline__fade--end{background:linear-gradient(to left, var(--background) 15%, transparent);inset-inline-end:0}.portfolio-timeline__scroll{overscroll-behavior-x:contain;scroll-behavior:smooth;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:color-mix(in oklch, var(--muted-foreground) 45%, transparent) transparent;grid-column:1;width:100%;min-width:0;max-width:100%;padding-block:1.25rem 1.5rem;padding-inline:.125rem .5rem;scroll-padding-inline:.75rem;overflow-x:auto}.portfolio-timeline__scroll::-webkit-scrollbar{height:4px}.portfolio-timeline__scroll::-webkit-scrollbar-track{background:0 0}.portfolio-timeline__scroll::-webkit-scrollbar-thumb{background:color-mix(in oklch, var(--muted-foreground) 35%, transparent);border-radius:0}.portfolio-timeline__flow{align-items:stretch;min-width:max-content;padding-inline:.75rem 1rem;display:flex;position:relative}.portfolio-timeline__flow:before{content:"";background:color-mix(in oklch, var(--border) 92%, transparent);pointer-events:none;z-index:0;height:1px;position:absolute;top:50%;left:.75rem;right:1rem;transform:translateY(-50%)}@media (min-width:640px){.portfolio-timeline__flow{padding-inline:1rem 1.25rem}.portfolio-timeline__flow:before{left:1rem;right:1.25rem}}.portfolio-timeline__step{z-index:1;scroll-snap-align:start;flex-shrink:0;align-items:stretch;scroll-margin-inline:.25rem;display:flex;position:relative}.portfolio-timeline__step:first-child{scroll-margin-inline-start:0}.portfolio-timeline__bridge{flex-shrink:0;align-self:center;align-items:center;width:1rem;padding-block:2.75rem;display:flex}@media (min-width:640px){.portfolio-timeline__bridge{width:1.25rem}}.portfolio-timeline__bridge-line{background:color-mix(in oklch, var(--primary) 42%, var(--border));border-radius:0;width:100%;height:2px;display:block}.portfolio-timeline__step--live{z-index:2;padding-block:.375rem}.portfolio-timeline__card-wrap{flex-shrink:0;display:flex;position:relative}.portfolio-timeline__card-wrap--live{z-index:1;padding:.4375rem}.portfolio-timeline__card-wrap--live:before{content:"";pointer-events:none;z-index:0;border:2px solid color-mix(in oklch, var(--primary) 42%, var(--border));background:color-mix(in oklch, var(--primary) 16%, var(--card));animation:2.2s ease-in-out infinite portfolio-timeline-live-frame;position:absolute;inset:0}.portfolio-timeline__card-wrap--live:after{content:"";pointer-events:none;z-index:0;border:1px solid color-mix(in oklch, var(--primary) 28%, transparent);background:0 0;animation:2.2s ease-in-out .35s infinite portfolio-timeline-live-frame-inner;position:absolute;inset:.125rem}@keyframes portfolio-timeline-live-frame{0%,to{opacity:.35;background:color-mix(in oklch, var(--primary) 8%, var(--card));border-color:color-mix(in oklch, var(--primary) 22%, var(--border))}50%{opacity:1;background:color-mix(in oklch, var(--primary) 22%, var(--card));border-color:color-mix(in oklch, var(--primary) 58%, var(--border))}}@keyframes portfolio-timeline-live-frame-inner{0%,to{opacity:.15;inset:.25rem}50%{opacity:.85;inset:.0625rem}}.portfolio-timeline__card-wrap .portfolio-timeline__card{z-index:1;position:relative}.portfolio-timeline__card{--portfolio-timeline-accent:var(--primary);border:1px solid color-mix(in oklch, var(--border) 90%, transparent);background:var(--card);text-align:left;cursor:pointer;width:min(11.75rem,44vw);box-shadow:none;border-radius:0;flex-direction:column;transition:border-color .15s,background .15s;display:flex;position:relative;overflow:hidden}@media (min-width:640px){.portfolio-timeline__card{width:12.75rem}}.portfolio-timeline__card-head{border-bottom:1px solid color-mix(in oklch, var(--border) 88%, transparent);background:color-mix(in oklch, var(--portfolio-timeline-accent) 5%, var(--card));flex-wrap:wrap;align-items:center;gap:.35rem .5rem;padding:.55rem .7rem;display:flex;position:relative;overflow:hidden}.portfolio-timeline__card-body{flex-direction:column;flex:1;gap:.3rem;padding:.7rem .7rem .75rem;display:flex}.portfolio-timeline__card:hover{border-color:color-mix(in oklch, var(--portfolio-timeline-accent) 32%, var(--border));background:color-mix(in oklch, var(--portfolio-timeline-accent) 3%, var(--card))}.portfolio-timeline__card--key{border-color:color-mix(in oklch, var(--portfolio-timeline-accent) 28%, var(--border))}.portfolio-timeline__card--key .portfolio-timeline__card-head{background:color-mix(in oklch, var(--portfolio-timeline-accent) 8%, var(--card))}.portfolio-timeline__card--active,.portfolio-timeline__card--active:hover{border-color:color-mix(in oklch, var(--portfolio-timeline-accent) 38%, var(--border));background:color-mix(in oklch, var(--portfolio-timeline-accent) 6%, var(--card));box-shadow:inset 3px 0 0 var(--portfolio-timeline-accent)}.portfolio-timeline__card--live,.portfolio-timeline__card--live:hover,.portfolio-timeline__card--live.portfolio-timeline__card--active,.portfolio-timeline__card--live.portfolio-timeline__card--active:hover{--portfolio-timeline-accent:var(--primary);border-color:color-mix(in oklch, var(--portfolio-timeline-accent) 52%, var(--border));box-shadow:none}.portfolio-timeline__card--live:after{content:"";z-index:2;background:var(--portfolio-timeline-accent);pointer-events:none;width:4px;animation:2.2s ease-in-out infinite portfolio-timeline-live-bar;position:absolute;top:0;bottom:0;left:0}@keyframes portfolio-timeline-live-bar{0%,to{opacity:.45;width:3px}50%{opacity:1;width:6px}}.portfolio-timeline__card--live .portfolio-timeline__card-head,.portfolio-timeline__card--live.portfolio-timeline__card--active .portfolio-timeline__card-head{background:color-mix(in oklch, var(--portfolio-timeline-accent) 18%, var(--card));border-bottom-color:color-mix(in oklch, var(--portfolio-timeline-accent) 28%, var(--border));animation:2.2s ease-in-out infinite portfolio-timeline-live-head}@keyframes portfolio-timeline-live-head{0%,to{background:color-mix(in oklch, var(--portfolio-timeline-accent) 12%, var(--card))}50%{background:color-mix(in oklch, var(--portfolio-timeline-accent) 24%, var(--card))}}.portfolio-timeline__card--live .portfolio-timeline__card-head:before{content:"";z-index:0;background:linear-gradient(105deg, transparent 0%, color-mix(in oklch, var(--portfolio-timeline-accent) 28%, transparent) 42%, transparent 84%);pointer-events:none;animation:3s ease-in-out infinite portfolio-timeline-live-shimmer;position:absolute;inset:0;transform:translate(-120%)}.portfolio-timeline__card--live .portfolio-timeline__card-head>*{z-index:1;position:relative}@keyframes portfolio-timeline-live-shimmer{0%,12%{opacity:0;transform:translate(-130%)}38%{opacity:1}58%,to{opacity:0;transform:translate(130%)}}.portfolio-timeline__card--live .portfolio-timeline__card-index,.portfolio-timeline__card--live.portfolio-timeline__card--active .portfolio-timeline__card-index{color:color-mix(in oklch, var(--portfolio-timeline-accent) 82%, var(--muted-foreground))}.portfolio-timeline__card--live:hover,.portfolio-timeline__card--live.portfolio-timeline__card--active:hover{border-color:color-mix(in oklch, var(--portfolio-timeline-accent) 55%, var(--border));background:color-mix(in oklch, var(--portfolio-timeline-accent) 5%, var(--card))}.portfolio-timeline__card:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.portfolio-timeline__card-index{font-family:var(--font-mono,ui-monospace, monospace);letter-spacing:.16em;color:color-mix(in oklch, var(--muted-foreground) 70%, transparent);font-variant-numeric:tabular-nums;font-size:.625rem;font-weight:700;transition:color .15s}.portfolio-timeline__card:hover .portfolio-timeline__card-index,.portfolio-timeline__card--active .portfolio-timeline__card-index{color:color-mix(in oklch, var(--portfolio-timeline-accent) 75%, var(--muted-foreground))}.portfolio-timeline__card-date{letter-spacing:.08em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted-foreground);font-size:.625rem;font-weight:700;line-height:1.3}.portfolio-timeline__card-date--live{color:var(--foreground)}.portfolio-timeline__card-date-ongoing{letter-spacing:.04em;color:var(--portfolio-timeline-accent);font-weight:800}.portfolio-timeline__card-title{letter-spacing:-.02em;color:var(--foreground);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.8125rem;font-weight:650;line-height:1.35;display:-webkit-box;overflow:hidden}@media (min-width:640px){.portfolio-timeline__card-title{font-size:.875rem}}.portfolio-timeline__card-org{color:var(--muted-foreground);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.6875rem;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.portfolio-timeline__card-badge{border:1px solid color-mix(in oklch, var(--border) 88%, transparent);background:color-mix(in oklch, var(--muted) 16%, var(--card));letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground);border-radius:0;align-items:center;margin-inline-start:auto;padding:.14rem .42rem;font-size:.5625rem;font-weight:700;display:inline-flex}.portfolio-timeline__hint{text-align:center;color:var(--muted-foreground);margin-top:.75rem;font-size:.6875rem}.portfolio-timeline__popover{pointer-events:none;z-index:80;width:min(100vw - 2rem,22rem);max-width:calc(100vw - 2rem);position:fixed}.portfolio-timeline__popover-card{pointer-events:auto;border:1px solid color-mix(in oklch, var(--border) 90%, transparent);background:var(--card);box-shadow:none;border-radius:0;padding:1.125rem}.portfolio-timeline__empty{border:1px dashed color-mix(in oklch, var(--border) 90%, transparent);background:color-mix(in oklch, var(--muted) 20%, transparent);text-align:center;color:var(--muted-foreground);border-radius:0;padding:2.5rem 1.25rem;font-size:.875rem}.champagne .portfolio-xp-section{border-color:color-mix(in oklch, var(--primary) 22%, var(--border));background:0 0}.champagne .portfolio-timeline__card{background:var(--card);border-color:color-mix(in oklch, var(--primary) 18%, var(--border))}.champagne .portfolio-timeline__card--active,.champagne .portfolio-timeline__card--active:hover{background:color-mix(in oklch, var(--primary) 6%, var(--card))}.champagne .portfolio-timeline__bridge-line{background:color-mix(in oklch, var(--primary) 48%, var(--border))}.tricolore .portfolio-timeline__bridge-line{background:color-mix(in oklch, var(--mer-navy) 55%, var(--border))}.tricolore .portfolio-timeline__card--key,.tricolore .portfolio-timeline__card--active{--portfolio-timeline-accent:var(--mer-navy)}.bastille .portfolio-timeline__bridge-line{background:color-mix(in oklch, var(--tri-navy) 55%, var(--border))}.bastille .portfolio-timeline__card--key,.bastille .portfolio-timeline__card--active{--portfolio-timeline-accent:var(--tri-navy)}@media (prefers-reduced-motion:reduce){.portfolio-timeline__card{transition:none}.portfolio-timeline__card-wrap--live:before,.portfolio-timeline__card-wrap--live:after,.portfolio-timeline__card--live:after,.portfolio-timeline__card--live .portfolio-timeline__card-head,.portfolio-timeline__card--live .portfolio-timeline__card-head:before{animation:none}.portfolio-timeline__card-wrap--live:before{opacity:.75;background:color-mix(in oklch, var(--primary) 18%, var(--card));border-color:color-mix(in oklch, var(--primary) 40%, var(--border))}.portfolio-timeline__card--live:after{opacity:1;width:4px}}
.timetable-page{--timetable-gutter:clamp(1.25rem, 3vw, 3rem);--timetable-line:color-mix(in oklch, var(--border) 92%, transparent);--timetable-surface:var(--card);--timetable-accent:var(--primary);width:100%}.timetable-page__header{border-bottom:1px solid var(--timetable-line);background:var(--background)}.timetable-page__header-inner{padding:clamp(1.5rem, 4vw, 2.25rem) var(--timetable-gutter)}.timetable-page__body{padding:clamp(1.25rem, 3vw, 1.75rem) var(--timetable-gutter) clamp(2rem, 5vw, 3rem)}.timetable-page__view{overflow-x:auto}.timetable-page__grid{min-width:0}.timetable-page__empty{padding:clamp(2rem, 5vw, 3rem) var(--timetable-gutter)}.timetable-page__empty-title{letter-spacing:-.03em;margin:0;font-size:clamp(1.375rem,3vw,1.75rem);font-weight:700}.timetable-page__empty-lead{max-width:36rem;color:var(--muted-foreground);margin:.75rem 0 0;font-size:.9375rem;line-height:1.55}.timetable-toolbar{flex-direction:column;gap:1.25rem;display:flex}@media (min-width:1024px){.timetable-toolbar{flex-direction:row;justify-content:space-between;align-items:flex-end}}.timetable-toolbar__intro{border-left:3px solid var(--timetable-accent);min-width:0;padding-left:1.15rem}.timetable-toolbar__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.6875rem;font-weight:800}.timetable-toolbar__title{letter-spacing:-.03em;margin:.45rem 0 0;font-size:clamp(1.5rem,3vw,2.125rem);font-weight:700;line-height:1.12}.timetable-toolbar__meta{color:var(--muted-foreground);margin:.5rem 0 0;font-size:.875rem;line-height:1.45}.timetable-toolbar__meta strong{color:var(--foreground);font-weight:650}.timetable-toolbar__controls{flex-direction:column;gap:.75rem;display:flex}@media (min-width:640px){.timetable-toolbar__controls{flex-flow:wrap;align-items:center}}.timetable-toolbar__promos{flex-wrap:wrap;gap:.35rem;display:flex}.timetable-toolbar__chip{border:1px solid var(--timetable-line);letter-spacing:.06em;text-transform:uppercase;min-height:2rem;color:var(--muted-foreground);background:0 0;border-radius:0;align-items:center;padding:.25rem .75rem;font-size:.6875rem;font-weight:700;text-decoration:none;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.timetable-toolbar__chip:hover{border-color:color-mix(in oklch, var(--timetable-accent) 32%, var(--border));background:color-mix(in oklch, var(--timetable-accent) 5%, var(--card));color:var(--foreground)}.timetable-toolbar__chip.is-active{border-color:color-mix(in oklch, var(--timetable-accent) 38%, var(--border));background:color-mix(in oklch, var(--timetable-accent) 10%, var(--card));color:var(--timetable-accent);box-shadow:inset 2px 0 0 var(--timetable-accent)}.timetable-toolbar__nav-row{align-items:center;gap:.5rem;display:flex}.timetable-toolbar__week-nav{border:1px solid var(--timetable-line);background:var(--timetable-surface);border-radius:0;align-items:stretch;display:inline-flex;overflow:hidden}.timetable-toolbar__week-btn{border:none;border-right:1px solid var(--timetable-line);min-width:2.25rem;min-height:2.25rem;color:var(--muted-foreground);background:0 0;justify-content:center;align-items:center;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.timetable-toolbar__week-btn:last-child{border-right:none;border-left:1px solid var(--timetable-line)}.timetable-toolbar__week-btn--middle{font-family:var(--font-mono,ui-monospace, monospace);letter-spacing:.04em;color:var(--foreground);padding-inline:.75rem;font-size:.6875rem;font-weight:600}.timetable-toolbar__week-btn:hover{background:color-mix(in oklch, var(--timetable-accent) 6%, var(--card));color:var(--foreground)}.timetable-toolbar__admin{border:1px solid var(--timetable-line);background:color-mix(in oklch, var(--muted) 16%, var(--card));letter-spacing:.06em;text-transform:uppercase;min-height:2.25rem;color:var(--muted-foreground);border-radius:0;align-items:center;padding:0 .875rem;font-size:.6875rem;font-weight:700;text-decoration:none;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.timetable-toolbar__admin:hover{border-color:color-mix(in oklch, var(--timetable-accent) 32%, var(--border));color:var(--foreground)}.tt-grid-wrap{border:1px solid var(--timetable-line);background:var(--timetable-surface);box-shadow:none;border-radius:0;overflow:hidden}.tt-grid{flex-direction:column;min-width:640px;display:flex}.tt-grid-headers{border-bottom:1px solid var(--timetable-line);background:color-mix(in oklch, var(--timetable-accent) 4%, var(--card));flex-shrink:0;display:flex}.tt-time-col-header{border-right:1px solid var(--timetable-line);flex-shrink:0;width:3.5rem}.tt-grid-headers__day{border-left:1px solid var(--timetable-line);flex-direction:column;flex:1;align-items:center;gap:.35rem;min-width:0;padding:.75rem .5rem;display:flex}.tt-grid-headers__day.is-today{background:color-mix(in oklch, var(--timetable-accent) 8%, var(--card))}.tt-grid-headers__day-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);font-size:.625rem;font-weight:800}.tt-grid-headers__day-num{font-variant-numeric:tabular-nums;width:2rem;height:2rem;color:color-mix(in oklch, var(--foreground) 88%, transparent);border:1px solid #0000;border-radius:0;justify-content:center;align-items:center;font-size:.875rem;font-weight:700;display:flex}.tt-grid-headers__day.is-today .tt-grid-headers__day-num{border-color:color-mix(in oklch, var(--timetable-accent) 35%, var(--border));background:var(--timetable-accent);color:var(--primary-foreground)}.tt-grid-body{display:flex}.tt-time-col{z-index:4;border-right:1px solid var(--timetable-line);background:var(--timetable-surface);flex-shrink:0;width:3.5rem;position:sticky;left:0}.tt-time-col__slot{border-top:1px solid var(--timetable-line);font-family:var(--font-mono,ui-monospace, monospace);color:var(--muted-foreground);justify-content:center;align-items:flex-start;padding-top:.25rem;font-size:.625rem;display:flex}.tt-time-col__slot:first-child{border-top:none}.tt-day-col{border-left:1px solid var(--timetable-line);flex:1;min-width:0;position:relative}.tt-day-col.is-today{background:color-mix(in oklch, var(--timetable-accent) 3%, var(--card))}.tt-day-col__hour{pointer-events:none;border-top:1px solid var(--timetable-line);position:absolute;left:0;right:0}.tt-day-col__hour-line{border-top:1px dashed color-mix(in oklch, var(--border) 78%, transparent);position:absolute;top:50%;left:.5rem;right:.5rem}.tt-course{z-index:2;border-radius:0;min-height:1.75rem;padding:.45rem .55rem;transition:border-color .15s,background .15s;position:absolute;overflow:hidden}button.tt-course{appearance:none;width:auto;font:inherit;color:inherit;text-align:left;cursor:pointer;margin:0;display:block}button.tt-course:focus-visible{outline:2px solid var(--ring);outline-offset:1px;z-index:25}.tt-course:hover{z-index:20}.tt-course:not(.tt-course--cancelled):hover{background:color-mix(in oklch, var(--tt-course-color,var(--primary)) 34%, var(--card))!important}.tt-overlap-slot{z-index:2;border-radius:0;min-height:1.75rem;display:flex;position:absolute;overflow:hidden}.tt-overlap-slot:hover{z-index:20}.tt-overlap-tabs{background-color:color-mix(in oklch, var(--background) 88%, transparent);background-image:repeating-linear-gradient(-45deg, transparent, transparent 2px, color-mix(in oklch, var(--muted-foreground) 16%, transparent) 2px, color-mix(in oklch, var(--muted-foreground) 16%, transparent) 4px);border-right:1px solid #0000002e;border-right:1px solid lab(0% 0 0/.18);flex-shrink:0;align-self:stretch;width:.625rem;height:100%;position:relative}.tt-overlap-tab{z-index:1;cursor:pointer;border:none;min-height:0;padding:0;transition:box-shadow .15s,filter .15s;position:absolute}.tt-overlap-tab:last-child{border-bottom:none}.tt-overlap-tab:hover{filter:brightness(1.08)}.tt-overlap-tab.is-active{z-index:2;filter:brightness(1.12);box-shadow:inset 0 0 0 1px #ffffff6b,2px 0 #0000001a;box-shadow:inset 0 0 0 1px lab(100% 0 0/.42),2px 0 lab(0% 0 0/.1)}.tt-overlap-tab--cancelled{opacity:.72}.tt-overlap-tab--cancelled:after{content:"";pointer-events:none;background:repeating-linear-gradient(-45deg,#0000,#0000 2px,#0000002e 2px 4px);background:repeating-linear-gradient(-45deg,#0000,#0000 2px,lab(0% 0 0/.18) 2px 4px);position:absolute;inset:0}.tt-overlap-slot__body{flex:auto;min-width:0;height:100%;min-height:0;position:relative}.tt-overlap-slot__course{min-width:0;border-left-width:0!important;flex:none!important;position:absolute!important;left:0!important;right:0!important}.tt-overlap-slot__course.tt-course--cancelled{border-left-width:0!important}.tt-course-card{height:100%;min-height:0;color:inherit;flex-direction:column;text-decoration:none;display:flex}.tt-course-card__head{justify-content:space-between;align-items:center;gap:.25rem;display:flex}.tt-course-card__type{letter-spacing:.08em;text-transform:uppercase;color:#fff;border:1px solid #ffffff38;border:1px solid lab(100% 0 0/.22);border-color:oklch(100% 5.96046e-8 none/.22) oklch(100% 5.96046e-8 none/.22) oklch(100% 5.96046e-8 none/.22) oklch(100% 5.96046e-8 none/.22);border-radius:0;align-items:center;padding:.12rem .38rem;font-size:.5rem;font-weight:800;display:inline-flex}.tt-course-card__cancelled{background:var(--destructive);letter-spacing:.06em;text-transform:uppercase;color:#fff;border-radius:0;flex-shrink:0;padding:.1rem .35rem;font-size:.45rem;font-weight:800}.tt-course-card__promo{border:1px solid color-mix(in oklch, var(--border) 80%, transparent);background:color-mix(in oklch, var(--muted) 40%, var(--background));letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground);flex-shrink:0;margin-left:auto;padding:.1rem .35rem;font-size:.45rem;font-weight:800}.tt-course-card__title{letter-spacing:-.02em;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.25rem 0 0;font-size:.75rem;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.tt-course-card--compact .tt-course-card__title{-webkit-line-clamp:1;font-size:.6875rem}.tt-course-card__title--cancelled{color:color-mix(in oklch, var(--foreground) 42%, transparent);text-decoration:line-through}.tt-course-card__teacher{text-overflow:ellipsis;white-space:nowrap;color:var(--muted-foreground);margin:.15rem 0 0;font-size:.6rem;font-weight:500;overflow:hidden}.tt-course-card__foot{justify-content:space-between;align-items:center;gap:.25rem;margin-top:auto;padding-top:.2rem;font-size:.58rem;display:flex}.tt-course-card__time{font-family:var(--font-mono,ui-monospace, monospace);font-variant-numeric:tabular-nums;color:color-mix(in oklch, var(--muted-foreground) 88%, transparent)}.tt-course-card__room{text-overflow:ellipsis;white-space:nowrap;text-align:right;color:color-mix(in oklch, var(--muted-foreground) 78%, transparent);overflow:hidden}.tt-mobile{flex-direction:column;gap:.65rem;display:flex}.tt-mobile__day{border:1px solid var(--timetable-line);background:var(--timetable-surface);border-radius:0;overflow:hidden}.tt-mobile__day.is-today{box-shadow:inset 3px 0 0 var(--timetable-accent)}.tt-mobile__day-head{border-bottom:1px solid var(--timetable-line);background:color-mix(in oklch, var(--muted) 14%, var(--card));justify-content:space-between;align-items:center;padding:.65rem 1rem;display:flex}.tt-mobile__day.is-today .tt-mobile__day-head{background:color-mix(in oklch, var(--timetable-accent) 8%, var(--card))}.tt-mobile__day-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground);font-size:.6875rem;font-weight:800}.tt-mobile__day-date{font-family:var(--font-mono,ui-monospace, monospace);color:var(--muted-foreground);font-size:.6875rem}.tt-mobile__list{flex-direction:column;gap:.45rem;margin:0;padding:.5rem;list-style:none;display:flex}.tt-mobile__empty{text-align:center;color:var(--muted-foreground);padding:1rem;font-size:.875rem;font-style:italic}.tt-mobile__item{border-radius:0;width:100%;display:flex;overflow:hidden}button.tt-mobile__item{appearance:none;font:inherit;color:inherit;text-align:left;cursor:pointer;margin:0}button.tt-mobile__item:focus-visible{outline:2px solid var(--ring);outline-offset:1px}button.tt-mobile__item:hover{filter:brightness(1.03)}.tt-mobile__overlap{border-radius:0;display:flex;overflow:hidden}.tt-overlap-tabs--mobile{width:.55rem}.tt-mobile__item--overlap{flex:auto;min-width:0;border-left-width:0!important}.tt-mobile__item-main{flex-direction:column;flex:1;min-width:0;padding:.65rem .75rem;display:flex}.tt-mobile__item-side{text-align:right;flex-direction:column;flex-shrink:0;justify-content:center;align-items:flex-end;gap:.15rem;padding:.65rem .75rem;display:flex}.tt-mobile__item-time{font-family:var(--font-mono,ui-monospace, monospace);color:var(--muted-foreground);font-size:.75rem;font-weight:600}.tt-mobile__item-time-end{font-family:var(--font-mono,ui-monospace, monospace);color:color-mix(in oklch, var(--muted-foreground) 78%, transparent);font-size:.625rem}.tt-mobile__item-room{color:color-mix(in oklch, var(--muted-foreground) 72%, transparent);margin-top:.2rem;font-size:.625rem}.tt-mobile__promo{color:var(--muted-foreground);font-size:.55rem;font-weight:600}.tt-mobile__cancel-reason{color:var(--destructive);margin:.25rem 0 0;font-size:.75rem}.tt-session-modal__backdrop{z-index:60;background:#00000073;background:lab(0% 0 0/.45);transition:opacity .2s;position:fixed;inset:0}.tt-session-modal__backdrop[data-starting-style],.tt-session-modal__backdrop[data-ending-style]{opacity:0}.tt-session-modal{z-index:61;border:1px solid color-mix(in oklch, var(--tt-session-color,var(--primary)) 28%, var(--border));background:var(--popover);border-radius:0;outline:none;flex-direction:column;width:min(100vw - 1.25rem,24rem);max-height:min(92vh,34rem);transition:opacity .22s,transform .22s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 14px 40px #00000029;box-shadow:0 14px 40px lab(0% 0 0/.16)}.tt-session-modal[data-starting-style],.tt-session-modal[data-ending-style]{opacity:0;transform:translate(-50%,calc(8px - 50%))scale(.985)}.tt-session-modal__header{border-bottom:1px solid color-mix(in oklch, black 16%, var(--tt-session-color,var(--primary)));background:var(--tt-session-color,var(--primary));color:#fff;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.875rem .875rem .75rem;display:flex;box-shadow:inset 0 1px #ffffff1f;box-shadow:inset 0 1px lab(100% 0 0/.12)}.tt-session-modal__header-main{min-width:0}.tt-session-modal__type{background:color-mix(in oklch, black 12%, var(--tt-session-color,var(--primary)));letter-spacing:.1em;text-transform:uppercase;border:1px solid #ffffff47;border:1px solid lab(100% 0 0/.28);border-color:oklch(100% 5.96046e-8 none/.28) oklch(100% 5.96046e-8 none/.28) oklch(100% 5.96046e-8 none/.28) oklch(100% 5.96046e-8 none/.28);align-items:center;padding:.15rem .45rem;font-size:.5625rem;font-weight:800;display:inline-flex}.tt-session-modal__title{letter-spacing:-.03em;color:#fff;margin:.5rem 0 0;font-size:1.05rem;font-weight:700;line-height:1.25}.tt-session-modal__schedule{color:color-mix(in oklch, white 78%, var(--tt-session-color,var(--primary)));margin:.35rem 0 0;font-size:.8125rem;line-height:1.4}.tt-session-modal__schedule-sep{opacity:.72;margin-inline:.25rem}.tt-session-modal__close{flex-shrink:0;color:#fff!important;background:#ffffff1a!important;background:lab(100% 0 0/.1)!important;border-color:#ffffff42!important;border-color:lab(100% 0 0/.26)!important;border-radius:0!important}.tt-session-modal__close:hover{color:#fff!important;background:#ffffff29!important;background:lab(100% 0 0/.16)!important}.tt-session-modal__body{scrollbar-width:thin;flex:auto;min-height:0;padding:.75rem .875rem;overflow-y:auto}.tt-session-modal__row{border-bottom:1px solid color-mix(in oklch, var(--border) 72%, transparent);align-items:flex-start;gap:.625rem;padding:.625rem 0;display:flex}.tt-session-modal__row:last-child{border-bottom:none}.tt-session-modal__row-icon{border:1px solid color-mix(in oklch, var(--tt-session-color,var(--primary)) 24%, var(--border));background:color-mix(in oklch, var(--tt-session-color,var(--primary)) 8%, var(--background));width:1.75rem;height:1.75rem;color:var(--tt-session-color,var(--primary));flex-shrink:0;justify-content:center;align-items:center;display:flex}.tt-session-modal__row-copy{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.tt-session-modal__row-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);font-size:.625rem;font-weight:700}.tt-session-modal__row-value{color:var(--foreground);white-space:pre-wrap;font-size:.875rem;font-weight:600;line-height:1.45}.tt-session-modal__muted{color:var(--muted-foreground);font-weight:500}.tt-session-modal__foot{border-top:1px solid var(--timetable-line);background:color-mix(in oklch, var(--muted) 24%, var(--background));flex-shrink:0;padding:.75rem .875rem}.tt-session-modal__foot .tt-session-modal__course-link{border-radius:0;width:100%;background:var(--tt-session-color,var(--primary))!important;color:#fff!important;border-color:#0000!important}.tt-session-modal__foot .tt-session-modal__course-link:hover{background:color-mix(in oklch, black 10%, var(--tt-session-color,var(--primary)))!important;color:#fff!important}
.projets-index{flex-direction:column;gap:clamp(1.5rem,3.5vw,2.35rem);width:100%;display:flex}.project-card-excerpt>.rich-text{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.project-card-excerpt .prose p,.project-card-excerpt .katex-display,.projects-index-header{margin:0}.projects-index-header__hero{margin-bottom:0}.projects-index-header__inner{z-index:1;flex-direction:column;align-items:flex-start;gap:.55rem;display:flex;position:relative}.projects-index-header__kicker{background:color-mix(in oklch, var(--course-header-accent,var(--primary)) 14%, var(--muted));letter-spacing:.08em;text-transform:uppercase;color:color-mix(in oklch, var(--course-header-accent,var(--primary)) 55%, var(--foreground));border:none;align-items:center;margin:0;padding:.15rem .5rem;font-size:.625rem;font-weight:750;display:inline-flex}.projects-index-header__title{font-family:var(--font-heading,var(--font-sans));letter-spacing:-.04em;text-wrap:balance;color:var(--foreground);margin:0;font-size:clamp(1.75rem,3.6vw,2.35rem);font-weight:750;line-height:1.08}.projects-index-header__lead{max-width:34rem;color:var(--muted-foreground);margin:.15rem 0 0;font-size:.9375rem;line-height:1.55}.projects-index-header__lead .rich-text,.projects-index-header__lead .rich-text :where(p,li,span,strong,em){color:inherit;font-size:inherit;line-height:inherit}.projects-index-header__lead .rich-text p{margin:0 0 .4em}.projects-index-header__lead .rich-text p:last-child{margin-bottom:0}.projects-index-preview{border:1px dashed var(--border);background:color-mix(in oklch, var(--muted) 35%, transparent);text-align:center;color:var(--muted-foreground);margin-bottom:.25rem;padding:.55rem .85rem;font-size:.6875rem;font-weight:600}.projects-promo{flex-direction:column;gap:clamp(1.85rem,4vw,2.75rem);display:flex}.projects-promo__head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin-bottom:.9rem;padding-bottom:.7rem;display:flex}.projects-promo__title{flex-wrap:wrap;align-items:baseline;gap:.5rem .7rem;min-width:0;margin:0;display:flex}.projects-promo__code{background:color-mix(in oklch, var(--primary) 12%, var(--muted));letter-spacing:.06em;text-transform:uppercase;color:color-mix(in oklch, var(--primary) 55%, var(--foreground));border:none;align-items:center;padding:.14rem .45rem;font-size:.6875rem;font-weight:750;display:inline-flex}.projects-promo__label{font-family:var(--font-heading,var(--font-sans));letter-spacing:-.025em;color:var(--foreground);font-size:clamp(1.125rem,2.2vw,1.375rem);font-weight:700;line-height:1.2}.projects-promo__count{font-variant-numeric:tabular-nums;color:var(--muted-foreground);font-size:.75rem;font-weight:600}.projects-promo__grid{-moz-columns:1;columns:1;-moz-column-gap:.6rem;column-gap:.6rem;margin:0;padding:0;list-style:none;display:block}@media (min-width:640px){.projects-promo__grid{-moz-columns:2;columns:2}}@media (min-width:1100px){.projects-promo__grid{-moz-columns:3;columns:3}}.projects-promo__item{-moz-column-break-inside:avoid;break-inside:avoid;page-break-inside:avoid;-webkit-column-break-inside:avoid;width:100%;margin:0 0 .6rem;display:block}.projects-promo__item:last-child{margin-bottom:0}.project-card{--project-card-accent:var(--primary);border:1px solid color-mix(in oklch, var(--project-card-accent) 16%, var(--border));height:auto;min-height:0;color:inherit;background:0 0;border-radius:0;flex-direction:column;gap:.75rem;padding:.9rem .95rem .8rem;text-decoration:none;transition:border-color .14s,background-color .14s;display:flex;position:relative;overflow:hidden}.project-card__rail{inset-block:0;background:var(--project-card-accent);pointer-events:none;width:2px;position:absolute;left:0}.project-card:hover{border-color:color-mix(in oklch, var(--project-card-accent) 28%, var(--border));background:0 0}.project-card:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.project-card__top{align-items:flex-start;gap:.7rem;min-width:0;display:flex}.project-card__icon{background:color-mix(in oklch, var(--project-card-accent) 14%, var(--muted));width:2.6rem;height:2.6rem;color:color-mix(in oklch, var(--project-card-accent) 55%, var(--foreground));border:none;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .14s,color .14s;display:flex}.project-card:hover .project-card__icon{background:color-mix(in oklch, var(--project-card-accent) 20%, var(--muted));color:color-mix(in oklch, var(--project-card-accent) 62%, var(--foreground))}.project-card__heading{flex-direction:column;flex:1;gap:.3rem;min-width:0;display:flex}.project-card__meta{flex-wrap:wrap;align-items:center;gap:.35rem .45rem;display:flex}.project-card__promo{background:color-mix(in oklch, var(--project-card-accent) 16%, var(--muted));letter-spacing:.06em;text-transform:uppercase;color:color-mix(in oklch, var(--project-card-accent) 55%, var(--foreground));border:none;align-items:center;padding:.1rem .38rem;font-size:.5625rem;font-weight:750;display:inline-flex}.project-card__promo-label{letter-spacing:.02em;color:var(--muted-foreground);font-size:.625rem;font-weight:600}.project-card__index{font-family:var(--font-mono,ui-monospace, monospace);letter-spacing:.12em;color:color-mix(in oklch, var(--muted-foreground) 72%, transparent);margin-left:auto;font-size:.625rem;font-weight:700}.project-card__title{letter-spacing:-.025em;color:var(--foreground);text-wrap:balance;margin:0;font-size:1.0625rem;font-weight:700;line-height:1.28}.project-card__excerpt{font-size:.84375rem;line-height:1.5}.project-card__github{min-width:0}.project-card__foot{border-top:1px solid color-mix(in oklch, var(--project-card-accent) 12%, var(--border));justify-content:space-between;align-items:center;gap:.75rem;margin-top:auto;padding-top:.65rem;display:flex}.project-card__cta{letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground);font-size:.75rem;font-weight:700;transition:color .14s}.project-card:hover .project-card__cta{color:var(--foreground)}.project-card__go{background:color-mix(in oklch, var(--project-card-accent) 14%, var(--muted));width:1.7rem;height:1.7rem;color:color-mix(in oklch, var(--project-card-accent) 55%, var(--foreground));border:none;justify-content:center;align-items:center;transition:background-color .14s,color .14s;display:inline-flex}.project-card:hover .project-card__go{background:color-mix(in oklch, var(--project-card-accent) 22%, var(--muted));color:color-mix(in oklch, var(--project-card-accent) 62%, var(--foreground))}.project-github{--project-github-accent:var(--primary);--project-github-border:color-mix(in oklch, var(--border) 88%, transparent);--project-github-surface:color-mix(in oklch, var(--muted) 30%, var(--background))}.project-github--compact{border:1px solid color-mix(in oklch, var(--project-github-accent) 12%, var(--border));background:color-mix(in oklch, var(--project-github-accent) 5%, var(--background));border-radius:0;flex-direction:column;gap:.45rem;padding:.55rem .6rem;display:flex}.project-github__compact-row{align-items:center;gap:.45rem;min-width:0;display:flex}.project-github__compact-mark{background:color-mix(in oklch, var(--project-github-accent) 12%, var(--muted));width:1.45rem;height:1.45rem;color:color-mix(in oklch, var(--project-github-accent) 50%, var(--foreground));border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-github__compact-mark svg{width:.8rem;height:.8rem}.project-github__repo-id{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--font-mono,ui-monospace, monospace);flex:1;font-size:.6875rem;line-height:1.3;overflow:hidden}.project-github__repo-owner{color:var(--muted-foreground)}.project-github__repo-sep{color:color-mix(in oklch, var(--muted-foreground) 65%, transparent)}.project-github__repo-name{color:var(--foreground);font-weight:650}.project-github__compact-metrics{flex-shrink:0;align-items:center;gap:.25rem;display:inline-flex}.project-github__compact-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.35rem .65rem;display:flex}.project-github__compact-updated{color:var(--muted-foreground);align-items:center;gap:.25rem;font-size:.625rem;font-weight:600;display:inline-flex}.project-github--panel{border:1px solid color-mix(in oklch, var(--project-github-accent) 16%, var(--border));background:color-mix(in oklch, var(--project-github-accent) 8%, var(--background));box-shadow:none;border-radius:0;overflow:hidden}.project-github__panel-main{border-bottom:1px solid color-mix(in oklch, var(--project-github-accent) 12%, var(--border));background:0 0;grid-template-columns:auto 1fr auto;align-items:start;gap:.85rem 1rem;padding:.95rem 1rem;display:grid}@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{background:color-mix(in oklch, var(--project-github-accent) 14%, var(--muted));width:2.25rem;height:2.25rem;color:color-mix(in oklch, var(--project-github-accent) 55%, var(--foreground));border:none;justify-content:center;align-items:center;display:flex}.project-github__panel-github-icon{width:1.05rem;height:1.05rem}.project-github__panel-body{min-width:0}.project-github__panel-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);margin:0;font-size:.625rem;font-weight:750}.project-github__panel-repo-link{font-family:var(--font-mono,ui-monospace, monospace);color:var(--foreground);flex-wrap:wrap;align-items:baseline;gap:0;margin-top:.2rem;font-size:clamp(.875rem,2vw,1rem);font-weight:650;line-height:1.35;text-decoration:none;transition:color .14s;display:inline-flex}.project-github__panel-repo-link:hover{color:color-mix(in oklch, var(--project-github-accent) 55%, var(--foreground))}.project-github__panel-repo-link .project-github__repo-name{color:inherit}.project-github__panel-repo-arrow{opacity:.55;width:.9rem;height:.9rem;margin-left:.35rem;transition:opacity .14s,translate .14s;translate:0 .05rem}.project-github__panel-repo-link:hover .project-github__panel-repo-arrow{opacity:1;translate:.06rem -.06rem}.project-github__panel-metrics{flex-wrap:wrap;align-items:center;gap:.35rem .45rem;margin-top:.6rem;display:flex}.project-github__panel-cta{background:color-mix(in oklch, var(--project-github-accent) 14%, var(--muted));color:color-mix(in oklch, var(--project-github-accent) 55%, var(--foreground));white-space:nowrap;border:none;align-items:center;gap:.35rem;padding:.4rem .7rem;font-size:.75rem;font-weight:700;text-decoration:none;transition:background-color .14s,color .14s;display:inline-flex}.project-github__panel-cta:hover{background:color-mix(in oklch, var(--project-github-accent) 22%, var(--muted));color:color-mix(in oklch, var(--project-github-accent) 62%, var(--foreground))}.project-github__panel-langs{background:0 0;padding:.75rem 1rem .9rem}.project-github__panel-langs .project-github__lang-chips{margin-top:.5rem}.project-github__metric{background:var(--muted);color:var(--foreground);border:none;align-items:center;gap:.25rem;padding:.14rem .4rem;font-size:.6875rem;line-height:1.2;display:inline-flex}.project-github__metric--muted{color:var(--muted-foreground);background:0 0;padding-inline:0;font-size:.75rem;font-weight:500}.project-github__metric-icon{width:.78rem;height:.78rem;color:var(--muted-foreground);flex-shrink:0}.project-github__metric-value{font-variant-numeric:tabular-nums;font-weight:700}.project-github__lang-bar-wrap--sm .project-github__lang-bar{height:.28rem}.project-github__lang-bar-wrap--md .project-github__lang-bar{height:.36rem}.project-github__lang-bar{background:color-mix(in oklch, var(--muted-foreground) 16%, transparent);border:none;display:flex;overflow:hidden}.project-github__lang-segment{min-width:3px}.project-github__lang-chips{flex-wrap:wrap;gap:.28rem;margin:0;padding:0;list-style:none;display:flex}.project-github__lang-chip{background:var(--muted);color:var(--muted-foreground);border:none;align-items:center;gap:.28rem;padding:.1rem .38rem .1rem .3rem;font-size:.625rem;line-height:1.2;display:inline-flex}.project-github__lang-chips--md .project-github__lang-chip{padding:.14rem .45rem .14rem .35rem;font-size:.6875rem}.project-github__lang-dot{flex-shrink:0;width:.4rem;height:.4rem}.project-github__lang-chips--md .project-github__lang-dot{width:.45rem;height:.45rem}.project-github__lang-chip-name{color:var(--foreground);font-weight:650}.project-github__lang-chip-pct{font-variant-numeric:tabular-nums;color:var(--muted-foreground)}
.projects-shell .course-shell__home-header{--project-header-pad-x:1.25rem;--project-header-pad-y:1rem}@media (min-width:640px){.projects-shell .course-shell__home-header{--project-header-pad-x:1.75rem;--project-header-pad-y:1.125rem}}@media (min-width:1024px){.projects-shell .course-shell__home-header{--project-header-pad-x:2.25rem;--project-header-pad-y:1.25rem}}@media (min-width:1280px){.projects-shell .course-shell__home-header{--project-header-pad-x:2.5rem;--project-header-pad-y:1.375rem}}.projects-shell .course-shell__home-header .projects-page-header{margin:0;margin-inline:0;width:100%;margin-top:0;margin-bottom:0}.projects-shell .course-shell__home-header .projects-page-header .course-page-header__hero--accent{margin-bottom:0}.projects-shell .course-shell__home-header .projects-page-header--article .course-page-header__hero--accent{padding:var(--project-header-pad-y) var(--project-header-pad-x);padding-bottom:calc(var(--project-header-pad-y) + .125rem);padding-left:calc(var(--course-rail-w) + var(--project-header-pad-x))}.projects-shell .course-shell__home-header .projects-page-header--article .course-page-header__crumb{margin-bottom:.5rem;font-size:.75rem}.projects-shell .course-shell__home-header .projects-page-header--article .course-page-header__title{max-width:52rem;font-size:clamp(1.25rem,2.4vw,1.75rem);line-height:1.15}.projects-shell .course-shell__home-header .projects-page-header--home .projects-index-header__hero,.projects-shell .course-shell__home-header .projects-page-header--home .course-page-header__hero--accent{padding:var(--project-header-pad-y) var(--project-header-pad-x);padding-bottom:calc(var(--project-header-pad-y) + .35rem);padding-left:calc(var(--course-rail-w) + var(--project-header-pad-x))}.project-article-intro{flex-direction:column;gap:1rem;width:100%;min-width:0;max-width:none;margin-bottom:2rem;display:flex}.project-article-intro .course-page-header__details{margin-bottom:0}.project-article-intro .course-page-header__lead{width:100%;margin-top:0}.project-article-intro__github{width:100%;min-width:0;max-width:none}.project-article-intro__github .project-github{width:100%}
