/**
 * LTD MUSIC — Divi Overrides
 * Safe-ish hooks for Divi modules. The LTD classes remain the primary API.
 */

/* Page canvas */
#page-container,
#main-content { background: var(--ltd-surface); }

/* Keep Divi rows predictable inside LTD sections */
.ltd-section > .et_pb_row,
.ltd-hero > .et_pb_row {
  width: min(90%, var(--ltd-content-width));
  max-width: var(--ltd-content-width);
}

/* Text modules: prevent Divi defaults from fighting the design classes */
.et_pb_text.ltd-display h1,
.et_pb_text.ltd-display h2,
.et_pb_text.ltd-display h3,
.et_pb_text.ltd-section-title h1,
.et_pb_text.ltd-section-title h2,
.et_pb_text.ltd-section-title h3 {
  color: inherit;
  font: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  padding-bottom: 0;
}

/* Buttons: Divi adds an arrow pseudo-element by default */
.et_pb_button.ltd-btn-primary::after,
.et_pb_button.ltd-btn-secondary::after,
.et_pb_button.ltd-btn-tertiary::after { display: none !important; }

.et_pb_button.ltd-btn-primary,
.et_pb_button.ltd-btn-secondary,
.et_pb_button.ltd-btn-tertiary { margin: 0; }

/* Image modules */
.ltd-card .et_pb_image,
.ltd-release-card .et_pb_image,
.ltd-product-card .et_pb_image { margin-bottom: 0 !important; }

.ltd-card .et_pb_image_wrap,
.ltd-release-card .et_pb_image_wrap,
.ltd-product-card .et_pb_image_wrap {
  display: block;
  border-radius: 0 !important;
}

/* Divi blurb as a reusable card */
.et_pb_blurb.ltd-card { padding: var(--ltd-space-6); }
.et_pb_blurb.ltd-card .et_pb_blurb_container { padding-left: 0; }
.et_pb_blurb.ltd-card .et_pb_module_header {
  color: var(--ltd-primary);
  font-family: var(--ltd-font-display);
  font-weight: 800;
  text-transform: uppercase;
}

/* Divi menu / Theme Builder header */
.ltd-topbar {
  min-height: var(--ltd-nav-height);
  background: var(--ltd-surface-container) !important;
  box-shadow: 0 0 15px rgba(0,220,230,.10);
  border-radius: 0 !important;
}

.ltd-topbar .et-menu a {
  color: var(--ltd-primary) !important;
  font-family: var(--ltd-font-display);
  font-size: .82rem;
  font-weight: 800;
  letter-spacing: -.01em;
  text-transform: uppercase;
  transition: color var(--ltd-speed) var(--ltd-ease), background-color var(--ltd-speed-fast) linear, transform var(--ltd-speed-fast) linear;
}

.ltd-topbar .et-menu a:hover {
  color: var(--ltd-primary-dim) !important;
  background: var(--ltd-surface-bright);
  transform: skewX(-6deg);
  opacity: 1 !important;
}

.ltd-topbar .et-menu .current-menu-item > a,
.ltd-topbar .et-menu .current_page_item > a {
  color: var(--ltd-primary-dim) !important;
  box-shadow: inset 0 -2px 0 var(--ltd-primary-dim);
}

/* Divi contact form — add ltd-form to the module */
.et_pb_contact_form_container.ltd-form .input,
.et_pb_contact_form_container.ltd-form textarea,
.et_pb_contact_form_container.ltd-form select {
  background: var(--ltd-surface-lowest) !important;
  color: var(--ltd-primary) !important;
  border: 0 !important;
  border-bottom: 2px solid var(--ltd-outline-variant) !important;
  border-radius: 0 !important;
}

.et_pb_contact_form_container.ltd-form .input:focus,
.et_pb_contact_form_container.ltd-form textarea:focus {
  border-bottom-color: var(--ltd-primary-dim) !important;
  box-shadow: 0 8px 18px -12px rgba(0,220,230,.6) !important;
}

/* Divi gallery / portfolio */
.ltd-gallery .et_pb_gallery_item,
.ltd-gallery .et_pb_portfolio_item {
  background: var(--ltd-surface-container);
  border-radius: 0 !important;
  overflow: hidden;
}

.ltd-gallery .et_overlay {
  background: rgba(14,14,14,.76) !important;
  border: 0 !important;
}

.ltd-gallery .et_overlay::before { color: var(--ltd-primary-dim) !important; }

/* WooCommerce rendered through Divi / WP */
.woocommerce .ltd-product-card,
.woocommerce ul.products li.product {
  border-radius: 0;
}

.ltd-woo .woocommerce ul.products li.product,
.woocommerce.ltd-woo ul.products li.product {
  overflow: hidden;
  background: var(--ltd-surface-container);
  box-shadow: inset 1px 0 0 var(--ltd-ghost-border), inset 0 1px 0 var(--ltd-ghost-border);
  transition: transform var(--ltd-speed) var(--ltd-ease), box-shadow var(--ltd-speed) var(--ltd-ease);
}

.ltd-woo .woocommerce ul.products li.product:hover,
.woocommerce.ltd-woo ul.products li.product:hover {
  transform: scale(1.02);
  box-shadow: var(--ltd-glow-secondary);
}

