:root{--fond:#f5f5f7;--carte:#ffffff;--surface:#f2f2f5;--texte:#1d1d1f;--texte-2:#56565c;--trait:rgba(0,0,0,.1);--accent:#6d28d9;--accent-2:#0072b2;--alerte:#d55e00;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root:not([data-theme=clair]){--fond:#000;--carte:#1c1c1e;--surface:#2c2c2e;--texte:#f5f5f7;--texte-2:#aeaeb2;--trait:rgba(255,255,255,.14);--accent:#a78bfa;--accent-2:#56b4e9}}
:root[data-theme=sombre]{--fond:#000;--carte:#1c1c1e;--surface:#2c2c2e;--texte:#f5f5f7;--texte-2:#aeaeb2;--trait:rgba(255,255,255,.14);--accent:#a78bfa;--accent-2:#56b4e9}
*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{overscroll-behavior-y:none}
body{margin:0;background:var(--fond);color:var(--texte);font:17px/1.65 system-ui,-apple-system,'Segoe UI',Roboto,'Noto Sans',sans-serif;-webkit-text-size-adjust:100%}
.pour{margin:14px 0 0;font-size:1.05rem;font-weight:700}
.auteur-haut{margin:6px 0 0;font-size:.95rem;opacity:.92}
.signature{margin:26px 0 8px;padding:16px 18px;border-top:1px solid var(--trait);text-align:end}
.signature p{margin:0}.signature .sig-nom{font-weight:700;font-size:1.08rem}.signature .sig-poste{color:var(--texte-2)}
.g-place details{margin:6px 0 0;font-size:.9rem}.g-place summary{cursor:pointer;color:var(--texte-2)}
.mot{background:var(--carte);border:1px solid var(--trait);border-inline-start:5px solid var(--accent);border-radius:14px;padding:16px 18px;margin:0 0 18px;font-size:1.02rem;line-height:1.6}
.progres{position:fixed;top:0;left:0;height:4px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--accent),var(--accent-2));z-index:20}
header.haut{position:relative;overflow:hidden;color:#fff;padding:56px 20px 64px;background:linear-gradient(120deg,var(--h1,#4c1d95),var(--h2,#6d28d9) 45%,var(--h3,#0072b2));background-size:220% 220%;animation:fond 18s ease-in-out infinite alternate}
header.haut::after{content:'';position:absolute;inset:auto -10% -60% -10%;height:120%;background:radial-gradient(closest-side,rgba(255,255,255,.18),transparent);pointer-events:none}
@keyframes fond{from{background-position:0% 50%}to{background-position:100% 50%}}
.haut-int{position:relative;z-index:1;max-width:860px;margin:0 auto}
.etiquette{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:5px 12px;font-size:.82rem;font-weight:600;backdrop-filter:blur(4px)}
h1{font-size:clamp(1.6rem,4.6vw,2.5rem);line-height:1.15;margin:16px 0 10px;letter-spacing:-.01em}
.sous{margin:0;opacity:.92;font-size:1.05rem;max-width:62ch}
.date{margin-top:14px;font-size:.88rem;opacity:.8}
.barre{position:sticky;top:0;z-index:10;display:flex;gap:8px;justify-content:center;flex-wrap:wrap;padding:10px 16px;background:var(--fond);border-bottom:1px solid var(--trait)}
.barre button{font:inherit;font-size:.9rem;border:1px solid var(--trait);background:var(--carte);color:var(--texte);border-radius:999px;padding:7px 14px;cursor:pointer;min-height:38px;transition:transform .15s ease,border-color .2s}
.barre button:hover{border-color:var(--accent);transform:translateY(-1px)}
.page{max-width:860px;margin:0 auto;padding:22px 16px 40px}
.avert{display:flex;gap:12px;align-items:flex-start;background:var(--carte);border:1px solid var(--trait);border-inline-start:5px solid var(--alerte);border-radius:14px;padding:14px 16px;margin:0 0 22px;font-size:.95rem}
.avert p{margin:0}.avert p+p{margin-top:6px;color:var(--texte-2)}
nav.sommaire{background:var(--carte);border:1px solid var(--trait);border-radius:16px;padding:16px 18px;margin:0 0 22px}
nav.sommaire h2{font-size:1rem;margin:0 0 8px;color:var(--texte-2);text-transform:uppercase;letter-spacing:.06em}
nav.sommaire ol{margin:0;padding-inline-start:22px;columns:2 260px;column-gap:28px}
nav.sommaire li{margin:3px 0;break-inside:avoid}
nav.sommaire ol.sans-numero{list-style:none;padding-inline-start:0}
nav.sommaire a{color:var(--texte);text-decoration:none;border-bottom:1px solid transparent}nav.sommaire a:hover{border-color:var(--accent);color:var(--accent)}
.partie{background:var(--carte);border:1px solid var(--trait);border-radius:18px;margin:0 0 16px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 10px 30px rgba(0,0,0,.05);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
html.js .partie:not(.vu){opacity:0;transform:translateY(14px)}
.g-place table{border-collapse:collapse;margin:12px 0;font-size:.9rem}.g-place caption{font-weight:700;text-align:start;margin-bottom:6px}.g-place th,.g-place td{border:1px solid var(--trait);padding:5px 8px;text-align:start}
.noscript{background:var(--surface);border-radius:12px;padding:10px 14px;margin:0 0 16px;font-size:.92rem}
.partie-titre{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;list-style:none;color:inherit;padding:16px 18px;cursor:pointer;border-radius:18px;-webkit-tap-highlight-color:transparent}
.partie-titre::-webkit-details-marker{display:none}.partie-titre::marker{content:''}
.partie-titre:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
.partie-titre h2{margin:0;font-size:1.22rem;line-height:1.3;scroll-margin-top:70px}
.partie-titre::after{content:'';flex:none;width:11px;height:11px;border-right:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);transform:rotate(-45deg);transition:transform .3s ease;margin-inline-end:4px}
details[open]>.partie-titre::after{transform:rotate(45deg)}
.partie-corps{padding:0 18px 16px;overflow:hidden}
.intro .partie-corps{padding-top:16px}
.partie-corps h3,.partie-corps h4,.partie-corps h5,.partie-corps h6{margin:18px 0 6px;line-height:1.35}
.partie-corps p{margin:0 0 12px}.partie-corps ul,.partie-corps ol{margin:0 0 12px;padding-inline-start:24px}.partie-corps li{margin-bottom:6px}
.partie-corps li::marker{color:var(--accent);font-weight:700}
.partie-corps strong{color:var(--texte)}
.partie-corps blockquote{margin:0 0 12px;padding:10px 14px;border-inline-start:4px solid var(--accent);background:var(--surface);border-radius:0 10px 10px 0}
.partie-corps code{font-family:ui-monospace,Menlo,Consolas,monospace;background:var(--surface);border-radius:5px;padding:1px 5px;font-size:.92em}
.partie-corps pre{background:var(--surface);border-radius:12px;padding:12px 14px;overflow-x:auto;font-size:.88rem;line-height:1.5}
.partie-corps pre code{background:none;padding:0}
.partie-corps hr{border:0;border-top:1px solid var(--trait);margin:16px 0}
.partie-corps table{border-collapse:collapse;width:100%;margin:0 0 12px;font-size:.92rem;display:block;overflow-x:auto}
.partie-corps th,.partie-corps td{border:1px solid var(--trait);padding:6px 9px;text-align:start}.partie-corps th{background:var(--surface)}
.tableau-rep{overflow-x:auto}.code-rep .code-copier{display:none}
.fin-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:26px 0 6px}
.b-grand{font:inherit;font-weight:700;border:0;border-radius:999px;padding:13px 24px;min-height:48px;cursor:pointer;background:var(--accent);color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.b-grand.b-partager{background:var(--carte);color:var(--texte);border:1px solid var(--trait);box-shadow:none}
[hidden]{display:none!important}
html:not(.js) .barre,html:not(.js) .fin-actions,html:not(.js) .haut-page{display:none}
@media print{.fin-actions{display:none}}
footer{max-width:860px;margin:0 auto;padding:10px 16px 50px;color:var(--texte-2);font-size:.88rem;text-align:center}
footer p{margin:4px 0}
.haut-page{position:fixed;inset-inline-end:16px;bottom:18px;width:46px;height:46px;border-radius:50%;border:0;background:var(--accent);color:#fff;font-size:1.3rem;cursor:pointer;box-shadow:0 8px 20px rgba(0,0,0,.25);opacity:0;transform:translateY(12px);transition:opacity .3s,transform .3s;pointer-events:none}
.haut-page.on{opacity:1;transform:none;pointer-events:auto}
.g-fig{--g-fond:var(--carte);--g-texte:var(--texte);--g-trait:var(--trait)}
@media (max-width:520px){body{font-size:16px}header.haut{padding:40px 16px 46px}.partie-titre{padding:14px}.partie-corps{padding:0 14px 14px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.partie{opacity:1;transform:none}html{scroll-behavior:auto}}
@media print{.barre,.haut-page,.progres{display:none}header.haut{animation:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.partie{opacity:1;transform:none;box-shadow:none;break-inside:auto}.partie-titre::after{display:none}body{background:#fff}}
.g-fig { position: relative; margin: 18px 0px; padding: 16px 14px 10px; border: 1px solid var(--g-trait,rgba(0,0,0,.1)); border-radius: 16px; background: var(--g-fond,#fff); color: var(--g-texte,#1d1d1f); --g-fond: var(--carte,#fff); --g-texte: var(--texte,#1d1d1f); }
.g-titre { font-weight: 700; font-size: 1.02rem; margin: 0px 4px 10px; line-height: 1.35; }
.g-zone { width: 100%; overflow: hidden; }
.g-svg { display: block; width: 100%; height: auto; overflow: visible; font-family: inherit; }
.g-axe { font-size: 12px; fill: currentcolor; opacity: 0.62; }
.g-ligne { stroke: currentcolor; stroke-opacity: 0.1; stroke-width: 1; }
.g-zero { stroke: currentcolor; stroke-opacity: 0.35; stroke-width: 1.2; }
.g-alerte { stroke-width: 2; stroke-dasharray: 6, 5; }
.g-zone-alerte { fill: rgb(213, 94, 0); fill-opacity: 0.07; }
.g-lien { stroke: currentcolor; stroke-opacity: 0.35; stroke-dasharray: 3, 3; }
.g-valeur { font-size: 11.5px; font-weight: 700; fill: currentcolor; opacity: 0.85; }
.g-pc { font-size: 12px; font-weight: 700; fill: rgb(255, 255, 255); pointer-events: none; }
.g-sur-barre { font-size: 13px; font-weight: 700; fill: rgb(255, 255, 255); pointer-events: none; paint-order: stroke; stroke: rgba(0, 0, 0, 0.25); stroke-width: 2px; }
.g-hors-barre { font-size: 13px; font-weight: 700; fill: currentcolor; pointer-events: none; paint-order: stroke; stroke: var(--g-fond,#fff); stroke-width: 4px; stroke-linejoin: round; }
.g-centre-v { font-size: 22px; font-weight: 800; fill: currentcolor; }
.g-centre-l { font-size: 12px; fill: currentcolor; opacity: 0.65; }
.g-point { cursor: pointer; outline: none; transition: opacity 0.2s, filter 0.2s; }
.g-survol .g-point:not(.g-actif) { opacity: 0.4; }
.g-point.g-actif, .g-point:focus-visible { filter: drop-shadow(rgba(0, 0, 0, 0.28) 0px 2px 6px); }
.g-rond.g-actif { stroke-width: 4; }
.g-sous-alerte { stroke: rgb(213, 94, 0) !important; }
.g-bulle { position: absolute; z-index: 5; pointer-events: none; background: rgb(29, 29, 31); color: rgb(255, 255, 255); border-radius: 10px; padding: 8px 11px; font-size: 0.86rem; line-height: 1.4; box-shadow: rgba(0, 0, 0, 0.25) 0px 8px 24px; max-width: 240px; }
.g-b-titre { font-weight: 700; margin-bottom: 2px; }
.g-b-ligne { display: flex; align-items: center; gap: 6px; }
.g-pastille { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: 0 0 auto; }
.g-legende { display: flex; flex-wrap: wrap; gap: 6px 8px; margin: 10px 2px 0px; }
.g-leg { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--g-trait,rgba(0,0,0,.12)); background: transparent; color: inherit; border-radius: 999px; padding: 5px 11px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-language-override: inherit; font-size: 0.85rem; cursor: pointer; min-height: 32px; transition: opacity 0.2s; }
.g-leg.g-off { opacity: 0.42; text-decoration: line-through; }
.g-outils { display: flex; justify-content: flex-end; margin-top: 6px; }
.g-image { background: transparent; border: 0px; color: inherit; opacity: 0.7; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-language-override: inherit; font-size: 0.82rem; text-decoration: underline; cursor: pointer; padding: 6px 4px; min-height: 32px; }
.g-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap; }
.g-anime .g-barre { transform-box: fill-box; transform-origin: 50% 100%; animation: 0.7s cubic-bezier(0.2, 0.8, 0.2, 1) 0s 1 normal both running g-pousse; }
.g-anime .g-barre.g-neg { transform-origin: 50% 0px; }
.g-anime .g-barre.g-horiz { transform-origin: 50% 50%; animation-name: g-large; }
.g-anime .g-trait { stroke-dasharray: 1; animation: 1.3s cubic-bezier(0.45, 0, 0.2, 1) 0s 1 normal both running g-trace; }
.g-anime .g-aire { animation: 0.9s ease 0s 1 normal both running g-apparait; }
.g-anime .g-rond, .g-anime .g-valeur, .g-anime .g-pc, .g-anime .g-sur-barre, .g-anime .g-hors-barre, .g-anime .g-lien { animation: 0.45s ease 0s 1 normal both running g-apparait; }
.g-anime .g-part { transform-box: view-box; transform-origin: 50% 50%; animation: 0.75s cubic-bezier(0.2, 0.8, 0.2, 1) 0s 1 normal both running g-tourne; }
.g-anime .g-centre-v, .g-anime .g-centre-l { animation: 0.6s ease 0.5s 1 normal both running g-apparait; }
@keyframes g-pousse { 
  0% { transform: scaleY(0); }
  100% { transform: scaleY(1); }
}
@keyframes g-large { 
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}
@keyframes g-trace { 
  0% { stroke-dashoffset: 1; }
  100% { stroke-dashoffset: 0; }
}
@keyframes g-apparait { 
  0% { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes g-tourne { 
  0% { opacity: 0; transform: scale(0.86) rotate(-12deg); }
  100% { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .g-anime * { animation: auto ease 0s 1 normal none running none !important; }
}
@media print {
  .g-fig { break-inside: avoid; border-color: rgb(204, 204, 204); }
  .g-legende, .g-outils, .g-bulle { display: none; }
  .g-anime * { animation: auto ease 0s 1 normal none running none !important; }
}
.haut{--h1:#0b3d91;--h2:#1d4ed8;--h3:#0369a1}
