@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Anonymous+Pro:wght@400;700&display=swap');

/* ============================================================
   media38.tv - Feuille de style principale (TECH)
   Fichier : css/style.css

   Objectifs :
   - Design moderne cohérent avec la charte media38.tv (rouge / noir / blanc / gris)
   - 100% responsive (mobile -> desktop)
   - Performant et simple à maintenir
   - Commentaires clairs pour modifier facilement

   POLICE "proche Oxanium" (gratuite) :
   - On utilise Oxanium (Google Fonts) pour reproduire au mieux le rendu Oxanium.
   - Les liens Google Fonts sont dans le <head> de chaque page HTML.
   - Si tu veux changer : remplace 'Oxanium' dans la section WORDMARK ci-dessous.
   ============================================================ */

/* ============================================================
   1) COULEURS - Variables globales
   -> Change ici pour modifier tout le site facilement
   ============================================================ */
:root{
    --red-site: #D6050A; /* rouge du site */
--brand-red: #D6050A; /* rouge exact extrait du logo */

  --accent-blue: #1e90ff; /* bleu accent media38.tv */

  /* Couleurs principales media38.tv (issues des visuels) */
  --c-bg: #020304;          /* Fond global (noir profond) */
  --c-surface: #1D1F20;     /* Cartes / blocs */
  --c-surface-2: #0E1013;   /* Surfaces plus sombres */
  --c-text: #F7F8F8;        /* Texte principal */
  --c-muted: #BEBABF;       /* Texte secondaire */
  --c-border: #46494A;      /* Bordures / séparateurs */

  --c-accent: #1364e7;      /* Rouge principal (CTA, icônes, highlights) */
  --c-accent-dark: #0227a7; /* Hover / ombres rouges */

  /* Optionnel (présent dans certains visuels) */
  --c-accent-blue: #194495;

  /* Helpers */
  --radius: 18px;
  --shadow: 0 18px 60px rgba(0,0,0,.55);
  --shadow-soft: 0 12px 40px rgba(0,0,0,.35);

  /* Effets TECH (V4) */
  --tech-grid-opacity: .16;          /* Intensité de la grille dans le hero */
  --tech-scan-opacity: .22;          /* Intensité du scan lumineux */
  --tech-glow: 0 0 28px rgba(19,100,231,.22); /* Glow rouge discret */
  --tech-glow-strong: 0 0 44px rgba(19,100,231,.30);
  --brand-wordmark-font: 'Orbitron', 'Oxanium', 'Inter', system-ui, sans-serif; /* Police proche de Lastica (Google Fonts) */ /* Police du bloc media38.tv INFORMATIQUE à droite du logo */
  /* Tailles du wordmark (media38.tv / INFORMATIQUE) — ajuste ici si besoin */
  --wordmark-main-size: clamp(2.6rem, 3.8vw, 3.3rem);
  --wordmark-sub-size: clamp(1.15rem, 1.85vw, 1.35rem);
  --container: 1180px;
}

/* ============================================================
   2) RESET & BASE
   ============================================================ */
*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: radial-gradient(900px 600px at 20% -10%, rgba(19,100,231,.20), transparent 60%),
              radial-gradient(900px 600px at 110% 0%, rgba(25,68,149,.15), transparent 55%),
              var(--c-bg);
  color: var(--c-text);
  font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; /* <- Police du site */
  line-height: 1.55;

  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  max-width: 100%;
}

/* Lien d'évitement (accessibilité) : permet de passer directement au contenu */
.skip-link{
  position:absolute;
  left:-999px;
  top: 10px;
  padding: 10px 14px;
  background: rgba(19,100,231,.95);
  color: white;
  border-radius: 12px;
  z-index: 999;
}
.skip-link:focus{ left: 10px; }

img{ max-width: 100%; display:block; }
a{ color: inherit; text-decoration: none; }
p{ color: var(--c-muted); margin: 0 0 14px; }
strong{ color: var(--c-text); }

.container{
  width: min(var(--container), calc(100% - 40px));
  margin-inline: auto;
}

/* Accessibilité : focus visible */
:focus-visible{
  outline: 2px solid rgba(19,100,231,.9);
  outline-offset: 3px;
  border-radius: 10px;
}

/* ============================================================
   3) TYPOGRAPHIE
   -> Modifie ici tailles / styles si tu veux une autre ambiance
   ============================================================ */
.h1, h1{ font-size: clamp(1.7rem, 2.6vw, 2.6rem); line-height: 1.15; margin: 0 0 12px; }
.h2, h2{ font-size: clamp(1.25rem, 1.8vw, 1.6rem); line-height: 1.2; margin: 0 0 10px; }
.h3, h3{ font-size: 1.05rem; margin: 0 0 10px; letter-spacing: .2px; }
.small{ font-size: .95rem; color: var(--c-muted); }

/* ============================================================
   4) HEADER / NAVIGATION
   ============================================================ */
.site-header{
  position: sticky;
  top:0;
  z-index: 50;
  background: rgba(2,3,4,.55); /* <- couleur du header au repos */
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(190,186,191,.12);
  transition: background .25s ease, border-color .25s ease;
}
.site-header[data-scrolled="true"]{
  background: rgba(2,3,4,.82); /* <- couleur du header quand on scroll */
  border-color: rgba(190,186,191,.18);
}

.navbar{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 18px;
  padding: 12px 0;
}

.brand{
  display:flex;
  align-items:center;
  gap: 12px;
}
.brand__logo{
  width: 165px; /* <- taille du logo desktop (+25%) */
  height: auto;

  transform: scale(1.15);
  transform-origin: left center;
}
@media (max-width: 520px){
  .brand__logo{ width: 138px; } /* <- taille du logo mobile (+25%) */
}

/* ============================================================
   WORDMARK media38.tv (à droite du logo)
   -> Reproduction fidèle : ORDI (rouge) + 38 (blanc)
   -> "INFORMATIQUE" en dessous (blanc + ombrage rouge)
   -> Police : Oxanium
   ============================================================ */
.brand{
  text-decoration:none;
}
.brand__wordmark{
  display:flex;
  flex-direction:column;
  line-height:0.95;
  transform: translateY(1px); /* micro-ajustement d'alignement */
}
.brand__top{
  font-family: var(--brand-wordmark-font);
  font-size: var(--wordmark-main-size);
  letter-spacing: 0.03em;
  font-weight: 700;
}
.brand__ordi{
  color: var(--c-accent);
  /* Ombre noire + léger halo rouge (comme la capture) */
  text-shadow:
    0 4px 0 rgba(0,0,0,.75),
    0 0 18px rgba(19,100,231,.22);
}
.brand__num{
  color: var(--c-text);
  text-shadow: 0 4px 0 rgba(0,0,0,.75);
}
.brand__bottom{
  font-family: var(--brand-wordmark-font);
  font-size: var(--wordmark-sub-size);
  letter-spacing: 0.30em;
  font-weight: 600;
  color: var(--c-text);
  /* Ombre rouge + ombre noire (effet identique au visuel) */
  text-shadow:
    2px 2px 0 rgba(19,100,231,.70),
    0 3px 0 rgba(0,0,0,.70);
}

/* Ajustement : sur mobile, on compacte légèrement pour éviter la casse */
@media (max-width: 520px){
  .brand__top{ font-size: var(--wordmark-main-size); }
  .brand__bottom{ font-size: var(--wordmark-sub-size); letter-spacing: 0.28em; }
}

.nav-toggle{
  display:none;
  border: 1px solid rgba(190,186,191,.22);
  background: rgba(29,31,32,.5);
  color: var(--c-text);
  padding: 10px 12px;
  border-radius: 14px;
  cursor:pointer;
  transition: transform .18s ease, border-color .18s ease;
}
.nav-toggle:hover{ transform: translateY(-1px); border-color: rgba(19,100,231,.55); }

.nav-panel{
  display:flex;
  align-items:center;
  gap: 18px;
}
.nav-panel a{
  color: var(--c-muted);
  font-weight: 600;
  letter-spacing: .2px;
  padding: 10px 10px;
  border-radius: 12px;
  transition: background .18s ease, color .18s ease;
}
.nav-panel a:hover{
  color: var(--c-text);
  background: rgba(190,186,191,.08);
}
.nav-panel a[data-active="true"]{
  color: var(--c-text);
  background: rgba(19,100,231,.16);
  border: 1px solid rgba(19,100,231,.35);
}

/* Sous-menu "Prestations" */
.dropdown{
  position: relative;
  display:flex;
  align-items:center;
  gap: 6px;
}
.dropdown__btn{
  display:flex;
  align-items:center;
  gap: 8px;
}