.ltd-woo .woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce.ltd-woo ul.products li.product .woocommerce-loop-product__title {
  color: var(--ltd-primary);
  font-family: var(--ltd-font-display);
  font-weight: 800;
  text-transform: uppercase;
}

.ltd-woo .price,
.woocommerce.ltd-woo .price {
  color: var(--ltd-secondary) !important;
  font-family: var(--ltd-font-display);
  font-weight: 700;
}

.ltd-woo .button,
.woocommerce.ltd-woo .button {
  background: var(--ltd-primary-container) !important;
  color: var(--ltd-on-primary-fixed) !important;
  border: 1px solid var(--ltd-primary-container) !important;
  border-radius: 0 !important;
  font-family: var(--ltd-font-display) !important;
  font-size: .75rem !important;
  font-weight: 800 !important;
  letter-spacing: .1em;
  text-transform: uppercase;
}

/* Checkout / cart forms */
.ltd-woo .woocommerce form .form-row input.input-text,
.ltd-woo .woocommerce form .form-row textarea,
.ltd-woo .woocommerce select,
.woocommerce.ltd-woo form .form-row input.input-text,
.woocommerce.ltd-woo form .form-row textarea,
.woocommerce.ltd-woo select {
  background: var(--ltd-surface-lowest) !important;
  color: var(--ltd-primary) !important;
  border: 0 !important;
  border-bottom: 2px solid var(--ltd-outline-variant) !important;
  border-radius: 0 !important;
}

@media (max-width: 980px) {
  .ltd-topbar .et_pb_menu__wrap { justify-content: flex-end; }
}

/* ==========================================================
   LTD MUSIC — FULLSCREEN SECTION TRANSITIONS
   ========================================================== */

html {
  scroll-behavior: auto;
  scroll-snap-type: y mandatory;
}

body {
  margin: 0;
}

/* Sections fullscreen */
.snap-section {
  position: relative;
  min-height: 100vh;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  overflow: hidden;
}

/* Entrée des sections */
.section-glitch {
  opacity: 0;
  transform: translateY(32px) scale(.99);
  filter: blur(3px);

  transition:
    opacity .55s ease,
    transform .75s cubic-bezier(.2,.8,.2,1),
    filter .45s ease;
}

.section-glitch.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}

/* Flash interne à la section */
.section-glitch::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 50;
  pointer-events: none;

  background: var(--ltd-primary-dim, #00dce6);
  opacity: 0;

  mix-blend-mode: screen;
}

.section-glitch.is-glitching::after {
  animation: ltdSectionFlash .32s steps(2, end);
}

/* Petit décalage de la section pendant le glitch */
.section-glitch.is-glitching {
  animation: ltdSectionGlitch .32s steps(2, end);
}

@keyframes ltdSectionFlash {

  0% {
    opacity: 0;
  }

  12% {
    opacity: .10;
  }

  24% {
    opacity: 0;
  }

  42% {
    opacity: .22;
  }

  52% {
    opacity: 0;
  }

  68% {
    opacity: .08;
  }

  100% {
    opacity: 0;
  }
}

@keyframes ltdSectionGlitch {

  0% {
    transform: translate(0, 0);
  }

  18% {
    transform: translate(-5px, 2px);
  }

  32% {
    transform: translate(6px, -2px);
  }

  48% {
    transform: translate(-3px, 1px);
  }

  64% {
    transform: translate(4px, -1px);
  }

  82% {
    transform: translate(-1px, 0);
  }

  100% {
    transform: translate(0, 0);
  }
}


/* ==========================================================
   TRANSITION PLEIN ÉCRAN AU CLIC DU MENU
   ========================================================== */

#ltd-page-transition {
  position: fixed;
  inset: 0;

  z-index: 999999;

  pointer-events: none;

  opacity: 0;
  visibility: hidden;

  background: #050707;

  overflow: hidden;
}

/* Bande cyan principale */
#ltd-page-transition::before {
  content: "";

  position: absolute;

  left: 0;
  right: 0;
  top: 50%;

  height: 2px;

  background: var(--ltd-primary-dim, #00dce6);

  box-shadow:
    0 0 8px rgba(0,220,230,.9),
    0 0 25px rgba(0,220,230,.45);

  transform: scaleX(0);
  transform-origin: center;
}

/* Flash secondaire */
#ltd-page-transition::after {
  content: "";

  position: absolute;
  inset: 0;

  background: var(--ltd-primary-dim, #00dce6);

  opacity: 0;

  mix-blend-mode: screen;
}


/* Phase d'entrée */
#ltd-page-transition.is-entering {
  visibility: visible;
  animation: ltdTransitionOverlayIn .16s steps(2, end) forwards;
}

#ltd-page-transition.is-entering::before {
  animation: ltdTransitionLineIn .16s ease-out forwards;
}

#ltd-page-transition.is-entering::after {
  animation: ltdTransitionFlashIn .16s steps(2, end) forwards;
}


/* Phase de sortie */
#ltd-page-transition.is-leaving {
  visibility: visible;
  animation: ltdTransitionOverlayOut .22s steps(2, end) forwards;
}

