/* urgence-dentaire-24-24.fr — feuille de style unique, extraite une seule fois du template
   et partagee/mise en cache sur toutes les pages (au lieu d'etre dupliquee inline sur chacune). */
:root{--blue:#1069b4;--blue-text:#1069b4;--blue-d:#0b4e86;--navy:#0a2c49;--ink:#132430;--bg:#eef5fb;--line:#d5e5f2;--muted:#556b7d;--cta:#b85814;--cta-d:#a54f12;--radius:14px;--shadow:0 8px 24px rgba(10,44,73,.10)}
/* --blue (#1069b4 sur blanc = 5.7:1) passe deja le seuil AA texte normal (>=4.5:1) : pas besoin
   d'une nuance separee pour le texte comme sur le vert du template pharmacie — --blue-text est
   un simple alias garde pour la lisibilite du CSS. --cta/--cta-d restent assombris (teinte
   orange du template, ~25°, conservee) pour le texte blanc des boutons d'appel (contraste
   initial de l'orange source 2.9:1 -> insuffisant, corrige a 4.7:1+). */
*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:#fff;line-height:1.6}
a{color:var(--blue-text);text-decoration:none}img{max-width:100%;height:auto}
.wrap{max-width:1120px;margin:0 auto;padding:0 18px}
h1,h2,h3{line-height:1.2;color:var(--navy);font-weight:800}
h2{font-size:1.6rem;margin-bottom:.6rem}h3{font-size:1.12rem;margin-bottom:.4rem}
section{padding:44px 0}.section-alt{background:var(--bg)}p{margin-bottom:1rem}.lead{font-size:1.06rem;color:var(--muted)}
.topbar{background:#e6f0fa;border-bottom:1px solid var(--line);font-size:.76rem;color:#3f5568;text-align:center;padding:7px 12px}
header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 18px;max-width:1120px;margin:0 auto}
.logo{display:flex;align-items:center;gap:9px;font-weight:800;color:var(--navy);font-size:1.05rem}
.menu{display:flex;gap:18px;align-items:center}.menu a{color:var(--navy);font-weight:600;font-size:.92rem}.menu a:hover{color:var(--blue-text)}
.menu a[aria-current="page"]{color:var(--blue-text)}
.btn-call{display:inline-flex;align-items:center;gap:8px;background:var(--cta);color:#fff;font-weight:800;padding:11px 16px;border-radius:999px;min-height:44px;box-shadow:0 4px 12px rgba(184,88,20,.35)}
.btn-call:hover{background:var(--cta-d)}
.crumb{background:var(--bg);font-size:.82rem;color:var(--muted);padding:10px 0;border-bottom:1px solid var(--line)}.crumb a{color:var(--muted)}
.hero{background:linear-gradient(135deg,#1069b4 0%,#0a2c49 100%);color:#fff;padding:50px 0 44px}
.hero h1{color:#fff;font-size:2.2rem;margin-bottom:10px}.hero .sub{font-size:1.12rem;opacity:.95;margin-bottom:22px;max-width:640px}
.badges{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}.badge{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);padding:6px 13px;border-radius:999px;font-size:.85rem;font-weight:600}
.callcard{background:#fff;color:var(--navy);border-radius:18px;padding:22px;max-width:440px;box-shadow:var(--shadow);text-align:center}
.numpicto{display:inline-block;margin:2px 0 6px}.numpicto img{max-width:300px;width:100%;height:auto;border-radius:4px}
.callcard .numpicto{display:block;text-align:center;margin:14px auto 8px}
.callcard .btn-call{width:100%;justify-content:center;font-size:1.12rem;padding:14px}
.svanote{font-size:.72rem;color:var(--muted);text-align:center;line-height:1.35;margin:6px auto 2px;max-width:340px}
.sit{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:20px}
.sit a{display:block;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow);color:#42525d;font-size:.92rem;transition:transform .15s}
.sit a:hover{transform:translateY(-3px);border-color:var(--blue)}.sit .ic{font-size:1.6rem}.sit b{display:block;color:var(--navy);font-size:1.08rem;margin:6px 0 6px}.sit a:hover b{color:var(--blue-text)}
.loc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:18px}
.loc-grid a{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-weight:700;color:var(--navy)}
.loc-grid a:hover{border-color:var(--blue);color:var(--blue-text);box-shadow:var(--shadow)}.loc-grid small{display:block;font-weight:500;color:var(--muted);font-size:.78rem}
.urg{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-top:18px}
.urg li{list-style:none;background:#fff;border-left:4px solid var(--blue);border-radius:8px;padding:14px 16px;box-shadow:var(--shadow)}
.info{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:18px}
.info .card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.tip{background:#fff;border:1px solid var(--line);border-left:4px solid var(--cta);border-radius:8px;padding:14px 16px;margin:10px 0;box-shadow:var(--shadow)}
.ctaband{background:linear-gradient(135deg,#b85814,#a54f12);color:#fff;text-align:center;border-radius:18px;padding:30px 20px}
.ctaband h2{color:#fff}.ctaband .numpicto{margin:10px auto}.ctaband .svanote{color:#fff}
.nearby{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.nearby a{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-weight:600;font-size:.85rem}.nearby a:hover{border-color:var(--blue)}
details{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin-bottom:10px;box-shadow:var(--shadow)}
summary{font-weight:700;color:var(--navy);cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}
summary:after{content:"+";float:right;color:var(--blue-text);font-weight:900}details[open] summary:after{content:"–"}details p{margin:10px 0 0;color:var(--muted)}
.livedate{font-size:1.25rem;font-weight:800;color:#eaf4ff}
#geobox{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:var(--shadow);max-width:520px;margin-top:16px;color:var(--ink)}
footer{background:var(--navy);color:#bcd4e8;padding:38px 0 0}
.fcols{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:26px}
footer h3{color:#fff;margin-bottom:12px;font-size:1rem}footer a{color:#bcd4e8;font-size:.9rem}footer a:hover{color:#fff}
.fcols a{display:block;padding:4px 0}
.farr{border-top:1px solid rgba(255,255,255,.08);margin-top:26px;padding-top:20px}.farr h3{color:#fff;margin-bottom:12px}
.farr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px 14px}.farr-grid a{color:#bcd4e8;font-size:.85rem;padding:3px 0}
.disclaimer-img{margin-top:26px;background:#071d30;border-top:1px solid rgba(255,255,255,.08);padding:18px 0}.disclaimer-img .wrap{font-size:.76rem;color:#8aa6bd;line-height:1.7}
.note{background:#fffbe6;border:1px dashed #e3c34d;color:#7a5b00;font-size:.8rem;padding:8px 12px;border-radius:8px;margin-top:10px}
.editeur{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);font-size:.72rem;color:#6f8ba3}
.fbottom{text-align:center;font-size:.78rem;color:#7f9db6;padding:16px;border-top:1px solid rgba(255,255,255,.08);margin-top:20px}
.mobile-call{display:none}

/* ===== Menu mobile (details/summary, accessible sans JS) =====
   Le template fourni avait un <button class="burger"> sans JS ni panneau : sur mobile, le clic
   ne faisait rien. Remplace par le pattern eprouve de perte-carte-identite : le <header> est
   deja position:sticky (= containing block pour l'absolu ci-dessous), donc le panneau s'ancre
   correctement en pleine largeur sous tout le header. */
.mobile-nav-toggle{display:none}
.mobile-nav-toggle>summary{list-style:none;cursor:pointer;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:8px}
.mobile-nav-toggle>summary::-webkit-details-marker{display:none}
.mobile-nav-toggle>summary:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.mobile-nav-toggle[open]>summary{background:var(--bg);color:var(--blue-text)}
.mobile-nav-panel{position:absolute;left:0;right:0;top:100%;background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 10px 15px -3px rgba(0,0,0,.1)}
.mobile-nav-panel a{display:flex;align-items:center;min-height:44px;padding:12px 20px;font-weight:600;font-size:.9rem;color:var(--navy);border-top:1px solid #f3f4f6}
.mobile-nav-panel a:first-child{border-top:0}
.mobile-nav-panel a.active{color:var(--blue-text)}
.mobile-nav-panel .mobile-nav-cta{margin:12px 20px 16px;justify-content:center;background:var(--cta);color:#fff;border-radius:8px;border-top:0}

.burger{background:none;border:0;font-size:1.6rem;color:var(--navy);min-height:44px;min-width:44px}
@media(max-width:860px){.menu{display:none}.mobile-nav-toggle{display:block}.hero h1{font-size:1.7rem}.header-call{display:none}
.mobile-call{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:60;background:var(--cta);color:#fff;align-items:center;justify-content:center;gap:8px;font-weight:800;padding:14px;min-height:56px}body{padding-bottom:56px}}

/* Bandeau de consentement cookies (RGPD) — CMP maison, aucun script tiers, poids negligeable */
#cc-banner{display:none;position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--navy);color:#eaf4ff;padding:14px 16px;box-shadow:0 -4px 20px rgba(0,0,0,.25);flex-wrap:wrap;align-items:center;gap:12px;justify-content:center}
#cc-banner.show{display:flex}
#cc-banner p{margin:0;font-size:.85rem;line-height:1.5;color:#bcd4e8;flex:1;min-width:220px;max-width:640px}
#cc-banner a{color:#fff;text-decoration:underline}
#cc-banner .cc-actions{display:flex;gap:10px;flex-wrap:wrap}
#cc-banner button{min-height:44px;padding:0 18px;border-radius:999px;font-weight:700;font-size:.85rem;cursor:pointer}
#cc-banner #cc-accept{background:var(--cta);color:#fff;border:none}
#cc-banner #cc-accept:hover{background:var(--cta-d)}
#cc-banner #cc-reject{background:transparent;color:#eaf4ff;border:1px solid rgba(255,255,255,.35)}
#cc-banner #cc-reject:hover{background:rgba(255,255,255,.12)}
body.cc-open .mobile-call{display:none!important}

/* ===== Recherche de ville (autocomplete) — page d'accueil, /villes/, chaque page ville =====
   Classes reprises du template (cityselect/ac/ac-list), couleurs alignees sur les tokens du
   site (--blue/--navy/--line/--shadow) plutot que sur la palette separee du template. */
.cityselect{max-width:600px;margin-top:16px}
.ac{position:relative}
.ac input{width:100%;min-height:50px;font-size:1.05rem;padding:13px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--navy);font-weight:600}
.ac input:focus{outline:2px solid var(--blue);border-color:var(--blue)}
.ac-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:340px;overflow:auto;z-index:45;display:none;margin:0;padding:4px;list-style:none}
.ac-list.open{display:block}
.ac-list li{padding:11px 14px;cursor:pointer;font-size:.98rem;color:var(--navy);display:flex;justify-content:space-between;gap:10px;border-radius:8px}
.ac-list li:hover,.ac-list li.active{background:var(--bg)}
.ac-list li b{color:var(--blue-d);font-weight:700}
.ac-list li .cp{color:var(--muted);font-size:.82rem;font-weight:600;white-space:nowrap}
.ac-empty{padding:12px 14px;color:var(--muted);font-size:.92rem}
.ac-hint{font-size:.82rem;color:var(--muted);margin-top:8px}

/* ===== Annuaire de dentistes (pages ville) ===== */
.dentgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:18px}
.dentcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.dentcard .top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.dentcard .av{width:38px;height:38px;flex:none;border-radius:50%;background:var(--bg);color:var(--blue-d);font-weight:800;font-size:.85rem;display:flex;align-items:center;justify-content:center}
.dentcard .nm{font-weight:700;color:var(--navy);font-size:.95rem}
.dentcard .ty{font-size:.8rem;color:var(--muted)}
.dentcard .ad{font-size:.85rem;color:var(--muted)}
.dentcard .tags{margin-top:8px}
.dentcard .tag{display:inline-block;background:var(--bg);color:var(--blue-d);font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:999px}
.dsclaim{font-size:.8rem;color:var(--muted);margin-top:14px}

/* ===== Page de repli /ville/ (communes sans annuaire dedie) ===== */
.majbox{background:#fff;border:1px dashed var(--line);border-radius:var(--radius);padding:26px;text-align:center;box-shadow:var(--shadow)}
.majbox .ic{font-size:1.8rem;margin-bottom:8px}
.majbadge{display:inline-block;margin-top:10px;background:var(--bg);color:var(--blue-d);font-weight:700;font-size:.82rem;padding:6px 14px;border-radius:999px}