/* Bouton (mobile) pour ouvrir/fermer le sous-menu Prestations
   -> Sur smartphone, le :hover n'est pas fiable. Ce bouton permet
      d'afficher/masquer la liste proprement.
*/
.dropdown__toggle{
  display:none; /* visible en mobile uniquement */
  border: 1px solid rgba(190,186,191,.18);
  background: rgba(29,31,32,.55);
  color: var(--c-text);
  width: 42px;
  height: 42px;
  border-radius: 14px;
  cursor:pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.dropdown__toggle:hover{
  transform: translateY(-1px);
  border-color: rgba(19,100,231,.55);
  background: rgba(19,100,231,.10);
}
.dropdown[data-open="true"] .dropdown__toggle{ border-color: rgba(19,100,231,.55); }
.dropdown__menu{
  z-index: 200; /* au-dessus du hero */
  position:absolute;
  top: calc(100% + 10px);
  left: 0;
  min-width: 240px;
  background: rgba(29,31,32,.96);
  border: 1px solid rgba(190,186,191,.16);
  box-shadow: var(--shadow-soft);
  border-radius: 16px;
  padding: 10px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  pointer-events: none;

}
.dropdown:hover /* Ouverture via JS (mobile) */
.dropdown[data-open="true"] .dropdown__menu a{
  display:block;
  padding: 10px 12px;
  border-radius: 12px;
}

/* Mobile : menu "drawer" */
@media (max-width: 980px){
  .nav-toggle{ display:inline-flex; align-items:center; gap:10px; }
  .nav-panel{
    position: absolute;
    top: 62px;
    right: 20px;
    width: min(360px, calc(100% - 40px));
    flex-direction: column;
    align-items: stretch;
    background: rgba(29,31,32,.98);
    border: 1px solid rgba(190,186,191,.16);
    border-radius: 18px;
    box-shadow: var(--shadow);
    padding: 12px;
    gap: 6px;
    transform: translateY(-10px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease;
  }
  .nav-panel[data-open="true"]{
    opacity: 1;
    transform: translateY(0);
    pointer-events: all;
  }
  .dropdown{
    display:grid;
    grid-template-columns: 1fr auto;
    align-items:center;
  }
  .dropdown__toggle{ display:inline-grid; place-items:center; }
  .dropdown__menu{
    position: static;
    opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  pointer-events: none;
 /* <- fermé par défaut en mobile */
    grid-column: 1 / -1;
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 6px 0 8px;
  }
  .dropdown__btn{ justify-content: space-between; width: 100%; }
}

/* ============================================================
   4b) CTA MOBILE FLOTTANT
   -> Facilite l'appel / contact sur smartphone
   ============================================================ */
.mobile-cta{
  display:none;
}
@media (max-width: 720px){
  /* On réserve de l'espace pour ne pas masquer le contenu avec la barre flottante */
  body{ padding-bottom: 96px; }
  .mobile-cta{
    display:flex;
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: 12px;
    z-index: 60;
    gap: 10px;
    padding: 10px;
    background: rgba(2,3,4,.72);
    backdrop-filter: blur(12px);
    border: 1px solid rgba(190,186,191,.14);
    border-radius: 18px;
    box-shadow: var(--shadow-soft);
  }
  .mobile-cta .btn{ flex: 1; justify-content:center; padding: 12px 14px; }
}

/* ============================================================
   5) HERO (BANDEAU PRINCIPAL)
   - Utilise assets/hero-bg.png (fond)
   ============================================================ */
.hero{
  position: relative;
  padding: clamp(34px, 5vw, 72px) 0;
  overflow-x: hidden;
  overflow-y: visible; /* IMPORTANT: permet au dropdown du menu de dépasser le bandeau */
}
.hero::before{
  content:"";
  position:absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(2,3,4,.92) 0%, rgba(2,3,4,.65) 45%, rgba(2,3,4,.92) 100%),
    url("../assets/hero-bg.png");
  background-size: cover;
  background-position: center;
  filter: contrast(1.05);
}
.hero::after{
  content:"";
  position:absolute;
  inset: 0;
  background: radial-gradient(800px 380px at 25% 15%, rgba(19,100,231,.32), transparent 60%),
              radial-gradient(700px 360px at 85% 5%, rgba(25,68,149,.18), transparent 58%);
  pointer-events:none;
}
.hero__inner{
  overflow: hidden;
  position: relative;
  display:grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 28px;
  align-items:center;
}
@media (max-width: 980px){
  .hero__inner{ grid-template-columns: 1fr; }
}
.hero__badge{
  display:inline-flex;
  gap:10px;
  align-items:center;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(190,186,191,.18);
  background: rgba(29,31,32,.45);
  width: fit-content;
  color: var(--c-muted);
}
.hero__title{
  margin-top: 14px;
}
.hero__subtitle{
  font-size: 1.05rem;
  color: var(--c-muted);
  max-width: 60ch;
}
.hero__cta{
  display:flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 18px;
}
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: 16px;
  border: 1px solid rgba(190,186,191,.18);
  background: rgba(29,31,32,.52);
  color: var(--c-text);
  font-weight: 700;
  letter-spacing: .2px;
  transition: transform .18s ease, background .18s ease, border-color .18s ease;
}
.btn:hover{ transform: translateY(-1px); border-color: rgba(190,186,191,.28); }

.btn--ghost{
  background: transparent;
}
.hero__card{
  background: linear-gradient(180deg, rgba(29,31,32,.62), rgba(14,16,19,.72));
  border: 1px solid rgba(190,186,191,.14);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  padding: 18px;
}
.hero__card ul{ margin: 10px 0 0; padding-left: 18px; color: var(--c-muted); }
.hero__card li{ margin: 6px 0; }

/* ============================================================
   6) SECTIONS / CARTES (services, avantages…)
   ============================================================ */
.section{
  padding: clamp(36px, 4vw, 62px) 0;
}
.section--tight{ padding: 28px 0; }

.section__head{
  display:flex;
  align-items:flex-end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}
.section__kicker{
  color: rgba(19,100,231,.95);
  font-weight: 800;
  letter-spacing: .6px;
  text-transform: uppercase;
  font-size: .82rem;
}
.grid{
  display:grid;
  gap: 16px;
}
.grid--3{ grid-template-columns: repeat(3, 1fr); }
.grid--2{ grid-template-columns: repeat(2, 1fr); }
@media (max-width: 980px){
  .grid--3{ grid-template-columns: 1fr; }
  .grid--2{ grid-template-columns: 1fr; }
}

.card{
  background: linear-gradient(180deg, rgba(29,31,32,.70), rgba(14,16,19,.78));
  border: 1px solid rgba(190,186,191,.14);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  padding: 18px;
  position: relative;
  overflow:hidden;
  transition: transform .18s ease, border-color .18s ease;
}
.card::before{
  content:"";
  position:absolute;
  inset: -1px;
  background: radial-gradient(400px 240px at 20% 0%, rgba(19,100,231,.22), transparent 60%),
              radial-gradient(340px 220px at 90% 20%, rgba(25,68,149,.12), transparent 55%);
  opacity: .65;
  pointer-events:none;
}
.card > *{ position: relative; }
.card:hover{ transform: translateY(-2px); border-color: rgba(19,100,231,.28); }
.card__icon{
  width: 46px;
  height: 46px;
  border-radius: 14px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(19,100,231,.14);
  border: 1px solid rgba(19,100,231,.25);
  margin-bottom: 12px;
}
.card__icon svg{ width: 22px; height: 22px; }
.card__title{ margin-bottom: 6px; }
.card__link{
  display:inline-flex;
  align-items:center;
  gap: 10px;
  color: var(--c-text);
  font-weight: 700;
  margin-top: 8px;
}

/* Bandeau "appel" */
.callout{
  border-radius: var(--radius);
  border: 1px solid rgba(19,100,231,.28);
  background: linear-gradient(135deg, rgba(19,100,231,.20), rgba(29,31,32,.52));
  padding: 18px;
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 14px;
  box-shadow: var(--shadow-soft);
}
@media (max-width: 820px){
  .callout{ flex-direction: column; align-items: stretch; }
}

/* ============================================================
   7) PAGE "INTERIEUR" (bandeau + contenu)
   ============================================================ */
.page-hero{
  padding: 34px 0;
  border-bottom: 1px solid rgba(190,186,191,.12);
  background: linear-gradient(180deg, rgba(29,31,32,.45), rgba(2,3,4,0));
}
.breadcrumbs{
  color: var(--c-muted);
  font-size: .95rem;
  margin-bottom: 10px;
}
.content{
  padding: 26px 0 0;
}
.content ul{ color: var(--c-muted); }
.content li{ margin: 8px 0; }

