/*
Theme Name: GlamÉvent
Theme URI: https://glamevent.be/
Author: GlamÉvent Belgique
Description: Thème blocs (FSE) pour GlamÉvent Belgique — location d'équipements événementiels. Responsive, prêt pour les plugins (Polylang, WooCommerce, formulaires, SEO), entièrement éditable depuis Apparence > Éditeur.
Version: 1.1.1
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: glamevent
Tags: full-site-editing, block-patterns, blog, portfolio, one-column, two-columns, custom-colors, custom-logo, custom-menu, editor-style, featured-images, translation-ready, wide-blocks, accessibility-ready, rtl-language-support
*/

/* ==========================================================================
   1. Accessibilité
   ========================================================================== */

.skip-link.screen-reader-text {
  position: absolute; left: -9999px; top: 8px; z-index: 100000;
  padding: 12px 20px; background: var(--wp--preset--color--accent); color: #12100e;
  font-size: 13px; font-weight: 600; text-decoration: none;
}
.skip-link.screen-reader-text:focus { left: 8px; }

:where(a, button, input, textarea, select, .wp-block-button__link):focus-visible {
  outline: 2px solid var(--wp--preset--color--accent);
  outline-offset: 3px;
}

/* ==========================================================================
   2. Utilitaires du thème
   ========================================================================== */

.gv-nowrap, .gv-nowrap * { white-space: nowrap; }

/* Emplacement d'image vide : à remplacer par vos photos dans l'éditeur. */
.gv-placeholder {
  background: repeating-linear-gradient(115deg, rgba(230,201,143,.10) 0 2px, transparent 2px 11px);
  border: 1px solid rgba(245,240,230,.14);
  min-height: 220px;
  display: flex; align-items: flex-end; padding: 20px;
  font-family: var(--wp--preset--font-family--mono);
  font-size: 11px; color: rgba(245,240,230,.5);
}
.gv-placeholder img:not([src]), .gv-placeholder img[src=""] { display: none; }

.gv-rule {
  width: 28px; height: 1px; background: var(--wp--preset--color--accent);
  display: inline-block; vertical-align: middle; margin-right: 12px;
}

.gv-italic-accent em { font-style: italic; color: var(--wp--preset--color--accent); }

.gv-strip { border-top: 1px solid rgba(245,240,230,.09); border-bottom: 1px solid rgba(245,240,230,.09); }

/* Cartes (équipements, avis, articles) */
.gv-card {
  border: 1px solid rgba(245,240,230,.12);
  background: var(--wp--preset--color--surface);
  height: 100%;
  display: flex; flex-direction: column;
  transition: border-color .25s ease, transform .25s ease;
}
.gv-card:hover { border-color: rgba(230,201,143,.45); }
.gv-card .wp-block-post-featured-image { margin: 0; }
.gv-card .wp-block-post-featured-image img {
  aspect-ratio: 5 / 4; object-fit: cover; width: 100%; display: block;
}
.gv-card > .wp-block-group:last-child { flex: 1; display: flex; flex-direction: column; }
.gv-card .wp-block-group[style*="border-top"] { margin-top: auto; }

/* En-tête collant */
/* ============================================================
   En-tete collant
   ------------------------------------------------------------
   Le fond translucide + flou est porte par le pseudo-element
   ::before, et NON par .gv-header lui-meme.
   Raison : backdrop-filter fait de l element un « bloc conteneur »
   pour ses descendants en position:fixed. L overlay du menu mobile
   (.wp-block-navigation__responsive-container) etant en
   position:fixed, il se calait sur la boite de l en-tete
   (~1825 x 48 px) au lieu de couvrir la fenetre : menu ecrase et
   illisible a l ouverture.
   Isoler le flou dans ::before conserve l effet visuel tout en
   rendant la barre transparente pour le positionnement.
   ============================================================ */
.gv-header {
  position: sticky; top: 0; z-index: 50;
  background: transparent; /* deplace vers ::before, voir ci-dessous */
}
.gv-header::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1; /* derriere le contenu de l en-tete, devant la page */
  background: rgba(18,16,14,.86);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
/* Menu ouvert : l en-tete doit dominer la bulle WhatsApp et le CTA
   flottant (z-index 60), sinon ils passent par-dessus l overlay. */
.gv-header:has(.is-menu-open) { z-index: 100001; }
.admin-bar .gv-header { top: 32px; }

/* Bouton flottant devis */
.gv-sticky-cta { position: fixed; right: 28px; bottom: 28px; z-index: 60; }

/* ==========================================================================
   3. Blocs cœur — harmonisation
   ========================================================================== */

