/* style.css
   Objectif : rendu “Tailwind-like” sans Tailwind (uniquement les classes réellement utiles ici)
*/

/* -----------------------
   Font
------------------------ */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;800&display=swap');

:root{
  --white:#fff;
  --black:#000;

  --gray-200:#e5e7eb;
  --gray-300:#d1d5db;
  --gray-400:#9ca3af;
  --gray-500:#6b7280;
  --gray-600:#4b5563;
  --gray-800:#1f2937;

  --radius-lg:16px;
  --radius-xl:20px;

  --shadow-xl:0 25px 50px rgba(0,0,0,.35);
  --shadow-2xl:0 35px 70px rgba(0,0,0,.45);
}

*{box-sizing:border-box}
html,body{height:100%}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:'Montserrat',system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:var(--black);
  color:var(--white);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:transparent;border:0;padding:0;cursor:pointer}
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid rgba(255,255,255,.45);
  outline-offset:2px;
}
a{color:inherit}

/* -----------------------
   Utilities (utilisées par ton HTML)
------------------------ */
/* Display */
.hidden{display:none !important}
.flex{display:flex}
.grid{display:grid}
.inline-flex{display:inline-flex}

/* Position */
.fixed{position:fixed}
.absolute{position:absolute}
.relative{position:relative}
.inset-0{top:0;right:0;bottom:0;left:0}
.top-0{top:0}
.left-0{left:0}
.right-0{right:0}
.left-1\/2{left:50%}
.top-1\/2{top:50%}
.bottom-8{bottom:2rem}

/* Z */
.z-\[90\]{z-index:90}
.z-\[100\]{z-index:100}
.z-\[110\]{z-index:110}

/* Sizing */
.w-full{width:100%}
.h-full{height:100%}
.h-20{height:5rem}
.h-12{height:3rem}
.w-12{width:3rem}
.h-16{height:4rem}
.w-16{width:4rem}
.h-64{height:16rem}
.h-96{height:24rem}
.max-w-6xl{max-width:72rem}
.max-w-4xl{max-width:56rem}
.max-w-3xl{max-width:48rem}
.max-w-\[92vw\]{max-width:92vw}
.max-h-\[86vh\]{max-height:86vh}
.max-h-\[90vh\]{max-height:90vh}
.max-h-\[calc\(90vh-80px\)\]{max-height:calc(90vh - 80px)}

/* Spacing */
.mx-auto{margin-left:auto;margin-right:auto}
.p-2{padding:.5rem}
.p-3{padding:.75rem}
.p-4{padding:1rem}
.p-6{padding:1.5rem}
.p-8{padding:2rem}
.px-3{padding-left:.75rem;padding-right:.75rem}
.px-4{padding-left:1rem;padding-right:1rem}
.px-6{padding-left:1.5rem;padding-right:1.5rem}
.px-8{padding-left:2rem;padding-right:2rem}
.py-2{padding-top:.5rem;padding-bottom:.5rem}
.py-3{padding-top:.75rem;padding-bottom:.75rem}
.py-4{padding-top:1rem;padding-bottom:1rem}
.py-8{padding-top:2rem;padding-bottom:2rem}
.pt-32{padding-top:8rem}
.mb-2{margin-bottom:.5rem}
.mb-4{margin-bottom:1rem}
.mb-6{margin-bottom:1.5rem}
.mb-8{margin-bottom:2rem}
.mb-12{margin-bottom:3rem}
.mb-16{margin-bottom:4rem}
.mt-6{margin-top:1.5rem}
.gap-3{gap:.75rem}
.gap-6{gap:1.5rem}
.gap-8{gap:2rem}
.gap-12{gap:3rem}

/* Flex */
.items-center{align-items:center}
.justify-between{justify-content:space-between}
.justify-center{justify-content:center}
.flex-col{flex-direction:column}
.text-center{text-align:center}
.text-left{text-align:left}

/* Typography */
.text-sm{font-size:.875rem;line-height:1.25rem}
.text-lg{font-size:1.125rem;line-height:1.75rem}
.text-xl{font-size:1.25rem;line-height:1.75rem}
.text-2xl{font-size:1.5rem;line-height:2rem}
.text-3xl{font-size:1.875rem;line-height:2.25rem}
.text-4xl{font-size:2.25rem;line-height:2.5rem}
.text-5xl{font-size:3rem;line-height:1}
.text-7xl{font-size:4.5rem;line-height:1}
.font-medium{font-weight:500}
.font-bold{font-weight:700}
.leading-relaxed{line-height:1.75}
.font-montserrat{font-family:'Montserrat',system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}