#ltd-page-transition.is-leaving::before {
  animation: ltdTransitionLineOut .22s ease-out forwards;
}

#ltd-page-transition.is-leaving::after {
  animation: ltdTransitionFlashOut .22s steps(2, end) forwards;
}


@keyframes ltdTransitionOverlayIn {

  0% {
    opacity: 0;
  }

  30% {
    opacity: .75;
  }

  55% {
    opacity: 1;
  }

  70% {
    opacity: .92;
  }

  100% {
    opacity: 1;
  }
}


@keyframes ltdTransitionLineIn {

  0% {
    transform: scaleX(0);
  }

  100% {
    transform: scaleX(1);
  }
}


@keyframes ltdTransitionFlashIn {

  0% {
    opacity: 0;
  }

  30% {
    opacity: .06;
  }

  45% {
    opacity: .20;
  }

  60% {
    opacity: 0;
  }

  80% {
    opacity: .08;
  }

  100% {
    opacity: 0;
  }
}


@keyframes ltdTransitionOverlayOut {

  0% {
    opacity: 1;
  }

  20% {
    opacity: .88;
  }

  38% {
    opacity: .45;
  }

  60% {
    opacity: .12;
  }

  100% {
    opacity: 0;
    visibility: hidden;
  }
}


@keyframes ltdTransitionLineOut {

  0% {
    transform: scaleX(1);
  }

  55% {
    transform: scaleX(.75);
  }

  100% {
    transform: scaleX(0);
  }
}


@keyframes ltdTransitionFlashOut {

  0% {
    opacity: 0;
  }

  22% {
    opacity: .16;
  }

  34% {
    opacity: 0;
  }

  52% {
    opacity: .08;
  }

  100% {
    opacity: 0;
  }
}


/* Accessibilité */
@media (prefers-reduced-motion: reduce) {

  html {
    scroll-behavior: auto;
  }

  .section-glitch,
  .section-glitch.is-visible {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }

  .section-glitch.is-glitching,
  .section-glitch.is-glitching::after {
    animation: none;
  }

}

/* ==========================================================
   DIVI VISUAL BUILDER — DÉSACTIVER LES EFFETS
   ========================================================== */

.et-fb .section-glitch,
.et-fb-root-ancestor .section-glitch {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    animation: none !important;
    transition: none !important;
}

.et-fb .section-glitch::after,
.et-fb-root-ancestor .section-glitch::after {
    display: none !important;
}

.et-fb .snap-section,
.et-fb-root-ancestor .snap-section {
    scroll-snap-align: none !important;
    scroll-snap-stop: normal !important;
    overflow: visible !important;
}

.et-fb html,
.et-fb-root-ancestor {
    scroll-snap-type: none !important;
}

/* ==========================================================
   DIVI Empty Footer
   ========================================================== */

.ltd-empty-footer {
    height: 1px !important;
    min-height: 1px !important;
    padding: 0 !important;
    margin: 0 !important;
    background: #000 !important;
    overflow: hidden !important;
}

.ltd-empty-footer .et_pb_row {
    display: none !important;
}

/* ==========================================================
   LTD MOBILE — DISABLE FULLSCREEN / SCROLL SNAP
   ========================================================== */

@media (max-width: 980px) {

  /*
   * Disable page scroll snapping.
   */
  html {
    scroll-snap-type: none !important;
    scroll-behavior: auto;
  }

  /*
   * Sections must grow naturally according to their content.
   */
  .snap-section,
  .et_pb_section.snap-section {
    height: auto !important;
    min-height: 0 !important;

    overflow: visible !important;

    scroll-snap-align: none !important;
    scroll-snap-stop: normal !important;
  }

  /*
   * Give each section some vertical breathing room
   * instead of forcing 100vh.
   */
  .snap-section {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
  }

  /*
   * Allow Divi rows and columns to expand naturally.
   */
  .snap-section > .et_pb_row {
    height: auto !important;
    min-height: 0 !important;

    overflow: visible !important;
  }

  .snap-section .et_pb_column {
    height: auto !important;
    min-height: 0 !important;

    overflow: visible !important;
  }

  /*
   * Prevent transition effects from hiding content on mobile.
   */
  .section-glitch {
    opacity: 1;
    transform: none;
    filter: none;
  }

}

/* ==========================================================
   LTD WIDE ROW
   ========================================================== */

.ltd-wide-row {
  width: 92% !important;
  max-width: 1600px !important;
}
/* ==========================================================
   CONTACT — WIDTH FIX
   ========================================================== */

.ltd-contact-section .ltd-wide-row {
  width: 92% !important;
  max-width: 1600px !important;
}

/* Les deux colonnes utilisent tout leur espace disponible */
.ltd-contact-section .et_pb_column {
  margin-right: 0 !important;
}

/* Les modules remplissent leur colonne */
.ltd-contact-info,
.ltd-contact-panel {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* CF7 remplit également tout le panneau */
.ltd-contact-panel .wpcf7,
.ltd-contact-panel form,
.ltd-contact-form {
  width: 100% !important;
  max-width: none !important;
} 