/* First charter pass: public navigation, homepage and footer only.
   Original Joomla markup, data sources, ordering and breakpoints are retained. */

/* Navigation — quiet, white, official logo unchanged. */
body header.header {
    --cc-weight-nav: 600;
    color: var(--cc-text);
    background: var(--cc-white);
    border-bottom-color: var(--cc-border);
    box-shadow: var(--cc-shadow-soft);
}
body header.header .grid-child.container-nav {
    max-width: 1920px;
    margin-inline: auto;
}
/* Centre the actual logo artwork, not its inherited inline baseline/spacing. */
body header.header.container-header .grid-child.container-nav {
    min-height: 5.5rem;
    align-items: center;
    padding-block: .625rem;
}
body header.header .grid-child.container-nav #mod-custom674 {
    display: flex;
    align-items: center;
}
body header.header .grid-child.container-nav #mod-custom674 .navbar-brand {
    display: flex;
    align-items: center;
    margin: 0;
    padding: 0;
    line-height: 0;
}
body header.header #mod-custom674 .brand-logo {
    display: flex;
    align-items: center;
}
body header.header .grid-child.container-nav > nav.navbar {
    margin: 0;
    padding-block: 0;
}
body header.header ul.mod-menu > li > a,
body header.header .grid-child.container-nav ul.mod-menu > li > a {
    color: var(--cc-black);
    font-weight: var(--cc-weight-nav);
    letter-spacing: .005em;
    border-radius: var(--cc-radius-sm);
    background: transparent;
}
/* One neutral navigation style: only the existing short blue marker changes. */
body header.header .grid-child.container-nav ul.mod-menu > li > a:is(:hover, :focus-visible),
body header.header .grid-child.container-nav ul.mod-menu > li:is(.active, .current) > a {
    color: var(--cc-black);
    background: transparent;
    box-shadow: none;
    transform: none;
    text-decoration: none;
}
body header.header .grid-child.container-nav ul.mod-menu > li > a::after,
body header.header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse a::after {
    position: absolute;
    bottom: .18rem;
    left: 50%;
    margin: 0;
    width: .9rem;
    height: .14rem;
    background: var(--cc-blue);
    border: 0;
    border-radius: 999px;
    content: "";
    transform: translateX(-50%);
    opacity: 0;
    pointer-events: none;
    transition: opacity .15s ease;
}
body header.header .grid-child.container-nav ul.mod-menu > li:is(.active, .current, :hover, :focus-within) > a::after,
body header.header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse a:is(:hover, :focus-visible)::after,
body header.header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse li:is(.active, .current) > a::after {
    opacity: 1;
}
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link {
    color: var(--cc-black);
    background: transparent;
    border: 1px solid var(--cc-black);
    border-radius: 999px;
    box-shadow: none;
    font-weight: var(--cc-weight-nav);
    letter-spacing: 0;
}
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link:is(:hover, :focus-visible),
body header.header .grid-child.container-nav ul.mod-menu > li.active > a.cc-user-menu-link,
body.itemid-219 header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link {
    color: var(--cc-black);
    background: transparent;
    border-color: var(--cc-black);
    transform: none;
}
/* Guest login only: leave the connected Mon espace entry unchanged. */
body header.header .grid-child.container-nav ul.mod-menu > li:is(.active,.current) > a.cc-user-menu-link:not([href$="/connexion"]),
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link:not([href$="/connexion"]):is(:hover,:focus-visible) {
    background: var(--cc-black);
    color: var(--cc-white);
    border-color: var(--cc-black);
}
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link::after {
    content: none;
}
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link[href$="/connexion"] {
    color: var(--cc-black);
    background: transparent;
    border: 1px solid var(--cc-black);
}
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link[href$="/connexion"]:is(:hover, :focus-visible) {
    color: var(--cc-white);
    background: var(--cc-black);
    border-color: var(--cc-black);
}
body header.header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link[href$="/connexion"]::after {
    content: none;
}
body header.header ul.mod-menu > li > ul.mm-collapse {
    background: var(--cc-white);
    border-color: var(--cc-border);
    border-radius: var(--cc-radius-md);
    box-shadow: var(--cc-shadow-soft);
}
body header.header ul.mod-menu > li > ul.mm-collapse a {
    position: relative;
    color: var(--cc-black);
    background: transparent;
    font-weight: var(--cc-weight-nav);
    letter-spacing: 0;
    border-radius: var(--cc-radius-sm);
}
body header.header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse a:is(:hover, :focus-visible),
body header.header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse li:is(.active, .current) > a {
    color: var(--cc-black);
    background: transparent;
    box-shadow: none;
    transform: none;
    text-decoration: none;
}
body header.header .navbar-toggler {
    color: var(--cc-text-heading);
    background: var(--cc-white);
    border-color: var(--cc-button-secondary-border);
    border-radius: var(--cc-radius-sm);
    box-shadow: none;
}
body header.header .navbar-toggler:is(:hover, :focus-visible, [aria-expanded="true"]) {
    color: var(--cc-white);
    background: var(--cc-text-heading);
    border-color: var(--cc-text-heading);
    box-shadow: none;
}
body header.header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler {
    color: var(--cc-text-heading);
}
body header.header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler:is(:hover, :focus-visible) {
    background: var(--cc-background-alt);
}
body header.header .grid-child.container-nav :is(a, button):focus-visible,
body header.header .grid-child.container-nav ul.mod-menu :is(a, button):focus-visible,
body header.header #mod-custom674 .brand-logo:focus-visible {
    outline: 2px solid var(--cc-focus);
    outline-offset: 4px;
    box-shadow: none;
}