/* Colors */
.bg-black{background:#000}
.bg-white{background:#fff}
.bg-gray-800{background:var(--gray-800)}
.bg-gray-900\/50{background:rgba(17,24,39,.50)}
.bg-black\/80{background:rgba(0,0,0,.80)}
.bg-black\/90{background:rgba(0,0,0,.90)}
.bg-black\/95{background:rgba(0,0,0,.95)}
.bg-black\/50{background:rgba(0,0,0,.50)}
.bg-white\/10{background:rgba(255,255,255,.10)}

.text-white{color:#fff}
.text-black{color:#000}
.text-gray-200{color:var(--gray-200)}
.text-gray-300{color:var(--gray-300)}
.text-gray-400{color:var(--gray-400)}
.text-gray-500{color:var(--gray-500)}
.text-gray-600{color:var(--gray-600)}
.text-white\/60{color:rgba(255,255,255,.60)}
.text-white\/90{color:rgba(255,255,255,.90)}
.text-text-dark{color:#111827}

/* Borders */
.border-b{border-bottom:1px solid rgba(255,255,255,.10)}
.border-t{border-top:1px solid rgba(255,255,255,.10)}
.border-white\/10{border-color:rgba(255,255,255,.10)}
.border{border:1px solid rgba(255,255,255,.20)}
.border-white\/20{border-color:rgba(255,255,255,.20)}

/* Radius */
.rounded-lg{border-radius:var(--radius-lg)}
.rounded-xl{border-radius:var(--radius-xl)}
.rounded-full{border-radius:9999px}

/* Effects */
.backdrop-blur-md{backdrop-filter: blur(12px)}
.shadow-2xl{box-shadow:var(--shadow-2xl)}
.transition-colors{transition:color .2s ease, background-color .2s ease, border-color .2s ease}
.transition-opacity{transition:opacity .25s ease}
.duration-300{transition-duration:.3s}
.overflow-hidden{overflow:hidden}
.overflow-y-auto{overflow-y:auto}
.object-cover{object-fit:cover}
.object-contain{object-fit:contain}

/* Transforms */
.-translate-x-1\/2{transform:translateX(-50%)}
.-translate-y-1\/2{transform:translateY(-50%)}

/* Height */
.min-h-screen{min-height:100vh}

/* -----------------------
   Responsive variants
------------------------ */
@media (min-width:640px){
  .sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:768px){
  .md\:hidden{display:none !important}
  .md\:flex{display:flex !important}
  .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .md\:left-8{left:2rem}
  .md\:text-7xl{font-size:4.5rem;line-height:1}
  .md\:text-2xl{font-size:1.5rem;line-height:2rem}
}
@media (min-width:1024px){
  .lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* -----------------------
   Layout / composants
------------------------ */
.section-padding{padding:100px 0}
main{padding-top:80px} /* compense le header fixed */

.text-gradient{
  background:linear-gradient(90deg,#fff,rgba(255,255,255,.70));
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

.hover-lift{transition: transform .22s ease, box-shadow .22s ease}
.hover-lift:hover{transform: translateY(-4px); box-shadow: var(--shadow-xl)}

.glass-effect{
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
}

/* About image zoom */
.about-zoom{border-radius:var(--radius-lg); overflow:hidden}
.about-zoom img{transition:transform .6s ease}
.about-zoom:hover img{transform:scale(1.08)}

/* group-hover opacity (overlay portfolio) */
.group{position:relative}
.group-hover\:opacity-100{opacity:0}
.group:hover .group-hover\:opacity-100{opacity:1}

/* Reveal */
[data-reveal]{
  opacity:0;
  transform: translateY(34px);
  transition: opacity .75s ease, transform .75s ease;
  will-change: opacity, transform;
}
[data-reveal].visible{opacity:1; transform: translateY(0)}

/* Modals base (JS gère .hidden) */
#galleryModal, #lightboxModal{
  display:flex;
  align-items:center;
  justify-content:center;
}
#galleryModal [role="dialog"]{border:1px solid rgba(255,255,255,.10)}
#lightboxImg{background:#000; border:1px solid rgba(255,255,255,.12)}

/* Inputs */
input,select,textarea{color:#fff}
.bg-black\/50{background:rgba(0,0,0,.50)}
.resize-none{resize:none}

/* Space-y utilitaires (form) */
.space-y-6 > * + *{margin-top:1.5rem}
.space-y-3 > * + *{margin-top:.75rem}

/* -----------------------
   Header (logo + menu)
------------------------ */
/* Menu : blanc + un peu plus grand */
header nav button{color:#fff !important; font-size:15px !important}
header nav button:hover{opacity:.85}

/* Desktop : logo au-dessus du menu */
@media (min-width:768px){
  header > .max-w-6xl{
    height:auto !important;
    padding-top:14px !important;
    padding-bottom:10px !important;
    flex-direction:column !important;
    gap:10px !important;
  }
  header nav{
    width:100%;
    display:flex !important;
    justify-content:center !important;
    margin-top:2px !important;
  }
}

/* Mobile : logo centré + burger à droite */
@media (max-width:767px){
  header{height:auto !important}
  header > .max-w-6xl{
    flex-direction:column !important;
    justify-content:center !important;
    align-items:center !important;
    height:auto !important;
    padding-top:16px !important;
    padding-bottom:10px !important;
    position:relative;
  }
  #mobileMenuBtn{
    position:absolute !important;
    right:16px !important;
    top:20px !important;
  }
}

/* Logo sizing (desktop + mobile) */
header img[alt="Premier Regard"]{width:120px !important; height:auto !important}
footer img[alt="Premier Regard"]{width:92px !important; height:auto !important}

/* -----------------------
   HERO : position contenu + flèche animée
------------------------ */
/* Ajuste seulement translateY si tu veux monter/descendre le contenu */
#hero{align-items:center !important}
#hero > .relative.z-10{transform: translateY(-100px)}

/* Bouton principal blanc */
#hero h1{color:#fff !important; background:none !important; -webkit-text-fill-color:initial}
#hero p{color:#fff !important; opacity:.85}
#hero button{background:#fff !important; color:#000 !important}

/* Flèche : animation sur le SVG (robuste, n’écrase pas le centrage) */
#hero .scroll-indicator{
  display:inline-flex !important;
  position:absolute !important;
  left:50% !important;
  transform: translateX(-50%) !important;
  bottom:130px !important;        /* ajuste ici (plus grand = plus haut) */
  z-index:50 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  opacity:1 !important;
  visibility:visible !important;
}
#hero .scroll-indicator svg{
  width:30px !important;
  height:30px !important;
  color:#fff !important;
  fill:currentColor !important;
  opacity:1 !important;
  animation: heroArrowBounceSvg 1.2s ease-in-out infinite !important;
  will-change: transform;
}
@keyframes heroArrowBounceSvg{
  0%{transform:translateY(0)}
  50%{transform:translateY(12px)}
  100%{transform:translateY(0)}
}

/* Mobile : flèche visible + réserve de place */
@media (max-width:767px){
  #hero{position:relative !important; padding-bottom:120px !important}
  #hero .scroll-indicator{
    bottom:80px !important;       /* ajuste ici (plus grand = plus haut) */
    z-index:999 !important;
    pointer-events:auto !important;
  }
}

/* -----------------------
   Services : cartes alignées + taille
------------------------ */
@media (min-width:768px){
  #services .grid{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    max-width:920px;
    margin-left:auto;
    margin-right:auto;
  }
  #services .glass-effect{max-width:300px; margin-left:auto; margin-right:auto}
}

/* Alignement interne des cartes */
#services .glass-effect{display:flex !important; flex-direction:column !important}
#services .glass-effect > .flex-grow{display:flex !important; flex-direction:column !important}
#services .glass-effect h3{min-height:3.1em}
#services .glass-effect .text-3xl{
  min-height:2.6em;
  display:flex;
  align-items:center;
  justify-content:center;
}
#services .glass-effect p{min-height:4.4em}
#services .glass-effect ul{margin-top:12px; flex:1 1 auto}
#services .glass-effect button{margin-top:auto !important}

/* -----------------------
   Close buttons + ToTop
------------------------ */
/* Croix (galerie + lightbox) */
#closeGalleryBtn, #lightboxClose{
  position:fixed !important;
  top:18px !important;
  right:18px !important;
  z-index:1000 !important;

  width:46px !important;
  height:46px !important;
  border-radius:12px !important;

  border:1px solid rgba(255,255,255,.25) !important;
  background:rgba(0,0,0,.45) !important;

  display:flex !important;
  align-items:center !important;
  justify-content:center !important;

  color:#fff !important;
  font-size:34px !important;
  line-height:1 !important;
}
#closeGalleryBtn:hover, #lightboxClose:hover{background:rgba(255,255,255,.12) !important}

/* Bouton retour haut */
#toTopBtn{
  position:fixed !important;
  right:16px !important;
  bottom:16px !important;
  z-index:999 !important;

  width:46px !important;
  height:46px !important;
  border-radius:9999px !important;

  border:1px solid rgba(255,255,255,.25) !important;
  background:rgba(0,0,0,.45) !important;
  color:#fff !important;

  display:none; /* géré par JS */
  align-items:center !important;
  justify-content:center !important;

  font-size:18px !important;
}
#toTopBtn:hover{background:rgba(255,255,255,.12) !important}

/* Petits titres mobile */
@media (max-width:420px){
  .text-5xl{font-size:2.35rem}
  .text-7xl{font-size:3.2rem}
  .pt-32{padding-top:7rem}
}

/* Flèche HERO : forcer l’affichage sur mobile */
@media (max-width: 767px){
  #hero{
    position: relative !important;
    padding-bottom: 120px !important; /* réserve de place pour la flèche */
  }

  #hero .scroll-indicator{
    display: inline-flex !important;
    position: absolute !important;
    left: 50% !important;
    transform: translateX(-50%) !important;

    bottom: 120px !important;     /* remonte-la si besoin (ex: 90px) */
    z-index: 999 !important;     /* au-dessus de tout */
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }

  #hero .scroll-indicator svg{
    animation: heroArrowBounceSvg 1.2s ease-in-out infinite !important;
  }
}