/* ========================================================================================
   styles.css — EcoTravaux
   Mobile-first, avec adaptation desktop (VisionOS + glassmorphism).
   Conçu pour cohabiter avec Bootstrap 5 (CDN) sans le casser.
   ========================================================================================

   ORGANISATION
   1) Variables & Reset
   2) Helpers / Layout généraux
   3) Composants Mobile (par défaut)
      3.1) Barre de recherche (search-pill)
      3.2) Cartes vitrées (card-glass) + vignettes pros
      3.3) Lightbox galerie
   4) Tabbar Mobile (si utilisée par le footer)
   5) Desktop (≥992px) — VisionOS + composants
      5.1) Fond VisionOS (utilise body[data-bg]) — SANS voile noir
      5.2) Cadre général (.vision-frame) & carte principale (.main-card)
      5.3) Sidebar desktop (navigation latérale col-1 alignée à la carte col-11)
      5.4) Ajustements grille et éléments
   6) Utilitaires de compatibilité (mobile-only / desktop-only)
   7) Correctifs de cohérence & anti-override header
   ===================================================================================== */

/* ========================================================================================
   1) VARIABLES & RESET
   ===================================================================================== */
:root{
  /* Couleurs */
  --et-bg: #0B1018;
  --et-text: #ffffff;
  --et-soft: rgba(255,255,255,.85);

  /* Verre (VisionOS) */
  --et-glass-1: rgba(255,255,255,.16);
  --et-glass-2: rgba(255,255,255,.08);
  --et-glass-border: 1px solid rgba(255,255,255,.20);
  --et-glass-blur: saturate(160%) blur(22px); /* inputs/boutons/glass cards */

  /* Accents / halos */
  --et-accent: rgba(99,102,241,.22);

  /* Dimensions globales */
  --et-radius-xl: 26px;
  --et-radius-lg: 18px;
  --et-card-w: 1380px;         /* largeur stricte des cartes (desktop) */
  --et-card-h-max: 830px;      /* hauteur max des cartes (desktop) */

  /* Auth (login/register) */
  --auth-w: 520px;             /* largeur par défaut de la card d'auth */
  --auth-w-sm: 440px;          /* variante plus compacte */
  --auth-w-lg: 600px;          /* variante un peu plus large */
  --auth-pad: 28px;            /* padding intérieur par défaut */

  /* Sidebar (desktop) */
  --et-rail-w: 72px;
  --et-rail-gap: 18px;
  --et-rail-btn: 56px;

  /* Z-index */
  --z-nav: 1000;
  --z-sidebar: 1040;
  --z-fab: 1050;
  --z-sheet: 1060;
  --z-lightbox: 1080;
}

/* Reset doux */
html, body{ height:100%; }
body{
  background: var(--et-bg);
  color: var(--et-text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img{ max-width:100%; height:auto; display:block; }
.et-hide-scrollbar::-webkit-scrollbar{ display:none; }

/* ========================================================================================
   2) HELPERS / LAYOUT GÉNÉRAUX
   ===================================================================================== */
.bg-vision{ background: var(--et-bg); color: var(--et-text); }
.text-soft{ color: var(--et-soft); }
.text-white-75{ color: rgba(255,255,255,.75) !important; } /* utilitaire projet */
.rounded-xl{ border-radius: var(--et-radius-xl); }
.rounded-lg{ border-radius: var(--et-radius-lg); }
.bg-black{ background-color: rgba(255, 255, 255, 0) !important; }

/* Bouton login bleu spécifique */
.auth-card .btn-login-blue{
  background: #0071e3 !important;
  border-color: #0071e3 !important;
  color: #fff !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: 0 8px 24px rgba(0,113,227,.35);
}
.auth-card .btn-login-blue:hover{
  background: #0a84ff !important;   /* léger éclaircissement au survol */
  border-color: #0a84ff !important;
  transform: translateY(-1px);
}
.auth-card .btn-login-blue:active{
  background: #0062c7 !important;   /* plus sombre au clic */
  border-color: #0062c7 !important;
  transform: none;
}
.auth-card .btn-login-blue:focus{
  box-shadow: 0 0 0 .25rem rgba(0,113,227,.25) !important;
  outline: 0;
}

/* Contraste des champs en dark */
.form-control{ color: #00000 !important; }

/* === AUTH (login/register) — wrapper centré + cards en GLASSMORPHISM COMPACT === */
.auth-wrap{
  min-height: calc(100vh - 160px); /* respire sous header/footer */
  display:flex; align-items:center; justify-content:center;
  padding: 24px 12px;
}

/* Alias : .auth-card, .login-card, .register-card → même base */
.auth-card,
.login-card,
.register-card{
  width: 100%;
  max-width: var(--auth-w);
  border-radius: var(--et-radius-xl);
  background:
    linear-gradient(180deg, var(--et-glass-1), var(--et-glass-2));
  border: var(--et-glass-border);
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
  box-shadow:
    0 24px 60px rgba(0,0,0,.40),
    0 10px 24px rgba(0,0,0,.28),
    inset 0 1px 0 rgba(255,255,255,.22);
}

/* Padding interne cohérent */
.auth-card .card-body{ padding: var(--auth-pad); }

/* Variantes de largeur (au besoin : ajouter la classe) */
.auth-card--sm{ max-width: var(--auth-w-sm); }
.auth-card--lg{ max-width: var(--auth-w-lg); }

/* Titre et sous-titre */
.auth-card .auth-title{ font-size: 1.25rem; font-weight: 800; letter-spacing:-.02em; }
.auth-card .auth-sub{ color: rgba(255,255,255,.72); }

/* Inputs/verre par défaut dans la card d'auth (sans avoir à ajouter .glass) */
.auth-card .form-control,
.auth-card .form-select{
  background: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.06));
  border: 1px solid rgba(255,255,255,.28);
  color:#fff;
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
}
.auth-card .form-control::placeholder{ color: rgba(255,255,255,.6); }

/* Boutons en verre doux */
.auth-card .btn-primary{
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.28);
  color:#fff;
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
}
.auth-card .btn-primary:hover{ transform: translateY(-1px); }

