/* ================================================================
   css/base.css — Maison Lamarque
   ── Reset CSS + styles de base + composants partagés ───────────
   ================================================================ */

   
/* ── Reset universel ─────────────────────────────────────────── */
*,*::before,*::after { margin:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin: 0;
    padding: 0;
    color: #c5a059  ;       /* Noir profond, lisible sur crème */
 font-family: 'Jost', sans-serif ;
       line-height: 1.7;
    font-weight: 300;
    overflow-x: hidden;
}
.promo-strip {
  background: var(--gold);
  color: #fff;
  text-align: center;
  padding: 8px 12px;
  font-size: 10px;
  line-height: 1.4;
  letter-spacing: 2px;
  text-transform: uppercase;
}

.promo-strip strong {
  font-weight: 700;
  border: 1px dashed #fff;
  padding: 2px 8px;
  margin: 0 4px;
  white-space: nowrap;
}

@media (max-width:420px) {
  .promo-strip { font-size: 8px; letter-spacing: 1px; padding: 7px 8px; }
  .promo-strip strong { padding: 1px 5px; margin: 0 2px; }
}

a { text-decoration:none; color:inherit; }
img { display:block; max-width:100%; }
button,input,select,textarea { font-family:inherit; outline:none;background:lightgrey; }

/* ── Scroll reveal ───────────────────────────────────────────── */
/* js/ui.js ajoute .in via IntersectionObserver */
.reveal { opacity:0; transform:translateY(24px); transition:opacity .7s var(--ease),transform .7s var(--ease); }
.reveal.in { opacity:1; transform:translateY(0); }