/* ============================================================
   8) CONTACT
   ============================================================ */
.contact-grid{
  display:grid;
  grid-template-columns: 1fr 1.15fr;
  gap: 18px;
}
@media (max-width: 980px){
  .contact-grid{ grid-template-columns: 1fr; }
}
.form{
  display:grid;
  gap: 12px;
}
.input, textarea{
  width:100%;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid rgba(190,186,191,.18);
  background: rgba(29,31,32,.55);
  color: var(--c-text);
  font: inherit;
}
textarea{ min-height: 160px; resize: vertical; }
.form-status{
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid rgba(190,186,191,.16);
  background: rgba(29,31,32,.45);
  color: var(--c-muted);
}
.form-status[data-type="success"]{ border-color: rgba(60,190,120,.35); }
.form-status[data-type="error"]{ border-color: rgba(19,100,231,.45); }

/* ============================================================
   9) FOOTER
   ============================================================ */
.footer{
  margin-top: 0;
  padding-top: 60px;
  border-top: 1px solid rgba(190,186,191,.12);
  background: rgba(14,16,19,.35);
}
.footer__inner{
  padding: 0 0 34px;
  display:grid;
  grid-template-columns: 1.2fr 1fr 1fr 1fr;
  gap: 18px;
}
@media (max-width: 980px){
  .footer__inner{ grid-template-columns: 1fr; }
}
.footer a{ color: var(--c-muted); }
.footer a:hover{ color: var(--c-text); }
.footer__tag{
  display:inline-flex;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(190,186,191,.16);
  background: rgba(29,31,32,.35);
  color: var(--c-muted);
}

/* ============================================================
   10) ANIMATIONS (révélations)
   - Ajoute data-reveal sur un bloc HTML
   ============================================================ */
[data-reveal]{
  transform: translateY(10px);
  opacity: 0;
  transition: transform .55s ease, opacity .55s ease;
}
[data-reveal][data-revealed="true"]{
  transform: translateY(0);
  opacity: 1;
}

/* ============================================================
   THEME : TECH (cohérent avec les visuels media38.tv)
   - Objectif : plus "tech/noir+rouge", bordures lumineuses, grille/scan discret
   - Tu peux supprimer tout ce bloc si tu ne veux plus ce thème.
   ============================================================ */

/* Animation légère (ne fatigue pas l'œil) */
@keyframes sudisereSweep{
  0%{ transform: translateX(-6%); opacity: .0; }
  40%{ opacity: .35; }
  100%{ transform: translateX(6%); opacity: .0; }
}
@keyframes sudiserePulse{
  0%,100%{ box-shadow: 0 0 0 rgba(19,100,231,0); }
  50%{ box-shadow: 0 0 28px rgba(19,100,231,.16); }
}

/* Fond global : un peu plus contrasté */
body{
  background:
    radial-gradient(900px 600px at 18% -12%, rgba(19,100,231,.22), transparent 60%),
    radial-gradient(900px 600px at 115% -6%, rgba(25,68,149,.14), transparent 56%),
    var(--c-bg);
}

/* HERO : ajout d'une grille + sweep très discret */
.hero::after{
  background:
    /* Glow rouge/bleu */
    radial-gradient(800px 380px at 25% 15%, rgba(19,100,231,.34), transparent 60%),
    radial-gradient(700px 360px at 85% 5%, rgba(25,68,149,.18), transparent 58%),

    /* Grille "tech" (très légère) */
    repeating-linear-gradient(90deg, rgba(255,255,255,.06) 0, rgba(255,255,255,.06) 1px, transparent 1px, transparent 120px),
    repeating-linear-gradient(0deg,  rgba(255,255,255,.05) 0, rgba(255,255,255,.05) 1px, transparent 1px, transparent 120px);
  mix-blend-mode: screen;
  opacity: .65;
}

/* Sweep lumineux */
.hero__inner::before{
  content:"";
  position:absolute;
  inset: -40px -80px;
  background: linear-gradient(90deg, transparent, rgba(19,100,231,.18), transparent);
  transform: translateX(-6%);
  animation: sudisereSweep 6.5s ease-in-out infinite;
  pointer-events:none;
  filter: blur(2px);
  opacity: .0;
}

/* Boutons : plus punchy */

/* Cartes : bordure lumineuse + pulse léger */
.card{
  border-color: rgba(19,100,231,.22);
}
.card:hover{
  border-color: rgba(19,100,231,.45);
  box-shadow: 0 18px 54px rgba(0,0,0,.55), 0 0 0 1px rgba(19,100,231,.12), 0 0 34px rgba(19,100,231,.14);
  animation: sudiserePulse 1.6s ease-in-out infinite;
}

/* Icônes : accent plus marqué */
.card__icon{
  background: rgba(19,100,231,.18);
  border-color: rgba(19,100,231,.34);
}

/* ============================================================
   11) AJOUTS V4 - STYLE TECH (grille, scan, FAQ, page-hero)
   -> Tout est commenté pour pouvoir ajuster facilement
   ============================================================ */

/* --- a) BRAND (logo + texte) --------------------------------
   Objectif : afficher "INFORMATIQUE" à droite du logo.
   IMPORTANT : si tu veux EXACTEMENT la police de ta capture,
   remplace la variable --brand-tagline-font ou ajoute ta police
   en @font-face puis change ici.
---------------------------------------------------------------- */
.brand__stack{
  display:flex;
  align-items:center;
  gap:12px;
}
.brand__tagline{
  font-family: var(--brand-tagline-font);
  font-weight: 700;
  letter-spacing: .18em;
  font-size: 13px;
  text-transform: uppercase;
  color: var(--c-text);
  /* Ombre/relief (modifiable) */
  text-shadow:
    0 10px 24px rgba(0,0,0,.65),
    0 0 18px rgba(19,100,231,.20);
  opacity: .92;
}

/* --- b) HERO TECH : grille + scan ---------------------------
   La grille s’affiche via ::before, le scan via ::after.
   Ajuste --tech-grid-opacity et --tech-scan-opacity dans :root.
---------------------------------------------------------------- */
.hero{
  position:relative;
  overflow: visible; /* IMPORTANT: permet au dropdown du menu de dépasser le bandeau */
}
.hero::before{
  content:"";
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,var(--tech-grid-opacity)) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,var(--tech-grid-opacity)) 1px, transparent 1px);
  background-size: 44px 44px;
  mix-blend-mode: overlay;
  pointer-events:none;
  opacity: 1;
}
.hero::after{
  content:"";
  position:absolute; inset:-30%;
  background: linear-gradient(120deg,
    rgba(19,100,231,0) 40%,
    rgba(19,100,231,var(--tech-scan-opacity)) 50%,
    rgba(19,100,231,0) 60%);
  transform: translateX(-30%) rotate(-6deg);
  animation: techSweep 7.5s linear infinite;
  pointer-events:none;
  filter: blur(0.2px);
}
@keyframes techSweep{
  0%   { transform: translateX(-40%) rotate(-6deg); }
  100% { transform: translateX(40%) rotate(-6deg); }
}

/* --- c) PAGE HERO (pages internes) --------------------------
   Mini-bandeau cohérent avec l’accueil.
---------------------------------------------------------------- */
.page-hero{
  position:relative;
  padding: 54px 0 30px;
  background:
    radial-gradient(800px 360px at 15% 0%, rgba(19,100,231,.20), transparent 60%),
    radial-gradient(700px 420px at 85% 10%, rgba(25,68,149,.18), transparent 55%),
    linear-gradient(180deg, rgba(29,31,32,.92), rgba(2,3,4,.98));
  border-bottom: 1px solid rgba(190,186,191,.12);
}
.page-hero::before{
  content:"";
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.10) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.10) 1px, transparent 1px);
  background-size: 56px 56px;
  opacity:.08;
  pointer-events:none;
}
.page-hero h1{
  margin: 10px 0 10px;
  letter-spacing: .02em;
}
.breadcrumbs{
  margin:0;
  font-size: 13px;
  color: rgba(247,248,248,.70);
}
.page-hero .lead{
  max-width: 68ch;
  color: rgba(247,248,248,.85);
}
.page-hero__cta{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top: 14px;
}