/* Petits écrans : pleine largeur */
@media (max-width: 480px){
  .auth-card, .login-card, .register-card{
    max-width: 100%;
    border-radius: var(--et-radius-lg);
  }
}

/* Fit helpers */
.object-fit-cover{ object-fit: cover; }
.object-fit-contain{ object-fit: contain; }

/* Conteneur max 1400px (écrase Bootstrap 5) */
.container-xxl{ max-width: 1500px; }

.link-white-soft{ color:#fff; opacity:.92; }
.link-white-soft:hover{ color:#fff; opacity:1; }

/* ✅ Carte principale UNIFIÉE (desktop + mobile) */
.main-card,
.vo-card{
  background:
    linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.06)),
    radial-gradient(120% 120% at 10% -20%, rgba(255,255,255,.18), transparent 55%);
  -webkit-backdrop-filter: blur(60px);
  backdrop-filter: blur(60px);
  border: 1px solid rgba(255,255,255,.20);
  border-radius: 30px;
  box-shadow:
    0 40px 100px rgba(0,0,0,.40),
    0 20px 40px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.25),
    inset 0 0 0 0.5px rgba(255,255,255,.12);
  margin: 0 auto;
  display: flex; flex-direction: column;
  overflow: hidden;
  padding: 45px; /* ← demandé */
}

/* En-tête collante */
.main-card .sticky-hero{
  position: sticky; top: 0; z-index: 1;
  padding: 0 0 0px 0;
  border-top-left-radius: 30px;
  border-top-right-radius: 30px;
}

/* Contrainte sécurisée pour image header de la carte */
.main-card .sticky-hero img{ max-height: 140px; height: auto; }

/* Le scroller interne */
.card-scroll{ padding: 10px 14px 16px 14px; overflow: auto; }
.main-card .card-scroll{ padding: 0; }

/* Inputs & boutons “verre” (utilitaires globaux) */
.form-control.glass{
  border: 1px solid rgba(255,255,255,.28);
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
}
.form-control.glass::placeholder{ color: rgba(255,255,255,.6); }
.btn-glass{
  background: rgba(255,255,255,.14);
  border: 1px solid rgba(255,255,255,.28);
  color:#fff;
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
}
.btn-plain{ background: #fff; color:#0B1018; border: none; }

/* Bouton état “soft success” (ex: Déjà contacté) */
.btn-success-soft{
  color:#fff !important;
  background: rgba(16,185,129,.28) !important;
  border:1px solid rgba(16,185,129,.45) !important;
  text-shadow: 0 1px 1px rgba(0,0,0,.22);
}
.btn-success-soft:hover{ transform: translateY(-1px); }

/* Pills arrondis */
.pill, .form-control.pill, .form-select.pill { border-radius: 9999px; }

/* =================== Bloc Logo (header dashboard) =================== */
.logo-box{
  width:120px; height:120px;
  border-radius: 1rem;
  display:flex; align-items:center; justify-content:center;
  background: rgba(0,0,0,.10);
  border: 1px solid rgba(255,255,255,.18);
}
.logo-img{
  max-width:112px; max-height:112px;
  object-fit: contain;
  border-radius: .5rem;
}

/* ========================================================================================
   3) COMPOSANTS MOBILE (par défaut)
   ===================================================================================== */

/* ——————————————————
   3.1) Barre de recherche
   —————————————————— */
.search-wrap{ width:100%; }
.search-pill{
  display:flex; align-items:center; gap:10px;
  padding: 10px 12px 10px 10px;
  background: linear-gradient(180deg, var(--et-glass-1), var(--et-glass-2));
  border: var(--et-glass-border);
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
  border-radius: 999px;
}
.logo-chip{
  display:inline-flex; align-items:center; justify-content:center;
  width:42px; height:42px; border-radius:999px;
  background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.22);
  overflow:hidden;
}
.logo-chip img{ width:80%; height:80%; object-fit:contain; }

