:root{
  --ivoire:#FBF7F1; --blanc:#FFFFFF; --sable-clair:#F4ECE3;
  --or-rose:#C9A26B; --or-rose-clair:#E3C79A; --bronze:#A8854E;
  --vert-tiare:#3F6B5A; --corail:#E8A598; --encre:#2B2622; --taupe:#7A7068;
  --sable:#E7DDCF; --sauge:#6F9A82;
  --radius:14px; --radius-lg:22px; --radius-xl:30px; --pill:9999px;
  --shadow:0 10px 30px rgba(168,133,78,.12);
  --shadow-lg:0 20px 50px rgba(168,133,78,.18);
  --shadow-lift:0 24px 60px -18px rgba(43,38,34,.30);
  --grad-or:linear-gradient(120deg,var(--or-rose),var(--bronze));
}

html{ -webkit-text-size-adjust:100%; }
body{
  background:var(--ivoire); color:var(--encre);
  font-feature-settings:"liga" 1,"calt" 1;
  text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased;
}

/* Grain subtil global, posé au-dessus du fond mais sous le contenu */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.5; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E");
}
body > *{ position:relative; z-index:1; }

::selection{ background:var(--or-rose-clair); color:var(--encre); }

/* Titres : équilibre & interlettrage soignés */
.font-display{ letter-spacing:-.012em; }
h1,h2,h3{ text-wrap:balance; }
p{ text-wrap:pretty; }

/* Texte doré dégradé (accents de titres) */
.text-gradient{
  background:linear-gradient(100deg,var(--bronze),var(--or-rose) 55%,var(--or-rose-clair));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* Filet doré décoratif — désormais lumineux aux extrémités */
.gold-rule{ width:64px; height:2px; border-radius:9999px;
  background:linear-gradient(90deg,transparent,var(--or-rose) 18%,var(--or-rose-clair) 82%,transparent);
  position:relative; }
.gold-rule::after{ content:"✦"; position:absolute; left:50%; top:50%;
  transform:translate(-50%,-58%); font-size:9px; color:var(--or-rose);
  background:var(--ivoire); padding:0 6px; }
.gold-rule.on-dark::after{ background:transparent; }

/* Signature script */
.signature{ font-family:"Petit Formal Script",cursive; }

/* Eyebrow / sur-titre */
.eyebrow{ font-size:.72rem; text-transform:uppercase; letter-spacing:.28em;
  font-weight:500; color:var(--bronze); }

/* Liens & focus accessibles */
a, button, [tabindex]{ outline-color:var(--or-rose); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--or-rose); outline-offset:2px; border-radius:6px;
}

/* Reveal (état initial, masqué tant que GSAP n'a pas joué) */
.gsap-ready .reveal{ opacity:0; transform:translateY(24px); }

/* Cartes */
.fe-card{ background:var(--blanc); border:1px solid var(--sable);
  border-radius:var(--radius-lg); box-shadow:var(--shadow);
  transition:transform .45s cubic-bezier(.22,.61,.36,1), box-shadow .45s ease, border-color .45s ease; }
.fe-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow-lift); border-color:rgba(201,162,107,.45); }

/* Image dans une carte : zoom + voile au survol */
.fe-card .card-media{ position:relative; overflow:hidden; }
.fe-card .card-media img{ transition:transform 1.1s cubic-bezier(.22,.61,.36,1); will-change:transform; }
.fe-card:hover .card-media img{ transform:scale(1.07); }

/* Boutons pill */
.btn{ position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  border-radius:var(--pill); font-weight:500; transition:transform .25s ease, box-shadow .25s ease, filter .25s ease, border-color .25s ease, color .25s ease; cursor:pointer;
  letter-spacing:.01em; overflow:hidden; }
.btn svg{ transition:transform .3s ease; }
.btn:hover svg{ transform:translateX(3px); }
.btn-primary{ background:var(--grad-or); color:#fff; box-shadow:0 8px 22px -8px rgba(168,133,78,.6); }
.btn-primary::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);
  transform:translateX(-120%); transition:transform .7s ease; }
.btn-primary:hover{ filter:brightness(1.05); box-shadow:0 14px 32px -10px rgba(168,133,78,.7); transform:translateY(-2px); }
.btn-primary:hover::after{ transform:translateX(120%); }
.btn-ghost{ background:transparent; border:1px solid var(--sable); color:var(--encre); }
.btn-ghost:hover{ border-color:var(--or-rose); color:var(--bronze); transform:translateY(-1px); }
.btn-light{ background:var(--blanc); color:var(--encre); border:1px solid rgba(255,255,255,.6); box-shadow:0 8px 24px -10px rgba(43,38,34,.35); }
.btn-light:hover{ border-color:var(--or-rose); transform:translateY(-2px); box-shadow:0 14px 32px -12px rgba(43,38,34,.45); }