/* --- d) CARTES "CADRE TECH" ---------------------------------
   Effet cadre + angle léger.
---------------------------------------------------------------- */
.card, .tile, .service-card{
  position:relative;
  border: 1px solid rgba(190,186,191,.14);
}
.card::before, .tile::before, .service-card::before{
  content:"";
  position:absolute; inset:-1px;
  border-radius: inherit;
  padding:1px;
  background: linear-gradient(135deg, rgba(19,100,231,.45), rgba(25,68,149,.28), rgba(255,255,255,.06));

          mask-composite: exclude;
  pointer-events:none;
  opacity:.55;
}
.card:hover, .tile:hover, .service-card:hover{
  box-shadow: var(--shadow-soft), var(--tech-glow);
  transform: translateY(-2px);
}

/* --- e) FAQ --------------------------------------------------
   Détails / summary stylés (lisibles et SEO friendly)
---------------------------------------------------------------- */
.faq{
  margin-top: 14px;
  display:grid;
  gap:12px;
}
.faq__item{
  background: rgba(29,31,32,.72);
  border: 1px solid rgba(190,186,191,.12);
  border-radius: var(--radius);
  padding: 2px 14px;
  box-shadow: var(--shadow-soft);
}
.faq__item summary{
  cursor:pointer;
  padding: 14px 6px;
  list-style:none;
  font-weight: 600;
}
.faq__item p{
  margin: 0 6px 14px;
  color: rgba(247,248,248,.85);
}

/* --- f) ACCESSIBILITÉ : focus bien visible ------------------ */
:focus-visible{
  outline: 2px solid rgba(19,100,231,.85);
  outline-offset: 3px;
}

/* --- g) Barre actions mobile (déjà V3) ---------------------- */
.mobile-actions{
  box-shadow: 0 -10px 30px rgba(0,0,0,.45);
}

/* Utilitaire accessibilité : texte visible uniquement pour les lecteurs d'écran */
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path: inset(50%);
  white-space:nowrap;
  border:0;
}

/* === HEADER / HERO BACKGROUND media38.tv (VISIBILITÉ FORCÉE) === */
.hero{
  position: relative;
  background-image:
    linear-gradient(rgba(0,0,0,.15), rgba(0,0,0,.25)),
    url('../assets/hero-bg.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* === FIX MENU PRESTATIONS (desktop hover) ===
   Objectif: éviter la disparition du menu déroulant quand la souris
   passe du lien "Prestations" au sous-menu (gap/espacement).
   Solution: zone tampon invisible via ::before + support clavier via :focus-within
*/
.nav .dropdown{ position: relative; }
/* Positionnement sous "Prestations" */
.nav .dropdown__menu{
  top: 100%;
  margin-top: 10px; /* espace visuel */
}

/* Zone tampon invisible pour traverser l'espace sans perdre le hover */
.nav .dropdown__menu::before{
  content:"";
  position:absolute;
  left:0; right:0;
  top:-10px;        /* même valeur que margin-top */
  height:10px;
}

/* Mobile: ouverture du sous-menu via .is-open (piloté par JS) */
@media (max-width: 900px){
  .dropdown.is-open .dropdown__menu{
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: all;
  }
}

/* === MENU PRESTATIONS (desktop + clavier + mobile) — RÈGLE ROBUSTE ===
   Important : ne dépend PAS d'une classe .nav, fonctionne partout.
*/
.dropdown:hover .dropdown__menu,
.dropdown:focus-within .dropdown__menu,
.dropdown.is-open .dropdown__menu{
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: all;
}

/* Anti "gap" : zone tampon pour que le hover ne se coupe pas */
.dropdown__menu{
  top: calc(100% + 10px);
}
.dropdown__menu::before{
  content:"";
  position:absolute;
  left:0; right:0;
  top:-10px;
  height:10px;
}

/* === MENU PRESTATIONS : affichage vertical des liens ===
   Objectif: chaque sous-menu sur une ligne (les uns en dessous des autres).
*/
.dropdown__menu{
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dropdown__menu a{
  display: block;
  width: 100%;
}

/* === HEADER : Téléphone (V24) ===
   - Numéro en gras
   - Icône téléphone en bleu media38.tv
*/

/* === HEADER : Téléphone toujours en gras (hover inclus) === */

a[href^="tel"] i,
a[href^="tel"] svg{
  color: #0238CB !important;
  fill: #0238CB !important;
}

/* === TÉLÉPHONE media38.tv (V28) ===
   Objectif :
   - Le NUMÉRO reste en blanc/gris du thème (pas bleu)
   - Le logo/icône téléphone est BLEU (#0238CB)
   - Le numéro est en gras dans tous les états
*/

/* Icône uniquement en bleu */

/* === ICÔNE TÉLÉPHONE (SVG) — BLEU media38.tv ===
   IMPORTANT: l'ancien symbole 📞 est un emoji (couleur non contrôlable en CSS).
   On le remplace par un SVG afin de pouvoir appliquer exactement le bleu.
*/
.icon-phone{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: .45rem;
  vertical-align: -2px;
  color: #0238CB;       /* bleu de référence */
}
.icon-phone svg{
  display:block;
  width: 2.1em;
  height: 2.1em;
  fill: currentColor;
}

/* === NUMÉRO DE TÉLÉPHONE — TYPO FINALE (V32) ===
   - Police : Anonymous Pro
   - Taille augmentée
   - Espacement entre chiffres réduit (meilleure lecture)
*/

/* === CARTES "PRESTATIONS" (Accueil) — COULEUR IMAGE DE RÉFÉRENCE (V40) ===
   Couleur extraite de l'image fournie : rgb(48,48,48) -> #303030
   Objectif : rendu exact, ni trop clair ni trop sombre
*/
body[data-page="home"] .section .grid--3 .card{
  background: linear-gradient(180deg, #363636 0%, #303030 100%) !important;
  border: 1px solid rgba(255,255,255,0.14) !important;
  box-shadow: 0 10px 24px rgba(0,0,0,0.45) !important;
}

/* === CARTES (Accueil) : icône rouge -> bleu au survol (V41) ===
   Objectif : sur la carte survolée uniquement, le pictogramme (SVG) garde le même logo,
   mais passe du rouge media38.tv au bleu #0238CB (comme l'icône téléphone).
*/
body[data-page="home"] .grid--3 .card .card__icon{
  transition: background .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease;
  color: rgba(19,100,231,.95); /* rouge par défaut pour le SVG via currentColor */
}
body[data-page="home"] .grid--3 .card:hover .card__icon{
  background: rgba(2,56,203,.16);
  border-color: rgba(2,56,203,.38);
  color: #0238CB; /* SVG stroke/fill via currentColor */
  box-shadow: 0 10px 22px rgba(0,0,0,.35);
}

/* === FOND D'ÉCRAN GLOBAL (V46) ===
   Fond appliqué à toutes les pages, sauf le footer.
   On réutilise l'image fournie pour le hero afin de garder la cohérence visuelle.
*/
body{
  background-image:
    linear-gradient(rgba(0,0,0,.55), rgba(0,0,0,.65)),
    url('../assets/hero-bg.png');
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  background-repeat: no-repeat;
}

/* Le contenu principal reste lisible */
main{
  background: transparent;
}

/* Footer volontairement sans image de fond */
footer{
  background-image: none !important;
  background-color: #0e0e0e;
}

/* =========================================================
   WHY media38.tv - VISUELS (remplace les cartes "Pourquoi media38.tv ?")
   - Objectif : afficher une image (libre) avec une forme "tech" différente
     sur chaque sous-page.
   - Pour modifier les images :
       -> changez le src dans chaque page HTML (classe .why-media img)
   - Pour modifier les formes :
       -> modifiez les clip-path / bordures ci-dessous.
   ========================================================= */

.why-media-wrap{
  display:flex;
  align-items:center;
  justify-content:center;
  margin-top:14px;
}

/* Base du bloc image */
.why-media{
  position:relative;
  width:min(520px, 100%);
  aspect-ratio: 16/10;
  border-radius:18px;
  overflow:hidden;
  background: rgba(255,255,255,0.03);
  box-shadow: 0 18px 55px rgba(0,0,0,.55);
  border:1px solid rgba(255,255,255,0.10);
}

/* Image */
.why-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  filter: contrast(1.05) saturate(1.05);
}

/* Variante diagonale : on affiche l'image en entier (évite la coupe) */
.why-media--diagonal img{
  object-fit: contain;
}

/* Liseré "laser" doux (même bleu que l’icône téléphone) */
.why-media::after{
  content:"";
  position:absolute;
  inset:-2px;
  border-radius:20px;
  pointer-events:none;
  border:2px solid rgba(0, 102, 255, 0.35); /* BLEU media38.tv (accent) */
  box-shadow: 0 0 18px rgba(0, 102, 255, 0.18);
  opacity:.9;
}

/* -------- Variantes de formes -------- */

/* 1) HEXAGONE (ex : Dépannage) */
.why-media--hex{
  border-radius:0;
  clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}
.why-media--hex::after{
  border-radius:0;
  clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

/* 2) CADRE FUTURISTE (ex : Maintenance) */
.why-media--frame{
  border-radius:22px;
  clip-path: polygon(0% 8%, 8% 0%, 92% 0%, 100% 8%, 100% 92%, 92% 100%, 8% 100%, 0% 92%);
}
.why-media--frame::after{
  border-radius:0;
  clip-path: polygon(0% 8%, 8% 0%, 92% 0%, 100% 8%, 100% 92%, 92% 100%, 8% 100%, 0% 92%);
}

/* 3) DOUBLE CERCLE "OVERLAP" (ex : Formation) */
.why-media--dual{
  border-radius:26px;
  overflow:visible;
  background: transparent;
  border:none;
  box-shadow:none;
}
.why-media--dual::after{ display:none; }

.why-media--dual .dual{
  position:relative;
  width:100%;
  aspect-ratio: 16/10;
}
.why-media--dual .dual__big,
.why-media--dual .dual__small{
  position:absolute;
  overflow:hidden;
  border-radius:999px;
  border:3px solid rgba(255,255,255,0.85);
  box-shadow: 0 22px 70px rgba(0,0,0,.55);
}
.why-media--dual .dual__big{
  inset:0;
}
.why-media--dual .dual__small{
  width:46%;
  height:46%;
  left:-6%;
  top:18%;
  border-color: rgba(0, 102, 255, 0.45);
  box-shadow: 0 0 22px rgba(0, 102, 255, 0.22);
}
.why-media--dual .dual img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* 4) DIAGONALE (ex : Installation / Sauvegarde / Smartphone / Tarifs) */
.why-media--diagonal{
  border-radius:24px;
  clip-path: polygon(10% 0%, 100% 0%, 100% 88%, 90% 100%, 0% 100%, 0% 12%);
}
.why-media--diagonal::after{
  border-radius:0;
  clip-path: polygon(10% 0%, 100% 0%, 100% 88%, 90% 100%, 0% 100%, 0% 12%);
}

/* Responsive : réduire l'encombrement sur mobile */
@media (max-width: 720px){
  .why-media{ aspect-ratio: 16/11; }
  .why-media--dual .dual__small{ left:-2%; }
}

/* === CARTES "Pourquoi" (sous-pages) : image seule centrée + texte centré (V49) ===
   - Les cartes de droite (card--why-media) : uniquement l'image, centrée horizontalement & verticalement
   - Les cartes de gauche (card--why-text) : contenu centré dans les deux axes
*/
.card--why-media{
  display:flex;
  align-items:center;
  justify-content:center;
  padding: 18px;
}
.card--why-media .why-media-wrap{ 
  margin: 0;
}

.card--why-text{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
}
.card--why-text ul{
  list-style-position: inside;
  padding-left: 0;
  margin-left: 0;
}

/* === FORMATION : correctif visuel du double cercle (V52) ===
   Assure que la grande image est visible et que le petit cercle passe bien au-dessus.
*/
.why-media--dual{
  width: min(520px, 100%);
}
.why-media--dual .dual__big{ z-index: 1; }
.why-media--dual .dual__small{ z-index: 2; }

/* Traçés "néon" */
body[data-page="home"] .grid--3 .card:hover body[data-page="home"] .grid--3 .card body[data-page="home"] .grid--3 .card body[data-page="home"] .grid--3 .card /* === WORDMARK (Logo) : centrage media38.tv / INFORMATIQUE (V55) ===
   Objectif : aligner media38.tv au centre par rapport à INFORMATIQUE.
*/
.brand__wordmark{
  display:flex;
  flex-direction:column;
  align-items:center;   /* <- centrage horizontal */
  line-height: 1;
  font-family: var(--brand-wordmark-font);
  text-align:center;
}
.brand__top{ justify-content:center; }
.brand__bottom{ text-align:center; width:100%; }

/* Renforce le néon */
body[data-page="home"] .grid--3 .card body[data-page="home"] .grid--3 .card body[data-page="home"] .grid--3 .card /* Un poil plus visible en mouvement */
body[data-page="home"] .grid--3 .card:hover 

/* === HEADER : recentrage media38.tv au-dessus de INFORMATIQUE (V64) === */
.brand__wordmark{
  display: flex;
  flex-direction: column;
  align-items: center;      /* centre horizontalement media38.tv par rapport à INFORMATIQUE */
  justify-content: center;
  text-align: center;
}

.brand__wordmark .brand__top,
.brand__wordmark .brand__bottom{
  width: 100%;
}

/* =========================================================
   TARIFS (V67) — Tableau moderne (responsive) dans l'esprit "tech"
   - Les prix sont alignés à droite, lisibles
   - Sur mobile : table scrollable + lignes bien espacées
   ========================================================= */
.price-grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 18px;
}

.price-card{
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.10);
  box-shadow: 0 18px 55px rgba(0,0,0,.45);
}

.price-card__head{
  padding: 16px 16px 10px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(800px 280px at 10% 0%, rgba(213,0,0,0.18), transparent 60%),
    radial-gradient(800px 280px at 90% 0%, rgba(0,102,255,0.16), transparent 60%);
}

.price-card__head .h2{
  margin: 0 0 6px 0;
}

.price-table-wrap{
  padding: 10px 12px 14px 12px;
  overflow:visible;
}

.price-table{
  width:100%;
  border-collapse: collapse;
  min-width: 0; /* pas de scroll horizontal */
}

.price-table th,
.price-table td{
  padding: 10px 10px;
  vertical-align: top;
}

.price-table thead th{
  font-size: 12px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.72);
  border-bottom: 1px solid rgba(255,255,255,0.10);
}