/* Homepage — keep the approved content composition; simplify the visual voice. */
body .cc-home-landing {
    --cc-home-purple: var(--cc-text-heading);
    --cc-home-purple-dark: var(--cc-text-heading);
    --cc-home-purple-soft: var(--cc-text-muted);
    --cc-home-mint: var(--cc-primary);
    --cc-home-blue: var(--cc-primary);
    --cc-home-ink: var(--cc-text-heading);
    --cc-home-muted: var(--cc-text-muted);
    --cc-home-line: var(--cc-border);
    color: var(--cc-text);
    background: var(--cc-white);
    font-weight: var(--cc-weight-body);
}
body .cc-home-landing__hero {
    max-width: 1920px;
    border-radius: var(--cc-radius-lg);
    box-shadow: none;
}
body .cc-home-landing__hero-shade {
    background: linear-gradient(90deg, rgba(var(--cc-photo-shade),.86), rgba(var(--cc-photo-shade),.68) 38%, rgba(var(--cc-photo-shade),.16) 70%, rgba(var(--cc-photo-shade),.08));
}
body .cc-home-landing__eyebrow {
    color: var(--cc-text-muted);
    font-weight: var(--cc-weight-nav);
    letter-spacing: .1em;
}
body .cc-home-landing__hero .cc-home-landing__eyebrow {
    color: var(--cc-on-photo-muted);
}
body .cc-home-landing__hero h1 {
    max-width: 12ch;
    font-size: clamp(3.15rem, 4.8vw, 4.8rem);
    font-weight: var(--cc-weight-hero);
    letter-spacing: -.025em;
    line-height: 1.04;
}
body .cc-home-landing__hero-copy > p:not(.cc-home-landing__eyebrow) {
    color: var(--cc-on-photo-muted);
    font-weight: var(--cc-weight-body);
}
body .cc-home-landing__button {
    border-radius: var(--cc-radius-button);
    font-weight: var(--cc-weight-title);
    letter-spacing: 0;
    box-shadow: none;
}
body .cc-home-landing__button:is(:hover, :focus-visible) {
    transform: none;
}
body .cc-home-landing__button--primary {
    color: var(--cc-black);
    background: var(--cc-white);
    border-color: var(--cc-white);
}
body .cc-home-landing__button--primary:is(:hover, :focus-visible) {
    color: var(--cc-text-heading);
    background: var(--cc-background-muted);
    border-color: var(--cc-background-muted);
}
body .cc-home-landing__button--glass {
    background: transparent;
    backdrop-filter: none;
    border-color: var(--cc-on-photo-muted);
}
body .cc-home-landing__button--glass:is(:hover, :focus-visible) {
    color: var(--cc-text-heading);
    background: var(--cc-white);
}
body .cc-home-landing__hero-note {
    color: var(--cc-on-photo-muted);
    background: rgba(var(--cc-photo-shade),.55);
    border: 0;
    border-radius: var(--cc-radius-sm);
    backdrop-filter: none;
}
body .cc-home-landing__hero-note strong {
    color: var(--cc-on-photo);
    font-weight: var(--cc-weight-title);
    letter-spacing: .08em;
}