/* Badges */
.badge{ display:inline-flex; align-items:center; gap:.3rem; font-size:.7rem;
  text-transform:uppercase; letter-spacing:.08em; font-weight:500;
  padding:.28rem .7rem; border-radius:var(--pill); }

/* Inputs */
.field{ width:100%; border:1px solid var(--sable); background:var(--blanc);
  border-radius:10px; padding:.65rem .85rem; font-size:.92rem; color:var(--encre);
  transition:border-color .2s ease; }
.field:focus{ border-color:var(--or-rose); outline:none; }
label{ color:var(--taupe); }

/* Leaflet sobre */
.leaflet-container{ font-family:'Jost',sans-serif; border-radius:var(--radius); }

/* Impression du récapitulatif */
@media print{
  body{ background:#fff; }
  .no-print{ display:none !important; }
  .print-block{ box-shadow:none !important; border:1px solid #ddd !important; }
}

/* Carrousel témoignages : transition douce */
[x-cloak]{ display:none !important; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.001ms !important; transition-duration:.01ms !important; }
  .gsap-ready .reveal{ opacity:1 !important; transform:none !important; }
  .fe-card:hover{ transform:none; }
}

/* Stepper du configurateur */
.step-dot{ width:34px; height:34px; border-radius:9999px; display:flex; align-items:center; justify-content:center;
  font-weight:600; font-size:.85rem; border:2px solid var(--sable); background:var(--blanc); color:var(--taupe); transition:all .3s ease; }
.step-dot.active{ background:linear-gradient(120deg,var(--or-rose),var(--bronze)); color:#fff; border-color:transparent; }
.step-dot.done{ background:var(--sauge); color:#fff; border-color:transparent; }
.step-line{ flex:1; height:2px; background:var(--sable); margin:0 .25rem; }
.step-line.done{ background:var(--sauge); }

/* Pulse sur recalcul total */
@keyframes fe-pulse{ 0%{ transform:scale(1);} 40%{ transform:scale(1.05);} 100%{ transform:scale(1);} }
.fe-pulse{ animation:fe-pulse .4s ease; }

/* ---------- HERO & finitions ---------- */
/* Voile dégradé riche + halo chaud pour donner de la profondeur au hero */
.hero-veil{
  background:
    radial-gradient(120% 90% at 78% 16%, rgba(232,165,152,.18), transparent 52%),
    linear-gradient(100deg, rgba(28,24,21,.86) 0%, rgba(30,26,22,.66) 34%, rgba(40,35,30,.34) 58%, rgba(43,38,34,.30) 100%),
    linear-gradient(to bottom, rgba(28,24,21,.42) 0%, rgba(30,26,22,.18) 38%, rgba(28,24,21,.70) 100%);
}
/* Grain renforcé localement sur le hero */
.hero-grain::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.6; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n2'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n2)' opacity='0.5'/%3E%3C/svg%3E");
}
/* Fine vignette en bas pour fondre vers la section suivante */
.hero-fade-bottom{ background:linear-gradient(to bottom, transparent, var(--ivoire)); }

/* Liseré supérieur doré décoratif sur cartes médias */
.media-frame{ position:relative; }
.media-frame::after{ content:""; position:absolute; inset:0; border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14); pointer-events:none; }

/* Badge îles/type plus raffiné */
.badge-glass{ background:rgba(43,38,34,.55); backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.18); color:#fff; }

/* Puce décor florale (séparateurs) */
.dot-floral{ color:var(--or-rose); opacity:.5; }

/* Animation discrète du logo (couronne) au survol du header */
.hei-mark svg g{ transform-box:fill-box; transform-origin:center; }

/* Lien souligné animé */
.link-underline{ background-image:linear-gradient(var(--or-rose),var(--or-rose));
  background-size:0% 1.5px; background-position:0 100%; background-repeat:no-repeat;
  transition:background-size .3s ease; }
.link-underline:hover{ background-size:100% 1.5px; }

@media (prefers-reduced-motion: reduce){
  .btn-primary::after{ display:none; }
  .fe-card .card-media img{ transition:none; }
}
