:root{--encre:#102530;--encre2:#0B1C25;--petrole:#0F4C4A;--sable:#C6A15B;--sable-clair:#E4CC97;--creme:#F7F4EC;--violet:#4A3C8C;--profond:#2C2652;--lilas:#BDB3EA;--serif:"EB Garamond",Garamond,Georgia,"Times New Roman",serif;--sans:"Libre Franklin","Segoe UI",Roboto,sans-serif;--doux:cubic-bezier(.2,.7,.2,1)}
*{box-sizing:border-box}body{margin:0;color:var(--encre);background:white;font-family:"Libre Franklin",sans-serif;line-height:1.6}h1,h2,h3{line-height:1.15}h1,h2{font-family:"EB Garamond",serif;font-weight:500}h1{font-size:clamp(2.7rem,6vw,4.8rem);max-width:920px;margin:.4em 0}h2{font-size:2.3rem}h3{font-size:1.08rem}a{color:var(--petrole);text-underline-offset:.22em}button,input,select,textarea{font:inherit}button,.bouton{display:inline-block;border:2px solid var(--petrole);background:var(--petrole);color:white;padding:.7em 1em;border-radius:3px;cursor:pointer;text-decoration:none;min-height:44px;font-weight:600}.secondaire{background:white;color:var(--petrole)}button:disabled{opacity:.55;cursor:default}button:hover:not(:disabled),.bouton:hover{border-color:var(--violet)}:focus-visible{outline:3px solid var(--violet);outline-offset:4px}.contenu{width:min(1100px,calc(100% - 40px));margin:auto}.section{padding:3rem 0}.creme{background:var(--creme)}.ouverture{padding:3rem 0;border-bottom:5px solid var(--sable)}.repere{text-transform:uppercase;font-size:.78rem;font-weight:600;letter-spacing:.1em;color:var(--petrole)}.chapeau{max-width:780px;font-size:1.15rem}.meta,.mono,.date{font-family:"IBM Plex Mono",monospace;font-size:.88rem}.attention{border-left:4px solid var(--violet);background:#eeebfa;padding:1rem;margin:1.3rem 0}.attention p{margin:.4em 0}.grille{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 2rem}.champ label,legend{display:block;font-weight:600;margin-bottom:.4rem}input[type=date],select,textarea{display:block;background:white;color:var(--encre);border:1px solid var(--petrole);border-radius:3px;min-height:46px;width:100%;padding:.6rem}textarea{max-width:700px}.champ{margin-bottom:.8rem}.aide{font-size:.88rem;margin:.5em 0}.actions{display:flex;gap:.7rem;flex-wrap:wrap;margin:1.2rem 0}fieldset{border:1px solid var(--petrole);padding:1.3rem;margin:1.5rem 0}input[type=checkbox]{width:22px;height:22px;accent-color:var(--petrole);vertical-align:middle;flex-shrink:0}.confirmation,.jour-ferie{display:flex;align-items:center;gap:.7rem;padding:.5rem 0}.fetes{display:grid;grid-template-columns:1fr 1fr;gap:.2rem 1rem}.fictif{outline:2px dashed var(--violet);outline-offset:2px}.resultats{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.carte-date{border:1px solid var(--petrole);padding:1.3rem;border-top:4px solid var(--petrole)}.carte-date h3{margin-top:0}.valeur-date{font-family:"IBM Plex Mono",monospace;font-size:1.15rem}.renvois{font-size:.8rem}.renvois a{margin-right:.4em}details{border-bottom:1px solid #bdc9c7;padding:.8rem 0}summary{cursor:pointer;font-weight:600;min-height:44px;padding:.4rem 0}blockquote{margin:1em 0;padding-left:1rem;border-left:3px solid var(--sable)}.source{overflow-wrap:anywhere;padding:.5rem 0}.evitement{position:absolute;left:15px;top:-100px;z-index:30;background:white;padding:10px}.evitement:focus{top:10px}.bandeau{background:var(--creme);font-size:.8rem;padding:.8rem 0}.ariane{display:flex;gap:.8rem;flex-wrap:wrap}.recapitulatif{display:none}[hidden]{display:none!important}
@media(max-width:650px){.grille,.resultats,.fetes{grid-template-columns:1fr}.contenu{width:calc(100% - 28px)}.section,.ouverture{padding:2rem 0}fieldset{padding:.8rem}.actions button,.actions .bouton{width:100%;text-align:center}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@page{size:A4;margin:14mm}
@media print{body{font-size:10pt;background:white;color:black}body> :not(#recapitulatif){display:none!important}#recapitulatif{display:block!important}.recapitulatif h1{font-size:24pt}.recapitulatif h2{font-size:18pt}.recapitulatif h3{font-size:11pt}.recapitulatif h2,.recapitulatif h3{break-after:avoid;page-break-after:avoid}.recapitulatif .resultats>.carte-date:first-child{break-before:avoid;page-break-before:avoid}.resultats{display:block}.carte-date{margin-bottom:12pt;break-inside:avoid;border:1px solid black}.attention{background:white;border-color:black}.source{break-inside:avoid}.renvois a{color:black}a{color:black;overflow-wrap:anywhere}.recapitulatif dl{display:grid;grid-template-columns:1fr 2fr;gap:5pt}.recapitulatif dt{font-weight:600}.recapitulatif dd{margin:0}blockquote{break-inside:avoid}details{border:0}summary{display:block}}

/* Cadre du site (version 1.1 de l'outil) : en-tête et pied repris de la page de l'outil des seuils d'effectif
   (outils/seuils/page/seuils.css), que le générateur du site pose sur la page publiée (D24, outils/STANDARD.md).
   Les règles de base de cette feuille (liens, titres, details) sont neutralisées dans le cadre. */
:where(.site-entete, .site-pied) :where(h3, p, ul) { margin: 0; }
.site-entete a, .site-pied a { color: inherit; }
.site-entete details { border-bottom: 0; padding: 0; }
.site-entete summary { padding: 0; font-weight: inherit; }
.site-entete :focus-visible, .site-pied :focus-visible { outline-color: var(--sable-clair); }
/* En-tête du site (version 1.2) : reprise statique de l'en-tête de poliade.fr (tools/site), sans script ; le menu
   mobile est un élément details, ouvert au clavier comme à la souris. Classes préfixées site- pour ne rien
   partager avec les règles de l'outil. */
.site-entete { position: relative; z-index: 20; background: var(--encre); color: var(--creme); }
.site-barre { display: flex; align-items: center; justify-content: space-between; gap: 24px; height: 78px; }
.site-logo { display: flex; align-items: center; gap: 12px; min-height: 44px; text-decoration: none; }
.site-emb { display: block; width: 38px; height: 38px; transition: transform .8s var(--doux); }
.site-logo:hover .site-emb { transform: rotate(45deg); }
.site-nom { display: block; width: auto; height: 20px; }
.site-nav { display: flex; align-items: center; gap: 30px; }
.site-nav a { position: relative; padding: 10px 0; font-size: 14px; font-weight: 600; letter-spacing: .04em; text-decoration: none; }
.site-nav a:not(.site-contact)::after { content: ""; position: absolute; left: 0; right: 0; bottom: 4px; height: 1.5px; background: var(--sable); transform: scaleX(0); transform-origin: left; transition: transform .35s ease; }
.site-nav a:not(.site-contact):hover::after, .site-nav a:not(.site-contact):focus-visible::after, .site-nav a.courant::after { transform: scaleX(1); }
.site-nav .site-contact, .site-menu .site-contact { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 18px; border-radius: 2px; background: var(--sable); color: var(--encre); }
.site-menu { display: none; }
.site-menu summary { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid currentColor; border-radius: 2px; cursor: pointer; list-style: none; }
.site-menu summary::-webkit-details-marker { display: none; }
.site-menu summary path { transform-box: fill-box; transform-origin: center; transition: transform .4s var(--doux), opacity .3s ease; }
.site-menu[open] summary .b1 { transform: translateY(6px) rotate(45deg); }
.site-menu[open] summary .b2 { opacity: 0; }
.site-menu[open] summary .b3 { transform: translateY(-6px) rotate(-45deg); }
.site-menu nav { position: absolute; left: 0; right: 0; top: 100%; display: flex; flex-direction: column; padding: 8px 16px 28px; background: var(--encre); box-shadow: 0 30px 40px -30px rgba(0, 0, 0, .5); }
.site-menu nav a { display: flex; align-items: center; min-height: 52px; padding: 10px 0; border-bottom: 1px solid rgba(247, 244, 236, .12); font-family: var(--serif); font-size: 26px; font-weight: 500; text-decoration: none; }
.site-menu nav .site-contact { margin-top: 20px; border-bottom: 0; font-family: var(--sans); font-size: 15px; font-weight: 600; min-height: 50px; }
/* Pied du site (version 1.2) : mention et version de l'outil, puis reprise du pied de poliade.fr (tools/site). */
.site-pied { background: var(--encre2); color: rgba(247, 244, 236, .8); padding: 56px 0 40px; font-size: 14px; }
.site-pied-outil { padding-bottom: 32px; margin-bottom: 40px; border-bottom: 1px solid rgba(247, 244, 236, .14); color: rgba(247, 244, 236, .84); }
.site-pied-outil p + p { margin-top: 8px; color: rgba(247, 244, 236, .66); font-size: 12px; }
.site-pied-haut { display: grid; grid-template-columns: minmax(0, 1.3fr) repeat(3, minmax(0, 1fr)); gap: 40px; }
.site-pied-nom { display: block; width: auto; height: 22px; }
.site-pied-accroche { max-width: 320px; margin-top: 16px; }
.site-pied h3 { margin-bottom: 14px; font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--sable-clair); }
.site-pied-haut a { display: block; padding: 5px 0; color: rgba(247, 244, 236, .86); text-decoration: none; }
.site-pied-haut a:hover { color: var(--creme); text-decoration: underline; text-underline-offset: 4px; }
.site-pied-bas { margin-top: 48px; padding-top: 22px; border-top: 1px solid rgba(247, 244, 236, .14); font-size: 13px; color: rgba(247, 244, 236, .66); }

/* En-tête et pied du site : mêmes paliers que poliade.fr */
@media (max-width: 980px) {
  .site-nav { display: none; }
  .site-menu { display: block; }
  .site-pied-haut { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .site-pied-haut { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .site-barre { height: 64px; }
}