/* Four restrained colour accents, with bare icons and no tinted card surface. */
body .cc-home-landing__activity {
    --cc-activity-colour: var(--cc-red);
    --cc-activity-bar: #E30613;
    --cc-activity-icon: #E30613;
    color: var(--cc-text-heading);
    background: var(--cc-white);
    border-color: var(--cc-border);
    border-radius: var(--cc-radius-md);
    box-shadow: none;
    transition: transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
body .cc-home-landing__activity--training {
    --cc-activity-colour: var(--cc-formation);
    --cc-activity-bar: #F9B900;
    --cc-activity-icon: #906200;
}
body .cc-home-landing__activity--scores {
    --cc-activity-colour: var(--cc-partition);
    --cc-activity-bar: #27B9D7;
    --cc-activity-icon: #0D7995;
}
body .cc-home-landing__activity--events {
    --cc-activity-colour: var(--cc-event);
    --cc-activity-bar: #582583;
    --cc-activity-icon: #582583;
}
/* Decorative stripe clipped by the existing rounded card; no layout shift. */
body .cc-home-landing__activity::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: auto;
    width: 4px;
    height: auto;
    background: var(--cc-activity-bar);
    border-radius: 0;
    pointer-events: none;
}
body .cc-home-landing__activity:is(:hover, :focus-visible) {
    color: var(--cc-text-heading);
    border-color: var(--cc-border);
    box-shadow: none;
    transform: translateY(-3px);
}
@media (prefers-reduced-motion: reduce) {
    body .cc-home-landing__activity { transition: none; }
    body .cc-home-landing__activity:is(:hover, :focus-visible) { transform: none; }
}
body .cc-home-landing__activity-icon {
    color: var(--cc-activity-icon);
    background: transparent;
    border-radius: 0;
    box-shadow: none;
}
body .cc-home-landing__activity-copy strong {
    color: var(--cc-black);
    font-size: clamp(1.05rem, 1.45vw, 1.3rem);
    font-weight: var(--cc-weight-title);
    letter-spacing: -.01em;
    line-height: 1.25;
}
body .cc-home-landing__activity-copy small {
    color: var(--cc-text-muted);
    font-weight: var(--cc-weight-body);
}
body .cc-home-landing__activity-arrow {
    color: var(--cc-text-heading);
    background: transparent;
    border-radius: 0;
    font-weight: var(--cc-weight-nav);
}

/* Editorial hierarchy without changing the featured/secondary news layout. */
body .cc-home-landing__section-heading h2 {
    color: var(--cc-text-heading);
    font-size: clamp(2.1rem, 3.6vw, 3.4rem);
    font-weight: var(--cc-weight-title);
    letter-spacing: -.025em;
    line-height: 1.1;
}
body .cc-home-landing__section-heading .cc-home-landing__title-accent {
    color: var(--cc-news-text);
}
body .cc-home-landing__section-heading .cc-home-landing__eyebrow {
    color: var(--cc-text-muted);
}
body .cc-home-landing__section-heading > a {
    color: var(--cc-black);
    border-bottom: 0;
    text-decoration: none;
    font-weight: var(--cc-weight-nav);
}
body .cc-home-landing__section-heading > a:is(:hover, :focus-visible) {
    color: var(--cc-black);
    text-decoration: none;
}
body .cc-home-landing__spotlight {
    border-radius: var(--cc-radius-lg);
    box-shadow: none;
}
body .cc-home-landing__spotlight-media,
body .cc-home-landing__latest-media {
    background: var(--cc-text-heading);
}
body .cc-home-landing__spotlight h3 {
    font-weight: var(--cc-weight-title);
    letter-spacing: -.02em;
    line-height: 1.08;
}
body .cc-home-landing__spotlight-meta strong {
    color: var(--cc-white);
    background: var(--cc-news-signal);
    border-radius: var(--cc-radius-sm);
    font-weight: var(--cc-weight-title);
    letter-spacing: .05em;
}
body .cc-home-landing__spotlight-copy > p:not(.cc-home-landing__spotlight-meta) {
    color: var(--cc-on-photo-muted);
}
body .cc-home-landing__readmore {
    color: var(--cc-text-heading);
    background: var(--cc-white);
    border-radius: var(--cc-radius-button);
    font-weight: var(--cc-weight-title);
}
body .cc-home-landing__readmore:is(:hover, :focus-visible) {
    color: var(--cc-text-heading);
    background: var(--cc-background-muted);
}
body .cc-home-landing__latest-media { border-radius: var(--cc-radius-sm); }
body .cc-home-landing__latest-copy small {
    color: var(--cc-text-muted);
    font-weight: var(--cc-weight-body);
    letter-spacing: 0;
}
body .cc-home-landing__latest-copy strong {
    font-weight: var(--cc-weight-title);
    font-size: clamp(1rem, 1.4vw, 1.15rem);
    letter-spacing: -.01em;
    line-height: 1.35;
}
body .cc-home-landing__latest-copy > span { font-weight: var(--cc-weight-nav); }
body .cc-home-landing__spotlight:hover .cc-home-landing__spotlight-media img,
body .cc-home-landing__spotlight:focus-within .cc-home-landing__spotlight-media img,
body .cc-home-landing__latest-item:hover img,
body .cc-home-landing__latest-item:focus-within img { transform: none; }

