/* ==========================================================================
   UrbanVoirie — gravure personnalisée
   Le bloc est injecté DANS le formulaire d'achat, juste après le bouton.
   ========================================================================== */

/* le formulaire d'achat : quantité + boutons sur une ligne, gravure dessous.
   Sélecteurs volontairement très spécifiques : ceux d'Astra et de WooCommerce
   (body.woocommerce div.product form.cart) battent une classe simple. */
body.woocommerce div.product form.cart,
body.woocommerce-page div.product form.cart,
.elementor-widget-woocommerce-product-add-to-cart form.cart,
form.cart{
  display:flex !important;flex-wrap:wrap !important;align-items:center !important;
  gap:12px !important;margin:0 !important;padding:0 !important;
  border:0 !important;
}
body.woocommerce div.product form.cart::before,
body.woocommerce div.product form.cart::after,
form.cart::before,form.cart::after{display:none !important;content:none !important}

/* le bouton devis passe sur sa propre ligne, sous « Ajouter au panier ».
   YITH l'insère à la suite du bouton avec ses propres marges : on force
   son enveloppe à occuper 100 % de la ligne, elle passe donc au-dessous. */
form.cart .yith-ywraq-add-to-quote,
form.cart .add-request-quote-button-wrapper{
  display:flex !important;flex:0 0 100% !important;width:100% !important;
  margin:0 !important;padding:0 !important;
}
form.cart .yith-ywraq-add-to-quote>div{display:flex !important;width:100% !important;margin:0 !important;padding:0 !important}