.price-table tbody tr{
  border-bottom: 1px dashed rgba(255,255,255,0.10);
}

.price-table tbody tr:last-child{
  border-bottom: none;
}

.price-desc{
  color: rgba(255,255,255,0.92);
}

.price-val{
  white-space: nowrap;
  text-align: right;
  font-weight: 800;
  color: rgba(255,255,255,0.96);
}

.th-price{ text-align:right; }

.note.card--soft{
  margin-top: 18px;
  padding: 14px 16px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 18px;
}

@media (max-width: 980px){
  .price-grid{ grid-template-columns: 1fr; }
  .price-table{ min-width: 0; }
}

/* === TARIFS : lecture sans scroll (V68) ===
   Sur mobile, on empile Prestation / Prix pour éviter tout ascenseur horizontal.
*/
@media (max-width: 680px){
  .price-table{ width:100%; border-collapse: separate; border-spacing: 0 10px; }
  .price-table thead{ display:none; }
  .price-table tbody tr{
    display:grid;
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 12px 12px;
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 14px;
    background: rgba(0,0,0,0.12);
  }
  .price-table tbody td{ padding:0; }
  .price-val{
    text-align:left;
    font-size: 18px;
  }
  .price-desc{
    font-size: 14px;
    color: rgba(255,255,255,0.88);
  }
}

/* === TARIFS : alignement des 2 paragraphes d'intro (V68) === */
.section__head{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  align-items:start;
}
.section__head .h1,
.section__head .lead{
  grid-column: 1 / -1; /* titre + lead sur toute la largeur */
}
.section__head .small{
  margin: 0; /* évite décalage vertical */
}

@media (max-width: 900px){
  .section__head{ grid-template-columns: 1fr; }
}

/* === TARIFS : 2 lignes d'intro en style 'lead' (V72) === */
#tarifs-title + .lead{ margin-top: 10px; }
.section__head .lead + .lead{ margin-top: 12px; }

/* === HEADER : centrage robuste media38.tv / INFORMATIQUE (V73) ===
   Corrige définitivement le désalignement éventuel.
*/
.brand__wordmark{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  text-align:center !important;
}

.brand__top,
.brand__bottom{
  width:100%;
  display:block;
  text-align:center;
}

/* === TARIFS : espacement intro (V77) === */
.section__head .lead + .lead{ margin-top: 12px; }

/* === TARIFS : mise en bleu des prix (V79) === */
.price-val{
  color: var(--accent-blue) !important;
}

/* === TARIFS : encadré "Attention" fixe (V80) ===
   Empêche l'effet hover/translation appliqué aux .card ailleurs sur le site.
*/
.tarifs-page .note.card,
.tarifs-page .note.card--soft{
  transform: none !important;
  transition: none !important;
}
.tarifs-page .note.card:hover,
.tarifs-page .note.card--soft:hover{
  transform: none !important;
}

