/*======================================================*/
/*  Delisou services — couche "modern refresh" (2026)    */
/*  Surcouche par-dessus w3.css : typo, hero, cartes,    */
/*  animations au défilement, boutons.                   */
/*======================================================*/

/*-------------------*/
/* Typographie       */
/*-------------------*/
body,
.w3-button,
input,
p {
   font-family: 'Poppins', Verdana, sans-serif;
   -webkit-font-smoothing: antialiased;
   text-rendering: optimizeLegibility;
}

html {
   scroll-behavior: smooth;
}

/*===============================================*/
/* NAVBAR moderne — sticky, animée, responsive    */
/*===============================================*/
/* Décale le contenu sous le menu fixe (hauteur du logo + paddings). */
body { padding-top: 64px; }
html { scroll-padding-top: 72px; }

.dl-nav {
   position: fixed;
   top: 0;
   left: 0;
   right: 0;
   z-index: 1000;
   background: rgba(255, 255, 255, 0.92);
   -webkit-backdrop-filter: saturate(180%) blur(12px);
   backdrop-filter: saturate(180%) blur(12px);
   border-bottom: 1px solid rgba(0, 0, 0, 0.06);
   transition: box-shadow .3s ease, background .3s ease;
   /* Force le menu sur sa propre couche GPU : en position:fixed cela
      l'empêche de "disparaître" au survol des sections parallaxe
      (background-attachment:fixed) ou des animations (hero Ken Burns)
      — bug de composition connu de Chrome. */
   transform: translateZ(0);
   -webkit-transform: translateZ(0);
}

.dl-nav.dl-scrolled {
   background: rgba(255, 255, 255, 0.97);
   box-shadow: 0 6px 24px rgba(0, 0, 0, 0.10);
}

.dl-nav-inner {
   display: flex;
   align-items: center;
   gap: 16px;
   max-width: 1240px;
   margin: 0 auto;
   padding: 9px 22px;
}

.dl-logo {
   display: flex;
   align-items: center;
   flex: 0 0 auto;
}

.dl-logo img {
   height: 46px;
   width: auto;
   transition: transform .3s ease;
}

.dl-logo:hover img { transform: scale(1.05); }

.dl-links {
   display: flex;
   align-items: center;
   gap: 2px;
   margin-left: auto;
}

/* Liens de navigation + soulignement animé */
.dl-link {
   position: relative;
   display: inline-flex;
   align-items: center;
   gap: 8px;
   padding: 10px 14px;
   border-radius: 10px;
   color: #2b2b2b !important;
   font-weight: 500;
   font-size: 15px;
   text-decoration: none;
   white-space: nowrap;
   transition: color .25s ease, background .25s ease;
}

.dl-link i { font-size: 16px; opacity: .85; }

.dl-link::after {
   content: "";
   position: absolute;
   left: 14px;
   right: 14px;
   bottom: 6px;
   height: 2px;
   border-radius: 2px;
   background: #ff9800;
   transform: scaleX(0);
   transform-origin: left;
   transition: transform .28s ease;
}

