/* Cadre commun : header, navigation et footer, dans la charte i-CAC. */
.site-shell { width: min(calc(100% - 3rem), max(90%, 1200px)); max-width: 1600px; margin-inline: auto; }
.site-header, .site-navbar, .site-footer { font-weight: 300; font-variant-numeric: lining-nums tabular-nums; }
.site-header { padding: 1.25rem 0; background: var(--icac-anthracite); }
.site-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.site-brand { display: inline-flex; align-items: center; gap: 1.75rem; color: #fff; min-width: 0; }
.site-brand:hover { color: #fff; }
.site-brand-logo { display: block; width: 148px; max-width: 100%; height: auto; }
.site-brand-signature { padding-left: 1.75rem; border-left: 1px solid #ffffff30; font-size: .95rem; font-weight: 800; line-height: 1.4; color: #fff; }
.site-account { display: flex; align-items: center; gap: 1.5rem; min-width: 0; font-size: .9rem; }
.site-header .site-account a { color: #fff; }
.site-header .site-login { font-weight: 800; text-underline-offset: .3rem; }
/* Langues : menu déroulant, la langue active est affichée sur le bouton. */
.site-langues { position: relative; flex-shrink: 0; margin-left: 1.5rem; font-family: inherit; font-size: .95rem; font-weight: 300; letter-spacing: normal; }
.site-langue-bouton { display: inline-flex; align-items: center; gap: .45rem; padding: .4rem .7rem; border: 1px solid #dfe1e8; border-radius: .5rem; background: #fff; color: var(--icac-anthracite); font-weight: 800; }
.site-langue-bouton:hover, .site-langue-bouton[aria-expanded="true"] { border-color: var(--icac-rouge); color: var(--icac-rouge-fonce); }
.site-langue-bouton::after { margin-left: .1rem; }
.site-langues .dropdown-menu { min-width: 12rem; padding: .35rem; border-color: #e4e5eb; border-radius: .6rem; box-shadow: 0 10px 28px #2d2e331f; }
.site-langue { display: flex; align-items: center; gap: .6rem; padding: .55rem .7rem; border-radius: .4rem; color: var(--icac-anthracite); }
.site-langue-drapeau { display: block; flex-shrink: 0; width: 20px; height: 15px; border-radius: 2px; box-shadow: 0 0 0 1px #2d2e331f; }
.site-navbar .site-langues a.site-langue { color: var(--icac-anthracite); text-decoration: none; }
.site-navbar .site-langues a.site-langue:hover, .site-navbar .site-langues a.site-langue:focus-visible { background: #fbe9e8; color: var(--icac-rouge-fonce); }
.site-langue.active { color: var(--icac-rouge-fonce); font-weight: 800; background: #2d2e330a; }
.site-langue-coche { width: 1.1rem; height: 1.1rem; margin-left: auto; }
.site-header .site-login:hover { text-decoration: underline; }
.site-header .site-register { margin: 0; padding: .65rem 1.25rem; text-transform: none; letter-spacing: 0; }
.site-account-profile { display: flex; flex-direction: column; min-width: 0; text-align: right; }
.site-account-caption { font-size: .75rem; color: #c9cbd2; }
.site-account-name { max-width: 22rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 800; }
.site-account-logout { padding: .5rem; border: 1px solid #ffffff38; border-radius: .5rem; }
.site-account-logout:hover { background: #ffffff15; }
.site-navbar { border-bottom: 1px solid #e4e5eb; background: #fff; box-shadow: 0 3px 12px #2d2e3306; }
.site-navbar .navbar { padding: 0; text-align: left; }
.site-navbar .site-nav-inner { display: flex; align-items: center; flex-wrap: wrap; }
.site-navbar .navbar-collapse { justify-content: flex-start; min-width: 0; gap: 1.5rem; }
.site-navbar .navbar-nav { display: flex; gap: 1.75rem; margin: 0; padding: 0; }
.site-navbar .navbar-nav .nav-link { position: relative; margin: 0; padding: 1.15rem .15rem; color: var(--icac-anthracite); font-size: .95rem; font-weight: 800; letter-spacing: .5px; text-transform: none; background: transparent; border-radius: 0; }
.site-navbar .nav-link::before { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: var(--icac-rouge); transform: scaleX(0); transition: transform 180ms ease; }
.site-navbar .navbar-nav .nav-link.active,
.site-navbar .navbar-nav .nav-link:hover,
.site-navbar .navbar-nav .nav-link.show { color: var(--icac-rouge-fonce); background: transparent; }
.site-navbar .nav-link.active::before,
.site-navbar .nav-link:hover::before,
.site-navbar .nav-link.show::before { transform: scaleX(1); }
.site-navbar .dropdown-menu { margin-top: .35rem; padding: .6rem; border: 1px solid #e4e5eb; border-radius: .75rem; box-shadow: var(--icac-ombre-survol); font-size: .9rem; }
.site-navbar .dropdown-item { padding: .6rem .75rem; border-radius: .35rem; white-space: normal; }
.site-navbar .navbar-toggler { display: inline-flex; align-items: center; gap: .5rem; margin: .65rem 0; padding: .5rem .75rem; border: 1px solid #dfe0e6; border-radius: .5rem; color: var(--icac-anthracite); font-size: .9rem; }
.site-navbar .navbar-toggler-icon { width: 1.15rem; height: 1.15rem; }
.site-header a:focus-visible, .site-navbar a:focus-visible, .site-navbar button:focus-visible,
.site-footer a:focus-visible, .site-footer button:focus-visible { outline: 3px solid var(--icac-rouge); outline-offset: 4px; }
.site-header a:focus-visible { outline-color: #fff; }
.site-footer { padding: 0; background: var(--icac-anthracite); color: #d0d2da; font-size: .95rem; line-height: 1.65; }
.site-footer h2 { margin: 0 0 1.15rem; color: #fff; font-size: 1rem; font-weight: 800; text-transform: none; }
.site-footer a { color: #d0d2da; }
.site-footer a:hover { color: #fff; text-decoration: underline; text-underline-offset: .25rem; }
.site-footer .footer-newsletter-band { background: var(--icac-fond); color: var(--icac-anthracite); border-top: 1px solid #dfe2ec; }
.footer-newsletter-inner { display: grid; grid-template-columns: 1fr minmax(300px, 480px); gap: 3rem; align-items: center; padding-block: 2.5rem; }
.site-footer .footer-eyebrow { margin-bottom: .6rem; color: var(--icac-anthracite); font-size: .75rem; font-family: var(--icac-police-surtitre); font-weight: 500; text-transform: uppercase; letter-spacing: .14em; }
.site-footer .footer-newsletter-copy h2 { color: var(--icac-anthracite); font-size: 1.8rem; font-style: normal; margin-bottom: .35rem; }
/* Le bloc éditable contient encore des alignements inline hérités. */
.site-footer .footer-newsletter-copy h2,
.site-footer .footer-newsletter-copy p { text-align: left !important; }
.footer-newsletter-copy p { margin-bottom: .35rem; }
.site-footer .footer-newsletter-copy .rouge { color: var(--icac-rouge-fonce); }
.site-footer .footer-newsletter-form .input-group { flex-wrap: nowrap; }
.site-footer .footer-newsletter-form .form-control { min-width: 0; padding: .9rem 1rem; border: 1px solid #d0d3df; background: #fff; border-radius: .5rem 0 0 .5rem; font-size: 1rem; font-weight: 300; }
.site-footer .footer-newsletter-form .btn { margin: 0; padding: .9rem 1.25rem; border-radius: 0 .5rem .5rem 0; font-size: .9rem; text-transform: none; letter-spacing: 0; }
.footer-newsletter-form > p { margin: .65rem 0 0; color: var(--icac-anthracite); font-size: .75rem; }
.site-footer .footer-newsletter-form > p a { color: var(--icac-anthracite); text-decoration: underline; }
.footer-columns { display: grid; grid-template-columns: 1.25fr 1fr 1.15fr 1.1fr; gap: 3rem; padding-block: 3.25rem; }
.footer-brand > p { max-width: 230px; margin: 1rem 0; font-size: .9rem; }
.site-footer .footer-social { display: flex; gap: .6rem; padding: 0; margin: 1.5rem 0 0; list-style: none; text-align: left; }
.site-footer .footer-social a { display: flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; padding: 0; border: 1px solid var(--icac-rouge); border-radius: 50%; color: #fff; }
.site-footer .footer-social a:hover { background: var(--icac-rouge); border-color: var(--icac-rouge); }
.footer-links ul { margin: 0; padding: 0; list-style: none; }
.footer-links li { margin-bottom: .6rem; }
.site-footer a[aria-current="page"] { color: #fff; text-decoration: underline; text-underline-offset: .3rem; }
.footer-contact address { margin: 0; font-style: normal; }
.footer-contact address p { margin-bottom: .8rem; }
.footer-contact address span { font-size: .8rem; color: #aeb1bc; }
.site-footer .footer-email { color: #fff; font-weight: 800; }
.footer-partners { padding-bottom: 2rem; }
.footer-partners-heading { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.site-footer .footer-partners-heading h2 { margin: 0; font-size: .8rem; color: #d0d2da; font-weight: 800; }
.footer-partners-heading a { font-size: .8rem; }
.footer-partners-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(75px, 1fr)); align-items: center; gap: 1.25rem; padding: 1.25rem; margin: 0; list-style: none; background: #fff; border-radius: .75rem; }
.footer-partners-logos a { display: flex; align-items: center; justify-content: center; height: 40px; }
.footer-partners-logos img { display: block; width: 100%; max-width: 90px; max-height: 40px; object-fit: contain; }
.footer-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem 2rem; padding-block: 1.5rem; border-top: 1px solid #ffffff20; font-size: .75rem; }
.footer-legal { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.footer-payment { display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; margin: 0; padding: 0; list-style: none; }
.footer-payment li { display: flex; align-items: center; justify-content: center; height: 28px; padding: .25rem .4rem; background: #fff; border-radius: .25rem; }
.footer-payment img { display: block; max-height: 20px; max-width: 65px; object-fit: contain; }
@media (min-width: 992px) {
    .site-navbar .navbar-toggler { display: none; }
    .site-navbar .site-nav-admin { margin-left: auto; flex-shrink: 0; }
    .site-navbar .navbar-nav { flex-direction: row; flex-wrap: wrap; }
    .site-navbar .dropdown-menu { min-width: 20rem; }
}
@media (max-width: 1199px) {
    .site-navbar .navbar-nav { gap: 1.15rem; }
    .site-navbar .navbar-nav .nav-link, .site-navbar .site-langues { font-size: .85rem; }
    .footer-columns { gap: 2rem; }
}
@media (max-width: 991px) {
    .site-navbar .navbar-nav { flex-direction: column; gap: 0; padding: .25rem 0 .75rem; }
    .site-navbar .site-langues { margin-left: auto; font-size: 1rem; }
    .site-navbar .navbar-collapse { order: 1; flex-basis: 100%; max-height: calc(100dvh - 5rem); overflow-y: auto; }
    .site-navbar .navbar-nav .nav-link { padding: .8rem .5rem; font-size: 1rem; }
    .site-navbar .nav-link::before { display: none; }
    .site-navbar .navbar-nav .nav-link.active { border-radius: .4rem; background: #fbe9e8; }
    .site-navbar .dropdown-menu { box-shadow: none; margin: .25rem 0 .75rem; }
    .footer-newsletter-inner { gap: 2rem; }
    .footer-columns { grid-template-columns: 1fr 1fr; gap: 2.5rem 3rem; }
}
@media (max-width: 767px) {
    .site-shell { width: calc(100% - 2rem); }
    .site-header { padding: 1rem 0; }
    .site-header-inner { gap: 1rem; flex-wrap: wrap; }
    .site-brand-logo { width: 120px; }
    .site-brand-signature { display: none; }
    .site-account { gap: .8rem; font-size: .8rem; margin-left: auto; }
    .site-header .site-register { padding: .55rem .8rem; font-size: .8rem; }
    .site-account-name { max-width: 9rem; }
    .site-account-caption { font-size: .7rem; }
    .site-header .site-login { white-space: nowrap; }
    .footer-newsletter-inner { grid-template-columns: 1fr; gap: 1.25rem; padding-block: 2rem; }
    .site-footer .footer-newsletter-copy h2 { font-size: 1.5rem; }
    .footer-columns { gap: 2rem; padding-block: 2.5rem; }
    .footer-partners-logos { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
    .footer-legal { gap: 1rem; }
}
@media (max-width: 480px) {
    .site-account { gap: .6rem; }
    .site-brand-logo { width: 100px; }
}
@media (max-width: 380px) {
    .footer-columns { grid-template-columns: 1fr; }
    .footer-newsletter-form .input-group { flex-direction: column; gap: .5rem; }
    .site-footer .footer-newsletter-form .form-control,
    .site-footer .footer-newsletter-form .btn { width: 100%; margin: 0; border-radius: .5rem; }
}
@media (prefers-reduced-motion: reduce) {
    .site-navbar .nav-link::before { transition: none; }
}

/* Bouton « Haut de page » : en bas à droite (le bouton des cookies est à gauche), affiché par retour-haut.js. */
.retour-haut { position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 1030; display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border: 2px solid #fff; border-radius: 50%; background: var(--icac-rouge); color: #fff; box-shadow: var(--icac-ombre-survol); opacity: 0; visibility: hidden; transform: translateY(.75rem); transition: opacity var(--icac-transition), visibility var(--icac-transition), transform var(--icac-transition), background-color var(--icac-transition); }
.retour-haut.visible { opacity: 1; visibility: visible; transform: none; }
.retour-haut:hover { background: var(--icac-rouge-fonce); color: #fff; }
.retour-haut:focus-visible { outline: 3px solid var(--icac-anthracite); outline-offset: 3px; }
.retour-haut .icone { width: 1.4rem; height: 1.4rem; }
/* Chat Zendesk (Zopim, chargé après consentement) : son bouton occupe le coin, à 10 px du bas et 50 px de haut ; on se place au-dessus. */
body:has(#launcher) .retour-haut { bottom: 4.5rem; }
@media (max-width: 991.98px) {
    /* En fin de page, le bouton ne masque pas le bas du footer (crédit IRCF) */
    .site-footer .footer-bottom { padding-bottom: 4.5rem; }
}
@media (max-width: 575.98px) {
    .retour-haut { right: 1rem; bottom: 1rem; width: 2.75rem; height: 2.75rem; }
}
@media (prefers-reduced-motion: reduce) {
    .retour-haut { transition: none; }
}
@media print {
    .retour-haut { display: none; }
}

/* Annonce éphémère du nouveau site (_annonce.html.twig, annonce.js) : en bas à gauche, au-dessus de l'icône des cookies ;
   le coin droit est pris par le chat et « Haut de page ». */
.annonce { position: fixed; left: 1.25rem; bottom: 4.5rem; z-index: 1040; width: min(24rem, calc(100% - 2.5rem)); padding: 1.4rem 1.25rem 1.1rem; border-radius: var(--icac-rayon-carte); background: linear-gradient(var(--icac-rouge), var(--icac-rouge)) top / 100% 4px no-repeat, #fff; color: var(--icac-anthracite); box-shadow: var(--icac-ombre-survol); font-size: .9rem; line-height: 1.55; opacity: 0; transform: translateY(.75rem); transition: opacity var(--icac-transition), transform var(--icac-transition); }
.annonce.visible { opacity: 1; transform: none; }
.annonce p { margin: 0 0 .9rem; }
.annonce .annonce-titre { margin: 0 2rem .4rem 0; font-size: 1rem; font-weight: 800; line-height: 1.35; }
.annonce .btn { margin: 0; text-transform: none; letter-spacing: 0; }
.annonce-fermer { position: absolute; top: 1.05rem; right: .9rem; }
@media (max-width: 575.98px) {
    .annonce { left: 1rem; right: 1rem; width: auto; }
}
@media (prefers-reduced-motion: reduce) {
    .annonce { transition: none; }
}
@media print {
    .annonce { display: none; }
}