/* === FOOTER : icônes SVG bleues (V82) ===
   Icônes en SVG inline (meilleur rendu, plus pro, responsive).
*/
.footer-contact__item{
  display:flex;
  align-items:flex-start;
  gap:10px;
}

.footer-icon{
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  margin-top: 2px; /* alignement optique avec le texte */
  color: var(--red-site); }

/* === FOOTER : lignes contact + icônes SVG bleues (V83) === */
.footer-contact .footer-line{
  display:flex;
  align-items:flex-start;
  gap: 10px;
  margin: 10px 0;
}

.footer-contact .footer-line span{
  display:block;
}

.footer-icon{
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  margin-top: 3px; /* alignement optique */
  color: var(--red-site); }

/* === FOOTER : alignement colonnes + anti-retour ligne téléphone (V84) === */
.footer-grid{
  display:grid;
  grid-template-columns: 1.15fr 1fr 0.95fr; /* Contact un peu plus large */
  gap: 22px;
}

.footer-contact .footer-line span a[href^="tel:"],
.footer-contact .footer-line span a[href^="mailto:"]{
  white-space: nowrap; /* garde tel/mail sur une seule ligne */
}

.footer-services .footer-line--service a{
  display:inline-block;
}

/* Harmonise les lignes (Contact + Prestations) */
.footer-services .footer-line,
.footer-contact .footer-line{
  display:flex;
  align-items:flex-start;
  gap: 10px;
  margin: 10px 0;
}

/* Les icônes services utilisent le même bleu */
.footer-services .footer-icon{
  color: var(--red-site); }

/* Responsive : empile proprement */
@media (max-width: 900px){
  .footer-grid{
    grid-template-columns: 1fr;
  }
}

/* === FOOTER : alignement icônes + colonnes (V86) ===
   Objectifs :
   1) Icônes parfaitement alignées (dépannage compris)
   2) Téléphone sur une seule ligne
   3) On utilise l'espace à droite (padding-right réduit) sans toucher au bord gauche
*/
.footer .container{
  padding-right: 12px; /* exploite l'espace à droite (gauche inchangé) */
}

.footer-grid{
  grid-template-columns: 1.35fr 1fr 0.85fr; /* Contact plus large */
  gap: 16px; /* gap régulier et plus compact */
}

.footer-line{
  align-items: center; /* centre verticalement icône + texte */
}

.footer-icon{
  margin-top: 0 !important; /* aligne toutes les icônes pareil */
  align-self: center;
}

/* Empêche absolument le retour à la ligne sur le téléphone */
.footer-contact a[href^="tel:"]{
  white-space: nowrap !important;
}

/* === FOOTER : GRILLE RÉELLE (V87) ===
   Le footer utilise .footer__inner (pas footer-grid). On ajuste donc ici.
*/
.footer .footer__inner{
  display:grid;
  grid-template-columns: 1.05fr 1.35fr 1fr 0.9fr; /* media38.tv | Contact (large) | Prestations | À distance */
  gap: 18px;
  align-items:start;
}

/* Exploite un peu plus la largeur à droite sans toucher l'alignement à gauche */
.footer .container{
  padding-right: 10px;
}

/* Lignes (Contact + Prestations) : alignement parfait icône/texte */
.footer .footer-line{
  display:flex;
  align-items:center !important;
  gap:10px;
  margin:10px 0;
}

.footer .footer-icon{
  width:18px;
  height:18px;
  flex:0 0 18px;
  margin-top:0 !important;
  display:block;
}

/* Téléphone toujours sur une ligne */
.footer .footer-contact a[href^="tel:"]{
  white-space: nowrap !important;
}

/* Responsive : on repasse en 2 colonnes puis 1 colonne */
@media (max-width: 1100px){
  .footer .footer__inner{
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 700px){
  .footer .footer__inner{
    grid-template-columns: 1fr;
  }
}

/* === FOOTER : micro-alignement icône "Dépannage" (V88) ===
   L'icône dépannage a une empreinte optique différente -> on la recentre avec un léger décalage.
*/
.footer .footer-line--depannage .footer-icon{
  transform: translateX(-4px);
}

/* === BOUTONS : rouge identique au logo (V90) === */
.btn--primary,
.btn-primary,
.button-primary,
a.btn-primary{
  background-color: var(--brand-red) !important;
  border: 0;
}

.btn--primary:hover,
.btn-primary:hover,
.button-primary:hover,
a.btn-primary:hover{
  filter: brightness(1.05);
}

/* === HEADER : bouton téléphone réduit (V93) ===
   Réduction globale du bouton téléphone à droite du menu
   Sans impacter la lisibilité ni le responsive
*/

/* === HEADER : bouton téléphone -25% (V94) === */
.header a[href^="tel:"],

.header a[href^="tel:"] svg,

/* === NAV : bouton téléphone (CTA) - réduction forcée (V95) ===
   Le bouton téléphone est dans #navPanel et utilise .btn.btn--primary.
   On le réduit sans toucher aux autres boutons .btn--primary (ex: cartes/CTA).
*/
#navPanel a.btn.btn--primary[href^="tel:"]{
  padding: 7px 13px !important;   /* -25%+ */
  font-size: 0.8rem !important;
  border-radius: 12px !important;
}

#navPanel a.btn.btn--primary[href^="tel:"] .icon-phone svg{
  width: 14px !important;
  height: 14px !important;
}

/* === NAV : bouton téléphone — texte & icône plus grands (V96) ===
   On garde le bouton compact, mais on renforce la lisibilité du numéro.
*/
#navPanel a.btn.btn--primary[href^="tel:"]{
  font-size: 0.95rem !important;   /* texte + lisible */
  font-weight: 700 !important;
}

#navPanel a.btn.btn--primary[href^="tel:"] svg{
  width: 18px !important;          /* icône plus visible */
  height: 18px !important;
}

/* === NAV : bouton téléphone — lisibilité renforcée (V97) === */
#navPanel a.btn.btn--primary[href^="tel:"]{
  font-size: 1.05rem !important;   /* plus lisible sans agrandir le bouton */
  font-weight: 700 !important;
  letter-spacing: 0.5px;          /* meilleure lecture des chiffres */
}

#navPanel a.btn.btn--primary[href^="tel:"] svg{
  width: 20px !important;
  height: 20px !important;
}

/* === MEDIA : <picture> support pour les cartes images (V103) ===
   Permet d'utiliser WebP (perf) avec fallback JPG, tout en gardant les mêmes tailles / recadrages.
*/
.why-media picture,
.why-media picture img{
  display: block;
  width: 100%;
  height: 100%;
}
.why-media picture img{
  object-fit: cover;
}

/* === FIX : affichage images <picture> dans les cartes "why" (V105) ===
   Certaines cartes utilisent .dual + .dual__big avec <picture>. On force un layout
   identique à celui prévu pour <img> direct, pour éviter une image "invisible".
*/
.dual__big{
  position:absolute;
  inset:0;
  overflow:hidden;
  border-radius:26px;
}

.dual__big picture{
  display:block;
  width:100%;
  height:100%;
}

.dual__big picture img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* === MENTIONS LEGALES (V117) ===
   - Lien "Mentions légales" présent sur toutes les pages (footer)
   - Page mentions : carte unique (contenu), séparateurs
*/
.footer-legal-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color: var(--red-site);
  font-weight:700;
}
.footer-legal-link:hover{ text-decoration: underline; }
.footer-legal-icon{ display:inline-flex; color: var(--red-site); }

/* Assure l'alignement gauche/droite dans la barre footer, sans changer la marge globale */
.footer-bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
}
.footer-bottom__right{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:14px;
}

.legal-sep{
  border:0;
  height:1px;
  background: rgba(255,255,255,0.10);
  margin: 18px 0;
}
.legal-note{ opacity:.85; font-size:.95rem; }

/* === FOOTER : Mentions légales aligné en bas à droite (V118) ===
   On utilise une "barre" de bas de footer (footer-legal-row) pour garantir l'alignement
   sur toutes les pages, sans dépendre de la structure des colonnes.
*/
.footer-legal-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding: 0 0 26px;
}
.footer-legal-row .small{ margin:0; padding:0 !important; }
.footer-legal{ margin-left:auto; display:flex; align-items:center; gap:10px; justify-content:flex-end; text-align:right; }

.footer-legal-row .small{ margin:0; padding:0 !important; }

.footer-legal-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color: var(--red-site);
  font-weight:800;
  white-space:nowrap;
}
.footer-legal-link:hover{ text-decoration: underline; }
.footer-legal-icon{ display:inline-flex; color: var(--red-site); }