.wp-block-navigation { font-size: 13.5px; font-weight: 500; letter-spacing: .02em; }
.wp-block-navigation .wp-block-navigation-item__content { text-decoration: none; }
.wp-block-navigation .current-menu-item > .wp-block-navigation-item__content { color: var(--wp--preset--color--accent); }

.wp-block-details {
  border-bottom: 1px solid rgba(245,240,230,.12); padding: 0 0 4px;
}
.wp-block-details summary {
  cursor: pointer; padding: 24px 0; font-size: 18px; font-weight: 600; list-style: none;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; float: right; color: var(--wp--preset--color--accent); font-weight: 400; }
.wp-block-details[open] summary::after { content: "–"; }

.wp-block-quote { border-left: 1px solid var(--wp--preset--color--accent); padding-left: 24px; font-style: normal; }

.wp-block-table td, .wp-block-table th { border-color: rgba(245,240,230,.14); }

.wp-block-search__input, .wp-block-post-comments-form input, .wp-block-post-comments-form textarea,
input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="date"],
input[type="number"], select, textarea {
  background: var(--wp--preset--color--surface);
  border: 1px solid rgba(245,240,230,.18);
  color: var(--wp--preset--color--contrast);
  border-radius: 2px; padding: 13px 15px; font-family: inherit; font-size: 15px;
  width: 100%; max-width: 100%; box-sizing: border-box;
}
input::placeholder, textarea::placeholder { color: rgba(245,240,230,.38); }

.wp-block-post-comments-form .submit, button[type="submit"], input[type="submit"] {
  background: var(--wp--preset--color--accent); color: var(--wp--preset--color--base);
  border: 0; border-radius: 2px; padding: 15px 30px; cursor: pointer;
  font-size: 13.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  width: auto;
}

/* ==========================================================================
   4. Compatibilité plugins
   ========================================================================== */

/* Contact Form 7 / WPForms / Fluent Forms / Forminator */
.wpcf7 label, .wpforms-field-label, .fluentform label { font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: rgba(245,240,230,.6); }
.wpcf7-form p, .wpforms-field { margin-bottom: 18px; }
.wpcf7 .wpcf7-submit, .wpforms-submit, .fluentform .ff-btn-submit {
  background: var(--wp--preset--color--accent) !important; color: var(--wp--preset--color--base) !important;
  border: 0 !important; border-radius: 2px !important; padding: 15px 30px !important;
  font-weight: 600 !important; letter-spacing: .06em; text-transform: uppercase;
}
.wpcf7-not-valid-tip, .wpforms-error { color: #ff9c8a; font-size: 13px; }

/* Sélecteurs de langue (Polylang, TranslatePress, WPML, Weglot) */
.pll-parent-menu-item img, .lang-item img { display: inline-block; vertical-align: middle; }
.trp-language-switcher > div, .wpml-ls-statics-shortcode_actions,
.pll-switcher-select, #weglot_here {
  background: transparent !important; border-color: rgba(245,240,230,.18) !important;
  color: var(--wp--preset--color--contrast) !important;
  font-family: var(--wp--preset--font-family--mono); font-size: 11px; letter-spacing: .1em;
}
.wpml-ls-legacy-list-horizontal { padding: 0; border: 0; }
ul.lang-item-list, .wpml-ls-legacy-list-horizontal ul { display: flex; gap: 10px; list-style: none; margin: 0; padding: 0; }

/* WooCommerce (si vous vendez des packs en ligne) */
.woocommerce-page .wp-block-post-content { max-width: var(--wp--style--global--wide-size); }
.woocommerce ul.products li.product { border: 1px solid rgba(245,240,230,.12); background: var(--wp--preset--color--surface); padding: 0 0 20px; text-align: left; }
.woocommerce ul.products li.product img { margin: 0 0 16px; }
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .price, .woocommerce ul.products li.product .button { margin-left: 20px; margin-right: 20px; }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--wp--preset--font-family--display); font-size: 24px; font-weight: 400; }
.woocommerce span.onsale { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--base); border-radius: 2px; }
.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button {
  background: var(--wp--preset--color--accent); color: var(--wp--preset--color--base);
  border-radius: 2px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase;
}
.woocommerce div.product .product_title { font-family: var(--wp--preset--font-family--display); font-weight: 400; }
.woocommerce-info, .woocommerce-message { background: var(--wp--preset--color--surface); border-top-color: var(--wp--preset--color--accent); color: var(--wp--preset--color--contrast); }

/* Calendriers / réservation (The Events Calendar, Amelia, Bookly) */
.tribe-common, .amelia-app-booking, .bookly-form { color: var(--wp--preset--color--contrast); }
.tribe-common .tribe-common-c-btn, .amelia-app-booking .el-button--primary {
  background-color: var(--wp--preset--color--accent) !important; color: var(--wp--preset--color--base) !important; border: 0 !important;
}

