/**
Theme Name: Astra Child
Author: Brainstorm Force
Author URI: http://wpastra.com/about/
Description: Astra is the fastest, fully customizable & beautiful theme suitable for blogs, personal portfolios and business websites. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with schema.org code integrated so search engines will love your site. Astra offers plenty of sidebar options and widget areas giving you a full control for customizations. Furthermore, we have included special features and templates so feel free to choose any of your favorite page builder plugin to create pages flexibly. Some of the other features: # WooCommerce Ready # Responsive # Compatible with major plugins # Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and beautiful theme!
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: astra-child
Template: astra
*/

/* ============================================================
   VARIABLES GLOBALES — Océan Digital child theme
   Overridables depuis le Customizer Astra ou par page
   ============================================================ */

:root {
  --od-primary:        #1a56db;   /* bleu principal */
  --od-primary-dark:   #1040b0;
  --od-primary-light:  #e8f0fe;
  --od-accent:         #f97316;   /* orange CTA */
  --od-text:           #1e293b;
  --od-text-muted:     #64748b;
  --od-bg:             #ffffff;
  --od-bg-alt:         #f8fafc;
  --od-border:         #e2e8f0;
  --od-radius:         10px;
  --od-radius-lg:      16px;
  --od-shadow:         0 2px 12px rgba(0,0,0,.08);
  --od-shadow-hover:   0 6px 24px rgba(0,0,0,.13);
  --od-gap:            1.5rem;
  --od-transition:     .22s ease;
}

/* ============================================================
   LUCIDE ICONS — Rendu uniforme sur tous les sites
   Les icônes sont injectées via <i data-lucide="..."> ou emoji.
   On cible .od-icon pour un affichage cohérent.
   ============================================================ */

.od-icon,
.benefit-icon,
.reassurance-icon,
.argument-icon,
.service-associe-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  font-size: 1.5rem;
  line-height: 1;
}

/* Lucide SVG natif */
.od-icon svg,
.benefit-icon svg,
.reassurance-icon svg,
.argument-icon svg,
.service-associe-icon svg {
  width: 28px;
  height: 28px;
  stroke-width: 1.75;
}

/* Icône dans cercle coloré */
.od-icon-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--od-primary-light);
  color: var(--od-primary);
  font-size: 1.5rem;
  flex-shrink: 0;
}
.od-icon-circle svg {
  width: 26px;
  height: 26px;
  stroke: var(--od-primary);
  stroke-width: 2;
}

/* ============================================================
   [hero_benefits] — Grille bénéfices hero
   ============================================================ */

.hero-benefits {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--od-gap);
  margin: 2rem 0;
}

.benefit-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .6rem;
  padding: 1.5rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius);
  box-shadow: var(--od-shadow);
  transition: box-shadow var(--od-transition), transform var(--od-transition);
}

.benefit-item:hover {
  box-shadow: var(--od-shadow-hover);
  transform: translateY(-2px);
}

.benefit-icon {
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: var(--od-primary-light);
  color: var(--od-primary);
  font-size: 1.4rem;
}

.benefit-icon svg {
  width: 24px;
  height: 24px;
  stroke: var(--od-primary);
}

.benefit-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--od-text);
  margin: 0;
  line-height: 1.3;
}

.benefit-desc {
  font-size: .88rem;
  color: var(--od-text-muted);
  margin: 0;
  line-height: 1.55;
}

/* ============================================================
   [hero_reassurance] — Barre de réassurance
   ============================================================ */

.reassurance-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 1rem 2rem;
  padding: 1rem 1.5rem;
  background: var(--od-bg-alt);
  border-top: 1px solid var(--od-border);
  border-bottom: 1px solid var(--od-border);
  margin: 1.5rem 0;
}

.reassurance-item {
  display: flex;
  align-items: center;
  gap: .5rem;
  cursor: default;
}

.reassurance-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: var(--od-primary);
  font-size: 1.1rem;
  flex-shrink: 0;
}

.reassurance-icon svg {
  width: 20px;
  height: 20px;
  stroke: var(--od-primary);
}

.reassurance-text {
  font-size: .88rem;
  font-weight: 600;
  color: var(--od-text);
  white-space: nowrap;
}

/* ============================================================
   [sous_services] — Grille sous-services
   ============================================================ */

.sous-services {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--od-gap);
  margin: 2rem 0;
}

.sous-service-item {
  display: flex;
  flex-direction: column;
  gap: .6rem;
  padding: 1.75rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius-lg);
  border-left: 4px solid var(--od-primary);
  box-shadow: var(--od-shadow);
  transition: box-shadow var(--od-transition), transform var(--od-transition);
}

.sous-service-item:hover {
  box-shadow: var(--od-shadow-hover);
  transform: translateY(-2px);
}

.sous-service-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--od-text);
  margin: 0;
}

