/* Aventers Options — fiche produit (Flatsome) */
.aop-configurator { --aop-accent: var(--primary-color, #446084); --aop-border: #e3e6ea; --aop-muted: #6b7280; --aop-promo: #d0342c; margin: 0 0 18px; }
.aop-configurator, .aop-configurator * { box-sizing: border-box; }
.aop-module { margin: 0 0 22px; }
.aop-module-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.aop-module-title { font-weight: 700; font-size: 1.05em; color: #1f2937; }
.aop-req { color: var(--aop-promo); margin-left: 2px; }
.aop-module-help { flex-basis: 100%; font-size: .85em; color: var(--aop-muted); margin-top: -4px; }
.aop-info { width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid var(--aop-accent); color: var(--aop-accent); background: #fff; font: 700 12px/1 Georgia, serif; padding: 0; margin: 0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.aop-info:hover { background: var(--aop-accent); color: #fff; }

.aop-select { width: 100%; max-width: 100%; margin: 0; }
.aop-select-desc { font-size: .85em; color: var(--aop-muted); margin-top: 6px; line-height: 1.35; }
.aop-select-desc:empty { display: none; }
.aop-qty-wrap { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.aop-qty-wrap .aop-qty-select { flex: 1 1 220px; }
.aop-qty-price { white-space: nowrap; font-size: 1.05em; }
.aop-qty-price .aop-price { color: var(--aop-accent); font-size: 1.1em; }
.aop-from-price .aop-from { font-weight: 400; font-size: .85em; color: #6b7280; margin-right: 2px; }

/* Quantité personnalisée (0.16.0) : le champ nombre remplace la liste ; sélecteurs longs contre les blocs pleine largeur de Flatsome. */
.aop-configurator [hidden] { display: none !important; }
.aop-configurator .aop-qty-custom { display: flex; align-items: center; gap: 10px; flex: 1 1 220px; }
.aop-configurator .aop-qty-custom .aop-qty-input { width: 110px; flex: 0 0 110px; height: 44px; margin: 0; text-align: center; box-shadow: none; border: 1.5px solid var(--aop-border); border-radius: 4px; font-size: 1.05em; -moz-appearance: textfield; }
.aop-configurator .aop-qty-custom .aop-qty-input::-webkit-outer-spin-button, .aop-configurator .aop-qty-custom .aop-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.aop-configurator .aop-qty-custom-unit { color: var(--aop-muted); white-space: nowrap; }
.aop-configurator .aop-qty-back { display: inline-block; background: none; border: 0; padding: 0; margin: 6px 0 0; min-height: 0; line-height: 1.4; font-size: .85em; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--aop-muted); text-decoration: underline; cursor: pointer; box-shadow: none; }
.aop-configurator .aop-qty-back:hover { color: var(--aop-accent); background: none; }
.aop-tiers, .aop-rows { display: flex; flex-direction: column; gap: 8px; }
.aop-tier, .aop-row { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: 1.5px solid var(--aop-border); border-radius: 8px; cursor: pointer; margin: 0; font-weight: 400; transition: border-color .15s, box-shadow .15s; background: #fff; }
.aop-tier:hover, .aop-row:hover { border-color: var(--aop-accent); }
.aop-tier.is-selected, .aop-row.is-selected { border-color: var(--aop-accent); box-shadow: 0 0 0 2px rgba(68,96,132,.15); background: #f7f9fc; }
.aop-tier.is-unavailable, .aop-row.is-unavailable { opacity: .45; cursor: not-allowed; }
.aop-tier input, .aop-row input, .aop-card input { margin: 0 !important; accent-color: var(--aop-accent); }
.aop-tier-qty { flex: 1; font-weight: 700; font-size: 1.05em; }
.aop-tier-qty small { font-weight: 400; color: var(--aop-muted); margin-left: 4px; }
.aop-tier-price { text-align: right; white-space: nowrap; }
.aop-price { font-weight: 700; color: #1f2937; }
.aop-price-old, .aop-total-old { color: var(--aop-muted); text-decoration: line-through; margin-right: 8px; font-weight: 400; font-size: .9em; }
.aop-tier.is-selected .aop-price, .aop-row.is-selected .aop-price { color: var(--aop-accent); }
.aop-row-label { flex: 1; }
.aop-row-label small { display: block; font-size: .82em; color: var(--aop-muted); }
.aop-row-price { white-space: nowrap; font-size: .95em; }

.aop-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 10px; }
.aop-card { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 12px 10px 10px; border: 1.5px solid var(--aop-border); border-radius: 10px; cursor: pointer; margin: 0; font-weight: 400; background: #fff; transition: border-color .15s, box-shadow .15s; }
.aop-card:hover { border-color: var(--aop-accent); }
.aop-card.is-unavailable { opacity: .45; cursor: not-allowed; }
.aop-card.is-selected { border-color: var(--aop-accent); box-shadow: 0 0 0 2px rgba(68,96,132,.15); background: #f7f9fc; }
.aop-card input { position: absolute; top: 8px; left: 8px; }
.aop-card-img { width: 100%; aspect-ratio: 4/3; display: flex; align-items: center; justify-content: center; overflow: hidden; border-radius: 6px; background: #f3f4f6; }
.aop-card-img img { width: 100%; height: 100%; object-fit: cover; }
.aop-card-noimg { font-size: 26px; color: #c4c8cf; }
.aop-card-label { font-weight: 700; font-size: .95em; line-height: 1.2; margin-top: 4px; }
.aop-card-desc { font-size: .8em; color: var(--aop-muted); line-height: 1.25; }
.aop-card-price { font-size: .9em; }
.aop-card-text { display: contents; }
/* 0.18.0 — cartes à images : plus de bouton radio visible, la carte choisie se distingue par son filet et un halo ;
   loupe dans le coin haut droit de la carte (là où était le radio, à gauche) → image en grand. Simulation validée par le
   propriétaire sur le tampon fidélité d'orion le 17 septembre 2026. Les cartes compactes (sans image) ne changent pas. */
.aop-cards:not(.aop-cards-compact) .aop-card input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.aop-cards:not(.aop-cards-compact) .aop-card:has(input:focus-visible) { outline: 2px solid var(--aop-accent); outline-offset: 2px; }
.aop-cards:not(.aop-cards-compact) .aop-card.is-selected { box-shadow: 0 0 0 3px rgba(68,96,132,.18), 0 6px 16px rgba(68,96,132,.12); }
.aop-cards:not(.aop-cards-compact) .aop-card.is-selected .aop-card-label { color: var(--aop-accent); }
.aop-card .aop-zoom { position: absolute; top: 8px; right: 8px; width: 26px; height: 26px; margin: 0; padding: 0; border: 0; border-radius: 50%; background: rgba(255,255,255,.85); color: var(--aop-muted); display: flex; align-items: center; justify-content: center; cursor: zoom-in; min-height: 0; line-height: 1; box-shadow: 0 1px 2px rgba(0,0,0,.12); transition: background .15s, color .15s, transform .15s; z-index: 1; }
.aop-card .aop-zoom svg { display: block; width: 15px; height: 15px; }
.aop-card .aop-zoom:hover, .aop-card .aop-zoom:focus-visible { background: #fff; color: var(--aop-accent); transform: scale(1.08); }
.aop-card.is-selected .aop-zoom { color: var(--aop-accent); }
.aop-zoom-modal { position: fixed; inset: 0; z-index: 10001; display: none; align-items: center; justify-content: center; padding: 16px; background: rgba(15,23,42,.6); }
.aop-zoom-modal.is-open { display: flex; }
.aop-zoom-box { position: relative; width: min(92vw, 640px); padding: 28px; border-radius: 12px; background: #eceff3; box-shadow: 0 4px 12px rgba(0,0,0,.15); }
.aop-zoom-box img { display: block; width: auto; height: auto; max-width: 100%; max-height: min(70vh, 560px); margin: 0 auto; object-fit: contain; border-radius: 4px; background: #fff; box-shadow: 0 10px 30px rgba(0,0,0,.2); }
.aop-zoom-title { margin: 12px 0 0; text-align: center; font-size: 15px; font-weight: 700; line-height: 1.2; color: #1e293b; }
.aop-zoom-desc { margin: 2px 0 0; text-align: center; font-size: 13px; line-height: 1.25; color: var(--aop-muted); }
.aop-zoom-close { position: absolute; top: -14px; right: -14px; width: 40px; height: 40px; margin: 0; padding: 0; border: 0; border-radius: 50%; background: #fff; color: #1e293b; font-size: 24px; line-height: 1; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.2); min-height: 0; }
.aop-zoom-close:hover { background: #f7f9fc; }
@media (max-width: 600px) { .aop-zoom-modal { padding: 12px; } .aop-zoom-box { width: 100%; padding: 16px; } .aop-zoom-close { top: -8px; right: -4px; } }
/* Module de cartes sans aucune image : cartes compactes, une ligne par choix, même style. */
.aop-cards-compact { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; }
.aop-cards-compact .aop-card { flex-direction: row; align-items: center; text-align: left; gap: 10px; padding: 10px 14px; }
.aop-cards-compact .aop-card input { position: static; }
.aop-cards-compact .aop-card-text { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.aop-cards-compact .aop-card-label { margin-top: 0; }
.aop-cards-compact .aop-card-price { white-space: nowrap; }
@media (max-width: 549px) { .aop-cards-compact { grid-template-columns: 1fr; } }

.aop-upload-zone { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 22px 14px; border: 2px dashed var(--aop-border); border-radius: 10px; cursor: pointer; background: #fafbfc; margin: 0; font-weight: 400; text-align: center; transition: border-color .15s; }
.aop-upload-zone:hover { border-color: var(--aop-accent); }
.aop-upload-input { display: none; }
.aop-upload-icon { font-size: 22px; color: var(--aop-accent); }
.aop-upload-text { font-weight: 700; }
.aop-upload-hint { font-size: .8em; color: var(--aop-muted); }
.aop-upload-file { display: none; align-items: center; gap: 10px; padding: 10px 14px; border: 1.5px solid #16a34a; border-radius: 8px; background: #f0fdf4; }
.aop-upload.has-file .aop-upload-zone { display: none; }
.aop-upload.has-file .aop-upload-file { display: flex; }
.aop-upload-name { flex: 1; font-weight: 700; word-break: break-all; }
.aop-upload-remove { background: none; border: none; color: var(--aop-muted); text-decoration: underline; padding: 0; margin: 0; cursor: pointer; font-size: .85em; text-transform: none; letter-spacing: 0; }
.aop-upload-status { font-size: .85em; color: var(--aop-promo); margin-top: 6px; min-height: 1em; }
.aop-upload.is-uploading .aop-upload-status { color: var(--aop-muted); }

.aop-errors { margin: 0 0 14px; padding: 10px 14px; border-radius: 8px; background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; font-size: .9em; }
.aop-errors ul { margin: 4px 0 0 18px; }
.aop-total-box { margin: 6px 0 16px; padding: 14px 16px; border-radius: 10px; background: #f7f9fc; border: 1px solid var(--aop-border); }
.aop-total-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.aop-total-label { font-weight: 700; color: #1f2937; }
.aop-total-value { font-size: 1.5em; font-weight: 800; color: var(--aop-accent); }
.aop-edit-banner { padding: 8px 12px; margin: 0 0 16px; border-radius: 8px; background: #eff6ff; color: #1e3a8a; font-size: .9em; }
.aop-edit-banner a { text-decoration: underline; margin-left: 6px; }
.aop-cart-edit { margin: 4px 0 6px !important; }
.aop-promo-banner { display: flex; align-items: center; gap: 10px; padding: 8px 12px; margin: 0 0 16px; border-radius: 8px; background: #fff1f0; color: #7f1d1d; font-size: .9em; }
.aop-promo-badge { background: var(--aop-promo); color: #fff; font-weight: 800; padding: 2px 8px; border-radius: 6px; }
.aop-muted { color: var(--aop-muted); }

.aop-modal { position: fixed; inset: 0; z-index: 10000; display: none; }
.aop-modal.is-open { display: block; }
.aop-modal-backdrop { position: absolute; inset: 0; background: rgba(17,24,39,.55); }
.aop-modal-box { position: relative; max-width: 560px; margin: 8vh auto 0; background: #fff; border-radius: 12px; padding: 28px 30px; box-shadow: 0 20px 60px rgba(0,0,0,.25); max-height: 84vh; overflow: auto; }
.aop-modal-close { position: absolute; top: 8px; right: 10px; background: none; border: none; font-size: 26px; line-height: 1; color: var(--aop-muted); cursor: pointer; padding: 4px 8px; margin: 0; }
.aop-modal-title { margin: 0 0 12px; font-size: 1.2em; }
.aop-modal-body { font-size: .95em; line-height: 1.5; }
body.aop-modal-open { overflow: hidden; }
@media (max-width: 549px) { .aop-modal-box { margin: 4vh 12px 0; padding: 22px 18px; } .aop-cards { grid-template-columns: repeat(2, 1fr); } }

/* ─── Bloc de fin d'options (0.24.0) : total + bouton dans le flux, là où l'œil arrive après le dernier choix ─── */
.aop-inline { margin: 6px 0 20px; }
.aop-inline .aop-total-box { margin: 0 0 12px; }
.aop-inline-action { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; }
.aop-inline-action:empty { display: none; }

/* ─── Bande fixe en bas de page (0.13.0) : relais du bloc de fin d'options, copie du bouton (data-aop-proxy) ─── */
body.single-product.aop-has-bar { padding-bottom: 85px; }
.aop-bar { --aop-bar-button: #2c3e50; --aop-bar-button-hover: #1a252f; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9998; height: 68px; margin: 0; padding: 0; background: rgba(255,255,255,.97); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border-top: 1px solid rgba(0,0,0,.06); box-shadow: 0 -2px 20px rgba(0,0,0,.04); display: flex; align-items: center; transition: transform .22s ease, opacity .18s ease, visibility 0s linear; }
.aop-bar-inner { width: 100%; max-width: 1080px; margin: 0 auto; padding: 0 15px; display: flex; align-items: center; justify-content: flex-end; gap: 24px; }
.aop-bar .aop-total-box { margin: 0; padding: 0; background: none; border: 0; border-radius: 0; text-align: right; }
.aop-bar .aop-total-row { justify-content: flex-end; gap: 8px; }
.aop-bar .aop-total-label { font-size: 12px; font-weight: 500; color: #9ca3ab; letter-spacing: .02em; }
.aop-bar .aop-total-value { font-size: 18px; font-weight: 600; color: #1e2a38; letter-spacing: -.01em; }
.aop-bar .aop-total-box.is-from .aop-total-value { color: #4b5563; }
.aop-bar .aop-total-old { font-size: 12px; margin-right: 6px; }
.aop-bar-action { flex: 0 0 auto; }
.aop-bar-action:empty { display: none; }
/* Le bloc dans le flux reste toujours présent. Ne retirer que son relais ; aucun saut de page. */
.aop-bar.aop-bar--hidden { visibility: hidden; opacity: 0; pointer-events: none; transform: translateY(100%); transition-delay: 0s, 0s, .22s; }
/* Bouton dans la bande : « Personnaliser » d'APD (son style deux lignes est neutralisé) ou « Ajouter au panier ». */
.aop-bar .apd-customize-button, .aop-bar .single_add_to_cart_button { display: inline-flex; flex-direction: row; align-items: center; justify-content: center; min-width: 0; width: auto; height: 40px; margin: 0; padding: 0 20px; border: 0; border-radius: 4px; background: var(--aop-bar-button); color: #fff; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; text-decoration: none; line-height: 1; white-space: nowrap; box-shadow: none; transform: none; filter: none; transition: background .2s ease, transform .15s ease; cursor: pointer; }
.aop-bar .apd-customize-button::before { display: none; }
.aop-bar .apd-customize-button:hover, .aop-bar .apd-customize-button:focus-visible, .aop-bar .single_add_to_cart_button:hover, .aop-bar .single_add_to_cart_button:focus-visible { background: var(--aop-bar-button-hover); color: #fff; transform: none; box-shadow: none; filter: none; }
.aop-bar .apd-customize-button:active, .aop-bar .single_add_to_cart_button:active { transform: scale(.98); }
@media (prefers-reduced-motion: reduce) { .aop-bar, .aop-bar.aop-bar--hidden { transition: none; } }
@media (max-width: 549px) {
	body.single-product.aop-has-bar { padding-bottom: 75px; }
	.aop-bar { height: 58px; }
	.aop-bar-inner { gap: 12px; }
	.aop-bar .aop-total-box:not(.is-from) .aop-total-label { display: none; }
	.aop-bar .aop-total-value { font-size: 16px; }
	.aop-bar .apd-customize-button, .aop-bar .single_add_to_cart_button { height: 36px; padding: 0 14px; font-size: 10px; letter-spacing: .04em; }
}
@media print { .aop-bar { display: none; } body.single-product.aop-has-bar { padding-bottom: 0; } }

/* 0.21.2 — « À partir de » d'origine barré dans le catalogue quand une promo abaisse le plus petit tirage */
.aop-from-price del { opacity: .6; margin-right: .3em; }
.aop-from-price ins { text-decoration: none; }

/* 0.24.3 : attente de l’enregistrement des options avant d’ouvrir le personnalisateur */
.apd-customize-button.is-busy { opacity: .6; pointer-events: none; cursor: progress; }