/* Galeries / lightbox (Envira, NextGEN, Lightbox) */
.envira-gallery-wrap, .ngg-galleryoverview { margin: 0 auto; }

/* Cookie / RGPD (CookieYes, Complianz) */
.cky-consent-container, .cmplz-cookiebanner { font-family: var(--wp--preset--font-family--body) !important; }

/* Zones de widgets classiques (plugins qui n'utilisent pas encore les blocs) */
.gv-widget-area { display: grid; gap: 32px; }
.gv-widget-area .widget { border: 1px solid rgba(245,240,230,.12); padding: 26px; background: var(--wp--preset--color--surface); }
.gv-widget-area .widget-title, .gv-widget-area h2 {
  font-family: var(--wp--preset--font-family--mono); font-size: 11px;
  letter-spacing: .14em; text-transform: uppercase; color: rgba(245,240,230,.45); margin: 0 0 16px;
}
.gv-widget-area ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; font-size: 14px; }

/* ==========================================================================
   5. Responsive
   --------------------------------------------------------------------------
   Les colonnes de blocs s'empilent nativement sous 782px ; ces règles
   ajustent ce que WordPress ne gère pas seul (grilles, en-tête, titres).
   ========================================================================== */

/* Grand desktop */
@media (min-width: 1441px) {
  :root { --wp--style--global--wide-size: 1440px; }
}

/* Petit desktop / grande tablette */
@media (max-width: 1200px) {
  .gv-hero-title { font-size: clamp(44px, 7vw, 72px) !important; }
  .wp-block-query .wp-block-post-template.is-layout-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* Tablette */
@media (max-width: 980px) {
  body { --wp--preset--spacing--60: 72px; --wp--preset--spacing--50: 48px; }
  .gv-header .wp-block-navigation { font-size: 13px; }
  .wp-block-group[style*="padding-left:60px"] { padding-left: 32px !important; padding-right: 32px !important; }
}

/* Mobile */
@media (max-width: 781px) {
  body { padding-left: 0; padding-right: 0; }
  :root :where(body) { --wp--style--root--padding-left: 20px; --wp--style--root--padding-right: 20px; }

  .gv-hero-title { font-size: 42px !important; line-height: 1.02 !important; }
  h2 { font-size: 32px !important; }
  h3 { font-size: 25px !important; }

  .wp-block-query .wp-block-post-template.is-layout-grid { grid-template-columns: 1fr !important; }

  /* Sections : moitié de la respiration verticale */
  .wp-block-group[style*="padding-top:104px"] { padding-top: 56px !important; }
  .wp-block-group[style*="padding-bottom:104px"] { padding-bottom: 56px !important; }
  .wp-block-group[style*="padding-top:96px"] { padding-top: 40px !important; }
  .wp-block-group[style*="padding-top:80px"], .wp-block-group[style*="padding-bottom:80px"] { padding-top: 44px !important; padding-bottom: 44px !important; }
  .wp-block-group[style*="padding-top:64px"] { padding-top: 36px !important; }

  /* En-tête : logo à gauche, burger à droite */
  .gv-header .wp-block-group.is-layout-flex { gap: 14px; }
  .gv-header .gv-header-actions { display: none; }
  .wp-block-navigation__responsive-container.is-menu-open {
    padding: 24px 20px; background: var(--wp--preset--color--base);
  }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { font-size: 22px; }

  /* Bandeau : deux lignes lisibles */
  .gv-strip p { letter-spacing: .1em !important; line-height: 1.9; }

  /* Statistiques du héro : côte à côte en 3 colonnes serrées */
  .gv-stats.wp-block-columns { flex-wrap: nowrap !important; gap: 16px; }
  .gv-stats .wp-block-column { flex-basis: 33% !important; }
  .gv-stats p:first-child { font-size: 22px !important; }

  /* Boutons pleine largeur */
  .wp-block-buttons .wp-block-button { width: 100%; }
  .wp-block-buttons .wp-block-button__link { display: block; text-align: center; }

  .gv-sticky-cta { right: 14px; bottom: 14px; }
  .gv-sticky-cta .wp-block-button__link { padding: 13px 18px !important; font-size: 12px !important; }

  .gv-placeholder { min-height: 180px; }
  .wp-block-columns { gap: 32px; }
}

/* Très petit mobile */
@media (max-width: 420px) {
  .gv-hero-title { font-size: 34px !important; }
  .gv-stats { display: grid !important; grid-template-columns: 1fr 1fr; }
}

/* Impression */
@media print {
  .gv-header, .gv-sticky-cta, .wp-block-navigation, .gv-strip { display: none !important; }
  body { background: #fff !important; color: #000 !important; }
}

/* Préférence de mouvement réduit */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