.sous-service-desc {
  font-size: .88rem;
  color: var(--od-text-muted);
  margin: 0;
  flex: 1;
  line-height: 1.6;
}

.sous-service-link {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-top: .5rem;
  font-size: .85rem;
  font-weight: 600;
  color: var(--od-primary);
  text-decoration: none;
  transition: gap var(--od-transition), color var(--od-transition);
}

.sous-service-link:hover {
  gap: .6rem;
  color: var(--od-primary-dark);
}

.sous-service-link::after {
  content: "→";
  font-size: .9em;
}

/* ============================================================
   [etapes_processus] — Étapes du processus
   ============================================================ */

.etapes-processus {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--od-gap);
  margin: 2rem 0;
  counter-reset: etapes;
  position: relative;
}

/* Ligne de connexion entre étapes (desktop) */
@media (min-width: 768px) {
  .etapes-processus {
    position: relative;
  }
  .etapes-processus::before {
    content: "";
    position: absolute;
    top: 28px;
    left: 2rem;
    right: 2rem;
    height: 2px;
    background: linear-gradient(90deg, var(--od-primary), var(--od-primary-light));
    z-index: 0;
  }
}

.etape-item {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  padding: 1.5rem 1.25rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius);
  box-shadow: var(--od-shadow);
}

.etape-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--od-primary);
  color: #fff;
  font-size: .9rem;
  font-weight: 800;
  margin-bottom: .25rem;
  flex-shrink: 0;
}

.etape-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--od-text);
  margin: 0;
}

.etape-desc {
  font-size: .85rem;
  color: var(--od-text-muted);
  margin: 0;
  line-height: 1.55;
  flex: 1;
}

.etape-duree {
  display: inline-block;
  margin-top: .5rem;
  padding: .2rem .65rem;
  background: var(--od-primary-light);
  color: var(--od-primary);
  font-size: .75rem;
  font-weight: 700;
  border-radius: 20px;
  letter-spacing: .01em;
}

/* ============================================================
   [arguments_why_us] — Grille arguments "Pourquoi nous"
   ============================================================ */

.arguments-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--od-gap);
  margin: 2rem 0;
}

.argument-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  padding: 1.75rem 1.5rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius-lg);
  box-shadow: var(--od-shadow);
  transition: box-shadow var(--od-transition), transform var(--od-transition);
}

.argument-item:hover {
  box-shadow: var(--od-shadow-hover);
  transform: translateY(-3px);
}

.argument-icon {
  width: 52px;
  height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: var(--od-primary-light);
  color: var(--od-primary);
  font-size: 1.5rem;
  margin-bottom: .25rem;
}

.argument-icon svg {
  width: 26px;
  height: 26px;
  stroke: var(--od-primary);
}

.argument-chiffre {
  font-size: 2rem;
  font-weight: 900;
  color: var(--od-primary);
  line-height: 1;
  letter-spacing: -.02em;
}

.argument-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--od-text);
  margin: 0;
}

.argument-desc {
  font-size: .85rem;
  color: var(--od-text-muted);
  margin: 0;
  line-height: 1.6;
}

/* ============================================================
   [temoignages] — Grille témoignages
   ============================================================ */

.temoignages {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--od-gap);
  margin: 2rem 0;
}

.temoignage-item {
  display: flex;
  flex-direction: column;
  gap: .6rem;
  padding: 1.75rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius-lg);
  box-shadow: var(--od-shadow);
  position: relative;
}

.temoignage-item::before {
  content: "\201C";
  position: absolute;
  top: .75rem;
  left: 1.25rem;
  font-size: 4rem;
  line-height: 1;
  color: var(--od-primary-light);
  font-family: Georgia, serif;
  pointer-events: none;
}

.temoignage-texte {
  font-size: .93rem;
  color: var(--od-text);
  margin: 0;
  padding-top: 1.5rem;
  line-height: 1.65;
  font-style: italic;
}

.temoignage-stars {
  font-size: 1rem;
  color: #f59e0b;
  letter-spacing: .05em;
}

.temoignage-auteur {
  font-size: .85rem;
  font-weight: 700;
  color: var(--od-text);
}

.temoignage-source {
  font-size: .75rem;
  color: var(--od-text-muted);
  font-style: italic;
}

/* ============================================================
   [tarifs_grille] — Grille tarifaire
   ============================================================ */

.tarifs-grille {
  display: flex;
  flex-direction: column;
  gap: .6rem;
  margin: 2rem 0;
}

.tarif-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .5rem;
  padding: 1rem 1.5rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius);
  box-shadow: var(--od-shadow);
  transition: background var(--od-transition);
}

.tarif-item:hover {
  background: var(--od-bg-alt);
}

.tarif-prestation {
  font-size: .95rem;
  font-weight: 600;
  color: var(--od-text);
}