/* ── Animations globales ─────────────────────────────────────── */
@keyframes up       { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)} }
@keyframes spin     { to{transform:rotate(360deg)} }
@keyframes fadeIn   { from{opacity:0} to{opacity:1} }
@keyframes shimmer  { 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* ── Spinner de chargement ───────────────────────────────────── */
.spinner {
  display:inline-block; width:16px; height:16px;
  border:2px solid rgba(0,0,0,.15); border-top-color:var(--black);
  border-radius:50%; animation:spin .7s linear infinite;
  vertical-align:middle; margin-right:6px;
}
.spinner-light { border-color:rgba(255,255,255,.15); border-top-color:var(--white); }

/* ── Toast notification ──────────────────────────────────────── */
.toast {
  position:fixed; bottom:22px; left:50%;
  transform:translateX(-50%) translateY(70px);
  background:var(--white); color:var(--black);
  padding:12px 28px; font-size:11px; letter-spacing:1.5px;
  font-weight:600; z-index:var(--z-toast);
  transition:transform var(--t); white-space:nowrap;
  max-width:90vw; overflow:hidden; pointer-events:none;
  border-left:3px solid var(--gold);
  
}
.toast.on     { transform:translateX(-50%) translateY(0); }
.toast.error  { border-left-color:var(--red);   background:#FFF5F5; }
.toast.success{ border-left-color:var(--green);  background:#F0FFF4; }

/* ── Overlay sombre ──────────────────────────────────────────── */
.overlay {
  position:fixed; inset:0; background:rgba(0,0,0,.55);
  z-index:var(--z-overlay); opacity:0; pointer-events:none;
  transition:opacity var(--t);
}
.overlay.on { opacity:1; pointer-events:all; }

/* ── Boutons partagés ────────────────────────────────────────── */
/* Bouton principal — fond doré */
.btn-primary {
  background:var(--black); color:var(--white);
  padding:14px 36px; font-size:10px; letter-spacing:3px;
  text-transform:uppercase; border:none; cursor:pointer;
  font-weight:500; display:inline-block;
  transition:background .3s, transform .15s;
}
.btn-primary:hover { background:var(--gold); color:var(--black); transform:translateY(-1px); }
.btn-primary:disabled { opacity:.4; cursor:not-allowed; transform:none; }

/* Bouton secondaire — contour */
.btn-outline {
  background:black; color:var(--white); padding:13px 34px;
  font-size:10px; letter-spacing:3px; text-transform:uppercase;
  border:1px solid var(--black); cursor:pointer; transition:all .2s;
  display:inline-block;
}
.btn-outline:hover { background:var(--gold); color:var(--black); }

/* Version inversée (sur fond sombre) */
.btn-outline-light {
  background:transparent; color:var(--white); padding:13px 34px;
  font-size:10px; letter-spacing:3px; text-transform:uppercase;
  border:1px solid var(--border); cursor:pointer; transition:all .2s;
}
.btn-outline-light:hover { border-color:var(--gold); color:var(--gold); }

/* Bouton danger — rouge */
.btn-danger {
  background:var(--red); color:white; padding:11px 24px;
  font-size:10px; letter-spacing:2px; text-transform:uppercase;
  border:none; cursor:pointer; transition:opacity .2s;
}
.btn-danger:hover { opacity:.85; }

/* ── Étiquette de section ────────────────────────────────────── */
.s-label {
  font-size:10px; letter-spacing:5px; text-transform:uppercase;
  color:var(--gold); margin-bottom:10px; display:block;
}

/* ── Dégradé doré sur texte ──────────────────────────────────── */
.text-gold {
  background:linear-gradient(135deg,var(--gold),var(--gold-light));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
/* ── Breadcrumb (fil d'Ariane) ───────────────────────────────── */
.breadcrumb {
    /* Correction : 'block' n'est pas une position. 'relative' permet au z-index de fonctionner */
    position: sticky;
    z-index: 19; 

    /* Ajuste cette valeur selon la hauteur de ta navbar desktop pour ne pas être caché dessous */
    margin-top: 30px; 
    
    padding: 10px 15px;
    display: block;
    background: #fff;
}

.breadcrumb a { 
    color: var(--grey); 
    text-decoration: none; 
    font-size: 10px; 
    text-transform: uppercase; 
    letter-spacing: 1px;
}

.breadcrumb .crumb-current { 
    color: var(--black); 
    font-weight: 500; 
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* --- AJUSTEMENT MOBILE / TABLETTE (Max 1024px) --- */
@media (max-width: 1024px) {
    .breadcrumb {
        /* Si ta nav mobile est fixe, mets la hauteur de ta nav ici (ex: 64px) */
        margin-top: 0px; 
        
        /* Padding resserré pour mobile */
        padding: 8px 15px; 
        
        position: relative; 
        z-index: 19;
        display: block;
        background: #fff;
        line-height: 1.2;
    }

    .breadcrumb a, 
    .breadcrumb .crumb-current {
        /* Taille légèrement réduite pour l'élégance sur petit écran */
        font-size: 9px; 
        letter-spacing: 0.5px;
    }
}

/* --- OPTIMISATION PETITS MOBILES (Max 420px) --- */
@media (max-width: 420px) {
    .breadcrumb {
        /* On réduit le padding pour éviter que le texte ne touche les bords de l'écran */
        padding: 6px 10px;
        margin-top: 0px;
    }
}

/* ── Indicateur d'étapes (checkout) ─────────────────────────── */
.steps {
  display:flex; align-items:center; justify-content:center;
  margin:0 auto 40px; max-width:500px;
}
.step { display:flex; flex-direction:column; align-items:center; gap:6px; flex:1; position:relative; }
.step-circle {
  width:34px; height:34px; border-radius:50%;
  border:1.5px solid var(--border-light); display:flex;
  align-items:center; justify-content:center; font-size:12px;
  font-weight:600; color:var(--grey); background:var(--white);
  transition:all .3s; z-index:1; position:relative;
}
.step.active .step-circle { border-color:var(--black); color:var(--black); background:var(--white); }
.step.done  .step-circle   { border-color:var(--green); background:var(--green); color:white; }
.step-label { font-size:10px; letter-spacing:1.5px; text-transform:uppercase; color:var(--grey); text-align:center; }
.step.active .step-label { color:var(--black); }
.step.done  .step-label   { color:var(--green); }
/* Ligne entre les étapes */
.step::before {
  content:''; position:absolute; top:16px; right:calc(-50% + 17px);
  width:calc(100% - 34px); height:1px; background:var(--border-light); z-index:0;
}
.step:first-child::before { display:none; }
.step.done::before { background:var(--green); }

/* ── Champ de formulaire générique ──────────────────────────── */
.fg { margin-bottom:18px; }
.fg label {
  display:flex; align-items:center; gap:5px;
  font-size:10px; letter-spacing:2px; text-transform:uppercase;
  color:var(--black); margin-bottom:7px; font-weight:500;
}
.fg label .req { color:var(--red); font-size:13px; line-height:1; }
.fg input,.fg select,.fg textarea {
  width:100%; padding:12px 14px; border:1px solid rgba(0,0,0,.12);
  font-size:13px; background:var(--off-white); color:var(--black);
  transition:border-color .2s;
}
.fg input:focus,.fg select:focus,.fg textarea:focus { border-color:var(--black); }
.fg input::placeholder { color:var(--grey); }
.fg .hint { font-size:11px; color:var(--grey); margin-top:5px; }
.fg .err-msg { font-size:11px; color:var(--red); margin-top:5px; display:none; }
.fg.invalid input { border-color:var(--red); }
.fg.invalid .err-msg { display:block; }
.fg.valid  input { border-color:var(--green); }

/* ── Force du mot de passe ───────────────────────────────────── */
.pwd-strength { display:flex; gap:4px; margin-top:8px; }
.pwd-bar { height:3px; flex:1; background:rgba(0,0,0,.08); transition:background .3s; border-radius:2px; }
.pwd-bar.weak   { background:var(--red); }
.pwd-bar.medium { background:var(--orange); }
.pwd-bar.strong { background:var(--green); }
.pwd-label { font-size:10px; color:var(--grey); margin-top:4px; }

/* ── OTP (code à 6 chiffres) ─────────────────────────────────── */
.otp-row { display:flex; gap:8px; justify-content:center; margin:20px 0; }
.otp-input {
  width:46px; height:54px; text-align:center; font-size:22px;
  font-weight:600; background:var(--off-white); border:1.5px solid rgba(0,0,0,.12);
  color:var(--black); transition:border-color .2s;
}
.otp-input:focus  { border-color:var(--black); }
.otp-input.filled { border-color:var(--green); }
.otp-resend { font-size:11px; color:var(--grey); text-align:center; margin-top:10px; }
.otp-resend a { color:var(--black); cursor:pointer; text-decoration:underline; }
.otp-timer  { font-size:11px; color:var(--orange); text-align:center; margin-top:4px; }

