/* ============================================================
   S.O.I.T. — composants de pages internes (MPA)
   S'appuie sur les tokens de soit.css (.so-root.so-editorial)
   ============================================================ */

/* Skip link (accessibilité) */
.so-editorial .so-skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--so-orange);color:#fff;font-weight:700;padding:10px 16px;}
.so-editorial .so-skip:focus{left:0;}

/* Fil d'Ariane */
.so-editorial .so-crumb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#9fb0c8;margin-bottom:var(--so-sp-5);}
.so-editorial .so-crumb a{color:#cdd6e6;text-decoration:none;}
.so-editorial .so-crumb a:hover{color:var(--so-orange);}
.so-editorial .so-crumb [aria-current]{color:var(--so-orange);}
.so-editorial .so-crumb .sep{opacity:.45;}

/* Hero de page interne (navy, compact) */
.so-editorial .so-pagehero{position:relative;overflow:hidden;color:#fff;background:radial-gradient(780px 360px at 86% -25%,rgba(242,91,34,.16),transparent 60%),linear-gradient(160deg,#1B2444,#10172B);}
.so-editorial .so-pagehero::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;background-image:radial-gradient(rgba(255,255,255,.03) 1px,transparent 1px);background-size:3px 3px;}
.so-editorial .so-pagehero__in{position:relative;z-index:2;padding-top:var(--so-sp-9);padding-bottom:var(--so-sp-9);}
.so-editorial .so-pagehero h1{font-size:clamp(28px,6vw,46px);line-height:1.1;max-width:900px;}
.so-editorial .so-pagehero h1 .so-t-thin{display:block;font-weight:300;text-transform:uppercase;letter-spacing:.14em;font-size:.5em;margin-bottom:var(--so-sp-2);color:#cdd6e6;}
.so-editorial .so-pagehero h1 em{font-style:normal;color:var(--so-orange);}
.so-editorial .so-pagehero__lead{color:#cdd6e6;font-size:16px;line-height:1.65;max-width:660px;margin-top:var(--so-sp-4);}

/* Prose / contenu long-form (SEO) */
.so-editorial .so-prose{max-width:780px;}
.so-editorial .so-prose>p{margin-bottom:var(--so-sp-4);color:var(--so-ink);line-height:1.75;font-size:16px;}
.so-editorial .so-prose h2{font-size:clamp(20px,3.6vw,27px);font-weight:800;text-transform:uppercase;letter-spacing:.02em;color:var(--so-night);margin:var(--so-sp-9) 0 var(--so-sp-4);}
.so-editorial .so-prose h3{font-size:17px;font-weight:700;color:var(--so-night);margin:var(--so-sp-6) 0 var(--so-sp-2);}
.so-editorial .so-prose ul,.so-editorial .so-prose ol{margin:0 0 var(--so-sp-4) var(--so-sp-5);}
.so-editorial .so-prose li{margin-bottom:var(--so-sp-2);color:var(--so-muted);line-height:1.6;}
.so-editorial .so-prose strong{color:var(--so-night);font-weight:700;}
.so-editorial .so-prose blockquote{border-left:3px solid var(--so-orange);padding:var(--so-sp-2) var(--so-sp-5);margin:var(--so-sp-5) 0;color:var(--so-night);font-style:italic;}

/* FAQ (details/summary, sans JS, riche pour le SEO) */
.so-editorial .so-faq{max-width:820px;}
.so-editorial .so-faq details{border:1px solid var(--so-line);border-top:3px solid var(--so-orange);border-radius:var(--so-r);background:#fff;margin-bottom:var(--so-sp-3);padding:0 var(--so-sp-5);}
.so-editorial .so-faq summary{cursor:pointer;list-style:none;font-weight:700;color:var(--so-night);font-size:15.5px;padding:var(--so-sp-4) 0;display:flex;justify-content:space-between;gap:14px;align-items:center;}
.so-editorial .so-faq summary::-webkit-details-marker{display:none;}
.so-editorial .so-faq summary::after{content:"+";color:var(--so-orange);font-weight:800;font-size:22px;line-height:1;flex:none;}
.so-editorial .so-faq details[open] summary::after{content:"\2013";}
.so-editorial .so-faq details>p{color:var(--so-muted);padding-bottom:var(--so-sp-4);line-height:1.65;font-size:14.5px;}

/* Sommaire d'ancres (sous-pages longues) */
.so-editorial .so-toc{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--so-sp-7);}
.so-editorial .so-toc a{font-size:12.5px;font-weight:600;letter-spacing:.03em;text-decoration:none;color:var(--so-muted);border:1px solid var(--so-line);border-radius:var(--so-r);padding:9px 14px;background:#fff;}
.so-editorial .so-toc a:hover{border-color:var(--so-orange);color:var(--so-orange);}

/* Fiche projet détaillée */
.so-editorial .so-detail{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--so-sp-8);}
.so-editorial .so-specs{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--so-sp-4);background:var(--so-off);border:1px solid var(--so-line);border-top:3px solid var(--so-orange);border-radius:var(--so-r);padding:var(--so-sp-6) var(--so-sp-5);}
.so-editorial .so-spec{display:flex;gap:12px;align-items:flex-start;}
.so-editorial .so-spec svg{width:20px;height:20px;flex:none;color:var(--so-orange);margin-top:2px;}
.so-editorial .so-spec .k{display:block;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--so-btn-orange);margin-bottom:2px;}
.so-editorial .so-spec .v{font-size:14.5px;color:var(--so-ink);font-weight:600;line-height:1.4;}
.so-editorial .so-gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--so-sp-4);}
.so-editorial .so-gallery .so-photo{border-bottom:none;border:1px solid var(--so-line);border-radius:var(--so-r);}