.tarif-prix {
  font-size: .95rem;
  font-weight: 700;
  color: var(--od-primary);
  white-space: nowrap;
}

/* ============================================================
   [zone_villes] — Grille villes d'intervention
   ============================================================ */

.zone-villes {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: .75rem;
  margin: 2rem 0;
}

.zone-ville-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .3rem;
  padding: 1rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius);
  text-align: center;
  transition: background var(--od-transition), border-color var(--od-transition), transform var(--od-transition);
}

.zone-ville-item:hover {
  background: var(--od-primary-light);
  border-color: var(--od-primary);
  transform: translateY(-2px);
}

.zone-ville-item a {
  text-decoration: none;
}

.zone-ville-title {
  font-size: .9rem;
  font-weight: 700;
  color: var(--od-primary);
  margin: 0;
  transition: color var(--od-transition);
}

.zone-ville-item:hover .zone-ville-title {
  color: var(--od-primary-dark);
}

.zone-ville-distance {
  font-size: .75rem;
  color: var(--od-text-muted);
}

/* ============================================================
   [faq_section] — FAQ accordion-style
   ============================================================ */

.faq-section {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  margin: 2rem 0;
}

.faq-item {
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius);
  overflow: hidden;
  background: var(--od-bg);
  box-shadow: var(--od-shadow);
}

.faq-question {
  font-size: .97rem;
  font-weight: 700;
  color: var(--od-text);
  margin: 0;
  padding: 1.1rem 1.5rem;
  cursor: pointer;
  position: relative;
  padding-right: 3rem;
  line-height: 1.4;
  border-bottom: 1px solid transparent;
  transition: background var(--od-transition), border-color var(--od-transition);
}

.faq-question:hover {
  background: var(--od-bg-alt);
}

/* Chevron CSS pur */
.faq-question::after {
  content: "";
  position: absolute;
  right: 1.25rem;
  top: 50%;
  transform: translateY(-50%) rotate(45deg);
  width: 9px;
  height: 9px;
  border-right: 2px solid var(--od-primary);
  border-bottom: 2px solid var(--od-primary);
  transition: transform var(--od-transition);
}

/* État ouvert : JavaScript ajoute .faq-open */
.faq-item.faq-open .faq-question {
  border-bottom-color: var(--od-border);
  background: var(--od-primary-light);
  color: var(--od-primary);
}

.faq-item.faq-open .faq-question::after {
  transform: translateY(-50%) rotate(-135deg);
}

.faq-reponse {
  display: none;
  padding: 1.1rem 1.5rem;
  font-size: .9rem;
  color: var(--od-text-muted);
  line-height: 1.7;
}

.faq-reponse p {
  margin: 0 0 .75rem;
}

.faq-reponse p:last-child {
  margin-bottom: 0;
}

.faq-item.faq-open .faq-reponse {
  display: block;
}

/* ============================================================
   [services_associes] — Grille services associés
   ============================================================ */

.services-associes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--od-gap);
  margin: 2rem 0;
}

.service-associe-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  padding: 1.5rem;
  background: var(--od-bg);
  border: 1px solid var(--od-border);
  border-radius: var(--od-radius-lg);
  box-shadow: var(--od-shadow);
  transition: box-shadow var(--od-transition), transform var(--od-transition);
}

.service-associe-item:hover {
  box-shadow: var(--od-shadow-hover);
  transform: translateY(-2px);
}

.service-associe-icon {
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: var(--od-primary-light);
  color: var(--od-primary);
  font-size: 1.4rem;
}

.service-associe-icon svg {
  width: 24px;
  height: 24px;
  stroke: var(--od-primary);
}

.service-associe-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--od-text);
  margin: 0;
}

.service-associe-desc {
  font-size: .85rem;
  color: var(--od-text-muted);
  margin: 0;
  flex: 1;
  line-height: 1.6;
}

.service-associe-link {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-top: .5rem;
  font-size: .85rem;
  font-weight: 600;
  color: var(--od-primary);
  text-decoration: none;
  transition: gap var(--od-transition);
}

.service-associe-link:hover {
  gap: .6rem;
}

.service-associe-link::after {
  content: "→";
}

/* ============================================================
   RESPONSIVE — Ajustements mobiles globaux
   ============================================================ */

@media (max-width: 600px) {
  .hero-benefits,
  .sous-services,
  .etapes-processus,
  .arguments-grid,
  .temoignages,
  .services-associes {
    grid-template-columns: 1fr;
  }

  .reassurance-bar {
    flex-direction: column;
    align-items: flex-start;
    gap: .75rem;
  }

  .tarif-item {
    flex-direction: column;
    align-items: flex-start;
  }

  .zone-villes {
    grid-template-columns: repeat(2, 1fr);
  }
}