body .cc-home-landing__manifesto {
    background: var(--cc-white);
    border-color: var(--cc-border);
    border-radius: var(--cc-radius-lg);
}
body .cc-home-landing__manifesto > p {
    font-weight: var(--cc-weight-body);
    letter-spacing: -.015em;
    line-height: 1.18;
}
body .cc-home-landing__manifesto > p strong,
body .cc-home-landing__manifesto li strong { font-weight: var(--cc-weight-title); }
body .cc-home-landing__manifesto > p strong { color: var(--cc-red); }
body .cc-home-landing__manifesto li strong { color: var(--cc-black); }
body .cc-home-landing__manifesto li span {
    color: var(--cc-text-muted);
    font-weight: var(--cc-weight-body);
}
body .cc-home-landing :is(a, button):focus-visible {
    outline: 2px solid var(--cc-focus);
    outline-offset: 4px;
}
body .cc-home-landing .cc-home-landing__hero :is(a, button):focus-visible,
body .cc-home-landing .cc-home-landing__spotlight :is(a, button):focus-visible {
    outline-color: var(--cc-white);
}

/* Footer — neutral headings, with colour reserved for the two calls to action. */
body .container-footer {
    --cc-footer-blue: var(--cc-blue-accessible);
    --cc-footer-ink: var(--cc-text-heading);
    --cc-footer-muted: var(--cc-text-muted);
    --cc-footer-wash: var(--cc-background-alt);
    --cc-footer-line: var(--cc-border);
    --cc-footer-accent: var(--cc-blue-accessible);
    color: var(--cc-text);
    background: var(--cc-white);
    border-color: var(--cc-border);
    box-shadow: none;
}
body .container-footer .cc-footer-title {
    color: var(--cc-black);
    font-weight: var(--cc-weight-title);
    letter-spacing: .07em;
}
body .container-footer .cc-footer-subtitle {
    font-weight: var(--cc-weight-nav);
    letter-spacing: .05em;
}
body .container-footer :is(.cc-footer-links a, .cc-footer-contact-links a) {
    color: var(--cc-text);
    font-weight: var(--cc-weight-nav);
}
body .container-footer :is(.cc-footer-links a, .cc-footer-contact-links a):is(:hover, :focus-visible) {
    color: var(--cc-blue-accessible);
    text-decoration-color: currentColor;
}
body .container-footer .cc-social-links a {
    color: var(--cc-text-heading);
    border-color: var(--cc-border);
    box-shadow: none;
}
body .container-footer .cc-social-links a:is(:hover, :focus-visible) {
    color: var(--cc-black);
    background: var(--cc-background-muted);
    border-color: var(--cc-border-control);
    box-shadow: none;
    transform: none;
}
body :is(.container-footer .grid-child, .cc-thanks-donation) .cc-footer-donation__link {
    color: var(--cc-button-primary-text);
    background: var(--cc-red);
    border-color: var(--cc-red);
    border-radius: var(--cc-radius-button);
    font-weight: var(--cc-weight-nav);
    box-shadow: none;
}
body :is(.container-footer .grid-child, .cc-thanks-donation) .cc-footer-donation__link > :is([aria-hidden="true"], svg) {
    color: var(--cc-white);
}
body :is(.container-footer .grid-child, .cc-thanks-donation) .cc-footer-donation__link:is(:hover, :focus-visible) {
    color: var(--cc-button-primary-text);
    background: var(--cc-black);
    border-color: var(--cc-black);
    box-shadow: none;
    transform: none;
}
body .container-footer .cc-footer-newsletter .acym__users__creation__fields__title {
    font-weight: var(--cc-weight-nav);
}
/* Reserve the button's real text width; the email field takes remaining space.
   A fixed 3:1 split squeezed the label in narrow desktop/tablet columns. */
