/* ==========================================================
   B'Expert SAV — Couche motion premium (chargée EN DERNIER)
   Sobre et fluide : reveal, halos statiques, micro-lifts,
   transitions soignées. Respecte prefers-reduced-motion.
   ========================================================== */

/* ---------- Transition douce clair/sombre ---------- */
body, .sidebar, .card, .symptom-item, .check-item, .admin-card,
.explanation, .step-card, .benefit-item, .dg-stepper, .dg-progress,
.dg-sticky-bar .action-row, .ai-box, .ai-tests-box {
  transition: background-color .3s ease, border-color .3s ease, box-shadow .25s ease, transform .25s cubic-bezier(.16,1,.3,1);
}

/* ---------- Reveal on scroll ---------- */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .55s cubic-bezier(.16,1,.3,1), transform .55s cubic-bezier(.16,1,.3,1);
  transition-delay: var(--reveal-d, 0s);
}

.reveal.in {
  opacity: 1;
  transform: none;
}

/* ---------- Hero premium (accueil) ---------- */
.hero {
  position: relative;
}

.hero::before,
.hero::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  pointer-events: none;
  z-index: -1;
}

.hero::before {
  width: 360px;
  height: 360px;
  top: -100px;
  left: -80px;
  background: rgba(243, 112, 33, .1);
}

.hero::after {
  width: 320px;
  height: 320px;
  top: -50px;
  right: -70px;
  background: rgba(12, 35, 64, .07);
}

html.dark-mode .hero::after {
  background: rgba(64, 137, 190, .1);
}

.hero > * {
  position: relative;
  z-index: 1;
}

.hero-title {
  letter-spacing: -1.2px;
}

.hero-subtitle {
  letter-spacing: -.1px;
}

/* CTA : dégradé + lift net, sans effet */
.btn-hero {
  background: linear-gradient(135deg, #f37021 0%, #ff833e 100%);
  border: none;
  transition: transform .2s cubic-bezier(.16,1,.3,1), box-shadow .25s ease;
}

.btn-hero:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(243, 112, 33, .35);
}

/* ---------- Cartes : lift feutré ---------- */
.step-card, .benefit-item {
  transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s ease, border-color .25s ease;
}

.step-card:hover, .benefit-item:hover {
  transform: translateY(-3px);
  border-color: rgba(243, 112, 33, .3);
  box-shadow: 0 12px 26px -10px rgba(12, 35, 64, .18);
}

.step-card {
  overflow: hidden;
}

.step-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, #f37021, #ff833e);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s cubic-bezier(.16,1,.3,1);
}

.step-card:hover::before {
  transform: scaleX(1);
}

.benefit-icon {
  transition: transform .25s cubic-bezier(.16,1,.3,1), background-color .25s ease;
}

.benefit-item:hover .benefit-icon {
  transform: scale(1.06);
  background: var(--dg-orange-soft, #fff5ee);
}

/* ---------- Diagnostic : sobriété ---------- */
.dg-stepper li, .dg-step-dot {
  transition: all .25s ease;
}

.card:hover .card-icon {
  transform: scale(1.06);
}

.card-icon {
  transition: transform .25s cubic-bezier(.16,1,.3,1);
}

/* Checklist : coche franche, sans pop */
.check-item .check-box {
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

/* Barre sticky : entrée discrète */
.dg-sticky-bar {
  animation: dg-slide-up .3s ease;
}

@keyframes dg-slide-up {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}

/* Résultat : apparition feutrée */
#resultContent .result-box {
  animation: dg-result-in .4s ease;
}

@keyframes dg-result-in {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: none; }
}

/* ---------- Sidebar feutrée ---------- */
.sidebar-link {
  transition: background-color .2s ease, color .2s ease, transform .2s cubic-bezier(.16,1,.3,1);
}

.sidebar-link:hover {
  transform: translateX(2px);
}

.sidebar-link.active {
  box-shadow: inset 3px 0 0 var(--boulanger-orange);
}

/* ---------- Titres premium ---------- */
.dg-title {
  letter-spacing: -.8px;
}

.panel-title {
  letter-spacing: -.5px;
}

/* ---------- Accessibilité ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001s !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001s !important;
  }

  .reveal {
    opacity: 1;
    transform: none;
  }
}