/* Frise (entreprise) */
.so-editorial .so-timeline{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--so-sp-5);}
.so-editorial .so-tl{border-left:3px solid var(--so-orange);padding-left:var(--so-sp-5);}
.so-editorial .so-tl .yr{font-size:26px;font-weight:800;color:var(--so-orange);line-height:1;}
.so-editorial .so-tl h3{font-size:16px;font-weight:700;color:var(--so-night);margin:var(--so-sp-2) 0 var(--so-sp-1);}
.so-editorial .so-tl p{font-size:14px;color:var(--so-muted);line-height:1.55;}

/* Valeurs ADN */
.so-editorial .so-adn{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--so-sp-5);}

/* Bandeau CTA réutilisable */
.so-editorial .so-ctaband{background:linear-gradient(135deg,var(--so-orange),var(--so-orange-deep));color:#fff;border-radius:var(--so-r);padding:var(--so-sp-9) var(--so-sp-6);text-align:center;}
.so-editorial .so-ctaband h2{font-size:clamp(22px,4.2vw,31px);font-weight:800;margin-bottom:var(--so-sp-3);}
.so-editorial .so-ctaband p{color:#ffe7dc;margin-bottom:var(--so-sp-6);max-width:560px;margin-left:auto;margin-right:auto;}
.so-editorial .so-ctaband .so-btn--light{background:#fff;color:var(--so-orange-deep);}
.so-editorial .so-ctaband .so-btn--light:hover{background:var(--so-night);color:#fff;}

/* Carte (placeholder, sans tuiles externes) */
.so-editorial .so-map{position:relative;overflow:hidden;border:1px solid var(--so-line);border-radius:var(--so-r);background:linear-gradient(160deg,#1B2444,#10172B);min-height:260px;}
.so-editorial .so-map::after{content:"";position:absolute;inset:0;opacity:.4;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:34px 34px;}
.so-editorial .so-map .pin{position:absolute;z-index:2;width:14px;height:14px;border-radius:999px;background:var(--so-orange);box-shadow:0 0 0 6px rgba(242,91,34,.25);}
.so-editorial .so-map .pin b{position:absolute;left:18px;top:-4px;white-space:nowrap;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#fff;}

/* Liste réalisations : en-tête de compteur */
.so-editorial .so-count{font-size:13px;color:var(--so-muted);margin-bottom:var(--so-sp-5);}
.so-editorial .so-count b{color:var(--so-night);}

@media (min-width:768px){
  .so-editorial .so-specs{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .so-editorial .so-gallery{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .so-editorial .so-timeline{grid-template-columns:repeat(3,minmax(0,1fr));}
  .so-editorial .so-adn{grid-template-columns:repeat(3,minmax(0,1fr));}
  .so-editorial .so-pagehero__in{padding-top:var(--so-sp-10);padding-bottom:var(--so-sp-10);}
}
@media (min-width:1100px){
  .so-editorial .so-detail{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start;}
}

/* État actif du lien de navigation (consolidé depuis les <style> par page du prototype). */
.so-editorial .so-nav a[aria-current="page"]{color:var(--so-orange);}
.so-editorial .so-nav a[aria-current="page"]::after{width:100%;}
.so-editorial .so-mobnav a[aria-current="page"]{color:var(--so-orange);}

/* Photo de couverture réelle dans les cartes/fiches projet (sinon placeholder SVG,
   qui garde la bande de 150px du prototype). Le cadre suit un ratio 3:2 proche des
   photos de chantier : l'image est recadrée par object-fit, jamais déformée. */
.so-editorial .so-photo--filled{height:auto;aspect-ratio:3/2;}
.so-editorial .so-photo--filled::after{display:none;}
.so-editorial .so-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}

/* Lien titre des cartes projet : hérite du navy de la charte (au lieu du bleu par
   défaut), pas de soulignement, orange au survol ; ::after rend toute la carte cliquable. */
.so-editorial .so-proj__title a{color:inherit;text-decoration:none;}
.so-editorial .so-proj__title a:hover{color:var(--so-orange);}
.so-editorial .so-proj__title a::after{content:"";position:absolute;inset:0;}

/* Visuels extraits de la brochure (hero + section maquette numérique). */
.so-editorial .so-voxel--photo{max-width:460px;height:auto;filter:drop-shadow(0 24px 40px rgba(0,0,0,.4));}
@media (min-width:1100px){
  .so-editorial .so-voxel--photo{max-width:580px;}
  /* Laisse un peu plus de place au visuel (photo plus large que l'ancien cube). */
  .so-editorial .so-hero__in{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);}
}
.so-editorial .so-bim__visual img{max-width:min(78%,420px);height:auto;padding:var(--so-sp-7) 0;}

/* Carte interactive des agences (Leaflet + OpenStreetMap, tuiles désaturées charte). */
.so-editorial .so-map--leaflet{background:var(--so-off);min-height:0;height:340px;padding:0;position:relative;z-index:1;}
@media (min-width:768px){.so-editorial .so-map--leaflet{height:420px;}}
.so-editorial .so-map--leaflet::after{display:none;}
.so-editorial .so-map--leaflet .leaflet-tile{filter:grayscale(1) brightness(1.04) contrast(.92);}
.so-editorial .so-map-pin{background:var(--so-orange);border:2px solid #fff;border-radius:999px;box-shadow:0 0 0 6px rgba(242,91,34,.25);}
.so-editorial .so-map--leaflet .leaflet-popup-content{font-family:'Raleway','Helvetica Neue',Arial,sans-serif;font-size:13px;line-height:1.5;color:var(--so-ink);}
.so-editorial .so-map--leaflet .leaflet-popup-content b{color:var(--so-night);}
.so-editorial .so-map--leaflet .leaflet-popup-content a{color:var(--so-btn-orange);font-weight:700;}
.so-editorial .so-map--leaflet .leaflet-popup-content-wrapper,.so-editorial .so-map--leaflet .leaflet-popup-tip{border-radius:var(--so-r);}
.so-editorial .so-map__noscript{padding:var(--so-sp-5);font-size:13.5px;color:var(--so-muted);}
.so-editorial .so-map__noscript a{color:var(--so-btn-orange);font-weight:700;}

/* Carte pleine largeur sous la grille de la page contact. */
.so-editorial .so-contactmap{margin-top:var(--so-sp-8);}

/* Lightbox galerie (fiche projet) */
.so-editorial .so-gallery .so-photo__zoom{position:absolute;inset:0;display:block;cursor:zoom-in;}
.so-editorial .so-gallery .so-photo__zoom:focus-visible{outline:3px solid var(--so-orange);outline-offset:-3px;}
.so-lightbox{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;background:rgba(16,23,43,.94);padding:48px;}
.so-lightbox.is-open{display:flex;}
.so-lightbox figure{max-width:min(1100px,92vw);margin:0;}
.so-lightbox img{max-width:100%;max-height:80vh;width:auto;height:auto;display:block;margin:0 auto;border-radius:2px;box-shadow:0 30px 80px rgba(0,0,0,.5);}
.so-lightbox figcaption{color:#cdd6e6;font-size:13px;text-align:center;margin-top:12px;font-family:'Raleway','Helvetica Neue',Arial,sans-serif;}
.so-lightbox__close,.so-lightbox__nav{border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.06);color:#fff;border-radius:2px;cursor:pointer;line-height:1;}
.so-lightbox__close:hover,.so-lightbox__nav:hover,.so-lightbox__close:focus-visible,.so-lightbox__nav:focus-visible{border-color:var(--so-orange);color:var(--so-orange);outline:none;}
.so-lightbox__close{position:absolute;top:16px;right:16px;width:44px;height:44px;font-size:26px;}
.so-lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:56px;font-size:30px;}
.so-lightbox__nav--prev{left:16px;}
.so-lightbox__nav--next{right:16px;}
@media (max-width:640px){.so-lightbox{padding:12px;}.so-lightbox__nav--prev{left:6px;}.so-lightbox__nav--next{right:6px;}}

/* Formulaire de contact : états (succès, erreurs) + honeypot anti-spam. */
.so-editorial .so-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;}
.so-editorial .so-field__error{display:block;font-size:12px;font-weight:600;color:#C2410C;margin-top:5px;}
.so-editorial .so-form-success{border:1px solid var(--so-line);border-left:3px solid #1FA98B;background:#F0FAF7;color:var(--so-night);font-size:14px;font-weight:600;padding:12px 14px;border-radius:var(--so-r);margin-bottom:var(--so-sp-5);}

/* Carte CTA de la section contact de l'accueil (renvoie au formulaire complet). */
.so-editorial .so-form--cta{align-self:center;}
.so-editorial .so-form--cta h3{font-size:19px;font-weight:800;color:#fff;margin-bottom:var(--so-sp-3);}
.so-editorial .so-form--cta p{color:#cdd6e6;font-size:14.5px;line-height:1.65;margin-bottom:var(--so-sp-5);}
.so-editorial .so-form--cta .so-btn{width:100%;justify-content:center;}