body .container-footer .cc-footer-newsletter .acym_module_form {
    grid-template-columns: minmax(0, 1fr) max-content;
    min-width: 0;
}
body .container-footer .cc-footer-newsletter :is(.onefield, label, .acysubbuttons) {
    min-width: 0;
}
body .container-footer .cc-footer-newsletter input[type="email"] {
    border-color: var(--cc-border-control);
    border-radius: var(--cc-radius-sm);
}
body .container-footer .cc-footer-newsletter input[type="email"]:focus {
    border-color: var(--cc-focus);
    box-shadow: none;
    outline: 2px solid var(--cc-focus);
    outline-offset: 2px;
}
body .container-footer .cc-footer-newsletter .subbutton {
    width: auto !important;
    max-width: 100%;
    min-width: max-content;
    min-height: 2.625rem;
    padding-inline: .95rem;
    color: var(--cc-black);
    background: var(--cc-blue);
    border-color: var(--cc-blue);
    border-radius: var(--cc-radius-button);
    font-weight: var(--cc-weight-nav);
}
body .container-footer .cc-footer-newsletter .subbutton:is(:hover, :focus-visible) {
    color: var(--cc-button-primary-text);
    background: var(--cc-blue-accessible);
    border-color: var(--cc-blue-accessible);
}
body .container-footer .cc-footer-copyright a { font-weight: var(--cc-weight-nav); }
body .container-footer :is(a, button, input):focus-visible {
    outline: 2px solid var(--cc-focus);
    outline-offset: 4px;
    box-shadow: none;
}
/* The legacy social-link selector clears outlines with higher specificity. */
body .container-footer .cc-social-links a:focus-visible {
    outline: 2px solid var(--cc-black);
    outline-offset: 4px;
    box-shadow: none;
}

/* Share the existing compact homepage row across the public desktop header;
   the burger breakpoint and all touch targets remain unchanged. */