.dl-link:hover { color: #ff9800 !important; }
.dl-link:hover::after { transform: scaleX(1); }

.dl-link.dl-active {
   color: #ff9800 !important;
   background: rgba(255, 152, 0, 0.10);
}

.dl-link.dl-active::after { transform: scaleX(1); }

/* Bouton CTA dans la barre */
.dl-cta {
   display: inline-flex;
   align-items: center;
   margin-left: 10px;
   padding: 10px 22px;
   border: none;
   cursor: pointer;
   font-family: inherit;
   border-radius: 50px;
   background: #ff9800;
   color: #fff !important;
   font-weight: 600;
   font-size: 15px;
   text-decoration: none;
   white-space: nowrap;
   box-shadow: 0 6px 16px rgba(255, 152, 0, 0.40);
   transition: transform .25s ease, box-shadow .25s ease, background .25s ease;
}

.dl-cta:hover {
   background: #ffb13d;
   transform: translateY(-2px);
   box-shadow: 0 10px 22px rgba(255, 152, 0, 0.50);
}

/* Réseaux sociaux */
.dl-social {
   display: flex;
   align-items: center;
   gap: 8px;
   margin-left: 10px;
}

.dl-social a {
   color: #9aa0a6 !important;
   font-size: 22px;
   line-height: 1;
   transition: color .25s ease, transform .25s ease;
}

.dl-social a:hover { color: #ff9800 !important; transform: translateY(-2px); }

/* Bloc contact : affiché uniquement dans le menu mobile */
.dl-mobile-contact { display: none; }

/* Burger animé */
.dl-burger {
   display: none;
   flex-direction: column;
   justify-content: center;
   gap: 5px;
   width: 46px;
   height: 46px;
   margin-left: auto;
   padding: 0;
   border: none;
   background: transparent;
   cursor: pointer;
}

.dl-burger span {
   display: block;
   width: 26px;
   height: 3px;
   border-radius: 3px;
   background: #ff9800;
   transition: transform .3s ease, opacity .3s ease;
}

.dl-open .dl-burger span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.dl-open .dl-burger span:nth-child(2) { opacity: 0; }
.dl-open .dl-burger span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* Tablette : on garde les icônes, on masque le texte pour gagner de la place */
@media (min-width: 901px) and (max-width: 1180px) {
   .dl-link span { display: none; }
   .dl-link { padding: 10px 12px; }
   .dl-link i { font-size: 18px; opacity: 1; }
   .dl-link::after { left: 10px; right: 10px; }
}

/* Mobile : menu déroulant */
@media (max-width: 900px) {
   .dl-burger { display: flex; }

   .dl-links {
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
      flex-direction: column;
      align-items: stretch;
      gap: 2px;
      margin: 0;
      padding: 10px 14px 18px;
      background: #fff;
      border-bottom: 1px solid rgba(0, 0, 0, 0.08);
      box-shadow: 0 18px 30px rgba(0, 0, 0, 0.12);
      max-height: 0;
      overflow: hidden;
      opacity: 0;
      pointer-events: none;
      transform: translateY(-8px);
      transition: max-height .35s ease, opacity .3s ease, transform .3s ease;
   }

   .dl-open .dl-links {
      max-height: 88vh;
      overflow-y: auto;
      opacity: 1;
      pointer-events: auto;
      transform: translateY(0);
   }

   .dl-link { font-size: 16px; padding: 14px; }
   .dl-link i { width: 22px; text-align: center; }
   .dl-link::after { display: none; }

   .dl-mobile-contact {
      display: flex;
      flex-direction: column;
      gap: 2px;
      margin-top: 8px;
      padding-top: 8px;
      border-top: 1px solid rgba(0, 0, 0, 0.08);
   }

   .dl-cta {
      justify-content: center;
      margin: 14px 0 4px;
      padding: 14px;
   }

   .dl-social {
      justify-content: center;
      margin-top: 8px;
   }

   .dl-social a { font-size: 28px; }
}

/*-------------------------------------*/
/* HERO — image + dégradé + animation  */
/*-------------------------------------*/
.delisou-hero {
   position: relative;
   min-height: 86vh;
   background-size: cover;
   background-position: center;
   background-repeat: no-repeat;
   overflow: hidden;
   /* On positionne le contenu en flex (et non via les classes w3-display-*),
      sinon le « position: relative » ci-dessous neutralise leur position:absolute
      et le left:50% / right:0 décale le texte hors de l'écran. */
   display: flex;
   align-items: center;
   justify-content: flex-end;
}

/* Voile dégradé pour la lisibilité du texte */
.delisou-hero::before {
   content: "";
   position: absolute;
   inset: 0;
   background: linear-gradient(120deg,
               rgba(0, 0, 0, 0.55) 0%,
               rgba(0, 0, 0, 0.20) 45%,
               rgba(255, 153, 0, 0.25) 100%);
   z-index: 1;
}

/* Léger zoom lent de l'image pour un effet vivant.
   On anime le background-size (et non un transform sur tout le bloc),
   sinon le contenu aligné à droite est poussé hors de l'écran et coupé. */
.delisou-hero {
   animation: delisou-kenburns 18s ease-in-out infinite alternate;
}

@keyframes delisou-kenburns {
   from { background-size: cover; }
   to   { background-size: 112%; }
}

.delisou-hero-content {
   /* On annule le positionnement absolu hérité de w3-display-middle/right :
      c'est le flex du conteneur qui place désormais le contenu. */
   position: static;
   top: auto;
   left: auto;
   right: auto;
   bottom: auto;
   z-index: 2;
   max-width: min(560px, 92vw);
   padding: 0 28px;
   text-align: right;
   animation: delisou-fade-up 1s ease both;
}

.delisou-hero-title {
   line-height: 1.2;
   /* Taille fluide : remplace le w3-xxxlarge/xxlarge fixe (!important) pour
      rester lisible et ne jamais déborder, du mobile au grand écran. */
   font-size: clamp(1.6rem, 4.5vw, 3rem) !important;
   text-shadow: 0 2px 18px rgba(0, 0, 0, 0.45);
   font-weight: 600;
   overflow-wrap: break-word;
}

.delisou-hero-title u {
   text-decoration-color: #ff9800;
   text-underline-offset: 6px;
}

/* Sur mobile, le héros est centré (w3-display-middle) : on centre le texte
   et on lui laisse toute la largeur pour éviter tout débordement. */
@media (max-width: 660px) {
   .delisou-hero { justify-content: center; }
   .delisou-hero-content {
      max-width: 100%;
      padding: 0 20px;
      text-align: center;
   }
}

/*-------------------*/
/* Bouton CTA moderne */
/*-------------------*/
.delisou-btn {
   display: inline-block;
   margin-top: 18px;
   padding: 13px 30px;
   border-radius: 50px;
   background: #ff9800;
   color: #fff !important;
   font-weight: 600;
   font-size: 17px;
   letter-spacing: .3px;
   text-decoration: none;
   box-shadow: 0 8px 22px rgba(255, 152, 0, 0.45);
   transition: transform .25s ease, box-shadow .25s ease, background .25s ease;
}

.delisou-btn:hover {
   background: #ffb13d;
   color: #fff !important;
   transform: translateY(-3px);
   box-shadow: 0 12px 28px rgba(255, 152, 0, 0.55);
}

/*--------------------------------------------*/
/* Les 4 cartes services (#CREATION, etc.)    */
/*--------------------------------------------*/
.delisou-features {
   display: grid;
   grid-template-columns: repeat(4, 1fr);
   gap: 16px;
   max-width: 1240px;
   margin: 0 auto;
   padding: 22px;
}

.delisou-feature {
   position: relative;
   display: flex;
   flex-direction: column;
   align-items: flex-start;
   gap: 10px;
   padding: 26px 24px 30px;
   border-radius: 18px;
   color: #fff !important;
   text-decoration: none;
   overflow: hidden;
   isolation: isolate;
   box-shadow: 0 8px 22px rgba(0, 0, 0, 0.12);
   transition: transform .3s ease, box-shadow .3s ease;
}

/* Dégradés par carte */
.df-orange { background: linear-gradient(135deg, #ff9800 0%, #ff6d00 100%); }
.df-aqua   { background: linear-gradient(135deg, #00bcd4 0%, #0097a7 100%); }
.df-pink   { background: linear-gradient(135deg, #ff4081 0%, #c2185b 100%); }
.df-green  { background: linear-gradient(135deg, #8bc34a 0%, #558b2f 100%); }

/* Halo lumineux qui apparaît au survol */
.delisou-feature::before {
   content: "";
   position: absolute;
   top: -40%;
   right: -30%;
   width: 220px;
   height: 220px;
   border-radius: 50%;
   background: rgba(255, 255, 255, 0.18);
   transform: scale(0);
   transition: transform .45s ease;
   z-index: -1;
}

.delisou-feature:hover {
   transform: translateY(-8px);
   box-shadow: 0 18px 40px rgba(0, 0, 0, 0.22);
}

.delisou-feature:hover::before { transform: scale(1.6); }

.df-icon {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   width: 56px;
   height: 56px;
   border-radius: 14px;
   background: rgba(255, 255, 255, 0.18);
   font-size: 26px;
   transition: transform .35s ease;
}

.delisou-feature:hover .df-icon { transform: rotate(-8deg) scale(1.08); }

.df-tag {
   font-size: 13px;
   font-weight: 600;
   letter-spacing: 1px;
   text-transform: uppercase;
   opacity: .85;
}

.df-title {
   font-size: 21px;
   font-weight: 600;
   line-height: 1.25;
}

/* Petite flèche d'invitation au clic */
.delisou-feature::after {
   content: "\f061"; /* fa-arrow-right */
   font-family: FontAwesome;
   position: absolute;
   right: 22px;
   bottom: 22px;
   font-size: 18px;
   opacity: 0;
   transform: translateX(-6px);
   transition: opacity .3s ease, transform .3s ease;
}

.delisou-feature:hover::after { opacity: .9; transform: translateX(0); }

@media (max-width: 900px) {
   .delisou-features { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
   .delisou-features { grid-template-columns: 1fr; gap: 14px; padding: 16px; }
   .delisou-feature { flex-direction: row; align-items: center; padding: 18px 20px; }
   .delisou-feature .df-icon { width: 48px; height: 48px; font-size: 22px; flex: 0 0 auto; }
   .delisou-feature .df-tag { display: none; }
   .delisou-feature::after { display: none; }
}

/*-----------------------------*/
/* Titres de section + accent  */
/*-----------------------------*/
.delisou-section-title {
   font-weight: 600;
   position: relative;
   display: inline-block;
   padding-bottom: 10px;
}

.delisou-section-title::after {
   content: "";
   position: absolute;
   left: 0;
   bottom: 0;
   width: 64px;
   height: 4px;
   border-radius: 4px;
   background: #ff9800;
}

/*-----------------------------------*/
/* Cartes de réalisations modernes   */
/*-----------------------------------*/
.delisou-card {
   border-radius: 16px !important;
   box-shadow: 0 6px 22px rgba(0, 0, 0, 0.10);
   transition: transform .3s ease, box-shadow .3s ease;
   overflow: hidden;
   height: auto;
   padding: 26px 26px 30px !important;
   text-align: left;
}

.delisou-card:hover {
   transform: translateY(-8px);
   box-shadow: 0 18px 40px rgba(0, 0, 0, 0.18);
}

.delisou-card .w3-xlarge,
.delisou-card a.w3-xlarge {
   font-weight: 600;
}

/* Rangée de cartes : hauteurs égales en desktop, ajustées au contenu en mobile */
@media (min-width: 601px) {
   .delisou-cards-row { display: flex; flex-wrap: wrap; }
   .delisou-cards-row > div { display: flex; }
   .delisou-cards-row > div > .delisou-card { width: 100%; }
}

/* Carte "vedette" pour les créations Delisou (WebBoard / Rally) */
.delisou-card-featured {
   border: 2px solid #ff9800;
   position: relative;
}

.delisou-badge {
   display: inline-block;
   margin-bottom: 12px;
   padding: 5px 14px;
   border-radius: 50px;
   background: #ff9800;
   color: #fff;
   font-size: 12px;
   font-weight: 600;
   letter-spacing: .5px;
   text-transform: uppercase;
}

.delisou-card-link {
   display: inline-flex;
   align-items: center;
   gap: 8px;
   margin-top: 16px;
   font-weight: 600;
   color: #ff9800 !important;
   transition: gap .2s ease;
}

.delisou-card-link:hover {
   gap: 14px;
   color: #ffb13d !important;
}

/*-------------------------------------*/
/* Formulaire de contact moderne       */
/*-------------------------------------*/
.dl-field {
   display: flex;
   align-items: center;
   gap: 14px;
   margin: 0 0 18px;
}

.dl-field.dl-field-top { align-items: flex-start; }
.dl-field.dl-field-top .dl-field-icon { margin-top: 2px; }

.dl-field-icon {
   flex: 0 0 auto;
   display: inline-flex;
   align-items: center;
   justify-content: center;
   width: 46px;
   height: 46px;
   border-radius: 12px;
   background: rgba(255, 152, 0, 0.12);
   color: #ff9800;
   font-size: 19px;
}

.dl-field-body { flex: 1 1 auto; }

.dl-input {
   display: block;
   width: 100%;
   padding: 13px 16px;
   border: 1px solid #d7dbe0;
   border-radius: 12px;
   background: #fff;
   font-family: inherit;
   font-size: 15px;
   color: #333;
   transition: border-color .2s ease, box-shadow .2s ease;
}

.dl-input::placeholder { color: #9aa0a6; }

.dl-input:focus {
   outline: none;
   border-color: #ff9800;
   box-shadow: 0 0 0 3px rgba(255, 152, 0, 0.18);
}

textarea.dl-input { resize: vertical; min-height: 120px; }

.dl-input.dl-input-error {
   border-color: #e53935;
   box-shadow: 0 0 0 3px rgba(229, 57, 53, 0.15);
}

.dl-field-error { margin: 6px 0 0; color: #e53935; font-size: 14px; }

.dl-check {
   display: inline-flex;
   align-items: center;
   gap: 12px;
   min-height: 46px;
   color: #444;
   font-size: 15px;
   cursor: pointer;
   user-select: none;
}

/* Case à cocher personnalisée */
.dl-check input {
   position: absolute;
   width: 1px;
   height: 1px;
   opacity: 0;
}

.dl-checkbox {
   flex: 0 0 auto;
   display: inline-flex;
   align-items: center;
   justify-content: center;
   width: 26px;
   height: 26px;
   border: 2px solid #c4c9ce;
   border-radius: 8px;
   background: #fff;
   transition: background .2s ease, border-color .2s ease;
}

.dl-checkbox::after {
   content: "\f00c"; /* fa-check */
   font-family: FontAwesome;
   font-size: 14px;
   color: #fff;
   opacity: 0;
   transform: scale(.5);
   transition: opacity .18s ease, transform .18s ease;
}

.dl-check input:checked + .dl-checkbox {
   background: #ff9800;
   border-color: #ff9800;
}

.dl-check input:checked + .dl-checkbox::after {
   opacity: 1;
   transform: scale(1);
}

.dl-check input:focus-visible + .dl-checkbox {
   box-shadow: 0 0 0 3px rgba(255, 152, 0, 0.25);
}

/*--------------------------------*/
/* Animations au défilement       */
/*--------------------------------*/
.reveal {
   opacity: 0;
   transform: translateY(30px);
   transition: opacity .7s ease, transform .7s ease;
   will-change: opacity, transform;
}

.reveal.reveal-visible {
   opacity: 1;
   transform: translateY(0);
}

@keyframes delisou-fade-up {
   from { opacity: 0; transform: translateY(28px); }
   to   { opacity: 1; transform: translateY(0); }
}

/* Respecte les préférences d'accessibilité */
@media (prefers-reduced-motion: reduce) {
   .delisou-hero,
   .reveal,
   .delisou-hero-content {
      animation: none !important;
      transition: none !important;
   }
   .reveal { opacity: 1; transform: none; }
   html { scroll-behavior: auto; }
}
