/* ============================================================
 * Goodies Pub France — Design system (source de vérité unique)
 * Chargé site-wide (head). Tokens + composants réutilisables :
 * fiche produit, panier, checkout, devis, page collectivités.
 * Palette/typo issues de la maquette « Refonte fiche produit ».
 * ------------------------------------------------------------
 * DURCISSEMENT : le thème parent et plusieurs modules injectent des
 * <style> inline APRÈS nos <link>. Toutes les règles sont donc
 * préfixées par « body » (spécificité) et les propriétés critiques
 * de mise en page / d'identité portent !important.
 * Exceptions volontaires : les display:none pilotés par JS
 * (.gpf-devis-overlay, .gpf-alert) NE portent PAS !important,
 * sinon le style inline JS ne pourrait plus les ouvrir.
 * ============================================================ */
:root{
  --gp-text:#1A1D21; --gp-muted:#6B7280; --gp-muted2:#4B5563;
  --gp-line:#E5E7EB; --gp-line2:#F1F3F5;
  --gp-bg:#FFFFFF; --gp-bg2:#FAFAFA;
  --gp-primary:#1E4E8C; --gp-primary-h:#173F73; --gp-primary-a:#12305A;
  --gp-blue-bg:#F5F8FC; --gp-blue-bg2:#E9EFF7; --gp-blue-line:#D6E0EC;
  --gp-green:#2F7A4F; --gp-red:#B4231F; --gp-seg:#EDEFF2;
  --gp-radius:8px; --gp-radius-sm:6px;
  --gp-font-head:'Manrope',system-ui,-apple-system,sans-serif;
  --gp-font-body:'Public Sans',system-ui,-apple-system,sans-serif;
}

/* Fontes (chargées via head) */
body .gp-scope, body .gp-scope *{font-family:var(--gp-font-body)!important}

/* ---- Typo échelle ---- */
body .gp-h-price{font-family:var(--gp-font-head)!important;font-size:32px!important;font-weight:700!important;letter-spacing:-.8px!important;line-height:1!important;font-variant-numeric:tabular-nums!important}
body .gp-h-title{font-family:var(--gp-font-head)!important;font-size:28px!important;font-weight:600!important;line-height:1.2!important;letter-spacing:-.4px!important;text-wrap:pretty}
body .gp-h-section{font-family:var(--gp-font-head)!important;font-size:24px!important;font-weight:600!important;letter-spacing:-.2px!important}
body .gp-h-sub{font-size:17px!important;font-weight:600!important}
body .gp-t-body{font-size:15px!important;line-height:1.65!important;color:var(--gp-muted2)!important}
body .gp-t-label{font-size:13px!important;color:var(--gp-muted)!important}
body .gp-t-legend{font-size:12px!important;color:var(--gp-muted)!important}
body .gp-num{font-variant-numeric:tabular-nums!important}

