/* DA 02b — Zone Presse : parquet de gymnase sous les néons, mode light */:root{--blue:#E4622A;--sky:#F0A87F;--ink:#12161C;--muted:#6B7480;--paper:#F2EDE4;--line:#D8D0C2;--orange:#C9501C;--mono:'IBM Plex Sans',sans-serif;--sans:'IBM Plex Sans',sans-serif;--display:'Archivo',sans-serif;--primary: #E4622A;--primary-hover: #C9501C;--on-primary: #FFFFFF;--secondary: #12161C;--secondary-hover: #1E242C;--bg: #F2EDE4;--surface: #FFFFFF;--text: #12161C;--text-secondary: #3D4650;--text-strong: #0A0D11;--text-muted: #6B7480;--text-faint: #C9C2B6;--fill: #E9E2D6;--border: #D8D0C2;--white: #FFFFFF;--callout-bg: #FDF1E7;--callout-text: #8A3A12;--callout-border: #F0C9AE;--font-heading: 'Archivo',sans-serif;--font-body: 'IBM Plex Sans',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px}a{color:inherit}.site-header{height:78px;max-width:1280px;margin:auto;padding:0 30px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-size:13px;line-height:.83;letter-spacing:-.6px}.brand b{color:var(--blue)}.ball{display:inline-grid;place-items:center;width:35px;height:35px;background:var(--blue);border-radius:50%;color:#fff;font-weight:700;font-family:var(--mono)}nav{display:flex;gap:20px}nav a{color:var(--ink);text-decoration:none;font-size:13px;font-weight:700}.header-cta,.button{background:var(--ink);color:#fff;text-decoration:none;padding:11px 15px;display:inline-flex;gap:8px;align-items:center;font-weight:700;font-size:14px}.header-cta i{width:16px}.hero{width:100%;min-height:655px;padding:74px max(30px,calc((100vw - 1220px)/2)) 42px;position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:end;background:#12161C}.hero:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(4,21,34,.94),rgba(4,21,34,.76) 39%,rgba(4,21,34,.24) 72%,rgba(4,21,34,.42))}.hero-copy{z-index:2;color:#fff;max-width:820px}.eyebrow{font:500 11px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--blue)}.hero .eyebrow,.terrain .eyebrow{color:var(--sky)}.hero h1,.page-hero h1{font-size:clamp(3.35rem,7.4vw,7.2rem);line-height:.83;letter-spacing:-.085em;margin:18px 0 27px}.hero h1 em,.page-hero em{font-style:normal;color:var(--sky)}.hero p{max-width:500px;font-size:18px;line-height:1.45;color:#E6E1D6}.hero-art{position:absolute;z-index:-2;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 33%;filter:contrast(1.08) saturate(.85)}.hero-number{font:12px var(--mono);display:flex;align-items:center;gap:8px;margin-top:40px}.hero-number b{font-size:36px;color:var(--orange)}.ticker{background:var(--blue);color:#fff;padding:12px 30px;display:flex;gap:35px;overflow:hidden;white-space:nowrap;font:11px var(--mono)}.ticker b{color:var(--sky)}.wrap{max-width:1220px;margin:auto;padding:100px 30px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:25px;margin-bottom:34px}.section-head h2{font-size:clamp(2.2rem,4vw,4rem);letter-spacing:-.065em;line-height:.92;margin:7px 0 0}.section-head p{color:var(--muted);max-width:350px;line-height:1.45;margin:0}.story-grid{display:grid;grid-template-columns:1.45fr .75fr .75fr;gap:16px}.story{background:#fff;border:1px solid var(--line);padding:27px;min-height:280px;display:flex;flex-direction:column;justify-content:space-between;transition:.25s}.story:hover{transform:translateY(-6px);border-color:var(--blue);box-shadow:0 16px 30px #E4622A22}.story.featured{background:var(--ink);color:#fff;min-height:370px;background-image:linear-gradient(135deg,#12161CF5,#12161CC4),url('/assets/img/21-carte-featured.webp');background-size:cover}.story .tag{font:10px var(--mono);text-transform:uppercase;color:var(--blue)}.featured .tag{color:var(--sky)}.story h3{font-size:clamp(1.35rem,2vw,2.05rem);line-height:1;letter-spacing:-.05em;margin:18px 0}.story p{font-size:14px;color:var(--muted);line-height:1.45;margin:0}.featured p{color:#E6E1D6}.date{font:10px var(--mono);color:var(--muted)}.terrain{background:var(--ink);color:#fff}.terrain .section-head p{color:#C9C2B6}.pillar-grid{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid #333A44}.pillar{padding:25px 20px;min-height:265px;border-right:1px solid #333A44;display:flex;flex-direction:column;justify-content:space-between}.pillar:last-child{border:0}.pillar .index{color:var(--sky);font:12px var(--mono)}.pillar h3{font-size:22px;line-height:.95;letter-spacing:-.05em;margin:0}.pillar p{color:#C9C2B6;font-size:13px;line-height:1.4}.tools{background:#fff}.tool-layout{display:grid;grid-template-columns:1fr 1.35fr;gap:45px}.tool-intro h2{font-size:clamp(2.4rem,4.5vw,4.5rem);line-height:.88;letter-spacing:-.08em;margin:10px 0 20px}.tool-intro p{color:var(--muted);line-height:1.5}.tool-card{background:#FDF1E7;padding:27px;border-top:5px solid var(--blue)}.tool-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:25px}.tool-tabs button{font:11px var(--mono);border:1px solid #F0C9AE;background:transparent;padding:9px 10px;cursor:pointer}.tool-tabs button.active{background:var(--blue);color:#fff}.tool-panel{display:none}.tool-panel.active{display:block}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tool-card label{display:block;font:11px var(--mono);margin:0 0 6px}.tool-card select,.tool-card input{width:100%;background:#fff;border:1px solid #F0C9AE;padding:12px;font:14px var(--sans);color:var(--ink)}.result{margin-top:16px;padding:17px;background:var(--ink);color:#fff;line-height:1.35;font-size:15px}.result b{color:var(--sky);font-size:21px}.compare-result{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#3A424C;margin-top:16px}.compare-result div{background:var(--ink);padding:14px}.compare-result span{display:block;color:var(--sky);font:10px var(--mono);margin-bottom:5px}.manifesto{display:grid;grid-template-columns:1fr 1fr;gap:70px}.manifesto h2{font-size:clamp(2.8rem,5.5vw,5.6rem);line-height:.85;letter-spacing:-.08em;margin:8px 0}.manifesto-copy{border-left:3px solid var(--orange);padding-left:25px;color:#3D4650;font-size:18px;line-height:1.55}.source{margin-top:30px;font:11px var(--mono);color:var(--muted)}.article-page{background:#fff}.page-hero{background:var(--ink);color:#fff;padding:100px max(30px,calc((100vw - 1060px)/2)) 82px}.page-hero .lead{max-width:690px;color:#D5CFC3;font-size:20px;line-height:1.5}.article-grid{max-width:1060px;margin:auto;padding:75px 30px 100px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:75px}.article-grid aside{border-top:3px solid var(--orange);padding-top:18px}.article-grid ol{padding-left:20px;color:var(--muted);font-size:14px;line-height:1.65}.article-grid article{max-width:690px}.article-grid h2{font-size:clamp(1.9rem,3vw,2.8rem);line-height:1;letter-spacing:-.06em;margin:0 0 18px;padding-top:20px}.article-grid h2:not(:first-child){margin-top:52px}.article-grid h3{font-size:1.15rem;margin:30px 0 8px}.article-grid p{color:#3D4650;font-size:17px;line-height:1.68;margin:0 0 19px}.article-grid article a{color:var(--blue);font-weight:700}.callout{margin:38px 0;padding:26px;background:#FDF1E7;border-left:4px solid var(--blue)}.callout p:last-child{margin:0;color:var(--ink);font-size:16px}.related{background:#FDF1E7}.related>div{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.related a{background:#fff;padding:20px;text-decoration:none;font-weight:700;line-height:1.15;border:1px solid #EADFCF;transition:.2s}.related a:hover{background:var(--blue);color:#fff}footer{max-width:1280px;margin:auto;padding:47px 30px;display:grid;grid-template-columns:1.3fr 1fr 1fr .8fr;gap:28px;border-top:1px solid var(--line);font-size:13px;color:var(--muted);line-height:1.5}.footer-brand strong{margin-left:8px;color:var(--ink)}.footer-brand p{margin-top:15px;color:var(--ink);font-size:16px}.copyright{align-self:end}.not-found{max-width:900px;margin:auto;padding:140px 30px}.not-found h1{font-size:5rem}.reveal-on-scroll{opacity:0;transform:translateY(20px);transition:.55s}.reveal-on-scroll.revealed{opacity:1;transform:none}@media(max-width:850px){nav{display:none}.hero{min-height:590px;padding-left:30px;padding-right:30px}.hero h1{font-size:clamp(3.5rem,13vw,5.5rem)}.story-grid,.tool-layout,.manifesto{grid-template-columns:1fr}.pillar-grid{grid-template-columns:repeat(2,1fr)}.pillar:nth-child(2),.pillar:nth-child(4){border-right:0}.form-row{grid-template-columns:1fr}.article-grid{grid-template-columns:1fr;gap:25px}.article-grid aside{max-width:400px}.related>div{grid-template-columns:1fr}footer{grid-template-columns:1fr 1fr}}@media(max-width:520px){.site-header{padding:0 18px}.header-cta{font-size:11px;padding:9px}.hero,.wrap{padding-left:20px;padding-right:20px}.hero{padding-top:65px}.hero p{font-size:16px}.ticker{padding-left:20px}.pillar-grid{grid-template-columns:1fr}.pillar{border-right:0!important;border-top:1px solid #333A44}.pillar:first-child{border-top:0}.page-hero{padding:70px 20px}.page-hero h1{font-size:3.2rem}.page-hero .lead{font-size:17px}.article-grid{padding:55px 20px}.article-grid p{font-size:16px}footer{grid-template-columns:1fr;padding:35px 20px}.section-head{display:block}.section-head p{margin-top:17px}}
/* 01c — pied de page 4 colonnes : la ligne de copyright occupe toute la largeur */
footer .copyright{grid-column:1/-1;margin:22px 0 0;padding-top:18px;border-top:1px solid var(--line)}
footer .footer-col-links a{text-decoration:none}
footer .footer-col-links a:hover{color:var(--blue)}
/* DA 02b — titrage Archivo (condensé), texte courant IBM Plex Sans */
h1,h2,h3,h4,.brand,.hero h1,.page-hero h1,.section-head h2,.story h3,.pillar h3,.tool-intro h2,.manifesto h2,.not-found h1,.hero-number b,.result b,.ball{font-family:var(--display);font-stretch:75%;letter-spacing:-.03em}
.callout{background:var(--callout-bg);border-left-color:var(--primary)}
.callout p:last-child{color:var(--callout-text)}
/* 05 — pages outils : formulaire serveur, resultat, FAQ, methode, fil d ariane */
.breadcrumb{font:11px var(--mono);color:var(--muted);margin:0 0 18px}
.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}
.breadcrumb li+li:before{content:"/";margin-right:8px;color:var(--text-faint)}
.breadcrumb a{color:inherit;text-decoration:none}
.breadcrumb a:hover{color:var(--primary)}
.page-hero .breadcrumb{color:var(--text-faint)}
.page-hero .breadcrumb a:hover{color:var(--sky)}
.outil-form{background:var(--fill);border:1px solid var(--border);padding:24px;margin:28px 0}
.outil-form label{display:block;font:11px var(--mono);letter-spacing:.06em;text-transform:uppercase;margin:0 0 6px;color:var(--muted)}
.outil-form select,.outil-form input[type=number],.outil-form input[type=text]{width:100%;background:var(--surface);border:1px solid var(--border);padding:12px;font:15px var(--sans);color:var(--text)}
.outil-form .form-row{margin-bottom:14px}
.outil-form .button{border:0;cursor:pointer;font:700 14px var(--sans)}
.outil-fieldset{border:1px solid var(--border);padding:18px;margin:0 0 16px;background:var(--surface)}
.outil-fieldset legend{font:700 13px var(--sans);padding:0 8px;color:var(--text)}
.outil-radio{display:flex;align-items:center;gap:10px;padding:7px 0;font:15px var(--sans);text-transform:none;letter-spacing:0;color:var(--text)}
.outil-radio input{width:auto;margin:0}
.result{scroll-margin-top:20px}
.result span{display:inline-block;font:10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--sky);margin-right:8px}
.result p{margin:0 0 10px}
.result .result-note{color:#D5CFC3;font-size:14px;line-height:1.5}
.result a{color:var(--sky)}
.outil-table{width:100%;border-collapse:collapse;margin:16px 0 6px;font-size:14px;background:var(--surface);color:var(--text)}
.outil-table caption{text-align:left;font:10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--sky);padding:0 0 8px}
.outil-table th,.outil-table td{border:1px solid var(--border);padding:10px 12px;text-align:left;vertical-align:top}
.outil-table thead th{background:var(--fill);font:700 12px var(--sans)}
.outil-table tbody th{font-weight:700;width:34%}
.outil-faq{margin:44px 0 0}
.outil-faq details{border-top:1px solid var(--border);padding:14px 0}
.outil-faq details:last-of-type{border-bottom:1px solid var(--border)}
.outil-faq summary{cursor:pointer;font-weight:700;font-size:16px}
.outil-faq details div p{margin:12px 0 0;font-size:15px}
.outil-methode{margin:44px 0 0;padding:24px;background:var(--callout-bg);border-left:4px solid var(--primary)}
.outil-methode h2{margin:0 0 12px;font-size:1.35rem;padding-top:0}
.outil-methode p{font-size:15px;color:var(--callout-text)}
.outil-methode p:last-child{margin-bottom:0}
@media(max-width:640px){.outil-table{display:block;overflow-x:auto}.outil-form{padding:18px}}

