/* Surcharges de studio.css — aucune ressource, animation ou police ajoutée.
 * Les noms historiques décrivent des rôles : --ivoire = fond, --encre = texte.
 * Contrastes calculés en sRGB linéarisé, WCAG : (Lmax + .05) / (Lmin + .05).
 * Les filets sont décoratifs ; les champs et le focus ont une couleur distincte.
 * Aucun filtre sur les images : les WebP actuels sont des captures ou portraits.
 *//* Seul le contrôle ajouté nécessite une mise en page commune aux deux thèmes. */html .entete--theme .theme-bascule{grid-column:3;grid-row:1;justify-self:end;display:inline-grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;padding:10px;border:1px solid var(--laiton);border-radius:2px;background:var(--ivoire);color:var(--laiton);cursor:pointer/* Clair : #765a24 / #e2ede6 = 5,71:1 ; sombre : voir palette ci-dessous. */}html .theme-bascule:hover{background:var(--ivoire-2);color:var(--encre)}html .theme-bascule:focus-visible{outline:2px solid var(--laiton);outline-offset:3px}html .theme-bascule svg{display:block}html .theme-bascule .theme-bascule__soleil{display:none}/* Le gris natif du placeholder clair n'atteint que 4,08:1 : reprendre le gris du site. */html .form input::placeholder,html .form textarea::placeholder{color:var(--gris);opacity:1}html .theme-bascule[aria-pressed="true"] .theme-bascule__soleil{display:block}html .theme-bascule[aria-pressed="true"] .theme-bascule__lune{display:none}html .entete--theme .marque,html .entete--theme .nav,html .entete--theme .burger{grid-row:1}/* Changer de thème ne doit pas interpoler texte clair et fond encore clair.
 * Conserver seulement les déplacements et ombres déjà présents dans studio.css. */html .nav a,html .bouton,html .entree-projet{transition:none}html .projet{transition:transform .35s cubic-bezier(.2,.7,.3,1),box-shadow .35s ease}html .retour-haut{transition:opacity .3s ease,transform .35s cubic-bezier(.2,.7,.2,1)}html .entete--theme{transition-property:padding,transform}@media (prefers-reduced-motion: reduce){html .projet,html .retour-haut,html .entete--theme{transition:none}}@media (max-width: 900px){html .entete--theme{grid-template-columns:minmax(0, 1fr) 44px 44px}html .entete--theme .theme-bascule{grid-column:2}html .entete--theme .burger{grid-column:3}/* La règle .entete .nav de studio.css réaffiche sinon le panneau fermé. */html .entete--theme .nav{display:none;grid-column:1/-1}html .entete--theme .nav--ouvert{display:flex;align-items:stretch;gap:0}html .entete--theme .nav__liens{flex-direction:column;align-items:stretch;gap:0}html .entete--theme-sans-menu .nav{display:flex;position:static;grid-row:2;flex-direction:column;align-items:stretch;gap:0}}@media print{html .theme-bascule{display:none}}html[data-theme="clair"]{color-scheme:light}/* Choix sombre explicite, même lorsque le système est clair. */@media screen{html[data-theme="sombre"]{color-scheme:dark;--ivoire:#08161a;/* Fond ; texte ivoire 16,29:1, gris 9,83:1, laiton 8,05:1. */--ivoire-2:#0e2228;/* Surface/survol ; ivoire 14,71:1, gris 8,88:1, laiton 7,27:1. */--beige:#0e2228;/* Alias de surface ; mêmes ratios, minimum texte 7,27:1. */--encre:#e2ede6;/* Texte ; sur #08161a : 16,29:1 ; sur #0e2228 : 14,71:1. */--gris:#a8bdb6;/* Texte secondaire ; sur fond : 9,83:1 ; sur surface : 8,88:1. */--laiton:#c9a765;/* Liens ; sur fond : 8,05:1 ; sur surface : 7,27:1. */--filet:#23383d;/* Décor uniquement : 1,83:1 / 1,65:1 ; aucun texte sur ce fond. */--sombre-champ:#7e968f;/* Bord de champ : 6,30:1 / 5,69:1. */--sombre-erreur:#f1a397;/* Erreur : 9,12:1 sur fond ; 8,24:1 sur surface. */--sombre-ombre:rgba(0, 0, 0, .55);/* Ombre décorative sans texte. */scrollbar-color:var(--laiton) var(--ivoire-2)}html[data-theme="sombre"] .entete{background:var(--ivoire);border-bottom-color:var(--filet)}html[data-theme="sombre"] .burger span{background:var(--encre)}html[data-theme="sombre"] .carte .delai,html[data-theme="sombre"] .form label,html[data-theme="sombre"] .form label span,html[data-theme="sombre"] .form__mentions,html[data-theme="sombre"] table.resultats th,html[data-theme="sombre"] .zoom__aide{color:var(--gris)}html[data-theme="sombre"] .form input,html[data-theme="sombre"] .form textarea,html[data-theme="sombre"] .form select{color:var(--encre);background-color:var(--ivoire);border-color:var(--sombre-champ);caret-color:var(--encre)}html[data-theme="sombre"] .form input::placeholder,html[data-theme="sombre"] .form textarea::placeholder{color:var(--gris);opacity:1}html[data-theme="sombre"] .form input:focus,html[data-theme="sombre"] .form textarea:focus,html[data-theme="sombre"] .form select:focus{outline:2px solid var(--laiton);outline-offset:3px;border-color:var(--laiton)}html[data-theme="sombre"] .form input:autofill{-webkit-text-fill-color:var(--encre);caret-color:var(--encre);box-shadow:0 0 0 1000px var(--ivoire) inset}html[data-theme="sombre"] .form__erreur{color:var(--sombre-erreur)}html[data-theme="sombre"] .form input[aria-invalid="true"],html[data-theme="sombre"] .form textarea[aria-invalid="true"]{border-color:var(--sombre-erreur);box-shadow:0 0 0 1px var(--sombre-erreur) inset}html[data-theme="sombre"] .form__statut[style*="color"]{/* studio.js écrit sa couleur d'erreur claire directement dans style. */color:var(--sombre-erreur) !important}html[data-theme="sombre"] .bouton{background:var(--encre);color:var(--ivoire);border-color:var(--encre);/* 16,29:1. Échange instantané : pas de contraste perdu pendant un fondu. */transition:none}html[data-theme="sombre"] .bouton:hover,html[data-theme="sombre"] .bouton:focus-visible{background:var(--ivoire);color:var(--encre)}html[data-theme="sombre"] .nav__cta,html[data-theme="sombre"] .bouton--laiton{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid var(--laiton);border-radius:2px;background:var(--ivoire);color:var(--laiton);text-decoration:none;transition:none/* 8,05:1. */}html[data-theme="sombre"] .nav__cta:hover,html[data-theme="sombre"] .nav__cta:focus-visible,html[data-theme="sombre"] .bouton--laiton:hover,html[data-theme="sombre"] .bouton--laiton:focus-visible{background:var(--laiton);color:var(--ivoire)/* #08161a / #c9a765 : 8,05:1. */}html[data-theme="sombre"] .lien,html[data-theme="sombre"] .projet__lien,html[data-theme="sombre"] .pied__liens a,html[data-theme="sombre"] .fondateur__photo::after{border-color:var(--laiton)}html[data-theme="sombre"] .bloc h2::before,html[data-theme="sombre"] .nav__liens a::after,html[data-theme="sombre"] .hero h1 em::after{background:var(--laiton)}html[data-theme="sombre"] .filet-progression{background:var(--laiton)}html[data-theme="sombre"] table{color:var(--encre);background:var(--ivoire);border-color:var(--filet)/* Inclut un éventuel tableau de palette ; aucune palette présente à ce jour. */}html[data-theme="sombre"] th,html[data-theme="sombre"] td{border-color:var(--filet)}html[data-theme="sombre"] .projet:hover,html[data-theme="sombre"] .projet:focus-visible,html[data-theme="sombre"] .fondateur__photo img,html[data-theme="sombre"] .retour-haut{box-shadow:0 18px 40px -22px var(--sombre-ombre)}html[data-theme="sombre"] .retour-haut{border-color:var(--laiton)}html[data-theme="sombre"] .retour-haut:hover,html[data-theme="sombre"] .retour-haut:focus-visible{background:var(--laiton);color:var(--ivoire);transition:none/* 8,05:1. */}html[data-theme="sombre"] .evitement{background:var(--encre);color:var(--ivoire);min-height:44px}html[data-theme="sombre"] :focus-visible{outline-color:var(--laiton)}html[data-theme="sombre"]::selection,html[data-theme="sombre"] ::selection{background:var(--laiton);color:var(--ivoire)/* 8,05:1. */}html[data-theme="sombre"]::-webkit-scrollbar-track,html[data-theme="sombre"] ::-webkit-scrollbar-track{background:var(--ivoire-2)}html[data-theme="sombre"]::-webkit-scrollbar-thumb,html[data-theme="sombre"] ::-webkit-scrollbar-thumb{background:var(--laiton);border-color:var(--ivoire-2)}html[data-theme="sombre"]::-webkit-scrollbar-thumb:hover,html[data-theme="sombre"] ::-webkit-scrollbar-thumb:hover{background:var(--laiton)}html[data-theme="sombre"] .hero::before{/* Fond décoratif de l'aperçu A, sans toucher aux captures de sites. */background:radial-gradient(ellipse at 70% 30%, var(--ivoire-2), transparent 72%)}html[data-theme="sombre"] .hero::after,html[data-theme="sombre"] .hero,html[data-theme="sombre"] .chiffres{border-color:var(--filet)}html[data-theme="sombre"] .hero .trait-svg path{stroke:var(--laiton)}html[data-theme="sombre"] .cta-fixe{background:var(--ivoire);color:var(--laiton) !important;border-color:var(--laiton)}html[data-theme="sombre"] .cta-fixe:hover,html[data-theme="sombre"] .cta-fixe:focus-visible{background:var(--laiton);color:var(--ivoire) !important}}/* Sans choix clair explicite, le système sombre reste le repli sans JavaScript. */@media screen and (prefers-color-scheme: dark){html:not([data-theme="clair"]){color-scheme:dark;--ivoire:#08161a;/* Fond ; texte ivoire 16,29:1, gris 9,83:1, laiton 8,05:1. */--ivoire-2:#0e2228;/* Surface/survol ; ivoire 14,71:1, gris 8,88:1, laiton 7,27:1. */--beige:#0e2228;/* Alias de surface ; mêmes ratios, minimum texte 7,27:1. */--encre:#e2ede6;/* Texte ; sur #08161a : 16,29:1 ; sur #0e2228 : 14,71:1. */--gris:#a8bdb6;/* Texte secondaire ; sur fond : 9,83:1 ; sur surface : 8,88:1. */--laiton:#c9a765;/* Liens ; sur fond : 8,05:1 ; sur surface : 7,27:1. */--filet:#23383d;/* Décor uniquement : 1,83:1 / 1,65:1 ; aucun texte sur ce fond. */--sombre-champ:#7e968f;/* Bord de champ : 6,30:1 / 5,69:1. */--sombre-erreur:#f1a397;/* Erreur : 9,12:1 sur fond ; 8,24:1 sur surface. */--sombre-ombre:rgba(0, 0, 0, .55);/* Ombre décorative sans texte. */scrollbar-color:var(--laiton) var(--ivoire-2)}html:not([data-theme="clair"]) .entete{background:var(--ivoire);border-bottom-color:var(--filet)}html:not([data-theme="clair"]) .burger span{background:var(--encre)}html:not([data-theme="clair"]) .carte .delai,html:not([data-theme="clair"]) .form label,html:not([data-theme="clair"]) .form label span,html:not([data-theme="clair"]) .form__mentions,html:not([data-theme="clair"]) table.resultats th,html:not([data-theme="clair"]) .zoom__aide{color:var(--gris)}html:not([data-theme="clair"]) .form input,html:not([data-theme="clair"]) .form textarea,html:not([data-theme="clair"]) .form select{color:var(--encre);background-color:var(--ivoire);border-color:var(--sombre-champ);caret-color:var(--encre)}html:not([data-theme="clair"]) .form input::placeholder,html:not([data-theme="clair"]) .form textarea::placeholder{color:var(--gris);opacity:1}html:not([data-theme="clair"]) .form input:focus,html:not([data-theme="clair"]) .form textarea:focus,html:not([data-theme="clair"]) .form select:focus{outline:2px solid var(--laiton);outline-offset:3px;border-color:var(--laiton)}html:not([data-theme="clair"]) .form input:autofill{-webkit-text-fill-color:var(--encre);caret-color:var(--encre);box-shadow:0 0 0 1000px var(--ivoire) inset}html:not([data-theme="clair"]) .form__erreur{color:var(--sombre-erreur)}html:not([data-theme="clair"]) .form input[aria-invalid="true"],html:not([data-theme="clair"]) .form textarea[aria-invalid="true"]{border-color:var(--sombre-erreur);box-shadow:0 0 0 1px var(--sombre-erreur) inset}html:not([data-theme="clair"]) .form__statut[style*="color"]{/* studio.js écrit sa couleur d'erreur claire directement dans style. */color:var(--sombre-erreur) !important}html:not([data-theme="clair"]) .bouton{background:var(--encre);color:var(--ivoire);border-color:var(--encre);/* 16,29:1. Échange instantané : pas de contraste perdu pendant un fondu. */transition:none}html:not([data-theme="clair"]) .bouton:hover,html:not([data-theme="clair"]) .bouton:focus-visible{background:var(--ivoire);color:var(--encre)}html:not([data-theme="clair"]) .nav__cta,html:not([data-theme="clair"]) .bouton--laiton{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid var(--laiton);border-radius:2px;background:var(--ivoire);color:var(--laiton);text-decoration:none;transition:none/* 8,05:1. */}html:not([data-theme="clair"]) .nav__cta:hover,html:not([data-theme="clair"]) .nav__cta:focus-visible,html:not([data-theme="clair"]) .bouton--laiton:hover,html:not([data-theme="clair"]) .bouton--laiton:focus-visible{background:var(--laiton);color:var(--ivoire)/* #08161a / #c9a765 : 8,05:1. */}html:not([data-theme="clair"]) .lien,html:not([data-theme="clair"]) .projet__lien,html:not([data-theme="clair"]) .pied__liens a,html:not([data-theme="clair"]) .fondateur__photo::after{border-color:var(--laiton)}html:not([data-theme="clair"]) .bloc h2::before,html:not([data-theme="clair"]) .nav__liens a::after,html:not([data-theme="clair"]) .hero h1 em::after{background:var(--laiton)}html:not([data-theme="clair"]) .filet-progression{background:var(--laiton)}html:not([data-theme="clair"]) table{color:var(--encre);background:var(--ivoire);border-color:var(--filet)/* Inclut un éventuel tableau de palette ; aucune palette présente à ce jour. */}html:not([data-theme="clair"]) th,html:not([data-theme="clair"]) td{border-color:var(--filet)}html:not([data-theme="clair"]) .projet:hover,html:not([data-theme="clair"]) .projet:focus-visible,html:not([data-theme="clair"]) .fondateur__photo img,html:not([data-theme="clair"]) .retour-haut{box-shadow:0 18px 40px -22px var(--sombre-ombre)}html:not([data-theme="clair"]) .retour-haut{border-color:var(--laiton)}html:not([data-theme="clair"]) .retour-haut:hover,html:not([data-theme="clair"]) .retour-haut:focus-visible{background:var(--laiton);color:var(--ivoire);transition:none/* 8,05:1. */}html:not([data-theme="clair"]) .evitement{background:var(--encre);color:var(--ivoire);min-height:44px}html:not([data-theme="clair"]) :focus-visible{outline-color:var(--laiton)}html:not([data-theme="clair"])::selection,html:not([data-theme="clair"]) ::selection{background:var(--laiton);color:var(--ivoire)/* 8,05:1. */}html:not([data-theme="clair"])::-webkit-scrollbar-track,html:not([data-theme="clair"]) ::-webkit-scrollbar-track{background:var(--ivoire-2)}html:not([data-theme="clair"])::-webkit-scrollbar-thumb,html:not([data-theme="clair"]) ::-webkit-scrollbar-thumb{background:var(--laiton);border-color:var(--ivoire-2)}html:not([data-theme="clair"])::-webkit-scrollbar-thumb:hover,html:not([data-theme="clair"]) ::-webkit-scrollbar-thumb:hover{background:var(--laiton)}html:not([data-theme="clair"]) .hero::before{/* Fond décoratif de l'aperçu A, sans toucher aux captures de sites. */background:radial-gradient(ellipse at 70% 30%, var(--ivoire-2), transparent 72%)}html:not([data-theme="clair"]) .hero::after,html:not([data-theme="clair"]) .hero,html:not([data-theme="clair"]) .chiffres{border-color:var(--filet)}html:not([data-theme="clair"]) .hero .trait-svg path{stroke:var(--laiton)}html:not([data-theme="clair"]) .cta-fixe{background:var(--ivoire);color:var(--laiton) !important;border-color:var(--laiton)}html:not([data-theme="clair"]) .cta-fixe:hover,html:not([data-theme="clair"]) .cta-fixe:focus-visible{background:var(--laiton);color:var(--ivoire) !important}}/* ============================================================
   NOCTURNE — la marque animée et les accents propres au site
   Contrastes mesurés : texte 15,34:1 · gris 9,32:1 · laiton 8,07:1 · vert clair 8,98:1
   ============================================================ */html[data-theme="sombre"] .marque{color:#e2ede6}html[data-theme="sombre"] .marque [data-mangeur-suffix]{color:#8fc0a3}/* Feuille du nénuphar : on repeint les arrêts du dégradé, sans toucher au module. */html[data-theme="sombre"] .marque stop[offset="0%"]{stop-color:#cfe0c2}html[data-theme="sombre"] .marque stop[offset="55%"]{stop-color:#9dbb8c}html[data-theme="sombre"] .marque stop[offset="100%"]{stop-color:#6f9160}/* Liens secondaires de l'en-tête : ils gardaient l'encre de la charte claire. */html[data-theme="sombre"] .langues,html[data-theme="sombre"] .langues a,html[data-theme="sombre"] .langues span,html[data-theme="sombre"] .nav__reseaux a,html[data-theme="sombre"] .nav__reseau{color:#a8bdb6}html[data-theme="sombre"] .langues a:hover,html[data-theme="sombre"] .nav__reseaux a:hover{color:#c9a765}html[data-theme="sombre"] .entete .marque:hover{color:#ffffff}@media (prefers-color-scheme: dark){html:not([data-theme="clair"]) .marque{color:#e2ede6}html:not([data-theme="clair"]) .marque [data-mangeur-suffix]{color:#8fc0a3}html:not([data-theme="clair"]) .marque stop[offset="0%"]{stop-color:#cfe0c2}html:not([data-theme="clair"]) .marque stop[offset="55%"]{stop-color:#9dbb8c}html:not([data-theme="clair"]) .marque stop[offset="100%"]{stop-color:#6f9160}html:not([data-theme="clair"]) .langues,html:not([data-theme="clair"]) .langues a,html:not([data-theme="clair"]) .langues span,html:not([data-theme="clair"]) .nav__reseaux a,html:not([data-theme="clair"]) .nav__reseau{color:#a8bdb6}}/* En-tête avec bascule de thème : cinq emplacements sur une seule ligne.
   Sans cela, .nav__cta (placé en colonne 3 comme la bascule) passait en deuxième rang. */@media (min-width: 901px){html .entete--theme .nav__cta{grid-column:3;grid-row:1;justify-self:end}html .entete--theme .theme-bascule{grid-column:5;grid-row:1;justify-self:end}html .entete--theme nav.langues{grid-column:4;grid-row:1;justify-self:end}}/* Le mot de la zone d'intervention gardait le vert de la charte claire (1,9:1). */html[data-theme="sombre"] .zone-intervention__mot{color:#8fc0a3}@media (prefers-color-scheme: dark){html:not([data-theme="clair"]) .zone-intervention__mot{color:#8fc0a3}}/* Mobile : la bascule se range après FR/EN, avant le bouton pleine largeur (ordre 4). */@media (max-width: 900px){html .entete--theme .theme-bascule{order:3;margin-left:auto}}
