/* OVMQ 1.1 — source visuelle unique OMQ / OVQ (18/10/2026). Charger ce seul fichier ; polices dans fonts/.
 OVMQ — socle visuel commun OMQ / OVQ. Thème clair uniquement.
   Usage : <html data-theme="omq|ovq" data-density="compact|normal|aere"> + <body class="ov-app">.
   Aucune police distante, aucune dépendance. Préfixe : ov-. */

:root{
  --ov-font:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  /* Neutres communs */
  --ov-bg:#FFFCF5; --ov-surface:#FFFFFF; --ov-surface-2:#F6F0E6; --ov-surface-3:#EBE2D3;
  --ov-ink:#2E1D12; --ov-ink-2:#5B4A3C; --ov-ink-3:#74635A;
  --ov-line:#E7DDCD; --ov-line-strong:#8F7E6E; /* 3,9:1 sur blanc : seul repère d’un champ */
  --ov-inverse:#2E1D12; --ov-on-inverse:#FFFCF5; --ov-on-inverse-2:#D9CCBC;
  /* États */
  --ov-success:#1E6E43; --ov-success-bg:#E2F1E7;
  --ov-warning:#7A5200; --ov-warning-bg:#FFF0CF;
  --ov-danger:#B3261E;  --ov-danger-bg:#FBE6E3; --ov-danger-line:#E6B4AE;
  --ov-info:#245A8C;    --ov-info-bg:#E4EEF8;
  --ov-off:#675E56;     --ov-off-bg:#EEE9E3;
  /* Marque par défaut = OMQ */
  --ov-brand:#17633F; --ov-brand-hover:#0F4F31; --ov-brand-ink:#0F4A2C; --ov-brand-soft:#E3F0E7; --ov-brand-line:#B5D6C1; --ov-on-brand:#FFFFFF;
  /* Typographie */
  --ov-fs-xs:12px; --ov-fs-sm:14px; --ov-fs-md:16px; --ov-fs-lg:18px; --ov-fs-xl:22px; --ov-fs-2xl:28px; --ov-fs-3xl:34px;
  --ov-lh-tight:1.15; --ov-lh:1.45;
  /* Rayons, ombres */
  --ov-r-sm:8px; --ov-r-md:12px; --ov-r-lg:16px; --ov-r-xl:24px; --ov-r-pill:999px;
  --ov-shadow-sm:0 1px 2px rgba(46,29,18,.06);
  --ov-shadow-md:0 8px 24px -10px rgba(46,29,18,.28);
  --ov-shadow-lg:0 -10px 36px -14px rgba(46,29,18,.38);
  --ov-focus:0 0 0 2px var(--ov-bg),0 0 0 4px var(--ov-brand);
  /* Contrôles (indépendants de la densité) */
  --ov-control:48px; --ov-control-lg:52px; --ov-touch:44px; --ov-icon:20px; --ov-icon-sm:16px;
  --ov-topbar-h:64px; --ov-tabbar-h:64px;
  --ov-maxw:560px; --ov-maxw-wide:1200px;
  /* Superpositions, mouvement */
  --ov-z-sticky:10; --ov-z-nav:20; --ov-z-sheet:40; --ov-z-dialog:50; --ov-z-toast:60;
  --ov-dur-fast:120ms; --ov-dur:200ms; --ov-ease:cubic-bezier(.2,.7,.2,1);
  /* Densité Normale */
  --ov-gutter:16px; --ov-s1:4px; --ov-s2:8px; --ov-s3:12px; --ov-s4:16px; --ov-s5:24px; --ov-s6:32px;
}
[data-density="compact"]{--ov-gutter:12px; --ov-s2:6px; --ov-s3:8px; --ov-s4:12px; --ov-s5:16px; --ov-s6:24px}
[data-density="aere"]{--ov-gutter:20px; --ov-s2:10px; --ov-s3:16px; --ov-s4:20px; --ov-s5:32px; --ov-s6:40px}

[data-theme="omq"]{--ov-brand:#17633F; --ov-brand-hover:#0F4F31; --ov-brand-ink:#0F4A2C; --ov-brand-soft:#E3F0E7; --ov-brand-line:#B5D6C1; --ov-on-brand:#FFFFFF}
[data-theme="ovq"]{--ov-brand:#C2410C; --ov-brand-hover:#A1350A; --ov-brand-ink:#8C2D07; --ov-brand-soft:#FCE9DC; --ov-brand-line:#F0C2A4; --ov-on-brand:#FFFFFF}

@media (prefers-reduced-motion:reduce){:root{--ov-dur-fast:0ms; --ov-dur:0ms}}

/* Base */
.ov-app{font-family:var(--ov-font); font-size:var(--ov-fs-md); line-height:var(--ov-lh); color:var(--ov-ink); background:var(--ov-bg); -webkit-font-smoothing:antialiased; -webkit-text-size-adjust:100%}
.ov-app *,.ov-app *::before,.ov-app *::after{box-sizing:border-box}
/* Colonne d’écran : .ov-page (flex:1) pousse la navigation / le pied sticky en bas, même sur une page courte. */
body.ov-app,.ov-screen{min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; margin:0}
.ov-app :where(h1,h2,h3,h4,p,ul,ol,figure,dl,dd){margin:0}
.ov-app :where(button,input,select,textarea){font:inherit; color:inherit}
.ov-app a{color:var(--ov-brand-ink)}
.ov-app a:hover{color:var(--ov-brand-hover)}
.ov-app :focus-visible{outline:none; box-shadow:var(--ov-focus)}
.ov-sr{position:absolute!important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}
.ov-ico{width:var(--ov-icon); height:var(--ov-icon); flex:none; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round}
.ov-ico--sm{width:var(--ov-icon-sm); height:var(--ov-icon-sm)}

/* Typographie */
.ov-h1{font-size:var(--ov-fs-2xl); font-weight:800; line-height:var(--ov-lh-tight); letter-spacing:-.015em; text-wrap:balance; overflow-wrap:break-word}
.ov-h2{font-size:var(--ov-fs-xl); font-weight:800; line-height:1.2; letter-spacing:-.01em; overflow-wrap:break-word}
.ov-h3{font-size:var(--ov-fs-lg); font-weight:700; line-height:1.25; overflow-wrap:break-word}
.ov-eyebrow{font-size:var(--ov-fs-xs); font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ov-ink-3)}
.ov-lead{font-size:var(--ov-fs-md); color:var(--ov-ink-2); text-wrap:pretty}
.ov-small{font-size:var(--ov-fs-sm); color:var(--ov-ink-2); text-wrap:pretty}
.ov-xs{font-size:var(--ov-fs-xs); color:var(--ov-ink-3)}
.ov-strong{font-weight:700; color:var(--ov-ink)}
.ov-price{font-weight:800; font-variant-numeric:tabular-nums; overflow-wrap:break-word}
.ov-num{font-variant-numeric:tabular-nums}
.ov-between > .ov-price,.ov-manage-head > .ov-price,.ov-total > .ov-price,.ov-item-end .ov-price{flex:none; white-space:nowrap}

/* Mise en page */
.ov-page{width:100%; max-width:var(--ov-maxw); margin:0 auto; padding:var(--ov-s4) var(--ov-gutter) var(--ov-s6); display:flex; flex-direction:column; gap:var(--ov-s5); flex:1}
.ov-stack{display:flex; flex-direction:column; gap:var(--ov-s3)}
.ov-stack-sm{display:flex; flex-direction:column; gap:var(--ov-s2)}
.ov-between{display:flex; align-items:center; justify-content:space-between; gap:var(--ov-s3); min-width:0}
.ov-cluster{display:flex; flex-wrap:wrap; align-items:center; gap:var(--ov-s2)}
.ov-grid-2{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--ov-s3)}
.ov-section{display:flex; flex-direction:column; gap:var(--ov-s3)}
.ov-section-head{display:flex; align-items:baseline; justify-content:space-between; gap:var(--ov-s3)}
.ov-divider{height:1px; border:0; margin:0; background:var(--ov-line)}
.ov-bleed{margin-left:calc(var(--ov-gutter) * -1); margin-right:calc(var(--ov-gutter) * -1)}

