/* ============================================================================
   Takoori — Fiche produit codee, AUTONOME.
   Ne depend d'AUCUN CSS de la page Elementor (fiche-georgia.r16.css n'est plus
   charge ici, et la classe body.tk-fiche-georgia n'est plus ajoutee) : c'etait
   la cause des superpositions, des flashs bordeaux/Lato et des miniatures
   masquees (le CSS georgia cache .flex-control-nav car son JS construit ses
   propres miniatures dans un conteneur Elementor absent de ce template).
   Tout est scope sous .tk-coded-wrap. Tokens de marque via tk-tokens.css.
   ============================================================================ */

/* ---------- Layout ---------- */
/* Fond blanc plein : le body Astra est en creme #fbf5eb (ancienne charte), ce qui faisait
   apparaitre des bandes beiges de part et d'autre des que l'ecran depassait la largeur du
   contenu. On force le blanc, mais UNIQUEMENT sur les fiches en template code. */
body.tk-coded-page,
body.tk-coded-page #page,
body.tk-coded-page .site-content,
body.tk-coded-page .ast-container { background: #fff !important; }

/* Largeur : la fiche occupe l'espace disponible au lieu d'etre bridee a 1180px. */
.tk-coded-wrap {
  max-width: 1560px; margin: 0 auto; padding: 28px 32px 64px;
  font-family: var(--tk-body); color: var(--tk-ink); background: #fff;
}
.tk-coded-wrap .woocommerce-breadcrumb { font-size: 13px; color: var(--tk-ink-2); margin-bottom: 16px; }
.tk-coded-grid { display: grid; grid-template-columns: 1.35fr 1fr; gap: 56px; align-items: start; }
.tk-coded-grid > * { min-width: 0; }

/* ---------- Galerie (100% maison, aucun flexslider/photoswipe) ---------- */
.tk-coded-gallery { max-width: 100%; }
.tk-gal-main {
  position: relative; background: #fff; border: 1px solid var(--tk-line);
  border-radius: var(--tk-radius); overflow: hidden;
}
.tk-gal-main-img { width: 100%; height: auto; display: block; cursor: zoom-in; }
.tk-gal-zoom {
  position: absolute; top: 12px; right: 12px; z-index: 2;
  width: 34px; height: 34px; display: flex; align-items: center; justify-content: center;
  background: #fff !important; color: var(--tk-ink-2) !important;
  border: 1px solid var(--tk-line) !important; border-radius: 50% !important;
  box-shadow: var(--tk-card-sh); cursor: pointer; padding: 0 !important;
}
.tk-gal-zoom:hover { color: var(--tk-accent-d) !important; border-color: var(--tk-accent) !important; }
.tk-gal-thumbs { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.tk-gal-thumb {
  width: 68px; height: 68px; padding: 0 !important; overflow: hidden; cursor: pointer;
  background: #fff !important; border: 2px solid var(--tk-line) !important;
  border-radius: var(--tk-radius-sm) !important; box-shadow: none !important;
  transition: border-color .15s, opacity .15s; opacity: .8;
}
.tk-gal-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tk-gal-thumb:hover { opacity: 1; border-color: var(--tk-accent) !important; }
.tk-gal-thumb.active { opacity: 1; border-color: var(--tk-accent) !important; }

/* Lightbox maison */
.tk-lightbox {
  position: fixed; inset: 0; z-index: 9999; background: rgba(0,0,0,.85);
  display: flex; align-items: center; justify-content: center; padding: 24px; cursor: zoom-out;
}
.tk-lightbox[hidden] { display: none; }
.tk-lightbox-img { max-width: 92vw; max-height: 92vh; object-fit: contain; border-radius: var(--tk-radius); }
.tk-lightbox-close {
  position: absolute; top: 18px; right: 22px; background: none !important; border: 0 !important;
  color: #fff !important; font-size: 34px !important; line-height: 1; cursor: pointer; padding: 0 !important;
}

/* ---------- Colonne resume ---------- */
.tk-coded-summary { display: flex; flex-direction: column; }
.tk-coded-summary .tk-badge-revendeur {
  display: inline-flex; align-self: flex-start; align-items: center; gap: 7px;
  background: var(--tk-tint); color: var(--tk-accent-d); font-weight: 700; font-size: 12.5px;
  padding: 6px 12px; border-radius: 999px; margin-bottom: 12px;
}
.tk-coded-summary h1.product_title {
  font-family: var(--tk-display) !important; font-weight: 800; letter-spacing: -.3px;
  color: var(--tk-ink) !important; font-size: 27px; line-height: 1.2; margin: 0 0 12px;
}
.tk-coded-summary .tk-specs-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.tk-coded-summary .tk-specs-pills span {
  border: 1px solid var(--tk-line); border-radius: 999px; padding: 5px 12px;
  font-size: 12.5px; color: var(--tk-ink-2); background: #fff;
}
.tk-coded-summary .price,
.tk-coded-summary .woocommerce-Price-amount {
  color: var(--tk-ink) !important; font-weight: 800; font-size: 22px; font-family: var(--tk-body) !important;
}
.tk-coded-summary .tk-price-alma-row { display: flex !important; align-items: center !important; gap: 16px; flex-wrap: wrap; }
.tk-coded-summary .tk-price-alma-row .price { margin: 0 !important; }
.tk-coded-summary .tk-price-alma-row .tk-alma-widget-wrap { flex: 1 1 auto; min-width: 200px; }

/* BUGFIX 16/08 (signale Joffrey, "widget Alma casse", puis "pas propre, doit etre
   comme sur la preview") -- VRAIE CAUSE trouvee en inspectant le CSS reel du widget
   (wp-content/cache/min/3rd-party/cdn.jsdelivr.net-npm-@alma-widgets.../widgets.min.css) :
   Alma definit ses propres couleurs via des variables CSS dans son :root
   (--off-black:#1a1a1a, --alma-orange:#fa5022, --white:#fff, --dark-gray:#4a4a4a...),
   et son CSS module (._planButton_v4hon_29, ._active_v4hon_102._monochrome_v4hon_82)
   s'appuie dessus (ex : background:var(--off-black) pour le plan actif). Sur nos pages
   ces variables sont VIDES (confirme : getComputedStyle(document.documentElement)
   .getPropertyValue('--off-black') === '') -- le fichier qui les definit n'est pas
   correctement applique (meme famille de probleme que le rehebergement local qui a
   casse Stripe plus tot dans la session). Consequence : `background:var(--off-black)`
   devient invalide -> le navigateur ignore le raccourci `background` entier -> le
   `background-color` bordeaux d'Astra (regle globale button, aucun rapport avec Alma)
   redevient la seule declaration valide restante.
   1er essai (imposer des couleurs maison tk-tint/tk-accent) REJETE par Joffrey : le
   widget doit retrouver son apparence NATIVE Alma (comme sur la preview), pas une
   palette inventee. FIX CORRECT : fournir les vraies valeurs natives Alma en variables
   CSS scopees au widget -- son propre CSS (deja charge, deja correct) les utilise alors
   normalement, sans aucune surcharge de couleur de notre part. Rendu attendu : plan actif
   en noir plein (theme "monochrome" natif Alma, PAS orange, PAS vert marque), plans
   inactifs en texte plat sans fond (design natif Alma, pas de pilule). */
.tk-coded-summary .tk-alma-widget-wrap {
  --off-black: #1a1a1a;
  --alma-orange: #fa5022;
  --white: #fff;
  --black: #000;
  --dark-gray: #4a4a4a;
  --light-gray: #dcdcdc;
  --off-white: #f9f9f9;
  --font-tiny: 10px;
  --font-x-small: 12px;
  --font-small: 14px;
  --font-base: 16px;
}
.tk-coded-summary .woocommerce-product-details__short-description { color: var(--tk-ink-2); margin: 16px 0; line-height: 1.6; }

/* Bloc prix natif WooCommerce pres du bouton d'achat (.woocommerce-variation-price) :
   redondant depuis le 16/08, le prix du haut (sous le nom du produit) se met desormais
   a jour en place au changement de variante (JS found_variation dans le template) --
   plus besoin d'un 2e affichage plus bas. */
.tk-coded-summary .woocommerce-variation-price { display: none !important; }

/* ---------- Selecteurs de variante ---------- */
.tk-coded-summary table.variations { border: 0; width: 100%; margin: 0; }
.tk-coded-summary table.variations th,
.tk-coded-summary table.variations td { border: 0; padding: 6px 0; }
/* BUGFIX 16/08 (signale Joffrey, tapis a plusieurs tailles) : th/td en vertical-align:middle
   fonctionnait tant que les pastilles tenaient sur 1 ligne -- des que .tk-pills passe sur 2
   lignes (3 tailles sur mobile/tablette etroite), le <th>"Taille" (natif WooCommerce, structure
   <table><tr><th>label</th><td>valeur</td></tr>) reste centre sur la hauteur totale de la ligne
   -> il derive visuellement vers le bas, ne s'aligne plus avec la 1ere rangee de boutons.
   Fix : le label doit toujours s'aligner au sommet de son contenu, jamais au centre. */
.tk-coded-summary table.variations th.label { vertical-align: top; padding-top: 9px; }
.tk-coded-summary table.variations td.value { vertical-align: top; }
/* WooCommerce ajoute la valeur choisie dans le <label> (span.variation-value) : masquer,
   nos pastilles montrent deja la selection — sinon on lit "COULEURBEIGE" (repere 07/08). */
.tk-coded-summary table.variations label .variation-value,
.tk-coded-summary table.variations label span:not(.tk-keep) { display: none !important; }
.tk-coded-summary table.variations label {
  font-family: var(--tk-body); font-weight: 600; color: var(--tk-ink);
  font-size: 13px; text-transform: uppercase; letter-spacing: .04em; margin: 0; display: block;
}
.tk-coded-summary .tk-swatches { display: flex; gap: 10px; flex-wrap: wrap; margin: 6px 0; }
.tk-coded-summary .tk-swatch {
  width: 44px; height: 44px; border-radius: 50%; padding: 0; cursor: pointer;
  border: 2px solid transparent; box-shadow: 0 0 0 1px var(--tk-line);
  background-size: cover; background-position: center; background-color: #fff;
  font-family: var(--tk-display); font-weight: 700; color: var(--tk-ink); text-transform: uppercase;
}
.tk-coded-summary .tk-swatch:hover { box-shadow: 0 0 0 1px var(--tk-accent); }
.tk-coded-summary .tk-swatch.active { border-color: var(--tk-accent); box-shadow: 0 0 0 1px var(--tk-accent); }
.tk-coded-summary .tk-pills { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0; }
.tk-coded-summary .tk-pill {
  border: 1px solid var(--tk-line) !important; background: #fff !important; border-radius: 999px !important;
  padding: 8px 16px !important; font-family: var(--tk-body) !important; font-size: 14px !important;
  color: var(--tk-ink) !important; cursor: pointer;
  text-transform: none !important; font-weight: 400 !important; letter-spacing: normal !important;
}
.tk-coded-summary .tk-pill:hover { border-color: var(--tk-accent) !important; }
.tk-coded-summary .tk-pill.active {
  background: var(--tk-tint) !important; border-color: var(--tk-accent) !important; color: var(--tk-accent-d) !important;
}
.tk-coded-summary select.tk-visually-hidden-select,
.tk-coded-summary .cfvsw-swatches-container,
.tk-coded-summary .cfvsw-hidden-select select:not(.tk-visually-hidden-select) { display: none !important; }
.tk-coded-summary .reset_variations { font-size: 13px; color: var(--tk-muted); }

/* ---------- Stock ---------- */
.tk-coded-summary .stock { color: var(--tk-stock); font-weight: 600; font-family: var(--tk-body); }
.tk-coded-summary .stock.out-of-stock,
.tk-coded-summary p.stock.available-on-backorder { color: #B07A2A; }
.tk-coded-summary .pi-edd-product, .tk-coded-summary .pi-edd { display: none !important; }

/* ---------- Reassurance ---------- */
.tk-coded-reassurance {
  display: flex; flex-wrap: wrap; gap: 16px; width: 100%;
  margin: 4px 0 12px; padding-bottom: 12px; border-bottom: 1px solid var(--tk-line);
  font-size: 12.5px; color: var(--tk-ink-2); font-family: var(--tk-body);
}
.tk-coded-reassurance span { display: inline-flex; align-items: center; gap: 5px; }
.tk-coded-reassurance svg { color: var(--tk-accent); flex-shrink: 0; }

/* ---------- Quantite + panier ---------- */
/* Produit VARIABLE : quantite + bouton vivent dans .woocommerce-variation-add-to-cart,
   donc form.cart reste en block. Produit SIMPLE : ce conteneur n'existe pas, quantite et
   bouton sont enfants directs de form.cart — sans cette regle ils s'empilent (repere 07/08
   en testant l'Armoire Manguier, produit simple). */
.tk-coded-summary form.cart.variations_form { display: block !important; }
.tk-coded-summary form.cart:not(.variations_form) {
  display: flex !important; align-items: center !important; flex-wrap: wrap !important; gap: 12px !important;
}
.tk-coded-summary form.cart:not(.variations_form) > .tk-coded-reassurance { flex-basis: 100%; }
.tk-coded-summary .woocommerce-variation-add-to-cart {
  display: flex !important; align-items: center !important; flex-wrap: wrap !important; gap: 12px !important;
}
.tk-coded-summary .woocommerce-variation-add-to-cart > .tk-coded-reassurance { flex-basis: 100%; }
.tk-coded-summary .quantity {
  display: flex !important; align-items: center !important; height: 44px !important; box-sizing: border-box;
  border: 1px solid var(--tk-line) !important; border-radius: 999px !important; overflow: hidden; background: #fff;
}
.tk-coded-summary .quantity input.qty {
  border: 0 !important; width: 42px !important; text-align: center !important;
  font-family: var(--tk-body) !important; color: var(--tk-ink) !important; -moz-appearance: textfield;
  background: transparent !important; box-shadow: none !important;
}
.tk-coded-summary .quantity input.qty::-webkit-inner-spin-button,
.tk-coded-summary .quantity input.qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.tk-coded-summary .tk-qty-step {
  background: transparent !important; border: 0 !important; box-shadow: none !important;
  width: 34px; height: 42px; font-size: 16px; font-weight: 700; color: var(--tk-ink-2) !important;
  cursor: pointer; font-family: var(--tk-body) !important; text-transform: none !important; padding: 0 !important;
}
.tk-coded-summary .tk-qty-step:hover { color: var(--tk-accent-d) !important; background: #f6f7f8 !important; }
.tk-coded-summary .single_add_to_cart_button,
.tk-coded-summary button.single_add_to_cart_button {
  background: var(--tk-cta) !important; color: #fff !important; border: 0 !important;
  border-radius: 999px !important; font-family: var(--tk-body) !important; font-weight: 800 !important;
  font-size: 16px !important; padding: 14px 28px !important; box-shadow: var(--tk-card-sh);
  letter-spacing: normal !important;
}
.tk-coded-summary .single_add_to_cart_button:hover { background: var(--tk-cta-h) !important; }
.tk-coded-summary .single_add_to_cart_button[disabled],
.tk-coded-summary .single_add_to_cart_button.disabled {
  background: var(--tk-line) !important; color: var(--tk-muted) !important; cursor: not-allowed; box-shadow: none;
}

/* ---------- Apple Pay / Google Pay cote a cote ---------- */
.tk-coded-summary #wc-stripe-express-checkout-element { display: flex !important; gap: 10px !important; margin-top: 12px; width: 100%; }
.tk-coded-summary #wc-stripe-express-checkout-element > div {
  /* flex-basis:0 + min-width:0 laissait les 2 boutons demarrer a largeur 0 avant que Stripe
     ne recalcule (ResizeObserver) -> figeait parfois le rendu a 0 (repere 16/08, cause
     probable du bug historique). flex-basis reel + min-width plancher : jamais 0, jamais
     de flex-direction:column necessaire, cote a cote a TOUS les breakpoints (demande
     explicite Joffrey 16/08 -- 7 paliers, y compris 390px ou ~176px/bouton restent). */
  flex: 1 1 130px; min-width: 130px;
}

/* ---------- Onglets ---------- */
.tk-tabs { margin-top: 36px; }
.tk-tabs-nav {
  display: flex !important; gap: 28px !important; list-style: none !important;
  border-bottom: 1px solid var(--tk-line) !important; margin: 0 0 20px !important; padding: 0 !important;
}
.tk-tab-btn {
  background: transparent !important; background-color: transparent !important;
  border: 0 !important; border-bottom: 2px solid transparent !important;
  box-shadow: none !important; cursor: pointer !important;
  padding: 10px 2px 12px !important; margin: 0 0 -1px !important;
  font-family: var(--tk-body) !important; font-weight: 600 !important; font-size: 15px !important;
  text-transform: none !important; letter-spacing: normal !important;
  color: var(--tk-ink-2) !important; border-radius: 0 !important;
}
.tk-tab-btn:hover { color: var(--tk-accent-d) !important; background: transparent !important; }
.tk-tab-btn.active { color: var(--tk-accent-d) !important; border-bottom-color: var(--tk-accent) !important; background: transparent !important; }
.tk-tab-panel { color: var(--tk-ink-2) !important; font-family: var(--tk-body) !important; line-height: 1.6 !important; max-width: 760px; }
/* Sous-titres de la description : heritaient de la taille par defaut d'Astra (42px),
   soit plus GROS que le h1 produit (27px). Hierarchie remise d'aplomb sous le h1. */
.tk-tab-panel h2 {
  font-family: var(--tk-display) !important; color: var(--tk-ink) !important;
  font-size: 20px !important; font-weight: 800 !important; line-height: 1.3 !important;
  margin: 28px 0 10px !important; letter-spacing: -.2px;
}
.tk-tab-panel h3 {
  font-family: var(--tk-display) !important; color: var(--tk-ink) !important;
  font-size: 17px !important; font-weight: 700 !important; line-height: 1.35 !important;
  margin: 22px 0 8px !important;
}
.tk-tab-panel h2:first-child, .tk-tab-panel h3:first-child { margin-top: 0 !important; }
.tk-tab-panel p { margin: 0 0 14px; font-size: 15px; }
.tk-tab-panel[hidden] { display: none !important; }
.tk-tbl { width: 100%; border-collapse: collapse; }
.tk-tbl td { padding: 10px 12px; border-bottom: 1px solid var(--tk-line); font-size: 14px; color: var(--tk-ink-2); }
.tk-tbl td:first-child { color: var(--tk-ink); font-weight: 600; width: 40%; }

/* ---------- Produits similaires (markup maison, raccord avec la fiche) ---------- */
.tk-related { margin-top: 56px; }
.tk-related-title {
  font-family: var(--tk-display) !important; font-weight: 800; font-size: 22px;
  color: var(--tk-ink) !important; margin: 0 0 20px; letter-spacing: -.2px;
}
.tk-related-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }

.tk-related-card {
  display: flex; flex-direction: column; text-decoration: none !important;
  background: #fff; border: 1px solid var(--tk-line); border-radius: var(--tk-radius);
  overflow: hidden; transition: border-color .15s, box-shadow .15s, transform .15s;
}
.tk-related-card:hover {
  border-color: var(--tk-accent); box-shadow: var(--tk-card-sh); transform: translateY(-2px);
}
.tk-related-media { position: relative; background: #fff; aspect-ratio: 1 / 1; overflow: hidden; }
.tk-related-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tk-related-badge {
  position: absolute; left: 10px; bottom: 10px;
  background: var(--tk-ink); color: #fff; font-family: var(--tk-body);
  font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
  padding: 5px 10px; border-radius: 999px;
}
.tk-related-name {
  font-family: var(--tk-body); font-weight: 600; font-size: 14px; line-height: 1.35;
  color: var(--tk-ink) !important; padding: 14px 14px 0; min-height: 42px;
}
.tk-related-price {
  font-family: var(--tk-body); font-weight: 800; font-size: 15px;
  color: var(--tk-ink) !important; padding: 8px 14px 16px;
}
.tk-related-price del { color: var(--tk-muted) !important; font-weight: 400; margin-right: 6px; }
.tk-related-price ins { text-decoration: none; }

/* ============================================================================
   RESPONSIVE — echelle unique. La fiche occupe l'espace disponible ; seule la
   colonne de texte est bridee (une ligne trop longue devient illisible), la
   galerie absorbe le reste de la largeur.
     >1600  tres grand ecran   2 col · galerie large   · 5 cartes
      1600  grand desktop      2 col                   · 4 cartes
      1280  desktop            2 col                   · 4 cartes
      1024  petit desktop      2 col resserre          · 3 cartes
       900  tablette           1 col (empile)          · 3 cartes
       600  tablette portrait  1 col · CTA pleine larg.· 2 cartes
       430  mobile             1 col compact           · 2 cartes
   ============================================================================ */

/* La colonne d'achat ne s'etire pas indefiniment : au-dela, le texte devient illisible. */
.tk-coded-summary { max-width: 620px; }

@media (min-width: 1601px) {
  .tk-coded-grid { grid-template-columns: 1.5fr 1fr; gap: 64px; }
  .tk-related-grid { grid-template-columns: repeat(5, 1fr); }
}

@media (max-width: 1600px) {
  .tk-coded-wrap { padding: 26px 28px 60px; }
  .tk-coded-grid { gap: 48px; }
}

@media (max-width: 1280px) {
  .tk-coded-wrap { padding: 24px 22px 56px; }
  .tk-coded-grid { grid-template-columns: 1.2fr 1fr; gap: 36px; }
}

@media (max-width: 1024px) {
  .tk-coded-grid { grid-template-columns: 1fr 1fr; gap: 28px; }
  .tk-related-grid { grid-template-columns: repeat(3, 1fr); }
  .tk-coded-summary h1.product_title { font-size: 25px; }
}

/* Sous 900px la colonne d'achat devient trop etroite a cote de l'image : on empile. */
@media (max-width: 900px) {
  .tk-coded-grid { grid-template-columns: 1fr; gap: 28px; }
  .tk-coded-gallery { max-width: 620px; margin: 0 auto; }
  .tk-coded-summary { max-width: 680px; }
}

@media (max-width: 600px) {
  .tk-coded-summary .tk-price-alma-row { gap: 8px; }
  .tk-coded-summary .tk-price-alma-row .tk-alma-widget-wrap { min-width: 130px; flex: 0 1 auto; }
  .tk-coded-summary .quantity { flex: 0 0 auto; }
  /* .alma-payment-plans-container est une classe stable fournie par Alma (pas un hash
     CSS-modules type _widgetContainer_v4hon_1), on peut la cibler sans risque de casse
     au prochain update du widget. Grignote le padding pour tenir a cote du prix (repere
     16/08 : 23px manquants apres hide_border, mesure Playwright). */
  .tk-coded-summary .alma-payment-plans-container { padding: 8px !important; }
  .tk-coded-wrap { padding: 16px 14px 44px; }
  .tk-coded-summary h1.product_title { font-size: 22px; }
  .tk-related-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }
  .tk-related-title { font-size: 19px; }
  .tk-tab-panel h2 { font-size: 18px !important; }
  .tk-tabs-nav { gap: 20px !important; }
  .tk-gal-thumb { width: 58px; height: 58px; }
  .tk-coded-summary .single_add_to_cart_button { flex: 1 1 auto; min-width: 160px; text-align: center; }
  /* ANCIEN CONTOURNEMENT (colonne sous 600px) RETIRE 16/08 : la vraie cause du bug
     (Apple/Google Pay invisibles) etait flex-basis:0 sans plancher, pas le passage en ligne
     en soi -- corrige a la racine ci-dessus (flex: 1 1 130px). Reste cote a cote ici aussi. */
}

@media (max-width: 430px) {
  .tk-coded-reassurance { gap: 10px; font-size: 12px; }
  .tk-related-grid { gap: 12px; }
  .tk-related-name { font-size: 13px; padding: 12px 12px 0; }
  .tk-related-price { font-size: 14px; padding: 6px 12px 14px; }
  .tk-gal-thumbs { gap: 8px; }
  .tk-gal-thumb { width: 52px; height: 52px; }
}

/* Formulaire "Prevenez-moi" retour en stock */
.tk-notify-stock {
  margin: 14px 0 0; padding: 14px 16px; border: 1px solid var(--tk-line);
  border-radius: var(--tk-radius-sm); background: var(--tk-tint);
}
.tk-notify-stock__label {
  margin: 0 0 10px; font-family: var(--tk-body); font-size: 13.5px; color: var(--tk-ink);
  font-weight: 600; line-height: 1.4;
}
.tk-notify-stock__form { display: flex; gap: 8px; flex-wrap: wrap; }
.tk-notify-email {
  flex: 1 1 200px; min-width: 0; padding: 10px 12px; border: 1px solid var(--tk-line);
  border-radius: var(--tk-radius-sm); font-family: var(--tk-body); font-size: 14px; color: var(--tk-ink);
}
.tk-notify-submit {
  flex: 0 0 auto; padding: 10px 18px; border: none; border-radius: var(--tk-radius-sm);
  background: var(--tk-cta); color: #fff; font-family: var(--tk-body); font-weight: 700;
  font-size: 14px; cursor: pointer; transition: background .15s;
}
.tk-notify-submit:hover { background: var(--tk-cta-h); }
.tk-notify-submit:disabled { opacity: .6; cursor: default; }
.tk-notify-stock__msg { margin: 8px 0 0; font-family: var(--tk-body); font-size: 13px; color: var(--tk-ink); }

/* ---------- Note livraison sur rendez-vous (restauree, perdue au passage r9->r10 07/08) ---------- */
.tk-coded-summary .tk-delivery-note {
  display: flex; align-items: flex-start; gap: 10px;
  margin-top: 16px; padding: 12px 14px;
  background: var(--tk-tint); border-radius: var(--tk-radius);
  border: 1px solid rgba(13,110,99,.18);
}
.tk-coded-summary .tk-delivery-note svg { color: var(--tk-accent); flex-shrink: 0; margin-top: 1px; }
.tk-coded-summary .tk-delivery-note p {
  margin: 0; font-family: var(--tk-body); font-size: 13px; line-height: 1.5; color: var(--tk-ink-2);
}
.tk-coded-summary .tk-delivery-note strong { color: var(--tk-ink); font-weight: 700; }

/* En vraie rupture (.tk-out-of-stock sur .tk-coded-summary, pose en JS) : masque tout le
   bloc d'achat pour faire remonter "Prevenez-moi" a la place. !important necessaire pour
   passer devant les styles inline poses en JS (Stripe affiche Apple/Google Pay de facon
   asynchrone via style inline, WooCommerce reconstruit .woocommerce-variation-availability
   en differe) — une regle !important les couvre tous, quel que soit le moment. */
.tk-coded-summary.tk-out-of-stock .woocommerce-variation-availability,
.tk-coded-summary.tk-out-of-stock .quantity,
.tk-coded-summary.tk-out-of-stock .single_add_to_cart_button,
.tk-coded-summary.tk-out-of-stock #wc-stripe-express-checkout-element {
  display: none !important;
}

/* Bloc statut/livraison 100% maison : remplace le natif WooCommerce (sans date) et le
   widget tiers .pi-edd (ignore la date de reappro exacte, affiche une estimation generique
   erronee en precommande). Les deux sont masques definitivement ici. */
.tk-coded-summary .woocommerce-variation-availability,
.tk-coded-summary .pi-edd {
  display: none !important;
}
.tk-stock-info {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px;
  margin-top: 10px; font-family: var(--tk-body); font-size: 13.5px;
}
.tk-stock-info:empty { margin-top: 0; }
.tk-stock-info__label { font-weight: 700; color: var(--tk-stock); }
.tk-stock-info.tk-stock-backorder .tk-stock-info__label { color: var(--tk-star); }
.tk-stock-info.tk-stock-out .tk-stock-info__label { color: var(--tk-danger); }
.tk-stock-info__delivery { color: var(--tk-ink-2); }