@media (min-width: 1367px) {
    body header.header .navbar-brand img { height: 4.25rem; }
}
@media (min-width: 992px) and (max-width: 1366px) {
    body header.header.container-header .grid-child.container-nav {
        flex-direction: row;
        flex-wrap: nowrap;
        gap: clamp(.8rem, 2vw, 2rem);
    }
    body header.header.container-header .grid-child.container-nav #mod-custom674 {
        width: auto;
        flex: 0 0 auto;
        justify-content: flex-start;
    }
    body header.header.container-header .navbar-brand img {
        height: clamp(3.6rem, 5vw, 4.25rem);
    }
    body header.header.container-header .grid-child.container-nav > nav.navbar,
    body header.header.container-header .grid-child.container-nav > nav.navbar > .navbar-collapse {
        width: auto;
        min-width: 0;
        justify-content: flex-end;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu {
        flex-wrap: nowrap;
        gap: .12rem;
        margin-top: 0;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a {
        padding-inline: clamp(.42rem, .8vw, .72rem);
        font-size: clamp(.69rem, .8vw, .78rem);
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li {
        padding-inline: clamp(.4rem, .8vw, .8rem);
    }
}
@media (max-width: 991.98px) {
    body header.header.container-header .grid-child.container-nav {
        min-height: 4.5rem;
        padding-block: .5rem;
    }
    body header.header .grid-child.container-nav > nav.navbar > .navbar-collapse {
        background: var(--cc-white);
        border-color: var(--cc-border);
        border-radius: var(--cc-radius-md);
        box-shadow: var(--cc-shadow-soft);
    }
    body header.header ul.mod-menu > li > ul.mm-collapse {
        background: var(--cc-background-alt);
        box-shadow: none;
    }
}
@media (max-width: 767.98px) {
    body .cc-home-landing__hero-shade {
        background: linear-gradient(0deg, rgba(var(--cc-photo-shade),.95), rgba(var(--cc-photo-shade),.78) 48%, rgba(var(--cc-photo-shade),.12) 88%);
    }
    body .cc-home-landing__hero h1 { font-size: clamp(2.5rem, 11.8vw, 4.15rem); }
    body .cc-home-landing__hero-note {
        background: transparent;
        border-top: 1px solid rgba(255,255,255,.3);
        border-radius: 0;
    }
}
@media (max-width: 575.98px) {
    body .cc-home-landing__activity-copy strong { font-size: 1rem; }
}

/* Site-wide sticky header: compact dimensions, white opaque surface, and
   fragment offsets that keep in-page destinations visible below the header. */
:root {
    --cc-site-header-height: 72px;
    scroll-padding-top: calc(var(--cc-site-header-height) + 0.75rem);
    scroll-padding-block-start: calc(var(--cc-site-header-height) + 0.75rem);
}

body header.header.container-header {
    position: sticky;
    inset-block-start: 0;
    z-index: 1030;
    width: 100%;
    height: var(--cc-site-header-height);
    min-height: var(--cc-site-header-height);
    padding: 0;
    overflow: visible;
    box-sizing: border-box;
    color: var(--cc-text, #161412);
    background: #fff;
    border-bottom: 1px solid rgba(22, 20, 18, 0.1);
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

body header.header.container-header .grid-child.container-nav {
    display: flex;
    width: 100%;
    height: 100%;
    min-height: 0;
    max-width: 1920px;
    align-items: center;
    flex-direction: row;
    gap: clamp(0.5rem, 1.5vw, 1.5rem);
    margin-inline: auto;
    padding: 0 clamp(0.75rem, 2.5vw, 2rem);
    box-sizing: border-box;
}

body header.header.container-header .grid-child.container-nav #mod-custom674,
body header.header.container-header .grid-child.container-nav .navbar-brand,
body header.header.container-header #mod-custom674 .brand-logo {
    display: flex;
    width: auto;
    min-width: 0;
    align-items: center;
    flex: 0 0 auto;
    justify-content: flex-start;
    margin: 0;
    padding: 0;
    line-height: 0;
}

body header.header.container-header .navbar-brand img {
    display: block;
    width: auto;
    height: 56px;
    max-height: calc(var(--cc-site-header-height) - 12px);
    object-fit: contain;
}

body header.header.container-header .grid-child.container-nav > nav.navbar {
    position: static;
    display: flex;
    width: auto;
    min-width: 0;
    align-items: center;
    flex: 1 1 auto;
    justify-content: flex-end;
    margin: 0;
    padding: 0;
}

body header.header.container-header .grid-child.container-nav > nav.navbar > .navbar-collapse {
    width: auto;
    min-width: 0;
    flex: 0 1 auto;
    justify-content: flex-end;
    overflow: visible;
}

body header.header.container-header .grid-child.container-nav ul.mod-menu {
    flex-wrap: nowrap;
    gap: clamp(0rem, 0.28vw, 0.25rem);
    justify-content: flex-end;
    margin: 0;
}

body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a {
    white-space: nowrap;
}

body header.header.container-header ul.mod-menu > li > ul.mm-collapse {
    z-index: 2;
}

/* Keep the existing horizontal menu usable on compact laptop widths. */
@media (min-width: 992px) and (max-width: 1199.98px) {
    body header.header.container-header .grid-child.container-nav {
        gap: 0.35rem;
        padding-inline: 0.75rem;
    }

    body header.header.container-header .navbar-brand img {
        height: 48px;
        max-width: 10.5rem;
    }

    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a {
        padding-inline: 0.38rem;
        font-size: 0.71rem;
    }

    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link {
        padding-inline: 0.58rem;
    }
}

@media (max-width: 991.98px) {
    :root {
        --cc-site-header-height: 60px;
    }

    /* Cassiopeia applies position: relative !important on small screens. */
    body header.header.container-header {
        position: sticky !important;
    }

    body header.header.container-header .grid-child.container-nav {
        gap: 0.5rem;
        padding-inline: clamp(0.65rem, 3vw, 1.25rem);
    }

    body header.header.container-header .navbar-brand img {
        height: 40px;
        max-width: min(16.5rem, calc(100vw - 6rem));
    }

    body header.header.container-header .grid-child.container-nav > nav.navbar > .navbar-collapse {
        top: calc(100% + 0.35rem);
        z-index: 1;
        max-height: calc(100svh - var(--cc-site-header-height) - 1.5rem);
        overflow-x: hidden;
        overflow-y: auto;
    }

    body header.header.container-header .navbar-toggler {
        width: 2.75rem;
        height: 2.75rem;
        min-width: 2.75rem;
    }

    /* Mobile navigation: keep native MetisMenu buttons and links, but give
       each its own aligned touch target instead of floating black triangles. */
    body header.header.container-header .grid-child.container-nav ul.mod-menu {
        gap: 0;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 44px;
        align-items: center;
        column-gap: 8px;
        padding: 4px 0;
        min-width: 0;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li + li {
        border-top: 1px solid var(--cc-border);
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a {
        grid-column: 1 / -1;
        min-width: 0;
        min-height: 48px;
        padding: 12px;
        line-height: 1.35;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > a {
        grid-column: 1;
        padding-right: 8px;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler {
        position: static;
        display: inline-flex;
        grid-column: 2;
        grid-row: 1;
        align-items: center;
        justify-content: center;
        width: 44px;
        min-width: 44px;
        height: 44px;
        padding: 0;
        margin: 0;
        color: var(--cc-black);
        background: var(--cc-background-alt);
        border: 1px solid var(--cc-border);
        border-radius: 12px;
        box-shadow: none;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler::before {
        content: none;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler::after {
        display: block;
        width: 8px;
        height: 8px;
        margin: 0;
        background: none;
        border: 0;
        border-right: 1.75px solid currentColor;
        border-bottom: 1.75px solid currentColor;
        content: "";
        transform: translateY(-2px) rotate(45deg);
        transition: transform .15s ease;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler[aria-expanded="true"] {
        color: var(--cc-blue-accessible);
        background: var(--cc-blue-soft);
        border-color: var(--cc-blue-accessible);
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler[aria-expanded="true"]::after {
        transform: translateY(2px) rotate(225deg);
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler:focus-visible {
        outline: 2px solid var(--cc-focus);
        outline-offset: 2px;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > ul:is(.mm-collapse, .mm-collapsing) {
        position: static;
        grid-column: 1 / -1;
        width: 100%;
        min-width: 0;
        margin: 4px 0 8px;
        padding: 6px 8px;
        background: var(--cc-background-alt);
        border: 1px solid var(--cc-border);
        border-radius: 12px;
        box-shadow: none;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse:not(.mm-show) {
        display: none;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse.mm-show {
        display: block;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > ul.mm-collapse a {
        display: flex;
        min-height: 44px;
        align-items: center;
        padding: 10px 12px;
        line-height: 1.4;
    }
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link {
        margin-block: 4px;
    }
    /* The connected account is a menu section on mobile, not a bordered CTA.
       Its label shares the same baseline/inset as the other parent links. */
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link:not([href$="/connexion"]),
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li:is(.active, .current) > a.cc-user-menu-link:not([href$="/connexion"]),
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li > a.cc-user-menu-link:not([href$="/connexion"]):is(:hover, :focus-visible) {
        justify-content: flex-start;
        margin-block: 0;
        padding: 12px 8px 12px 12px;
        color: var(--cc-black);
        background: transparent;
        border: 0;
        border-radius: var(--cc-radius-sm);
        box-shadow: none;
        font-size: .86rem;
        line-height: 1.35;
    }
}
@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {
    body header.header.container-header .grid-child.container-nav ul.mod-menu > li.parent > .mm-toggler::after {
        transition: none;
    }
}
/* Native Joomla notifications: semantic colours, neutral CC 2026 typography. */
body #system-message-container { --cc-alert-ink: #161412; }
body #system-message-container joomla-alert {
    --cc-alert-accent: #0D7995;
    --cc-alert-surface: #FFFFFF;
    --cc-alert-border: #E7E7E5;
    grid-template-columns: 32px minmax(0,1fr);
    position: relative;
    align-items: start;
    gap: 12px;
    margin: 0 0 16px;
    padding: 16px 56px 16px 16px;
    color: #161412;
    background: #FFFFFF;
    border: 1px solid #E7E7E5;
    border-inline-start: 4px solid var(--cc-alert-accent);
    border-radius: 12px;
    box-shadow: 0 3px 12px rgb(22 20 18 / .045);
    font-family: var(--cc-font-family,'Sora',sans-serif);
}
body #system-message-container joomla-alert:is([type="message"],[type="success"]) { --cc-alert-accent: #25704D; --cc-alert-surface: #FFFFFF; --cc-alert-border: #E7E7E5; }
body #system-message-container joomla-alert:is([type="info"],[type="notice"]) { --cc-alert-accent: #0D7995; --cc-alert-surface: #FFFFFF; --cc-alert-border: #E7E7E5; }
body #system-message-container joomla-alert[type="warning"] { --cc-alert-accent: #906200; --cc-alert-surface: #FFFFFF; --cc-alert-border: #E7E7E5; }
body #system-message-container joomla-alert:is([type="error"],[type="danger"]) { --cc-alert-accent: #E30613; --cc-alert-surface: #FFFFFF; --cc-alert-border: #E7E7E5; }
body #system-message-container joomla-alert .alert-heading {
    width: 32px; height: 22.4px; margin: 0; padding: 0;
    color: var(--cc-alert-accent); background: transparent; border-radius: 0;
}
body #system-message-container joomla-alert .alert-heading > span:not(.visually-hidden) {
    display: flex; align-items: center; justify-content: center;
    width: 18px; height: 18px; margin: 0; padding: 0; line-height: 1;
}
/* Cassiopeia's native SVG icons are white; keep their shapes visible on white. */
body #system-message-container joomla-alert .alert-heading > span:not(.visually-hidden)::before {
    display: block; filter: brightness(0); opacity: .75; width: 18px; height: 18px; margin: 0; line-height: 1;
}
body #system-message-container joomla-alert .alert-message {
    color: #161412; font-size: 14px; font-weight: 400; line-height: 1.6;
    margin: 0; padding: 0; overflow-wrap: anywhere;
}
body #system-message-container joomla-alert .alert-message:not(:first-of-type) { margin-top: 8px; padding-top: 8px; border-color: #E7E7E5; }
body #system-message-container joomla-alert .alert-message :is(p,ul,ol) { margin-block: 0 6px; }
body #system-message-container joomla-alert .alert-message > :last-child { margin-bottom: 0; }
body #system-message-container joomla-alert a:not(.btn) { color: var(--cc-alert-accent); font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
body #system-message-container joomla-alert :is(.joomla-alert--close,.joomla-alert-button--close) {
    width: 36px; height: 36px; color: #625F5B; background: transparent;
    border: 1px solid transparent; border-radius: 50%; font-family: inherit;
    inset-inline-end: 10px; opacity: 1; box-shadow: none;
}
body #system-message-container joomla-alert :is(.joomla-alert--close,.joomla-alert-button--close):is(:hover,:focus-visible) { color: #161412; background: #F7F7F6; }
body #system-message-container joomla-alert :is(.joomla-alert--close,.joomla-alert-button--close):focus-visible { outline: 2px solid #0D7995; outline-offset: 2px; }
body #system-message-container noscript .alert { background: #FFFFFF; color: #161412; border: 1px solid #E7E7E5; border-inline-start: 4px solid #0D7995; border-radius: 12px; font-size: 14px; font-weight: 400; line-height: 1.6; box-shadow: none; }
body #system-message-container noscript .alert-success { border-inline-start-color: #25704D; }
body #system-message-container noscript .alert-warning { border-inline-start-color: #906200; }
body #system-message-container noscript .alert-danger { border-inline-start-color: #E30613; }
@media(max-width:575.98px) {
    body #system-message-container joomla-alert { gap: 9px; grid-template-columns: 26px minmax(0,1fr); padding: 13px 48px 13px 12px; }
    body #system-message-container joomla-alert .alert-heading { width: 26px; height: 22.4px; }
    body #system-message-container joomla-alert .alert-message { font-size: 14px; }
    body #system-message-container joomla-alert :is(.joomla-alert--close,.joomla-alert-button--close) { inset-inline-end: 6px; }
}