@media (max-width: 700px){
  .footer-legal-row{ flex-wrap:wrap; }
  .footer-legal-link{ white-space:normal; }
}

/* === PAGE MENTIONS : carte unique lisible (V118) ===
   La classe .callout est en flex (prévue pour Tarifs). Ici on garde le style,
   mais on repasse en block pour éviter que le texte sorte de la carte.
*/
.callout.legal-card{
  display:block;
  padding: 26px;
}
.callout.legal-card h2{
  margin: 18px 0 10px;
  font-size: 1.05rem;
  letter-spacing: .04em;
}
.callout.legal-card p{
  margin: 8px 0;
  overflow-wrap:anywhere;
  overflow-wrap: anywhere;
  word-break: normal;
}
.callout.legal-card a{
  color: var(--red-site);
  font-weight:800;
}
.callout.legal-card .legal-sep{
  border:0;
  height:1px;
  background: rgba(255,255,255,0.10);
  margin: 18px 0;
}
.callout.legal-card .legal-note{
  opacity:.85;
  font-size:.95rem;
}

/* Map embed helpers */
.map-embed{
  margin-top:14px;
  border-radius: var(--radius);
  overflow:hidden;
  border:1px solid rgba(190,186,191,.14);
}
.map-embed iframe{
  width:100%;
  height:100%;
  display:block;
  border:0;
}
.map-embed--square{
  max-width: 560px;
  margin-left:auto;
  margin-right:auto;
}
@supports (aspect-ratio: 1 / 1){
  .map-embed--square{ aspect-ratio: 1 / 1; }
}
@supports not (aspect-ratio: 1 / 1){
  .map-embed--square{ position:relative; height:0; padding-bottom:100%; }
  .map-embed--square iframe{ position:absolute; inset:0; }
}

/* UI FIXES */

/* UI FIXES – Brand red (forced override) */
:root {
  --c-primary: #8A201E;
}
.btn--primary{
  background-color: #8A201E !important;
}
.btn--primary:hover{
  background-color: #701816 !important;
}
.btn--primary:focus-visible{
  outline-color: #701816;
}

/* Navigation panel spacing */
.site-header .nav-panel{
  padding-left: 0;
  padding-right: 0;
}
@media (max-width: 900px){
  .site-header .nav-panel{
    padding-left: 0;
    padding-right: 0;
  }
}

/* === Cookie consent (RGPD) === */
#cookie-consent{
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(14,16,19,.95);
  border-top: 1px solid rgba(255,255,255,.12);
  padding: 14px;
  z-index: 9999;
  display: none;
}
#cookie-consent .cookie-inner{
  max-width: 1100px;
  margin: 0 auto;
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
}
#cookie-consent p{
  font-size: 14px;
  margin: 0;
}
#cookie-consent .actions{
  display: flex;
  gap: 10px;
}
#cookie-consent button{
  border-radius: 999px;
  padding: 8px 14px;
  border: 0;
  cursor: pointer;
}
#cookie-consent .accept{
  background: var(--brand-red);
  color: #fff;
}
#cookie-consent .refuse{
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255,255,255,.4);
}

/* === Carte statique simple (sans cookies) === */
.map-static{
  margin-top: 14px;
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid rgba(190,186,191,.14);
}
.map-static img{
  width: 100%;
  height: auto;
  object-fit: cover;
  display: block;
}

/* Carte statique (remplace Google Maps iframe) */
.map-embed .map-static{
  margin-top: 0;
  border: 0;
  border-radius: 0;
}
.map-embed .map-static img{
  width: 100%;
  height: auto;
  display: block;
}


/* Carte statique - lien + CTA */
.map-static__link{position:relative;display:block;color:inherit;text-decoration:none;}
.map-static__link:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:3px;}
.map-static__cta{position:absolute;left:12px;bottom:12px;display:inline-block;background:rgba(0,0,0,.62);backdrop-filter:saturate(120%) blur(6px);-webkit-backdrop-filter:saturate(120%) blur(6px);padding:8px 10px;border-radius:999px;font-weight:600;font-size:14px;line-height:1;}
@media (max-width: 640px){.map-static__cta{left:10px;bottom:10px;font-size:13px;padding:7px 9px;}}


/* === DWService OS buttons (Windows/Mac OS) === */
.btn.btn-os{ width:100%; }
.btn.btn-os .os-icon{ height:1.2em; width:auto; display:block; }
.btn.btn-os span{ line-height:1; }


/* --- Ordi38: OS download buttons (Windows / Mac OS) --- */
a.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
}

a.btn .os-icon {
  height: 1.2em; /* +20% vs 1em */
  width: auto;
  display: inline-block;
  vertical-align: middle;
}

a.btn .os-label {
  line-height: 1;
}



/* === FIX: DWService OS buttons alignment & size (override) === */
.btn.btn-os{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:0.55em;
  width:100%;
}
.btn.btn-os .os-icon{
  height:1.2em; /* +20% */
  width:auto;
  display:inline-block;
  flex:0 0 auto;
}
.btn.btn-os span{
  line-height:1;
}



/* === HOME : carte vidéo 16:9 (2026-02-10) === */
.intro-video{
  padding: 18px 0 8px;
}

.intro-video .media-card{
  width: 100%;
  border-radius: 18px;
  overflow: hidden;
  background: rgba(10, 12, 14, .55);
  border: 1px solid rgba(190,186,191,.14);
  box-shadow: 0 18px 40px rgba(0,0,0,.35);
}

.intro-video .media-card__video{
  width: 100%;
  display: block;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: #000;
}

/* Fallback si aspect-ratio n'est pas supporté */
@supports not (aspect-ratio: 16 / 9){
  .intro-video .media-card{
    position: relative;
    padding-top: 56.25%; /* 16:9 */
  }
  .intro-video .media-card__video{
    position: absolute;
    inset: 0;
    height: 100%;
  }
}


/* === FOOTER : pictos en rouge NEWS (2026-02-10) === */
.footer .footer-icon,
.footer .footer-legal-icon{
  color: var(--brand-red) !important;
}


/* === Footer : pictos en rouge site === */
footer i,
footer i::before,
footer svg,
footer svg path {
  color: var(--red-site);
  fill: var(--red-site);
}

/* === Footer : liens légaux alignement Ordi38 === */
.footer-legal {
  display: flex;
  margin-left: auto;
  gap: 10px;
  align-items: center;
  text-align: right;
}

.footer-legal a {
  white-space: nowrap;
}




/* === Accueil : carte + vidéo (vidéo à droite, carte à gauche) === */
.intro-hero{
  display: flex;
  gap: 18px;
  align-items: stretch; /* carte = même hauteur que la vidéo */
}

.intro-hero__video{
  flex: 0 0 56%;
  margin-left: auto; /* colle la vidéo à droite */
}

.media-card--video{
  overflow: hidden;
}