/* ---- Boutons (44px min, radius 8) ---- */
body .gp-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:9px!important;min-height:44px!important;padding:0 18px!important;border-radius:var(--gp-radius)!important;font-size:15px!important;font-weight:600!important;cursor:pointer;border:1px solid transparent!important;transition:background .15s,color .15s,border-color .15s;text-decoration:none!important;line-height:1!important}
body .gp-btn-primary{background:var(--gp-primary)!important;color:#fff!important;border-color:var(--gp-primary)!important}
body .gp-btn-primary:hover{background:var(--gp-primary-h)!important;border-color:var(--gp-primary-h)!important;color:#fff!important}
body .gp-btn-primary:active{background:var(--gp-primary-a)!important;border-color:var(--gp-primary-a)!important}
body .gp-btn-primary:disabled{background:#C4CAD2!important;border-color:#C4CAD2!important;cursor:default}
body .gp-btn-lg{min-height:48px!important;font-size:16px!important}
body .gp-btn-secondary{background:#fff!important;color:var(--gp-primary)!important;border-color:var(--gp-primary)!important}
body .gp-btn-secondary:hover{background:var(--gp-blue-bg)!important;color:var(--gp-primary)!important}
body .gp-btn-secondary:active{background:var(--gp-blue-bg2)!important}
body .gp-btn-block{width:100%!important}

/* ---- Cartes / surfaces ---- */
body .gp-card{border:1px solid var(--gp-line)!important;border-radius:var(--gp-radius)!important;background:var(--gp-bg2)!important;overflow:hidden!important}
body .gp-panel{border:1px solid var(--gp-line)!important;border-radius:var(--gp-radius)!important;background:#fff!important;overflow:hidden!important}

/* ---- Champs ---- */
body .gp-input{width:100%!important;height:44px!important;padding:0 14px!important;border:1px solid #D1D5DB!important;border-radius:var(--gp-radius)!important;background:#fff!important;font-size:15px!important;color:var(--gp-text)!important;box-sizing:border-box!important}
body .gp-input:focus{outline:none;border-color:var(--gp-primary)!important;box-shadow:0 0 0 3px rgba(30,78,140,.15)}
body textarea.gp-input{height:auto!important;padding:10px 14px!important}

/* ---- Segmented toggle (avec / sans marquage) ---- */
body .gp-seg{display:flex!important;padding:3px!important;background:var(--gp-seg)!important;border-radius:var(--gp-radius)!important;gap:3px!important}
body .gp-seg button{flex:1!important;height:38px!important;border:0!important;border-radius:var(--gp-radius-sm)!important;font-size:14px!important;font-weight:600!important;cursor:pointer;background:transparent!important;color:var(--gp-muted2)!important}
body .gp-seg button.on{background:#fff!important;color:var(--gp-text)!important;box-shadow:0 1px 2px rgba(0,0,0,.12)}

/* ---- Quantité + paliers ---- */
body .gp-qtybox{display:flex!important;align-items:center!important;height:44px!important;border:1px solid #D1D5DB!important;border-radius:var(--gp-radius)!important;background:#fff!important;padding:0 4px 0 14px!important}
body .gp-qtybox input{width:74px!important;border:0!important;outline:none;font-size:16px!important;font-weight:600!important;font-variant-numeric:tabular-nums!important;background:transparent!important}
body .gp-qtybox .u{font-size:14px!important;color:var(--gp-muted)!important;padding-right:10px!important}
body .gp-tierbtn{height:44px!important;padding:0 14px!important;border:1px solid var(--gp-line)!important;border-radius:var(--gp-radius)!important;background:#fff!important;font-size:14px!important;cursor:pointer;color:var(--gp-text)!important}
body .gp-tierbtn.sel{border-color:var(--gp-primary)!important;color:var(--gp-primary)!important;font-weight:600!important;background:var(--gp-blue-bg)!important}

/* ---- Tables (dégressif, marquage) ---- */
body .gp-grid-table .h,body .gp-grid-table .r{display:grid!important;padding:9px 14px!important;font-size:13px!important}
body .gp-grid-table .h{background:var(--gp-bg2)!important;border-bottom:1px solid var(--gp-line)!important;font-size:12px!important;color:var(--gp-muted)!important;letter-spacing:.2px!important}
body .gp-grid-table .r{border-bottom:1px solid var(--gp-line2)!important}
body .gp-grid-table .r.sel{background:var(--gp-blue-bg)!important;font-weight:600!important}
body .gp-grid-table .num{text-align:right!important;font-variant-numeric:tabular-nums!important}

/* ---- Badges ---- */
body .gp-badge{display:inline-flex!important;align-items:center!important;gap:5px!important;padding:4px 10px!important;border-radius:999px!important;font-size:12px!important;font-weight:600!important;background:var(--gp-blue-bg)!important;color:var(--gp-primary)!important}
body .gp-badge-green{background:#E9F3EC!important;color:var(--gp-green)!important}
body .gp-badge-line{background:#fff!important;border:1px solid var(--gp-line)!important;color:var(--gp-muted2)!important}

/* ---- Encart mandat administratif ---- */
body .gp-mandate{display:flex!important;gap:14px!important;padding:16px!important;border:1px solid var(--gp-blue-line)!important;border-radius:var(--gp-radius)!important;background:var(--gp-blue-bg)!important}
body .gp-mandate .t{font-size:15px!important;font-weight:600!important}
body .gp-mandate .d{font-size:14px!important;line-height:1.5!important;color:var(--gp-muted2)!important;text-wrap:pretty}

/* ---- Trust row ---- */
body .gp-trust{display:flex!important;align-items:center!important;justify-content:space-between!important;flex-wrap:wrap!important;gap:10px!important;padding:14px 0!important;border-top:1px solid var(--gp-line)!important;border-bottom:1px solid var(--gp-line)!important;font-size:13px!important;color:var(--gp-muted)!important}
body .gp-trust span{display:flex!important;align-items:center!important;gap:7px!important}

/* ---- Prix live ---- */
body .gp-priceline{display:flex!important;gap:20px!important;align-items:flex-end!important;padding:16px 0 0!important;border-top:1px solid var(--gp-line)!important}
body .gp-pricebreak{flex:1!important;display:flex!important;flex-direction:column!important;gap:5px!important;font-size:14px!important}
body .gp-pricebreak .row{display:flex!important;justify-content:space-between!important}
body .gp-pricebreak .muted{color:var(--gp-muted)!important}

/* ---- Modale devis (restylée sur les tokens — bleu institutionnel) ---- */
/* NB: display NON !important ici : le JS ouvre la modale en inline style */
body .gpf-devis-overlay{position:fixed!important;inset:0!important;background:rgba(20,20,20,.75)!important;backdrop-filter:blur(5px);z-index:2147483647!important;display:none;align-items:flex-start!important;justify-content:center!important;overflow-y:auto!important;padding:20px 0!important}
body .gpf-devis-card{background:#fff!important;width:90%!important;max-width:640px!important;border-radius:12px!important;box-shadow:0 15px 50px rgba(0,0,0,.5);margin:auto!important;font-family:var(--gp-font-body)!important}
body .gpf-devis-header{background:var(--gp-bg2)!important;padding:16px 24px!important;border-bottom:1px solid var(--gp-line)!important;display:flex!important;justify-content:space-between!important;align-items:center!important;border-radius:12px 12px 0 0!important}
body .gpf-devis-header h3{margin:0!important;font-family:var(--gp-font-head)!important;font-size:1.25rem!important;font-weight:700!important;color:var(--gp-text)!important}
body .gpf-devis-close{font-size:28px!important;color:#9CA3AF!important;cursor:pointer;line-height:1!important;transition:.2s}
body .gpf-devis-close:hover{color:var(--gp-red)!important;transform:rotate(90deg)}
body .gpf-devis-body{padding:24px!important}
body .gpf-devis-trigger{width:100%!important;background:var(--gp-primary)!important;color:#fff!important;border:0!important;padding:12px!important;font-size:1rem!important;font-weight:700!important;border-radius:var(--gp-radius)!important;cursor:pointer;margin-top:10px!important;display:block!important;text-align:center!important}
body .gpf-devis-trigger:hover{background:var(--gp-primary-h)!important;color:#fff!important}

/* Responsive helper */
@media(max-width:768px){
  body .gp-trust{gap:8px!important}
  body .gp-priceline{flex-direction:column!important;align-items:stretch!important;gap:12px!important}
}

/* ============================================================
 * Fiche produit (PDP) — mise en page + habillage des partials PS
 * ============================================================ */
body .gp-product{max-width:1280px!important;margin:0 auto!important}
body .gp-pdp-wrap{padding:0 24px!important}
body .gp-breadcrumb{padding:16px 0 0!important;font-size:13px!important;color:var(--gp-muted)!important}
body .gp-breadcrumb a{color:var(--gp-muted)!important}
body .gp-pdp-grid{display:flex!important;align-items:flex-start!important;gap:32px!important;padding:20px 0 32px!important}
body .gp-pdp-gallery{width:52%!important;max-width:632px!important;position:relative!important}
body .gp-pdp-info{flex:1!important;min-width:0!important;display:flex!important;flex-direction:column!important;gap:20px!important}
body .gp-pdp-head{display:flex!important;flex-direction:column!important;gap:8px!important}
body .gp-pdp-submeta{display:flex!important;align-items:center!important;gap:10px!important;font-size:13px!important;color:var(--gp-muted)!important;flex-wrap:wrap!important}
body .gp-pdp-submeta .gp-sep{color:#D1D5DB!important}
body .gp-instock{display:flex!important;align-items:center!important;gap:6px!important;color:var(--gp-green)!important}
body .gp-instock .gp-dot{width:7px!important;height:7px!important;border-radius:50%!important;background:var(--gp-green)!important}
body .gp-desc-short{font-size:15px!important;line-height:1.6!important;color:var(--gp-muted2)!important}
body .gp-pdp-price{font-family:var(--gp-font-head)!important}
body .gp-pdp-price .current-price span,body .gp-pdp-price .product-price{font-family:var(--gp-font-head)!important;font-weight:700!important;color:var(--gp-text)!important}
/* Carte decision englobant declinaisons + qte + ajout panier */
body .gp-decision{border:1px solid var(--gp-line)!important;border-radius:var(--gp-radius)!important;background:var(--gp-bg2)!important;padding:18px 20px!important;display:flex!important;flex-direction:column!important;gap:16px!important}
body .gp-variants .product-variants>.product-variants-item{margin:0 0 12px!important}
/* Bouton ajout panier -> style primaire du design */
body .gp-addtocart .btn-add-to-cart,body .gp-addtocart .add-to-cart{background:var(--gp-primary)!important;border-color:var(--gp-primary)!important;color:#fff!important;border-radius:var(--gp-radius)!important;min-height:48px!important;font-weight:600!important}
body .gp-addtocart .btn-add-to-cart:hover,body .gp-addtocart .add-to-cart:hover{background:var(--gp-primary-h)!important;border-color:var(--gp-primary-h)!important}
body .gp-addtocart #quantity_wanted{border-radius:var(--gp-radius)!important}
/* Habillage des tables fluxstudio (tarifs degressifs / stock) sur les tokens */
body .gp-fluxstudio .fluxstudio-tiers-title,body .gp-fluxstudio .fluxstudio-stock-in{color:var(--gp-text)!important}
body .gp-fluxstudio .fluxstudio-tiers-table td,body .gp-fluxstudio .fluxstudio-variant-table td,body .gp-fluxstudio .fluxstudio-variant-table th{font-variant-numeric:tabular-nums!important}
body .gp-fluxstudio .fluxstudio-tier-price{color:var(--gp-primary)!important;font-weight:600!important}
body .gp-fluxstudio .fluxstudio-open-btn{background:var(--gp-primary)!important;color:#fff!important;border:0!important;border-radius:var(--gp-radius)!important;min-height:44px!important;padding:0 18px!important;font-weight:600!important;cursor:pointer}
body .gp-fluxstudio .fluxstudio-open-btn:hover{background:var(--gp-primary-h)!important}
body .gp-pdp-tabs-wrap{padding:8px 24px 40px!important;max-width:1280px!important;margin:0 auto!important}
@media(max-width:992px){
  body .gp-pdp-grid{flex-direction:column!important}
  body .gp-pdp-gallery,body .gp-pdp-info{width:100%!important;max-width:none!important}
}

/* ---- Modale devis : lignes/champs/alertes (design-system complet) ---- */
body .gpf-form-row{display:flex!important;gap:15px!important;margin-bottom:15px!important}
body .gpf-form-col{flex:1!important;min-width:0!important}
body .gpf-form-control{width:100%!important;padding:10px 12px!important;border:1px solid #D1D5DB!important;border-radius:var(--gp-radius)!important;font-size:14px!important;box-sizing:border-box!important;background:#fff!important}
body .gpf-form-control:focus{outline:none;border-color:var(--gp-primary)!important;box-shadow:0 0 0 3px rgba(30,78,140,.15)}
body textarea.gpf-form-control{resize:vertical}
/* NB: display NON !important : le JS affiche l'alerte en inline style */
body .gpf-alert{display:none;padding:13px 15px!important;border-radius:var(--gp-radius)!important;margin-top:15px!important;text-align:center!important;font-size:14px!important}
body .gpf-alert-success{background:#E9F3EC!important;color:var(--gp-green)!important;border:1px solid #C3E6CB!important}
body .gpf-alert-error{background:#FBEAEA!important;color:var(--gp-red)!important;border:1px solid #F5C6CB!important}
body .gpf-btn-submit{width:100%!important;background:var(--gp-primary)!important;color:#fff!important;border:0!important;padding:12px!important;font-size:1.05rem!important;font-weight:700!important;border-radius:var(--gp-radius)!important;cursor:pointer}
body .gpf-btn-submit:hover{background:var(--gp-primary-h)!important}
body .gpf-btn-submit:disabled{opacity:.6;cursor:default}
@media(max-width:768px){
  body .gpf-form-row{flex-direction:column!important;gap:10px!important}
}

/* ============================================================
 * Header B2B (sous-theme goodies)
 * ============================================================ */
body .gp-header{background:#fff!important;border-bottom:1px solid var(--gp-line)!important;font-family:var(--gp-font-body)!important}
body .gp-topbar{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:16px!important;padding:0 40px!important;height:34px!important;background:var(--gp-bg2)!important;border-bottom:1px solid var(--gp-line)!important;font-size:13px!important;color:var(--gp-muted)!important}
body .gp-topbar a{color:var(--gp-text)!important}
body .gp-topbar .gp-sep{color:#D1D5DB!important}
body .gp-topbar-r{display:flex!important;gap:12px!important;align-items:center!important}
body .gp-header-main{display:flex!important;align-items:center!important;gap:32px!important;padding:16px 40px!important}
body .gp-header-logo{display:flex!important;align-items:center!important;flex:none!important;max-width:240px!important}
body .gp-header-logo img{max-height:60px!important;width:auto!important;height:auto!important}
body .gp-wordmark{display:flex!important;flex-direction:column!important;line-height:1.15!important}
body .gp-wordmark b{font-family:var(--gp-font-head)!important;font-size:20px!important;font-weight:800!important;letter-spacing:-.3px!important;color:var(--gp-text)!important}
body .gp-wordmark small{font-size:12px!important;color:var(--gp-muted)!important}
body .gp-header-search{flex:1!important;display:flex!important;align-items:center!important;gap:10px!important;height:44px!important;padding:0 14px!important;border:1px solid var(--gp-line)!important;border-radius:var(--gp-radius)!important;background:#fff!important;max-width:640px!important}
body .gp-header-search input[type=text]{flex:1!important;border:0!important;outline:none;font-size:15px!important;background:transparent!important}
body .gp-header-actions{display:flex!important;align-items:center!important;gap:22px!important;flex:none!important}
body .gp-header-action{display:flex!important;align-items:center!important;gap:8px!important;font-size:14px!important;color:var(--gp-text)!important;position:relative!important}
body .gp-header-action:hover{color:var(--gp-primary)!important}
body .gp-header-cart .gp-cart-count{min-width:20px!important;height:20px!important;padding:0 5px!important;border-radius:999px!important;background:var(--gp-primary)!important;color:#fff!important;font-size:12px!important;font-weight:700!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}
body .gp-header-cart .gp-cart-count.gp-empty{background:var(--gp-muted)!important}
body .gp-header-nav{border-top:1px solid var(--gp-line)!important}
body .gp-hide-sm{display:inline!important}
@media(max-width:900px){
  body .gp-topbar{padding:0 16px!important;font-size:12px!important}
  body .gp-topbar-l{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  body .gp-header-main{gap:14px!important;padding:12px 16px!important;flex-wrap:wrap!important}
  body .gp-header-logo img{max-height:44px!important}
  body .gp-header-search{order:3!important;flex-basis:100%!important;max-width:none!important}
  body .gp-hide-sm{display:none!important}
}

/* ============================================================
 * Responsive utilitaires + header/menu mobile
 * ============================================================ */
body .gp-desktop-only{display:block!important}
body .gp-mobile-only{display:none!important}
@media(max-width:900px){
  body .gp-desktop-only{display:none!important}
  body .gp-mobile-only{display:block!important}
}
/* Header mobile : logo + actions en ligne, recherche pleine largeur dessous */
@media(max-width:900px){
  body .gp-topbar{padding:0 14px!important;height:auto!important;min-height:32px!important;font-size:11.5px!important;flex-wrap:wrap!important;gap:4px 10px!important;justify-content:center!important;text-align:center!important}
  body .gp-topbar-l{white-space:normal!important}
  body .gp-header-main{gap:10px 14px!important;padding:10px 14px!important;flex-wrap:wrap!important;align-items:center!important}
  body .gp-header-logo{order:1!important}
  body .gp-header-logo img{max-height:40px!important}
  body .gp-header-actions{order:2!important;margin-left:auto!important;gap:16px!important}
  body .gp-header-search{order:3!important;flex-basis:100%!important;max-width:none!important;height:42px!important}
  body .gp-header-mobilemenu{border-top:1px solid var(--gp-line)!important}
}
/* Le menu mobile bitmegamenu : bouton hamburger et panneau aux tokens */
body .gp-header-mobilemenu .btn-toggle,body .gp-header-mobilemenu .btn-toggle-menu{color:var(--gp-text)!important;background:transparent!important;border:0!important}
body .gp-header-mobilemenu .mobile-menu__link,body .gp-header-mobilemenu a{color:var(--gp-text)!important}
body .gp-header-mobilemenu .mobile-menu__link:hover{color:var(--gp-primary)!important}

/* Grand écran : contenu centré, pas d'étirement disgracieux */
@media(min-width:1500px){
  body .gp-header-main,body .gp-topbar,body .gp-header-nav .container-bitmegamenu{max-width:1400px!important;margin-left:auto!important;margin-right:auto!important}
}
