/* mobilite-douce.fr : refonte d'après la maquette « Kit de templates Mobilité Douce » (vague 3). Inter auto-hébergée. */
@font-face { font-family: "Inter"; src: url("../fonts/Inter-latin-var.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Inter"; src: url("../fonts/Inter-latin-ext-var.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
:root { --prim:#1f6feb; --prim-fonce:#1558c4; --prim-texte:#1356c0; --acc:#f26a1b; --acc-fonce:#c24f08; --ink:#0f2142; --ink2:#2b3d5c; --doux:#52627f; --fond:#f5f9ff; --carte:#fff; --trait:#dde7f5; --creux:#eaf2fd; --vert:#14804a; --rayon:16px; --ombre:0 1px 2px rgba(15,33,66,.05),0 8px 24px rgba(31,111,235,.08); --police:"Inter","Segoe UI",system-ui,-apple-system,sans-serif; --larg:1180px; }
* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; scroll-padding-top:88px; }
body { margin:0; background:var(--fond); color:var(--ink); font:400 1.03rem/1.7 var(--police); }
img,svg { max-width:100%; height:auto; }
a { color:var(--prim-texte); text-underline-offset:3px; text-decoration-thickness:1.5px; text-decoration-color:rgba(31,111,235,.4); }
a:hover { color:var(--prim-fonce); text-decoration-color:var(--acc); }
:focus-visible { outline:3px solid var(--prim); outline-offset:3px; border-radius:6px; }
.evitement { position:absolute; left:-999px; top:8px; background:var(--ink); color:#fff; padding:8px 14px; z-index:50; border-radius:8px; }
.evitement:focus { left:8px; }
.entete { position:sticky; top:0; z-index:20; background:rgba(255,255,255,.95); border-bottom:1px solid var(--trait); backdrop-filter:saturate(1.4) blur(8px); }
.entete-int { position:relative; max-width:var(--larg); margin:0 auto; padding:10px 20px; display:flex; align-items:center; gap:18px; min-height:68px; }
.marque { display:flex; align-items:center; gap:8px; color:var(--ink); text-decoration:none; font:800 1.28rem/1.1 var(--police); letter-spacing:-.03em; }
.marque:hover { color:var(--prim-texte); }
.marque-logo svg { width:32px; height:34px; display:block; }
.menu { margin-left:auto; }
.menu ul { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:2px; align-items:center; }
.menu a { display:block; color:var(--ink); text-decoration:none; font:600 .9rem/1.2 var(--police); padding:9px 12px; border-radius:999px; }
.menu a:hover { background:var(--creux); color:var(--prim-texte); }
.menu a[aria-current="page"] { background:var(--creux); color:var(--prim-texte); }
.menu li.menu-cta a { background:var(--prim); color:#fff; margin-left:8px; padding:10px 18px; }
.menu li.menu-cta a:hover { background:var(--prim-fonce); color:#fff; }
.menu-bouton { display:none; margin-left:auto; background:#fff; color:var(--ink); border:1.5px solid var(--ink); border-radius:999px; padding:8px 18px; font:700 .95rem var(--police); cursor:pointer; }
.menu-bouton[aria-expanded="true"] { background:var(--ink); color:#fff; }
.fil { font:600 .8rem/1.4 var(--police); color:var(--doux); }
.fil ol { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px; }
.fil li + li::before { content:"›"; margin-right:6px; color:var(--doux); }
.fil a { color:var(--doux); text-decoration:none; }
.fil a:hover { color:var(--prim-texte); text-decoration:underline; }
.bouton,.button { display:inline-flex; align-items:center; gap:8px; background:var(--acc-fonce); color:#fff; text-decoration:none; font:700 .97rem/1.2 var(--police); padding:14px 24px; border-radius:12px; border:2px solid var(--acc-fonce); transition:background .15s,transform .15s; cursor:pointer; }
.bouton::after { content:"→"; }
.bouton:hover,.button:hover { background:#a54406; border-color:#a54406; color:#fff; transform:translateY(-1px); }
.lien-fleche { font-weight:700; color:var(--prim-texte); }
.lien-fleche::after { content:" →"; }
.une { background:radial-gradient(900px 420px at 85% 0,#d6e6ff 0,rgba(214,230,255,0) 62%),linear-gradient(180deg,#fff,var(--fond)); border-bottom:1px solid var(--trait); }
.une-int { max-width:var(--larg); margin:0 auto; padding:52px 20px 48px; display:grid; grid-template-columns:1.05fr 1fr; gap:36px; align-items:center; }
.surtitre { display:inline-block; font:800 .72rem/1.4 var(--police); text-transform:uppercase; letter-spacing:.12em; color:var(--prim-texte); background:var(--creux); border:1px solid #c5dafb; padding:6px 12px; border-radius:999px; margin:0 0 18px; }
.une h1 { font:800 clamp(2rem,4.4vw,3.3rem)/1.08 var(--police); letter-spacing:-.035em; margin:0 0 18px; color:var(--ink); }
.chapo { font-size:1.1rem; color:var(--ink2); max-width:58ch; margin:0 0 26px; }
.une-actions { display:flex; flex-wrap:wrap; gap:18px; align-items:center; margin:0; }
.une-photo { width:100%; height:auto; border-radius:28px; box-shadow:0 24px 60px rgba(15,33,66,.2); display:block; aspect-ratio:3/2; object-fit:cover; }
.engagements { background:#fff; border-bottom:1px solid var(--trait); }
.engagements-int { max-width:var(--larg); margin:0 auto; padding:24px 20px; list-style:none; display:grid; grid-template-columns:repeat(4,1fr); gap:0; }
.engagements-int li { display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px; padding:4px 18px; }
.engagements-int li + li { border-left:1px solid var(--trait); }
.engagement-icone svg { width:34px; height:34px; color:var(--prim); }
.engagements-int strong { font-size:.98rem; }
.engagements-int small { color:var(--doux); font-size:.82rem; line-height:1.4; display:block; }
.bloc-int { max-width:var(--larg); margin:0 auto; padding:0 20px; }
.bloc { padding:46px 0 6px; }
.bloc-titre { font:800 clamp(1.4rem,2.6vw,1.9rem)/1.2 var(--police); letter-spacing:-.02em; margin:0 0 6px; display:flex; align-items:center; gap:10px; }
.bloc-titre::before { content:""; flex:none; width:26px; height:14px; border-radius:7px; background:var(--prim); }
.bloc-sous { color:var(--doux); margin:0 0 22px; }
.engins-grille { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(6,1fr); gap:14px; }
.engins-grille a { display:flex; flex-direction:column; align-items:center; text-align:center; gap:4px; height:100%; background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); padding:18px 10px 16px; text-decoration:none; color:var(--ink); box-shadow:var(--ombre); transition:transform .15s,border-color .15s; }
.engins-grille a:hover { transform:translateY(-3px); border-color:var(--prim); }
.engin-icone svg { width:48px; height:48px; color:var(--prim); margin-bottom:4px; }
.engins-grille strong { font-size:.98rem; }
.engins-grille small { color:var(--doux); font-size:.8rem; line-height:1.35; }
.une-selection { display:grid; grid-template-columns:1.5fr 1fr; gap:18px; }
.carte-une { position:relative; display:flex; flex-direction:column; justify-content:flex-end; min-height:360px; border-radius:22px; overflow:hidden; text-decoration:none; color:#fff; background:#0f2142; }
.carte-une img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.7; }
.carte-une::before { content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg,rgba(15,33,66,.05),rgba(15,33,66,.9)); }
.carte-une-texte { position:relative; z-index:2; padding:26px; }
.carte-une strong { display:block; font:800 1.55rem/1.2 var(--police); letter-spacing:-.02em; margin:8px 0; color:#fff; }
.carte-une small { display:block; color:#e3edfb; font-size:.98rem; max-width:52ch; }
.etiquette { display:inline-block; font:800 .68rem/1 var(--police); text-transform:uppercase; letter-spacing:.1em; background:var(--prim); color:#fff; padding:6px 10px; border-radius:6px; }
.liste-cartes { list-style:none; margin:0; padding:0; display:grid; gap:14px; }
.carte-h { display:grid; grid-template-columns:130px 1fr; gap:14px; align-items:center; height:100%; background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); overflow:hidden; text-decoration:none; color:var(--ink); box-shadow:var(--ombre); transition:transform .15s,border-color .15s; }
.carte-h:hover { transform:translateY(-2px); border-color:var(--prim); }
.carte-h img { width:130px; height:100%; min-height:100px; object-fit:cover; display:block; }
.carte-h span.t { padding:12px 14px 12px 0; display:block; }
.carte-h .etiquette { background:var(--creux); color:var(--prim-texte); margin-bottom:6px; }
.carte-h strong { display:block; font-size:1rem; line-height:1.3; }
.carte-h small { color:var(--doux); font-size:.86rem; line-height:1.4; display:block; margin-top:3px; }
.regles-grille { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(5,1fr); gap:14px; }
.regles-grille li { background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); padding:18px; box-shadow:var(--ombre); }
.regles-grille .coche { display:inline-flex; width:28px; height:28px; border-radius:50%; background:#e3f6ec; color:var(--vert); align-items:center; justify-content:center; margin-bottom:8px; }
.regles-grille .coche svg { width:16px; height:16px; }
.regles-grille strong { display:block; font-size:1rem; line-height:1.3; margin-bottom:4px; }
.regles-grille span.tx { color:var(--doux); font-size:.88rem; line-height:1.5; display:block; }
.regles-lien { margin:18px 0 0; }
.bandeau-fiches { margin-top:46px; }
.bandeau-fiches-int { display:grid; grid-template-columns:1fr 1fr; background:linear-gradient(120deg,#0f2142,#1558c4); border-radius:26px; overflow:hidden; color:#fff; }
.bandeau-fiches-photo { width:100%; height:100%; min-height:270px; object-fit:cover; display:block; }
.bandeau-fiches-texte { padding:38px; align-self:center; }
.bandeau-fiches h2 { font:800 1.7rem/1.2 var(--police); letter-spacing:-.02em; margin:0 0 10px; color:#fff; }
.bandeau-fiches p { color:#dbe8fb; margin:0 0 20px; }
.about { margin:46px 0 0; }
.about-int { background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); padding:26px 30px; box-shadow:var(--ombre); display:grid; grid-template-columns:1fr auto; gap:24px; align-items:center; }
.about h2 { font:800 1.3rem/1.2 var(--police); margin:0 0 8px; }
.about p { margin:0; color:var(--ink2); max-width:80ch; }
.accueil-faq .faq { max-width:880px; }
.bandeau { background:radial-gradient(700px 260px at 90% 0,#d6e6ff 0,rgba(214,230,255,0) 70%),#fff; border-bottom:1px solid var(--trait); }
.bandeau-int { max-width:var(--larg); margin:0 auto; padding:22px 20px 34px; }
.tete-grille { display:grid; grid-template-columns:1.1fr .9fr; gap:34px; align-items:center; }
.tete-page h1 { font:800 clamp(1.8rem,3.6vw,2.7rem)/1.12 var(--police); letter-spacing:-.03em; margin:18px 0 12px; max-width:26ch; display:flex; gap:14px; align-items:flex-start; }
.tete-page .chapo { margin:0 0 14px; max-width:68ch; }
.tete-picto svg { width:54px; height:54px; color:var(--prim); flex:none; margin-top:2px; }
.tete-kicker { display:inline-block; margin:18px 0 0; font:800 .7rem/1 var(--police); text-transform:uppercase; letter-spacing:.1em; background:var(--creux); color:var(--prim-texte); padding:6px 10px; border-radius:6px; }
.tete-kicker + h1 { margin-top:12px; }
.tete-meta { display:flex; flex-wrap:wrap; gap:6px 16px; color:var(--doux); font-size:.88rem; margin:0; }
.tete-photo img { width:100%; height:auto; border-radius:22px; box-shadow:0 18px 44px rgba(15,33,66,.16); display:block; aspect-ratio:3/2; object-fit:cover; }
.mise-en-page { max-width:var(--larg); margin:0 auto; padding:34px 20px 64px; display:block; }
.mise-en-page.avec-sommaire { display:grid; grid-template-columns:270px minmax(0,1fr); gap:44px; align-items:start; }
.sommaire { position:sticky; top:92px; background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); padding:18px 18px 12px; font-size:.9rem; line-height:1.4; max-height:calc(100vh - 120px); overflow:auto; box-shadow:var(--ombre); }
.sommaire-titre { font:800 1.05rem var(--police); margin:0 0 10px; color:var(--ink); }
.sommaire ol { margin:0; padding-left:20px; } .sommaire li { margin:0 0 8px; } .sommaire a { text-decoration:none; color:var(--ink2); } .sommaire a:hover { color:var(--prim-texte); text-decoration:underline; }
.corps { max-width:76ch; min-width:0; }
.corps h2 { font:800 1.55rem/1.25 var(--police); letter-spacing:-.02em; margin:2em 0 .6em; }
.corps h3 { font:700 1.2rem/1.3 var(--police); margin:1.7em 0 .5em; }
.corps > :first-child { margin-top:0; }
.corps p,.corps ul,.corps ol { margin:0 0 1.05em; }
.corps li { margin:0 0 .4em; }
.corps img { border-radius:14px; display:block; margin:1.2em 0; box-shadow:var(--ombre); }
.tableau { overflow-x:auto; margin:0 0 1.4em; border-radius:12px; border:1px solid var(--trait); background:#fff; }
.corps table { width:100%; border-collapse:collapse; font-size:.92rem; min-width:560px; }
.corps th,.corps td { border-bottom:1px solid var(--trait); padding:10px 12px; text-align:left; vertical-align:top; }
.corps th { background:var(--creux); } .corps tr:last-child td { border-bottom:0; }
.encadre,.attention { border-radius:var(--rayon); padding:16px 20px; margin:0 0 1.4em; }
.encadre { background:#e9f6ef; border:1px solid #bfe3cf; }
.attention { background:#fff4e8; border:1px solid #fbd3ae; }
.encadre-titre { font:800 .78rem/1 var(--police); text-transform:uppercase; letter-spacing:.1em; margin:0 0 8px !important; color:var(--vert); }
.attention .encadre-titre { color:var(--acc-fonce); }
.encadre ul { margin:0; padding-left:1.2em; } .encadre p:last-child,.attention p:last-child { margin-bottom:0; }
.cartes { list-style:none; padding:0; margin:0 0 1.6em; display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.cartes a { display:flex; flex-direction:column; gap:6px; height:100%; background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); padding:20px; text-decoration:none; color:var(--ink); box-shadow:var(--ombre); transition:transform .15s,border-color .15s; }
.cartes a:hover { transform:translateY(-3px); border-color:var(--prim); }
.carte-picto svg { width:40px; height:40px; color:var(--prim); }
.carte-titre { font:700 1.06rem/1.35 var(--police); margin:0 !important; }
.carte-resume { color:var(--doux); font-size:.92rem; line-height:1.5; }
.cartes a::after { content:"Lire le guide →"; font-weight:700; font-size:.86rem; color:var(--prim-texte); margin-top:auto; padding-top:6px; }
.liste-titre { font:800 1.4rem/1.25 var(--police); margin:2em 0 .8em; }
.corps.large { max-width:none; }
.faq { border:1px solid var(--trait); background:#fff; border-radius:12px; margin:0 0 10px; padding:0 18px; }
.faq summary { cursor:pointer; font-weight:700; padding:14px 22px 14px 0; list-style:none; position:relative; }
.faq summary::-webkit-details-marker { display:none; }
.faq summary::after { content:""; position:absolute; right:2px; top:50%; width:9px; height:9px; border-right:2px solid var(--prim); border-bottom:2px solid var(--prim); transform:translateY(-70%) rotate(45deg); transition:transform .15s; }
.faq[open] summary::after { transform:translateY(-30%) rotate(-135deg); }
.faq p { margin:0 0 14px; }
.formulaire { display:grid; gap:16px; max-width:640px; background:var(--carte); border:1px solid var(--trait); border-radius:var(--rayon); padding:24px; box-shadow:var(--ombre); margin:0 0 1.4em; }
.formulaire label { display:grid; gap:6px; font:700 .92rem var(--police); }
.formulaire input,.formulaire textarea { font:400 1rem var(--police); padding:12px 14px; border:1.5px solid #8fa3c2; border-radius:10px; background:#fff; color:var(--ink); }
.formulaire input:focus-visible,.formulaire textarea:focus-visible { border-color:var(--prim); outline-offset:1px; }
.formulaire textarea { min-height:160px; resize:vertical; }
.piege { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.retour-envoi { margin:0; font-weight:600; } .retour-envoi.ok { color:#047857; } .retour-envoi.erreur { color:#b91c1c; }
.suite { margin-top:44px; padding:24px; background:var(--ink); color:#fff; border-radius:20px; }
.suite-titre { margin:0 0 14px !important; font:800 1.2rem var(--police) !important; color:#fff; }
.suite ul { list-style:none; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:0; }
.suite a { display:block; height:100%; background:rgba(255,255,255,.08); border-radius:12px; padding:14px 16px; color:#fff; text-decoration:none; }
.suite a:hover { background:rgba(255,255,255,.16); }
.suite strong { display:block; }
.suite small { display:block; color:#c5d4ec; margin-top:4px; }
.pied { background:var(--ink); color:#c5d4ec; margin-top:36px; }
.pied-int { max-width:var(--larg); margin:0 auto; padding:34px 20px; display:grid; grid-template-columns:2fr 1.3fr 1fr; gap:30px; }
.pied-marque { display:flex; align-items:center; gap:8px; color:#fff; font-weight:800; margin:0 0 10px; }
.pied-logo svg { width:28px; height:30px; display:block; } .pied-logo path { fill:#6aa5ff; }
.pied-texte { margin:0; font-size:.92rem; max-width:60ch; }
.pied-titre { color:#fff; font-weight:800; margin:0 0 8px; font-size:.9rem; }
.pied-liens { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.pied-engins { columns:2; }
.type-erreur .mise-en-page { min-height:30vh; }
@media (max-width:1060px) { .engins-grille { grid-template-columns:repeat(4,1fr); } .regles-grille { grid-template-columns:repeat(3,1fr); } .menu a { padding:9px 9px; font-size:.86rem; } }
@media (max-width:960px) {
 .une-int,.une-selection,.bandeau-fiches-int,.pied-int,.tete-grille,.about-int { grid-template-columns:1fr; }
 .engins-grille { grid-template-columns:repeat(3,1fr); } .regles-grille { grid-template-columns:repeat(2,1fr); }
 .engagements-int { grid-template-columns:repeat(2,1fr); gap:18px 0; } .engagements-int li:nth-child(3) { border-left:0; }
 .mise-en-page.avec-sommaire { grid-template-columns:1fr; } .sommaire { position:static; max-height:none; }
 .menu-bouton { display:block; } .menu { display:none; position:absolute; left:0; right:0; top:100%; background:#fff; border-bottom:1px solid var(--trait); padding:8px 20px 14px; margin:0; }
 .menu.ouvert { display:block; } .menu ul { flex-direction:column; align-items:stretch; } .menu li.menu-cta a { margin:6px 0 0; text-align:center; }
 .cartes,.suite ul { grid-template-columns:1fr; } .une-int { padding-top:34px; }
}
@media (max-width:520px) { .engins-grille { grid-template-columns:repeat(2,1fr); } .regles-grille { grid-template-columns:1fr; } .carte-h { grid-template-columns:100px 1fr; } .carte-h img { width:100px; } }
@media (prefers-reduced-motion:reduce) { * { transition:none !important; } }
.pied a { color:#c5d4ec; text-decoration:none; } .pied a:hover { text-decoration:underline; }

/* Fidélité maquette : marque avec signature, cartes de guides à vignette */
.marque-nom { display:flex; flex-direction:column; }
.marque-nom small { font:500 .66rem/1.2 var(--police); letter-spacing:0; color:var(--doux); margin-top:2px; }
.cartes a.avec-vignette { padding:0; flex-direction:row; align-items:stretch; gap:0; overflow:hidden; position:relative; }
.carte-vignette { width:132px; flex:none; object-fit:cover; display:block; }
.carte-corps { display:flex; flex-direction:column; gap:6px; padding:16px 18px; flex:1; }
.cartes a:not(.avec-vignette) .carte-corps { padding:0; flex:none; }
.cartes a.avec-vignette::after { position:absolute; right:16px; bottom:12px; padding:0; }
.cartes a.avec-vignette .carte-resume { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; margin-bottom:18px; }
@media (max-width:520px) { .carte-vignette { width:96px; } .marque-nom small { display:none; } }
.cartes a.avec-vignette .carte-vignette { margin:0; border-radius:0; box-shadow:none; max-width:none; height:auto; align-self:stretch; width:132px; }
.cartes a.avec-vignette .carte-titre { font-size:1rem; line-height:1.3; }
.cartes a.avec-vignette .carte-corps { padding:14px 16px 40px; }
.cartes a.avec-vignette .carte-resume { margin-bottom:0; -webkit-line-clamp:2; font-size:.88rem; }