body.woocommerce div.product form.cart>*,
form.cart>*{margin:0 !important}
body.woocommerce div.product form.cart .quantity,
form.cart .quantity{
  flex:0 0 auto !important;margin:0 !important;padding:0 !important;
  float:none !important;width:auto !important;
}
form.cart .quantity input.qty{margin:0 !important}
body.woocommerce div.product form.cart .single_add_to_cart_button,
form.cart .single_add_to_cart_button,
form.cart .yith-ywraq-add-to-quote a,
form.cart a.add-request-quote-button,
form.cart button.add-request-quote-button{
  display:inline-flex !important;align-items:center !important;justify-content:center !important;
  flex:1 1 190px !important;width:auto !important;min-width:0 !important;min-height:52px !important;
  padding:0 22px !important;margin:0 !important;
  border:0 !important;border-radius:4px !important;box-shadow:none !important;
  font-family:'DM Sans',sans-serif !important;font-weight:700 !important;font-size:16px !important;
  line-height:1.2 !important;letter-spacing:-.01em !important;text-transform:none !important;
  text-align:center !important;white-space:nowrap !important;cursor:pointer !important;
  transition:background .15s !important;
}form.cart .single_add_to_cart_button{background:#1B86D0 !important;color:#fff !important}
form.cart .single_add_to_cart_button:hover{background:#1670B1 !important;color:#fff !important}

/* bouton devis YITH : version secondaire */
form.cart .yith-ywraq-add-to-quote a,
form.cart a.add-request-quote-button{
  flex:1 1 100% !important;width:100% !important;
  background:#fff !important;border:1.5px solid #DDE3E9 !important;color:#4A5A6B !important;text-decoration:none !important;
}
form.cart .yith-ywraq-add-to-quote a:hover,
form.cart a.add-request-quote-button:hover{background:#FAFBFC !important;border-color:#0F3557 !important;color:#0F3557 !important}

/* champ quantité */
form.cart .quantity input.qty{
  height:52px !important;width:78px !important;padding:0 10px !important;
  border:1px solid #DDE3E9 !important;border-radius:4px !important;
  font-family:'DM Sans',sans-serif !important;font-weight:700 !important;font-size:17px !important;
  text-align:center !important;color:#0F1E2E !important;
}

/* ---------------------------------------------------------------------------
   Bouton « Ajouter au devis » (YITH)
   Aucune de ces règles ne dépend de form.cart : selon les réglages, YITH place
   son bouton dans le formulaire OU juste à côté. On couvre les deux cas.
   --------------------------------------------------------------------------- */
body.single-product .yith-ywraq-add-to-quote,
body.single-product .add-request-quote-button-wrapper,
body.single-product div[class*="yith-ywraq-add-to-quote"]{
  display:block !important;flex:0 0 100% !important;width:100% !important;
  max-width:none !important;order:99 !important;margin:10px 0 0 !important;padding:0 !important;
  float:none !important;clear:both !important;text-align:left !important;
}
body.single-product .yith-ywraq-add-to-quote>div{display:block !important;width:100% !important;margin:0 !important;padding:0 !important}

body.single-product .yith-ywraq-add-to-quote a,
body.single-product .yith-ywraq-add-to-quote button,
body.single-product .yith-ywraq-add-to-quote .button,
body.single-product a.add-request-quote-button,
body.single-product button.add-request-quote-button,
body.single-product .add-request-quote-button-wrapper a{
  display:flex !important;align-items:center !important;justify-content:center !important;
  width:100% !important;max-width:none !important;min-height:52px !important;
  margin:0 !important;padding:0 22px !important;
  background:#fff !important;background-image:none !important;
  border:1.5px solid #DDE3E9 !important;border-radius:4px !important;box-shadow:none !important;
  font-family:'DM Sans',sans-serif !important;font-weight:700 !important;font-size:16px !important;
  line-height:1.2 !important;letter-spacing:-.01em !important;text-transform:none !important;
  text-align:center !important;text-decoration:none !important;color:#4A5A6B !important;
  cursor:pointer !important;transition:border-color .15s,color .15s !important;
}
body.single-product .yith-ywraq-add-to-quote a:hover,
body.single-product a.add-request-quote-button:hover,
body.single-product .add-request-quote-button-wrapper a:hover{
  background:#FAFBFC !important;border-color:#0F3557 !important;color:#0F3557 !important;
}

/* ----- le bloc gravure : toujours sur sa propre ligne, sous les boutons ----- */
.uv-perso-bloc{flex:0 0 100% !important;width:100% !important;max-width:none !important;margin:6px 0 0 !important;font-family:'DM Sans',sans-serif}
.uv-perso-bloc *{box-sizing:border-box}

.uv-perso-check{display:flex !important;align-items:flex-start !important;gap:12px !important;margin:0 !important;padding:15px 18px !important;background:#FAFBFC;border:1px solid #DDE3E9;border-radius:4px;cursor:pointer}
.uv-perso-check input[type=checkbox]{flex:0 0 auto !important;width:18px !important;height:18px !important;margin:2px 0 0 !important;accent-color:#0F3557}
.uv-perso-txt{display:block;flex:1}
.uv-perso-txt strong{display:block;font-style:normal;font-weight:700;font-size:15.5px;line-height:1.35;letter-spacing:-.01em;color:#0F1E2E}
.uv-perso-txt em{display:block;margin-top:3px;font-style:normal;font-weight:400;font-size:14px;line-height:1.5;color:#7A8896}

.uv-perso-champs{display:flex;flex-direction:column;gap:14px;margin-top:-1px;padding:18px;background:#fff;border:1px solid #1B86D0;border-top-color:#DDE3E9;border-radius:0 0 4px 4px}
.uv-perso-champs[hidden]{display:none}
.uv-perso-check:has(input:checked){border-color:#1B86D0;border-bottom-color:transparent;border-radius:4px 4px 0 0;background:#F7FAFC}

.uv-perso-field{display:flex;flex-direction:column;gap:6px;margin:0 !important}
.uv-perso-field label{font-weight:600;font-size:13.5px;color:#5A6875}
.uv-perso-field label span{font-weight:400;color:#8A96A3}
.uv-perso-field input[type=text]{width:100% !important;height:48px !important;padding:0 13px !important;background:#fff !important;border:1px solid #DDE3E9 !important;border-radius:4px !important;box-shadow:none !important;font-family:inherit !important;font-size:16px !important;color:#0F1E2E !important}
.uv-perso-field input[type=text]:focus{border-color:#1B86D0 !important;outline:0 !important;box-shadow:0 0 0 2px rgba(27,134,208,.15) !important}
.uv-perso-aide{font-size:13px;line-height:1.5;color:#8A96A3}

.uv-perso-note{padding:13px 15px;background:#F7F9FB;border-left:3px solid #0F3557;font-size:14px;line-height:1.55;color:#4A5A6B}

/* gravure cochée : plus de paiement direct */
body.uv-perso-devis form.cart .single_add_to_cart_button{display:none !important}

/* ligne de gravure ajoutée sous le produit, sur la page de devis */
.uv-grav-ligne{
  display:block;margin:8px 0 0;padding:8px 11px;
  background:#F2F8FD;border-left:3px solid #1B86D0;border-radius:0 3px 3px 0;
  font-family:'DM Sans',sans-serif;font-weight:500;font-size:13.5px;line-height:1.5;color:#0F1E2E;
}
.uv-grav-ligne strong{font-weight:700;color:#1B6FAD}
.uv-grav-logo{display:block;margin-top:2px;font-size:13px;color:#5A6875}

/* badge « Gravé » dans le panier et le devis */
.uv-perso-badge{display:inline-block;margin-left:8px;padding:2px 7px;background:#F2F8FD;border:1px solid #CFE3F3;border-radius:3px;font-family:'DM Sans',sans-serif;font-weight:700;font-size:11.5px;letter-spacing:.02em;color:#1B6FAD;vertical-align:middle}

/* ----- mobile ----- */
@media(max-width:600px){
  form.cart .quantity,
  form.cart .quantity input.qty{flex:0 0 100% !important;width:100% !important}
  form.cart .single_add_to_cart_button{flex:1 1 100% !important;width:100% !important}
  .uv-perso-check{padding:14px 15px !important}
  .uv-perso-champs{padding:15px}
  .uv-perso-txt strong{font-size:15px}
}

/* ==========================================================================
   Bandeau « déjà dans la demande de devis », rendu côté serveur.
   Placé dans form.cart, il peut donc être ordonné, contrairement à
   l'enveloppe de YITH qui vit en dehors du formulaire.
   ========================================================================== */
.uv-devis-ok{
  display:flex !important;flex-wrap:wrap !important;align-items:center !important;
  justify-content:space-between !important;gap:8px 16px !important;
  flex:0 0 100% !important;width:100% !important;box-sizing:border-box !important;
  order:6 !important;margin:10px 0 0 !important;
  padding:13px 18px 13px 46px !important;position:relative !important;
  background:#F2F9F5 !important;border:1px solid #CBE5D6 !important;border-radius:4px !important;
  font-family:'DM Sans',sans-serif !important;font-size:14.5px !important;line-height:1.45 !important;
}
.uv-devis-ok::before{
  content:'';position:absolute;left:16px;top:50%;transform:translateY(-50%);width:18px;height:18px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23167A4E' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") no-repeat center/contain;
}
.uv-devis-ok__txt{font-weight:600 !important;color:#14603E !important}
.uv-devis-ok__lien{
  font-weight:700 !important;color:#14603E !important;
  text-decoration:underline !important;text-underline-offset:2px !important;white-space:nowrap !important;
}
.uv-devis-ok__lien:hover{color:#0E4A31 !important}

/* ordre dans le formulaire : quantité et panier, bandeau, gravure */
form.cart .quantity{order:1 !important}
form.cart .single_add_to_cart_button{order:2 !important}
form.cart .uv-devis-ok{order:6 !important}
form.cart .uv-perso-bloc,
.uv-perso-bloc{order:8 !important;flex:0 0 100% !important;width:100% !important;margin:10px 0 0 !important}

/* le message de YITH devient un doublon : on le masque quand le nôtre est là */
.uv-q-doublon{display:none !important}