/* En-tête connecté / public */
.ov-topbar{position:sticky; top:0; z-index:var(--ov-z-sticky); display:flex; align-items:center; gap:var(--ov-s3); min-height:var(--ov-topbar-h); padding:var(--ov-s2) var(--ov-gutter); background:var(--ov-bg); border-bottom:1px solid var(--ov-line)}
.ov-id{display:flex; align-items:center; gap:var(--ov-s2); min-width:0; flex:1; color:inherit; text-decoration:none}
.ov-logo{flex:none; width:40px; height:40px; border-radius:50%; background:var(--ov-brand); color:var(--ov-on-brand); display:grid; place-items:center; font-weight:800; font-size:12px; letter-spacing:.02em}
.ov-logo--shop{border-radius:var(--ov-r-md); font-size:16px}
.ov-id-text{display:flex; flex-direction:column; min-width:0; line-height:1.2}
.ov-id-name{font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.ov-id-sub{font-size:var(--ov-fs-xs); color:var(--ov-ink-3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.ov-plus{flex:none; display:inline-flex; align-items:center; gap:6px; min-height:var(--ov-touch); padding:0 var(--ov-s3); border-radius:var(--ov-r-pill); border:1px solid var(--ov-line); background:var(--ov-surface); color:var(--ov-brand-ink); font-weight:700; font-size:var(--ov-fs-sm); white-space:nowrap; cursor:pointer; text-decoration:none}
.ov-plus[aria-expanded="true"],.ov-plus.is-active{background:var(--ov-brand-soft); border-color:var(--ov-brand-line)}
.ov-back{display:inline-flex; align-items:center; gap:6px; min-height:var(--ov-touch); font-weight:700; color:var(--ov-brand-ink); text-decoration:none; background:none; border:0; padding:0; cursor:pointer}

/* Navigation inférieure (mobile) → rail latéral (ordinateur, via .ov-shell) */
.ov-tabbar{position:sticky; left:0; right:0; bottom:0; z-index:var(--ov-z-nav); display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:4px; min-height:var(--ov-tabbar-h); padding:6px 6px calc(6px + env(safe-area-inset-bottom)); background:var(--ov-surface); border-top:1px solid var(--ov-line)}
.ov-tab{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-height:52px; padding:4px 2px; border-radius:var(--ov-r-md); color:var(--ov-ink-2); font-size:12px; font-weight:600; line-height:1.15; text-align:center; text-decoration:none}
.ov-tab[aria-current="page"],.ov-tab.is-active{background:var(--ov-brand-soft); color:var(--ov-brand-ink); font-weight:800}
.ov-has-tabbar{padding-bottom:var(--ov-s6)}
.ov-shell{container-type:inline-size}
@container (min-width:900px){
  .ov-shell-grid{display:grid; grid-template-columns:232px minmax(0,1fr); align-items:start}
  .ov-shell .ov-tabbar{position:sticky; top:var(--ov-topbar-h); grid-template-columns:none; grid-auto-rows:min-content; border-top:0; border-right:1px solid var(--ov-line); height:calc(100vh - var(--ov-topbar-h)); padding:var(--ov-s4); background:var(--ov-bg)}
  .ov-shell .ov-tab{flex-direction:row; justify-content:flex-start; gap:10px; min-height:var(--ov-touch); padding:0 12px; font-size:var(--ov-fs-sm)}
  .ov-shell .ov-has-tabbar{padding-bottom:var(--ov-s6)}
  .ov-shell .ov-page{max-width:760px}
}

/* Pieds d'action (panier, publication) et navigation : sticky, dernier enfant du flux.
   Ils occupent leur hauteur réelle, quel que soit le libellé : aucune réserve à deviner.
   Variante --fixed seulement si le pied doit sortir du flux : mesurer avec ResizeObserver → --ov-dock-h. */
.ov-dock{position:sticky; left:0; right:0; bottom:0; z-index:var(--ov-z-nav); display:flex; flex-direction:column; gap:var(--ov-s2); padding:var(--ov-s3) var(--ov-gutter) calc(var(--ov-s3) + env(safe-area-inset-bottom)); background:var(--ov-surface); border-top:1px solid var(--ov-line); box-shadow:var(--ov-shadow-lg)}
.ov-dock > *{width:100%; max-width:var(--ov-maxw); margin-left:auto; margin-right:auto}
.ov-has-dock{padding-bottom:var(--ov-s6)}
.ov-dock--fixed{position:fixed}
.ov-has-dock-fixed{padding-bottom:calc(var(--ov-dock-h) + var(--ov-s4))}

/* Boutons */
.ov-btn{--_bg:var(--ov-surface); --_fg:var(--ov-ink); --_bd:var(--ov-line-strong); display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:var(--ov-control); padding:0 var(--ov-s4); border-radius:var(--ov-r-md); border:1px solid var(--_bd); background:var(--_bg); color:var(--_fg); font-weight:700; font-size:var(--ov-fs-md); line-height:1.2; text-align:center; text-decoration:none; cursor:pointer; transition:background-color var(--ov-dur-fast) var(--ov-ease),transform var(--ov-dur-fast); -webkit-tap-highlight-color:transparent}
.ov-app a.ov-btn{color:var(--_fg)}
.ov-btn:active{transform:translateY(1px)}
.ov-btn--primary{--_bg:var(--ov-brand); --_fg:var(--ov-on-brand); --_bd:var(--ov-brand)}
.ov-btn--primary:hover{--_bg:var(--ov-brand-hover); --_bd:var(--ov-brand-hover)}
.ov-btn--secondary:hover{--_bg:var(--ov-surface-2)}
.ov-btn--tonal{--_bg:var(--ov-brand-soft); --_fg:var(--ov-brand-ink); --_bd:transparent}
.ov-btn--tonal:hover{--_bd:var(--ov-brand-line)}
.ov-btn--ghost{--_bg:transparent; --_fg:var(--ov-brand-ink); --_bd:transparent; padding:0 var(--ov-s2)}
.ov-btn--ghost:hover{--_bg:var(--ov-brand-soft)}
.ov-btn--danger{--_fg:var(--ov-danger); --_bd:var(--ov-danger-line)}
.ov-btn--danger:hover{--_bg:var(--ov-danger-bg)}
.ov-btn--selected{--_bg:var(--ov-brand-soft); --_fg:var(--ov-brand-ink); --_bd:var(--ov-brand)}
.ov-btn--inverse{--_bg:var(--ov-inverse); --_fg:var(--ov-on-inverse); --_bd:var(--ov-inverse)}
.ov-btn--sm{min-height:var(--ov-touch); padding:0 var(--ov-s3); font-size:var(--ov-fs-sm)}
.ov-btn--lg{min-height:var(--ov-control-lg); font-size:var(--ov-fs-lg); border-radius:var(--ov-r-lg)}
.ov-btn--block{display:flex; width:100%}
.ov-btn--icon{width:var(--ov-touch); min-height:var(--ov-touch); padding:0; flex:none}
.ov-btn.is-focus{box-shadow:var(--ov-focus)}
.ov-btn:disabled,.ov-btn[aria-disabled="true"]{--_bg:var(--ov-off-bg); --_fg:var(--ov-off); --_bd:transparent; cursor:not-allowed; transform:none}
.ov-btn[aria-busy="true"]{cursor:progress}
.ov-btn[aria-busy="true"]::before{content:""; width:16px; height:16px; border-radius:50%; border:2px solid currentColor; border-right-color:transparent; animation:ov-spin .8s linear infinite}
@keyframes ov-spin{to{transform:rotate(360deg)}}
.ov-actions{display:flex; flex-direction:column; gap:var(--ov-s2)}
.ov-actions-row{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:var(--ov-s2)}
.ov-link{display:inline-flex; align-items:center; gap:6px; min-height:var(--ov-touch); padding:0; border:0; background:none; color:var(--ov-brand-ink); font-weight:700; font-size:inherit; text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1.5px; cursor:pointer}
.ov-link--quiet{text-decoration:none; color:var(--ov-ink-2); font-weight:600}

/* Champs */
.ov-field{display:flex; flex-direction:column; gap:6px; min-width:0}
.ov-label{font-size:var(--ov-fs-sm); font-weight:700}
.ov-hint{font-size:var(--ov-fs-xs); color:var(--ov-ink-3)}
.ov-error-text{font-size:var(--ov-fs-sm); font-weight:600; color:var(--ov-danger)}
.ov-input,.ov-select{width:100%; min-width:0; min-height:var(--ov-control); padding:0 var(--ov-s3); border-radius:var(--ov-r-md); border:1px solid var(--ov-line-strong); background:var(--ov-surface); color:var(--ov-ink); font-size:var(--ov-fs-md)}
.ov-select{appearance:auto}
.ov-input::placeholder{color:var(--ov-ink-3)}
.ov-input:focus,.ov-select:focus,.ov-input.is-focus{outline:none; border-color:var(--ov-brand); box-shadow:0 0 0 3px var(--ov-brand-soft)}
.ov-input[aria-invalid="true"]{border-color:var(--ov-danger); box-shadow:0 0 0 3px var(--ov-danger-bg)}
.ov-input:disabled{background:var(--ov-off-bg); color:var(--ov-off); border-color:transparent}
.ov-group{display:flex; align-items:stretch; min-width:0; border:1px solid var(--ov-line-strong); border-radius:var(--ov-r-md); background:var(--ov-surface); overflow:hidden}
.ov-group:focus-within{border-color:var(--ov-brand); box-shadow:0 0 0 3px var(--ov-brand-soft)}
.ov-group .ov-input{border:0; border-radius:0; box-shadow:none; flex:1}
.ov-addon{flex:none; display:flex; align-items:center; padding:0 var(--ov-s3); background:var(--ov-surface-2); border:0; font-weight:700; font-size:var(--ov-fs-sm); color:var(--ov-ink-2); white-space:nowrap}
.ov-app,.ov-app *{scrollbar-width:none}
.ov-app ::-webkit-scrollbar{display:none}
.ov-search{position:relative; min-width:0}
.ov-search .ov-input{padding-left:44px; border-radius:var(--ov-r-pill)}
.ov-search > .ov-ico{position:absolute; left:15px; top:50%; transform:translateY(-50%); color:var(--ov-ink-3); pointer-events:none}

/* Choix */
.ov-chips{display:flex; flex-wrap:wrap; gap:var(--ov-s2)}
.ov-chip{flex:none; display:inline-flex; align-items:center; gap:6px; min-height:var(--ov-touch); padding:0 16px; border-radius:var(--ov-r-pill); border:1px solid var(--ov-line-strong); background:var(--ov-surface); font-weight:600; font-size:var(--ov-fs-sm); white-space:nowrap; cursor:pointer; color:var(--ov-ink)}
.ov-chip[aria-pressed="true"],.ov-chip.is-selected{background:var(--ov-ink); border-color:var(--ov-ink); color:var(--ov-on-inverse)}
.ov-chip-count{font-variant-numeric:tabular-nums; opacity:.8}
.ov-check,.ov-radio{display:flex; align-items:center; gap:var(--ov-s3); min-height:var(--ov-touch); cursor:pointer; min-width:0}
.ov-check input,.ov-radio input{appearance:none; flex:none; width:24px; height:24px; margin:0; border:2px solid var(--ov-line-strong); background:var(--ov-surface) center/16px no-repeat; cursor:pointer}
.ov-check input{border-radius:7px}
.ov-radio input{border-radius:50%}
.ov-check input:checked{background-color:var(--ov-brand); border-color:var(--ov-brand); background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")}
.ov-radio input:checked{border-color:var(--ov-brand); background-color:var(--ov-brand); box-shadow:inset 0 0 0 4px var(--ov-surface)}
.ov-check input:disabled,.ov-radio input:disabled{background-color:var(--ov-off-bg); border-color:#CFC6BC; cursor:not-allowed}
.ov-check input:disabled:checked{background-color:#B4AAA0}
.ov-switch{display:inline-flex; align-items:center; gap:var(--ov-s2); min-height:var(--ov-touch); cursor:pointer; font-size:var(--ov-fs-sm); font-weight:700; white-space:nowrap}
.ov-switch input{appearance:none; flex:none; position:relative; width:48px; height:28px; margin:0; border-radius:var(--ov-r-pill); background:#AFA398; cursor:pointer; transition:background-color var(--ov-dur)}
.ov-switch input::after{content:""; position:absolute; top:3px; left:3px; width:22px; height:22px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.25); transition:transform var(--ov-dur) var(--ov-ease)}
.ov-switch input:checked{background:var(--ov-brand)}
.ov-switch input:checked::after{transform:translateX(20px)}
.ov-switch input:disabled{background:var(--ov-off-bg); cursor:not-allowed}
.ov-seg{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:var(--ov-s2)}
.ov-seg > button{min-height:var(--ov-control); padding:0 var(--ov-s2); border-radius:var(--ov-r-md); border:1px solid var(--ov-line-strong); background:var(--ov-surface); font-weight:700; cursor:pointer; color:var(--ov-ink)}
.ov-seg > button[aria-pressed="true"]{border:2px solid var(--ov-brand); background:var(--ov-brand-soft); color:var(--ov-brand-ink)}

/* Étapes WhatsApp → Photo → Vérifier */
.ov-steps{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; list-style:none; margin:0; padding:0}
.ov-steps li{border-top:4px solid var(--ov-surface-3); padding-top:6px; font-size:var(--ov-fs-xs); font-weight:600; color:var(--ov-ink-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ov-steps li.is-done{border-color:var(--ov-brand-line); color:var(--ov-ink-2)}
.ov-steps li[aria-current="step"]{border-color:var(--ov-brand); color:var(--ov-ink); font-weight:800}

/* Alertes, badges, toasts */
.ov-alert{display:flex; align-items:flex-start; gap:var(--ov-s3); padding:var(--ov-s3) var(--ov-s4); border-radius:var(--ov-r-lg); background:var(--ov-surface-2); color:var(--ov-ink); font-size:var(--ov-fs-sm); line-height:1.4}
.ov-alert > div{min-width:0; flex:1; display:block; text-wrap:pretty}
.ov-alert strong{display:block; margin-bottom:2px; font-size:var(--ov-fs-md)}
.ov-alert .ov-ico{margin-top:1px}
.ov-alert--info{background:var(--ov-info-bg)} .ov-alert--info strong,.ov-alert--info .ov-ico{color:var(--ov-info)}
.ov-alert--success{background:var(--ov-success-bg)} .ov-alert--success strong,.ov-alert--success .ov-ico{color:var(--ov-success)}
.ov-alert--warning{background:var(--ov-warning-bg)} .ov-alert--warning strong,.ov-alert--warning .ov-ico{color:var(--ov-warning)}
.ov-alert--danger{background:var(--ov-danger-bg)} .ov-alert--danger strong,.ov-alert--danger .ov-ico{color:var(--ov-danger)}
.ov-alert--brand{background:var(--ov-brand-soft)} .ov-alert--brand strong{color:var(--ov-brand-ink)}
.ov-spinner{flex:none; width:20px; height:20px; border-radius:50%; border:2.5px solid var(--ov-brand-line); border-top-color:var(--ov-brand); animation:ov-spin .8s linear infinite}
.ov-badge{display:inline-flex; align-items:center; gap:6px; min-height:26px; padding:0 10px; border-radius:var(--ov-r-pill); background:var(--ov-surface-2); color:var(--ov-ink-2); font-size:var(--ov-fs-xs); font-weight:700; white-space:nowrap}
.ov-badge--dot::before{content:""; width:7px; height:7px; border-radius:50%; background:currentColor}
.ov-badge--brand{background:var(--ov-brand-soft); color:var(--ov-brand-ink)}
.ov-badge--success{background:var(--ov-success-bg); color:var(--ov-success)}
.ov-badge--warning{background:var(--ov-warning-bg); color:var(--ov-warning)}
.ov-badge--danger{background:var(--ov-danger-bg); color:var(--ov-danger)}
.ov-badge--info{background:var(--ov-info-bg); color:var(--ov-info)}
.ov-badge--off{background:var(--ov-off-bg); color:var(--ov-off)}
.ov-toast{display:flex; align-items:center; gap:var(--ov-s2); padding:var(--ov-s3) var(--ov-s4); border-radius:var(--ov-r-md); background:var(--ov-inverse); color:var(--ov-on-inverse); font-size:var(--ov-fs-sm); font-weight:600; box-shadow:var(--ov-shadow-md)}
.ov-toast-zone{position:fixed; left:var(--ov-gutter); right:var(--ov-gutter); bottom:calc(var(--ov-tabbar-h) + 12px); z-index:var(--ov-z-toast); display:flex; flex-direction:column; gap:8px; pointer-events:none}

/* Cartes, listes, accordéons */
.ov-card{display:flex; flex-direction:column; gap:var(--ov-s3); padding:var(--ov-s4); border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface); min-width:0}
.ov-card--flush{padding:0; gap:0; overflow:hidden}
.ov-card--soft{background:var(--ov-surface-2); border-color:transparent}
.ov-card--brand{background:var(--ov-brand-soft); border-color:transparent}
.ov-card--inverse{background:var(--ov-inverse); border-color:transparent; color:var(--ov-on-inverse)}
.ov-list{list-style:none; margin:0; padding:0; border:1px solid var(--ov-line); border-radius:var(--ov-r-lg); background:var(--ov-surface); overflow:hidden}
.ov-list > li + li{border-top:1px solid var(--ov-line)}
.ov-list--plain{border:0; border-radius:0; background:transparent}
.ov-row{display:flex; align-items:center; gap:var(--ov-s3); width:100%; min-height:52px; padding:var(--ov-s2) var(--ov-s4); border:0; background:none; color:inherit; text-align:left; text-decoration:none; font-size:var(--ov-fs-md); cursor:pointer}
.ov-app a.ov-row{color:inherit}
.ov-row:hover{background:var(--ov-surface-2)}
.ov-row-ico{flex:none; width:36px; height:36px; border-radius:10px; display:grid; place-items:center; background:var(--ov-brand-soft); color:var(--ov-brand-ink)}
.ov-row-main{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.ov-row-title{font-weight:600; line-height:1.3; overflow-wrap:break-word}
.ov-row-sub{font-size:var(--ov-fs-sm); color:var(--ov-ink-3); overflow-wrap:break-word}
.ov-row-end{flex:none; display:flex; align-items:center; gap:var(--ov-s2); color:var(--ov-ink-3)}
.ov-details > summary{list-style:none; display:flex; align-items:center; justify-content:space-between; gap:var(--ov-s3); min-height:52px; padding:var(--ov-s2) var(--ov-s4); font-weight:700; cursor:pointer}
.ov-details > summary::-webkit-details-marker{display:none}
.ov-details > summary::after{content:""; flex:none; width:9px; height:9px; margin-right:4px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:translateY(-3px) rotate(45deg); transition:transform var(--ov-dur)}
.ov-details[open] > summary::after{transform:translateY(2px) rotate(-135deg)}
.ov-details-body{display:flex; flex-direction:column; gap:var(--ov-s3); padding:0 var(--ov-s4) var(--ov-s4)}
.ov-details--bare > summary,.ov-details--bare > .ov-details-body{padding-left:0; padding-right:0}
.ov-details--bare{border-top:1px solid var(--ov-line); border-bottom:1px solid var(--ov-line)}
.ov-details--bare + .ov-details--bare{border-top:0}

/* Médias */
.ov-media{position:relative; flex:none; overflow:hidden; border-radius:var(--ov-r-md); background:var(--ov-surface-2)}
.ov-media > img{display:block; width:100%; height:100%; object-fit:cover}
.ov-media--thumb{width:56px; height:56px}
.ov-media--empty{display:grid; place-items:center; background:var(--ov-brand-soft); color:var(--ov-brand-ink); font-weight:800; font-size:var(--ov-fs-lg)}
.ov-strip{display:flex; gap:var(--ov-s2); overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; margin:0 calc(var(--ov-gutter) * -1); padding:0 var(--ov-gutter)}
.ov-strip::-webkit-scrollbar{display:none}
.ov-strip > *{flex:none; width:68%; aspect-ratio:4/5; scroll-snap-align:start; border-radius:var(--ov-r-lg)}
.ov-strip > *:first-child{width:78%}
.ov-drop{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--ov-s2); min-height:168px; padding:var(--ov-s4); border:2px dashed var(--ov-line-strong); border-radius:var(--ov-r-lg); background:var(--ov-surface); color:var(--ov-ink-2); text-align:center}
.ov-doc{position:relative; overflow:hidden; border-radius:var(--ov-r-lg); background:var(--ov-surface-3); aspect-ratio:3/4; max-height:360px; width:100%}

/* Vitrine publique */
.ov-hero{position:relative; display:flex; flex-direction:column; justify-content:flex-end; min-height:400px; overflow:hidden; background:var(--ov-inverse); color:#fff}
.ov-hero-media{position:absolute; inset:0}
.ov-hero-media > img{width:100%; height:100%; object-fit:cover}
.ov-hero::after{content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(20,12,6,.55) 0%,rgba(20,12,6,0) 22%,rgba(20,12,6,0) 34%,rgba(20,12,6,.88) 70%,rgba(20,12,6,.94) 100%)}
.ov-hero-top{position:absolute; top:0; left:0; right:0; z-index:2; display:flex; align-items:center; justify-content:space-between; gap:var(--ov-s2); padding:var(--ov-s3) var(--ov-gutter)}
.ov-hero-body{position:relative; z-index:2; display:flex; flex-direction:column; gap:var(--ov-s2); padding:var(--ov-s5) var(--ov-gutter); pointer-events:none}
.ov-hero-body :where(a,button){pointer-events:auto}
.ov-hero-name{font-size:var(--ov-fs-3xl); font-weight:800; line-height:1.04; letter-spacing:-.02em; text-wrap:balance; overflow-wrap:break-word}
.ov-hero-meta{display:flex; flex-wrap:wrap; gap:4px 12px; font-size:var(--ov-fs-sm); color:#F3EADF}
.ov-hero--nophoto{min-height:0; background:var(--ov-brand-soft); color:var(--ov-ink)}
.ov-hero--nophoto::after{display:none}
.ov-hero--nophoto .ov-hero-top{position:static}
.ov-hero--nophoto .ov-hero-meta{color:var(--ov-ink-2)}
.ov-glass{display:inline-flex; align-items:center; gap:8px; min-height:var(--ov-touch); padding:0 14px; border-radius:var(--ov-r-pill); border:0; background:rgba(255,252,245,.95); color:var(--ov-ink); font-size:var(--ov-fs-sm); font-weight:700; white-space:nowrap; text-decoration:none; cursor:pointer}
.ov-app a.ov-glass{color:var(--ov-ink)}
.ov-glass .ov-logo{width:30px; height:30px; font-size:10px; margin-left:-8px}
.ov-facts{display:flex; flex-wrap:wrap; gap:var(--ov-s2)}
.ov-fact{display:inline-flex; align-items:center; gap:6px; min-height:32px; padding:4px 12px; border-radius:var(--ov-r-pill); background:var(--ov-surface-2); font-size:var(--ov-fs-sm); font-weight:600; color:var(--ov-ink-2)}
.ov-product{position:relative; display:flex; flex-direction:column; min-width:0; overflow:hidden; border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface)}
.ov-product > .ov-media{width:100%; aspect-ratio:4/5; border-radius:0}
.ov-product-body{flex:1; display:flex; flex-direction:column; gap:4px; padding:var(--ov-s3)}
.ov-product-name{font-weight:700; line-height:1.25; overflow-wrap:break-word}
.ov-product--nophoto .ov-product-body > :nth-child(-n+2){padding-right:44px}
.ov-product--nophoto .ov-product-body{min-height:0; padding-top:calc(var(--ov-s3) + 2px)}
.ov-product .ov-price{margin-top:auto; padding-top:var(--ov-s2); font-size:var(--ov-fs-lg)}
.ov-product-share{position:absolute; top:8px; right:8px; z-index:2; width:var(--ov-touch); height:var(--ov-touch); border-radius:50%; border:0; background:rgba(255,252,245,.95); color:var(--ov-ink); display:grid; place-items:center; cursor:pointer; box-shadow:var(--ov-shadow-sm)}
.ov-product--nophoto .ov-product-share{background:var(--ov-surface-2)}
.ov-qty{display:flex; align-items:center; justify-content:space-between; gap:2px; min-height:var(--ov-control); padding:2px; border-radius:var(--ov-r-md); background:var(--ov-brand-soft)}
.ov-qty > button{width:var(--ov-touch); height:var(--ov-touch); border:0; border-radius:10px; background:var(--ov-surface); color:var(--ov-brand-ink); font-size:20px; font-weight:700; cursor:pointer; display:grid; place-items:center}
.ov-qty > button:last-child{background:var(--ov-brand); color:var(--ov-on-brand)}
.ov-qty > output{min-width:24px; text-align:center; font-weight:800; color:var(--ov-brand-ink); font-variant-numeric:tabular-nums}
.ov-footer{display:flex; flex-direction:column; gap:var(--ov-s4); padding:var(--ov-s5) var(--ov-gutter); background:var(--ov-inverse); color:var(--ov-on-inverse)}
.ov-app .ov-footer a{color:var(--ov-on-inverse-2)}
.ov-footer-links{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 var(--ov-s4); font-size:var(--ov-fs-sm)}
.ov-footer-links a{min-height:var(--ov-touch); display:flex; align-items:center}
.ov-footer-legal{display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; padding-top:var(--ov-s3); border-top:1px solid #4A3829; font-size:var(--ov-fs-xs); color:var(--ov-on-inverse-2)}

/* Espace vendeur */
.ov-item{display:flex; align-items:center; gap:var(--ov-s3); min-height:76px; padding:var(--ov-s3) var(--ov-s4)}
.ov-item-main{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.ov-item-name{font-weight:700; line-height:1.25; overflow-wrap:break-word}
.ov-item-end{flex:none; display:flex; flex-direction:column; align-items:flex-end; gap:4px}
.ov-manage-head{display:flex; align-items:flex-start; gap:var(--ov-s3)}
.ov-manage-foot{display:flex; align-items:center; gap:var(--ov-s2); padding-top:var(--ov-s3); border-top:1px solid var(--ov-line)}
.ov-manage-foot > .ov-switch{margin-right:auto}
.ov-verify{display:flex; align-items:center; gap:var(--ov-s3); min-height:64px; padding:var(--ov-s2) var(--ov-s2) var(--ov-s2) var(--ov-s4)}
.ov-verify > .ov-check{flex:1}
.ov-stats{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--ov-s2)}
.ov-stats--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ov-stat{display:flex; flex-direction:column; gap:2px; min-width:0; padding:var(--ov-s3); border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface)}
.ov-stat-label{font-size:var(--ov-fs-sm); font-weight:600; color:var(--ov-ink-2)}
.ov-stat-value{font-size:var(--ov-fs-2xl); font-weight:800; line-height:1.1; font-variant-numeric:tabular-nums; overflow-wrap:break-word}
.ov-stat-note{font-size:var(--ov-fs-xs); color:var(--ov-ink-3)}
.ov-stat--error .ov-stat-value,.ov-stat--empty .ov-stat-value{color:var(--ov-ink-3)}
.ov-stat .ov-link{min-height:32px; font-size:var(--ov-fs-sm); align-self:flex-start}
.ov-up{color:var(--ov-success); font-weight:700}
.ov-down{color:var(--ov-danger); font-weight:700}
.ov-bars{display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; align-items:end; height:96px}
.ov-bars > span{min-height:4px; border-radius:6px 6px 2px 2px; background:var(--ov-brand-line)}
.ov-bars > span.is-today{background:var(--ov-brand)}
.ov-bars-x{display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; text-align:center; font-size:var(--ov-fs-xs); color:var(--ov-ink-3)}
.ov-tools{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--ov-s2)}
.ov-tool{display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:6px; min-height:92px; padding:var(--ov-s3) 4px; border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface); color:var(--ov-ink); font-size:13px; font-weight:600; line-height:1.2; text-align:center; text-decoration:none; cursor:pointer; overflow-wrap:break-word}
.ov-app a.ov-tool{color:var(--ov-ink)}
.ov-tool:hover{border-color:var(--ov-brand-line)}
.ov-tool-ico{width:40px; height:40px; border-radius:12px; display:grid; place-items:center; background:var(--ov-brand-soft); color:var(--ov-brand-ink)}
.ov-rank{flex:none; width:28px; height:28px; border-radius:50%; display:grid; place-items:center; background:var(--ov-surface-2); font-size:var(--ov-fs-sm); font-weight:800; color:var(--ov-ink-2)}
.ov-meter{height:6px; border-radius:3px; background:var(--ov-surface-2); overflow:hidden}
.ov-meter > span{display:block; height:100%; background:var(--ov-brand); border-radius:3px}
.ov-empty{display:flex; flex-direction:column; align-items:flex-start; gap:var(--ov-s2); padding:var(--ov-s4); border-radius:var(--ov-r-lg); border:1px dashed var(--ov-line-strong)}

/* Ventes — Live (OVQ) et proforma (OMQ) */
.ov-seq{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:var(--ov-s2)}
.ov-seq > li{display:flex; flex-direction:column; gap:var(--ov-s2); padding:var(--ov-s2) var(--ov-s3); border:1px solid var(--ov-line); border-radius:var(--ov-r-lg); background:var(--ov-surface)}
.ov-seq > li.is-current{border:2px solid var(--ov-brand); background:var(--ov-brand-soft)}
.ov-seq-n{flex:none; width:28px; height:28px; border-radius:50%; background:var(--ov-brand); color:var(--ov-on-brand); display:grid; place-items:center; font-weight:800; font-size:13px; font-variant-numeric:tabular-nums}
.ov-seq-foot{display:flex; align-items:center; gap:var(--ov-s2)}
.ov-player{position:relative; overflow:hidden; aspect-ratio:4/5; max-height:380px; width:100%; border-radius:var(--ov-r-xl); background:var(--ov-inverse); color:#fff}
.ov-player::after{content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(20,12,6,0) 45%,rgba(20,12,6,.9) 100%)}
.ov-player-info{position:absolute; left:0; right:0; bottom:0; z-index:2; display:flex; flex-direction:column; gap:4px; padding:var(--ov-s4); pointer-events:none}
.ov-live-card{position:relative; display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden; background:var(--ov-inverse); color:#fff; text-decoration:none}
.ov-app a.ov-live-card{color:#fff}
.ov-live-card::after{content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(20,12,6,0) 40%,rgba(20,12,6,.9) 100%)}
.ov-live-info{position:relative; z-index:2; display:flex; flex-direction:column; gap:4px; padding:var(--ov-s3); pointer-events:none}
.ov-paper{display:flex; flex-direction:column; gap:var(--ov-s3); padding:var(--ov-s4); border:1px solid var(--ov-line); border-radius:var(--ov-r-md); background:#fff; box-shadow:var(--ov-shadow-md); font-size:var(--ov-fs-sm)}

.ov-seq-live{display:flex; flex-wrap:wrap; align-items:flex-end; gap:var(--ov-s2) var(--ov-s3)}
.ov-seg--sm{grid-auto-columns:auto}
.ov-seg--sm > button{min-height:var(--ov-touch); padding:0 10px; font-size:var(--ov-fs-xs)}
.ov-viewer{position:relative; flex:1; display:flex; flex-direction:column; justify-content:flex-end; min-height:100%; overflow:hidden; color:#fff; touch-action:pan-y; user-select:none}
.ov-viewer-media{position:absolute; inset:0}
.ov-viewer::after{content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(20,12,6,.6) 0%,rgba(20,12,6,0) 20%,rgba(20,12,6,0) 40%,rgba(20,12,6,.94) 72%)}
.ov-viewer-top{position:absolute; top:0; left:0; right:0; z-index:3; display:flex; flex-direction:column; gap:10px; padding:var(--ov-s3) var(--ov-gutter)}
.ov-progress{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:4px}
.ov-progress > span{height:3px; border-radius:2px; background:rgba(255,252,245,.35)}
.ov-progress > span.is-done{background:rgba(255,252,245,.85)}
.ov-progress > span.is-current{background:var(--ov-brand)}
.ov-viewer-nav{position:absolute; top:40%; z-index:3; width:var(--ov-touch); height:var(--ov-touch); border-radius:50%; border:0; background:rgba(255,252,245,.9); color:var(--ov-ink); display:grid; place-items:center; cursor:pointer}
.ov-viewer-nav--prev{left:8px} .ov-viewer-nav--next{right:8px}
.ov-viewer-body{position:relative; z-index:3; display:flex; flex-direction:column; gap:8px; padding:var(--ov-s4) var(--ov-gutter) var(--ov-s5)}

.ov-vid-badge{position:absolute; right:3px; bottom:3px; width:18px; height:18px; border-radius:50%; background:rgba(20,12,6,.75); color:#fff; font-size:8px; display:grid; place-items:center}
.ov-vid{position:absolute; inset:0; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; pointer-events:none}
.ov-vid-play{width:56px; height:56px; border-radius:50%; background:rgba(20,12,6,.55); color:#fff; display:grid; place-items:center}
.ov-vid-play .ov-ico{fill:currentColor; stroke:none; width:24px; height:24px; margin-left:3px}
.ov-vid-bar{position:absolute; left:16px; right:16px; top:12px; height:3px; border-radius:2px; background:rgba(255,252,245,.35)}
.ov-vid-bar > span{display:block; height:100%; border-radius:2px; background:#fff}
.ov-vid-time{position:absolute; right:16px; top:22px; font-size:12px; font-weight:700; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.5)}
.ov-vid--viewer .ov-vid-bar{top:auto; bottom:52%; }
.ov-vid--viewer .ov-vid-time{top:auto; bottom:calc(52% + 8px)}
.ov-gate{position:absolute; inset:0; z-index:5; display:flex; flex-direction:column; justify-content:center; gap:14px; padding:var(--ov-s5) var(--ov-gutter); background:rgba(20,12,6,.82); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); color:#fff}
.ov-lock{flex:1; display:flex; flex-direction:column; gap:10px; padding:56px 12px 24px; background:linear-gradient(180deg,#3B302A,#1C1613)}
.ov-lock-time{display:flex; flex-direction:column; align-items:center; gap:6px; color:#fff; margin-bottom:28px}
.ov-notif{display:flex; align-items:flex-start; gap:10px; width:100%; padding:12px; border:0; border-radius:20px; background:rgba(255,252,245,.94); color:var(--ov-ink); text-align:left; cursor:pointer; font:inherit}

.ov-convert{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:4px}
.ov-convert > button{display:flex; align-items:center; gap:8px; min-height:56px; padding:8px 10px; border-radius:var(--ov-r-md); border:1px solid rgba(255,252,245,.28); background:rgba(255,252,245,.1); color:#fff; text-align:left; cursor:pointer; font:inherit}
.ov-convert > button > span{display:flex; flex-direction:column; min-width:0; line-height:1.2}
.ov-convert b{font-size:13px}
.ov-convert > button > span > span{font-size:11px; color:#D9CCBC}

.ov-wave{flex:none; display:inline-flex; align-items:center; gap:3px; height:20px}
.ov-wave > i{width:3px; height:100%; border-radius:2px; background:var(--ov-danger); animation:ov-wave 900ms ease-in-out infinite}
.ov-wave > i:nth-child(2){animation-delay:-150ms} .ov-wave > i:nth-child(3){animation-delay:-300ms} .ov-wave > i:nth-child(4){animation-delay:-450ms} .ov-wave > i:nth-child(5){animation-delay:-600ms}
.ov-wave--light > i{background:#fff}
@keyframes ov-wave{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
@media (prefers-reduced-motion:reduce){.ov-wave > i{animation:none; transform:scaleY(.6)}}
.ov-voice{display:flex; align-items:center; gap:8px; min-height:40px; padding:0 12px; border-radius:var(--ov-r-pill); border:0; background:rgba(255,252,245,.14); color:#fff; font:inherit; font-size:13px; font-weight:600; cursor:pointer; text-align:left}

.ov-golive{position:absolute; top:96px; left:var(--ov-gutter); right:var(--ov-gutter); z-index:4; display:flex; align-items:center; gap:10px; min-height:60px; padding:8px 8px 8px 8px; border:0; border-radius:var(--ov-r-lg); background:rgba(255,252,245,.97); color:var(--ov-ink); text-align:left; font:inherit; cursor:pointer; box-shadow:var(--ov-shadow-md)}
.ov-golive-thumb{position:relative; flex:none; width:44px; height:44px; border-radius:10px; overflow:hidden; background:var(--ov-surface-2); outline:2px solid var(--ov-danger); outline-offset:1px}
.ov-golive-cta{flex:none; min-height:44px; padding:0 14px; border-radius:var(--ov-r-md); background:var(--ov-brand); color:var(--ov-on-brand); font-weight:800; font-size:14px; display:grid; place-items:center}

/* Demandes */
.ov-lines{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; font-size:var(--ov-fs-sm)}
.ov-lines > li{display:flex; justify-content:space-between; gap:var(--ov-s3)}
.ov-lines > li > span:last-child{flex:none; font-variant-numeric:tabular-nums; font-weight:600}
.ov-total{display:flex; align-items:baseline; justify-content:space-between; gap:var(--ov-s3); padding-top:var(--ov-s2); border-top:1px solid var(--ov-line); font-weight:800}
.ov-timeline{list-style:none; margin:0; padding:0 0 0 18px; border-left:2px solid var(--ov-line); display:flex; flex-direction:column; gap:var(--ov-s3); font-size:var(--ov-fs-sm)}
.ov-timeline > li{position:relative}
.ov-timeline > li::before{content:""; position:absolute; left:-25px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--ov-surface); border:2px solid var(--ov-line-strong)}
.ov-timeline > li.is-done::before{background:var(--ov-brand); border-color:var(--ov-brand)}

/* Abonnement */
.ov-plans{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--ov-s2)}
.ov-plan{position:relative; display:flex; flex-direction:column; gap:4px; min-width:0; padding:var(--ov-s3); border-radius:var(--ov-r-lg); border:1px solid var(--ov-line-strong); background:var(--ov-surface); cursor:pointer}
.ov-plan > input{position:absolute; inset:0; opacity:0; margin:0; cursor:pointer}
.ov-plan:has(input:checked){border:2px solid var(--ov-brand); background:var(--ov-brand-soft)}
.ov-plan:focus-within{box-shadow:var(--ov-focus)}

/* Paiement */
.ov-pay-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--ov-s2)}
.ov-pay{display:flex; align-items:center; gap:10px; min-width:0; min-height:64px; padding:var(--ov-s2) var(--ov-s3); border-radius:var(--ov-r-lg); border:1px solid var(--ov-line-strong); background:var(--ov-surface); color:var(--ov-ink); text-align:left; cursor:pointer}
.ov-pay[aria-pressed="true"]{border:2px solid var(--ov-brand); background:var(--ov-brand-soft)}
.ov-pay-mark{flex:none; width:40px; height:28px; border-radius:6px; display:grid; place-items:center; font-size:11px; font-weight:900; letter-spacing:.02em}
.ov-pay-txt{display:flex; flex-direction:column; min-width:0; line-height:1.2; overflow-wrap:break-word}

/* Superpositions */
.ov-scrim{position:fixed; inset:0; z-index:var(--ov-z-sheet); display:flex; align-items:flex-end; justify-content:center; background:rgba(46,29,18,.48)}
.ov-scrim--center{align-items:center; padding:var(--ov-gutter); z-index:var(--ov-z-dialog)}
.ov-sheet{width:100%; max-width:var(--ov-maxw); max-height:90%; overflow:auto; display:flex; flex-direction:column; gap:var(--ov-s3); padding:var(--ov-s2) var(--ov-gutter) calc(var(--ov-s5) + env(safe-area-inset-bottom)); border-radius:var(--ov-r-xl) var(--ov-r-xl) 0 0; background:var(--ov-bg); box-shadow:var(--ov-shadow-lg)}
.ov-sheet::before{content:""; align-self:center; width:40px; height:4px; margin-bottom:var(--ov-s2); border-radius:2px; background:var(--ov-surface-3)}
.ov-dialog{width:100%; max-width:400px; max-height:100%; overflow:auto; display:flex; flex-direction:column; gap:var(--ov-s3); padding:var(--ov-s5); border-radius:var(--ov-r-xl); background:var(--ov-bg); box-shadow:var(--ov-shadow-md)}

/* admin-ovmq — composition ordinateur, mêmes fondations */
.ov-admin{display:grid; grid-template-columns:208px minmax(0,1fr) 320px; min-height:760px; background:var(--ov-bg)}
.ov-admin-nav{display:flex; flex-direction:column; gap:4px; padding:var(--ov-s4); background:var(--ov-inverse); color:var(--ov-on-inverse)}
.ov-admin-nav a{display:flex; align-items:center; gap:10px; min-height:var(--ov-touch); padding:0 12px; border-radius:10px; color:var(--ov-on-inverse-2); font-size:var(--ov-fs-sm); font-weight:600; text-decoration:none}
.ov-app .ov-admin-nav a{color:var(--ov-on-inverse-2)}
.ov-app .ov-admin-nav a[aria-current="page"]{background:rgba(255,252,245,.12); color:#fff}
.ov-admin-main{display:flex; flex-direction:column; gap:var(--ov-s4); min-width:0; padding:var(--ov-s5)}
.ov-admin-detail{display:flex; flex-direction:column; gap:var(--ov-s3); padding:var(--ov-s5); border-left:1px solid var(--ov-line); background:var(--ov-surface)}
.ov-filters{display:flex; flex-wrap:wrap; align-items:center; gap:var(--ov-s2)}
.ov-table{width:100%; border-collapse:separate; border-spacing:0; overflow:hidden; border:1px solid var(--ov-line); border-radius:var(--ov-r-lg); background:var(--ov-surface); font-size:var(--ov-fs-sm)}
.ov-table th{padding:10px 14px; text-align:left; font-size:var(--ov-fs-xs); font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--ov-ink-3); background:var(--ov-surface-2); border-bottom:1px solid var(--ov-line)}
.ov-table td{padding:12px 14px; border-bottom:1px solid var(--ov-line); vertical-align:middle}
.ov-table tr:last-child td{border-bottom:0}
.ov-table tbody tr{cursor:pointer}
.ov-table tbody tr:hover td,.ov-table tr[aria-selected="true"] td{background:var(--ov-surface-2)}
.ov-table td.ov-num{text-align:right}

.ov-gt{display:grid; overflow:hidden; border:1px solid var(--ov-line); border-radius:var(--ov-r-lg); background:var(--ov-surface); font-size:var(--ov-fs-sm)}
.ov-gt-h{display:flex; align-items:center; white-space:nowrap; padding:10px 10px; font-size:var(--ov-fs-xs); font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--ov-ink-3); background:var(--ov-surface-2); border-bottom:1px solid var(--ov-line)}
.ov-gt-r{display:contents; cursor:pointer}
.ov-gt-c{display:flex; align-items:center; gap:6px; min-width:0; padding:12px 10px; border-bottom:1px solid var(--ov-line); overflow-wrap:break-word}
.ov-gt-c--name{flex-direction:column; align-items:flex-start; justify-content:center; gap:3px}
.ov-gt-sub{display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px}
.ov-gt .ov-badge{min-height:22px; padding:2px 8px; font-size:11px; line-height:1.2; white-space:normal}
.ov-gt-r:hover > .ov-gt-c,.ov-gt-r[aria-selected="true"] > .ov-gt-c{background:var(--ov-surface-2)}
.ov-gt-r[aria-selected="true"] > .ov-gt-c:first-child{box-shadow:inset 3px 0 0 var(--ov-brand)}
.ov-gt-r:last-child > .ov-gt-c{border-bottom:0}

/* Corrections issues des captures réelles (audit 18/10) */
.ov-tab{min-width:0; overflow-wrap:break-word}
.ov-legal{margin-top:auto; display:flex; flex-wrap:wrap; justify-content:center; gap:0 var(--ov-s4); padding-top:var(--ov-s4); font-size:var(--ov-fs-sm)}
.ov-legal a{min-height:var(--ov-touch); display:inline-flex; align-items:center}
.ov-app .ov-legal a{color:var(--ov-ink-2)}
.ov-photos{display:flex; flex-wrap:wrap; gap:var(--ov-s2)}
.ov-photos > .ov-media{width:88px; height:88px}
.ov-photo-add{width:88px; height:88px; flex:none; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; padding:4px; border-radius:var(--ov-r-md); border:2px dashed var(--ov-line-strong); background:var(--ov-surface); color:var(--ov-brand-ink); font-size:12px; font-weight:700; line-height:1.2; text-align:center; cursor:pointer}
.ov-thumb-add{width:64px; height:64px; flex:none; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; border-radius:var(--ov-r-md); border:1.5px dashed var(--ov-brand-line); background:var(--ov-brand-soft); color:var(--ov-brand-ink); font-size:11px; font-weight:700; cursor:pointer}
@media (max-width:260px){ :root{--ov-gutter:8px} .ov-id-sub,.ov-plus-txt{display:none} .ov-tab{font-size:11px; padding:4px 0} .ov-logo{width:32px; height:32px} }
.ov-device.is-narrow{--ov-gutter:8px}
.ov-device.is-narrow .ov-id-sub,.ov-device.is-narrow .ov-plus-txt{display:none}
.ov-device.is-narrow .ov-tab{font-size:11px; padding:4px 0}
.ov-device.is-narrow .ov-logo{width:32px; height:32px}

/* Cadre de démonstration (galerie uniquement) */
.ov-device{position:relative; display:flex; flex-direction:column; width:360px; height:800px; overflow:auto; border-radius:28px; border:1px solid var(--ov-line); background:var(--ov-bg); box-shadow:0 30px 60px -30px rgba(46,29,18,.45); scrollbar-width:none}
.ov-device::-webkit-scrollbar{display:none}
.ov-device > .ov-page{flex:1 0 auto}
.ov-device .ov-tabbar,.ov-device .ov-dock{position:sticky}
.ov-device .ov-has-tabbar,.ov-device .ov-has-dock{padding-bottom:var(--ov-s6)}
.ov-device .ov-scrim{position:absolute}


/* ===== OVMQ 1.1 — ajustements issus de l’audit des captures du 18/10/2026 =====
   À charger APRÈS ovmq.css (ou à fusionner à la fin). Mêmes couleurs de marque, mêmes composants :
   on corrige tailles, densité, barres fixes, cartes, compteurs, pied, texte agrandi et anglais. */

/* Tokens — texte relatif à --ov-base (= 1rem en production ; le banc de test le fixe à 20,8 / 32 px) */
:root,.ov-app{
  --ov-base:1rem;
  --ov-fs-xs:calc(var(--ov-base) * .75); --ov-fs-sm:calc(var(--ov-base) * .875); --ov-fs-md:var(--ov-base); --ov-fs-lg:calc(var(--ov-base) * 1.125);
  --ov-fs-xl:calc(var(--ov-base) * 1.125 + 4px); --ov-fs-2xl:calc(var(--ov-base) * 1.125 + 10px); --ov-fs-3xl:calc(var(--ov-base) * 1.125 + 16px);
  --ov-fs-tab:min(calc(var(--ov-base) * .75), 14px);
}
:root{
  --ov-control-lg:52px; --ov-tabbar-h:64px; --ov-dock-max:120px;
  --ov-switch-off:#8F7E6E; --ov-switch-on:var(--ov-success); --ov-zoom-bg:rgba(20,12,6,.94);
  --ov-s5:24px; --ov-card-pad:14px; --ov-tile-pad:10px; --ov-grid-gap:10px;
}
[data-density="compact"]{--ov-s5:16px; --ov-card-pad:12px; --ov-tile-pad:8px; --ov-grid-gap:8px}
[data-density="aere"]{--ov-s5:32px; --ov-card-pad:16px; --ov-tile-pad:12px; --ov-grid-gap:12px}
.ov-app[data-text="130"]{--ov-base:20.8px}
.ov-app[data-text="150"]{--ov-base:24px}
.ov-app[data-text="200"]{--ov-base:32px}

/* Mots jamais coupés au milieu (sauf mot plus long que la ligne) */
.ov-h1,.ov-h2,.ov-h3,.ov-price,.ov-row-title,.ov-row-sub,.ov-item-name,.ov-product-name,.ov-hero-name{overflow-wrap:break-word}
.ov-btn{line-height:1.15; overflow-wrap:break-word; hyphens:manual}
.ov-btn--lg{min-height:var(--ov-control-lg); font-size:var(--ov-fs-md)}
.ov-amount{white-space:nowrap; font-variant-numeric:tabular-nums}

/* Barre d’onglets : une ligne, jamais de mot coupé */
.ov-tabbar{min-height:var(--ov-tabbar-h); padding-top:4px; padding-bottom:calc(4px + env(safe-area-inset-bottom))}
.ov-tab{min-width:0; min-height:52px; gap:2px; font-size:var(--ov-fs-tab); line-height:1.15}
.ov-tab > .ov-ico{width:22px; height:22px}
.ov-tab-label{display:block; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}

/* En-tête compressible */
.ov-topbar{container:topbar / inline-size; min-height:var(--ov-topbar-h)}
.ov-plus{gap:4px}
@container topbar (max-width:18em){
  .ov-plus{width:44px; padding:0; justify-content:center}
  .ov-plus-txt{display:none}
  .ov-logo{width:32px; height:32px; font-size:10px}
}
.ov-back{font-size:var(--ov-fs-sm); text-decoration:none; color:var(--ov-brand-ink)}

/* Compteurs */
.ov-cat-head{display:flex; align-items:center; gap:8px; margin:0; font-size:var(--ov-fs-md); font-weight:800; line-height:1.2}
.ov-count{display:inline-flex; align-items:center; justify-content:center; min-width:24px; height:24px; padding:0 8px; border-radius:var(--ov-r-pill); background:var(--ov-surface-2); color:var(--ov-ink-2); font-size:var(--ov-fs-xs); font-weight:700; font-variant-numeric:tabular-nums}
.ov-chip .ov-count{height:22px; min-width:22px; padding:0 6px; background:rgba(46,29,18,.08)}
.ov-chip[aria-pressed="true"] .ov-count{background:rgba(255,252,245,.22); color:inherit}

/* Carte d’état du tableau de bord */
.ov-status{display:flex; flex-direction:column; gap:var(--ov-s3); padding:var(--ov-card-pad); border-radius:var(--ov-r-lg); background:var(--ov-brand-soft)}
.ov-status-actions{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px; gap:var(--ov-s2)}

/* Catalogue : 2 colonnes tant que chaque carte garde ≥ 7em */
.ov-catalog{container:catalog / inline-size; display:flex; flex-direction:column; gap:var(--ov-s3); min-width:0}
.ov-pgrid{display:grid; gap:var(--ov-grid-gap); grid-template-columns:repeat(2,minmax(0,1fr)); align-items:stretch}
@container catalog (max-width:14.6em){ .ov-pgrid{grid-template-columns:minmax(0,1fr)} }
@container catalog (min-width:40em){ .ov-pgrid{grid-template-columns:repeat(auto-fill,minmax(13.75em,1fr))} }

/* Carte produit vendeur : la carte ouvre la fiche, la photo ouvre le zoom */
.ov-pcard{position:relative; display:flex; flex-direction:column; min-width:0; overflow:hidden; border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface)}
.ov-pcard:focus-within{box-shadow:var(--ov-focus)}
.ov-pcard-photo{position:relative; z-index:2; display:block; width:100%; aspect-ratio:4/3; padding:0; border:0; background:var(--ov-surface-2); cursor:zoom-in; overflow:hidden}
.ov-pcard-photo > img{display:block; width:100%; height:100%; object-fit:cover}
.ov-pcard-nophoto{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; width:100%; aspect-ratio:4/3; background:var(--ov-surface-2); color:var(--ov-ink-3); font-size:var(--ov-fs-xs); font-weight:700}
.ov-pcard-body{flex:1; display:flex; flex-direction:column; gap:4px; padding:var(--ov-tile-pad)}
.ov-pcard-top{display:flex; align-items:flex-start; justify-content:space-between; gap:6px}
.ov-app a.ov-pcard-link{color:var(--ov-ink); text-decoration:none; font-weight:700; line-height:1.25; overflow-wrap:break-word; min-width:0}
.ov-pcard-link::after{content:""; position:absolute; inset:0; z-index:1}
.ov-pcard-link:focus-visible{box-shadow:none} .ov-pcard-link:focus-visible::after{box-shadow:inset 0 0 0 3px var(--ov-brand); border-radius:var(--ov-r-lg)}
.ov-pcard-edit{flex:none; color:var(--ov-ink-3); margin-top:2px}
.ov-pcard-state{position:relative; z-index:2; margin-top:auto; padding-top:4px; display:flex; align-items:center; justify-content:space-between; gap:6px; min-height:44px}
.ov-pcard .ov-price{font-size:var(--ov-fs-md); padding-top:0; margin-top:0}

/* Carte produit publique */
.ov-pubcard{position:relative; display:flex; flex-direction:column; min-width:0; overflow:hidden; border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface)}
.ov-pubcard-photo{position:relative; display:block; width:100%; aspect-ratio:4/3; padding:0; border:0; background:var(--ov-surface-2); overflow:hidden; cursor:zoom-in}
.ov-pubcard-body{flex:1; display:flex; flex-direction:column; gap:4px; padding:var(--ov-tile-pad)}
.ov-pubcard-act{margin-top:auto; padding-top:6px}
.ov-pubcard .ov-product-share{z-index:3}
.ov-stock{font-size:var(--ov-fs-xs); font-weight:700; color:var(--ov-ink-2)}
.ov-stock--low{color:var(--ov-warning)}

/* Quatre indicateurs : une ligne si lisibles, sinon 2 × 2 */
.ov-stats4{container:stats / inline-size}
.ov-stats4-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--ov-s2)}
@container stats (max-width:18.49em){ .ov-stats4-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }
.ov-stat4{display:flex; flex-direction:column; justify-content:center; gap:2px; min-width:0; min-height:64px; padding:8px 10px; border-radius:var(--ov-r-md); border:1px solid var(--ov-line); background:var(--ov-surface); text-align:left; font:inherit; color:inherit}
.ov-stat4-label{font-size:var(--ov-fs-xs); font-weight:600; color:var(--ov-ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ov-stat4-value{font-size:var(--ov-fs-lg); font-weight:800; line-height:1.1; white-space:nowrap; font-variant-numeric:tabular-nums}
button.ov-stat4{cursor:pointer}
.ov-stat4--error .ov-stat4-value{color:var(--ov-ink-3)}
.ov-stat4-retry{font-size:var(--ov-fs-xs); font-weight:700; color:var(--ov-brand-ink); text-decoration:underline}

/* Dock : résumé sur une ligne + une action ; jamais de notice */
.ov-dock{gap:6px}
.ov-dock-summary{display:flex; align-items:center; gap:var(--ov-s2); min-height:44px}
.ov-dock-sum-text{flex:1 1 auto; min-width:0; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ov-dock-hint{font-size:var(--ov-fs-xs); color:var(--ov-ink-3); text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ov-dock-pair{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:var(--ov-s2)}

/* Pied de page : exactement deux rangées, identiques partout */
.ov-legal{container:legal / inline-size; margin-top:auto; display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:0 .25em; padding-top:8px; border-top:1px solid var(--ov-line); font-size:var(--ov-fs-sm)}
.ov-legal:has(> .ov-legal-row){flex-direction:column; flex-wrap:nowrap; gap:0}
.ov-legal-row{display:flex; align-items:center; justify-content:center; gap:0 .25em; min-height:44px; margin:0}
.ov-app .ov-legal a{display:inline-flex; align-items:center; min-height:44px; padding:0 .375em; color:var(--ov-brand-ink); text-decoration:underline; text-underline-offset:3px}
.ov-legal-sep{color:var(--ov-ink-3)}
@container legal (max-width:15em){ .ov-legal-row{flex-direction:column; min-height:0} .ov-legal-sep{display:none} }

/* Interrupteur : piste éteinte ≥ 3:1, allumée = succès (comme les deux apps) */
.ov-switch input{background:var(--ov-switch-off)}
.ov-switch input:checked{background:var(--ov-switch-on)}

/* Zoom photo plein écran */
.ov-zoom{position:fixed; inset:0; z-index:var(--ov-z-dialog); display:flex; flex-direction:column; width:100%; height:100%; max-width:none; max-height:none; margin:0; padding:0; border:0; background:var(--ov-zoom-bg); color:#fff}
.ov-zoom::backdrop{background:var(--ov-zoom-bg)}
.ov-zoom-top{display:flex; justify-content:flex-end; padding:8px}
.ov-zoom-close{display:inline-flex; align-items:center; gap:6px; min-height:44px; padding:0 14px; border:0; border-radius:var(--ov-r-pill); background:rgba(255,252,245,.95); color:var(--ov-ink); font:inherit; font-weight:700; cursor:pointer}
.ov-zoom-img{position:relative; flex:1; min-height:0; margin:0 8px; border-radius:var(--ov-r-md); overflow:hidden}
.ov-zoom-cap{display:flex; justify-content:space-between; gap:12px; padding:12px 16px calc(16px + env(safe-area-inset-bottom)); font-weight:700}
.ov-device .ov-zoom{position:absolute}

/* Document (devis, proforma) */
.ov-paper-head{display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:start}
.ov-paper-table{width:100%; border-collapse:collapse; font-size:var(--ov-fs-sm)}
.ov-paper-table th{padding:6px 0; text-align:left; font-size:var(--ov-fs-xs); color:var(--ov-ink-3); font-weight:700; border-bottom:1px solid var(--ov-line)}
.ov-paper-table td{padding:8px 0; vertical-align:top; border-bottom:1px solid var(--ov-line)}
.ov-paper-table .ov-num{text-align:right; white-space:nowrap; padding-left:8px}

/* Plus : groupes communs */
.ov-plus-group{display:flex; flex-direction:column; gap:6px}

/* Langue */
.ov-lang{display:inline-flex; flex:none; border:1px solid var(--ov-line-strong); border-radius:var(--ov-r-pill); overflow:hidden; background:var(--ov-surface)}
.ov-lang > button{min-width:44px; min-height:44px; padding:0 8px; border:0; background:transparent; font:inherit; font-size:var(--ov-fs-xs); font-weight:800; color:var(--ov-ink-2); cursor:pointer}
.ov-lang > button[aria-pressed="true"]{background:var(--ov-ink); color:var(--ov-on-inverse)}

/* Bloc plateforme (pages publiques) */
.ov-platform{display:flex; flex-direction:column; gap:var(--ov-s2)}

/* Barre de marque publique */
.ov-brandbar{display:flex; align-items:center; gap:var(--ov-s2); min-height:56px; padding:6px var(--ov-gutter)}
.ov-brandbar .ov-id{flex:1}


/* ===== OVMQ 1.1 — compléments (18/10/2026) ===== */
@font-face{font-family:"Figtree"; src:url("fonts/figtree-latin.woff2") format("woff2"); font-weight:300 900; font-style:normal; font-display:swap; unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree"; src:url("fonts/figtree-latin-ext.woff2") format("woff2"); font-weight:300 900; font-style:normal; font-display:swap; unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
.ov-app{font-family:var(--ov-font)}

/* Barres fixes : la page et le focus clavier réservent leur hauteur */
html{scroll-padding-bottom:calc(var(--ov-bars-h, 0px) + 16px)}
.ov-device{scroll-padding-bottom:calc(var(--ov-tabbar-h) + 16px)}

/* Segmenté : tous les segments sur une ligne, sinon tous empilés (jamais un segment seul en 2e rangée) */
.ov-seg{display:flex; flex-wrap:wrap}
.ov-seg > button{flex:1 1 calc((var(--ov-seg-min, 15em) - 100%) * 999); min-width:0}
.ov-seg--2{--ov-seg-min:11em}
.ov-seg--4{--ov-seg-min:19em}

/* Rangée d’actions qui se replie d’un seul bloc */
.ov-actions-row--wrap{display:flex; flex-wrap:wrap}
.ov-actions-row--wrap > *{flex:1 1 calc((var(--ov-row-min, 18em) - 100%) * 999); min-width:0}

/* Filtres : une seule rangée qui défile horizontalement */
.ov-chips--scroll{flex-wrap:nowrap; overflow-x:auto; overscroll-behavior-x:contain; scrollbar-width:none; margin-inline:calc(-1 * var(--ov-gutter)); padding-inline:var(--ov-gutter); scroll-padding-inline:var(--ov-gutter)}
.ov-chips--scroll::-webkit-scrollbar{display:none}

/* Moyens de paiement : nom jamais coupé (logo au-dessus du nom, 1 colonne si étroit) */
.ov-pay-grid{grid-template-columns:repeat(auto-fit, minmax(min(100%, 8.5em), 1fr))}
.ov-pay{flex-direction:column; align-items:flex-start; justify-content:center; gap:6px; min-height:84px; padding:10px 12px}
.ov-pay-txt{overflow-wrap:normal; word-break:normal; hyphens:none}

/* Live visiteur : centre dégagé ; nom, prix et action en bas ; détails repliables d’un geste */
.ov-viewer::after{background:linear-gradient(180deg,rgba(20,12,6,.6) 0%,rgba(20,12,6,0) 18%,rgba(20,12,6,0) 68%,rgba(20,12,6,.35) 100%)}
.ov-viewer-body{padding:0; gap:0}
.ov-golive--inline{position:relative; top:auto; left:auto; right:auto; margin:0 var(--ov-gutter) 8px}
.ov-viewer-mute{display:grid; place-items:center; width:44px; height:44px; margin:-4px -6px -4px 0; border:0; border-radius:50%; background:rgba(20,12,6,.45); color:#fff; cursor:pointer}
.ov-viewer-mute[aria-pressed="true"]{background:#fff; color:var(--ov-ink)}
.ov-vsheet{display:flex; flex-direction:column; gap:10px; padding:12px var(--ov-gutter) calc(14px + env(safe-area-inset-bottom)); border-radius:20px 20px 0 0; background:rgba(20,12,6,.74); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px)}
.ov-vsum{display:flex; align-items:flex-start; gap:10px}
.ov-vsum-main{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.ov-vsum-name{font-size:var(--ov-fs-lg); font-weight:800; line-height:1.2; overflow-wrap:break-word}
.ov-vsum-toggle{flex:none; display:inline-flex; align-items:center; gap:4px; min-height:44px; padding:0 12px; border:1px solid rgba(255,252,245,.4); border-radius:var(--ov-r-pill); background:transparent; color:#fff; font:inherit; font-size:var(--ov-fs-sm); font-weight:700; cursor:pointer}
.ov-vinfo{display:flex; flex-direction:column; gap:8px; padding-top:10px; border-top:1px solid rgba(255,252,245,.18)}
.ov-vbar{display:grid; grid-template-columns:44px minmax(0,1fr) 44px 44px; gap:8px; align-items:center}
.ov-vnav{--_bg:rgba(255,252,245,.16); --_fg:#fff; --_bd:transparent}

/* Ventes OVQ : tunnel du fil et liens par type */
.ov-funnel{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:var(--ov-s3)}
.ov-funnel-step{display:flex; flex-direction:column; gap:4px}
.ov-funnel-label{font-size:var(--ov-fs-sm); font-weight:700}
.ov-funnel-val{font-size:var(--ov-fs-lg); font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap}
.ov-funnel-bar{height:10px; border-radius:var(--ov-r-pill); background:var(--ov-surface-2); overflow:hidden}
.ov-funnel-bar > span{display:block; height:100%; border-radius:inherit; background:var(--ov-brand)}
.ov-linkrow{display:flex; flex-direction:column; gap:4px; padding-top:12px; border-top:1px solid var(--ov-line)}
.ov-linkrow:first-child{padding-top:0; border-top:0}
.ov-linkrow-acts{display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px}
.ov-linkrow-url{font-size:var(--ov-fs-sm); font-weight:600; color:var(--ov-brand-ink); overflow-wrap:break-word; min-width:0}
.ov-note{font-size:var(--ov-fs-sm); color:var(--ov-ink-2); line-height:1.4}
.ov-prodstat{display:grid; grid-template-columns:44px minmax(0,1fr); gap:10px; padding-top:12px; border-top:1px solid var(--ov-line)}
.ov-prodstat:first-child{padding-top:0; border-top:0}
.ov-qr-slot{display:grid; place-items:center; align-self:center; width:min(100%, 180px); aspect-ratio:1; padding:12px; border:2px dashed var(--ov-line-strong); border-radius:var(--ov-r-md); color:var(--ov-ink-3); font-size:var(--ov-fs-xs); text-align:center; overflow-wrap:break-word}

/* Niveaux d’un écran */
.ov-tier{display:flex; flex-direction:column; gap:var(--ov-s3); min-width:0}
.ov-tier-title{margin:0; font-size:var(--ov-fs-xs); font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--ov-ink-3)}
.ov-details > summary::-webkit-details-marker{display:none}

/* États */
@keyframes ov-pulse{50%{opacity:.5}}
.ov-skeleton{display:block; border-radius:var(--ov-r-md); background:var(--ov-surface-3); animation:ov-pulse 1.4s ease-in-out infinite}
.ov-btn[aria-busy="true"]{position:relative; pointer-events:none; color:transparent}
.ov-btn[aria-busy="true"]::after{content:""; position:absolute; inset:0; margin:auto; width:18px; height:18px; border-radius:50%; border:2.5px solid var(--_fg); border-right-color:transparent; animation:ov-spin .8s linear infinite}
.ov-reason{font-size:var(--ov-fs-xs); color:var(--ov-ink-2); text-align:center}
@media (prefers-reduced-motion:reduce){.ov-skeleton,.ov-btn[aria-busy="true"]::after{animation:none}}

/* 1.1 — finitions de la référence */
.ov-app{font-size:var(--ov-fs-md); line-height:var(--ov-lh); color:var(--ov-ink)}
.ov-brandbar{container:brandbar / inline-size; display:flex; align-items:center; gap:var(--ov-s2); min-height:56px; padding:6px var(--ov-gutter)}
.ov-brandbar .ov-id{flex:1; min-width:0}
.ov-signin-ico{display:none}
@container brandbar (max-width:22em){ .ov-signin{width:44px; padding:0} .ov-signin-txt{display:none} .ov-signin-ico{display:block} }
@container brandbar (max-width:16em){ .ov-brandbar .ov-id-text{display:none} }
.ov-tier{padding-top:var(--ov-s4); border-top:1px solid var(--ov-line)}
.ov-pubcard .ov-product-share{width:44px; height:44px}
.ov-row-chev{flex:none; width:20px; height:20px; color:var(--ov-ink-3)}
.ov-row-sub--danger{color:var(--ov-danger); font-weight:700}
.ov-stat4-retry{min-height:0}
.ov-pcard-nophoto .ov-ico{width:22px; height:22px}

/* 1.1 — largeur : titres plafonnés à la colonne, onglets jamais tronqués, carte d’état */
.ov-page{container:page / inline-size}
.ov-h1{font-size:min(var(--ov-fs-3xl), 12.5cqi)}
.ov-h2{font-size:min(var(--ov-fs-2xl), 11cqi)}
.ov-h3{font-size:min(var(--ov-fs-xl), 10cqi)}
.ov-tabbar{container:tabbar / inline-size; padding-inline:4px; gap:2px}
.ov-tab{padding:4px 0; font-size:min(var(--ov-fs-tab), 3.8cqi)}
.ov-card{padding:var(--ov-card-pad)}
.ov-status{container:status / inline-size}
.ov-status-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}
@container status (max-width:20em){ .ov-status-actions .ov-ico{display:none} }
@container status (max-width:15em){ .ov-status-actions{grid-template-columns:minmax(0,1fr)} }

/* ===== Carte promo WhatsApp (statut 9:16 · message 4:5) =====
   Toutes les tailles en cqi (% de la largeur de la carte) : même rendu en aperçu 270 px et à l’export 1080 px.
   --top / --bot = zones couvertes par l’interface du statut (barre de progression, réponse) : aucun contenu essentiel dedans. */
.ov-promo-frame{container:promo / inline-size; width:100%; --ov-promo-backdrop:#F3EEE6}
.ov-promo{--top:20cqi; --bot:24cqi; position:relative; display:flex; flex-direction:column; aspect-ratio:9/16; overflow:hidden; border-radius:3cqi; font-family:var(--ov-font); line-height:1.1; -webkit-font-smoothing:antialiased; isolation:isolate}
.ov-promo--msg{aspect-ratio:4/5; --top:6cqi; --bot:6cqi}
.ov-promo-media{position:absolute; inset:0; z-index:0}
.ov-promo-media image-slot,.ov-promo-photo image-slot{display:block; width:100%; height:100%}
.ov-promo-shop{display:inline-flex; align-items:center; gap:2.2cqi; min-width:0; max-width:58cqi; padding:1.6cqi 4cqi 1.6cqi 1.6cqi; border-radius:6cqi; background:rgba(255,252,245,.96); color:var(--ov-ink); font-size:4.2cqi; font-weight:800}
.ov-promo-shop b{min-width:0; line-height:1.1; overflow-wrap:break-word}
.ov-promo-logo{flex:none; display:grid; place-items:center; width:8cqi; height:8cqi; border-radius:50%; background:var(--ov-brand); color:var(--ov-on-brand); font-size:3cqi; font-weight:900}
.ov-promo-disc{flex:none; display:grid; place-items:center; width:29cqi; height:29cqi; border-radius:50%; background:var(--ov-brand); color:var(--ov-on-brand); font-size:9cqi; font-weight:900; letter-spacing:-.03em; white-space:nowrap; transform:rotate(-9deg); box-shadow:0 2cqi 6cqi rgba(20,12,6,.35)}
.ov-promo-eyebrow{font-size:3.8cqi; font-weight:900; letter-spacing:.14em; text-transform:uppercase}
.ov-promo-name{font-size:8.6cqi; font-weight:800; line-height:1.04; letter-spacing:-.015em; overflow-wrap:break-word; text-wrap:balance}
.ov-promo-prices{display:flex; align-items:baseline; flex-wrap:wrap; gap:0 3cqi}
.ov-promo-new{font-size:14cqi; font-weight:900; line-height:1; letter-spacing:-.035em; white-space:nowrap; font-variant-numeric:tabular-nums}
.ov-promo-new small{margin-left:1.4cqi; font-size:.4em; font-weight:800; letter-spacing:0}
.ov-promo-old{font-size:5cqi; font-weight:700; white-space:nowrap; text-decoration:line-through; text-decoration-thickness:.5cqi; opacity:.78}
.ov-promo-when{display:flex; align-items:center; gap:2cqi; align-self:flex-start; padding:2.4cqi 4cqi; border-radius:2.4cqi; font-size:4.5cqi; font-weight:800; white-space:nowrap}
.ov-promo-when svg{flex:none; width:5.4cqi; height:5.4cqi; fill:none; stroke:currentColor; stroke-width:2.3; stroke-linecap:round; stroke-linejoin:round}
.ov-promo-foot{display:flex; align-items:center; justify-content:space-between; gap:3cqi; font-size:4cqi; font-weight:700}
.ov-promo-stock{font-weight:900}
.ov-promo-url{letter-spacing:.01em; white-space:nowrap}
/* Style Photo */
.ov-promo--photo{background:#140C06; color:#fff}
.ov-promo--photo::after{content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:linear-gradient(180deg,rgba(20,12,6,.5) 0,rgba(20,12,6,0) 30%,rgba(20,12,6,0) 40%,rgba(20,12,6,.9) 74%,rgba(20,12,6,.96) 100%)}
.ov-promo--photo .ov-promo-top{position:absolute; z-index:2; top:var(--top); left:6cqi; right:6cqi; display:flex; justify-content:space-between; align-items:flex-start; gap:3cqi}
.ov-promo--photo .ov-promo-body{position:absolute; z-index:2; left:6cqi; right:6cqi; bottom:var(--bot); display:flex; flex-direction:column; gap:2.6cqi}
.ov-promo--photo .ov-promo-eyebrow{color:var(--ov-brand-line)}
.ov-promo--photo .ov-promo-when{background:#fff; color:var(--ov-ink)}
.ov-promo--photo .ov-promo-when svg{color:var(--ov-brand)}
/* Style Étiquette */
.ov-promo--tag{gap:2.6cqi; padding:var(--top) 6cqi var(--bot); background:#FFFCF5; color:var(--ov-ink)}
.ov-promo--tag::before{content:""; position:absolute; inset:0 0 auto; height:calc(var(--top) - 6cqi); background:var(--ov-brand-soft); border-bottom:.6cqi solid var(--ov-brand)}
.ov-promo-photo{position:relative; flex:1 1 0; min-height:22cqi; border-radius:3cqi; overflow:hidden; background:var(--ov-surface-2)}
.ov-promo--tag .ov-promo-disc{position:absolute; right:3cqi; bottom:3cqi; width:25cqi; height:25cqi; font-size:7.6cqi}
.ov-promo--tag .ov-promo-eyebrow{color:var(--ov-brand-ink)}
.ov-promo--tag .ov-promo-new{color:var(--ov-brand-ink)}
.ov-promo-perf{position:relative; flex:none; height:0; margin:1.4cqi -6cqi; border-top:.6cqi dashed var(--ov-brand-line)}
.ov-promo-perf::before,.ov-promo-perf::after{content:""; position:absolute; top:-4.6cqi; width:9cqi; height:9cqi; border-radius:50%; background:var(--ov-promo-backdrop)}
.ov-promo-perf::before{left:-4.5cqi} .ov-promo-perf::after{right:-4.5cqi}
.ov-promo--tag .ov-promo-when{align-self:stretch; background:var(--ov-brand-soft); color:var(--ov-brand-ink)}
.ov-promo--tag .ov-promo-foot .ov-promo-shop{padding:0; background:none; font-size:4cqi}
/* Style Affiche */
.ov-promo--poster{gap:2.6cqi; padding:var(--top) 6cqi var(--bot); background:var(--ov-brand-ink); color:#fff}
.ov-promo-big{display:flex; align-items:flex-end; gap:2cqi; font-size:27cqi; font-weight:900; line-height:.82; letter-spacing:-.06em; color:var(--ov-brand-soft); white-space:nowrap}
.ov-promo-big small{padding-bottom:1.4cqi; font-size:5cqi; font-weight:800; letter-spacing:.02em; line-height:1.1; white-space:normal; color:#fff}
.ov-promo--poster .ov-promo-photo{border-radius:46cqi 46cqi 3cqi 3cqi; background:rgba(255,252,245,.12)}
.ov-promo--poster .ov-promo-old{opacity:.72}
.ov-promo--poster .ov-promo-when{align-self:stretch; background:var(--ov-brand); color:var(--ov-on-brand); box-shadow:inset 0 0 0 .5cqi rgba(255,252,245,.25)}
.ov-promo--msg .ov-promo-big{font-size:20cqi}
.ov-promo--msg .ov-promo-name{font-size:7.4cqi}
.ov-promo--msg .ov-promo-new{font-size:12cqi}
/* Repères de zones du statut (aperçu seulement, jamais exportés) */
.ov-promo-safe{position:absolute; left:0; right:0; z-index:5; display:flex; align-items:flex-end; justify-content:center; padding:1.4cqi; background:repeating-linear-gradient(135deg,rgba(179,38,30,.16) 0 2cqi,rgba(179,38,30,.06) 2cqi 4cqi); border:0 dashed #B3261E; color:#fff; font-size:3.4cqi; font-weight:800; pointer-events:none}
.ov-promo-safe span{padding:.6cqi 2cqi; border-radius:99cqi; background:#B3261E}
.ov-promo-safe--top{top:0; height:var(--top); border-bottom-width:.4cqi}
.ov-promo-safe--bot{bottom:0; height:var(--bot); align-items:flex-start; border-top-width:.4cqi}

/* ===== 23/10 · PAP + composants communs corrigés ===== */
/* Thème PAP — noir sur blanc, Figtree, même structure que OMQ / OVQ */
[data-theme="pap"]{--ov-brand:#141414; --ov-brand-hover:#000000; --ov-brand-ink:#141414; --ov-brand-soft:#EFEFEF; --ov-brand-line:#CFCFCF; --ov-on-brand:#FFFFFF;
  --ov-bg:#FFFFFF; --ov-surface:#FFFFFF; --ov-surface-2:#F5F5F5; --ov-surface-3:#E8E8E8; --ov-line:#E3E3E3; --ov-line-strong:#8A8A8A; --ov-ink:#141414; --ov-ink-2:#444444; --ov-ink-3:#5E5E5E; --ov-inverse:#141414; --ov-on-inverse:#FFFFFF; --ov-on-inverse-2:#D6D6D6}
:root{--tool-omq:#17633F; --tool-ovq:#C2410C; --tool-present:#3F7A5F; --tool-rh:#2459D6; --tool-copro:#4F46E5; --tool-auto:#7C5A10}
.ov-accent{font:inherit; letter-spacing:inherit}
.ov-wordmark{font-weight:900; font-size:26px; letter-spacing:-.06em; line-height:1; color:var(--ov-ink); text-decoration:none}
.ov-wordmark sup{font-size:9px; font-weight:700; letter-spacing:0; vertical-align:top; margin-left:1px}
.ov-display{font-size:clamp(34px,9cqi,64px); font-weight:900; line-height:1; letter-spacing:-.04em; text-wrap:balance}
.ov-cq{container:page / inline-size}
/* Sous-navigation (PAP) */
.ov-subnav{display:flex; gap:4px; overflow-x:auto; scrollbar-width:none; border-bottom:1px solid var(--ov-line); padding:0 var(--ov-gutter)}
.ov-subnav a{display:flex; align-items:center; min-height:44px; padding:0 12px; font-size:var(--ov-fs-sm); font-weight:700; color:var(--ov-ink-2); text-decoration:none; white-space:nowrap; border-bottom:2px solid transparent}
.ov-subnav a[aria-current="page"]{color:var(--ov-ink); border-bottom-color:var(--ov-ink)}
/* Promesse en 3 étapes */
.ov-promise{display:grid; grid-template-columns:minmax(0,1fr); gap:8px; list-style:none; margin:0; padding:0; counter-reset:p}
.ov-promise li{counter-increment:p; display:flex; align-items:center; gap:12px; min-height:52px; padding:8px 12px; border-radius:var(--ov-r-md); background:var(--ov-surface); border:1px solid var(--ov-line); font-size:var(--ov-fs-sm); line-height:1.3}
.ov-promise li::before{content:counter(p); flex:none; display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--ov-brand); color:var(--ov-on-brand); font-weight:800; font-size:13px}
.ov-promise b{display:block; font-size:var(--ov-fs-md)}
@container page (min-width:520px){ .ov-promise{grid-template-columns:repeat(3,minmax(0,1fr))} .ov-promise li{flex-direction:column; align-items:flex-start; min-height:0; padding:12px} }
/* Démo (exemple) */
.ov-demo{display:flex; flex-direction:column; border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface); overflow:hidden}
.ov-demo-head{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px; background:var(--ov-surface-2)}
.ov-demo-tabs{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; padding:6px; border-bottom:1px solid var(--ov-line)}
.ov-demo-tabs button{display:flex; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:0 4px; border:0; border-radius:var(--ov-r-md); background:transparent; font:inherit; font-size:var(--ov-fs-sm); font-weight:700; color:var(--ov-ink-2); white-space:nowrap; cursor:pointer}
.ov-demo-tabs button span{display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--ov-surface-2); font-size:11px; font-weight:800}
.ov-demo-tabs button[aria-selected="true"]{background:var(--ov-brand); color:var(--ov-on-brand)}
.ov-demo-tabs button[aria-selected="true"] span{background:rgba(255,255,255,.22); color:inherit}
.ov-demo-body{display:flex; flex-direction:column; gap:12px; padding:16px}
.ov-demo-foot{display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 12px; padding:12px 16px; border-top:1px solid var(--ov-line); font-size:var(--ov-fs-xs); color:var(--ov-ink-3)}
.ov-wa{display:flex; flex-direction:column; gap:8px; padding:12px; border-radius:var(--ov-r-md); background:#E9E3D7}
.ov-wa-msg{align-self:flex-end; max-width:92%; padding:10px 12px; border-radius:12px 12px 4px 12px; background:#DCF3D6; color:#1D2A1F; font-size:var(--ov-fs-sm); line-height:1.45; white-space:pre-line; box-shadow:0 1px 1px rgba(0,0,0,.08)}
/* Mise en page large par conteneur */
.ov-split{display:grid; grid-template-columns:minmax(0,1fr); gap:var(--ov-s5); align-items:start}
@container page (min-width:860px){ .ov-split{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:48px} .ov-split > :first-child{position:sticky; top:16px} }
/* Carte d’outil PAP : un seul lien */
.ov-toolgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr)); gap:12px}
.ov-toolcard{position:relative; display:flex; flex-direction:column; gap:10px; min-height:184px; padding:18px; border-radius:var(--ov-r-lg); background:var(--tool,#141414); color:#fff; text-decoration:none}
.ov-toolcard:focus-visible{outline:3px solid var(--ov-ink); outline-offset:3px}
.ov-toolcard-id{display:flex; align-items:center; gap:10px; font-size:var(--ov-fs-sm); font-weight:800}
.ov-toolcard-id span{display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:rgba(255,255,255,.18); font-size:11px}
.ov-toolcard-title{font-size:clamp(20px,6cqi,24px); font-weight:800; line-height:1.15; letter-spacing:-.015em; text-wrap:balance}
.ov-toolcard-desc{font-size:15px; line-height:1.4; color:rgba(255,255,255,.92); display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden}
.ov-toolcard-go{margin-top:auto; display:flex; align-items:center; justify-content:space-between; font-size:var(--ov-fs-sm); font-weight:800}
.ov-toolcard-go i{display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:#fff; color:var(--tool); font-style:normal; font-weight:900}
/* Étapes de parcours (candidature PAP) */
.ov-journey{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; border:1px solid var(--ov-line); border-radius:var(--ov-r-lg); background:var(--ov-surface); overflow:hidden}
.ov-jstep{display:grid; grid-template-columns:32px minmax(0,1fr); gap:4px 12px; padding:14px 16px; border-top:1px solid var(--ov-line)}
.ov-jstep:first-child{border-top:0}
.ov-jstep-n{grid-row:span 3; display:grid; place-items:center; width:32px; height:32px; border-radius:50%; border:2px solid var(--ov-line-strong); font-size:13px; font-weight:800; color:var(--ov-ink-2)}
.ov-jstep.is-done .ov-jstep-n{border-color:var(--ov-success); background:var(--ov-success); color:#fff}
.ov-jstep[aria-current="step"]{background:var(--ov-brand-soft)}
.ov-jstep[aria-current="step"] .ov-jstep-n{border-color:var(--ov-ink); background:var(--ov-ink); color:#fff}
.ov-jstep-t{font-weight:800; font-size:var(--ov-fs-md)}
.ov-jstep-s{font-size:var(--ov-fs-sm); color:var(--ov-ink-2)}
.ov-jstep-a{display:flex; flex-wrap:wrap; gap:8px; margin-top:8px}
/* Tuile photo avec actions */
.ov-ptiles{display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:8px}
.ov-ptile{position:relative; aspect-ratio:1; border-radius:var(--ov-r-md); overflow:hidden; background:var(--ov-surface-2)}
.ov-ptile > img{display:block; width:100%; height:100%; object-fit:cover}
.ov-ptile-n{position:absolute; left:6px; top:6px; display:grid; place-items:center; min-width:24px; height:24px; padding:0 6px; border-radius:99px; background:rgba(20,12,6,.72); color:#fff; font-size:12px; font-weight:800}
.ov-ptile-more{position:absolute; right:4px; top:4px; display:grid; place-items:center; width:36px; height:36px; border:0; border-radius:50%; background:rgba(255,252,245,.94); color:var(--ov-ink); font-size:18px; font-weight:900; line-height:1; cursor:pointer}
.ov-ptile-add{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; aspect-ratio:1; border-radius:var(--ov-r-md); border:2px dashed var(--ov-line-strong); background:var(--ov-surface); color:var(--ov-ink-2); font:inherit; font-size:var(--ov-fs-xs); font-weight:700; cursor:pointer}
.ov-menu{display:flex; flex-direction:column; padding:4px; border-radius:var(--ov-r-md); background:var(--ov-surface); border:1px solid var(--ov-line); box-shadow:var(--ov-shadow-md)}
.ov-menu button{display:flex; align-items:center; min-height:44px; padding:0 12px; border:0; border-radius:8px; background:none; font:inherit; font-size:var(--ov-fs-sm); font-weight:600; color:var(--ov-ink); text-align:left; cursor:pointer}
.ov-menu button:hover{background:var(--ov-surface-2)}
.ov-menu .is-danger{color:var(--ov-danger)}
/* Carte de capture (reprise) */
.ov-capcard{display:grid; grid-template-columns:56px minmax(0,1fr) auto; align-items:center; gap:12px; padding:10px 8px 10px 10px; border-radius:var(--ov-r-lg); border:1px solid var(--ov-line); background:var(--ov-surface)}
.ov-capcard-thumb{width:56px; height:56px; border-radius:10px; overflow:hidden; background:var(--ov-surface-2)}
.ov-capcard-thumb img{display:block; width:100%; height:100%; object-fit:cover}
.ov-capcard-main{display:flex; flex-direction:column; gap:4px; min-width:0}
.ov-capcard-name{font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.ov-capcard-meta{display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:var(--ov-fs-xs); color:var(--ov-ink-3)}
/* Ligne prix vérifiable */
.ov-pline{display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:52px; padding:8px 16px; border-top:1px solid var(--ov-line)}
.ov-pline:first-child{border-top:0}
.ov-pline-name{min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.ov-pline .ov-price{flex:none; font-weight:800; white-space:nowrap; font-variant-numeric:tabular-nums}
/* Barre « simulation » unique (hors production) */
.ov-simbar{padding:6px 16px; background:var(--ov-warning-bg); color:var(--ov-warning); font-size:var(--ov-fs-xs); font-weight:800; text-align:center; letter-spacing:.02em}

/* ===== Corrections 26/10/2026 — audit des 82 captures (voir audit-v4/CODEX-26-10.md) ===== */
[data-theme="pap"]{--ov-off-bg:#EDEDED; --ov-off:#5E5E5E}
.ov-tabbar--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ov-tabbar--5{grid-template-columns:repeat(5,minmax(0,1fr))}
.ov-tabbar--5 .ov-tab{font-size:11px; padding-inline:0}
.ov-stack > .ov-badge,.ov-page > .ov-badge,.ov-card > .ov-badge,.ov-alert .ov-badge{align-self:flex-start; justify-self:start}
.ov-capcard{align-items:start; grid-template-columns:56px minmax(0,1fr) 44px; padding:10px 2px 10px 10px}
.ov-capcard-name{white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; line-height:1.25}
.ov-capcard-more{width:44px; height:44px; margin-top:-6px; display:grid; place-items:center; border:0; border-radius:var(--ov-r-md); background:none; color:var(--ov-ink-2); cursor:pointer}
.ov-capcard-more:hover{background:var(--ov-surface-2)}
.ov-capcard-more:focus-visible{outline:none; box-shadow:var(--ov-focus)}
.ov-stat-label{white-space:normal; overflow-wrap:anywhere}
.ov-choice{display:grid; grid-template-columns:24px minmax(0,1fr); gap:2px 12px; align-items:start; padding:12px 14px; border:1px solid var(--ov-line-strong); border-radius:var(--ov-r-md); background:var(--ov-surface); cursor:pointer}
.ov-choice input{width:20px; height:20px; margin:2px 0 0; accent-color:var(--ov-brand)}
.ov-choice:has(input:checked){border-color:var(--ov-brand); box-shadow:inset 0 0 0 1px var(--ov-brand)}
.ov-choice-t{font-weight:800}
.ov-choice-s{grid-column:2; font-size:var(--ov-fs-sm); color:var(--ov-ink-2); overflow-wrap:break-word}
.ov-facts-list{margin:0; padding-left:1.15em; display:flex; flex-direction:column; gap:6px; font-size:var(--ov-fs-sm); color:var(--ov-ink-2); text-wrap:pretty}
.ov-state-head{display:flex; flex-direction:column; gap:8px}
.ov-alert--compact{padding:8px 12px; font-size:var(--ov-fs-sm)}