/* —————————————————————————————————————————————
   3.2) Cartes vitrées + vignettes pros
   ————————————————————————————————————————————— */
.glass-card,
.card-glass{
  background: linear-gradient(180deg, var(--et-glass-1), var(--et-glass-2));
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
  border: var(--et-glass-border);
  border-radius: var(--et-radius-lg);
  box-shadow:
    0 14px 36px rgba(0,0,0,.26),
    inset 0 1px 0 rgba(255,255,255,.22);
}

.project-card.project-body{
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: var(--et-radius-lg);
}

.card-glass::before,
.card-logo::before,
.main-card::before{ content:none !important; display:none !important; }

.card-logo{
  width: 100%; height: 112px; object-fit: cover;
  border-top-left-radius: var(--et-radius-lg);
  border-top-right-radius: var(--et-radius-lg);
  background: transparent;
  filter: none;
  mix-blend-mode: normal;
  position: relative; z-index: 0;
}

/* Vignette utilisée dans demandes.php et cartes projets */
.project-thumb{
  width:100%;
  height:160px;
  object-fit:cover;
  border-top-left-radius:1rem;
  border-top-right-radius:1rem;
  border-bottom:1px solid rgba(255,255,255,.12);
}

.badge-soft{
  display:inline-block;
  padding:.35rem .6rem;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.28);
  color:#fff; border-radius: 999px;
  font-size:.8rem;
}
.badge-rge{
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.92);
  border: 1px solid rgba(255,255,255,.28);
  padding: .25rem .5rem;
}

/* En-tête collante générique (hors .main-card) */
.sticky-hero{
  position: sticky; top: 0; z-index: 1;
  padding: 18px 18px 12px 18px;
  border-top-left-radius: var(--et-radius-xl);
  border-top-right-radius: var(--et-radius-xl);
}

/* Scroller interne par défaut */
.card-scroll{ padding: 10px 14px 16px 14px; overflow: auto; }

/* Segmented control (Ma fiche / Paramètres) — FIX no-stretch */
.vo-seg{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px;
  border-radius:999px;
  border: 1px solid rgba(255,255,255,.22);
  -webkit-backdrop-filter: var(--et-glass-blur);
  backdrop-filter: var(--et-glass-blur);
  flex-wrap: nowrap;
  height:auto !important;
  max-height:56px;
  width:-webkit-fit-content; width:-moz-fit-content; width:fit-content;
  align-self:flex-start;
}
.seg-pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 14px;
  border-radius:999px;
  text-decoration:none;
  user-select:none;
  white-space:nowrap;
  line-height:1.1;
  flex:0 0 auto;
}
.seg-pill--active{
  background: #fff; color:#0B1018; font-weight:600;
  box-shadow: 0 6px 20px rgba(0,0,0,.25), inset 0 1px 0 rgba(0,0,0,.04);
}
.seg-pill--inactive{ color:#fff; opacity:.9; }

/* ========================================================================================
   4) TABBAR MOBILE (pilotée par le footer) — Optionnelle
   ===================================================================================== */
.et-tabbar{
  position: fixed; left:0; right:0; bottom:0; z-index: var(--z-nav);
  display:flex; align-items:center; justify-content:space-around;
  padding: 10px clamp(10px, 4vw, 16px);
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.04));
  border-top: 1px solid rgba(255,255,255,.18);
  -webkit-backdrop-filter: saturate(160%) blur(16px);
  backdrop-filter: saturate(160%) blur(16px);
}
.et-tabbar a{
  color:#fff; text-decoration:none;
  display:flex; flex-direction:column; align-items:center; gap:4px;
}
.et-tabbar i{ font-size: 1.25rem; opacity:.95; }

/* ========================================================================================
   5) DESKTOP (≥992px) — VisionOS + composants
   ===================================================================================== */