.media-card__video{
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

/* Carte style "tarifs Ordi38" : 2 parties (entête + contenu) */
.info-card{
  flex: 1;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 10px 30px rgba(0,0,0,.12);
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  display: flex;
  flex-direction: column;
}

.info-card__head{
  padding: 16px 18px;
  background: linear-gradient(135deg, rgba(0,160,255,.95), rgba(0,85,170,.95));
}

.info-card__title{
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.2;
  color: #fff;
}

.info-card__body{
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.info-card__body p{
  margin: 0;
}

.info-card__note{
  opacity: .9;
  font-weight: 600;
}

/* Responsive : empilement propre mobile/tablette */
@media (max-width: 900px){
  .intro-hero{
    flex-direction: column;
  }
  .intro-hero__video{
    flex: 0 0 auto;
    margin-left: 0;
  }
}

/* Ajustement alignement logo / wordmark */
.brand{ display:flex; align-items:center; gap:10px; }
.brand__wordmark{ display:flex; flex-direction:column; justify-content:center; }

.brand__top{ margin-left:-4px; }


/* Liens légaux : soulignés en permanence */
.footer-legal-link,
.footer-legal-link:visited,
.footer-legal-link:hover,
.footer-legal-link:focus {
  text-decoration: underline !important;
}


/* Bouton envoyer – formulaire de contact */
form button[type="submit"],
form input[type="submit"] {
  background-color: var(--accent-blue) !important;
  border-color: var(--accent-blue) !important;
  color: #fff !important;
}


/* === Accueil : cartes produits (après vidéo) === */
.home-products{
  padding: 22px 0 8px;
}
.home-products__grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.product-card{
  display:block;
  border-radius: 24px;
  overflow:hidden;
  background: var(--c-surface-2, #0E1013);
  border: 1px solid rgba(255,255,255,0.10);
  text-decoration:none;
  color: inherit;
  box-shadow: 0 10px 30px rgba(0,0,0,0.20);
}
.product-card__head{
  padding: 14px 16px;
}
.product-card__title{
  margin:0;
  font-size: 20px;
  line-height: 1.2;
  letter-spacing: .2px;
}
.product-card__media{
  aspect-ratio: 1 / 1;
  background: transparent;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.product-card__media img{
  max-width: 92%;
  max-height: 92%;
  width:auto;
  height:auto;
  object-fit: contain;
  transform: scale(1);
  transition: transform .28s ease;
}
.product-card:hover .product-card__media img{
  max-width: 92%;
  max-height: 92%;
  width:auto;
  height:auto;
  object-fit: contain;
  transform: scale(1);
  transition: transform .28s ease;
}
.product-card:focus-visible{
  outline: 3px solid rgba(214,5,10,0.55);
  outline-offset: 3px;
}

@media (max-width: 980px){
  .home-products__grid{ grid-template-columns: 1fr; }
  .product-card__title{ font-size: 18px; }
  .home-products{ padding: 16px 0 6px; }
}




/* Cartes produits : centrer UNIQUEMENT les titres */
.product-card__head .h2{
  text-align: center;
}


/* Accueil – centrage du titre de la carte vidéo */
.info-card__title{
  text-align: center;
}





/* === Fond contenu principal aligné avec le footer === */
main,
.page,
.page-content,
.content,
.section,
.section-dark,
.container > section{
  background: rgba(20,22,24,0.92);
}




/* === Contenu : fond aligné footer (demandé) === */
.info-card,
.media-card,
.product-card,
.price-card,
.why-card,
.card,
.section-card{
  background: rgba(20,22,24,0.92) !important;
}

.info-card .info-card,
.media-card .media-card,
.product-card .product-card,
.price-card .price-card{
  background: rgba(20,22,24,0.92) !important;
}








/* Header : même teinte que le footer, sans mélange (pas de blur) */
.site-header,
.site-header[data-scrolled="true"],
header.site-header,
header{
  background: rgba(20,22,24,0.92) !important;
  background-color: rgba(20,22,24,0.92) !important;
  backdrop-filter: none !important;
}

/* Panneau menu / navbar */
.site-header .navbar,
.site-header .nav-panel{
  background: rgba(20,22,24,0.92) !important;
  background-color: rgba(20,22,24,0.92) !important;
}

/* Footer : teinte validée */
.footer,
footer.footer,
footer{
  background: rgba(20,22,24,0.92) !important;
  background-color: rgba(20,22,24,0.92) !important;
}


/* === Fonds (validé) : pages blanc cassé + header à la teinte du footer === */
html,
body{
  background: #f4f4f2 !important;
}

body{
  color: #141618 !important;
}

/* Footer : teinte validée (conservée) */
.footer,
footer.footer,
footer{
  background: rgba(20,22,24,0.92) !important;
  background-color: rgba(20,22,24,0.92) !important;
}

/* Header : couleur SOLIDE pour éviter l'effet plus sombre selon le contenu derrière */
.site-header,
.site-header[data-scrolled="true"],
header.site-header,
header{
  background: #272A2B !important;
  background-color: #272A2B !important;
  backdrop-filter: none !important;
}

/* Navbar / panneau menu */
.site-header .navbar,
.site-header .nav-panel{
  background: #272A2B !important;
  background-color: #272A2B !important;
}



/* Tagline (à côté du logo) : ombre rouge dégradée sur "Votre média local" */
.brand__bottom{
  position: relative;
  display: inline-block;
}

.brand__bottom::before{
  content: attr(data-text);
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(214,5,10,0.95), rgba(214,5,10,0.35), rgba(214,5,10,0.95));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: blur(6px);
  opacity: 0.85;
  transform: translateY(1px);
  pointer-events: none;
}



/* Footer : titres en bleu et gras */
footer h3,
footer h4,
footer h5,
footer .footer-title{
  color: var(--accent-blue) !important;
  font-weight: 700 !important;
}









/* Bandeau titre : ROUGE dégradé (comme Tarifs) */
.home-products /* Zone photo : ANTHRACITE */
.home-products .product-card__media--home{
  background: #A6A6A6 !important;
  background-color: #A6A6A6 !important;
  padding: 18px;
  box-sizing: border-box;
  border-top: 1px solid rgba(255,255,255,0.08);
}

.home-products .product-card__media--home img{
  display:block;
  margin: 0 auto;
  max-width: 100%;
  max-height: 100%;
}



/* Bandeau titre : rouge clair dégradé */
.home-products /* Zone photo : gris anthracite CLAIR */
.home-products .product-card__media--home{
  background: #A6A6A6 !important;
  background-color: #A6A6A6 !important;
  padding: 18px;
  box-sizing: border-box;
  border-top: 1px solid rgba(255,255,255,0.12);
}

.home-products .product-card__media--home img{
  display:block;
  margin: 0 auto;
  max-width: 100%;
  max-height: 100%;
}


/* === Accueil : cartes produits (clair affiné) === */
/* Bandeau titre : rouge TRÈS clair dégradé (reste rouge, pas rose) */
.home-products /* Zone photo : gris très clair */
.home-products .product-card__media--home{
  background: #A6A6A6 !important;
  background-color: #A6A6A6 !important;
  padding: 18px;
  box-sizing: border-box;
  border-top: 1px solid rgba(255,255,255,0.18);
}

.home-products .product-card__media--home img{
  display:block;
  margin: 0 auto;
  max-width: 100%;
  max-height: 100%;
}




/* Menu hover : remplacer le gris par un bleu très très clair (demandé) */
/* Cible exacte du menu actuel */
.nav-panel a:hover,
.nav-panel a:focus-visible{
  background: rgba(19,100,231,0.12) !important;
  color: var(--c-text) !important;
}

.dropdown__btn:hover,
.dropdown__btn:focus-visible{
  background: rgba(19,100,231,0.12) !important;
  color: var(--c-text) !important;
}

.nav-panel a[data-active="true"]{
  background: rgba(19,100,231,0.12) !important;
  border-color: rgba(19,100,231,0.22) !important;
}


/* Évite tout flash blanc pendant le bouclage vidéo */
video{ background: #000; }

/* === Google Map iframe (Contact) === */
.map-static iframe{
  width: 100%;
  height: clamp(260px, 40vw, 460px);
  border: 0;
  display: block;
  background: #000; /* évite tout flash blanc */
}
.map-static__actions{
  padding: 12px;
  background: rgba(14,16,19,.35);
  border-top: 1px solid rgba(190,186,191,.12);
  display:flex;
  justify-content:flex-start;
}
.map-static__btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid rgba(190,186,191,.18);
  background: rgba(0,0,0,.35);
  color: var(--c-text);
  font-weight: 700;
  text-decoration: none;
}
.map-static__btn:hover{ background: rgba(0,0,0,.55); }
.map-static__btn:focus-visible{ outline:2px solid rgba(255,255,255,.85); outline-offset:3px; }


/* =========================================================
   ACCUEIL – DÉGRADÉ BLEU DES 3 CARTES (header)
   Direction : gauche → droite en oblique
   ========================================================= */
.home-gradient-card .product-card__head--home.price-card__head{
  background: linear-gradient(135deg, #0b4d9b 0%, #1e90ff 55%, #6bb7ff 100%);
}


/* =========================================================
   ACCUEIL – HEADER DES CARTES (Ecrans intérieur / extérieur / Supports)
   Dégradé bleu oblique gauche → droite
   ========================================================= */
.product-card__head--home{
  background: linear-gradient(135deg, #0b4d9b 0%, #1e90ff 55%, #6bb7ff 100%) !important;
  color: #fff !important;
  text-align: center;
}



/* =========================================================
   ACCUEIL – VIDÉO HERO : afficher la vidéo en entier (pas de crop)
   + Harmoniser le format des 2 cartes (texte à gauche / vidéo à droite)
   ========================================================= */
@media (min-width: 981px){
  .intro-hero{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    align-items: stretch;
  }
  .intro-hero__video{
    margin-left: 0;
    flex: initial;
  }

  /* Même format (ratio) pour les deux cartes */
  .intro-hero > .info-card,
  .intro-hero__video.media-card--video{
    aspect-ratio: 16 / 9;
  }

  /* Le texte reste lisible dans le même format */
  .info-card{ display:flex; flex-direction:column; }
  

  /* Vidéo : visible en entier, fond noir */
  .intro-hero__video .media-card__video{
    object-fit: contain;
    background: #000;
  }
}
