﻿/*
 * Dorana Diffusion â€” styles.css
 * Direction artistique : premium Ã©ditorial cosmÃ©tique, fÃ©minin & intemporel.
 * Palette : mauve profond (#7A3A76 / #A24AA0), noir encrÃ©,
 *           crÃ¨mes chaudes (#F6EFE7 / #FAF6F1), accent or (#B89B6B).
 * Type    : Cormorant Garamond (display) + Manrope (UI).
 */

/* ============================================================
   VARIABLES & RESET
   ============================================================ */

:root {
  --mauve-900: #3B1A38;
  --mauve-800: #55285A;
  --mauve-700: #7A3A76;
  --mauve-500: #A24AA0;
  --mauve-300: #C88FC4;
  --mauve-100: #EFDDEC;

  --ink:   #14101A;
  --ink-2: #2A2330;
  --muted: #6B6172;

  --cream:   #FAF6F1;
  --cream-2: #F2EADF;

  --line:        rgba(20, 16, 26, .12);
  --line-strong: rgba(20, 16, 26, .22);

  --gold: #B89B6B;

  --f-display: "Cormorant Garamond", "Times New Roman", serif;
  --f-sans:    "Manrope", ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;

  --pad-x: clamp(20px, 5vw, 96px);
  --maxw:  1360px;

  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
}

*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

html,
body { margin: 0; padding: 0; }

body {
  font-family:            var(--f-sans);
  color:                  var(--ink);
  background:             var(--cream);
  -webkit-font-smoothing: antialiased;
  text-rendering:         optimizeLegibility;
  font-size:   16px;
  line-height: 1.55;
  position:    relative;
}

body::before {
  content:        "";
  position:       fixed;
  inset:          0;
  pointer-events: none;
  z-index:        1;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.08  0 0 0 0 0.06  0 0 0 0 0.1  0 0 0 0.35 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.35'/></svg>");
  opacity:        .5;
  mix-blend-mode: multiply;
}

.nav,
.hero,
.brands,
section.block,
.catalogue,
footer {
  position: relative;
  z-index:  2;
}

img { max-width: 100%; display: block; }

a { color: inherit; text-decoration: none; }

button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }

::selection { background: var(--mauve-500); color: #fff; }


/* ============================================================
   SITE-NAV CUSTOM ELEMENT
   ============================================================ */

site-nav { display: contents; }


/* ============================================================
   SCROLL PROGRESS BAR
   ============================================================ */

.scroll-progress {
  position:   fixed;
  top:        0;
  left:       0;
  height:     2px;
  width:      0%;
  background: linear-gradient(90deg, var(--mauve-700), var(--mauve-300), var(--gold));
  z-index:    300;
  transition: width 80ms linear;
}


/* ============================================================
   SCROLL TO TOP
   ============================================================ */

.scroll-top {
  position:        fixed;
  bottom:          32px;
  right:           32px;
  z-index:         90;
  width:           48px;
  height:          48px;
  border-radius:   50%;
  background:      var(--ink);
  color:           var(--cream);
  display:         flex;
  align-items:     center;
  justify-content: center;
  box-shadow:      0 8px 24px -8px rgba(20, 16, 26, .5);
  opacity:         0;
  transform:       translateY(12px);
  pointer-events:  none;
  transition:      opacity .3s var(--ease-out), transform .3s var(--ease-out);
}

.scroll-top.is-visible {
  opacity:        1;
  transform:      translateY(0);
  pointer-events: auto;
}

.scroll-top:hover {
  background:  var(--mauve-700);
  transform:   translateY(-2px);
}


/* ============================================================
   HELPERS
   ============================================================ */

.container {
  max-width:      var(--maxw);
  margin:         0 auto;
  padding-inline: var(--pad-x);
}

.eyebrow {
  font-family:    var(--f-sans);
  font-size:      12px;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight:    600;
  color:          var(--mauve-700);
  display:        inline-flex;
  align-items:    center;
  gap:            10px;
}

.eyebrow::before {
  content:    "";
  width:      28px;
  height:     1px;
  background: var(--mauve-700);
  flex-shrink: 0;
}

h1, h2, h3, h4 {
  font-family:    var(--f-display);
  font-weight:    500;
  letter-spacing: -0.01em;
  margin:         0;
  color:          var(--ink);
}

h1 { font-size: clamp(42px, 5.8vw, 92px); line-height: 1.02; letter-spacing: -0.025em; }
h2 { font-size: clamp(30px, 3.8vw, 54px); line-height: 1.1;  }
h3 { font-size: clamp(20px, 1.8vw, 26px); line-height: 1.2;  }

p { margin: 0; }

.italic { font-style: italic; color: var(--mauve-700); }


/* ============================================================
   BUTTONS
   ============================================================ */

.btn {
  display:        inline-flex;
  align-items:    center;
  gap:            10px;
  padding:        16px 24px;
  border-radius:  999px;
  font-weight:    600;
  font-size:      14px;
  letter-spacing: .02em;
  transition:     transform .2s var(--ease-out), background .2s ease, color .2s ease, box-shadow .25s ease;
  white-space:    nowrap;
}

.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn--sm { padding: 12px 18px; }

.btn .arrow {
  width:           18px;
  height:          18px;
  border-radius:   50%;
  display:         inline-flex;
  align-items:     center;
  justify-content: center;
  transition:      transform .25s var(--ease-out);
  flex-shrink:     0;
}

.btn:hover .arrow { transform: translateX(3px); }

.btn-primary {
  background: var(--ink);
  color:      var(--cream);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .06) inset, 0 8px 28px -12px rgba(20, 16, 26, .5);
}