@media (min-width: 992px){

  /* ——————————————————
     5.1) FOND VISIONOS
     —————————————————— */
  body.bg-vision{
    background-image:
      radial-gradient(1200px 600px at 80% -20%, var(--et-accent), transparent 60%),
      var(--bg-url);
    background-size: cover, cover;
    background-position: center, center;
    background-attachment: fixed, fixed;
  }

  /* ——————————————————
     5.2) Cadre général & carte principale
     —————————————————— */
  .vision-frame{
    min-height: 100vh;
    padding: 11px 24px 48px;
  }
  .frame-row{
    max-width: 1400px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr;
  }

  /* Dimensions carte en desktop : largeur fixe + scroll interne */
  .main-card, .vo-card{
    width: var(--et-card-w);
    max-width: var(--et-card-w);
    min-width: var(--et-card-w);
    max-height: var(--et-card-h-max);
    height: auto;
  }
  .main-card{
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  .main-card .card-scroll{
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
  }

  .hero-title{ font-size: clamp(28px, 2.6vw, 40px); line-height: 1.12; }

  /* ——————————————————
     5.3) Sidebar desktop
     —————————————————— */
  .et-frame-row{
    align-items: start;
    min-height: 100vh;
    flex-wrap: nowrap;
  }

  .et-content-slot{
    display:flex; flex-direction:column;
    min-height: 100vh;
    min-width: 0;
  }
  .et-content-slot > .main-card{ flex: 0 0 auto; }

  .et-rail-col{ display:flex; align-self:center; }
  .et-rail-col .et-side-rail{
    height:auto; max-height:none;
    display:flex; flex-direction:column; align-items:center;
    justify-content:center;
    gap: var(--et-rail-gap);
    margin:0;
  }

  .et-side-rail{
    position: relative; left:auto; top:auto; transform:none;
    width: var(--et-rail-w);
    padding: 10px 8px;
    border-radius: 28px;
    background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,.08));
    border: 1px solid rgba(255,255,255,.22);
    -webkit-backdrop-filter: saturate(160%) blur(18px);
    backdrop-filter: saturate(160%) blur(18px);
    display:flex; flex-direction:column; align-items:center;
    gap: var(--et-rail-gap); z-index: var(--z-sidebar);
    margin-left: 0; margin-right: auto;
  }

  .et-side-btn{
    width: var(--et-rail-btn); height: var(--et-rail-btn);
    border-radius:999px; display:flex; align-items:center; justify-content:center;
    text-decoration:none; color:#fff; user-select:none;
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.24);
    box-shadow: 0 8px 22px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.12);
    transition: transform .12s ease, background .12s ease;
    flex:0 0 auto;
  }
  .et-side-btn:hover{ background: rgba(255,255,255,.14); transform: translateY(-1px); }
  .et-side-btn i{ font-size:1.35rem; opacity:.95; }

  .et-side-hr{
    width: 44px; margin: 2px 0; opacity:.35; border:none; height:1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.5), transparent);
  }

  /* ——————————————————
     5.4) Ajustements grille et éléments
     —————————————————— */
  .card-logo{ height: 128px; }
  #pros-grid .col-lg-3{ padding-left: .5rem; padding-right: .5rem; }
}

/* ========================================================================================
   6) UTILITAIRES DE COMPATIBILITÉ (mobile-only / desktop-only)
   ===================================================================================== */
@media (max-width: 991.98px){
  .et-side-rail{ display:none !important; visibility:hidden !important; }
  .logo-box{ width:92px; height:92px; }
  .logo-img{ max-width:84px; max-height:84px; }
}

/* Rappel du fond sans voile noir (priorité pour certains contextes) */
@media (min-width: 992px){
  body.bg-vision{
    background-image:
      radial-gradient(1200px 600px at 80% -20%, rgba(99,102,241,.22), transparent 60%),
      var(--bg-url) !important;
    background-size: cover, cover;
    background-position: center, center;
    background-attachment: fixed, fixed;
  }
}

/* ========================================================================================
   7) CORRECTIFS DE COHÉRENCE & ANTI-OVERRIDE HEADER
   ===================================================================================== */
.page-main{ padding: 64px 12px 80px; }
@media (min-width: 992px){
  .page-main{ padding: 96px 24px 48px; }
  .et-frame-row{ align-items: start !important; flex-wrap: nowrap !important; min-height: 100vh !important; }
  .et-content-slot{ display: flex !important; flex-direction: column !important; min-height: 100vh !important; min-width: 0 !important; }
  .et-content-slot > .main-card{ flex: 0 0 auto !important; }
}



/* Fin — styles.css */