/* ===== BLOC SOUS-MENU OUTILS — sans JavaScript (hover + focus-within) ===== */
.nav-item{position:relative;display:inline-flex;align-items:center}
.has-sub>a::after{content:"";display:inline-block;width:5px;height:5px;margin-left:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.has-sub::after{content:"";position:absolute;top:100%;left:0;right:0;height:18px}
.sub-nav{position:absolute;top:calc(100% + 18px);left:-16px;z-index:30;min-width:296px;flex-direction:column;gap:1px;padding:8px;background:var(--surface);border:1px solid var(--line);box-shadow:0 18px 34px rgba(31,58,77,.14);display:none}
.has-sub:hover>.sub-nav,.has-sub:focus-within>.sub-nav{display:flex}
.sub-nav a{display:block;padding:9px 12px;font-size:13px;font-weight:700;line-height:1.25;white-space:nowrap;border-left:2px solid transparent}
.sub-nav a small{display:block;margin-top:2px;font-family:var(--font-body);font-size:11px;font-weight:400;color:var(--text-muted)}
.sub-nav a:hover,.sub-nav a:focus{background:var(--fill);color:var(--primary);border-left-color:var(--primary)}
.sub-nav a:hover small,.sub-nav a:focus small{color:var(--text-secondary)}
.sub-nav-all{margin-top:5px;border-top:1px solid var(--line);padding-top:11px!important;color:var(--primary)}
@media(max-width:850px){
.nav-item{display:block}
.has-sub::after{display:none}
.has-sub>a::after{transform:rotate(45deg) translateY(-2px)}
.sub-nav{position:static;display:flex;min-width:0;margin:9px 0 4px 2px;padding:2px 0 2px 14px;border:0;border-left:2px solid var(--line);box-shadow:none;background:transparent;gap:0}
.sub-nav a{white-space:normal;padding:7px 0;font-size:13px;border-left:0}
.sub-nav a small{display:none}
.sub-nav a:hover,.sub-nav a:focus{background:transparent}
.sub-nav-all{padding-top:8px!important}
}
/* 05b — pied de page a 5 colonnes sur une ligne (jamais une colonne orpheline) */
@media(min-width:851px){footer{grid-template-columns:1.25fr .85fr 1fr .95fr 1.05fr}}

/* ===== BLOC LARGEUR UNIFIÉE — toutes les pages à la largeur de la home ===== */
/*
 * Posé par 05c-outils-opti, une fois les pages d'outils en place.
 *
 * Le builder du front réserve `.container` (largeur de la home) aux pages
 * d'accueil et de service, et applique une colonne étroite aux pages de contenu
 * via `.guide-narrow` / `.article-narrow` / `.content-narrow` selon le builder.
 * Résultat : outils, piliers et pages éditoriales sont plus étroits que la home,
 * ce qui se voit immédiatement en passant de l'une à l'autre — et prive les
 * tableaux et les simulateurs de la largeur dont ils ont besoin.
 *
 * `!important` est ici délibéré, pas une facilité. Ce bloc est appendu à
 * `styles.css`, mais la contrainte de largeur est souvent déclarée dans une
 * feuille chargée APRÈS (`article.css` sur le builder Otomatic). À spécificité
 * égale, la dernière feuille gagne : sans `!important`, le bloc serait posé,
 * validé, et pourtant sans effet — un échec indiscernable d'un succès.
 *
 * Les CONTRÔLES de formulaire, eux, restent plafonnés : un `select` ou un
 * `input` étiré sur toute la largeur de la page n'est pas une préférence de
 * style, c'est une régression d'usage.
 */
.guide-narrow,
.article-narrow,
.content-narrow{max-width:none!important}

.guide-narrow select,.guide-narrow input[type=number],.guide-narrow input[type=text],
.article-narrow select,.article-narrow input[type=number],.article-narrow input[type=text],
.content-narrow select,.content-narrow input[type=number],.content-narrow input[type=text]{max-width:520px}

/* ===== ENVELOPPE + OUVERTURE NORMÉE (couches 1 et 2 du gabarit) ===== */
.author-card{display:flex;gap:18px;align-items:flex-start;margin:0 0 22px;padding:20px 22px;background:var(--fill);border-left:3px solid var(--primary)}
.author-card .author-avatar{flex:0 0 auto;line-height:0}
.author-card .author-img{object-fit:cover}
.author-footer .author-card .author-img{width:88px;height:88px;object-fit:cover;border-radius:50%}
.author-footer .author-card .author-monogram{width:88px;height:88px;font-size:30px}
.author-name{margin:0;font-family:var(--font-heading);font-size:16px;font-weight:700;line-height:1.3}
.author-name a{color:var(--text-strong)}
.author-name a:hover{color:var(--primary)}
.author-job{display:block;margin-top:3px;font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:1.1px;color:var(--text-muted)}
.author-legit{margin:11px 0 0;font-size:14.5px;line-height:1.5;font-weight:600;color:var(--text-strong)}
.author-bio{margin:7px 0 0;font-size:13.5px;line-height:1.55;color:var(--text-secondary)}
.author-links{margin:10px 0 0;font-size:13px}
.author-links a{color:var(--primary);font-weight:700;border-bottom:1px solid currentColor}
.page-dates{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0 0 22px;font-size:12px;color:var(--text-muted)}
.page-dates time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-secondary)}
.method-note{margin:0 0 26px;padding:17px 19px;background:var(--callout-bg);border:1px solid var(--callout-border);border-left:3px solid var(--primary)}
.method-note-title{margin:0 0 6px;font-family:var(--font-heading);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--callout-text)}
.method-note p:last-child{margin:0;font-size:14px;line-height:1.6;color:var(--callout-text)}
.opening{margin:0 0 34px}
.opening .answer{margin:0;padding:22px 24px;background:var(--secondary);color:var(--white);font-family:var(--font-heading);font-size:clamp(17px,1.9vw,20px);line-height:1.45;letter-spacing:-.2px}
.essentials{margin:0;padding:20px 24px;background:var(--surface);border:1px solid var(--border);border-top:0}
.essentials-title{margin:0 0 10px;font-family:var(--font-heading);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-muted)}
.essentials ul{margin:0;padding:0;list-style:none}
.essentials li{position:relative;padding:7px 0 7px 22px;font-size:15px;line-height:1.5;color:var(--text)}
.essentials li::before{content:"";position:absolute;left:0;top:15px;width:8px;height:2px;background:var(--primary)}
.scope{margin:0;padding:14px 24px;background:var(--fill);border:1px solid var(--border);border-top:0;font-size:13.5px;line-height:1.55;color:var(--text-secondary)}
.scope span{font-family:var(--font-heading);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.1px;color:var(--text-muted);margin-right:6px}
.scope a{color:var(--secondary);font-weight:700;border-bottom:1px solid currentColor}
.scope a:hover{color:var(--primary)}
.update-log{margin:0;padding:20px 22px;border-top:2px solid var(--secondary);background:var(--fill)}
.update-log-title{margin:0 0 9px;font-family:var(--font-heading);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-muted)}
.update-log ul{margin:0;padding:0;list-style:none}
.update-log li{padding:6px 0;font-size:13.5px;line-height:1.5;color:var(--text-secondary);border-bottom:1px solid var(--border)}
.update-log li:last-child{border-bottom:0}
.update-log time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500;color:var(--text-strong)}
@media(max-width:640px){.author-card{padding:16px}.opening .answer{padding:18px}.essentials,.scope{padding:16px 18px}}