.btn-primary .arrow { background: var(--mauve-500); color: #fff; }
.btn-primary:hover  { background: var(--mauve-800); box-shadow: 0 12px 32px -12px rgba(85, 40, 90, .6); }

.btn-ghost {
  background:   transparent;
  color:        var(--ink);
  border:       1px solid var(--line-strong);
}

.btn-ghost .arrow  { background: var(--ink);  color: var(--cream); }
.btn-ghost:hover   { background: var(--ink);  color: var(--cream); }
.btn-ghost:hover .arrow { background: var(--mauve-500); }

/* Bouton catalogue (nav) */
.btn-catalogue {
  background:   rgba(122, 58, 118, .1);
  color:        var(--mauve-700);
  border:       1px solid rgba(122, 58, 118, .2);
  gap:          8px;
}

.btn-catalogue:hover {
  background: var(--mauve-700);
  color:      #fff;
  border-color: var(--mauve-700);
}

/* Bouton tÃ©lÃ©chargement (catalogue section) */
.btn-download {
  background:   linear-gradient(135deg, var(--mauve-700) 0%, var(--mauve-500) 100%);
  color:        #fff;
  padding:      18px 32px;
  font-size:    15px;
  box-shadow:   0 12px 40px -12px rgba(122, 58, 118, .65);
  gap:          12px;
}

.btn-download:hover {
  background:  linear-gradient(135deg, var(--mauve-800) 0%, var(--mauve-700) 100%);
  box-shadow:  0 16px 48px -12px rgba(122, 58, 118, .8);
  transform:   translateY(-2px);
}

.btn-download .btn-download__icon {
  flex-shrink: 0;
  transition:  transform .3s var(--ease-out);
}

.btn-download:hover .btn-download__icon { transform: translateY(3px); }

.btn-ghost-light {
  background:   transparent;
  color:        rgba(250, 246, 241, .9);
  border:       1px solid rgba(250, 246, 241, .2);
}

.btn-ghost-light .arrow { background: rgba(250, 246, 241, .2); color: #fff; }
.btn-ghost-light:hover  { background: rgba(250, 246, 241, .08); border-color: rgba(250, 246, 241, .4); }


/* ============================================================
   ANIMATIONS â€” SCROLL (IntersectionObserver)
   ============================================================ */

[data-animate] {
  opacity:    0;
  transform:  translateY(36px);
  transition: opacity .75s var(--ease-out), transform .75s var(--ease-out);
}

[data-animate].is-visible {
  opacity:   1;
  transform: translateY(0);
}

[data-delay="100"]  { transition-delay:  .1s;  }
[data-delay="150"]  { transition-delay:  .15s; }
[data-delay="160"]  { transition-delay:  .16s; }
[data-delay="180"]  { transition-delay:  .18s; }
[data-delay="200"]  { transition-delay:  .2s;  }
[data-delay="220"]  { transition-delay:  .22s; }
[data-delay="260"]  { transition-delay:  .26s; }
[data-delay="270"]  { transition-delay:  .27s; }
[data-delay="280"]  { transition-delay:  .28s; }
[data-delay="340"]  { transition-delay:  .34s; }
[data-delay="400"]  { transition-delay:  .4s;  }

@media (prefers-reduced-motion: reduce) {
  [data-animate],
  .hero-anim {
    transition: none;
    animation:  none;
    opacity:    1;
    transform:  none;
  }
}


/* ============================================================
   NAV
   ============================================================ */

.nav {
  position:        sticky;
  top:             0;
  z-index:         50;
  backdrop-filter: blur(16px) saturate(180%);
  background:      color-mix(in oklab, var(--cream) 82%, transparent);
  border-bottom:   1px solid var(--line);
  transition:      background .3s ease, box-shadow .3s ease;
}

.nav--scrolled {
  background: color-mix(in oklab, var(--cream) 94%, transparent);
  box-shadow: 0 4px 32px -8px rgba(20, 16, 26, .1);
}

.nav-inner {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  height:          74px;
}

.brand { display: flex; align-items: center; gap: 12px; }
.brand img { height: 38px; width: auto; transition: opacity .2s; }
.brand:hover img { opacity: .8; }

.nav-links { display: flex; gap: 30px; align-items: center; }

.nav-links a {
  font-size:   14px;
  font-weight: 500;
  color:       var(--ink-2);
  position:    relative;
  padding:     6px 0;
}

.nav-links a::after {
  content:    "";
  position:   absolute;
  bottom:     0;
  left:       0;
  width:      0;
  height:     1px;
  background: var(--mauve-700);
  transition: width .25s var(--ease-out);
}

.nav-links a:hover { color: var(--mauve-700); }
.nav-links a:hover::after { width: 100%; }

.nav-cta { display: flex; gap: 10px; align-items: center; }

.nav-cta .phone {
  font-size:            13px;
  color:                var(--muted);
  font-variant-numeric: tabular-nums;
}

.nav-cta .phone b { color: var(--ink); font-weight: 600; }

/* Hamburger */
.nav-toggle {
  display:         none;
  flex-direction:  column;
  justify-content: center;
  gap:             5px;
  width:           40px;
  height:          40px;
  border-radius:   8px;
  padding:         8px;
  cursor:          pointer;
}

.nav-toggle span {
  display:       block;
  width:         100%;
  height:        1.5px;
  background:    var(--ink);
  border-radius: 2px;
  transition:    transform .3s var(--ease-out), opacity .2s;
}

.nav-toggle.is-open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-toggle.is-open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

@media (max-width: 1080px) {
  .nav-cta .phone   { display: none; }
  .nav-cta .btn-catalogue { display: none; }
}

@media (max-width: 900px) {
  .nav-links  { display: none; }
  .nav-toggle { display: flex; }
}


/* ============================================================
   NAV DROPDOWN â€” "Produits"
   ============================================================ */

.nav-dropdown { position: relative; }

.nav-dropdown__btn {
  display:     flex;
  align-items: center;
  gap:         5px;
  font-size:   14px;
  font-weight: 500;
  color:       var(--ink-2);
  padding:     6px 0;
  cursor:      pointer;
  background:  none;
  border:      none;
  font-family: inherit;
  position:    relative;
  transition:  color .2s;
}

.nav-dropdown__btn::after {
  content:    "";
  position:   absolute;
  bottom:     0;
  left:       0;
  width:      0;
  height:     1px;
  background: var(--mauve-700);
  transition: width .25s var(--ease-out);
}

.nav-dropdown__btn:hover,
.nav-dropdown.is-open .nav-dropdown__btn    { color: var(--mauve-700); }

.nav-dropdown__btn:hover::after,
.nav-dropdown.is-open .nav-dropdown__btn::after { width: 100%; }

.nav-dropdown__btn.nav-active               { color: var(--apolo-500); }
.nav-dropdown__btn.nav-active::after        { width: 100%; background: var(--apolo-500); }

.nav-dropdown__chevron {
  flex-shrink: 0;
  transition:  transform .25s var(--ease-out);
}

.nav-dropdown.is-open .nav-dropdown__chevron { transform: rotate(180deg); }

.nav-dropdown__panel {
  position:       absolute;
  top:            calc(100% + 14px);
  left:           50%;
  transform:      translateX(-50%) translateY(-8px);
  min-width:      210px;
  background:     var(--cream);
  border:         1px solid var(--line);
  border-radius:  12px;
  box-shadow:     0 20px 60px -12px rgba(20, 16, 26, .18), 0 4px 16px -4px rgba(20, 16, 26, .08);
  padding:        6px;
  opacity:        0;
  pointer-events: none;
  transition:     opacity .2s var(--ease-out), transform .2s var(--ease-out);
  z-index:        10;
}

.nav-dropdown__panel::before {
  content:     "";
  position:    absolute;
  top:         -5px;
  left:        50%;
  transform:   translateX(-50%) rotate(45deg);
  width:       9px;
  height:      9px;
  background:  var(--cream);
  border-top:  1px solid var(--line);
  border-left: 1px solid var(--line);
}

.nav-dropdown.is-open .nav-dropdown__panel {
  opacity:        1;
  pointer-events: auto;
  transform:      translateX(-50%) translateY(0);
}

.nav-dropdown__item {
  display:        flex;
  flex-direction: column;
  gap:            2px;
  padding:        10px 14px;
  border-radius:  7px;
  transition:     background .15s;
}

.nav-dropdown__item:hover { background: rgba(122, 58, 118, .07); }

.nav-dropdown__sep {
  height:     1px;
  background: var(--line);
  margin:     3px 8px;
}

.nav-dropdown__item-label {
  font-size:   13px;
  font-weight: 600;
  color:       var(--ink);
}

.nav-dropdown__item-sub {
  font-size: 11.5px;
  color:     var(--muted);
}


/* ============================================================
   MOBILE NAV
   ============================================================ */

.mobile-overlay {
  position:        fixed;
  inset:           0;
  z-index:         60;
  background:      rgba(20, 16, 26, .6);
  backdrop-filter: blur(4px);
  opacity:         0;
  pointer-events:  none;
  transition:      opacity .3s ease;
}

.mobile-overlay.is-visible {
  opacity:        1;
  pointer-events: auto;
}

.mobile-nav {
  position:    fixed;
  top:         0;
  right:       0;
  bottom:      0;
  z-index:     70;
  width:       min(360px, 88vw);
  background:  var(--cream);
  padding:     88px 32px 40px;
  display:     flex;
  flex-direction: column;
  gap:         40px;
  transform:   translateX(100%);
  transition:  transform .4s var(--ease-out);
  overflow-y:  auto;
  border-left: 1px solid var(--line);
}

.mobile-nav.is-open {
  transform: translateX(0);
}

.mobile-nav__links {
  display:       flex;
  flex-direction: column;
  gap:           4px;
}

.mobile-nav__links a {
  font-size:   18px;
  font-weight: 500;
  color:       var(--ink);
  padding:     14px 0;
  border-bottom: 1px solid var(--line);
  display:     flex;
  align-items: center;
  justify-content: space-between;
  transition:  color .2s, padding-left .2s;
}

.mobile-nav__links a::after { content: "â†’"; font-size: 14px; color: var(--mauve-300); }

.mobile-nav__links a:hover { color: var(--mauve-700); padding-left: 8px; }

.mobile-nav__footer {
  display:       flex;
  flex-direction: column;
  gap:           12px;
  margin-top:    auto;
}

.mobile-nav__footer .btn { justify-content: center; }



/* ============================================================
   SECTION BASE
   ============================================================ */

section.block { padding: clamp(72px, 10vw, 140px) 0; }

.section-head {
  display:               grid;
  grid-template-columns: .9fr 1.1fr;
  gap:                   clamp(24px, 4vw, 64px);
  align-items:           end;
  margin-bottom:         clamp(48px, 6vw, 80px);
}

@media (max-width: 900px) {
  .section-head { grid-template-columns: 1fr; }
}

.section-head h2 { margin-top: 18px; }

.section-head p.lede {
  color:     var(--ink-2);
  font-size: 18px;
  max-width: 52ch;
}



/* ============================================================
   FOOTER
   ============================================================ */

footer {
  background: var(--ink);
  color:      var(--cream);
  padding:    clamp(56px, 6vw, 80px) 0 32px;
}

.foot-grid {
  display:               grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap:                   40px;
  padding-bottom:        48px;
  border-bottom:         1px solid rgba(255, 255, 255, .1);
}

@media (max-width: 780px) {
  .foot-grid { grid-template-columns: 1fr 1fr; }
}

.foot-brand img { height: 44px; filter: brightness(0) invert(1); opacity: .9; }

.foot-brand p { color: rgba(250, 246, 241, .55); font-size: 14px; margin-top: 20px; max-width: 34ch; line-height: 1.65; }

.foot-col h5 {
  font-family:    var(--f-sans);
  font-size:      12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color:          var(--mauve-300);
  margin:         0 0 18px;
  font-weight:    600;
}

.foot-col ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 11px; }

.foot-col a { color: rgba(250, 246, 241, .75); font-size: 14px; transition: color .2s, padding-left .2s; display: inline-block; }
.foot-col a:hover { color: var(--mauve-300); padding-left: 4px; }

.foot-col p { color: rgba(250, 246, 241, .6); font-size: 14px; line-height: 1.75; margin: 0; }

.foot-bottom {
  display:         flex;
  justify-content: space-between;
  align-items:     center;
  padding-top:     28px;
  gap:             16px;
  font-size:       12px;
  color:           rgba(250, 246, 241, .45);
  flex-wrap:       wrap;
}

.foot-bottom a:hover { color: var(--mauve-300); }