/* Signature de tête — identité et dates sur une seule ligne. Le parcours de
   l'auteur n'est pas ici : il se lit en pied, via .author-footer. */
.author-byline{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin:0 0 26px;padding-bottom:14px;border-bottom:1px solid var(--border,#D3CEC1);font-size:13px;color:var(--text-secondary,#4A554D)}
.byline-author a{color:var(--secondary,#3A4A3F);font-weight:700;border-bottom:1px solid currentColor}
.byline-author a:hover{color:var(--primary,#A65E2E)}
.author-byline .page-dates{margin:0;gap:6px 18px}

/* Pied d'article — la carte auteur complète, détachée du corps du texte. */
.author-footer{margin:38px 0 22px;border-top:2px solid var(--secondary,#3A4A3F)}
.author-footer .author-card{margin:0}

/* Signature dans le hero d'article (blog) : le hero est un aplat sombre, la
   signature doit y passer en blanc. Sans cette règle, elle hérite des couleurs
   pensées pour un fond clair et devient illisible (contraste ~1,1:1). */
.guide-hero .author-byline,
.guide-hero .author-byline .page-dates,
.guide-hero .byline-author a,
.guide-hero .page-dates time{color:#FFFFFF}
.guide-hero .author-byline{border-bottom-color:rgba(255,255,255,.28)}

/* ===== SOURCES — liens sortants cités près de l'affirmation ===== */
.source-note a[rel~="nofollow"]{color:var(--secondary);font-weight:600;border-bottom:1px solid var(--text-faint)}
.source-note a[rel~="nofollow"]:hover{color:var(--primary);border-bottom-color:var(--primary)}
.tool-table a[rel~="nofollow"]{font-weight:600;text-decoration:none;border-bottom:1px solid var(--text-faint)}
.tool-table a[rel~="nofollow"]:hover{color:var(--primary);border-bottom-color:var(--primary)}
.source-list{list-style:none;margin:0;padding:0;max-width:820px}
.source-list li{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.source-list li:last-child{border-bottom:0}
.source-list span{display:block;margin-top:2px;font-size:11px;color:var(--text-muted)}

/* ===== FICHES JOUEUR — plaque maillot, identité, tableaux de stats ===== */

/* La plaque maillot remplace la photo : aucun droit à acquitter, et le condensé
   Archivo est exactement l'esprit « numéro de maillot » de la direction artistique. */
.jersey-plate{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:100%;max-width:230px;aspect-ratio:4/5;padding:18px 14px;background:var(--plate-bg,var(--secondary));color:var(--plate-txt,var(--white));
  border:1px solid var(--secondary-hover);overflow:hidden}
.jersey-plate::after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background:var(--plate-num,var(--primary))}
.jersey-name{font-family:var(--display);font-stretch:75%;font-size:13px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--plate-txt,var(--text-faint));opacity:.72;text-align:center;line-height:1.1}
.jersey-number{font-family:var(--display);font-stretch:75%;font-size:clamp(64px,13vw,104px);font-weight:700;
  line-height:.86;letter-spacing:-.04em;color:var(--plate-num,var(--primary));margin:6px 0 2px}
.jersey-team{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--plate-txt,var(--text-faint));opacity:.72}

.jersey-plate--card{max-width:120px;padding:12px 8px}
.jersey-plate--card .jersey-number{font-size:46px}
.jersey-plate--card .jersey-name{font-size:10px}

/* Bloc identité : la plaque à gauche, les mensurations à droite. */
.fiche-identite{margin:34px 0 0}
.identite-grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:26px;align-items:start;margin-top:16px}
.identite-vitals{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0;margin:0;
  border-top:1px solid var(--border)}
.identite-vitals dt{padding:11px 18px 11px 0;font:11px var(--mono);letter-spacing:.07em;text-transform:uppercase;
  color:var(--text-muted);border-bottom:1px solid var(--border)}
.identite-vitals dd{margin:0;padding:11px 0;font-size:15px;font-variant-numeric:tabular-nums;color:var(--text);
  border-bottom:1px solid var(--border)}

/* Tableaux : la colonne de texte reste étroite, le tableau déborde. */
.table-scroll{overflow-x:auto;margin:16px 0 6px;-webkit-overflow-scrolling:touch}
.stats-table{width:100%;border-collapse:collapse;font-size:14px;background:var(--surface);color:var(--text);
  font-variant-numeric:tabular-nums}
.stats-table caption{text-align:left;font:10px var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);padding:0 0 8px}
.stats-table th,.stats-table td{border:1px solid var(--border);padding:9px 12px;text-align:right;white-space:nowrap}
.stats-table thead th{background:var(--fill);font:700 12px var(--sans);text-align:right}
.stats-table thead th:first-child,.stats-table tbody th,.stats-table td:first-child{text-align:left}
.stats-table tbody th{font-family:var(--display);font-stretch:75%;font-weight:700;font-size:15px}
.stats-table tfoot th,.stats-table tfoot td{background:var(--fill);font-weight:700;border-top:2px solid var(--secondary)}

/* Vidéo : rien n'est demandé à YouTube avant le clic du lecteur. */
.fiche-video{margin:38px 0 0}
.video-frame{position:relative;width:100%;aspect-ratio:16/9;background:var(--secondary)}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}


/* Verdict : le critère et la période sont affichés avant la conclusion. */
.fiche-verdict{margin:38px 0 0;padding:24px;background:var(--fill);border-left:3px solid var(--primary)}
.fiche-verdict h2{margin-top:0;padding-top:0}
.verdict-critere{margin:0 0 14px;font-size:13.5px;line-height:1.7;color:var(--text-secondary)}
.verdict-critere span{display:inline-block;font:10px var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);margin:0 6px 0 0}
.verdict-critere span:not(:first-child){margin-left:14px}

/* Bandeau de relecture : visible tant que la fiche ne passe pas le seuil. */
.fiche-incomplete{margin:0 0 26px;padding:16px 20px;background:var(--callout-bg);
  border:1px dashed var(--callout-border);color:var(--callout-text);font-size:14px}
.fiche-incomplete p{margin:0 0 8px}
.fiche-incomplete ul{margin:0;padding-left:20px;line-height:1.6}

@media(max-width:760px){
  .identite-grid{grid-template-columns:1fr;gap:20px}
  .jersey-plate{margin:0 auto}
}

/* ===== INDEX DES FICHES JOUEUR ===== */
.joueur-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin:20px 0 8px}
.joueur-card{display:flex;gap:16px;align-items:center;padding:16px;background:var(--surface);
  border:1px solid var(--border);text-decoration:none;color:inherit;transition:.2s}
.joueur-card:hover{border-color:var(--primary);box-shadow:0 12px 26px rgba(18,22,28,.09);transform:translateY(-3px)}
.joueur-card .jersey-plate{flex:0 0 auto}
.joueur-card-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.joueur-card-nom{font-family:var(--display);font-stretch:75%;font-weight:700;font-size:19px;line-height:1.1;
  letter-spacing:-.02em;color:var(--text-strong)}
.joueur-card-meta{font:11px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}
.joueur-card-club{font-size:13px;color:var(--text-secondary)}
.joueur-encours{margin:12px 0 0;padding-left:20px;font-size:14px;line-height:1.65;color:var(--text-secondary)}
.joueur-encours strong{color:var(--text)}

/* Sous-entrée de la colonne Dossiers : hiérarchie visible sans colonne en plus. */
.footer-subitem{display:inline-block;margin-left:12px;font-size:12.5px;color:var(--muted)}
.footer-subitem::before{content:"└ ";opacity:.55}
.footer-subitem:hover{color:var(--primary)}

/* Cartes joueur — états et aperçu chiffré (complète le bloc INDEX DES FICHES). */
.joueur-grid{grid-template-columns:repeat(auto-fill,minmax(268px,1fr))}
.joueur-card{align-items:stretch}
.joueur-card-body{flex:1 1 auto;justify-content:center}
.joueur-card-stats{display:flex;gap:14px;margin-top:7px;font-variant-numeric:tabular-nums}
.joueur-card-stats span{font:10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.joueur-card-stats b{display:block;font-family:var(--display);font-stretch:75%;font-size:19px;
  font-weight:700;line-height:1;color:var(--text-strong);letter-spacing:-.02em}
.joueur-card-etat{margin-top:9px;font:10px var(--mono);letter-spacing:.09em;text-transform:uppercase;
  color:var(--primary)}
.joueur-card-etat::after{content:" →";letter-spacing:0}

/* En préparation : lisible, cliquable, mais visiblement distinct du publié. */
.joueur-card--encours{background:var(--fill);border-style:dashed}
.joueur-card--encours .jersey-plate{opacity:.72}
.joueur-card--encours .joueur-card-nom{color:var(--text-secondary)}
.joueur-card--encours .joueur-card-etat{color:var(--callout-text)}
.joueur-card--encours:hover{border-style:solid}
.joueur-card--encours:hover .jersey-plate{opacity:1}

/* ===== ALIGNEMENT SUR LA LARGEUR DE LA HOME (1220 px) ===== */
/*
 * Le builder livre la home en 1220 px (`.wrap`, `.hero`) et les pages de contenu
 * en 1060 px (`.article-grid`, `.page-hero`). L'écart se voit immédiatement en
 * passant de l'une à l'autre. Ce bloc aligne tout sur la home.
 *
 * Le CONTENEUR s'élargit, pas la ligne de texte : à 1220 px une ligne dépasse
 * 180 caractères et devient illisible. Les enfants directs de l'article gardent
 * donc une mesure de lecture, et seuls les blocs qui portent une grille ou un
 * tableau reprennent toute la largeur — colonne étroite, tableaux débordants.
 *
 * Les CONTRÔLES de formulaire restent plafonnés : un `select` étiré sur 900 px
 * n'est pas une préférence de style, c'est une régression d'usage.
 */
.article-grid{max-width:1220px}
.article-grid > article{max-width:none}
.article-grid > article > *{max-width:768px}
.article-grid > article > .joueur-grid,
.article-grid > article > .table-scroll,
.article-grid > article > .fiche-stats,
.article-grid > article > .fiche-clubs{max-width:none}

.not-found{max-width:1220px}

/* Le hero des pages de contenu suit la largeur de celui de la home. Sous 520 px,
   la règle responsive du front garde la main : on ne l'écrase pas. */
@media(min-width:521px){
  .page-hero{
    padding-left:max(30px,calc((100vw - 1220px)/2));
    padding-right:max(30px,calc((100vw - 1220px)/2));
  }
}

/* ===== PAGES JOUEUR : UNE SEULE LARGEUR DE CONTENU ===== */
/*
 * Index des fiches et fiches joueur : pas de colonne latérale, et surtout un
 * bord vertical unique du hero au pied de page.
 *
 * Les blocs à grille ou à tableau NE SONT PAS exemptés ici, contrairement aux
 * pages à colonne latérale : sur une page qui en enchaîne cinq ou six, l'aller-
 * retour entre 768 px et la pleine largeur se voit à chaque section. Un tableau
 * large défile donc dans la colonne — `.table-scroll` porte déjà `overflow-x`.
 *
 * La spécificité des re-plafonnements est délibérée : elle doit égaler celle des
 * exemptions générales (`.article-grid > article > .fiche-stats`), sinon la règle
 * serait posée sans effet.
 */
/* --- CONTENU EN PLEINE LARGEUR DU CONTENEUR ---
 * Aucun plafond sur ces pages : sans colonne latérale, le contenu occupe les
 * 1220 px du conteneur. Un seul bord vertical, et pas de gouttière vide.
 * Le sélecteur universel neutralise le plafond général hérité de
 * `.article-grid > article > *`, et les re-plafonnements par bloc disparaissent. */
.article-grid--pleine{grid-template-columns:minmax(0,1fr);gap:0}
.article-grid--pleine > article > *{max-width:none;margin-inline:0}
.article-grid--pleine > article > .joueur-grid,
.article-grid--pleine > article > .table-scroll,
.article-grid--pleine > article > .fiche-stats,
.article-grid--pleine > article > .fiche-clubs{max-width:none}

/* 3 colonnes plutôt que 4 : à 4, cinq fiches laissent une carte seule en
   deuxième rangée. Trois colonnes donnent 3 + 2, et des cartes plus lisibles. */
.article-grid--pleine .joueur-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}

/* Le hero adopte la même colonne : son texte part du même bord que le corps de
   la page, au lieu de s'aligner sur les 1220 px du conteneur. */
.page-hero--large > *{max-width:none;margin-inline:0}
/* Logo posé à l'étape d'intégration des images : remplace le placeholder lettre. */
.logo-img{height:34px;width:auto;display:block}
.logo-img--footer{height:30px;margin-bottom:2px}
.footer-brand{display:flex;flex-direction:column;align-items:flex-start}

/* ===== IMAGES DES PILIERS ===== */
/* Le dégradé n'est pas décoratif : sans lui le titre blanc devient illisible dès
   que la photo comporte une zone claire. Il est déclaré AVANT l'image pour la
   recouvrir, et la couleur de repli reste celle du hero d'origine. */
.page-hero--image{
  background-image:linear-gradient(100deg,rgba(18,22,28,.94) 0%,rgba(18,22,28,.86) 46%,rgba(18,22,28,.55) 100%),var(--hero-img);
  background-size:cover;
  background-position:center 42%;
}
.illu{margin:34px 0;padding:0}
.illu img{display:block;width:100%;height:auto;border:1px solid var(--border)}
.illu figcaption{margin-top:9px;font-size:13.5px;line-height:1.5;color:var(--text-secondary);
  border-left:2px solid var(--primary);padding-left:11px}
@media(max-width:640px){.illu{margin:24px 0}}

/* Bandeau de la home : contenu centre. `safe` evite le rognage des deux cotes
   quand le bandeau deborde (mobile) — on retombe alors a gauche. */
.ticker{justify-content:center;justify-content:safe center}
