:root{
  /* GABARIT UNIQUE du site (05/08) : header, filtres, tuiles, grilles, vue
     client — 1720 de base, 2150/2580 sur grands écrans, marges 16px ailleurs */
  --gab:min(1515px,100vw - 32px); /* 1720 −12 % (05/08) */
  /* Header capsule : PLUS COURT que le gabarit (effet « sort du haut »),
     ~80 % en desktop, pleine largeur sur petit écran */
  --gab-head:max(calc(var(--gab)*0.8),min(var(--gab),900px));

  /* ── TOKENS PARTAGÉS vitrine+catalogue (harmonisation 05/08) ── */
  --sh-sm:0 1px 6px rgba(0,0,0,.06);
  --sh-md:0 4px 24px rgba(0,0,0,.09);
  --sh-lg:0 16px 44px rgba(0,0,0,.16);
  --g1:#515154;--g2:#6e6e73;--g3:#86868b;--hairline:#e0e0e5;
  --red:#FE0000;--red2:#cc0000;--red-light:#FFF5F5;
  --black:#111;--ink:#222;--ink2:#555;
  --gray:#999;--gray2:#C8C8C8;
  --border:#EBEBEB;--off:#F9F9F9;--off2:#F2F2F2;
  --white:#FFF;
  --shadow:0 1px 8px rgba(0,0,0,.06);--shadow-md:0 4px 20px rgba(0,0,0,.09);--shadow-lg:0 16px 48px rgba(0,0,0,.14);
  --r:6px;--rl:10px;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--s10:40px;
  --text-xs:11px;--text-sm:12px;--text-base:14px;--text-lg:16px;--text-xl:18px;
  --success:#16a34a;--success-light:#f0fdf4;
  --warning:#d97706;--warning-light:#fffbeb;
  --header-h:57px;--filterbar-h:48px;--resultsbar-h:40px;--row-h:48px;
  --z-header:100;--z-filterbar:99;--z-resultsbar:98;--z-dropdown:200;--z-drawer:300;--z-modal:400;--z-toast:500;--z-floating:2000;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:'DM Sans',sans-serif;background:#F5F3EE;color:var(--ink);-webkit-font-smoothing:antialiased;}

/* ── HEADER ── */
header{background:rgba(255,255,255,.92);position:sticky;top:0;z-index:100;border-bottom:1px solid var(--border);box-shadow:var(--shadow);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.header-inner{max-width:var(--gab-head);margin:0 auto;padding:0 26px;height:57px;display:flex;align-items:center;gap:15px;}
.logo-link{display:flex;align-items:center;flex-shrink:0;cursor:pointer;}
.logo-img{width:auto;display:block;}
.logo-full{height:35px;display:block;}
.logo-mob{height:40px;display:none;}
.header-search{flex:1;max-width:480px;margin:0 8px;display:flex;background:var(--off);border:1.5px solid var(--border);border-radius:40px;overflow:hidden;transition:border-color .18s;}
.header-search:focus-within{border-color:var(--red);background:var(--white);}
.search-suggest{position:fixed;background:#fff;border:1px solid var(--border);border-radius:var(--rl);box-shadow:var(--shadow-md);z-index:500;min-width:220px;overflow:hidden;display:none;}
.search-suggest.show{display:block;}
.suggest-item{padding:9px 16px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:8px;color:var(--ink);transition:background .1s;}
.suggest-item:hover,.suggest-item.active{background:var(--off);}
.suggest-hint{font-style:italic;color:var(--ink2);}
.suggest-label{flex:1;font-weight:500;}
.suggest-kind{font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;background:var(--off2);margin-left:auto;}
.suggest-check{color:var(--red);font-size:11px;font-weight:700;}
.suggest-sep{font-size:11px;color:var(--gray);padding:5px 16px 3px;border-top:1px solid var(--border);}
.correction-note{font-size:12px;color:var(--ink2);text-align:center;padding:4px 0 0;}
.correction-note b{color:var(--ink);}
.correction-undo{color:var(--red);cursor:pointer;text-decoration:underline;margin-left:6px;}
.header-search input{flex:1;padding:10px 18px;background:transparent;color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px;border:none;outline:none;}
.header-search input::placeholder{color:var(--gray2);}
.header-search button{background:var(--red);color:#fff;border:none;padding:10px 18px;cursor:pointer;border-radius:0 40px 40px 0;transition:background .18s;display:flex;align-items:center;justify-content:center;}
.header-search button:hover{background:var(--red2);}
.exact-toggle{display:flex;align-items:center;gap:6px;padding:0 12px;border-left:1px solid var(--border);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;color:var(--gray);cursor:pointer;user-select:none;flex-shrink:0;transition:color .15s;}
.exact-toggle:hover{color:var(--ink);}
.exact-toggle input{margin:0;width:14px;height:14px;accent-color:var(--red);cursor:pointer;flex-shrink:0;}
.exact-toggle:has(input:checked){color:var(--red);}
.hright{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto;}
.hright .btn-head,.hright .lang-btn{height:44px;box-sizing:border-box;align-self:auto;}
/* Bascule devise € / $ (26/08) — segment façon iOS (piste grise, pilule active blanche) */
.ccy-seg{display:inline-flex;align-items:center;gap:0;background:#ececed;border-radius:999px;padding:3px;height:44px;box-sizing:border-box;flex-shrink:0;}
.ccy-opt{border:none;background:transparent;font-family:'DM Sans',sans-serif;font-weight:800;font-size:17px;color:var(--gray);width:38px;height:38px;border-radius:999px;cursor:pointer;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,box-shadow .15s;}
.ccy-opt.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.14);}
/* pas de prix en accès lead / vue client → pas de bascule devise */
body.lead-view #ccy-wrap,body.shared-view #ccy-wrap{display:none !important;}
.hright .btn-head-scan,.hright .lang-btn{width:64px !important;min-width:64px !important;max-width:64px !important;padding:0 !important;justify-content:center !important;}
.live-pill{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--gray);font-weight:500;padding:6px 32px;border:1px solid var(--border);border-radius:20px;white-space:nowrap;}
.live-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:blink 1.5s ease-in-out infinite;flex-shrink:0;box-shadow:0 0 0 0 rgba(34,197,94,.4);animation:livepulse 1.8s ease-in-out infinite;}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes livepulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 5px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.btn-head{display:flex;align-items:center;gap:7px;padding:4px 24px;border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;cursor:pointer;border:1.5px solid var(--border);background:var(--white);color:var(--ink2);transition:all .15s;white-space:nowrap;text-decoration:none;}
.btn-head:hover{border-color:var(--red);color:var(--red);}
.btn-head.primary{background:var(--red);color:#fff;border-color:var(--red);}
.btn-head.primary:hover{background:var(--red2);}
.cart-wrap{position:relative;display:flex;align-items:center;gap:8px;}
.cart-wrap #cart-btn{position:relative;} /* ancre le badge sur PARTAGER, pas sur le groupe (poubelle à côté, 21/07) */
.cart-badge{position:absolute;top:-4px;right:-10px;min-width:29px;height:29px;padding:0 5px;background:var(--red);color:#fff;border-radius:50%;font-size:14px;font-weight:700;display:none;align-items:center;justify-content:center;border:2px solid var(--white);}
.cart-badge.show{display:flex;}

/* ── STATS BAR ── */
.stats-bar{background:var(--off);border-bottom:1px solid var(--border);}
.stats-inner{max-width:1320px;margin:0 auto;padding:0 24px;display:flex;}
.stat{flex:1;padding:10px 16px;border-right:1px solid var(--border);display:flex;align-items:center;gap:9px;min-width:0;}
.stat:last-child{border-right:none;}
.stat-ico{font-size:20px;flex-shrink:0;width:36px;height:36px;background:rgba(254,0,0,.08);border-radius:50%;display:flex;align-items:center;justify-content:center;}
.stat-val{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:.5px;color:var(--red);line-height:1;white-space:nowrap;}
.stat-lbl{font-size:10px;color:var(--gray);font-weight:600;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;}
/* shimmer pour stats en chargement */
.stat-shimmer{width:40px;height:16px;border-radius:4px;background:linear-gradient(90deg,var(--border) 25%,var(--off2) 50%,var(--border) 75%);background-size:400% 100%;animation:shimmer 1.4s infinite;}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}

/* ── LOAD PROGRESS BAR ── */
.load-bar-wrap{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;background:transparent;pointer-events:none;}
.load-bar{height:3px;background:var(--red);width:0%;transition:width .3s ease;box-shadow:0 0 8px rgba(254,0,0,.5);}

/* ── ACTIVE FILTER CHIPS ── */
.filter-chips{max-width:1320px;margin:0 auto;padding:8px 24px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.filter-chips:empty{display:none;}
.fchip{display:flex;align-items:center;gap:5px;padding:4px 12px;background:var(--red-light);border:1px solid rgba(254,0,0,.2);border-radius:20px;font-size:11px;font-weight:600;color:var(--red);}
.fchip button{background:none;border:none;cursor:pointer;color:var(--red);font-size:13px;padding:0 0 0 2px;line-height:1;display:flex;align-items:center;opacity:.7;transition:opacity .15s;}
.fchip button:hover{opacity:1;}
.chips-clear{font-size:11px;color:var(--gray);cursor:pointer;padding:4px 10px;font-weight:600;background:var(--off2);border:1px solid var(--border);border-radius:20px;transition:background .15s,border-color .15s,color .15s;display:flex;align-items:center;gap:4px;}
.chips-clear:hover{border-color:var(--red);color:var(--red);background:var(--red-light);}

/* ── TYPE TILES ── */
#type-tiles-wrap{max-width:1320px;margin:0 auto;padding:12px 24px 0;}
.type-tiles-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--gray);margin-bottom:8px;}
#type-tiles{display:flex;flex-wrap:wrap;gap:6px;}
.type-tile{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 14px;background:var(--off);border:1.5px solid var(--border);border-radius:var(--r);cursor:pointer;transition:border-color .15s,background .15s,color .15s;min-width:90px;text-align:center;font-family:'DM Sans',sans-serif;}
.type-tile:hover{border-color:var(--red);background:var(--red-light);}
.type-tile.active{background:var(--red);border-color:var(--red);}
.tile-ico{font-size:18px;line-height:1;}
.tile-name{font-size:12px;font-weight:700;color:var(--ink);line-height:1.2;}
.tile-meta{font-size:10px;color:var(--gray);white-space:nowrap;}
.type-tile.active .tile-name{color:#fff;}
.type-tile.active .tile-meta{color:rgba(255,255,255,.75);}
@media(max-width:600px){#type-tiles-wrap{padding:10px 16px 0;}#type-tiles{gap:5px;}.type-tile{min-width:76px;padding:8px 10px;}.tile-ico{font-size:16px;}.tile-name{font-size:11px;}.tile-meta{font-size:9px;}}

/* ── LAYOUT ── */
.body-wrap{max-width:1320px;margin:0 auto;padding:16px 24px 16px 0;}

/* ── FILTERS ── */
.filters-panel{position:sticky;top:76px;height:fit-content;}
.fp-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:5px;margin-bottom:5px;border-bottom:2px solid var(--black);}
.fp-title{font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:1.5px;}
.fg{margin-bottom:3px;padding-bottom:3px;border-bottom:1px dashed var(--border);}
.format-pills{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px;justify-content:center;}
.fpill{display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:4px;border:2px solid var(--red);background:#fff;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,color .15s;color:var(--red);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;}
.fpill.active{background:var(--red);border-color:var(--red);color:#fff;}
.fpill-dark{border-color:var(--ink);color:var(--ink);}
.fpill-dark.active{background:var(--ink);border-color:var(--ink);color:#fff;}
.fpill-yellow{border-color:#E5A100;color:#E5A100;}
.fpill-yellow.fpill-depot{border-color:var(--ink);color:var(--ink);}
.fpill-yellow.active{background:#E5A100;border-color:#E5A100;color:#fff;}
.fpill.fpill-blue{border-color:#0033A0;color:#0033A0;}
.fpill.fpill-blue.active{background:#0033A0;border-color:#0033A0;color:#fff;}
/* Hover seulement sur devices avec un vrai pointeur (desktop) — sinon le :hover reste collé après tap mobile et fait passer une pill inactive pour active */
@media (hover:hover) and (pointer:fine){
  .fpill:hover{background:var(--red);color:#fff;}
  .fpill-dark:hover{background:var(--ink);color:#fff;}
  .fpill-yellow:hover{background:#E5A100;color:#fff;}
  .fpill.fpill-blue:hover{background:#0033A0;color:#fff;}
}
.fpill-ico{font-size:16px;}
/* Bandeau réassurance */
.trust-bar{background:#111;border-bottom:1px solid #222;padding:7px 0;overflow:hidden;}
.trust-track{display:block;}
.trust-inner{max-width:1320px;margin:0 auto;padding:0 24px;display:flex;gap:24px;align-items:center;flex-wrap:nowrap;justify-content:center;overflow:hidden;}
.trust-inner-dup{display:none;}
@keyframes trust-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media(max-width:768px){
  .trust-track{display:flex;width:max-content;animation:trust-scroll 24s linear infinite;}
  .trust-inner{flex-shrink:0;width:max-content;padding:0 32px;justify-content:flex-start;overflow:visible;max-width:none;}
  .trust-inner-dup{display:flex;}
}
.trust-item{font-family:'DM Sans',sans-serif;font-size:11px;color:#aaa;font-weight:500;white-space:nowrap;display:flex;align-items:center;gap:5px;}
.trust-item::before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--red);flex-shrink:0;}
/* Mobile lang bar — hidden always (lang now in results-bar on mobile) */
.mob-hbar{display:none;}
/* Timeout / slow loading overlay */
.slow-overlay{display:none;position:fixed;inset:0;background:rgba(255,255,255,.95);z-index:900;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center;}
.slow-overlay.show{display:flex;}
.slow-title{font-family:'Bebas Neue',sans-serif;font-size:28px;letter-spacing:2px;color:var(--black);}
.slow-sub{font-size:14px;color:var(--gray);max-width:360px;line-height:1.5;}
.slow-btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:8px;}
.slow-btns .btn-reload{background:var(--red);color:#fff;border:none;border-radius:var(--rl);padding:11px 22px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;cursor:pointer;text-transform:uppercase;}
.slow-btns .btn-wa{background:#25D366;color:#fff;border:none;border-radius:var(--rl);padding:11px 22px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;cursor:pointer;}
/* prod-count tonnes */
.pcount-tons{font-family:'DM Sans',sans-serif;font-size:12px;color:var(--gray);font-weight:600;margin-top:2px;}
/* proforma microcopy */
.pf-microcopy{font-size:11px;color:#888;text-align:center;margin-top:8px;line-height:1.5;}
/* proforma success WA button */
.btn-pf-wa{background:#25D366;color:#fff;border:none;border-radius:var(--rl);padding:10px 20px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;cursor:pointer;width:100%;margin-top:8px;}
/* footer improved */
.footer-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px;}
.footer-col{display:flex;flex-direction:column;gap:5px;}
.footer-col-title{font-family:'Bebas Neue',sans-serif;font-size:14px;letter-spacing:1px;color:#fff;margin-bottom:4px;}
.footer-col a,.footer-col span{font-size:12px;color:#888;text-decoration:none;font-family:'DM Sans',sans-serif;}
.footer-col a:hover{color:#fff;}
.footer-bottom{border-top:1px solid #333;margin-top:20px;padding-top:14px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;}
@media(max-width:640px){.trust-inner{gap:14px;}.footer-grid{grid-template-columns:1fr;gap:14px;}.footer-bottom{flex-direction:column;text-align:center;}}
.pcard-price{position:absolute;top:10px;right:10px;background:var(--red);color:#fff;border-radius:8px;padding:4px 9px;font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:.5px;line-height:1;box-shadow:0 2px 6px rgba(0,0,0,.25);z-index:3;white-space:nowrap;}
.pcard-price-ask{font-size:11px;color:#aaa;font-style:italic;}
.fg:last-child{border-bottom:none;padding-bottom:0;}
.fl{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--ink2);margin-bottom:2px;}
.fl-ico{font-size:12px;opacity:.8;}
.fl-count{background:var(--red);color:#fff;border-radius:10px;font-size:9px;font-weight:700;padding:1px 5px;margin-left:auto;}
.fi,.fs{width:100%;padding:8px 11px;border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:14px;font-weight:500;color:var(--ink);background:var(--white);outline:none;transition:border-color .15s;}
.fi:focus,.fs:focus{border-color:var(--red);}
.frow{display:flex;gap:6px;}
.frow .fi{flex:1;}
/* grammage input with inline unit */
.fi-unit-wrap{position:relative;flex:1;}
.fi-unit-wrap .fi{width:100%;padding-right:38px;}
.fi-unit{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--gray);font-weight:600;pointer-events:none;white-space:nowrap;}
.fi[type="number"]::-webkit-inner-spin-button,.fi[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
.fi[type="number"]{-moz-appearance:textfield;}

/* ── MULTI-SELECT DROPDOWN ── */
.msd{position:relative;width:100%;}
.msd-btn{width:100%;padding:9px 30px 9px 11px;border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:15px;font-weight:600;color:var(--ink);background:var(--white);outline:none;cursor:pointer;text-align:left;transition:border-color .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;justify-content:space-between;gap:6px;}
.msd-btn:hover,.msd-btn.open{border-color:var(--red);}
.msd-btn-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.msd-arrow{flex-shrink:0;font-size:10px;color:var(--gray);transition:transform .15s;}
.msd-btn.open .msd-arrow{transform:rotate(180deg);}
.msd-count{background:var(--red);color:#fff;border-radius:10px;font-size:10px;font-weight:700;padding:1px 6px;flex-shrink:0;}
.msd-panel{position:fixed;background:#fff;border:1.5px solid #ddd;border-radius:var(--r);box-shadow:0 8px 32px rgba(0,0,0,.18);z-index:var(--z-floating);display:none;max-height:300px;overflow-y:scroll;min-width:180px;scrollbar-width:auto;scrollbar-color:var(--ink) #d4d4ce;scrollbar-gutter:stable;}
.msd-panel::-webkit-scrollbar{width:14px !important;background:#d4d4ce;-webkit-appearance:none;}
.msd-panel::-webkit-scrollbar-track{background:#d4d4ce !important;border-radius:0 var(--r) var(--r) 0;box-shadow:inset 1px 0 0 #c0bfb8;}
.msd-panel::-webkit-scrollbar-thumb{background:var(--ink) !important;border:3px solid #d4d4ce;border-radius:8px;min-height:48px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);}
.msd-panel::-webkit-scrollbar-thumb:hover{background:#000 !important;}
.msd-panel::-webkit-scrollbar-thumb:active{background:var(--red) !important;}
.msd-panel .msd-scroll-hint{display:none !important;}
.msd-search-wrap{padding:8px 10px;position:sticky;top:0;background:#fff;border-bottom:1px solid var(--border);z-index:1;}
.msd-search-inp{width:100%;border:1.5px solid var(--border);border-radius:6px;padding:5px 9px;font-size:13px;font-family:'DM Sans',sans-serif;outline:none;box-sizing:border-box;}
.msd-search-inp:focus{border-color:var(--red);}
.msd-panel.show{display:block;animation:up .15s;}
.msd-scroll-hint{position:sticky;bottom:0;left:0;right:0;height:32px;background:linear-gradient(transparent,#fff 70%);pointer-events:none;display:flex;align-items:flex-end;justify-content:center;padding-bottom:4px;}
.msd-scroll-hint::after{content:'▼';font-size:10px;color:var(--gray);animation:msd-bounce .8s ease-in-out infinite alternate;}
.msd-scroll-hint.hidden{display:none;}
@keyframes msd-bounce{from{transform:translateY(0)}to{transform:translateY(3px)}}
.msd-option{padding:9px 11px;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .1s;user-select:none;}
.msd-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.msd-count-inline{font-size:11px;font-weight:600;color:var(--gray);background:var(--off);padding:2px 7px;border-radius:10px;flex-shrink:0;margin-left:auto;}
.msd-option.selected .msd-count-inline{color:var(--red);background:rgba(254,0,0,.08);}
.msd-hint{margin-left:6px;font-size:10.5px;font-weight:700;color:var(--ink);white-space:nowrap;background:var(--off2);padding:2px 7px;border-radius:10px;letter-spacing:.2px;}
.msd-option:hover{background:var(--off);}
.msd-option.selected{color:var(--red);font-weight:700;background:rgba(254,0,0,.05);}
.msd-check{width:16px;height:16px;border:2px solid #ccc;border-radius:4px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .1s;background:#fff;}
.msd-option.selected .msd-check{background:var(--red);border-color:var(--red);box-shadow:0 0 0 3px rgba(254,0,0,.15);}
.msd-check svg{display:none;}
.msd-option.selected .msd-check svg{display:block;}
.msd-sep{height:1px;background:var(--border);margin:2px 0;}
/* plus de bouton Appliquer — filtres en temps réel */

/* ── PRODUCTS ── */
.prod-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:10px;}
.prod-count{font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:1px;flex:1;}
.sort-wrap{display:flex;align-items:center;gap:7px;}
.sort-lbl{font-size:11px;color:var(--gray);font-weight:500;white-space:nowrap;}
.sort-sel{padding:7px 10px;border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:12px;outline:none;cursor:pointer;background:var(--white);}
.sort-sel:focus{border-color:var(--red);}

/* ── CARDS ── */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;}
/* Perf 20/07 : pendant le spinner, réserve la hauteur d'une rangée de cartes
   pour que le contenu sous la grille (footer, sentinelle) ne saute pas quand
   les cartes remplacent le spinner (CLS mesuré sur le catalogue desktop).
   Classe retirée dès le 1er render (renderCards réassigne g.className). Scopé
   au catalogue topbar : la vue client a son propre écran d'intro. */
body.topbar-view .pgrid.pgrid-loading{min-height:340px;}
.pcard{background:var(--white);border:1.5px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer;transition:box-shadow .2s,transform .2s,border-color .2s;display:flex;flex-direction:column;}
.pcard:hover{border-color:rgba(254,0,0,.35);box-shadow:0 10px 36px rgba(0,0,0,.1);transform:translateY(-2px);}
/* Perf : les cartes hors écran de la grille (scroll infini, ~centaines de
   cartes) ne sont plus layoutées/peintes. Scopé à .pgrid pour EXCLURE le
   carrousel animé du hero (.phero-tapis). contain-intrinsic-size auto =
   hauteur estimée avant 1er rendu puis mémorisée (pas de saut de scroll). */
.pgrid .pcard{content-visibility:auto;contain-intrinsic-size:auto 480px;}
/* Perf CLS : les cartes étiquette desktop (topbar-view, 4 col) sont plus hautes
   que le placeholder de base — estimation initiale ~540px pour éviter le re-flow
   au 1er passage (auto = la vraie hauteur remplace l'estimation ensuite). */
@media(min-width:769px){body.topbar-view .pgrid .pcard{contain-intrinsic-size:auto 540px;}}

/* Image zone */
.pcard-img{height:279px;background:var(--off2);overflow:hidden;position:relative;flex-shrink:0;}
.pcard-img img{width:100%;height:100%;object-fit:cover;}
/* Catalogue : cadre image un peu moins haut → ratio proche des photos (paysage)
   → moins de rognage/zoom sur les cartes (08/08 Ethan « dézoome ceux qui dépassent ») */
body.topbar-view .pgrid .pcard-img{height:230px;}
.pcard-nophoto{width:100%;height:100%;object-fit:contain!important;background:#fff;}

/* Type badge — overlay on image, top-left */
.pcard-type-overlay{position:absolute;top:10px;left:10px;background:rgba(20,20,20,.82);color:#fff;font-family:'DM Sans',sans-serif;font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;padding:4px 9px;border-radius:5px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
.pcard-photo-ref{position:absolute;bottom:10px;left:10px;background:transparent;color:rgba(255,255,255,.75);font-family:'DM Sans',sans-serif;font-size:7px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:2px 5px;border-radius:4px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:2;}


/* Body */
.pcard-body{padding:8px 12px 0;flex:1;display:flex;flex-direction:column;gap:0;}
.pcard-ref{font-size:9px;color:var(--gray2);font-weight:600;text-transform:uppercase;letter-spacing:.8px;margin-bottom:4px;}
.pcard-name{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.4px;color:var(--black);line-height:1.1;margin-bottom:2px;padding-top:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.pcard-name-format{color:var(--red);font-size:15px;}

/* GSM badge — overlaid bottom-right of photo */
.pcard-gsm-overlay{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.55);color:#fff;border-radius:8px;padding:4px 8px;display:flex;align-items:baseline;gap:4px;backdrop-filter:blur(6px);z-index:2;}
.pcard-gsm-num{font-family:'Bebas Neue',sans-serif;font-size:20px;line-height:1;letter-spacing:.5px;color:#fff;}
.pcard-gsm-lbl{font-size:9px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:rgba(255,255,255,.75);}

/* REF badge — overlaid bottom-left of photo, mirror of GSM badge */
.pcard-ref-overlay{position:absolute;bottom:10px;left:10px;background:rgba(0,0,0,.55);color:#fff;border-radius:8px;padding:4px 8px;display:inline-flex;align-items:center;backdrop-filter:blur(6px);z-index:2;max-width:calc(100% - 130px);box-sizing:border-box;}
.pcard-ref-txt{font-family:'Bebas Neue',sans-serif;font-size:20px;line-height:1;letter-spacing:.9px;color:#fff;white-space:nowrap;}
@media (max-width:640px){
  .pcard-gsm-overlay{bottom:8px;right:8px;padding:3px 7px;}
  .pcard-gsm-num{font-size:17px;}
  .pcard-gsm-lbl{font-size:8px;}
  .pcard-ref-overlay{bottom:8px;left:8px;padding:3px 7px;max-width:calc(100% - 120px);}
  .pcard-ref-txt{font-size:17px;letter-spacing:.7px;}
}

/* Mini spec grid on card */
.pcard-specs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-bottom:6px;margin-top:4px;}
.pcard-spec{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;padding:7px 6px;background:#f4f3ee;border:1px solid #d9d8d2;border-radius:6px;min-width:0;overflow:hidden;}
.pspec-lbl{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ink2);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.pspec-val{font-size:14px;font-weight:700;color:var(--ink);line-height:1.2;word-break:break-word;hyphens:auto;text-align:center;letter-spacing:.1px;}
.pcard-subtitle{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:4px;line-height:1.25;letter-spacing:.2px;}

/* Tags */
.tags{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:12px;margin-top:auto;}
.tag{padding:6px 10px;background:var(--off);border:1px solid var(--border);border-radius:20px;font-size:13px;font-weight:700;color:var(--ink2);text-align:center;text-transform:uppercase;letter-spacing:.3px;}
.tag.tag-gsm{background:rgba(254,0,0,.07);border-color:rgba(254,0,0,.2);color:var(--red);}
.tag.tag-qual{background:#111;border-color:#111;color:#fff;font-weight:700;letter-spacing:.4px;}
.tag.tag-format{background:var(--off);border-color:var(--border);color:var(--red);font-weight:700;letter-spacing:.5px;}
.tag.tag-dim{text-transform:none;letter-spacing:.2px;}

/* Add button */
.btn-add-cart{width:100%;padding:8px;background:#fff;color:var(--ink);border:2px solid var(--ink);border-radius:8px;font-family:'DM Sans',sans-serif;font-size:12px;font-weight:700;letter-spacing:.3px;cursor:pointer;margin-bottom:6px;transition:all .18s;display:flex;align-items:center;justify-content:center;gap:6px;line-height:1;}
.btn-add-cart:hover{background:var(--ink);color:#fff;}
.btn-add-cart.added{background:#fff;border-color:var(--ink);color:var(--ink);}
.btn-add-cart.added:hover{background:var(--off);}
.btn-add-cart .cart-check{display:none;}
.btn-add-cart.added .cart-check{display:none;}
.btn-add-cart.added .cart-icon{display:none;}
.btn-add-cart.added .ico-trash{flex-shrink:0;}
.btn-add-cart .cart-icon{font-size:16px;line-height:1;display:flex;align-items:center;}

/* Footer: weight + price */
.pcard-foot{display:flex;justify-content:space-between;align-items:center;padding-top:6px;border-top:1px solid var(--border);margin-top:auto;}
.pton{font-family:'Bebas Neue',sans-serif;font-size:22px;color:var(--ink);font-weight:900;letter-spacing:.3px;line-height:1;}
.pton-s{font-size:11px;color:var(--gray);font-weight:700;letter-spacing:.3px;}
.badge-stock{background:#dcfce7;color:#059669;padding:3px 8px;border-radius:20px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;border:1px solid rgba(5,150,105,.25);}

/* Equivalents banner */
.equiv-banner{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 14px;background:#FFF8E1;border:1px solid #FFE082;border-radius:8px;margin-bottom:14px;}
.equiv-label{font-size:12px;font-weight:600;color:#7B5800;white-space:nowrap;}
.equiv-pill{padding:4px 12px;background:#fff;border:1.5px solid #FFD740;border-radius:20px;font-size:12px;font-weight:600;color:#5D4037;cursor:pointer;transition:all .15s;}
.equiv-pill:hover{background:#FFD740;color:#3E2723;}

/* Card action row (compat) */
.pcard-actions{display:flex;gap:6px;}
.pcard-actions .btn-add-cart{flex:1;width:auto;min-width:0;margin-bottom:0;}
.pcard-bottom{margin-top:auto;}
.pcard-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--off);}
.pcard-qbadge{position:absolute;bottom:8px;left:8px;padding:2px 6px;border-radius:4px;font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:#fff;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);}
.btn-wa-card{padding:9px 10px;background:var(--off);color:#25D366;border:1.5px solid var(--border);border-radius:var(--r);cursor:pointer;transition:all .18s;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.btn-wa-card:hover{background:#25D366;color:#fff;border-color:#25D366;}
.btn-cmp-card{padding:9px 10px;background:var(--off);color:var(--ink2);border:1.5px solid var(--border);border-radius:var(--r);cursor:pointer;transition:all .18s;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:11px;font-weight:600;}
.btn-cmp-card:hover,.btn-cmp-card.cmp-active{background:var(--red);color:#fff;border-color:var(--red);}
/* Floating compare bar */
.cmp-bar{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--black);color:#fff;border-radius:40px;padding:10px 20px;display:flex;align-items:center;gap:12px;z-index:600;box-shadow:var(--shadow-lg);transition:opacity .2s,transform .2s;opacity:0;pointer-events:none;white-space:nowrap;}
.cmp-bar.show{opacity:1;pointer-events:all;}
.cmp-bar-items{display:flex;gap:6px;}
.cmp-thumb{width:32px;height:32px;border-radius:4px;object-fit:cover;background:var(--off2);}
.cmp-thumb-empty{width:32px;height:32px;border-radius:4px;border:1.5px dashed #555;display:flex;align-items:center;justify-content:center;color:#555;font-size:18px;}
.btn-cmp-go{background:var(--red);color:#fff;border:none;border-radius:20px;padding:7px 16px;font-family:"DM Sans",sans-serif;font-size:13px;font-weight:700;cursor:pointer;}
.btn-cmp-go:hover{background:var(--red2);}
.btn-cmp-clear{background:transparent;color:#aaa;border:none;cursor:pointer;font-size:18px;line-height:1;padding:0 4px;}
.btn-cmp-clear:hover{color:#fff;}
/* Compare modal */
.cmp-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:700;display:none;align-items:center;justify-content:center;padding:16px;}
.cmp-modal-bg.show{display:flex;}
.cmp-modal{background:#fff;border-radius:var(--rl);max-width:960px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);}
.cmp-modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border);}
.cmp-modal-head h2{font-family:"Bebas Neue",sans-serif;font-size:22px;letter-spacing:.5px;}
.cmp-table{width:100%;border-collapse:collapse;font-size:13px;}
.cmp-table th{padding:10px 14px;background:var(--off);font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--gray);font-weight:600;border-bottom:1px solid var(--border);text-align:left;}
.cmp-table td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:top;}
.cmp-table tr:last-child td{border-bottom:none;}
.cmp-table .cmp-label{color:var(--ink2);font-size:11px;text-transform:uppercase;letter-spacing:.4px;font-weight:600;background:var(--off);white-space:nowrap;}
.cmp-diff{color:var(--red);font-weight:600;}
.cmp-img-cell{text-align:center;padding:12px 14px;}
.cmp-img-cell img{max-height:100px;max-width:120px;object-fit:cover;border-radius:4px;}
@keyframes checkpop{0%{transform:scale(0)}100%{transform:scale(1)}}

/* ── SKELETON ── */
.loading-grid{display:contents;}
.skeleton{background:var(--white);border-radius:var(--rl);overflow:hidden;border:1.5px solid var(--border);}
.skel-img{height:145px;background:linear-gradient(90deg,var(--off) 25%,var(--off2) 50%,var(--off) 75%);background-size:400% 100%;animation:shimmer 1.4s infinite;}
.skel-body{padding:13px;}
.skel-line{height:12px;border-radius:4px;background:linear-gradient(90deg,var(--off) 25%,var(--off2) 50%,var(--off) 75%);background-size:400% 100%;animation:shimmer 1.4s infinite;margin-bottom:8px;}
.skel-line.short{width:55%;}
.skel-line.med{width:75%;}

/* ── EMPTY ── */
.empty{text-align:center;padding:64px 20px;color:var(--gray);grid-column:1/-1;}
.empty-svg{margin:0 auto 14px;opacity:.35;}
.empty-lbl{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:1px;margin-bottom:6px;color:var(--ink2);}
.empty-sub{font-size:13px;color:var(--gray2);margin-bottom:18px;}
.btn-empty-reset{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;background:var(--red);color:#fff;border:none;border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:background .18s;}
.btn-empty-reset:hover{background:var(--red2);}

/* ── CART DRAWER ── */
.drawer-overlay{display:none;}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.cart-drawer{position:fixed;top:0;right:0;height:100%;width:420px;max-width:100vw;background:var(--white);z-index:350;box-shadow:-8px 0 40px rgba(0,0,0,.15);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);overflow:hidden;}
.cart-drawer.show{transform:translateX(0);}
body{transition:margin-right .28s cubic-bezier(.4,0,.2,1);}
body.drawer-open{margin-right:420px;overflow-x:hidden;}
.drawer-head{padding:16px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0;}
.drawer-title{font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:2px;line-height:1.1;}
.drawer-meta{font-size:11px;color:var(--gray);font-weight:500;margin-top:2px;}
.drawer-head-actions{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.dh-icon-btn{width:32px;height:32px;border:1.5px solid var(--border);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s,color .15s,transform .12s;flex-shrink:0;padding:0;}
.dh-icon-btn:hover{border-color:var(--ink);background:var(--ink);color:#fff;}
.dh-icon-btn:active{transform:scale(.92);}
.dh-clear-btn{height:32px;padding:0 12px;background:transparent;color:var(--ink);border:1.5px solid var(--border);border-radius:16px;font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;letter-spacing:.2px;}
.dh-clear-btn:hover{border-color:var(--red);color:var(--red);}
.dh-close-btn{width:32px;height:32px;border:1.5px solid var(--border);border-radius:50%;background:#fff;color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0;flex-shrink:0;}
.dh-close-btn:hover{border-color:var(--red);background:var(--red);color:#fff;}
/* « Vider la liste » = cercle ROUGE + poubelle blanche centrée (20/08, demande Ethan) */
.dh-clear-trash{width:32px !important;height:32px !important;padding:0 !important;border-radius:50% !important;background:var(--red) !important;border:none !important;color:#fff !important;display:flex !important;align-items:center;justify-content:center;flex-shrink:0;}
.dh-clear-trash:hover{background:#cc0000 !important;color:#fff !important;}
.drawer-items{flex:1;overflow-y:auto;padding:14px;}
.drawer-empty{text-align:center;padding:52px 20px;color:var(--gray);}
.drawer-empty-ico{font-size:36px;margin-bottom:10px;}
.drawer-empty-t{font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:1px;margin-bottom:6px;}
.drawer-empty-s{font-size:12px;color:var(--gray2);margin-bottom:16px;}
.btn-drawer-browse{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;background:var(--off);color:var(--ink);border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;}
.btn-drawer-browse:hover{border-color:var(--red);color:var(--red);}
/* ── CartItem redesign ── */
.ci{background:var(--white);border:1.5px solid var(--border);border-radius:var(--rl);padding:6px 8px;display:flex;gap:7px;margin-bottom:6px;position:relative;overflow:hidden;}
.ci:last-child{margin-bottom:0;}
.ci-img{width:86px;height:86px;align-self:center;border-radius:6px;background:#F0EFE8;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;font-family:monospace;font-size:10px;color:var(--gray);text-align:center;line-height:1.3;}
.ci-img img{width:100%;height:100%;object-fit:cover;border-radius:6px;}
.ci-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.ci-row1{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;min-width:0;}
.ci-laize{font-size:14px;font-weight:700;color:var(--ink);line-height:1.25;flex:1;min-width:0;letter-spacing:.2px;}
.ci-qty-ctrl{display:flex;align-items:center;gap:4px;flex-shrink:0;}
.ci-qty-btn{width:32px;height:32px;border-radius:50%;border:1px solid #ddd;background:var(--white);color:var(--ink);font-size:18px;font-weight:300;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;transition:border-color .12s;}
.ci-qty-btn:hover{border-color:var(--ink);}
.ci-qty-inp{width:48px;text-align:center;font-size:14px;font-weight:600;font-family:'DM Sans',sans-serif;color:var(--ink);border:1px solid #ddd;border-radius:6px;padding:5px 2px;-moz-appearance:textfield;}
.ci-qty-inp::-webkit-inner-spin-button,.ci-qty-inp::-webkit-outer-spin-button{-webkit-appearance:none;}
.ci-qty-lbl{font-size:13px;color:var(--gray);font-weight:500;}
.ci-gsm{font-family:'Bebas Neue',sans-serif;font-size:18px;line-height:1.1;color:var(--ink);letter-spacing:.5px;white-space:nowrap;flex-shrink:0;}
.ci-name{font-size:12px;color:var(--ink2);font-weight:500;line-height:1.4;margin-bottom:2px;}
.ci-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:2px;}
.ci-lot{display:inline-flex;align-items:center;gap:4px;background:#efefed;color:#666;font-size:11px;font-family:monospace;font-weight:600;letter-spacing:.3px;padding:3px 7px;border-radius:4px;cursor:pointer;transition:background .12s;white-space:nowrap;}
.ci-lot:hover{background:#e2e2df;}
.ci-kgs{font-size:15px;color:var(--red);font-weight:700;white-space:nowrap;}
.ci-rm{background:none;border:none;cursor:pointer;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;color:var(--gray2);transition:color .15s;padding:0;margin:-4px -4px -4px 0;}
.ci-rm:hover{color:var(--red);}
.ci-confirm{position:absolute;inset:0;background:rgba(255,255,255,.96);display:none;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--ink);padding:12px;border-radius:var(--rl);}
.ci-confirm.show{display:flex;}
.ci-confirm-no{background:none;color:var(--ink);border:1.5px solid var(--border);border-radius:5px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;font-family:'DM Sans',sans-serif;}
.ci-confirm-yes{background:var(--red);color:#fff;border:none;border-radius:5px;padding:6px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;}
.drawer-footer{padding:14px 18px 16px;border-top:1px solid var(--border);flex-shrink:0;background:var(--white);}
.drawer-totals{margin-top:12px;border:1px solid var(--border);border-radius:10px;background:var(--off);padding:4px 14px;}
.dt-row{display:grid;grid-template-columns:1fr auto;align-items:baseline;padding:10px 0;column-gap:16px;}
.dt-row+.dt-row{border-top:1px dashed var(--border);}
.dt-lbl{font-family:'DM Sans',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:var(--gray);}
.dt-val{font-family:'Bebas Neue',sans-serif;font-size:26px;color:var(--red);letter-spacing:.5px;line-height:1;font-variant-numeric:tabular-nums;text-align:right;}
.drawer-actions{display:flex;gap:10px;align-items:stretch;}
.da-action{flex:1;height:58px;border:none;border-radius:10px;background:var(--red);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;letter-spacing:.3px;transition:background .15s,transform .12s;padding:0 16px;}
.da-action:hover{background:#c70000;}
.da-action:active{transform:scale(.97);}
.da-action svg{flex-shrink:0;width:18px;height:18px;}
.no-price-note{background:var(--red-light);border-left:3px solid var(--red);border-radius:var(--r);padding:8px 11px;font-size:11px;color:#990000;margin-bottom:12px;}

/* ── SHARED QUOTE BANNER ── */
#shared-quote-banner{position:relative;background:#fafaf6;border-bottom:1px solid var(--border);padding:0;}
.sq-inner{max-width:1320px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.sq-slim{justify-content:space-between;padding:10px 24px;gap:24px;flex-wrap:wrap;}
.sq-slim-label{font-size:15px;font-weight:800;color:var(--ink);letter-spacing:.3px;}
.sq-slim-hint{font-size:13px;font-weight:500;color:var(--gray);font-style:italic;}

/* ── ASK TEXT (modal prompt stylé) ── */
.askp-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);z-index:600;display:none;align-items:center;justify-content:center;padding:16px;}
.askp-bg.show{display:flex;}
.askp-box{background:#fff;border-radius:16px;padding:28px 28px 22px;max-width:460px;width:100%;box-shadow:0 24px 80px rgba(0,0,0,.28);animation:up .22s cubic-bezier(.4,0,.2,1);}
.askp-title{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:1.5px;color:var(--ink);margin-bottom:6px;}
.askp-sub{font-size:13px;color:var(--gray);margin-bottom:16px;line-height:1.4;}
.askp-input{width:100%;padding:13px 14px;border:1.5px solid var(--border);border-radius:10px;font-family:'DM Sans',sans-serif;font-size:15px;color:var(--ink);outline:none;transition:border-color .15s,box-shadow .15s;background:#fff;box-sizing:border-box;}
.askp-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(34,34,34,.08);}
.askp-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}
.askp-btn{padding:11px 22px;border-radius:10px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;border:none;}
.askp-btn-cancel{background:#fff;color:var(--ink);border:1.5px solid var(--border);}
.askp-btn-cancel:hover{border-color:var(--ink);}
.askp-btn-ok{background:var(--ink);color:#fff;}
.askp-btn-ok:hover{background:var(--red);}

/* ── CONFIRM DIALOG ── */
.confirm-bg{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:500;display:none;align-items:center;justify-content:center;padding:16px;}
.confirm-bg.show{display:flex;}
.confirm-box{background:var(--white);border-radius:14px;padding:24px;max-width:340px;width:100%;box-shadow:var(--shadow-lg);animation:up .2s;}
.confirm-ico{font-size:28px;margin-bottom:12px;text-align:center;}
.confirm-t{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:1px;text-align:center;margin-bottom:7px;}
.confirm-s{font-size:13px;color:var(--gray);text-align:center;margin-bottom:18px;}
.confirm-acts{display:flex;gap:8px;}
.btn-confirm-cancel{flex:1;padding:11px;background:var(--off);border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:500;cursor:pointer;}
.btn-confirm-ok{flex:1;padding:11px;background:var(--red);color:#fff;border:none;border-radius:var(--r);font-family:'Bebas Neue',sans-serif;font-size:14px;letter-spacing:.8px;cursor:pointer;}

/* ── DETAIL MODAL ── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:300;overflow-y:auto;padding:24px 16px;}
.modal-bg.show{display:flex;}
/* Drawer ouvert + modal ouvert → modal centré dans la zone à gauche du drawer
   (viewport - 420px). Les flèches prev/next suivent le décalage. Mobile garde
   le full-screen normal. */
body.drawer-open .modal-bg{
  justify-content:flex-start;
  padding-left:max(16px, calc((100vw - 420px - 657px) / 2));
  padding-right:436px;
}
body.drawer-open .dmod-prev{left:max(8px, calc(50vw - 850px));}
body.drawer-open .dmod-next{right:max(436px, calc(50vw - 100px));}
@media(max-width:660px){
  body.drawer-open .modal-bg{
    justify-content:center;
    padding-left:16px;
    padding-right:16px;
  }
  body.drawer-open .dmod-prev{left:max(8px, calc(50% - 704px));}
  body.drawer-open .dmod-next{right:max(8px, calc(50% - 704px));}
}
.dmod-nav{position:fixed;top:50%;transform:translateY(-50%);width:56px;height:56px;border-radius:50%;border:none;background:rgba(255,255,255,.22);color:#fff;font-size:26px;cursor:pointer;transition:background .15s,opacity .15s;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);z-index:var(--z-modal);}
.modal-bg.show .dmod-nav{display:flex;}
.dmod-prev{left:max(8px, calc(50% - 704px));}
.dmod-next{right:max(8px, calc(50% - 704px));}
.dmod-nav:hover:not(:disabled){background:rgba(255,255,255,.32);}
.dmod-nav:disabled{opacity:.22;cursor:default;pointer-events:none;}
@media(max-width:1408px){.dmod-nav{display:none;}.modal-bg.show .dmod-nav{display:none;}}
@keyframes up{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}
.dmodal{position:relative;background:var(--white);border-radius:16px;width:100%;max-width:1280px;height:780px;overflow:hidden;box-shadow:var(--sh-lg);margin:auto;animation:up .22s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:row;}
.dimg-col{position:relative;background:#fff;order:0;width:50%;height:100%;flex-shrink:0;border-right:1px solid var(--border);}
.dmain{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;}
.dmain img{width:95%;height:95%;object-fit:contain;}
.det-photo-ref{position:absolute;bottom:10px;left:10px;z-index:5;font-family:'DM Sans',sans-serif;font-size:16px;font-weight:700;letter-spacing:.5px;color:#fff;background:rgba(0,0,0,.45);padding:6px 12px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .15s;}
.det-photo-ref:hover{background:rgba(0,0,0,.7);}
.det-ref-copy{font-size:13px;opacity:.8;}
.det-ref-copied{display:none;color:#4ade80;}
.det-photo-ref.copied{background:rgba(0,0,0,.7);}
.det-photo-ref.copied .det-ref-copy{display:none;}
.det-photo-ref.copied .det-ref-copied{display:inline;}
.dclose{flex-shrink:0;width:36px;height:36px;background:var(--off);border:1.5px solid var(--border);border-radius:50%;color:var(--ink);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s,color .15s;padding:0;}
.dclose:hover{background:var(--ink);border-color:var(--ink);color:#fff;}
.dhead-actions{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.dnav-inline{display:none;width:36px;height:36px;background:var(--off);border:1.5px solid var(--border);border-radius:50%;color:var(--ink);font-size:22px;line-height:1;cursor:pointer;padding:0 0 2px 0;align-items:center;justify-content:center;transition:background .15s,border-color .15s,color .15s,opacity .15s;font-family:'Bebas Neue',sans-serif;}
.dnav-inline:hover:not(:disabled){background:var(--ink);border-color:var(--ink);color:#fff;}
.dnav-inline:disabled{opacity:.28;cursor:default;}
@media(max-width:1408px){.dnav-inline{display:inline-flex;}}
.dqbadge-wrap{position:absolute;top:12px;left:12px;z-index:2;}
.dbody{padding:20px 26px 22px;display:flex;flex-direction:column;gap:0;overflow-y:auto;order:1;width:50%;height:100%;flex-shrink:0;flex-grow:1;}
.d-ref{font-size:10px;color:var(--gray2);font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;}
.d-name{font-family:'Bebas Neue',sans-serif;font-size:34px;letter-spacing:.7px;color:var(--black);line-height:1.15;margin-bottom:8px;}
.d-summary{font-size:16px;font-weight:500;color:var(--ink2);margin-bottom:18px;line-height:1.4;letter-spacing:.1px;}
.dspecs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:12px;}
.dspec-item{background:var(--off);border:1px solid var(--border);border-radius:10px;padding:12px 14px;}
.dspec-lbl{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.9px;color:#888;margin-bottom:4px;}
.dspec-val{font-size:22px;font-weight:700;color:#111;line-height:1.15;}
.ddetails-txt{font-size:13px;color:#666;line-height:1.5;padding:8px 12px;background:var(--off);border-radius:8px;border-left:3px solid #ddd;margin-bottom:10px;}
.dprice-row{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:rgba(254,0,0,.05);border:1px solid rgba(254,0,0,.12);border-radius:8px;margin-bottom:8px;}
.dprice-val{font-family:'Bebas Neue',sans-serif;font-size:26px;color:var(--red);letter-spacing:.5px;}
.dprice-ask{font-size:12px;color:#aaa;font-style:italic;}
.dpoids-val{font-size:19px;font-weight:700;color:#111;}
.dpoids-lbl{font-size:11px;color:#888;font-weight:600;}
.d-actions{display:flex;flex-direction:column;gap:8px;margin-top:auto;padding-top:4px;}
.btn-cart-det{padding:14px 18px;background:var(--black);color:#fff;border:none;border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;transition:background .25s,transform .1s;}
.btn-cart-det:hover{opacity:.82;}
.btn-cart-det.added{background:var(--red);}
.btn-cart-det.added:hover{background:#c40000;opacity:1;}
.btn-cart-det:active{transform:scale(.97);}
.btn-pf{padding:13px 18px;background:var(--red);color:#fff;border:none;border-radius:var(--r);font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:1.5px;cursor:pointer;transition:background .18s;}
.btn-pf:hover{background:var(--red2);}
.btn-wa2{padding:11px 18px;background:#fff;color:#111;border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;transition:all .15s;}
.btn-wa2:hover{border-color:#25D366;color:#25D366;}
@media(max-width:660px){.dmain{min-height:200px;max-height:260px;}}

/* ── PROFORMA ── */
.pf-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;z-index:400;padding:16px;}
.pf-bg.show{display:flex;}
.pf-box{background:var(--white);border-radius:14px;width:100%;max-width:540px;padding:32px;box-shadow:var(--shadow-lg);animation:up .22s;max-height:90vh;overflow-y:auto;}
.pf-stripe{height:3px;background:var(--red);border-radius:3px;margin-bottom:18px;}
.pf-title{font-family:'Bebas Neue',sans-serif;font-size:28px;letter-spacing:1.5px;margin-bottom:4px;}
.pf-sub{font-size:15px;color:var(--gray);margin-bottom:16px;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.form-fg{display:flex;flex-direction:column;gap:5px;margin-bottom:10px;}
.form-fl{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--gray2);}
.form-fi{padding:13px 15px;border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:16px;width:100%;outline:none;transition:border-color .15s;color:var(--ink);}
.form-fi:focus{border-color:var(--red);}
.form-fi.invalid{border-color:#e53e3e;background:#fff5f5;}
.form-err{font-size:11px;color:#e53e3e;margin-top:2px;display:none;}
.form-fg.has-error .form-err{display:block;}
.form-fg.has-error .form-fi{border-color:#e53e3e;}
textarea.form-fi{min-height:70px;resize:vertical;}
.form-actions{display:flex;gap:8px;margin-top:14px;}
.btn-cancel{flex:1;padding:14px;background:var(--off);color:var(--ink2);border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:16px;font-weight:500;cursor:pointer;}
.btn-send{flex:2;padding:14px;background:var(--red);color:#fff;border:none;border-radius:var(--r);font-family:'Bebas Neue',sans-serif;font-size:19px;letter-spacing:1px;cursor:pointer;transition:background .18s;}
.btn-send:hover:not(:disabled){background:var(--red2);}
.btn-send:disabled{opacity:.55;cursor:not-allowed;}
/* proforma success screen */
.pf-success{text-align:center;padding:32px 16px;}
.pf-success-ico{font-size:48px;margin-bottom:12px;}
.pf-success-t{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:1px;color:var(--black);margin-bottom:6px;}
.pf-success-s{font-size:13px;color:var(--gray);margin-bottom:20px;}
.btn-pf-close{padding:11px 28px;background:var(--black);color:#fff;border:none;border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .18s;}
.btn-pf-close:hover{opacity:.8;}
.pf-items-list{background:var(--off);border:1px solid var(--border);border-radius:var(--r);padding:10px;margin-bottom:12px;max-height:90px;overflow-y:auto;}
.pf-item-line{font-size:11px;color:var(--ink2);padding:3px 0;border-bottom:1px solid var(--border);}
.pf-item-line:last-child{border:none;}

/* ── TOAST ── */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(80px);background:var(--black);color:#fff;padding:11px 20px;border-radius:var(--rl);font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px;z-index:999;border-left:3px solid var(--red);box-shadow:var(--shadow-lg);white-space:nowrap;opacity:0;transition:opacity .25s,transform .35s cubic-bezier(.34,1.56,.64,1);pointer-events:none;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}
.spin-bg{position:fixed;inset:0;background:rgba(255,255,255,.8);display:none;align-items:center;justify-content:center;z-index:999;}
.spin-bg.show{display:flex;}
.spin{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--red);border-radius:50%;animation:rot .7s linear infinite;}
@keyframes rot{to{transform:rotate(360deg)}}

/* ── FOOTER ── */
footer{background:var(--black);border-top:3px solid var(--red);padding:24px;}
.footer-inner{max-width:1320px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:16px;}
.f-logo{height:28px;width:auto;filter:brightness(0) invert(1);}
.f-sub{font-size:11px;color:rgba(255,255,255,.35);text-transform:uppercase;letter-spacing:.7px;}

/* ── RESPONSIVE ── */
.mob-search-bar{display:none;}
.mob-filter-btn{display:none;}
/* Mob header filter button (hidden on desktop) */
.mob-filter-head{display:none;align-items:center;justify-content:center;background:var(--white);border:1.5px solid var(--border);border-radius:10px;width:46px;height:38px;flex-shrink:0;cursor:pointer;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.04);transition:border-color .15s,background .15s;}
.mob-filter-head:hover,.mob-filter-head:active{background:var(--off);border-color:var(--ink);}
/* Mob header search button (hidden on desktop) */
.mob-search-head{display:none;align-items:center;justify-content:center;background:var(--red);border:1.5px solid var(--red);border-radius:10px;width:46px;height:38px;flex-shrink:0;cursor:pointer;color:#fff;padding:0;box-shadow:0 2px 6px rgba(254,0,0,.22);transition:background .15s,box-shadow .15s;}
.mob-search-head:hover,.mob-search-head:active{background:#d40000;border-color:#d40000;}

@media(max-width:1024px){
  .live-pill{display:none;}
  .live-pill-desktop{display:none;}
}
/* Safety net : empêche le cart-drawer fixed (translateX hors viewport) de causer
   un scroll horizontal sur tablette aussi (déjà appliqué en mobile <768px).
   overflow-x:CLIP et pas hidden — hidden crée un scrollport qui TUE les
   position:sticky descendants (barre de filtres collante, 18/07). */
html,body{overflow-x:clip;}
@media(max-width:768px){
  /* Header row 1: panda + filter-btn + cart (search moved below) */
  .header-inner{padding:0 10px;height:50px;gap:8px;position:relative;}
  /* Panda absolutely centered in the header */
  .logo-link{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;}
  .header-search-group{display:none;}
  .header-search{display:none !important;}
  /* Show the dedicated icon-only search button in the header */
  .mob-search-head{display:flex;}
  .mob-search-head svg{width:18px;height:18px;}
  .mob-filter-head svg{width:18px;height:18px;}
  /* Mobile search bar — hidden by default, slides down when toggled via .show */
  .mob-search-bar{display:none;padding:8px 10px;background:var(--white);border-bottom:1px solid var(--border);position:sticky;top:58px;z-index:99;}
  .mob-search-bar.show{display:block;animation:msb-slide .18s ease-out;}
  @keyframes msb-slide{from{transform:translateY(-6px);opacity:0;}to{transform:translateY(0);opacity:1;}}
  .mob-search-bar .header-search{display:flex !important;width:100%;max-width:none;margin:0;background:var(--off);border:1.5px solid var(--border);border-radius:40px;overflow:hidden;}
  .mob-search-bar .header-search input{flex:1;min-width:0;padding:10px 14px;background:transparent;border:none;outline:none;font-family:'DM Sans',sans-serif;font-size:13px;color:var(--ink);}
  .mob-search-bar .header-search input::placeholder{color:var(--gray2);}
  .mob-search-bar .header-search button{background:var(--red);color:#fff;border:none;padding:0 16px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .exact-toggle{display:none;}
  .live-pill{display:none;}
  .lang-sep{display:none;}
  .lang-btn{font-size:11px;padding:3px 6px;}
  .btn-panier-txt{display:inline !important;font-size:16px !important;font-weight:800 !important;}
  .mob-filter-head{display:flex;}
  #filter-bar{display:none;}
  /* Trust bar défilant — hauteur fixe 22px */
  .trust-bar{height:22px;padding:0;display:flex;align-items:center;overflow:hidden;}
  .trust-track{display:flex;width:max-content;animation:trust-scroll 24s linear infinite;}
  .trust-inner{flex-shrink:0;width:max-content;padding:0 32px;justify-content:flex-start;overflow:visible;max-width:none;}
  .trust-inner-dup{display:flex !important;}
  /* HEADER MOBILE 2 LIGNES (29/08 Ethan) : L1 = logo « Prodiconseil » (gauche) |
     €/$ + « Ma commande » (droite) ; L2 = tonnage (gauche) | Filtres (droite). */
  .logo-full{display:block;height:24.7px;} /* 30/08 : -5% (place liberee par « Panier ») */
  .logo-mob{display:none;}
  body:not(.shared-view) .logo-link{display:flex !important;align-items:center;flex-shrink:0;}
  /* header-inner en BLOCK hauteur AUTO (bat le display:grid mobile de topbar-view
     ~l.2137 via une spécificité supérieure) → les 2 lignes s'empilent. */
  body.topbar-view:not(.shared-view) header{background:#fff !important;border-bottom:1px solid var(--border) !important;box-shadow:none !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;}
  body.topbar-view:not(.shared-view) .header-inner{display:block !important;height:auto !important;padding:0 12px 6px !important;grid-template-areas:none !important;background:#fff !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:none !important;border-radius:0 !important;max-width:none !important;}
  #mob-hdr-r1,#mob-hdr-r2{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;gap:8px;min-width:0;}
  /* 30/08 : bandeau tonnage/Filtres gris clair comme le zebrage */
  #mob-hdr-r1{height:43px;align-items:center;} /* 30/08 : ligne logo 43px / grise 45px */
  #mob-hdr-r2{background:#f0f0f4;margin:-5px -20px -7px;padding:0 20px;height:45px;box-sizing:border-box;width:auto;position:relative;justify-content:flex-end;align-items:center;}
  #mob-hdr-r2 #mob-filtres-btn{height:34px !important;}
  #mob-hdr-r2 #head-tons{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;} /* 30/08 : tonnage centre */
  #mob-hdr-r1{margin-bottom:5px;overflow:hidden;min-height:0;max-height:80px;transition:max-height .3s ease,opacity .22s ease,margin-bottom .3s ease;}
  /* Scroll vers le bas : la ligne logo se REPLIE en douceur (header = tonnage+Filtres) */
  body.hdr-collapsed:not(.shared-view) #mob-hdr-r1{max-height:0 !important;opacity:0 !important;margin-bottom:0 !important;pointer-events:none;}
  /* Tiroir mobile : PAS de plage à droite des sliders (Grammages/Laizes/Ø/Poids)
     — rien à droite comme Couleurs/Mandrin (29/08 Ethan). */
  #msd-grammage-mob .gsl-btnval,#msd-laize-mob .gsl-btnval,#msd-diametre-mob .gsl-btnval,#msd-poids-mob .gsl-btnval{display:none !important;}
  .mob-hdr-left{display:flex;align-items:center;gap:9px;min-width:0;}
  body:not(.shared-view) #mob-hdr-r1 #cart-btn{width:auto !important;padding:0 9px !important;height:34px;gap:5px;flex-shrink:0;}
  body:not(.shared-view) #mob-hdr-r1 #cart-btn img{height:18px !important;}
  /* 30/08 : « Ma commande » redessine en VRAI bouton (pilule noire + panier blanc) ;
     la ligne 1 est serree (euro-dollar + logo + pilule > 350px) -> zoom leger sur
     le toggle devise pour que rien ne se chevauche */
  #mob-hdr-r1 #ccy-wrap{zoom:.8;}
  #mob-hdr-r1 .mob-hdr-left{min-width:0;flex:1;display:flex;align-items:center;}
  #mob-hdr-r1 .mob-hdr-left .logo-link{margin:0 auto;} /* 30/08 : logo centre dans l'espace libre */
  /* ecrans etroits (iPhone mini/SE 375px) : encore un cran plus compact */
  @media(max-width:385px){
    #mob-hdr-r1 #ccy-wrap{zoom:.72;}
    .logo-full{height:21.5px !important;}
    body:not(.shared-view) #mob-hdr-r1 #cart-btn .btn-panier-txt{font-size:11px !important;}
    body:not(.shared-view) #mob-hdr-r1 #cart-btn{padding:0 9px !important;}
  }
  body:not(.shared-view) #mob-hdr-r1 #cart-btn{background:#fff !important;border:1.5px solid #d2d2d7 !important;box-shadow:0 1px 6px rgba(0,0,0,.06) !important;border-radius:999px !important;height:34px !important;padding:0 13px !important;display:inline-flex !important;align-items:center;gap:6px;flex-shrink:0;}
  body:not(.shared-view) #mob-hdr-r1 #cart-btn img{display:none !important;}
  body:not(.shared-view) #mob-hdr-r1 #cart-btn::before{content:'';width:17px;height:17px;flex-shrink:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1d1f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 8V6a4 4 0 0 1 8 0v2'/%3E%3Cpath d='M4.5 8h15l-1.2 12a2 2 0 0 1-2 1.8H7.7a2 2 0 0 1-2-1.8L4.5 8z'/%3E%3C/svg%3E") center/contain no-repeat;}
  body:not(.shared-view) #mob-hdr-r1 #cart-btn .btn-panier-txt{display:inline !important;font-size:15px !important;font-weight:800;white-space:nowrap;color:#1d1d1f !important;}
  body:not(.shared-view) #mob-hdr-r1 .ccy-seg{flex-shrink:0;}
  /* Header right group: icons only, no text */
  .hright{gap:8px;margin-left:auto;}
  .live-pill-hright{display:none;}
  .btn-head-panier{padding:0;border-radius:10px;width:46px;height:38px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1.5px solid var(--border);background:var(--white);transition:border-color .15s,background .15s;}
  .btn-head-panier:hover,.btn-head-panier:active{background:var(--off);border-color:var(--ink);}
  .btn-head-panier .btn-panier-txt{display:inline !important;font-size:16px !important;font-weight:800 !important;}
  .btn-head-panier img{height:24px !important;width:auto;vertical-align:0 !important;margin:0 !important;}
  .lang-sep{display:none;}
  /* € price toggle in header — same square geometry as les autres boutons */
  .hright .lang-btn{display:flex !important;width:46px;height:38px;padding:0;align-items:center;justify-content:center;border-radius:10px;background:var(--off);color:var(--ink);font-size:16px;font-weight:700;border:1.5px solid var(--border);transition:background .15s,border-color .15s;}
  .hright .lang-btn.on{background:var(--ink);color:#fff;border-color:var(--ink);}
  /* Sticky: header-inner 52px + trust-bar 22px = 74px */
  #results-bar{top:auto;}
  .rbar-sort-lbl{display:none;}
  body{padding-bottom:0;}
  .ptable-head{display:none;}
  /* Results bar mobile — toolbar éditoriale unifiée
     Rang 1 : [+]   5 642 PRODUITS · 9295.5 T   [≡]
     Filet  : séparatrice dotted (pseudo-élément ::after sur row 1)
     Rang 2 : pager centré compact */
  .rbar-inner{display:grid !important;grid-template-columns:auto 1fr auto !important;grid-auto-rows:auto;column-gap:12px;row-gap:0;align-items:center;padding:4px 16px 0 !important;flex-wrap:initial !important;background:var(--white);border-bottom:1px solid var(--border);position:relative;}
  .rbar-inner > *{margin:0 !important;}
  .rbar-inner .vt-toggle-btn.add-page-btn{grid-column:1;grid-row:1;padding:0;width:46px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:10px;flex-shrink:0;gap:0;order:initial;margin:0 !important;border:1.5px solid var(--ink);color:var(--ink);background:var(--white);transition:background .15s;}
  .rbar-inner .vt-toggle-btn.add-page-btn:hover,.rbar-inner .vt-toggle-btn.add-page-btn:active{background:rgba(254,0,0,.06);}
  .rbar-inner .vt-toggle-btn.add-page-btn svg{width:16px;height:16px;}
  .rbar-count{grid-column:2;grid-row:1;text-align:center;font-size:15px !important;line-height:1.15;letter-spacing:.4px;min-width:0;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis;display:block !important;width:auto !important;max-width:100% !important;order:initial !important;flex:initial !important;padding:0 4px !important;}
  .rbar-count *{white-space:nowrap !important;}
  .rbar-inner #vt-toggle{grid-column:3;grid-row:1;padding:0;width:46px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:10px;flex-shrink:0;gap:0;order:initial;margin:0 !important;border:1.5px solid var(--border);background:var(--white);color:var(--ink);transition:border-color .15s,background .15s;}
  .rbar-inner #vt-toggle:hover,.rbar-inner #vt-toggle:active{background:var(--off);border-color:var(--ink);}
  .rbar-inner #vt-toggle svg{width:16px;height:16px;}
  .rbar-inner .vt-toggle-btn span{display:none;}
  /* Pager rang 2 — bleed horizontal + fond crème = visuellement rattaché à la zone produits */
  .rbar-inner .pager-top{grid-column:1/-1;grid-row:2;justify-content:center;width:auto;margin:4px -16px 0;padding:4px 16px 6px;flex:none;order:initial;border-top:1px dotted var(--border);background:#F5F3EE;}
  .rbar-inner .pager-top .parrow,.rbar-inner .pager-top .pnum{width:24px;height:24px;min-width:24px;font-size:10px;background:transparent;border:none;color:var(--ink2);}
  .rbar-inner .pager-top .parrow:hover:not([disabled]),.rbar-inner .pager-top .pnum:hover:not(.active){background:transparent;border:none;color:var(--ink);box-shadow:none;}
  .rbar-inner .pager-top .pnum.active{background:#fff;border:1.5px solid var(--ink);color:var(--ink);}
  .rbar-inner .grp-toggle-btn{grid-column:1;grid-row:1;}
  /* Réinitialiser : déplacé dans le header du filter-drawer mobile (cf .fd-reset) */
  .rbar-inner .rbar-reset{display:none !important;}
  .rbar-sort{display:none !important;}
  .rbar-photo{display:none !important;}
  /* pager-top reste visible en mobile */
  .footer-grid{grid-template-columns:1fr;}
  .pgrid{grid-template-columns:1fr 1fr !important;gap:8px !important;}
  .cart-drawer{width:100%;max-width:100vw;}
  /* Mobile: drawer is full-width, no need to shift body — also prevents stuck margin causing layout shift */
  body.drawer-open{margin-right:0 !important;}
  .grid2{grid-template-columns:1fr;}
  .dbody{padding:14px;}
  .footer-inner{flex-direction:column;gap:8px;text-align:center;}
}
@media(max-width:900px){
  .header-search{max-width:340px;}
}
@media(max-width:390px){
  .pgrid-v2{grid-template-columns:1fr 1fr;}
}
@media(max-width:480px){
  .btn-panier-txt{display:inline !important;font-size:16px !important;font-weight:800 !important;}
}

/* ── LANG TOGGLE ── */
.lang-sep{width:1px;height:16px;background:var(--border);margin:0 2px;}
.lang-btn{padding:5px 8px;border-radius:4px;font-size:12px;font-weight:700;color:var(--gray);background:none;border:none;cursor:pointer;transition:all .15s;letter-spacing:.3px;}
.lang-btn.on{background:var(--black);color:#fff;}
.lang-btn:hover:not(.on){background:var(--off2);color:var(--ink);}
@media(max-width:480px){.lang-sep,.lang-btn{display:none;}}

/* ── PAGINATION ── */
.pager{display:flex;align-items:center;justify-content:center;gap:4px;margin:28px 0 12px;padding:0 16px;flex-wrap:wrap;}.pager-top{margin:0;gap:2px;padding:0;flex-wrap:nowrap;flex-shrink:1;min-width:0;}.pager-top .parrow,.pager-top .pnum{width:28px;height:28px;min-width:28px;font-size:11px;flex-shrink:0;}.pager-top .pellipsis{font-size:11px;flex-shrink:0;}.parrow{width:36px;height:36px;border:1.5px solid var(--ink);border-radius:50%;background:var(--ink);cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:all .15s;color:#fff;line-height:1;flex-shrink:0;}
.parrow:hover:not([disabled]){border-color:var(--red);color:var(--red);}
.parrow[disabled]{opacity:.3;cursor:not-allowed;}
.pnum{min-width:36px;height:36px;padding:0 6px;border:1.5px solid var(--border);border-radius:50%;background:var(--white);cursor:pointer;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;color:var(--ink2);transition:all .15s;display:flex;align-items:center;justify-content:center;}
.pnum:hover:not(.active){border-color:var(--red);color:var(--red);}
.pnum.active{background:#fff;border-color:var(--ink);color:var(--ink);cursor:default;}
.pellipsis{font-size:14px;color:var(--gray2);padding:0 2px;display:flex;align-items:flex-end;height:36px;padding-bottom:6px;}

/* ── DUAL RANGE SLIDER ── */
.nmr-row{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:2px;}
.nmr-unit{font-weight:400;font-size:12px;color:var(--gray);}
.nmr-reset{background:none;border:none;padding:0;font-size:11px;font-weight:600;color:var(--red);cursor:pointer;letter-spacing:.3px;}
.nmr-reset:hover{text-decoration:underline;}
.nmr-wrap{display:flex;align-items:center;gap:6px;}
.nmr-wrap-single .nmr-in{width:100%;}
.nmr-sep{font-size:13px;color:var(--gray);flex-shrink:0;}
.nmr-in{flex:1;min-width:0;border:1px solid var(--border);border-radius:5px;padding:6px 8px;font-size:15px;color:var(--ink);background:#fff;outline:none;-moz-appearance:textfield;}
.nmr-in::-webkit-inner-spin-button,.nmr-in::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
.nmr-in:focus{border-color:var(--red);}
/* Zone/Allée : un label au-dessus de chaque champ (au lieu d'un en-tête commun) */
.nmr-wrap-2col{align-items:flex-end;}
.nmr-col{display:flex;flex-direction:column;flex:1;min-width:0;}
.nmr-col .nmr-in{width:100%;flex:none;}
.nmr-col .fl{margin-bottom:3px;}
.frow-col{display:flex;flex-direction:column;flex:1;min-width:0;}
.frow-col .fl{margin-bottom:3px;}

/* ── FILTER BAR ── */
#filter-bar{background:var(--white);border-bottom:1px solid var(--border);position:sticky;top:var(--header-h);z-index:var(--z-filterbar);padding:0 24px;}
.fbar-inner{max-width:1320px;margin:0 auto;display:flex;align-items:center;gap:8px;height:48px;overflow-x:auto;scrollbar-width:none;}
.fbar-inner::-webkit-scrollbar{display:none;}
.fbar-sep{width:1px;height:20px;background:var(--border);flex-shrink:0;}
/* Filter pills in bar */
.fb-pill{display:flex;align-items:center;gap:5px;padding:5px 12px;border-radius:20px;border:1.5px solid var(--border);background:var(--white);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;color:var(--ink2);white-space:nowrap;flex-shrink:0;}
.fb-pill:hover{border-color:var(--red);color:var(--red);}
.fb-pill.active{background:var(--red);border-color:var(--red);color:#fff;box-shadow:0 2px 8px rgba(254,0,0,.28);}
/* Compact range input in filter bar */
.fb-range{display:flex;align-items:center;gap:4px;flex-shrink:0;}
.fb-range-lbl{font-size:11px;color:var(--gray);font-weight:600;white-space:nowrap;}
.fb-inp{width:56px;padding:4px 6px;border:1.5px solid var(--border);border-radius:var(--r);font-family:'DM Sans',sans-serif;font-size:12px;color:var(--ink);background:var(--white);outline:none;transition:border-color .15s;text-align:center;}
.fb-inp:focus{border-color:var(--red);}
.fb-inp-wide{width:72px;}
/* Compact MSD in filter bar */
.fb-msd{position:relative;flex-shrink:0;}
.fb-msd-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;border:1.5px solid var(--border);border-radius:20px;background:var(--white);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;color:var(--ink2);cursor:pointer;transition:border-color .15s,color .15s;white-space:nowrap;}
.fb-msd-btn:hover,.fb-msd-btn.open{border-color:var(--red);color:var(--red);}
.fb-msd-btn .msd-count{font-size:10px;padding:1px 5px;}
.fb-msd-arrow{font-size:9px;color:var(--gray);}
/* Active filter chips row */
#active-chips{max-width:1320px;margin:0 auto;padding:6px 24px;display:flex;flex-wrap:wrap;gap:5px;align-items:center;}
#active-chips:empty{display:none;padding:0;}

/* ── RESULTS BAR ── */
#results-bar{background:transparent;margin-top:-16px;margin-bottom:6px;padding-top:6px;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);}
.rbar-inner{padding:4px 14px;display:flex;align-items:center;gap:12px;flex-wrap:nowrap;background:transparent;border-radius:0;}
.rbar-count{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:.5px;color:var(--ink);flex:0 0 auto;margin-right:24px;}
.rbar-photo{margin-left:auto;}
.rbar-count span{color:var(--ink);}
.rbar-sort{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto;margin-right:-10px;}
.rbar-sort-lbl{font-size:13px;color:var(--gray);font-weight:500;}
.rbar-sel{height:28px;box-sizing:border-box;padding:0 10px;border:1.5px solid var(--border);border-radius:8px;font-family:'DM Sans',sans-serif;font-size:12px;outline:none;cursor:pointer;background:var(--white);color:var(--ink);}
.rbar-sel:focus{border-color:var(--red);}
.rbar-reset{font-size:11px;color:var(--gray);cursor:pointer;font-weight:600;padding:4px 8px;border-radius:var(--r);transition:color .15s,background .15s;flex-shrink:0;white-space:nowrap;background:none;border:none;}
.rbar-reset:hover{color:var(--red);background:var(--red-light);}


/* ── MSD inside filter-drawer: position:fixed broken by transform, use static flow ── */
#filter-drawer .msd-panel{position:static;box-shadow:none;border-top:none;border-radius:0 0 var(--r) var(--r);max-height:200px;}

/* ── MOBILE FILTER DRAWER ── */
#filter-drawer{position:fixed;bottom:0;left:0;right:0;height:90vh;background:var(--white);z-index:var(--z-drawer);border-radius:16px 16px 0 0;box-shadow:0 -8px 40px rgba(0,0,0,.2);transform:translateY(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;}
/* .open = transform:none (PAS translateY(0)) : tout transform ≠ none fait du
   tiroir le containing block des .msd-panel position:fixed → panneaux décalés
   sous la page et rognés par .fd-body (bug listes déroulantes mobile, 16/08). */
#filter-drawer.open{transform:none;}
.fd-handle{width:40px;height:4px;background:var(--border);border-radius:2px;margin:10px auto 6px;}
.fd-head{padding:10px 16px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.fd-title{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:1px;}
.fd-close{width:30px;height:30px;border:1.5px solid var(--border);border-radius:50%;background:var(--white);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;}
/* Croix du tiroir à GAUCHE (29/08 Ethan) : order:-1 la place avant le logo/titre */
#filter-drawer .fd-close{order:-1;margin-right:8px;flex-shrink:0;}
.fd-reset{margin-left:auto;margin-right:10px;background:none;border:none;color:var(--gray);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;cursor:pointer;padding:6px 10px;border-radius:6px;transition:color .15s,background .15s;}
.fd-reset:hover,.fd-reset:active{color:var(--red);background:var(--red-light,rgba(254,0,0,.06));}
.fd-body{flex:1;overflow-y:auto;padding:12px 16px;}
.fd-section{border-bottom:1px solid var(--border);margin-bottom:0;}
.fd-section-head{padding:10px 0 4px;cursor:default;}
.fd-section-title{font-size:13px;font-weight:600;color:var(--ink);}
.fd-section-arrow{display:none;}
/* Séparateur « FILTRES AVANCÉS » du tiroir mobile (calqué sur le rail desktop) */
.fd-adv-hdr{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--g3,#86868b);padding:16px 4px 6px;border:none;}
.fd-section-body{padding-bottom:12px;display:block;}
/* ── Tiroir filtres = LOOK du rail desktop (26/08) : fond gris clair, boutons
   en cartes blanches arrondies avec ombre, espacées (fini les hairlines). ── */
#filter-drawer .fd-body{background:#f0f0f4;padding:14px 14px 20px;}
#filter-drawer .fd-section{border-bottom:none !important;margin-bottom:9px;}
#filter-drawer .fd-section:last-child{margin-bottom:0;}
#filter-drawer .fd-section-body{padding-bottom:0 !important;margin-top:0 !important;}
#filter-drawer .fd-section .msd-btn{border:none !important;background:#fff !important;box-shadow:var(--sh-sm);border-radius:14px !important;padding:13px 16px !important;font-size:16px;font-weight:700;}
#filter-drawer .fd-section .format-pills .fpill{border-radius:12px;box-shadow:var(--sh-sm);}
/* Photo / Réservation = ACCORDÉON avec options cochables (29/08 Ethan), comme les
   autres menus du tiroir : header = carte .msd-btn, corps = options .msd-option. */
#filter-drawer .fd-acc .fd-acc-head{width:100% !important;}
#filter-drawer .fd-acc .fd-acc-head .msd-arrow svg{transition:transform .2s ease;}
#filter-drawer .fd-acc .fd-acc-body{display:none;padding:6px 2px 0;}
#filter-drawer .fd-acc.fd-acc-open .fd-acc-body{display:block;}
#filter-drawer .fd-acc.fd-acc-open .fd-acc-head .msd-arrow svg{transform:rotate(180deg);}
#filter-drawer .fd-acc-body .msd-option{display:flex;align-items:center;gap:12px;padding:12px 12px;border-radius:12px;cursor:pointer;font-size:16px;font-weight:700;color:#1d1d1f;}
#filter-drawer .fd-acc-body .msd-option:active{background:rgba(0,0,0,.05);}
#filter-drawer .fd-acc-body .msd-option .msd-check{width:22px;height:22px;border:2px solid #c7c7cc;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#fff;}
#filter-drawer .fd-acc-body .msd-option .msd-check svg{opacity:0;}
#filter-drawer .fd-acc-body .msd-option.selected .msd-check{background:#1d1d1f;border-color:#1d1d1f;}
#filter-drawer .fd-acc-body .msd-option.selected .msd-check svg{opacity:1;}
#filter-drawer .fd-section .fd-section-head{padding:0 0 6px;}
#filter-drawer .fd-adv-hdr{padding:14px 4px 8px;}
.fd-foot{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;}
.btn-fd-apply{width:100%;padding:13px;background:var(--red);color:#fff;border:none;border-radius:var(--r);font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:1.5px;cursor:pointer;}
/* Mobile sticky bottom bar */
#filter-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:calc(var(--z-drawer) - 1);display:none;}
#filter-drawer-overlay.show{display:block;}


/* ── HIDE OLD UI ELEMENTS ── */
.stats-bar{display:none !important;}
.filter-chips{display:none !important;}
.prod-head{display:none !important;}
.mob-filter-btn{display:none !important;}

/* ── DESKTOP: sidebar layout ── */
@media(min-width:769px){
  /* Hide horizontal filter bar */
  #filter-bar{display:none !important;}
  /* Logo left-aligned, flush with sidebar */
  .header-inner{padding-left:40px;margin-left:0;max-width:none;}
  .logo-link{width:auto;justify-content:flex-start;flex-shrink:0;}
  /* Search group (live pill + search bar) centered */
  .header-search-group{display:flex;align-items:center;gap:10px;margin:0 0 0 32px;flex-shrink:0;}
  .header-search{margin:0;transform:none;width:600px;max-width:600px;flex-shrink:0;}
  /* Live pill: hide original in hright, show the one before search */
  .live-pill-hright{display:none;}
  .live-pill-desktop{display:flex;flex-shrink:0;margin-left:30px;}
  /* 2-col layout: sidebar + content */
  .body-wrap{
    display:grid;
    grid-template-columns:280px 1fr;
    max-width:none;
    padding:0 24px 32px 0;
  }
  .body-wrap>div:first-child{align-self:stretch;}
  /* Sidebar — header is 87px (52 header-inner + 30 trust-bar) */
  .filters-panel{
    display:block !important;
    position:sticky;
    top:57px;
    align-self:start;
    height:calc(100vh - 57px);
    overflow-y:auto;
    border-right:1px solid var(--border);
    padding:12px 18px 20px;
    box-sizing:border-box;
    scrollbar-width:thin;
    scrollbar-color:var(--border) transparent;
    background:var(--white);
  }
  .filters-panel::-webkit-scrollbar{width:4px;}
  .filters-panel::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
  /* Sidebar: type list always visible, no dropdown */
  #sb-type-list .msd-option{font-size:15px;font-weight:600;padding:7px 10px;}
  /* Content column */
  .body-wrap>div:last-child{
    padding:16px 0 0 24px;
    min-width:0;
  }
  /* Results bar under header (87px = 52 header-inner + 30 trust-bar) */
  #results-bar{top:87px;}
}

/* ── TABLET (769–1200px) : compacter le header pour éviter l'overflow horizontal
   (iPad Air landscape 1180×820, iPad portrait, iPad mini…). Au-delà = desktop ── */
@media(min-width:769px) and (max-width:1200px){
  .header-inner{padding-left:20px;padding-right:16px;gap:10px;}
  .header-search-group{flex:1;min-width:0;margin-left:20px;}
  .header-search{width:auto;max-width:560px;flex-shrink:1;}
  .btn-scan-txt{display:none;}
  .btn-panier-txt{display:inline !important;font-size:16px !important;font-weight:800 !important;}
  .btn-head-scan{padding:0;width:62px;height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .btn-head-scan svg{width:22px;height:22px;}
  .btn-head-panier{padding:0;width:88px;height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .btn-head-panier img{height:30px !important;width:auto;vertical-align:0 !important;margin:0 !important;}
  .hright{gap:10px;}
  .hright .lang-btn{width:44px !important;height:44px !important;font-size:14px !important;border-radius:9px !important;}
}

/* ── TABLET ÉTROIT (769–880px, iPad Air portrait) : sidebar plus étroite + masque Exact ── */
@media(min-width:769px) and (max-width:900px){
  .body-wrap{grid-template-columns:220px 1fr;}
  .filters-panel{padding:14px 14px 40px;}
}
@media(min-width:769px) and (max-width:880px){
  .exact-toggle{display:none;}
  .header-search{max-width:380px;}
}

/* ── MOBILE ── */
@media(max-width:768px){
  .filters-panel{display:none !important;}
  /* Sidebar column entièrement masquée sur mobile (vide une fois filters-panel + mob-filter-btn cachés) */
  .sidebar-col{display:none;}
  /* Reset asymmetric body-wrap padding (was 16px 24px 16px 0 for desktop sidebar) */
  .body-wrap{padding:0 !important;max-width:100% !important;}
  .body-wrap>div:last-child{padding:0 !important;min-width:0;}
  /* Filet anti-débordement horizontal. ⚠️ CLIP et pas HIDDEN : hidden crée un
     conteneur de défilement qui CASSE le position:sticky du header (29/08). */
  html,body{overflow-x:clip;}
  /* Force le grid à pouvoir shrink — sans `minmax(0,1fr)`, le `auto` minimum d'une 1fr peut faire déborder à cause du contenu min-content d'une carte */
  .pgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;padding:0 16px;}
  .pcard{min-width:0;}
}


/* ── DESIGN UPGRADES ── */
/* ── FLOATING CONTACT BUTTON ── */
.fab-contact{position:fixed;bottom:24px;right:24px;width:52px;height:52px;border-radius:50%;background:#25D366;color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(37,211,102,.4);z-index:var(--z-modal);transition:background .18s,transform .18s,box-shadow .18s,right .28s cubic-bezier(.4,0,.2,1);}
body.drawer-open .fab-contact{right:444px;}
.fab-contact:hover{background:#1ebe5d;transform:scale(1.08);box-shadow:0 6px 22px rgba(37,211,102,.55);}
/* WhatsApp flottant — UNIQUEMENT sur le catalogue SANS PRIX (lead-view) en MOBILE,
   comme la vitrine (PRODIX étant masqué en topbar-view, pas de chevauchement) */
.wa-sticky{display:none;position:fixed;bottom:24px;right:24px;z-index:1000;width:48px;height:48px;background:#25D366;border-radius:50%;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(37,211,102,.4);transition:transform .2s,box-shadow .2s;color:#fff;text-decoration:none;}
.wa-sticky:hover{transform:scale(1.1);box-shadow:0 6px 28px rgba(37,211,102,.55);}
@media(max-width:768px){body.lead-view .wa-sticky{display:flex;}}

.pcard{transition:border-color .22s,box-shadow .22s,transform .22s;}

/* Filter pill transition */
.fb-pill{transition:background .18s,border-color .18s,color .18s,box-shadow .18s;}

/* Pagination hover glow */
.parrow:hover:not([disabled]){box-shadow:0 0 0 3px rgba(254,0,0,.1);}
.pnum:hover:not(.active){box-shadow:0 0 0 3px rgba(254,0,0,.1);}

/* Space Grotesk for headings in catalogue */
.rbar-count{font-family:'Bebas Neue',sans-serif;}

/* ── VIEW TOGGLE ── */
.view-toggle{display:flex;align-items:center;gap:2px;margin-left:10px;background:var(--off);border:1.5px solid var(--border);border-radius:8px;padding:3px;}
.vt-btn{background:none;border:none;cursor:pointer;padding:5px 8px;border-radius:6px;color:var(--gray);display:flex;align-items:center;transition:all .15s;}
.vt-btn svg{width:14px;height:14px;}
.vt-btn.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1);}
.vt-btn:hover:not(.active){color:var(--ink);}
.vt-fiche-lbl{font-family:'DM Sans',sans-serif;font-size:12px;font-weight:700;letter-spacing:.3px;margin-left:5px;}
.vt-toggle-btn{display:flex;align-items:center;gap:7px;background:var(--off);border:1.5px solid var(--border);border-radius:10px;padding:7px 14px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;color:var(--ink);transition:all .15s;}
.vt-toggle-btn:hover{border-color:var(--ink);}
.vt-toggle-btn.add-page-btn{background:#fff;border-color:var(--ink);color:var(--ink);height:28px;width:34px;min-width:34px;box-sizing:border-box;padding:0;display:flex;align-items:center;justify-content:center;margin-left:-13px;}
.vt-toggle-btn.add-page-btn:hover{background:var(--red);color:#fff;border-color:var(--red);}
.vt-toggle-btn.add-page-btn.all-in{background:var(--red);border-color:var(--red);color:#fff;}
.vt-toggle-btn.add-page-btn.all-in svg{display:none;}
.vt-toggle-btn.add-page-btn.all-in::before{content:"";display:inline-block;width:18px;height:18px;background-color:#fff;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='3 6 5 6 21 6'/><path d='M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6'/><path d='M10 11v6'/><path d='M14 11v6'/><path d='M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/></svg>") center/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='3 6 5 6 21 6'/><path d='M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6'/><path d='M10 11v6'/><path d='M14 11v6'/><path d='M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/></svg>") center/contain no-repeat;}
.vt-toggle-btn.add-page-btn.all-in:hover{background:#c40000;border-color:#c40000;}
.vt-toggle-btn.grp-toggle-btn{background:#fff;border-color:var(--border);color:var(--ink);padding:7px 11px;}
.vt-toggle-btn.grp-toggle-btn.on{background:var(--ink);border-color:var(--ink);color:#fff;}
.vt-toggle-btn.grp-toggle-btn.on:hover{background:#000;border-color:#000;}
/* Mode regroupé : sélecteur quantité + poids live */
.grp-badge{display:inline-flex;align-items:center;gap:4px;background:var(--ink);color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;letter-spacing:.3px;}
.pcard-grp-add{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-top:1px solid var(--border);background:#fafaf8;margin-top:auto;}
.pcard-foot-inline{display:flex;justify-content:space-between;align-items:center;gap:10px;}
.pcard-btn-inline{width:auto!important;padding:7px 14px!important;margin:0!important;font-size:12px!important;flex-shrink:0;}
.grp-compact{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;}
.grp-qty-btn{display:flex;align-items:center;justify-content:center;width:28px;height:32px;border:1.5px solid var(--border);background:#fff;color:var(--ink);cursor:pointer;font-weight:700;font-size:16px;line-height:1;padding:0;border-radius:6px;transition:background .15s,color .15s,border-color .15s;}
.grp-qty-btn:hover:not(:disabled){background:var(--ink);color:#fff;border-color:var(--ink);}
.grp-qty-btn:disabled{opacity:.3;cursor:not-allowed;}
.grp-weight{font-variant-numeric:tabular-nums;}
.btn-add-cart.grp-add-btn{position:static;background:#fff;color:var(--ink);border:2px solid var(--ink);transition:background .15s,color .15s;}
.btn-add-cart.grp-add-btn:hover{background:var(--ink);color:#fff;}
.btn-add-cart.grp-add-btn.added{background:#fff;color:var(--ink);border:2px solid var(--ink);}
.btn-add-cart.grp-add-btn.added:hover{background:var(--off);}
/* List view grouped controls — single 28px-tall capsule, preserves row rhythm */
.plist-grp-cell{display:inline-flex;align-items:center;gap:4px;height:26px;line-height:1;}
.plist-grp-stepper{display:inline-flex;align-items:stretch;height:26px;border:1.5px solid var(--ink);border-radius:13px;background:#fff;overflow:hidden;font-family:'DM Sans',sans-serif;}
.plist-grp-step{width:20px;border:none;background:transparent;color:var(--ink);font-size:14px;font-weight:600;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:background .12s,color .12s;}
.plist-grp-step:hover:not(:disabled){background:var(--ink);color:#fff;}
.plist-grp-step:disabled{opacity:.25;cursor:not-allowed;}
.plist-grp-valwrap{display:inline-flex;align-items:baseline;justify-content:center;padding:0 3px;border-left:1px solid var(--border);border-right:1px solid var(--border);min-width:36px;font-variant-numeric:tabular-nums;}
.plist-grp-val{width:18px;border:none;outline:none;padding:0;text-align:right;font:700 13px/1 'DM Sans',sans-serif;color:var(--ink);background:transparent;-moz-appearance:textfield;font-variant-numeric:tabular-nums;}
.plist-grp-val::-webkit-inner-spin-button,.plist-grp-val::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
.plist-grp-max{font:500 11px/1 'DM Sans',sans-serif;color:var(--gray);font-variant-numeric:tabular-nums;margin-left:1px;user-select:none;pointer-events:none;}
.plist-grp-add{width:26px;height:26px;border-radius:7px;border:none;background:var(--ink);color:#fff;font-size:16px;font-weight:400;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,transform .12s;padding:0;flex-shrink:0;}
.plist-grp-add:hover{background:var(--red);}
.plist-grp-add:active{transform:scale(.92);}
.plist-grp-add.added{background:var(--red);}
.plist-grp-add.added:hover{background:#c40000;}
.rbar-photo{display:flex;gap:4px;flex-shrink:0;}
.rbar-photo-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--white);border:1.5px solid var(--border);border-radius:8px;color:var(--ink);cursor:pointer;transition:all .15s;padding:0;}
.rbar-photo-btn:hover{border-color:var(--ink);}
.rbar-photo-btn.active{background:var(--ink);border-color:var(--ink);color:#fff;}
.rbar-photo-btn[data-photo="without"].active{background:#666;border-color:#666;}

/* ── LIST VIEW TABLE ── */
#pgrid.plist{display:block;}
.plist-table{width:100%;min-width:700px;border-collapse:collapse;font-family:'DM Sans',sans-serif;font-size:14px;background:#fff;}
.plist-table thead th{background:#fff;color:#000;font-size:10px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;padding:6px 4px;text-align:left;border-bottom:2px solid #000;white-space:nowrap;position:sticky;top:0;z-index:2;}
.plist-th-add{width:48px;min-width:48px;max-width:48px;}
.plist-table tbody tr{background:#fff;border-bottom:1px solid #ddd;cursor:pointer;transition:background .12s;}
.plist-table tbody tr:hover{background:#f0f0f0;}
.plist-section-title{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.8px;color:var(--ink);padding:16px 4px 6px;text-transform:uppercase;border-bottom:2px solid var(--ink);margin-top:18px;}
.plist-thumb{width:50px;height:40px;object-fit:cover;border-radius:5px;display:block;}
.plist-thumb-wrap{width:50px;padding:4px 6px;}
.plist-td{padding:6px 4px;vertical-align:middle;color:#000;white-space:nowrap;}
.plist-td-add{padding:7px 6px;vertical-align:middle;width:48px;min-width:48px;max-width:48px;position:relative;}
.plist-td-num{text-align:right;font-variant-numeric:tabular-nums;}
.plist-td-title{white-space:normal;min-width:120px;max-width:180px;}
.plist-td-details{max-width:140px;overflow:hidden;}
.plist-qtitle{display:block;font-size:14px;font-weight:700;color:var(--ink);line-height:1.3;}
.plist-details{display:block;font-size:13px;color:var(--ink);margin-top:2px;font-style:normal;font-weight:500;}
.plist-details-sub{font-size:11px;color:var(--gray);font-weight:400;margin-top:2px;display:block;}
.plist-gsm{font-family:'Bebas Neue',sans-serif;font-size:16px;color:var(--ink);letter-spacing:.5px;}
.plist-price{font-weight:700;color:var(--red);font-size:14px;}
.plist-price-ask{font-size:12px;color:var(--gray);font-style:italic;}
.plist-add{position:relative;background:#fff;color:var(--ink);border:1.5px solid var(--ink);border-radius:6px;width:26px;height:26px;font-size:17px;font-weight:400;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s;padding:0;line-height:1;flex-shrink:0;}
.plist-grp-pop .plist-grp-badge{position:absolute;top:-7px;right:-10px;background:var(--ink);color:#fff;border:1.5px solid #fff;border-radius:10px;font:700 9px/1 'DM Sans',sans-serif;padding:2px 4px;min-width:20px;text-align:center;letter-spacing:.2px;pointer-events:none;}
.plist-grp-pop.added .plist-grp-badge{background:var(--red);}
.plist-grp-popover{position:fixed;z-index:9500;background:#fff;border:1.5px solid var(--ink);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:10px 12px;font-family:'DM Sans',sans-serif;min-width:200px;}
.plist-grp-popover-hd{font-size:10px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--gray);margin-bottom:8px;display:flex;justify-content:space-between;align-items:baseline;gap:8px;}
.plist-grp-popover-w{color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums;}
.plist-grp-popover-row{display:flex;align-items:center;gap:8px;}
.plist-grp-popover-add{padding:0 12px;height:28px;background:var(--ink);color:#fff;border:none;border-radius:8px;font:700 12px/1 'DM Sans',sans-serif;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:background .15s;}
.plist-grp-popover-add:hover{background:#000;}
.plist-grp-popover-add.added{background:var(--red);}
.plist-grp-popover-add.added:hover{background:#c40000;}
.plist-add:hover{background:var(--red);color:#fff;border-color:var(--red);}
.plist-add.added{background:var(--red);color:#fff;border-color:var(--red);}
.plist-add.added:hover{background:#c40000;border-color:#c40000;}
@media(max-width:700px){.plist-col-mandrin{display:none;}.plist-col-depot,.plist-td-depot{display:none;}.plist-col-usine,.plist-td-usine{display:none;}.plist-col-ref,.plist-td-ref{display:none;}}
.plist-col-usine,.plist-td-usine{text-align:center;font-weight:600;color:var(--ink);min-width:52px;}
.plist-td-depot{min-width:140px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.plist-td-usine{font-variant-numeric:tabular-nums;}
.plist-col-ref,.plist-td-ref{text-align:center;min-width:80px;}
.plist-ref-badge{display:inline-block;font-family:'DM Sans',sans-serif;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.3px;color:#222;background:#ebebeb;padding:3px 8px;border-radius:4px;}
.plist-sel-all{background:var(--ink);color:#fff;border:none;font-size:20px;font-weight:700;width:36px;height:36px;border-radius:8px;cursor:pointer;transition:background .15s;font-family:'DM Sans',sans-serif;line-height:1;display:flex;align-items:center;justify-content:center;padding:0;}
.plist-sel-all:hover{background:#000;}

/* ============================================================
   MOBILE — desktop intact, ne touche que <=600px et <=380px
   ============================================================ */
@media(max-width:600px){
  /* HEADER + RECHERCHE */
  .header-inner{padding:0 12px;gap:8px;}
  .header-search{max-width:none;}
  .header-search input{padding:8px 12px;font-size:13px;}
  .btn-head{padding:4px 10px;font-size:12px;gap:5px;}
  .live-pill{padding:4px 10px;font-size:11px;}
  .hright{gap:5px;}

  /* BARRE FILTRES */
  #filter-bar,.fbar-inner{padding:0 12px;}
  .fbar-inner{gap:6px;}
  .fb-pill{padding:4px 9px;font-size:11px;}
  .fb-inp{width:46px;font-size:11px;padding:3px 5px;}
  .fb-msd-btn{padding:4px 8px;font-size:11px;}
  .fb-range{gap:3px;}

  /* RBAR (compteur produits + tri) — taille réduite sur très petit écran */
  .rbar-count{font-size:14px !important;line-height:1.15;}
  /* Masquer texte "Vue liste détaillée" et texte du select tri */
  #vt-toggle span,.grp-toggle-lbl{display:none;}
  #vt-toggle{padding:6px 10px;}
  .rbar-sel{width:46px;font-size:0;padding:7px 4px;}
  .rbar-sel option{font-size:13px;color:var(--ink);}
  body{overflow-x:clip;}

  /* GRILLE + CARTES PRODUITS (la grille est déjà 1fr 1fr à <=768) */
  .pcard-img{height:200px;}
  .pcard-body{padding:8px 11px;}
  .pcard-name{font-size:18px;letter-spacing:.3px;}
  .pcard-name-format{font-size:12px;}
  .pcard-subtitle{font-size:12px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:4px;}
  .pcard-specs{gap:4px;font-size:11px;}
  .pcard-spec{padding:5px 7px;}
  .pcard-foot{flex-wrap:wrap;gap:6px;}
  .pton{font-size:19px;}
  .pcard-price{top:8px;right:8px;padding:3px 7px;font-size:15px;}

  /* DRAWER PANIER (largeur 100% déjà gérée à <=768) */
  .drawer-head{padding:12px 14px;}
  .drawer-title{font-size:17px;letter-spacing:1.2px;}
  .drawer-items{padding:10px;}
  .ci{padding:6px 8px;gap:8px;}
  .ci-img{width:60px;height:60px;}
  .ci-laize{font-size:13px;}
  .ci-gsm{font-size:16px;}
  .ci-name{font-size:11px;}
  .ci-qty-btn{width:28px;height:28px;font-size:16px;}
  .ci-qty-inp{width:42px;font-size:13px;}
  .ci-kgs{font-size:14px;}
  .drawer-footer{padding:12px 14px 14px;}
  .dt-val{font-size:22px;}
  .da-action{height:52px;font-size:14px;padding:0 14px;gap:8px;}

  /* MODALE DÉTAIL PRODUIT */
  .dmodal{flex-direction:column;height:auto;max-height:92vh;max-width:96vw;}
  .dimg-col{width:100%;height:auto;min-height:180px;max-height:34vh;flex-shrink:0;border-right:none;border-bottom:1px solid var(--border);}
  .dmain img{max-height:32vh;width:auto !important;height:auto !important;object-fit:contain;}
  .d-name{font-size:22px;letter-spacing:.4px;}
  .dbody{width:100%;padding:14px 16px 12px;flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;}
  .dspecs{grid-template-columns:1fr 1fr;gap:5px;}
  .d-actions{position:sticky;bottom:0;background:#fff;margin:auto -16px 0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:1.5px solid var(--border);z-index:5;box-shadow:0 -6px 12px -8px rgba(0,0,0,.08);}
  .btn-cart-det{padding:12px 16px;font-size:14px;}
  /* X close en haut-droite flottant sur la modale, visible sur image OU sur body */
  .dclose{position:absolute;top:10px;left:10px;width:36px;height:36px;font-size:14px;z-index:12;background:rgba(255,255,255,.92);color:var(--ink);border:1.5px solid var(--border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--sh-md);}
  .dclose:hover{background:var(--ink);border-color:var(--ink);color:#fff;}

  /* MODALES SECONDAIRES (proforma, share, askp, compare) */
  .pf-box{padding:20px 18px;max-width:96vw;}
  .pf-title{font-size:22px;letter-spacing:1px;}
  .pf-sub{font-size:13px;}
  .form-fi{padding:11px 12px;font-size:15px;}
  .btn-send{padding:12px;font-size:16px;letter-spacing:.6px;}
  .askp-box{padding:20px 18px;max-width:94vw;}
  .cmp-modal{max-width:96vw;}
  .cmp-modal-head{padding:14px 16px;}
  .cmp-modal-head h2{font-size:18px;}
  .cmp-table{font-size:11px;}
  .cmp-table th,.cmp-table td{padding:7px 9px;}
}

@media(max-width:380px){
  .header-inner{padding:0 8px;gap:5px;}
  .live-pill{display:none;}
  .btn-head{padding:4px 8px;font-size:11px;}
  .pcard-img{height:173px;}
  .pcard-name{font-size:16px;}
  .ci-img{width:52px;height:52px;}
  .ci-qty-btn{width:26px;height:26px;}
  .ci-qty-inp{width:38px;}
  .d-name{font-size:19px;}
  .dspecs{grid-template-columns:1fr;}
  .pf-title{font-size:19px;}
}

/* ── IMAGE LIGHTBOX (clic sur photo détail → plein écran) ── */
.img-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.94);z-index:9999;display:none;align-items:center;justify-content:center;padding:env(safe-area-inset-top,16px) 12px env(safe-area-inset-bottom,16px);cursor:zoom-out;animation:ilb-fade .15s ease-out;}
.img-lightbox.show{display:flex;}
.img-lightbox img{max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none;cursor:zoom-out;}
.ilb-close{position:absolute;top:max(16px,env(safe-area-inset-top,16px));left:16px;width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.14);border:none;color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .15s;z-index:2;}
.ilb-close:hover{background:rgba(255,255,255,.26);}
@keyframes ilb-fade{from{opacity:0;}to{opacity:1;}}

/* ── SCAN QR ── */
.btn-head-scan{padding:4px 14px;gap:6px;}
.btn-head-scan svg{flex-shrink:0;}
.btn-scan-txt{font-size:14px;}
@media(max-width:640px){.btn-scan-txt{display:none;}.btn-head-scan{padding:6px 10px;}}
.scan-modal{position:fixed;inset:0;background:rgba(0,0,0,.82);z-index:1100;display:none;align-items:center;justify-content:center;padding:16px;animation:scan-fade .15s ease;}
.scan-modal.open{display:flex;}
.scan-modal-content{width:100%;max-width:460px;background:#fff;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;max-height:90vh;}
.scan-modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0;}
.scan-modal-title{font-weight:700;font-size:15px;color:var(--ink);}
.scan-close{background:none;border:0;cursor:pointer;color:#666;display:flex;align-items:center;justify-content:center;padding:6px;border-radius:6px;}
.scan-close:hover{background:#f1f1f1;color:#000;}
.scan-video-wrap{position:relative;background:#000;aspect-ratio:1;width:100%;overflow:hidden;flex-shrink:0;}
#scan-video{width:100%;height:100%;object-fit:cover;display:block;}
.scan-overlay{position:absolute;inset:16%;border:3px solid #fff;border-radius:18px;box-shadow:0 0 0 100vmax rgba(0,0,0,.28);pointer-events:none;}
.scan-status{padding:11px 16px;text-align:center;font-size:13px;color:#444;background:#fafafa;border-bottom:1px solid var(--border);flex-shrink:0;}
.scan-history{padding:8px 12px 12px;overflow:auto;flex:1;min-height:0;}
.scan-history:empty{display:none;}
.scan-hist-row{padding:7px 10px;border-radius:6px;font-size:13px;margin-top:4px;font-family:'DM Sans',sans-serif;font-weight:600;}
.scan-hist-row.ok{background:#eaf7e7;color:#1a6a17;}
.scan-hist-row.err{background:#fce8e8;color:#a31515;}
@keyframes scan-fade{from{opacity:0;}to{opacity:1;}}

/* ── COPY CART LINK ── */
.da-copy-link{width:100%;height:46px;border:none;border-radius:10px;background:#1a1a1a;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;margin-top:8px;transition:background .15s,transform .12s;letter-spacing:.2px;}
.da-copy-link:hover{background:#000;}
.da-copy-link:active{transform:scale(.97);}
.da-copy-link svg{flex-shrink:0;}
.da-copy-link.done{background:#1a6a17;}
.da-copy-link.done:hover{background:#155513;}
/* « Copier le lien » remis EN HAUT du tiroir (au-dessus d'Excel, 28/08) :
   pas de marge haute (le padding du footer suffit) + gap sous le bouton. */
.da-copy-top{margin:0 0 8px;}

/* Badge Réservé (réservation Sage — reserve_client importé chaque matin) */
.pcard-resa-overlay{position:absolute;top:10px;left:10px;background:#b45309;color:#fff;border-radius:8px;padding:4px 10px;font-size:11px;font-weight:800;letter-spacing:.6px;z-index:2;}
/* Réf article (barre du haut) : pas de flèches de spinner (16/07) */
#f-refmin-top::-webkit-outer-spin-button,#f-refmin-top::-webkit-inner-spin-button,
#f-refmax-top::-webkit-outer-spin-button,#f-refmax-top::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
#f-refmin-top,#f-refmax-top{-moz-appearance:textfield;appearance:textfield;}
/* Compteur produits/tonnage déplacé dans le header (16/07) */
.header-inner .rbar-count{flex:0 0 auto;margin-right:6px;}
@media(min-width:769px){.header-inner .hright{margin-left:0;}}
@media(max-width:768px){.header-inner .rbar-count{display:none !important;}}
/* Pager centré sous le compteur du header (16/07) */
@media(min-width:769px){
  .rbar-inner{position:relative;}
  .rbar-inner .pager.pager-top{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;}
}
/* PRODIX (IA offre) : reprend la pastille flottante, en noir Prodi */
.fab-prodix{background:#fff;padding:0;overflow:hidden;width:69px;height:69px;border:2px solid var(--ink);box-shadow:0 4px 16px rgba(0,0,0,.3);}
.fab-prodix:hover{transform:scale(1.08);box-shadow:0 6px 22px rgba(0,0,0,.4);}
/* Titres de groupe du menu Détails (familles du wizard) */
.msd-group-hdr{padding:10px 12px 4px;font-size:10px;font-weight:800;letter-spacing:.9px;color:#a09a90;text-transform:uppercase;border-top:1px solid var(--border);margin-top:4px;}
.msd-group-hdr:first-of-type{border-top:none;margin-top:0;}
/* Pager haut : pilule segmentée (17/07) — une capsule, chiffres à plat,
   page active en pastille noire, chevrons discrets */
.pager-top{background:#fff;border:1.5px solid var(--border);border-radius:999px;padding:2px 4px;gap:1px !important;}
.pager-top .pnum,.pager-top .parrow{width:24px !important;height:24px !important;min-width:24px !important;border:none !important;background:transparent !important;border-radius:7px !important;font-size:11px !important;font-weight:700;color:var(--ink2);box-shadow:none !important;}
.pager-top .pnum:hover:not(.active),.pager-top .parrow:hover:not([disabled]){background:var(--off) !important;color:var(--ink);}
.pager-top .pnum.active{background:var(--ink) !important;color:#fff !important;cursor:default;}
.pager-top .parrow{color:var(--ink);font-size:12px !important;}
.pager-top .parrow[disabled]{color:#c8c4bc;cursor:default;}
.pager-top .pellipsis{color:#c8c4bc;}

/* ── Vue client (lien partagé ?s=) : catalogue sans panneau filtres ── */
body.shared-view .sidebar-col{display:none !important;}
body.shared-view .body-wrap{grid-template-columns:1fr !important;max-width:none !important;padding:0 16px 32px !important;}
/* Header vue client ÉPURÉ (10/08) : logo Prodi + bouton icône Excel seule à
   droite (#cart-btn sans texte = filet de secours si le popup d'accueil
   _excelPopup a été fermé). Compteur, champs Réf, Album/Usine/Offre et icônes
   mobiles masqués. */
body.shared-view .header-search-group,body.shared-view #album-wrap,body.shared-view #fab-wrap,body.shared-view #offre-wrap,body.shared-view #cart-clear-btn,body.shared-view .mob-search-head,body.shared-view .mob-filter-head{display:none !important;}
/* Vue client (?s=) : tonnage + compteur AFFICHÉS dans le header (28/08 Ethan) —
   « 12 bobines • 6 formats • 15.0 t ». Visible ordi ET mobile. */
body.shared-view .rbar-count{display:block !important;margin-left:16px !important;font-family:'DM Sans',sans-serif;font-size:14.5px;font-weight:600;color:#1d1d1f;white-space:nowrap;}
body.shared-view .rbar-count #rbar-tons{font-weight:800;}
@media(max-width:768px){body.shared-view .rbar-count{display:block !important;margin-left:10px !important;font-size:12.5px;}}
/* 18/08 (Ethan) : « Télécharger » AFFICHÉ à gauche du logo Excel (annule
   l'icône seule du 10/08) — le libellé est posé en JS (vue client). */
body.shared-view #cart-btn .btn-panier-txt{display:inline !important;font-size:18.5px !important;font-weight:700 !important;color:#1d1d1f !important;}
/* Téléphone (26/08) : bouton Excel de la vue client = LOGO SEUL, sans « Télécharger ». */
@media(max-width:768px){body.shared-view #cart-btn .btn-panier-txt{display:none !important;}}
/* Bouton « Modifier » (crayon) : caché partout SAUF en vue client (?s=) où il
   rouvre la liste dans le catalogue de travail après saisie du code interne. */
#edit-list-btn{display:none;}
body.shared-view #edit-list-btn{display:inline-flex !important;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:999px;background:#fff;border:1.5px solid #d2d2d7;color:#1d1d1f;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;flex-shrink:0;}
body.shared-view #edit-list-btn:hover{border-color:#1d1d1f;}
/* Téléphone : crayon seul (comme le bouton Excel), sans le mot « Modifier ». */
@media(max-width:768px){body.shared-view #edit-list-btn{padding:0 11px;}body.shared-view #edit-list-btn .edit-list-txt{display:none;}}
body.shared-view .logo-full{display:block !important;}
body.shared-view .logo-mob{display:none !important;}
body.shared-view .pbig-list{display:flex;flex-direction:column;gap:14px;}
.pbig-card{display:grid;grid-template-columns:150px 1fr;padding:0;overflow:hidden;}
.pbig-img{position:relative;background:#f4f2ee;aspect-ratio:3/4;}
.pbig-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.pbig-ref{position:absolute;left:8px;bottom:8px;background:var(--ink);color:#fff;font-family:'Bebas Neue',sans-serif;font-size:15px;letter-spacing:1px;padding:3px 8px;border-radius:5px;}
.pbig-usine{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.72);color:#fff;font-family:'Bebas Neue',sans-serif;font-size:12px;letter-spacing:.5px;padding:3px 7px;border-radius:5px;}
.pbig-body{padding:14px 18px;display:flex;flex-direction:column;gap:8px;}
.pbig-name{font-size:20px;line-height:1.1;}
.pbig-sub{font-size:13px;color:#777;margin-top:-3px;}
.pbig-chips{display:flex;flex-wrap:wrap;gap:6px;}
.pbig-chip{border:1.5px solid var(--border);border-radius:8px;background:#faf8f4;padding:5px 10px;font-size:13px;font-weight:600;color:#333;}
.pbig-price{font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:1px;}
.pbig-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border);padding-top:8px;}
@media(max-width:760px){
  .pbig-card{grid-template-columns:1fr;}
  .pbig-img{min-height:260px;aspect-ratio:4/3;}
  .pbig-body{padding:16px 18px;}
}
body.shared-view .plist-thumb{width:67px;height:55px;cursor:zoom-in;}
.plist-total{margin-top:10px;padding:12px 18px;background:var(--ink);color:#fff;font-family:'Bebas Neue',sans-serif;font-size:19px;letter-spacing:1.5px;border-radius:10px;display:flex;justify-content:flex-end;gap:26px;}
body.shared-view .plist-th-add,body.shared-view .plist-td-add,body.shared-view .add-page-btn{display:none !important;}
body.shared-view #f-refmax-top,body.shared-view .btn-head-scan{display:none !important;}

/* ── Vue client : tableau façon EXCEL (quadrillage + en-têtes bleu pastel du modèle offre) ── */
body.shared-view .plist-table{min-width:0;font-size:13.5px;}
body.shared-view .plist-table thead th{background:#b4c6e7;color:#000;border:1px solid #8ea9d2;border-bottom:1px solid #8ea9d2;padding:7px 8px;text-align:center;font-size:11px;}
body.shared-view .plist-td{border:1px solid #d9d9d9;padding:5px 8px;text-align:center;}
body.shared-view .plist-table tbody tr{border-bottom:none;}
body.shared-view .plist-table tbody tr:hover{background:#eef2fa;}
body.shared-view .plist-td-title,body.shared-view .plist-td-details{text-align:left;}
body.shared-view .plist-gsm{font-family:'DM Sans',sans-serif;font-size:13.5px;font-weight:600;letter-spacing:0;}
body.shared-view .plist-ref-badge{background:transparent;border:none;padding:0;font-family:'DM Sans',sans-serif;font-size:13.5px;font-weight:700;color:#000;}
body.shared-view .plist-qtitle{font-family:'DM Sans',sans-serif;font-size:13.5px;font-weight:700;letter-spacing:0;}
body.shared-view .plist-price{background:#a9d08e;font-weight:700;}
body.shared-view .plist-section-title{font-size:18px;border-bottom:none;padding-left:0;}
body.shared-view .plist-table tbody tr:nth-child(even){background:#f3f6fb;}
body.shared-view .plist-table tbody tr:hover{background:#e2eaf7;}
body.shared-view .body-wrap>div:last-child{padding-left:0 !important;}
body.shared-view .fab-prodix{display:none !important;}
.sc-body{padding:0;}
.sc-title{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.6px;line-height:1.1;padding:7px 8px;}
.sc-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:2px solid #000;border-radius:0 0 10px 10px;overflow:hidden;}
.sc-cell{border:.5px solid #000;padding:7px 5px;min-width:0;}
.sc-cap{font-size:9px;font-weight:700;letter-spacing:.3px;color:#222;white-space:nowrap;overflow:hidden;}
.sc-val{font-weight:800;font-size:15.5px;color:#000;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sc-val small{font-size:10px;font-weight:700;}
.load-spin{width:34px;height:34px;border:3px solid #ddd;border-top-color:var(--ink);border-radius:50%;margin:0 auto 14px;animation:loadspin 1s linear infinite;}
@keyframes loadspin{to{transform:rotate(360deg)}}
/* Vue client : la fiche produit reprend aussi le quadrillage étiquette */
body.shared-view .dspecs{grid-template-columns:repeat(3,1fr);gap:0;border:2px solid #000;border-radius:10px;overflow:hidden;}
body.shared-view .dspec-item{background:#fff;border:.5px solid #000;border-radius:0;padding:8px 10px;}
body.shared-view .dspec-lbl{color:#222;font-size:10px;letter-spacing:.5px;margin-bottom:2px;}
body.shared-view .dspec-val{font-size:19px;font-weight:800;}

/* ── Intro lien client : le semi recule, UN chariot décharge carte par carte,
   chaque carte monte se ranger AU-DESSUS du container. ── */
#ctn-splash{position:fixed;inset:0;z-index:12000;background:#fff;display:flex;align-items:center;justify-content:center;transition:opacity .5s ease,transform .5s ease;cursor:pointer;overflow:hidden;}
#ctn-splash.out{opacity:0;transform:scale(1.025);pointer-events:none;}
@media(prefers-reduced-motion:reduce){#ctn-splash{display:none;}}
.ctn-scene{position:relative;width:1360px;height:960px;flex-shrink:0;zoom:1.1;transform:translateX(-45px);}
@media(max-width:1450px),(max-height:1050px){.ctn-scene{zoom:.79;transform:translateX(-63px);}}
@media(max-width:1000px){.ctn-scene{zoom:.57;transform:translateX(-88px);}}
@media(max-width:640px){.ctn-scene{zoom:.4;transform:translateX(-125px);}}
/* Mode léger (PC faible / reduced-motion, classe posée par _ctnSplash) : on
   cache le chariot + les cartes volantes (7 couches animées les plus lourdes),
   on garde juste le camion qui arrive vite → intro courte et peu coûteuse. */
.ctn-lite .ctn-fk,.ctn-lite .ctn-slide,.ctn-lite .ctn-drop{display:none;}
.ctn-lite .ctn-truck{animation-duration:.55s;will-change:auto;}
.ctn-lite .ctn-wheel{animation-duration:.55s;}
/* — Camion — */
.ctn-truck{position:absolute;left:30px;bottom:26px;width:830px;height:420px;animation:ctnIn .85s cubic-bezier(.16,.8,.24,1) both;will-change:transform;z-index:2;}
@keyframes ctnIn{0%{transform:translate3d(-130vw,0,0);}80%{transform:translate3d(14px,0,0);}91%{transform:translate3d(-5px,0,0);}100%{transform:translate3d(0,0,0);}}
.ctn-cab{position:absolute;left:8px;bottom:40px;width:150px;height:170px;background:#fe0000;border:5px solid #111;border-radius:14px 10px 6px 6px;}
.ctn-cab-win{position:absolute;left:14px;top:14px;width:58px;height:52px;background:#f1efe9;border:4px solid #111;border-radius:6px;display:block;}
.ctn-trailer{position:absolute;left:150px;bottom:52px;width:672px;height:30px;background:#222;border:5px solid #111;border-radius:6px;}
.ctn-box{position:absolute;left:160px;bottom:84px;width:650px;height:300px;background:repeating-linear-gradient(90deg,#fe0000 0 48px,#ee0000 48px 96px);border:6px solid #111;border-radius:12px;display:flex;align-items:center;justify-content:center;}
.ctn-logo{background:#fff;border:4px solid #111;border-radius:12px;padding:16px 30px;display:flex;align-items:center;box-shadow:0 6px 0 rgba(0,0,0,.16);}
.ctn-logo img{height:76px;display:block;}
.ctn-box::after{content:'';position:absolute;right:-6px;top:-6px;bottom:-6px;width:52px;background:#d40000;border:6px solid #111;border-radius:0 12px 12px 0;animation:ctnDoor .4s ease .72s both;}
@keyframes ctnDoor{from{transform:translateX(0);background:#d40000;}to{transform:translateX(10px);background:#9c0000;}}
.ctn-wheel{position:absolute;bottom:8px;width:58px;height:58px;border-radius:50%;background:#111;border:4px solid #000;display:block;animation:ctnWheel .85s linear both;}
.ctn-wheel::before,.ctn-fk-wheel::before{content:'';position:absolute;inset:39%;border-radius:50%;background:#fff;}
@keyframes ctnWheel{from{transform:rotate(-660deg);}to{transform:rotate(0deg);}}
/* — LE chariot : navette porte ↔ recul, 3 prises, puis se gare — */
.ctn-fk{position:absolute;left:1560px;bottom:26px;width:300px;height:400px;--pick:-442px;--out:-332px;--park:-340px;animation:fkShuttle 2.5s cubic-bezier(.45,.1,.45,.9) .7s both;will-change:transform;z-index:3;}
@keyframes fkShuttle{
  0%{transform:translate3d(0,0,0);opacity:0;}
  6%{opacity:1;}
  18%{transform:translate3d(var(--pick),0,0);}
  30%{transform:translate3d(var(--pick),0,0);}
  42%{transform:translate3d(var(--out),0,0);}
  56%{transform:translate3d(var(--pick),0,0);}
  70%{transform:translate3d(var(--pick),0,0);}
  82%{transform:translate3d(var(--out),0,0);}
  100%{transform:translate3d(var(--park),0,0);}
}
.ctn-fk-body{position:absolute;left:46px;bottom:60px;width:210px;height:115px;background:#f7b500;border:4px solid #111;border-radius:10px 14px 6px 6px;}
.ctn-fk-guard{position:absolute;left:79px;bottom:165px;width:130px;height:117px;border:4px solid #111;border-radius:8px 8px 0 0;background:transparent;}
.ctn-fk-mast{position:absolute;left:13px;bottom:55px;width:20px;height:290px;background:#111;border-radius:3px;}
.ctn-fk-mast::after{content:'';position:absolute;left:-165px;bottom:10px;width:165px;height:16px;background:#111;border-radius:3px 0 0 3px;}
.ctn-fk-wheel{position:absolute;bottom:14px;width:82px;height:82px;border-radius:50%;background:#111;border:4px solid #000;display:block;animation:fkWheel 2.6s linear .7s 1;}
@keyframes fkWheel{from{transform:rotate(0);}to{transform:rotate(-1710deg);}}
/* — Les cartes : posées sur les fourches à la porte, puis montent se ranger — */
.ctn-slide{position:absolute;left:420px;bottom:104px;width:200px;height:270px;opacity:0;animation:cardSlide .45s cubic-bezier(.3,.5,.4,1) forwards;z-index:1;}
.ctn-s0{animation-delay:.85s;}
.ctn-s1{animation-delay:1.35s;}
.ctn-s2{animation-delay:1.85s;}
/* 99.9% (et pas 97%) : le fondu de sortie devient une bascule BINAIRE — sur
   machine lente qui saute des frames, un fondu de 14ms s'affichait une frame
   à opacité 0,5 = clignotement perçu au passage sur le chariot. */
@keyframes cardSlide{0%{opacity:1;transform:translate3d(0,0,0);}99.9%{opacity:1;}100%{opacity:0;transform:translate3d(520px,0,0);}}
.ctn-drop{position:absolute;left:940px;bottom:104px;width:200px;height:270px;opacity:0;transform-origin:bottom center;animation:cardHand .01s linear both,cardFly .6s cubic-bezier(.3,.65,.3,1) both;z-index:4;}
/* Relais par MICRO-CHEVAUCHEMENT (anti-clignotement machines lentes) : le drop
   apparaît 40ms AVANT la fin du slide. La courbe du slide décélère à zéro →
   dans ses 40 dernières ms il est quasi immobile à x=940, même position et
   même photo que le drop → le chevauchement est invisible, et il ne peut
   JAMAIS y avoir de frame sans carte (c'était le clignotement). cardFly +0.2s
   inchangé (la carte se pose sur les fourches puis s'envole). */
.ctn-d0{--cx:-790px;--cy:-346px;animation-delay:1.26s,1.50s;}
.ctn-d1{--cx:-525px;--cy:-346px;animation-delay:1.76s,2.00s;}
.ctn-d2{--cx:-260px;--cy:-346px;animation-delay:2.26s,2.50s;}
@keyframes cardHand{from{opacity:0;}to{opacity:1;}}
@keyframes cardFly{0%{transform:translate3d(0,0,0) scale(1);}55%{transform:translate3d(calc(var(--cx)*.6),calc(var(--cy) - 46px),0) scale(1.16);}100%{transform:translate3d(var(--cx),var(--cy),0) scale(1.32);}}
/* — Carte produit miniature — */
.ctn-item{width:100%;height:100%;border-radius:12px;border:4px solid #111;background:#fff;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 18px rgba(0,0,0,.16);}
.ctn-card-img{flex:1;background:linear-gradient(160deg,#c9ab7f 0%,#b8946a 55%,#a98457 100%);border-bottom:3px solid #111;min-height:0;}
.ctn-card-bot{background:#fff;}
.ctn-card-title{font-family:'Bebas Neue',sans-serif;font-size:19px;letter-spacing:.5px;line-height:1;padding:7px 9px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:19px;}
.ctn-card-cells{display:grid;grid-template-columns:1fr 1fr 1fr;border-top:2px solid #111;}
.ctn-cc{border:.5px solid #111;padding:6px 4px;text-align:center;min-height:29px;}
.ctn-cc b{font-size:14px;font-weight:800;color:#000;white-space:nowrap;}

body.shared-view .body-wrap{grid-template-columns:1fr !important;}
@media(max-width:900px){body.shared-view .body-wrap{grid-template-columns:1fr !important;}}
#shared-info{position:sticky;top:76px;height:fit-content;display:flex;flex-direction:column;gap:12px;padding:16px 0 0 4px;}
.si-card{background:#fff;border:1.5px solid var(--border);border-radius:12px;padding:14px 16px;}
.si-title{font-family:'Bebas Neue',sans-serif;font-size:17px;letter-spacing:1.5px;border-bottom:2px solid var(--ink);padding-bottom:6px;margin-bottom:10px;}
.si-big{font-family:'Bebas Neue',sans-serif;font-size:32px;line-height:1.1;}
.si-big small{font-size:15px;letter-spacing:1px;color:#888;}
.si-row{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;padding:3px 0;}
.si-row b{font-weight:700;white-space:nowrap;}
.si-btn{display:block;text-align:center;padding:9px 10px;border:1.5px solid var(--ink);border-radius:9px;font-weight:700;font-size:13.5px;color:var(--ink);text-decoration:none;margin-bottom:7px;transition:background .15s;}
.si-btn:hover{background:var(--off);}
.si-wa{background:#25D366;border-color:#25D366;color:#fff;}
.si-wa:hover{background:#1fb457;}
.sc-count{position:absolute;top:10px;left:10px;background:#111;color:#fff;font-family:'Bebas Neue',sans-serif;font-size:19px;letter-spacing:1px;padding:4px 11px;border-radius:7px;}
/* Fiche vue client : quadrillage copié de l'étiquette + reste en bas */
body.shared-view .dspecs,body.apple-view .dspecs{display:block;border:none;overflow:visible;margin-bottom:6px;}
.det-etq{display:grid;grid-template-columns:repeat(4,1fr);border:2.5px solid #000;border-radius:10px;overflow:hidden;}
.det-etq-cell{border:.5px solid #000;padding:9px 12px;min-width:0;}
.det-etq-lbl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:#222;white-space:nowrap;}
.det-etq-val{font-size:22px;font-weight:800;color:#000;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.det-reste{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;color:#666;}
.det-reste-item b{font-weight:700;color:#333;text-transform:uppercase;font-size:11.5px;letter-spacing:.5px;margin-right:4px;}
@media(max-width:700px){.det-etq{grid-template-columns:repeat(2,1fr);}}
body.shared-view #det-summary,body.apple-view #det-summary{display:none !important;}
body.shared-view #det-name,body.apple-view #det-name{display:none;}
.det-etq-title{font-family:'Bebas Neue',sans-serif;font-size:34px;letter-spacing:.8px;line-height:1.05;padding:12px 14px 9px;white-space:normal;}
/* Vue client : la fiche = LA CARTE EN GRAND (photo dessus, cadre étiquette dessous) */
body.shared-view .dmodal,body.apple-view .dmodal{flex-direction:column;max-width:660px;height:auto;max-height:94vh;overflow-y:auto;}
body.shared-view .dimg-col,body.apple-view .dimg-col{width:100%;height:460px;flex-shrink:0;position:relative;}
body.shared-view .dmain,body.apple-view .dmain{height:460px;}
body.shared-view .dmain img,body.apple-view .dmain img{width:100%;height:100%;object-fit:contain;position:relative;z-index:1;}
body.shared-view .dmain,body.apple-view .dmain{background:#111;overflow:hidden;}
body.shared-view .det-blur,body.apple-view .det-blur{position:absolute;inset:0;background-size:cover;background-position:center;filter:blur(24px) brightness(.72);transform:scale(1.18);}
body.shared-view .dbody,body.apple-view .dbody{width:100%;height:auto;padding:0;overflow:visible;}
body.shared-view .det-etq,body.apple-view .det-etq{border-radius:0;border:none;border-top:3px solid #000;}
body.shared-view .det-etq-cell,body.apple-view .det-etq-cell{border-width:1px;}
body.shared-view .det-reste,body.apple-view .det-reste{padding:10px 16px 4px;margin-top:0;}
body.shared-view .d-actions,body.apple-view .d-actions{padding:10px 16px 16px;}
body.shared-view .dhead-actions,body.apple-view .dhead-actions{position:absolute;top:12px;left:12px;z-index:12;}
body.shared-view .dprice-row,body.apple-view .dprice-row{padding:0 16px;}
.det-etq-wrap .det-etq-val{white-space:normal;overflow:visible;text-overflow:clip;font-size:17px;line-height:1.3;font-weight:700;}
.sc-wrap .sc-val{white-space:normal;overflow:hidden;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11.5px;line-height:1.25;}
body.shared-view .dmodal,body.apple-view .dmodal{max-width:672px;}
body.shared-view .dimg-col,body.shared-view .dmain,body.apple-view .dimg-col,body.apple-view .dmain{height:min(48vh,600px);}
/* la photo cède la place si l'écran manque de hauteur, l'étiquette reste entière */
body.shared-view .dimg-col,body.apple-view .dimg-col{flex-shrink:1;min-height:220px;}
body.shared-view .dbody,body.apple-view .dbody{flex-shrink:0;}
body.shared-view .det-etq-title,body.apple-view .det-etq-title{font-size:29px;padding:10px 14px 8px;}
body.shared-view .det-etq-cell,body.apple-view .det-etq-cell{padding:8px 12px;}
body.shared-view .det-etq .det-etq-val,body.apple-view .det-etq .det-etq-val{font-size:19px;}
body.shared-view .det-etq .det-etq-wrap .det-etq-val,body.apple-view .det-etq .det-etq-wrap .det-etq-val{font-size:16px;}
/* (08/08) Fiche = carte : DÉTAIL en sous-titre sous le titre (sans label) */
.det-etq-sub{border-top:none !important;padding-top:0 !important;padding-bottom:10px !important;}
.det-etq-sub .det-etq-val{white-space:normal !important;overflow:visible !important;text-overflow:clip !important;font-family:'DM Sans',sans-serif !important;font-size:26px !important;font-weight:800 !important;color:#000 !important;line-height:1.08;letter-spacing:-.4px;}
/* Ligne PRIX = valeur + rond « + » à droite (comme la carte, sans label « PRIX ») */
.det-etq-prix{display:flex !important;flex-direction:row;align-items:center;justify-content:space-between;gap:10px;}
.det-etq-prixval{font-size:22px !important;font-weight:800 !important;color:#000 !important;}
body.apple-view .det-etq-prixval{color:#1d1d1f !important;}
.det-etq-prix .sc-add{flex:0 0 auto;}

/* Vue client : fond BLANC épuré (fini le crème) */
body.shared-view{background:#fff;}
body.shared-view #results-bar,body.shared-view .rbar-inner{background:#fff;}

/* ── Vue client, passe ÉPURÉ (18/07) ──
   1. Fini les doubles cadres : la carte = photo nue + cadre noir, sans bordure
      grise ni ombre autour. 2. Valeurs recalibrées (tabulaires, plus de «1000…»).
   3. Détail à hauteur fixe 2 lignes → cadres alignés d'une carte à l'autre.
   4. Respiration verticale + tri discret. */
/* (18/08) Cartes ?s= = EXACTEMENT les cartes catalogue : chrome, gap, typo et
   badges hérités des règles body.apple-view .pgrid .sc-card — overrides shared
   (fond transparent, gap 26px, tailles sc-*, pastilles pbig) SUPPRIMÉS. */
/* Header vue client calé sur la largeur de la grille (05/08) */
body.shared-view .header-inner{max-width:var(--gab-head);margin-left:auto;margin-right:auto;}
body.shared-view .rbar-sel{background:#fff;border:1.5px solid #e4e4e4;border-radius:9px;font-size:13px;color:#555;}
body.shared-view .dnav-inline,body.apple-view .dnav-inline{display:none !important;}
body.shared-view .modal-bg.show .dmod-nav,body.apple-view .modal-bg.show .dmod-nav{display:flex !important;background:rgba(255,255,255,.92);color:#111;box-shadow:0 4px 14px rgba(0,0,0,.2);}
body.shared-view .dmod-prev,body.apple-view .dmod-prev{left:calc(50% - 400px);}
body.shared-view .dmod-next,body.apple-view .dmod-next{right:calc(50% - 400px);}
@media(max-width:900px){body.shared-view .dmod-prev,body.apple-view .dmod-prev{left:8px;}body.shared-view .dmod-next,body.apple-view .dmod-next{right:8px;}}
body.shared-view .dhead-actions,body.apple-view .dhead-actions{position:absolute;top:12px;left:12px;z-index:9999;}
body.shared-view .dhead-actions .dclose,body.apple-view .dhead-actions .dclose{background:#fff;width:44px;height:44px;box-shadow:0 4px 14px rgba(0,0,0,.25);}
body.shared-view .dmodal .d-actions,body.apple-view .dmodal .d-actions{display:none;}
body.shared-view .det-reste,body.apple-view .det-reste{padding:2px 16px 3px;line-height:1.1;}
body.shared-view .pgrid{grid-template-columns:repeat(4,1fr);max-width:var(--gab);margin-left:auto;margin-right:auto;}
/* Écrans très larges : 5-6 colonnes plutôt que des cartes étirées (05/08) */
@media(max-width:900px){body.shared-view .pgrid{grid-template-columns:repeat(2,1fr);}}
body.shared-view #lang-fr,body.shared-view #lang-fr-m{display:none !important;}

/* ── Thème APPLE (essai, &apple=1 sur lien client) — palette apple.com :
   fond #f5f5f7, cartes blanches sans bordure à grands arrondis, filets
   #d2d2d7, texte #1d1d1f / var(--g2), accent #FE0000. ── */
body.apple-view{background:#f5f5f7;}
body.apple-view #results-bar,body.apple-view .rbar-inner{background:#f5f5f7;}
body.apple-view header{background:#f5f5f7;border-bottom:none;}
body.apple-view .sc-card,body.apple-view .sc-card:hover{background:#fff;border:none;border-radius:18px;box-shadow:0 4px 22px rgba(0,0,0,.05);overflow:hidden;transform:none;}
body.apple-view .sc-grid{border:none;border-radius:0;background:#fff;}
body.apple-view .sc-cell{border:none;border-top:1px solid #e8e8ed;border-left:1px solid #e8e8ed;}
body.apple-view .sc-grid>.sc-cell:nth-child(-n+1){border-left:none;}
body.apple-view .sc-title{border-left:none;border-top:none;font-family:'DM Sans',sans-serif;font-weight:700;font-size:19px;letter-spacing:-.3px;text-transform:none;color:#1d1d1f;padding:12px 14px 8px;}
body.apple-view .sc-cap{color:var(--g2);font-weight:600;}
body.apple-view .sc-val{color:#1d1d1f;font-weight:700;}
body.apple-view .pbig-ref{background:rgba(255,255,255,.88);color:#1d1d1f;backdrop-filter:blur(8px);font-family:'DM Sans',sans-serif;font-weight:700;font-size:14px;border-radius:999px;}
body.apple-view .pbig-usine{background:rgba(29,29,31,.65);backdrop-filter:blur(8px);border-radius:999px;font-family:'DM Sans',sans-serif;font-size:12px;font-weight:700;}
body.apple-view .sc-count{background:#1d1d1f;border-radius:999px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;}
body.apple-view .rbar-sel{border:none;background:#fff;border-radius:999px;box-shadow:var(--sh-sm);padding:9px 14px;color:#1d1d1f;}
body.apple-view .btn-head{border:none;background:#fff;box-shadow:var(--sh-sm);border-radius:999px;}
body.apple-view #f-refmin-top{border:1px solid #e0e0e5 !important;box-shadow:var(--sh-sm);border-radius:999px !important;background:#fff !important;}
body.apple-view .dmodal{border-radius:20px;}
body.apple-view .det-etq{border-top:1px solid #e8e8ed;}
body.apple-view .det-etq-cell{border:none;border-top:1px solid #e8e8ed;border-left:1px solid #e8e8ed;padding:10px 14px;}
body.apple-view .det-etq-title{border:none;font-family:'DM Sans',sans-serif;font-weight:700;font-size:24px;letter-spacing:-.4px;text-transform:none;color:#1d1d1f;}
body.apple-view .det-etq-lbl{color:var(--g2);}
body.apple-view .det-etq-val{color:#1d1d1f;}
body.apple-view .det-reste{color:var(--g2);}
body.apple-view .dhead-actions .dclose,body.apple-view .modal-bg.show .dmod-nav{background:rgba(255,255,255,.9);backdrop-filter:blur(8px);box-shadow:0 2px 12px rgba(0,0,0,.12);}
body.apple-view .logo-img{filter:grayscale(0);}

body.shared-view .rbar-sort,body.shared-view .sort-wrap{display:none !important;}
/* Apple : lisibilité max (valeurs bien grasses, légendes plus sombres) */
body.apple-view .sc-title{font-weight:800;color:#000;}
body.apple-view .sc-cap{color:#48484a;font-weight:700;}
body.apple-view .sc-val{font-weight:800;color:#000;}
body.apple-view .sc-wrap .sc-val{font-weight:700;font-size:14.5px;}
body.apple-view .det-etq-title{font-weight:800;font-size:26px;color:#000;}
body.apple-view .det-etq-lbl{color:#48484a;font-weight:700;}
body.apple-view .det-etq-val{font-weight:800;font-size:23px;color:#000;}
body.apple-view .det-etq-wrap .det-etq-val{font-size:18px;font-weight:700;}
body.apple-view .det-reste{color:#48484a;}
body.apple-view .det-reste-item b{color:#000;}
/* (08/08 Ethan) Hauteur uniforme des bandeaux fiche = 50px ; Zone/Code = 25px */
body.apple-view .det-etq,body.shared-view .det-etq{grid-auto-rows:50px;}
body.apple-view .det-etq-cell,body.shared-view .det-etq-cell{display:flex;flex-direction:column;justify-content:center;}
body.apple-view .det-etq-prix,body.shared-view .det-etq-prix{flex-direction:row;align-items:center;justify-content:space-between;}
body.apple-view .det-etq-sub,body.shared-view .det-etq-sub{padding-top:0 !important;padding-bottom:0 !important;}
body.apple-view .det-reste,body.shared-view .det-reste{height:25px;padding-top:0;padding-bottom:0;align-items:center;}
/* Anti-coupe : la valeur (avec son unité <small>) ne doit pas être rognée en bas */
body.apple-view .det-etq-cell:not(.det-etq-sub) > .det-etq-val,body.shared-view .det-etq-cell:not(.det-etq-sub) > .det-etq-val{overflow:visible;line-height:1.3;}
/* Apple : cran au-dessus (+5 % de carte accepté) */
body.apple-view .sc-cell{padding:8px 8px;}
body.apple-view .sc-cap{font-size:10px;}
body.apple-view .sc-val{font-size:21px;}
body.apple-view .sc-val small{font-size:11.4px;}
body.apple-view .sc-title{font-size:21px;padding:13px 14px 9px;}
body.apple-view .sc-wrap .sc-val{font-size:14.7px;}
body.apple-view .sc-cell{padding:8px 5px 8px 8px;}
body.apple-view .sc-val{font-size:18.5px;letter-spacing:-.5px;}
body.apple-view .sc-cell{border-top:1px solid #c9c9ce;border-left:1px solid #c9c9ce;}
body.apple-view .det-etq{border-top:1px solid #c9c9ce;}
body.apple-view .det-etq-cell{border-top:1px solid #c9c9ce;border-left:1px solid #c9c9ce;}
body.apple-view .sc-cap,body.apple-view .det-etq-lbl{font-weight:800;color:#3a3a3c;}
/* Bouton Télécharger liste : plus de rouge — contrastes noirs/gris au survol/appui */
body.shared-view:not(.amazon-view):not(.zara-view) .btn-head-panier{background:#fff;border-color:#d2d2d7;}
body.shared-view:not(.amazon-view):not(.zara-view) .btn-head-panier .btn-panier-txt{color:#111 !important;}
body.shared-view:not(.amazon-view):not(.zara-view) .btn-head-panier:hover{border-color:#111;background:#f5f5f5;}
body.shared-view:not(.amazon-view):not(.zara-view) .btn-head-panier:active{border-color:#111;background:#e4e4e4;}
body.shared-view .btn-head-panier:focus,body.shared-view .btn-head-panier:focus-visible{outline:2px solid #111;outline-offset:1px;box-shadow:none;}
body.apple-view .sc-cap,body.apple-view .det-etq-lbl{font-size:12px;font-weight:900;color:#000;letter-spacing:.4px;}
/* Apple : fermer le cadre (droite + bas manquaient) */
body.apple-view .sc-grid{border-right:1px solid #c9c9ce;border-bottom:1px solid #c9c9ce;}
body.apple-view .det-etq{border-right:1px solid #c9c9ce;border-bottom:1px solid #c9c9ce;}

/* Apple : bas de page façon apple.com — gris clair, petits liens, filets fins */
body.apple-view footer{background:#f5f5f7;border-top:1px solid #d2d2d7;padding:24px 24px 30px;}
body.apple-view .footer-col-title{font-family:'DM Sans',sans-serif;font-weight:700;font-size:12px;letter-spacing:0;text-transform:none;color:#1d1d1f;}
body.apple-view .footer-col a,body.apple-view .footer-col span{font-size:12px;color:#424245;}
body.apple-view .footer-col a:hover{color:#1d1d1f;text-decoration:underline;}
body.apple-view .footer-bottom{border-top:1px solid #d2d2d7;color:var(--g2);}
body.apple-view .footer-bottom *{color:var(--g2);font-size:12px;font-family:'DM Sans',sans-serif;letter-spacing:0;}
body.apple-view .footer-bottom a{color:var(--g2) !important;font-family:'DM Sans',sans-serif !important;font-size:12px !important;font-weight:700;letter-spacing:0 !important;}
/* Apple : cadre extérieur complet qui suit les coins arrondis de la carte */
body.apple-view .sc-grid{border:1px solid #c9c9ce;border-radius:0 0 17px 17px;overflow:hidden;}
body.apple-view .det-etq{border:1px solid #c9c9ce;border-radius:0 0 20px 20px;overflow:hidden;}
/* Apple : teinte unifiée page/footer + logo centré en bas */
html:has(body.apple-view){background:#f5f5f7;}
body.apple-view,body.apple-view .body-wrap,body.apple-view footer{background:#f5f5f7 !important;}
body.apple-view .footer-bottom{flex-direction:column;align-items:center;gap:10px;text-align:center;}
body.apple-view .footer-bottom a{display:block;width:170px;height:28px;background:url('/img/logo.png?v=2') center/contain no-repeat;font-size:0 !important;color:transparent !important;overflow:hidden;}
/* Entrée en cascade des cartes à la fin de l'animation d'intro */
.card-in{opacity:0;animation:cardIn .55s cubic-bezier(.2,.7,.3,1) forwards;}
@keyframes cardIn{from{opacity:0;transform:translateY(28px) scale(.97);}to{opacity:1;transform:translateY(0) scale(1);}}
/* Apple : traits uniformes (technique fond + gap 1px — plus aucun bord doublé) */
body.apple-view .sc-grid{background:#c9c9ce;gap:1px;border:1px solid #c9c9ce;}
body.apple-view .sc-cell,body.apple-view .sc-title{border:none !important;background:#fff;}
body.apple-view .det-etq{background:#c9c9ce;gap:1px;border:1px solid #c9c9ce;}
body.apple-view .det-etq-cell{border:none !important;background:#fff;}
body.shared-view .footer-grid,body.apple-view .footer-grid{display:none !important;}
body.shared-view .footer-bottom,body.apple-view .footer-bottom{border-top:none;margin-top:0;padding-top:4px;}
/* Apple : la FICHE reprend exactement la typo des cartes (gras/noir/contrastes) */
body.apple-view .det-etq-title{font-weight:800;color:#000;letter-spacing:-.4px;}
body.apple-view .det-etq-lbl{font-size:13px;font-weight:900;color:#000;letter-spacing:.4px;}
body.apple-view .det-etq-val{font-weight:800;font-size:26px;color:#000;letter-spacing:-.5px;}
body.apple-view .det-etq-wrap .det-etq-val{font-size:19px;font-weight:800;letter-spacing:0;}
body.apple-view .det-reste,body.apple-view .det-reste-item b{color:#000;}
/* Apple : resserrage vertical (~7 %) — paddings seulement, tailles intactes */
body.apple-view .sc-cell{padding-top:6px;padding-bottom:6px;}
body.apple-view .sc-title{padding-top:10px;padding-bottom:7px;}
body.apple-view .sc-wrap .sc-val{min-height:1.9em;}
body.apple-view .det-etq-cell{padding-top:8px;padding-bottom:8px;}
/* Essai &bebas=1 : titres en Bebas Neue ÉPAISSIE (trait renforcé) */
body.bebas-view .sc-title,body.apple-view .sc-title{font-family:'Bebas Neue',sans-serif !important;font-weight:400 !important;font-size:27px !important;letter-spacing:.8px !important;text-transform:uppercase !important;-webkit-text-stroke:.7px #000;padding-top:8px !important;padding-bottom:4px !important;}
body.bebas-view .det-etq-title,body.apple-view .det-etq-title{font-family:'Bebas Neue',sans-serif !important;font-weight:400 !important;font-size:36px !important;letter-spacing:1px !important;text-transform:uppercase !important;-webkit-text-stroke:.9px #000;}
.det-etq-val small{font-size:13px;font-weight:800;}
body.apple-view .det-etq-val small{font-size:14px;}

/* ── Popup récap de l'offre (après l'animation d'intro) ── */
#recap-bg{position:fixed;inset:0;z-index:11000;background:rgba(0,0,0,.45);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;animation:recapFade .35s ease;}
.recap-card{background:#fff;border-radius:22px;padding:30px 34px 26px;width:480px;max-width:94vw;box-shadow:0 30px 80px rgba(0,0,0,.35);animation:recapUp .45s cubic-bezier(.2,.7,.3,1);}
.recap-title{font-family:'Bebas Neue',sans-serif;font-size:36px;letter-spacing:1px;-webkit-text-stroke:.8px #000;margin-bottom:16px;text-align:center;}
.recap-stats{display:flex;justify-content:center;gap:30px;margin-bottom:16px;}
.recap-stat{text-align:center;}
.recap-stat b{display:block;font-size:40px;font-weight:800;letter-spacing:-1px;line-height:1.05;color:#000;}
.recap-stat span{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:#555;}
.recap-prix b{color:var(--red);}
.recap-quals{border-top:1px solid #e3e3e6;padding-top:12px;margin-bottom:18px;}
.recap-q{display:flex;justify-content:space-between;font-size:14.5px;padding:4px 0;font-weight:600;color:#222;}
.recap-q b{font-weight:800;color:#000;}
.recap-go{width:100%;padding:14px;background:#111;color:#fff;border:none;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;letter-spacing:.5px;transition:background .15s;}
.recap-go:hover{background:#000;}
@keyframes recapUp{from{opacity:0;transform:translateY(26px) scale(.96);}to{opacity:1;transform:none;}}
@keyframes recapFade{from{opacity:0;}to{opacity:1;}}
/* Apple : badges réf/usine de la FICHE alignés sur ceux des cartes */
body.apple-view #det-ref-badge{background:rgba(255,255,255,.9) !important;color:#1d1d1f !important;backdrop-filter:blur(8px);border-radius:999px !important;font-weight:700 !important;font-size:14.5px !important;padding:7px 14px !important;}
body.apple-view #det-usine-badge{background:rgba(29,29,31,.68) !important;backdrop-filter:blur(8px);border-radius:999px !important;padding:7px 14px !important;}
body.apple-view #det-usine-badge span:first-child{font-size:11px !important;font-weight:700 !important;letter-spacing:1px !important;}
body.apple-view #det-usine-num{font-family:'DM Sans',sans-serif !important;font-size:16px !important;font-weight:800 !important;letter-spacing:0 !important;}
.recap-q{align-items:center;}
.recap-q-name{display:flex;flex-direction:column;line-height:1.25;}
.recap-q-name small{font-size:12px;font-weight:600;color:#8a8a8e;}
/* Apple : badges en vrai « matériau » Apple (verre dépoli saturé, texte SF-like) */
body.apple-view .pbig-ref,body.apple-view #det-ref-badge{background:rgba(255,255,255,.95) !important;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#1d1d1f !important;font-size:13px !important;font-weight:600 !important;letter-spacing:.2px !important;padding:6px 12px !important;box-shadow:0 1px 4px rgba(0,0,0,.14);border-radius:999px !important;}
body.apple-view .pbig-usine,body.apple-view #det-usine-badge{background:rgba(28,28,30,.85) !important;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:999px !important;padding:6px 12px !important;font-size:12px !important;font-weight:600 !important;letter-spacing:.2px !important;}
body.apple-view #det-usine-badge span:first-child{font-size:10px !important;font-weight:600 !important;letter-spacing:.8px !important;color:rgba(255,255,255,.75) !important;}
body.apple-view #det-usine-num{font-size:13px !important;font-weight:700 !important;}

/* Onglets segmentés façon Apple (vue client) */
#shared-tabs{display:inline-flex;background:#ebebee;border-radius:999px;padding:4px;margin:4px 0 20px;gap:2px;}
#shared-tabs button{border:none;background:transparent;padding:9px 20px;border-radius:999px;font-size:14px;font-weight:600;color:#1d1d1f;cursor:pointer;font-family:inherit;transition:background .18s,color .18s;white-space:nowrap;}
#shared-tabs button.on{background:#1d1d1f;color:#fff;}
#shared-tabs button:not(.on):hover{color:#000;}
/* Popup récap : gabarit modale Apple */
.recap-card{text-align:left;position:relative;padding:36px 40px 30px;}
.recap-x{position:absolute;top:16px;left:16px;width:36px;height:36px;border-radius:50%;background:#e8e8ed;border:none;color:#4b4b4f;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.recap-x:hover{background:#dededf;}
.recap-eyebrow{font-size:14px;font-weight:600;color:var(--g2);margin-bottom:10px;}
.recap-stats{justify-content:flex-start;}
.recap-stat{text-align:left;}
body.shared-view .dimg-col,body.apple-view .dimg-col{border-right:none;border-bottom:none;}
/* Apple : flèches de fiche = pastilles grises + chevrons (style apple.com) */
body.apple-view .modal-bg.show .dmod-nav{background:#e8e8ed;box-shadow:none;font-size:0;color:transparent;}
body.apple-view .modal-bg.show .dmod-nav:hover:not(:disabled){background:#dededf;}
body.apple-view .dmod-nav::after{content:'';width:13px;height:13px;border-right:2.5px solid var(--g2);border-top:2.5px solid var(--g2);display:block;border-radius:1px;}
body.apple-view .dmod-prev::after{transform:rotate(-135deg);margin-left:7px;}
body.apple-view .dmod-next::after{transform:rotate(45deg);margin-right:7px;}
body.apple-view .dmod-nav:hover:not(:disabled)::after{border-color:#48484a;}
body.apple-view .dhead-actions .dclose{background:#e8e8ed;box-shadow:none;color:var(--g2);font-size:15px;font-weight:600;}
body.apple-view .dhead-actions .dclose:hover{background:#dededf;color:#48484a;}

/* ══ THÈME APPLE ÉTENDU AU CATALOGUE (18/07) — mêmes codes que la vue client :
   fond #f5f5f7, blocs blancs sans bordure dure, hairlines, pilules, rouge
   réservé aux vrais accents. ══ */
/* Fond & header */
body.apple-view:not(.shared-view){background:#f5f5f7;}
body.apple-view:not(.shared-view) header{background:transparent;border-bottom:none;} /* capsule : flancs transparents (05/08) */
body.apple-view:not(.shared-view) #results-bar{background:#f5f5f7;}
body.apple-view:not(.shared-view) .header-search{background:#fff;border:none;box-shadow:var(--sh-sm);}
/* Panneau filtres */
body.apple-view .fp-head{border-bottom:1px solid #d2d2d7;}
body.apple-view .fp-title{font-family:'DM Sans',sans-serif;font-weight:800;letter-spacing:0;font-size:15px;}
body.apple-view .fg{border-bottom:none;}
body.apple-view .msd-btn{border:none;background:#fff;box-shadow:var(--sh-sm);border-radius:10px;}
body.apple-view .msd-btn:hover,body.apple-view .msd-btn.open{box-shadow:var(--sh-md);border:none;}
body.apple-view .msd-panel{border:none;border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.16);}
body.apple-view .msd-count{background:#1d1d1f;}
body.apple-view .msd-option.selected .msd-count-inline{color:#1d1d1f;background:#e8e8ed;}
body.apple-view .fpill{border:1.5px solid #d2d2d7;color:#1d1d1f;border-radius:999px;}
body.apple-view .fpill:hover{border-color:#1d1d1f;}
body.apple-view .fpill.active{background:#1d1d1f;border-color:#1d1d1f;color:#fff;}
/* Cartes catalogue */
body.apple-view .pcard{border:none;border-radius:18px;box-shadow:0 4px 22px rgba(0,0,0,.05);}
body.apple-view .pcard:hover{border:none;box-shadow:0 10px 32px rgba(0,0,0,.10);transform:translateY(-2px);}
body.apple-view .pcard-spec{background:#f5f5f7;border:none;border-radius:9px;}
body.apple-view .pcard-subtitle{color:var(--g2);}
body.apple-view .btn-add-cart{border:1.5px solid #d2d2d7;border-radius:999px;}
body.apple-view .btn-add-cart:hover{border-color:#1d1d1f;}
body.apple-view .btn-add-cart.added{background:#1d1d1f;border-color:#1d1d1f;color:#fff;}
/* Pager & états vides */
body.apple-view .pager-top{background:#ebebee;border:none;border-radius:999px;}
body.apple-view .pager-top .pnum.active{background:#1d1d1f;border:none;color:#fff;}
body.apple-view .btn-empty-reset{border-radius:999px;}
/* Fiche produit catalogue (pavés specs) */
body.apple-view .dspec-item{background:#f5f5f7;border:none;border-radius:12px;}
body.apple-view .dspec-lbl{color:var(--g2);}
body.apple-view .dspec-val{color:#1d1d1f;}
body.apple-view .btn-cart-det{border-radius:999px;}
/* Tiroir Ma Liste */
body.apple-view .drawer-totals{background:#f5f5f7;border:none;border-radius:12px;}
body.apple-view .da-action,body.apple-view .da-copy-link{border-radius:999px;}
body.apple-view #f-refmax-top{border:1px solid #e0e0e5 !important;box-shadow:var(--sh-sm);border-radius:999px !important;background:#fff !important;}
body.apple-view .rbar-sel{height:auto !important;line-height:1.3;padding:9px 28px 9px 14px !important;}

/* ---- Cartes catalogue = cartes étiquette de la vue client (18/07) ---- */
body.apple-view .sc-card .sc-body{display:flex;flex-direction:column;flex:1;}
/* Filet fantôme sous DÉTAIL (31/07) : une carte moins haute que sa voisine de
   rangée laissait la grille flotter au-dessus du bas de carte → son bord
   inférieur traçait un trait en travers. La grille remplit désormais le corps
   et c'est la rangée DÉTAIL (1fr) qui absorbe l'espace en plus. Le décor hero
   (.phero-card, 3 rangées sans DÉTAIL) est exclu. */
body.apple-view .sc-card:not(.phero-card) .sc-grid{flex:1;grid-template-rows:auto auto auto 1fr;}
body.apple-view .sc-card:not(.phero-card) .sc-grid.has-prix{grid-template-rows:auto auto auto 1fr auto;}
body.apple-view .sc-card .pcard-grp-add{background:#fff;border-top:none;margin-top:auto;}
body.apple-view .sc-foot{padding:10px 12px 12px;}
body.apple-view .sc-foot .btn-add-cart{width:100%;text-align:center;}
body.apple-view .pcard-resa-overlay{top:10px;right:10px;left:auto;background:rgba(180,83,9,.82);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);border-radius:999px;padding:6px 12px;font-size:11px;font-weight:700;letter-spacing:.4px;}

/* ---- ESSAI ?haut=1 : filtres en BARRE HORIZONTALE au-dessus de la grille (18/07) ---- */
@media(min-width:769px){
body.topbar-view .body-wrap{display:block;padding:0 16px 32px;}
body.topbar-view .filters-panel{position:static !important;display:flex !important;flex-wrap:wrap;align-items:center;gap:8px;justify-content:center;height:auto !important;overflow:visible !important;border-right:none;background:transparent;padding:14px 0 18px;}
body.topbar-view .fp-head{border-bottom:none;margin:0;padding:0;order:99;}
body.topbar-view .fp-title{display:none;}
body.topbar-view .filters-panel .fg{border:none !important;margin:0 !important;padding:0 !important;}
body.topbar-view .filters-panel .msd{width:auto;}
body.topbar-view .filters-panel .msd-btn{width:auto;padding:9px 12px 9px 14px;}
body.topbar-view .format-pills{display:flex !important;margin:0;gap:8px;}
body.topbar-view .format-pills .fpill{width:auto !important;}
body.topbar-view .msd-panel{width:auto !important;min-width:230px;max-width:340px;}
body.topbar-view .body-wrap>div:last-child{padding:12px 0 0;}
}
@media(min-width:769px){
body.topbar-view .pgrid{grid-template-columns:repeat(4,1fr);max-width:var(--gab);margin-left:auto;margin-right:auto;gap:8px;} /* PORTABLE/MacBook = 4 cartes (29/08 Ethan) */
/* Grand écran externe (≥1800px) = 6 cartes ; portable reste à 4 (12/09 Ethan) */
@media(min-width:1800px){body.topbar-view .pgrid{grid-template-columns:repeat(6,1fr);}}
/* Grand écran : 6 cartes par rangée (12/09 Ethan) */
@media(min-width:2100px){body.topbar-view .pgrid{grid-template-columns:repeat(6,1fr);}body.shared-view .pgrid{grid-template-columns:repeat(5,1fr);}}
/* Perf CLS desktop : quand on quitte le hero pour la grille, la bascule est
   synchrone mais la grille reste VIDE le temps du fetch (debounce 200ms) → le
   contenu s'effondre puis resaute quand les cartes arrivent (CLS ~0,58). On
   réserve une hauteur stable tant que la grille est vide ; dès que le spinner
   OU les cartes sont injectés (:empty ne matche plus) le min-height disparaît
   → zéro effet visuel sur la grille pleine et sur l'état « Aucun résultat ». */
body.topbar-view .pgrid:empty{min-height:calc(100vh - 230px);}
}

/* ---- Tiroir MA LISTE façon Apple (18/07) ---- */
body.apple-view .cart-drawer{background:#f5f5f7;}
body.apple-view .drawer-head{border-bottom:1px solid #d2d2d7;}
body.apple-view .drawer-title{font-size:24px;-webkit-text-stroke:.7px #000;letter-spacing:1.5px;}
body.apple-view .drawer-meta{color:var(--g2);}
body.apple-view .dh-clear-btn{background:#e8e8ed;border:none;color:#1d1d1f;font-weight:600;height:34px;}
body.apple-view .dh-clear-btn:hover{background:#dededf;color:#1d1d1f;}
body.apple-view .dh-close-btn{background:#e8e8ed;border:none;color:var(--g2);}
body.apple-view .dh-close-btn:hover{background:#dededf;color:#48484a;}
body.apple-view .ci{border:none;border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.05);margin-bottom:5px;}
body.apple-view .ci-kgs{color:#000;font-weight:800;}
body.apple-view .ci-qty-btn{border:none;background:#e8e8ed;}
body.apple-view .ci-qty-btn:hover{background:#dededf;}
body.apple-view .drawer-footer{border-top:1px solid #d2d2d7;background:#f5f5f7;}
body.apple-view .da-action{background:#1d1d1f;}
body.apple-view .da-action:hover{background:#000;}
body.apple-view .da-copy-link{background:#e8e8ed;color:#1d1d1f;}
body.apple-view .da-copy-link:hover{background:#dededf;}
/* « Recevoir le prix » (26/08) : 2 boutons empilés, WhatsApp en vert */
.da-prix-row{display:flex;flex-direction:column;}
.da-prix-wa,body.apple-view .da-prix-wa{background:#25D366 !important;color:#fff !important;}
.da-prix-wa:hover,body.apple-view .da-prix-wa:hover{background:#1da851 !important;}
body.apple-view .drawer-totals{background:#fff;border:none;box-shadow:0 2px 10px rgba(0,0,0,.05);}
body.apple-view .dt-val{color:#000;}
body.apple-view .btn-drawer-browse{border-radius:999px;}

/* Recommencer : bouton pilule avec fleche, a droite de Sans reserve (topbar) */
.fp-reset-ico,.fp-reset-t2{display:none;}
body.topbar-view .fp-reset{display:inline-flex;align-items:center;justify-content:center;background:#e8e8ed !important;border-radius:999px;width:38px;height:38px;padding:0 !important;color:#1d1d1f !important;}
body.topbar-view .fp-reset:hover{background:#dededf !important;}
body.topbar-view .fp-reset .fp-reset-ico{display:block;width:16px;height:16px;}
body.topbar-view .fp-reset-t1,body.topbar-view .fp-reset-t2{display:none;}
body.topbar-view .fpill-photo,body.topbar-view .fpill-resa{font-size:13px !important;padding:7px 14px !important;gap:6px !important;}

/* + rond dans la ligne DETAIL des cartes catalogue (18/07) */
body.apple-view .sc-det-row{display:flex;align-items:center;gap:8px;}
body.apple-view .sc-add{flex-shrink:0;width:34px;height:34px;border-radius:999px;border:1.5px solid #1d1d1f;background:#1d1d1f;cursor:pointer;font-size:0 !important;display:flex;align-items:center;justify-content:center;padding:0;transition:border-color .15s,background .15s;}
body.apple-view .sc-add svg{display:none;}
body.apple-view .sc-add::before{content:'+';font-size:21px;font-weight:500;color:#fff;font-family:'DM Sans',sans-serif;line-height:1;}
body.apple-view .sc-add:hover{background:#000;border-color:#000;}
body.apple-view .sc-add.added{background:#FE0000;border-color:#FE0000;}
/* Cellule + de la carte (29/08) : bouton centré dans sa case (droite) */
body.apple-view .pgrid .sc-card .sc-price-add{justify-content:center !important;}
body.apple-view .pgrid .sc-card .sc-price-add .sc-add{margin-left:0 !important;}
/* 17/08 (Ethan) : + devient POUBELLE quand l'article est dans la liste (re-clic = retire). */
body.apple-view .sc-add.added::before{content:'';width:17px;height:17px;background:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolyline%20points='3%206%205%206%2021%206'/%3E%3Cpath%20d='M19%206v14a2%202%200%200%201-2%202H7a2%202%200%200%201-2-2V6m3%200V4a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v2'/%3E%3Cline%20x1='10'%20y1='11'%20x2='10'%20y2='17'/%3E%3Cline%20x1='14'%20y1='11'%20x2='14'%20y2='17'/%3E%3C/svg%3E") center/contain no-repeat;}

/* topbar UNE ligne (v2, 18/07) : tri = pastille avec menu, + page et pager en bout de barre, tout compacte */
body.topbar-view .filters-panel{gap:6px;}
body.topbar-view .filters-panel .msd-btn{font-size:14px;padding:9px 10px 9px 12px;}
body.topbar-view .fpill{padding:7px 10px !important;}
body.topbar-view .fpill-photo,body.topbar-view .fpill-resa{padding:7px 10px !important;font-size:12.5px !important;}
body.topbar-view .fp-reset,body.topbar-view .filters-panel #add-page-btn{width:36px;height:36px;}
body.topbar-view .rbar-sort{display:none;}
body.topbar-view #tb-sort{order:100;width:auto;}
body.topbar-view .tb-sort-btn{width:56px !important;height:38px !important;padding:0 !important;justify-content:center;border-radius:999px;}
body.topbar-view .filters-panel #add-page-btn{order:-1;border:none;background:#fff;box-shadow:var(--sh-sm);border-radius:999px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;}
body.topbar-view .filters-panel .pager-top{order:-1;margin:0;}

/* Panneau Details a deux niveaux : familles puis options (18/07) */
.msd-group-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;color:var(--ink);border-top:1.5px solid #222;}
.msd-group-row:first-child{border-top:none;}
.msd-group-row:hover{background:#f5f5f7;}
.mgr-right{display:flex;align-items:center;gap:7px;}
.mgr-arrow{color:#a1a1a6;font-size:17px;line-height:1;}
.mgr-nsel{background:#1d1d1f;color:#fff;border-radius:999px;font-size:11px;font-weight:700;padding:2px 8px;line-height:1.4;}
/* Plage Laize/Ø/Poids affichée à droite du titre de section (28/08, comme Grammages) */
.mgr-range{color:var(--g2,#6e6e73);font-size:13px;font-weight:700;white-space:nowrap;}
.gsl-host{display:block;}
/* Popup FLOTTANT des sections avancées (08/08) : options en dropdown sous la ligne */
.adv-pop{background:#fff;border:1px solid var(--hairline);border-radius:10px;box-shadow:var(--sh-md);max-height:340px;overflow-y:auto;padding:4px 2px;margin-top:2px;}
.adv-pop .msd-search-wrap{position:sticky;top:0;background:#fff;z-index:2;padding:2px 2px 4px;}
@media(min-width:769px){.adv-pop{position:absolute;left:0;right:0;top:0;z-index:60;margin-top:0;}}
.msd-back-row{display:none;align-items:center;gap:7px;padding:10px 12px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;color:var(--ink);border-bottom:1px solid #eee;position:sticky;top:0;background:#fff;z-index:2;}
.msd-back-row:hover{background:#f5f5f7;}
.msd-back-ar{font-size:17px;line-height:1;}
/* topbar : pilules Bobine/Format retirees, le + page prend leur place en tete (18/07) */
body.topbar-view .filters-panel .fg:has([data-format]){display:none !important;}
/* topbar : SANS PHOTO et RESERVE retires, restent PHOTO et DISPO (18/07) */
body.topbar-view .fpill-photo[data-photo="without"],body.topbar-view .fpill-resa[data-resa="with"]{display:none !important;}
/* Album photo : bouton header (ex-tiroir), cache en vue client */
body.shared-view #album-photo-btn{display:none !important;}

/* topbar 2e ligne : actions + tags des filtres actifs, visible seulement si filtre pose (18/07) */
body.topbar-view #topbar-row2{display:none;align-items:center;justify-content:flex-start;flex-wrap:nowrap;gap:8px;padding:2px 0 10px;max-width:var(--gab);margin-left:auto;margin-right:auto;}
body.topbar-view #topbar-row2:has(.fchip){display:flex;}
body.topbar-view #topbar-row2 .filter-chips{display:flex !important;flex:1;min-width:0;flex-wrap:wrap;justify-content:center;margin:0;padding:0;max-width:none;gap:6px;}
body.topbar-view #topbar-row2 .fchip{background:#fff;border:none;box-shadow:var(--sh-sm);color:#1d1d1f;font-size:13px;font-weight:600;padding:7px 10px 7px 14px;border-radius:999px;}
body.topbar-view #topbar-row2 .fchip button{color:var(--g2);font-size:15px;}
body.topbar-view #topbar-row2 .fchip button:hover{color:#1d1d1f;}
/* header : hover neutre (pas de rouge) sur Album photo / Liste en theme Apple */
body.apple-view .btn-head:hover{border-color:#1d1d1f;color:var(--ink2);background:#f5f5f7;}
/* Album photo et Liste : largeur fixe 125px */

/* header : recherche centree en absolu = vraie symetrie logo/boutons */
body.apple-view .header-inner{position:relative;}
body.apple-view .hright{margin-left:auto;}

/* Toasts facon Apple : pilule blanche depolie, texte sombre, sans lisere rouge */
body.apple-view .toast{background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#1d1d1f;border:none;border-left:none;border-radius:999px;font-size:14px;font-weight:600;padding:12px 22px;box-shadow:0 8px 30px rgba(0,0,0,.18);}
body.topbar-view #topbar-row2 #tb-sort{margin-left:auto;}
/* topbar : menu avec selection active = liseré noir, libellé fixe */
body.topbar-view .msd-btn.has-sel{box-shadow:0 0 0 1.5px #1d1d1f,0 1px 6px rgba(0,0,0,.06);}
/* topbar : bouton Recommencer retire (les tags ont chacun leur croix) */
body.topbar-view .fp-head{display:none !important;}

/* menus : option cochee en NOIR (plus de rouge) en theme Apple ; Tout effacer retire du topbar */
body.apple-view .msd-option.selected{color:#1d1d1f;background:#f5f5f7;}
body.apple-view .msd-option.selected .msd-check{background:#1d1d1f;border-color:#1d1d1f;box-shadow:0 0 0 3px rgba(0,0,0,.08);}
body.topbar-view .chips-clear{display:none !important;}

/* + page facon Apple : jamais de rouge — hover noir, etat "tout ajouté" = noir avec x (18/07) */
body.apple-view .vt-toggle-btn.add-page-btn:hover{background:#1d1d1f;color:#fff;border-color:#1d1d1f;}
body.apple-view .vt-toggle-btn.add-page-btn.all-in{background:#1d1d1f;border-color:#1d1d1f;color:#fff;}
body.apple-view .vt-toggle-btn.add-page-btn.all-in svg{display:block;transform:rotate(45deg);}

/* ---- Header CAPSULE FLOTTANTE facon apple.com (18/07) : barre blanche depolie
   detachee du haut, Liste = bouton bleu rempli (Acheter), Album photo = contour (Decouvrir) ---- */
@media(min-width:769px){
body.apple-view header{background:transparent;border-bottom:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;top:10px;padding:0 16px;} /* capsule aussi en vue client (05/08) */
body.apple-view .header-inner{background:rgba(255,255,255,.88);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);border-radius:20px;box-shadow:var(--sh-md);max-width:var(--gab-head);margin:0 auto;padding:0 20px;height:58px;}
body.apple-view:not(.shared-view) #cart-btn{background:#fff;border:1px solid var(--g3);color:#1d1d1f;}
body.apple-view:not(.shared-view) #cart-btn:hover{background:#f5f5f7;border:1px solid var(--g3);color:#1d1d1f;}
body.apple-view:not(.shared-view) #cart-btn .btn-panier-txt{color:#1d1d1f;}
body.apple-view:not(.shared-view) #cart-btn .cart-badge{background:#1d1d1f;color:#fff;}
body.apple-view:not(.shared-view) #album-photo-btn{background:#fff;border:1.5px solid #d2d2d7;color:#1d1d1f;}
body.apple-view:not(.shared-view) #album-photo-btn:hover{border-color:var(--g3);background:#fff;color:#1d1d1f;}
}
/* ── Bouton OFFRE (22/07) : sélections préfaites par qualité de papier ── */
#offre-wrap,#fab-wrap{position:relative;display:flex;align-items:center;margin-right:8px;}
#offre-btn .offre-arrow,#fab-btn .offre-arrow{font-size:12px;line-height:1;margin-left:2px;transition:transform .15s;}
#offre-btn.open .offre-arrow,#fab-btn.open .offre-arrow{transform:rotate(180deg);}
body.apple-view:not(.shared-view) #offre-btn,body.topbar-view #offre-btn,body.apple-view:not(.shared-view) #fab-btn,body.topbar-view #fab-btn{background:#fff;border:none;box-shadow:var(--sh-sm);color:#1d1d1f;}
body.apple-view:not(.shared-view) #offre-btn:hover,body.topbar-view #offre-btn:hover,body.apple-view:not(.shared-view) #fab-btn:hover,body.topbar-view #fab-btn:hover{background:#fff;border:none;box-shadow:var(--sh-md);color:#1d1d1f;}
body.shared-view #offre-wrap,body.shared-view #fab-wrap{display:none !important;}
.offre-menu{position:absolute;top:calc(100% + 10px);right:0;background:#fff;border:1px solid #e8e8ed;border-radius:20px;box-shadow:var(--sh-lg);padding:6px;min-width:270px;max-width:calc(100vw - 16px);max-height:min(74vh,660px);overflow-y:auto;overscroll-behavior:contain;display:none;z-index:3000;}
.offre-menu.show{display:block;}
/* Segment FAB|LOTS du popup Quantité masqué (pools fusionnés, demande Ethan 08/08) */
#qty-seg{display:none !important;}
/* Bandeau « PRIX DÉPART USINE » de la fiche produit retiré (demande Ethan 08/08) */
#det-price-row{display:none !important;}
.offre-load{padding:14px;font-family:'DM Sans',sans-serif;font-size:13px;color:var(--g2);}
.offre-item{display:flex;align-items:baseline;gap:12px;width:100%;padding:10px 14px;border:none;background:none;border-radius:10px;font-family:'DM Sans',sans-serif;font-size:14.5px;font-weight:700;color:#1d1d1f;cursor:pointer;text-align:left;}
.offre-item .offre-lbl{flex:1;}
.offre-item small{font-size:12px;font-weight:600;color:var(--g2);white-space:nowrap;}
.offre-item:hover{background:#f5f5f7;}
/* Segment FAB / STOCK en haut du menu (même style que le popup Quantité) */
.offre-seg{display:flex;gap:2px;background:#f0f0f2;border-radius:999px;padding:3px;margin:2px 6px 6px;}
.offre-seg-btn{flex:1;padding:7px 0;border:none;border-radius:999px;background:transparent;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;letter-spacing:.3px;color:var(--g2);cursor:pointer;}
.offre-seg-btn.on{background:#fff;color:#1d1d1f;box-shadow:var(--sh-sm);}
.offre-seg-btn:disabled{opacity:.4;cursor:default;}
/* Offre (niveau 2) : sous-en-tête qualité×forme + lignes par bande de grammage */
.offre-seg-forme{margin-top:0;}
/* L'intro container a SA PROPRE mise à l'échelle (zoom .ctn-scene par palier
   de viewport) : on ANNULE le zoom global dessus, sinon les deux se cumulent
   et le camion sort du cadre en très grand écran (05/08). */
#ctn-splash{zoom:calc(1/var(--fitz,1));}
.offre-chev-us{margin-left:2px;color:#c7c7cc;font-weight:700;font-size:17px;line-height:1;padding:2px 6px;border-radius:8px;display:inline-block;transition:transform .15s,color .15s;}
.offre-chev-us:hover{color:#1d1d1f;background:#f5f5f7;}
.offre-chev-us.open{transform:rotate(90deg);color:#1d1d1f;}
.offre-usine{padding-left:28px;}
#fab-menu{min-width:400px;}
.fab-us-hdr .offre-lbl{font-weight:800;}
.fab-offre{padding-left:46px;}
.fab-offre .offre-lbl{font-weight:600;font-size:13px;color:var(--g1);white-space:nowrap;}
.offre-usine .offre-lbl{font-weight:600;font-size:13.5px;color:var(--g1);}
/* ── Bouton − de retrait en vue client (équipe seulement) : même gabarit que
   le + des cartes catalogue, calé en bas à droite de la carte ── */
body.apple-view .sc-card{position:relative;}
/* (18/08) sc-moins (− retrait vue client) : plus d'ancrage absolu — il vit dans
   la ligne PRIX comme le + du catalogue (styles .sc-price-main .sc-add). */
.offre-offer{padding:9px 14px;}
.offre-offer .offre-lbl small{font-size:11px;font-weight:700;letter-spacing:.3px;color:#a1a1a6;margin-left:4px;}
/* + page (2e ligne) : rond BLEU Apple assorti au bouton Liste */
body.topbar-view #topbar-row2 #add-page-btn{border:none;background:#1d1d1f;color:#fff;border-radius:999px;width:36px;height:36px;min-width:36px;display:flex;align-items:center;justify-content:center;margin:0;padding:0;box-shadow:var(--sh-md);}
body.topbar-view #topbar-row2 #add-page-btn:hover{background:#333;color:#fff;border:none;}
/* 21/07 (Ethan) : le + bleu reste TOUJOURS le + bleu — plus d'état sombre
   trash/croix quand tout est en liste (le clic ouvre le popup Quantité de
   toute façon ; retirer = poubelle du header). */
body.topbar-view #topbar-row2 #add-page-btn.all-in{background:#1d1d1f;color:#fff;box-shadow:var(--sh-md);}
body.topbar-view #topbar-row2 #add-page-btn.all-in::before{display:none;content:none;}
body.topbar-view #topbar-row2 #add-page-btn.all-in svg{display:block;transform:none;}

/* topbar : plus de pagination (scroll infini) */
body.topbar-view .pager,body.topbar-view .pager-top{display:none !important;}
/* catalogue : badges ref / usine retires des photos de cartes (18/07) — la vue client les garde */
body.apple-view:not(.shared-view) .pcard .pbig-ref,body.apple-view:not(.shared-view) .pcard .pbig-usine{display:none;}

/* topbar : DEUX largeurs de bouton unifiees (18/07) — 96px standard, 134px pour les longs */
body.topbar-view .filters-panel .msd-btn{width:96px;justify-content:center;padding:9px 8px;box-sizing:border-box;}
body.topbar-view #sb-msd-type .msd-btn,body.topbar-view #sb-msd-grammage .msd-btn,body.topbar-view #sb-msd-diametre .msd-btn,body.topbar-view #sb-msd-format .msd-btn{width:134px;}
body.topbar-view .format-pills .fpill-photo,body.topbar-view .format-pills .fpill-resa{width:96px !important;justify-content:center !important;box-sizing:border-box;}
/* topbar : texte + fleche centres dans les pilules a largeur fixe */
body.topbar-view .filters-panel .msd-btn-label{flex:0 1 auto;}
/* catalogue : compteur articles/tonnage retire du header (la vue client garde le sien) */
body.apple-view:not(.shared-view) #rbar-count{display:none !important;}

/* Album photo / Liste : compacts facon Decouvrir / Acheter d'apple.com (18/07) */
body.apple-view:not(.shared-view) #album-photo-btn{border:1px solid var(--g3);background:#fff;color:#1d1d1f;height:36px;padding:0 16px;font-weight:400;}
body.apple-view:not(.shared-view) #album-photo-btn:hover{border-color:#1d1d1f;background:#fff;}
body.apple-view:not(.shared-view) #cart-btn{height:36px;padding:0 16px;width:auto;border-radius:999px;}
body.apple-view:not(.shared-view) #cart-btn svg{display:none;}
/* …sauf l'icône PARTAGER qui remplace le texte « Liste » quand la sélection
   est non vide (spécificité > les deux règles display:none ci-dessus/mobile). */
body.apple-view:not(.shared-view) #cart-btn svg.cart-share-ico,body.topbar-view #cart-btn svg.cart-share-ico{display:block;}
body.apple-view:not(.shared-view) #cart-btn .btn-panier-txt{font-size:18.5px !important;font-weight:700 !important;} /* 18/08 : alignée sur Offre (l'ancienne 14px/400 écrasait tout) */
body.apple-view:not(.shared-view) #album-photo-btn,body.apple-view:not(.shared-view) #cart-btn{border-radius:999px;}
/* + des cartes : survol BLEU */
body.apple-view .sc-add:hover{border-color:#1d1d1f;background:#1d1d1f;}
body.apple-view .sc-add:hover::before{color:#fff;}
/* badge x N : blanc translucide discret */
body.apple-view .sc-count{background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#1d1d1f;font-size:12px;font-weight:600;box-shadow:var(--sh-sm);}
/* badge RESERVE : pastille blanche translucide, texte ambre — plus discret */
body.apple-view .pcard-resa-overlay{background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#b45309;font-size:10.5px;font-weight:700;letter-spacing:.5px;box-shadow:var(--sh-sm);padding:5px 10px;}
/* Poids = section du rail (curseur comme Grammages) — visible */
/* Ref article / Max : champs gris Apple, lisibles dans la capsule blanche */
body.apple-view:not(.shared-view) #f-refmin-top,body.apple-view:not(.shared-view) #f-refmax-top{background:#fff !important;border:1px solid #e0e0e5 !important;box-shadow:var(--sh-sm) !important;}
body.apple-view #f-refmin-top::placeholder,body.apple-view #f-refmax-top::placeholder{color:var(--g2);}
/* toasts : rappel de marque — texte + contour ROUGE Prodi sur blanc depoli */
body.apple-view .toast{color:#1d1d1f;border:1px solid rgba(0,0,0,.22);font-weight:700;}
/* badges x N et RESERVE : +5 % */
body.apple-view .sc-count{font-size:12.6px;padding:4px 11.5px;}
body.apple-view .pcard-resa-overlay{font-size:11px;padding:5.5px 10.5px;}
/* topbar : Details juste avant Ref usine (18/07) */
body.topbar-view .filters-panel .fg:has(#sb-msd-details){order:5;}
/* Grammages JUSTE au-dessus de Filtres avancés (08/08) : entre Détails(5) et tb-adv(9) */
body.topbar-view .filters-panel .fg:has(#sb-msd-grammage){order:7;}
body.topbar-view .filters-panel .fg:has(#sb-msd-laize),body.topbar-view .filters-panel .fg:has(#sb-msd-diametre),body.topbar-view .filters-panel .fg:has(#sb-msd-poids){order:10;}
/* Dimensions (quand elle remonte dans la barre) APRÈS Détails (08/08) */
body.topbar-view .filters-panel .fg:has(#sb-msd-format){order:6;}
body.topbar-view .filters-panel .fg:has(#sb-msd-usine){display:none !important;}
body.topbar-view .filters-panel .fg:has(.fpill-photo){display:none !important;}
/* Filtres avances : en bout de barre */
body.topbar-view #tb-adv{order:9;width:auto;}
body.topbar-view #tb-adv .msd-btn{width:auto;padding:9px 14px;}

/* topbar : la zone de filtres (barre + tags) COLLE sous le header au scroll (18/07) */
@media(min-width:769px){
body.topbar-view .body-wrap>.sidebar-col{position:sticky;top:52px;z-index:90;background:transparent;pointer-events:none;}
body.topbar-view .body-wrap>.sidebar-col button,body.topbar-view .body-wrap>.sidebar-col .msd,body.topbar-view .body-wrap>.sidebar-col .fchip,body.topbar-view .body-wrap>.sidebar-col input{pointer-events:auto;}
}

/* Effet VOL (18/07) : pilules translucides depolies, les articles defilent derriere */
body.topbar-view .filters-panel .msd-btn,body.topbar-view .fp-reset,body.topbar-view .tb-sort-btn,body.topbar-view #topbar-row2 .fchip{background:rgba(255,255,255,.75);-webkit-backdrop-filter:blur(16px) saturate(170%);backdrop-filter:blur(16px) saturate(170%);}
body.topbar-view .filters-panel .msd-btn:hover{background:rgba(255,255,255,.95);}

/* + et tri : ancres ABSOLUES sur la ligne de filtres — la ligne des tags ne
   réserve plus leur hauteur, la grille commence juste sous les tags (18/07) */
/* + et tri aux EXTRÉMITÉS de la barre header (05/08) : ancrage en % sur les
   bords de la capsule (--gab-head) — les % restent justes sous le zoom global,
   contrairement aux vw */
body.topbar-view #topbar-row2 #add-page-btn{position:absolute;left:max(8px,calc(50% - var(--gab-head)/2));top:15px;margin:0;}
body.topbar-view #topbar-row2 #tb-sort{position:absolute;right:max(8px,calc(50% - var(--gab-head)/2));top:15px;margin:0;}
body.topbar-view #topbar-row2{padding:0 24px 10px;}

/* ═══════ HERO PRODIX — page d'arrivée Base44 × Apple (18/07) ═══════ */
body.topbar-view #prodix-hero{position:relative;min-height:calc(100vh - 230px);display:flex;align-items:center;justify-content:center;overflow:hidden;background:#f5f5f7;border-radius:0 0 28px 28px;margin-bottom:28px;}
body.topbar-view .phero-tapis{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:26px;pointer-events:none;user-select:none;}
body.topbar-view .phero-tapis::before,body.topbar-view .phero-tapis::after{content:'';position:absolute;left:0;right:0;height:17%;z-index:2;}
body.topbar-view .phero-tapis::before{top:0;background:linear-gradient(to bottom,#f5f5f7,rgba(245,245,247,0));}
body.topbar-view .phero-tapis::after{bottom:0;background:linear-gradient(to top,#f5f5f7,rgba(245,245,247,0));}
body.topbar-view .phero-rail{overflow:hidden;opacity:.55;}
/* gap:0 : l'espacement vit DANS .phero-set (gap 18 + padding-right 18) pour
   que translateX(-50%) tombe exactement sur la frontière entre les 2 copies. */
body.topbar-view .phero-piste{display:flex;gap:0;width:max-content;will-change:transform;}
body.topbar-view .phero-set{display:flex;gap:18px;padding-right:18px;flex:0 0 auto;}
body.topbar-view .phero-rail-h .phero-piste{animation:phero-defile 84s linear infinite;}
body.topbar-view .phero-rail-b .phero-piste{animation:phero-defile 66s linear infinite reverse;}
@keyframes phero-defile{from{transform:translateX(0);}to{transform:translateX(-50%);}}
body.topbar-view .phero-card{flex:0 0 auto;width:272px;cursor:default;}
body.topbar-view .phero-card .pcard-img{height:132px;}
body.topbar-view .phero-card .sc-title{font-size:19px !important;padding:7px 10px 3px !important;-webkit-text-stroke:.4px #000;}
body.topbar-view .phero-card .sc-cap{font-size:9px;letter-spacing:.3px;}
body.topbar-view .phero-card .sc-val{font-size:13.5px;letter-spacing:0;}
body.topbar-view .phero-card .sc-val small{font-size:9px;}
body.topbar-view .phero-card .sc-cell{padding:5px 6px !important;}
body.topbar-view .phero-voile{position:absolute;inset:0;background:rgba(245,245,247,.6);}
body.topbar-view .phero-inner{position:relative;z-index:2;width:100%;max-width:780px;padding:56px 24px 72px;text-align:center;}
body.topbar-view .phero-title{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:clamp(48px,6.5vw,88px);line-height:.94;letter-spacing:.012em;color:#1d1d1f;-webkit-text-stroke:.7px #000;margin:0 0 16px;}
body.topbar-view .phero-sub{font-size:clamp(15px,1.5vw,18.5px);font-weight:500;color:var(--g2);line-height:1.45;max-width:540px;margin:0 auto 34px;}
body.topbar-view .phero-box{max-width:700px;margin:0 auto;background:#fff;border-radius:24px;border:1px solid rgba(0,0,0,.04);box-shadow:0 24px 60px rgba(0,0,0,.09),0 2px 8px rgba(0,0,0,.05);padding:18px 18px 13px;text-align:left;transition:border-color .18s,box-shadow .18s;}
body.topbar-view .phero-box:focus-within{border-color:rgba(254,0,0,.5);box-shadow:0 24px 60px rgba(0,0,0,.09),0 0 0 4px rgba(254,0,0,.12);}
body.topbar-view .phero-box textarea{width:100%;min-height:56px;resize:none;border:0;outline:0;background:transparent;font-family:'DM Sans',sans-serif;font-size:17px;font-weight:500;color:#1d1d1f;line-height:1.5;box-sizing:border-box;}
body.topbar-view .phero-box textarea::placeholder{color:#a1a1a6;}
body.topbar-view .phero-bar{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:11px;border-top:1px solid #f0f0f2;}
body.topbar-view .phero-brand{display:inline-flex;align-items:center;gap:8px;}
body.topbar-view .phero-brand img{width:28px;height:28px;border-radius:999px;display:block;box-shadow:var(--sh-sm);}
body.topbar-view .phero-brand b{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:17px;letter-spacing:.06em;color:#1d1d1f;}
body.topbar-view .phero-brand em{font-style:normal;font-size:12.5px;font-weight:500;color:var(--g2);}
body.topbar-view .phero-send{width:44px;height:44px;border-radius:999px;border:0;background:#111;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .12s;padding:0;}
body.topbar-view .phero-send:hover{background:#333;transform:scale(1.05);}
body.topbar-view .phero-send:active{transform:scale(.94);}
body.topbar-view .phero-pills{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px;}
body.topbar-view .phero-pill{border:0;border-radius:999px;background:#fff;box-shadow:var(--sh-sm);padding:10px 17px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;color:#1d1d1f;cursor:pointer;transition:background .15s,transform .1s;}
body.topbar-view .phero-pill:hover{background:#e8e8ed;}
body.topbar-view .phero-pill:active{transform:scale(.97);}
body.topbar-view .phero-fade{position:absolute;z-index:3;left:0;right:0;bottom:0;height:120px;background:linear-gradient(to bottom,rgba(245,245,247,0),#f5f5f7 88%);pointer-events:none;}
@media (prefers-reduced-motion:reduce){body.topbar-view .phero-piste{animation:none !important;transform:translateX(-15%);}}
/* landing hero seul : fab PRODIX retire (le hero EST l'entree PRODIX) */
body.topbar-view .fab-prodix{display:none !important;}
/* hero : logo PRODIX sur pastille translucide (remplace titre+sous-titre) */
body.topbar-view .phero-logo{width:150px;height:150px;margin:-30px auto 28px;border-radius:50%;background:rgba(255,255,255,.65);-webkit-backdrop-filter:blur(20px) saturate(170%);backdrop-filter:blur(20px) saturate(170%);box-shadow:0 8px 30px rgba(0,0,0,.10);display:flex;align-items:center;justify-content:center;}
body.topbar-view .phero-logo img{width:114px;height:114px;object-fit:contain;}
/* boite hero sur UNE ligne : texte et envoyer alignes */
body.topbar-view .phero-box-row{display:flex;align-items:center;gap:12px;padding:10px 10px 10px 24px;border-radius:999px;}
body.topbar-view .phero-box-row textarea{flex:1;min-height:24px;height:24px;overflow:hidden;white-space:nowrap;margin:0;}
body.topbar-view .phero-box-row .phero-send{flex-shrink:0;}
/* Pilule du HERO (pas celle du panneau conversation) : +10 % et plus en avant
   (demande Ethan 20/07) — desktop seulement, le mobile garde sa version compacte. */
@media(min-width:769px){
  /* Contour marqué (la pilule blanche se fondait dans le nuage blanc) :
     liseré gris franc façon Apple + ombre de contact qui dessine la silhouette. */
  /* Contour NOIR de la barre de saisie (demande Ethan 20/07), fond blanc neige. */
  body.topbar-view .phero-inner>.phero-box{max-width:770px;background:#fff;border:2px solid #111;box-shadow:0 2px 7px rgba(0,0,0,.10),0 12px 34px rgba(0,0,0,.11),0 30px 72px rgba(0,0,0,.09);}
  body.topbar-view .phero-inner>.phero-box-row{padding:12px 12px 12px 26px;gap:13px;}
  body.topbar-view .phero-inner>.phero-box textarea{font-size:19px;}
  body.topbar-view .phero-inner>.phero-box .phero-send{width:48px;height:48px;}
  body.topbar-view .phero-inner>.phero-box .phero-send svg{width:20px;height:20px;}
  body.topbar-view .phero-inner>.phero-box .phero-attach{width:42px;height:42px;}
  /* « Nuage » : grand voile blanc en dégradé radial derrière la pilule — les
     rails s'estompent doucement autour d'elle (net au centre, fondu au bord).
     Un simple gradient = peint une fois, zéro coût GPU. */
  /* PAS de z-index sur la barre : sinon elle devient son propre contexte
     d'empilement et le ::before z-index:-1 passe AU-DESSUS de son fond (barre
     voilée par le nuage, vécu 20/07). Sans z-index, le pseudo rejoint le
     contexte de .phero-inner (z:2) → nuage DERRIÈRE toute la barre, devant les rails. */
  body.topbar-view .phero-inner>.phero-box{position:relative;}
  body.topbar-view .phero-inner>.phero-box::before{content:'';position:absolute;inset:-140px -220px;border-radius:50%;background:radial-gradient(closest-side,rgba(245,245,247,.98) 42%,rgba(245,245,247,.88) 66%,rgba(245,245,247,0) 100%);z-index:-1;pointer-events:none;}
}
/* chat PRODIX integre au hero */
body.topbar-view .phero-chat{display:flex;flex-direction:column;gap:10px;max-width:700px;margin:0 auto 14px;text-align:left;max-height:48vh;overflow-y:auto;padding:18px;background:rgba(255,255,255,.85);-webkit-backdrop-filter:blur(24px) saturate(170%);backdrop-filter:blur(24px) saturate(170%);border-radius:24px;box-shadow:0 16px 50px rgba(0,0,0,.10);}

/* ── VRAIE interface de conversation PRODIX dans le hero (18/07) ── */
body.topbar-view .phero-panel{display:flex;flex-direction:column;max-width:1080px;height:calc(100vh - 215px);min-height:560px;margin:0 auto;background:#fff;border-radius:26px;box-shadow:0 24px 70px rgba(0,0,0,.14);overflow:visible;position:relative;text-align:left;}
body.topbar-view .phero-panel-head{position:absolute;top:-36px;right:22px;left:auto;transform:none;width:78px;height:78px;padding:0;border:none;border-radius:50%;background:rgba(255,255,255,.32);-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);box-shadow:0 8px 26px rgba(0,0,0,.10);display:flex;align-items:center;justify-content:center;z-index:5;}
body.topbar-view .phero-panel-head>img{width:58px;height:58px;object-fit:contain;margin-top:9px;}
body.topbar-view .phph-t b{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:18px;letter-spacing:.06em;color:#1d1d1f;display:block;line-height:1;}
body.topbar-view .phph-t span{font-size:12px;color:var(--g2);display:block;margin-top:2px;}
body.topbar-view .phero-new{margin-left:auto;background:#f5f5f7;border:none;border-radius:999px;padding:8px 14px;font-family:'DM Sans',sans-serif;font-size:12.5px;font-weight:600;color:#1d1d1f;cursor:pointer;transition:background .15s;}
body.topbar-view .phero-new:hover{background:#e8e8ed;}
body.topbar-view .phero-panel .phero-chat{flex:1;max-height:none;max-width:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;border-radius:0;margin:0;padding:50px 18px 16px;}
body.topbar-view .phero-panel .phero-box{margin:8px 14px 14px;flex-shrink:0;box-shadow:0 1px 6px rgba(0,0,0,.08);border:1px solid #ececf0;}
body.topbar-view .phero-convo .phero-tapis{opacity:.45;}
body.topbar-view .phero-convo .phero-inner{max-width:1010px;padding-top:20px;padding-bottom:28px;}
/* attente PRODIX : points qui dansent + texte tournant */
.px-dots{display:inline-flex;gap:3px;margin-right:8px;vertical-align:middle;}
.px-dots i{width:6px;height:6px;border-radius:50%;background:#a1a1a6;animation:pxdot 1.2s ease-in-out infinite;}
.px-dots i:nth-child(2){animation-delay:.15s;}
.px-dots i:nth-child(3){animation-delay:.3s;}
@keyframes pxdot{0%,60%,100%{opacity:.35;transform:translateY(0);}30%{opacity:1;transform:translateY(-3px);}}
.px-wait{color:var(--g2);}
/* transition accueil -> conversation */
body.topbar-view .phero-logo,body.topbar-view .phero-box{transition:opacity .2s ease,transform .2s ease;}
body.topbar-view .phero-out{opacity:0;transform:scale(.96) translateY(8px);}
@keyframes pheroPanelIn{from{opacity:0;transform:translateY(18px) scale(.985);}to{opacity:1;transform:none;}}
body.topbar-view .phero-panel-in{animation:pheroPanelIn .42s cubic-bezier(.32,.72,.28,1);}
/* panneau conversation : la barre de saisie prend toute la largeur, bas net */
body.topbar-view .phero-panel .phero-box{max-width:none;margin:6px 16px 16px;background:#f5f5f7;border:none;box-shadow:none;}
body.topbar-view .phero-panel .phero-box:focus-within{background:#fff;box-shadow:0 0 0 3px rgba(254,0,0,.22);}
body.topbar-view .phero-send:disabled{opacity:.55;}
/* bouton joindre un fichier dans la barre PRODIX */
body.topbar-view .phero-attach{flex-shrink:0;width:38px;height:38px;border-radius:999px;border:none;background:#e8e8ed;color:#1d1d1f;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;padding:0;}
body.topbar-view .phero-attach:hover{background:#dededf;}

/* historique d'offres : chips Reprendre sous la pilule d'accueil */
body.topbar-view .phero-hist{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:16px;}
body.topbar-view .phist-lbl{display:inline-flex;align-items:center;color:var(--g2);}
body.topbar-view .phist-chip{border:none;border-radius:999px;background:#fff;box-shadow:var(--sh-sm);padding:8px 14px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;color:#1d1d1f;cursor:pointer;transition:background .15s;}
body.topbar-view .phist-chip:hover{background:#e8e8ed;}

/* badge PROMO -30% : pastille depolie, texte rouge Prodi */
body.apple-view .pcard-promo-overlay{position:absolute;top:10px;right:10px;left:auto;z-index:2;background:rgba(255,255,255,.82);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#FE0000;font-size:11px;font-weight:800;letter-spacing:.4px;padding:5.5px 10.5px;border-radius:999px;box-shadow:var(--sh-sm);}
/* topbar : menu Mandrins retire de la barre (vit dans Filtres avances) */
body.topbar-view .filters-panel .fg:has(#sb-msd-mandrin){display:none !important;}
/* conversation : plus de voile de fondu par-dessus le bas du panneau */
body.topbar-view .phero-convo .phero-fade{display:none;}
/* bouton Revenir : coin haut gauche du panneau conversation */
body.topbar-view #px-retour{position:absolute;top:14px;left:14px;z-index:6;border:none;border-radius:999px;background:#f5f5f7;color:#1d1d1f;font-family:'DM Sans',sans-serif;font-size:12.5px;font-weight:600;padding:8px 14px;cursor:pointer;transition:background .15s;}
body.topbar-view #px-retour:hover{background:#e8e8ed;}
/* conversation : page verrouillee, seul le fil du chat scrolle */
body.phero-lock{overflow:hidden;height:100vh;}
/* panda du panneau de conversation : retire (l'accueil garde le sien) */
body.topbar-view .phero-panel-head{display:none !important;}

/* intro lien client : couches GPU sur tout ce qui bouge (jank fix 18/07) */
.ctn-truck,.ctn-slide,.ctn-drop,.ctn-fk,.ctn-wheel,.ctn-fk-wheel,.ctn-door{will-change:transform;transform:translateZ(0);backface-visibility:hidden;}
.ctn-scene{contain:layout paint;}

/* ═══════ REFONTE RESPONSIVE topbar/hero — mobile & tablette (18/07) ═══════ */
@media(max-width:768px){
  /* le nouveau parcours remplace l'ancien mobile : plus de tiroir ni loupe */
  body.topbar-view .mob-search-head,body.topbar-view .mob-filter-head,body.topbar-view .mob-search-bar,body.topbar-view #mob-filter-btn{display:none !important;}
  body.topbar-view .sidebar-col{display:block !important;}
  body.topbar-view .filters-panel{display:flex !important;}
  /* header capsule compacte en GRID : [logo · Liste] puis recherche 100% */
  body.topbar-view header{top:0;padding:8px 8px 0;}
  body.topbar-view .header-inner{display:grid !important;grid-template-columns:auto 1fr auto;grid-template-areas:"logo . liste" "search search search";align-items:center;height:auto !important;row-gap:8px;padding:8px 12px;border-radius:16px;}
  body.topbar-view .logo-link{grid-area:logo;position:static !important;transform:none !important;}
  body.topbar-view .hright{grid-area:liste;display:flex !important;margin:0 !important;}
  body.topbar-view .header-search-group{grid-area:search;display:block !important;position:static !important;transform:none !important;width:auto;margin:0;}
  body.topbar-view .header-search{display:flex !important;max-width:none;width:100%;}
  body.topbar-view #f-refmin-top,body.topbar-view #f-refmax-top{flex:1 1 0 !important;width:auto !important;height:34px;font-size:13px;}
  body.topbar-view #rbar-count{display:none !important;}
  body.topbar-view .cart-wrap{display:flex !important;}
  body.topbar-view #cart-btn{display:flex !important;height:34px;width:auto !important;padding:0 16px !important;background:#fff !important;border:1px solid var(--g3) !important;border-radius:999px !important;color:#1d1d1f !important;}
  body.topbar-view #cart-btn svg{display:none;}
  body.topbar-view #cart-btn .btn-panier-txt{display:inline !important;font-size:14px !important;font-weight:700 !important;color:#fff !important;}
  body.topbar-view #cart-btn .cart-badge{background:#1d1d1f;color:#fff;}
  body.topbar-view #offre-btn,body.topbar-view #fab-btn{display:flex !important;height:34px;width:auto !important;padding:0 14px !important;background:#fff !important;border:1px solid var(--g3) !important;border-radius:999px !important;color:#1d1d1f !important;}
  body.topbar-view #offre-btn .offre-txt,body.topbar-view #fab-btn .offre-txt{font-size:14px !important;font-weight:700 !important;}
  /* Album photo : même encre que Usine/Offre (il ressortait gris #555 = faux « pas gras », 17/08) */
  body.topbar-view #album-btn .offre-txt{color:#1d1d1f !important;}
  body.topbar-view #offre-wrap,body.topbar-view #fab-wrap{margin-right:6px;}
  body.topbar-view .offre-menu{min-width:230px;}
  /* barre de filtres : rangée dérulante horizontale */
  body.topbar-view .body-wrap{display:block;padding:0 10px 24px;}
  /* Safari iOS : la colonne filtres doit porter son PROPRE contexte au-dessus
     du hero PRODIX, sinon les .msd-panel (fixed z2000) se peignent DERRIÈRE le
     voile du hero (vécu 31/07 sur iPhone — Chrome n'est pas affecté).
     z-index 99 = au-dessus du hero (z 2-5), sous le header sticky (z 100). */
  body.topbar-view .body-wrap>.sidebar-col{position:relative;z-index:99;background:transparent;}
  body.topbar-view .msd-panel{width:auto !important;min-width:240px;max-width:calc(100vw - 16px);}
  body.topbar-view .filters-panel{position:static !important;top:auto;height:auto !important;border-right:none;background:transparent;flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;gap:6px;padding:10px 4px 12px;-webkit-overflow-scrolling:touch;scrollbar-width:none;pointer-events:auto;}
  body.topbar-view .filters-panel::-webkit-scrollbar{display:none;}
  body.topbar-view .filters-panel .msd,body.topbar-view .filters-panel .fg{flex-shrink:0;}
  body.topbar-view .filters-panel .msd-btn{width:auto !important;padding:8px 12px;font-size:13px;display:inline-flex !important;align-items:center !important;box-sizing:border-box;}
  /* iOS (20/08) : la flèche ▾ (U+25BE) rend en EMOJI plus haut sur Safari → boutons
     de tailles inégales (invisible sur Chrome). Fix : masquer le glyphe et dessiner
     un chevron en CSS (bordures) → aucun glyphe, taille identique partout. */
  body.topbar-view .filters-panel .msd-btn .msd-arrow{font-size:0 !important;width:8px !important;height:8px !important;min-width:8px !important;flex:0 0 8px !important;background:none !important;position:relative;margin-left:5px;}
  body.topbar-view .filters-panel .msd-btn .msd-arrow::after{content:'' !important;position:absolute;top:1px;left:0;width:6px;height:6px;border-right:1.7px solid #86868b;border-bottom:1.7px solid #86868b;transform:rotate(45deg);background:none;}
  body.topbar-view .fpill-photo,body.topbar-view .fpill-resa{padding:6px 11px !important;font-size:11.5px !important;}
  /* 2e ligne : + / tags déroulants / tri dans le flux */
  body.topbar-view #topbar-row2{padding:0 4px 8px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
  body.topbar-view #topbar-row2::-webkit-scrollbar{display:none;}
  body.topbar-view #topbar-row2 #add-page-btn{position:static;order:-2;width:32px;height:32px;min-width:32px;}
  body.topbar-view #topbar-row2 #tb-sort{position:static;order:99;margin-left:6px;}
  body.topbar-view .tb-sort-btn{width:44px !important;height:32px !important;}
  body.topbar-view #topbar-row2 .filter-chips{flex-wrap:nowrap;justify-content:flex-start;}
  body.topbar-view #topbar-row2 .fchip{white-space:nowrap;flex-shrink:0;font-size:11.5px;padding:6px 8px 6px 11px;}
  /* hero */
  body.topbar-view #prodix-hero{min-height:calc(100dvh - 170px);border-radius:0 0 20px 20px;margin-bottom:16px;}
  body.topbar-view .phero-inner{padding:26px 12px 46px;}
  body.topbar-view .phero-logo{width:104px;height:104px;margin:-6px auto 20px;}
  body.topbar-view .phero-logo img{width:78px;height:78px;}
  body.topbar-view .phero-box-row{padding:8px 8px 8px 16px;gap:8px;}
  body.topbar-view .phero-box textarea{font-size:15px;}
  body.topbar-view .phero-send{width:38px;height:38px;}
  body.topbar-view .phero-attach{width:32px;height:32px;}
  body.topbar-view .phero-card{width:180px;}
  body.topbar-view .phero-card .pcard-img{height:96px;}
  body.topbar-view .phero-card .sc-title{font-size:14px !important;padding:5px 8px 2px !important;}
  body.topbar-view .phero-card .sc-cap{font-size:7.5px;}
  body.topbar-view .phero-card .sc-val{font-size:11px;}
  body.topbar-view .phist-chip{font-size:12px;padding:7px 11px;}
  /* panneau conversation plein écran */
  body.topbar-view .phero-panel{max-width:none;width:100%;height:calc(100dvh - 150px);min-height:400px;border-radius:20px;}
  body.topbar-view .phero-panel .phero-chat{padding:44px 10px 10px;}
  body.topbar-view .phero-panel .phero-box{margin:6px 8px 10px;}
  body.topbar-view #px-retour{top:10px;left:10px;padding:7px 12px;font-size:12px;}
  body.topbar-view .phero-chat>div{max-width:94% !important;}
  /* cartes étiquette : 2 colonnes, typo réduite */
  body.topbar-view .pgrid{grid-template-columns:1fr 1fr !important;gap:8px !important;}
  body.topbar-view .sc-card .pcard-img{height:150px;}
  body.topbar-view .sc-title{font-size:16px !important;padding:6px 8px 3px !important;-webkit-text-stroke:.4px #000;}
  body.topbar-view .sc-cap{font-size:7.5px !important;letter-spacing:.2px;}
  body.topbar-view .sc-val{font-size:12px !important;letter-spacing:0;}
  body.topbar-view .sc-val small{font-size:8px;}
  body.topbar-view .sc-cell{padding:4px 5px !important;}
  body.topbar-view .sc-add{width:26px;height:26px;}
  body.topbar-view .sc-add::before{font-size:16px;}
  /* + des cartes = MÊME style que l'ordi (cercle BLANC + ombre, « + » noir) — 29/08 Ethan */
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add{border:none !important;background:#fff !important;box-shadow:0 2px 9px rgba(0,0,0,.19) !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add::before{font-weight:700 !important;color:#1d1d1f !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add.added{background:#FE0000 !important;}
  body.topbar-view .sc-count{font-size:10px;padding:3px 8px;}
  body.topbar-view .pcard-promo-overlay,body.topbar-view .pcard-resa-overlay{font-size:9px;padding:4px 8px;}
  /* Rétrécissage cartes MOBILE (29/08 Ethan) = même logique que desktop, hauteurs
     de lignes fixes + réduites (polices mobiles plus petites → lignes plus courtes) */
  body.apple-view .pgrid .sc-card .sc-grid{grid-template-rows:none !important;}
  body.apple-view .pgrid .sc-card .sc-cell{height:26px !important;min-height:0 !important;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding-top:0 !important;padding-bottom:0 !important;}
  body.apple-view .pgrid .sc-card .sc-cell:not(.sc-det-only):not(.sc-price-main) .sc-val{line-height:1 !important;flex-shrink:0 !important;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-title{height:22px !important;line-height:22px !important;display:block !important;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-det-only{height:21px !important;padding-top:4px !important;flex-direction:row !important;align-items:center;min-width:0 !important;overflow:hidden;} /* 30/08 : detail descendu de 4px (padding, pas margin — une marge laissait voir le fond zebre) */
  /* 30/08 : detail sur UNE ligne + ellipse en mobile (la regle n'existait qu'en
     desktop -> le texte passait sur 2 lignes et chevauchait la grille) */
  body.apple-view .pgrid .sc-card .sc-cell.sc-det-only .sc-val{min-width:0;flex:1;display:block !important;-webkit-line-clamp:unset !important;white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:block !important;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-price-usine{height:29px !important;flex-direction:row !important;align-items:center;justify-content:flex-start;gap:6px;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-price-main{height:29px !important;flex-direction:row !important;align-items:center;justify-content:flex-start;gap:8px;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add{margin-left:auto !important;flex:0 0 auto;}
  /* popup tonnage */
  body.topbar-view #tonnage-bg>div{padding:22px !important;border-radius:18px !important;}
}
/* tablette portrait : cartes sur 3 colonnes, hero un peu réduit */
@media(min-width:769px) and (max-width:1024px){
  body.topbar-view .pgrid{grid-template-columns:repeat(3,1fr);}
  body.topbar-view .phero-card{width:220px;}
  body.topbar-view .phero-panel{max-width:94vw;}
}
/* Laizes/Diamètre = sections du rail (curseurs comme Grammages) — visibilité « bobines seules » via updateFilterVisibility */
/* accueil : pastille panda retiree (19/07) */
body.topbar-view .phero-logo{display:none !important;}

/* ══ PERF iPhone/iPad (19/07) : flous live des badges coupes (3 zones de blur
   par carte = scroll qui rame sur iOS), rails hero compacts sur mobile ══ */
@media (pointer:coarse){
  .pcard-type-overlay,.pcard-photo-ref,.pcard-gsm-overlay,.pcard-ref-overlay,.pcard-qbadge{-webkit-backdrop-filter:none !important;backdrop-filter:none !important;}
  body.apple-view .sc-count{-webkit-backdrop-filter:none !important;backdrop-filter:none !important;background:rgba(255,255,255,.95);}
  body.apple-view .pcard-resa-overlay{-webkit-backdrop-filter:none !important;backdrop-filter:none !important;background:rgba(255,255,255,.95);}
}
/* PERF (desktop aussi) : flou live des badges de cartes coupe partout — le blur
   sous une pastille quasi opaque n'est pas perceptible en scroll et coûte 2-3
   recalculs de flou par carte à chaque frame. Fond remonté a .95 (= rendu déjà
   en prod sur mobile) pour garder le contraste. Ne touche PAS les badges de
   fiche/modale (pbig-ref/pbig-usine), uniques par page. */
body.apple-view .sc-count,
body.apple-view .pcard-resa-overlay,
body.apple-view .pcard-promo-overlay{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(255,255,255,.95);}
@media (max-width:820px){
  body.topbar-view .phero-tapis{gap:16px;}
  body.topbar-view .phero-card{width:196px;}
  body.topbar-view .phero-card .pcard-img{height:96px;}
  body.topbar-view .phero-card .sc-title{font-size:14px !important;padding:5px 8px 2px !important;}
  body.topbar-view .phero-card .sc-cap{font-size:7.5px;}
  body.topbar-view .phero-card .sc-val{font-size:10.5px;}
  body.topbar-view .phero-card .sc-cell{padding:4px 5px !important;}
}
/* ── DOUBLE CURSEUR GRAMMAGES (31/07) — panneau .msd-panel en mode slider ── */
.msd-slider-panel{padding:16px;max-height:none;overflow:visible;min-width:250px;}
.gsl{display:flex;flex-direction:column;gap:13px;}
.gsl-val{font-weight:700;font-size:15px;color:var(--ink);text-align:center;}
/* La piste capte le POINTEUR (drag maison, cf _buildGrammageSlider) ; les
   inputs range sont purement visuels — Safari ignore pointer-events sur le
   pseudo-élément thumb, ne jamais revenir aux 2 ranges superposés cliquables. */
.gsl-track{position:relative;height:34px;margin:6px 10px 0;cursor:pointer;touch-action:none;}
.gsl-btnval{margin-left:auto;padding-right:8px;font-weight:700;font-size:15.4px;color:#1d1d1f;white-space:nowrap;}
.gsl-track::before{content:'';position:absolute;left:0;right:0;top:15.5px;height:3px;border-radius:99px;background:#e3e3e6;}
.gsl-fill{position:absolute;top:15.5px;height:3px;border-radius:99px;background:#1d1d1f;pointer-events:none;}
.gsl-track input[type=range]{position:absolute;inset:0;width:100%;height:34px;margin:0;background:none;
  pointer-events:none;-webkit-appearance:none;appearance:none;}
.gsl-track input[type=range]::-webkit-slider-runnable-track{background:transparent;height:34px;}
.gsl-track input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;
  width:14px;height:30px;margin-top:2px;border-radius:8px;background:#fff;border:1px solid #ececef;
  box-shadow:0 1px 3px rgba(0,0,0,.22),0 3px 8px rgba(0,0,0,.12);}
.gsl-track input[type=range]::-moz-range-thumb{width:14px;height:30px;border-radius:8px;
  background:#fff;border:1px solid #ececef;box-shadow:0 1px 3px rgba(0,0,0,.22),0 3px 8px rgba(0,0,0,.12);}
/* Bulles de valeur suivant chaque poignée (design F pilules + D bulles, choix Ethan) */
.gsl-bub{position:absolute;top:-30px;transform:translateX(-50%);background:#1d1d1f;color:#fff;
  font-size:12.5px;font-weight:700;padding:4px 9px;border-radius:8px;white-space:nowrap;pointer-events:none;z-index:2;}
.gsl-bub::after{content:'';position:absolute;left:50%;top:100%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#1d1d1f;}
.gsl-bornes{display:flex;justify-content:space-between;font-size:11.5px;color:var(--g3);margin-top:-7px;}
/* Curseur CIE dans le menu Détails (même dessin, encart dans la liste) */
.gsl-cie{padding:12px 14px 12px;gap:11px;border-bottom:1px solid #ececf0;}
.gsl-cie .gsl-val{font-size:14px;}
/* ── ESSAI ?bas=1 : pilule PRODIX en barre basse fixe, grille en landing ── */
body.saisie-basse #px-dock{position:fixed;left:0;right:0;bottom:0;z-index:1500;
  display:flex;justify-content:center;pointer-events:none;
  padding:12px 12px calc(12px + env(safe-area-inset-bottom));}
body.saisie-basse #px-dock .phero-box{width:min(720px,100%);margin:0;
  pointer-events:auto;border:none;box-shadow:0 6px 26px rgba(0,0,0,.16);}
body.saisie-basse #pgrid{padding-bottom:96px;}
body.saisie-basse footer{padding-bottom:110px;}
/* Segment BOBINE/FORMAT des tuiles = LE MÊME composant que le segment du
   menu Offre (fusion 05/08) — seuls la taille et l'ombre de la piste diffèrent. */
body.saisie-basse .px-tuile-seg{display:flex;gap:2px;background:#f0f0f2;border-radius:999px;
  padding:3px;box-shadow:var(--sh-md);}
body.saisie-basse .px-tuile-seg button{border:none;background:transparent;outline:none;
  border-radius:999px;padding:10px 26px;font-family:'DM Sans',sans-serif;
  font-weight:800;font-size:14.5px;letter-spacing:.3px;color:var(--g2);cursor:pointer;
  transition:color .15s;}
body.saisie-basse .px-tuile-seg button:not(.on):hover{color:#1d1d1f;}
body.saisie-basse .px-tuile-seg button.on{background:#fff;color:#1d1d1f;box-shadow:var(--sh-sm);}
/* Tuiles qualités en landing (mêmes visuels que la vitrine) */
body.saisie-basse #px-tuiles{display:grid;grid-template-columns:1fr 1fr;gap:14px;
  max-width:var(--gab);margin:0 auto;padding:10px 0 14px;}
body.saisie-basse .px-tuile{position:relative;overflow:hidden;border-radius:20px;
  cursor:pointer;height:clamp(250px,38vh,440px);background:#eee;}
body.saisie-basse .px-tuile img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;transition:transform .5s ease;}
body.saisie-basse .px-tuile:hover img{transform:scale(1.04);}
body.saisie-basse .px-tuile-in{position:absolute;inset:0;z-index:2;display:flex;
  flex-direction:column;align-items:center;gap:12px;
  padding-top:clamp(10px,2.5vh,20px);}
body.saisie-basse .px-tuile h2{margin:0;font-family:'Bebas Neue',sans-serif;
  font-weight:400;font-size:clamp(38px,4.4vw,64px);line-height:1;
  letter-spacing:.02em;color:#111;}
body.saisie-basse .px-tuile.dark h2{color:#fff;text-shadow:0 2px 16px rgba(0,0,0,.3);}
body.saisie-basse .px-tuile-btn{background:#fff;color:#111;border-radius:999px;
  padding:9px 20px;font-weight:700;font-size:14.5px;
  box-shadow:0 2px 12px rgba(0,0,0,.14);}
/* Bandeau « autres qualités » sous les tuiles — même dessin que la vitrine */
body.saisie-basse #px-band-wrap{max-width:1720px;margin:0 auto;padding:0 14px 130px;}
body.saisie-basse .px-band{display:flex;gap:12px;overflow-x:auto;
  scroll-snap-type:x mandatory;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;padding:4px 0;}
body.saisie-basse .px-band::-webkit-scrollbar{display:none;}
body.saisie-basse .px-qcard{position:relative;flex:0 0 clamp(300px,36vw,500px);
  aspect-ratio:2/1;overflow:hidden;scroll-snap-align:start;background:#000;
  cursor:pointer;border-radius:22px;}
body.saisie-basse .px-qcard img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block;}
body.saisie-basse .px-qcard::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,0) 42%,rgba(0,0,0,.58) 100%);}
body.saisie-basse .px-qcard-title{position:absolute;left:18px;bottom:12px;z-index:2;
  color:#fff;font-family:'Bebas Neue',sans-serif;font-size:26px;
  letter-spacing:1.2px;line-height:1;text-shadow:0 1px 10px rgba(0,0,0,.4);}
body.saisie-basse .px-qcard-btn{position:absolute;right:12px;bottom:12px;z-index:2;
  background:rgba(255,255,255,.95);color:#1d1d1f;border:none;border-radius:999px;
  padding:9px 18px;font-family:'DM Sans',sans-serif;font-size:13.5px;
  font-weight:600;cursor:pointer;}
body.saisie-basse .px-qcard:hover .px-qcard-btn{background:#fff;}
/* points de pagination : la pilule active se remplit (durée = _PER du JS) */
body.saisie-basse .px-band-dots{display:flex;gap:14px;justify-content:center;
  align-items:center;margin-top:16px;}
body.saisie-basse .pxdot{width:10px;height:10px;border-radius:999px;border:none;
  padding:0;background:#b6b6ba;cursor:pointer;position:relative;overflow:hidden;
  transition:width .35s ease;}
body.saisie-basse .pxdot.on{width:58px;background:#d2d2d6;}
body.saisie-basse .pxdot.on::after{content:'';position:absolute;left:0;top:0;bottom:0;
  width:10px;border-radius:999px;background:#1d1d1f;
  animation:pxdotfill 5.5s linear forwards;}
body.saisie-basse .pxdot.on.still{background:#1d1d1f;}
body.saisie-basse .pxdot.on.still::after{animation:none;}
@keyframes pxdotfill{to{width:100%;}}
@media(max-width:768px){
  body.saisie-basse #px-tuiles{grid-template-columns:1fr;gap:10px;padding:8px 10px 10px;}
  body.saisie-basse .px-tuile{height:210px;}
  body.saisie-basse .px-tuile h2{font-size:38px;}
  body.saisie-basse .px-qcard{flex-basis:76vw;}
  body.saisie-basse #px-band-wrap{padding:0 10px 120px;}
}

/* ===== DESKTOP : filtres en COLONNE GAUCHE (07/08, demande Ethan) =====
   Le mobile (@media max-width:768px) reste en barre du haut, inchangé.
   .body-wrap n'a que 2 enfants : .sidebar-col (filtres) + le <div> contenu →
   grid 2 colonnes propre. On ANNULE la barre horizontale topbar sur desktop. */
@media(min-width:769px){
  /* Grille 2 colonnes : rail filtres (gauche) + contenu (droite) */
  body.topbar-view .body-wrap{
    position:relative;
    display:grid;
    grid-template-columns:270px minmax(0,1fr); /* 300→270 (−10 %, 17/08) */
    gap:0; /* 17/08 : plus d'écart entre rail et tuiles */
    align-items:start;
    max-width:none;
    margin:0;
    padding:0 0 48px 0; /* 17/08 : ZÉRO gouttière à droite, le fond produits va au bord */
  }
  body.topbar-view .mob-filter-btn{display:none !important;}
  /* Ancienne ligne titre FILTRES (#topbar-row2) masquée → le rail démarre flush sous le header */
  body.topbar-view #topbar-row2{display:none !important;}
  /* Header : collé en haut, PLEINE LARGEUR, logo à gauche, hauteur réduite (demande Ethan) */
  body.apple-view header{top:0 !important;padding:0 !important;border-bottom:1px solid var(--border) !important;}
  body.apple-view .header-inner{max-width:none !important;margin:0 !important;border-radius:0 !important;box-shadow:none !important;background:#fff !important;padding:0 24px !important;height:50px !important;}
  body.apple-view .header-inner .logo-link{margin-left:0;} /* 20→10→0 (17/08, logo −10px ×2) */
  /* Boutons header (Album photo · Usine · Offre · Liste) réduits ~ à la taille des
     champs Réf article/Max (08/08 Ethan) : h 38px, texte 14.5px, padding resserré */
  body.topbar-view .hright .btn-head{height:42px !important;min-height:0 !important;padding:0 18px !important;border:1px solid rgba(0,0,0,.07) !important;background:#fff !important;box-shadow:0 2px 10px rgba(0,0,0,.16) !important;} /* 17/08 : design pilule d'avant, juste plus démarqué (ombre portée) */
  body.topbar-view .hright .btn-head .offre-txt,body.topbar-view .hright .btn-head .btn-panier-txt{font-size:16px !important;font-weight:700 !important;}
  /* Album photo : même encre noire que Usine/Offre (héritait du gris .btn-head, 17/08) */
  body.topbar-view #album-btn .offre-txt{color:#1d1d1f !important;}
  body.topbar-view .hright .btn-head .btn-panier-txt+*,body.topbar-view .hright #cart-btn svg{width:18px !important;height:18px !important;}
  /* Header +10 % (17/08 Ethan) : barre, logo, champs Réf */
  body.topbar-view .header-inner{height:63px;}
  body.topbar-view .logo-full{height:38.5px;}
  /* Vue client (?s=) : header harmonisé au catalogue (18/08) — même logo, même hauteur, bouton Excel en pilule */
  body.shared-view .header-inner{height:63px;}
  body.shared-view .logo-full{height:38.5px;}
  /* 18/08 (Ethan) : bouton Télécharger = MÊMES codes que Album photo (carte du
     rail — arrondi 12px, liseré + ombre douce, 18.5px/700, hover #fafafa) */
  body.shared-view .hright .btn-head{height:auto !important;min-height:0 !important;padding:9px 14px !important;border:1px solid rgba(0,0,0,.05) !important;border-radius:12px !important;background:#fff !important;box-shadow:0 2px 8px rgba(0,0,0,.10) !important;}
  body.shared-view .hright .btn-head:hover{background:#fafafa !important;}
  body.shared-view .hright #cart-btn svg{width:20px !important;height:20px !important;}
  body.topbar-view #f-refmin-top,body.topbar-view #f-refmax-top{height:42px !important;font-size:15.5px !important;width:139px !important;}
  /* Pas de trait au-dessus du footer (demande Ethan) */
  body.topbar-view footer{border-top:none !important;}
  /* Barre du haut de la colonne produits (déplacée en JS) : + à GAUCHE, tri à DROITE */
  body.topbar-view #desk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 2px 6px;min-height:34px;margin-top:-8px;}
  /* Tonnage de la sélection filtrée, à côté du + (08/08 Ethan) */
  body.topbar-view #desk-toolbar #tb-tons{flex:0 0 auto;order:0;font-family:'DM Sans',sans-serif;font-size:15px;color:var(--g2);white-space:nowrap;margin-left:8px;transform:translateY(3px);}
  body.topbar-view #desk-toolbar #tb-tons:empty{display:none;}
  body.topbar-view #desk-toolbar #tb-tons b{font-weight:800;color:#1d1d1f;font-size:16.5px;}
  /* + = pastille BLANCHE (couleurs inversées avec le tri) */
  body.topbar-view #desk-toolbar #add-page-btn{position:static !important;order:0;width:35.6px !important;height:35.6px !important;margin:0 !important;transform:translate(5px,3px);flex:0 0 auto !important;background:#fff !important;border:none !important;border-radius:999px !important;box-shadow:var(--sh-md);color:#1d1d1f !important;padding:0 !important;display:flex;align-items:center;justify-content:center;}
  body.topbar-view #desk-toolbar #add-page-btn svg{width:18px;height:18px;stroke:#1d1d1f;}
  /* chips des filtres actifs ENTRE le + et le tri */
  body.topbar-view #desk-toolbar #filter-chips{order:1;flex:1 1 auto;display:flex !important;flex-wrap:wrap;gap:6px;margin:0;padding:0 6px;justify-content:center;align-items:center;max-width:none;transform:translateY(-5px);}
  /* chips = pilules NEUTRES (blanc + ombre), comme le système d'origine (08/08) */
  body.topbar-view #desk-toolbar #filter-chips .fchip{background:#fff !important;border:none !important;box-shadow:var(--sh-sm) !important;color:#1d1d1f !important;font-size:13px !important;font-weight:600 !important;padding:7px 10px 7px 14px !important;border-radius:999px !important;}
  body.topbar-view #desk-toolbar #filter-chips .fchip button{color:var(--g2) !important;font-size:15px !important;}
  body.topbar-view #desk-toolbar #filter-chips .fchip button:hover{color:#1d1d1f !important;}
  body.topbar-view #desk-toolbar #tb-sort{position:static !important;order:2;width:auto;margin:0;}
  /* .sidebar-col = colonne flex sticky ; rangée haute (tri/+/chips) AU-DESSUS des filtres */
  body.topbar-view .sidebar-col{display:flex;flex-direction:column;gap:12px;}

  /* Panneau filtres = liste verticale pleine largeur, carte blanche */
  body.topbar-view .filters-panel{
    order:2;
    width:100% !important;
    position:static !important;
    display:flex !important;
    flex-direction:column;
    align-items:stretch;
    justify-content:flex-start;
    flex-wrap:nowrap !important;
    gap:9px;
    padding:16px;
    height:auto !important;
    overflow:visible !important;
    background:#fff;
    border-radius:0 0 16px 16px;
    box-shadow:var(--sh-sm);
  }
  body.topbar-view .filters-panel .fg{width:100%;margin:0;}
  body.topbar-view .filters-panel .msd{width:100% !important;}
  /* Boutons filtres = PLEINE LARGEUR du rail (bat #sb-msd-type width:134px + .msd-btn width:auto!important) */
  body.topbar-view .filters-panel .msd-btn,
  body.topbar-view #sb-msd-type .msd-btn,
  body.topbar-view #sb-msd-details .msd-btn,
  body.topbar-view #sb-msd-grammage .msd-btn,
  body.topbar-view #sb-msd-couleur .msd-btn,
  body.topbar-view #sb-msd-format .msd-btn,
  body.topbar-view #sb-msd-laize .msd-btn,
  body.topbar-view #sb-msd-mandrin .msd-btn,
  body.topbar-view #sb-msd-diametre .msd-btn,
  body.topbar-view #sb-msd-poids .msd-btn,
  body.topbar-view #tb-adv .msd-btn{width:100% !important;justify-content:space-between !important;padding:11px 14px !important;box-sizing:border-box;font-size:18.5px !important;font-weight:700 !important;color:#1d1d1f !important;}

  /* Polices du rail +15% + plus noires/grasses (demande Ethan) */
  body.topbar-view .filters-panel .format-pills .fpill{font-size:16.5px !important;font-weight:800 !important;}
  body.topbar-view .filters-panel .fp-title{font-size:16.5px !important;font-weight:800 !important;color:#1d1d1f !important;}
  body.topbar-view .filters-panel .gsl-val{font-size:17.5px !important;font-weight:800 !important;color:#1d1d1f !important;}
  body.topbar-view .filters-panel .gsl-bornes span{font-size:16.5px !important;font-weight:700 !important;color:#48484a !important;}
  body.topbar-view .filters-panel .msd-option,
  body.topbar-view .filters-panel .msd-label{font-size:17.5px !important;font-weight:600 !important;color:#1d1d1f !important;}
  body.topbar-view .filters-panel .msd-group-row{font-size:18.5px !important;font-weight:700 !important;color:#1d1d1f !important;}
  body.topbar-view .filters-panel .msd-search-inp{font-size:17.5px !important;}

  /* Flèche = SVG inline (20/08) — ancienne icône sliders supprimée */
  body.topbar-view .filters-panel .msd-btn .msd-arrow{font-size:0 !important;background:none !important;}
  body.topbar-view .filters-panel .fg:has([data-format]){display:block !important;order:-1;}

  /* FILTRES AVANCÉS dépliés DIRECTEMENT dans le rail (08/08 Ethan) — plus de clic */
  body.topbar-view .filters-panel #tb-adv .msd-panel{display:block !important;margin-top:2px !important;}
  body.topbar-view .filters-panel #tb-adv .msd-btn{pointer-events:none;border:none !important;background:transparent !important;box-shadow:none !important;padding:8px 4px 1px !important;font-size:14.5px !important;font-weight:800 !important;color:var(--g2) !important;text-transform:uppercase;letter-spacing:.5px;}
  body.topbar-view .filters-panel #tb-adv .msd-btn .msd-arrow{display:none !important;}
  /* Compactage général du rail (08/08) : lignes avancées + slider plus serrés */
  body.topbar-view .filters-panel .msd-group-row{padding-top:8px !important;padding-bottom:8px !important;}
  body.topbar-view .filters-panel .gsl-track{margin:3px 12px 0 !important;}

  /* HOMOGÉNÉITÉ (08/08 Ethan) : Offre, Type de papier, Détails = MÊME ligne plate
     que les sections avancées (label + filet + chevron ›), plus de cartes/pilules */
  body.topbar-view .filters-panel #sb-msd-type .msd-btn,
  body.topbar-view .filters-panel #sb-msd-details .msd-btn,
  body.topbar-view .filters-panel #sb-msd-couleur .msd-btn,
  body.topbar-view .filters-panel #sb-msd-format .msd-btn{
    width:100% !important;height:auto !important;min-height:0 !important;
    border:none !important;border-bottom:1.5px solid #222 !important;
    background:transparent !important;box-shadow:none !important;border-radius:0 !important;
    padding:9px 12px !important;font-size:18.5px !important;font-weight:700 !important;
    color:#1d1d1f !important;justify-content:space-between !important;}
  /* chevron › à droite (on masque le ▾ / l'icône filtre et on pose un › en ::after) */
  body.topbar-view .filters-panel #sb-msd-type .msd-arrow,
  body.topbar-view .filters-panel #sb-msd-details .msd-arrow,
  body.topbar-view .filters-panel #sb-msd-couleur .msd-arrow,
  body.topbar-view .filters-panel #sb-msd-format .msd-arrow{
    background:none !important;width:auto !important;height:auto !important;flex:none !important;
    transform:none !important;font-size:0 !important;}
  body.topbar-view .filters-panel #sb-msd-type .msd-arrow::after,
  body.topbar-view .filters-panel #sb-msd-details .msd-arrow::after,
  body.topbar-view .filters-panel #sb-msd-couleur .msd-arrow::after,
  body.topbar-view .filters-panel #sb-msd-format .msd-arrow::after{
    content:none !important;display:none !important;} /* glyph › SUPPRIMÉ — SVG inline (20/08) */

  /* Rangée haute du rail : FILTRES + tri (⤓) + ajout (+) + chips — compacte */
  body.topbar-view #topbar-row2{
    display:none !important;            /* masqué : chips/tri/+ déplacés ailleurs, le rail démarre flush */
  }
  body.topbar-view #topbar-row2 .fp-head{order:0;flex:1 1 auto;border:none !important;padding:0;margin:0;}
  body.topbar-view #topbar-row2 .fp-title{display:block;font-size:15px;}
  body.topbar-view #topbar-row2 .pager-top{display:none !important;}   /* scroll infini desktop */
  body.topbar-view #topbar-row2 .filter-chips{order:5;flex:1 1 100%;justify-content:flex-start;margin:0;padding:0;}

  /* Tri ⤓ = pastille ronde NOIRE (couleurs inversées avec le +) */
  body.topbar-view #tb-sort .tb-sort-btn{width:37.3px !important;height:37.3px !important;border-radius:999px;background:#fff !important;border:none !important;box-shadow:var(--sh-md);transform:translateY(3px);}
  body.topbar-view #desk-toolbar #tb-sort .tb-sort-btn svg{stroke:#1d1d1f;width:17.6px !important;height:17.6px !important;}

  /* BOBINE / FORMAT : contrôle SEGMENTÉ (piste grise + pastille blanche active) */
  /* Segments BOBINE/FORMAT des tuiles RETIRÉS sur desktop (le rail a le sien) */
  body.saisie-basse .px-tuile-seg{display:none !important;}
  /* Tuiles : plus BASSES (6 visibles sans scroll) + remplissent la colonne jusqu'au rail */
  body.saisie-basse #px-tuiles{max-width:none !important;margin:0 !important;}
  body.saisie-basse .px-tuile{height:250px !important;}
  /* Titres des tuiles en BAS À GAUCHE (comme les cartes de la bande) */
  body.saisie-basse .px-tuile-in{align-items:flex-start !important;justify-content:flex-end !important;padding:0 24px clamp(14px,3vh,24px) 28px !important;gap:0 !important;background:linear-gradient(to top,rgba(0,0,0,.55),rgba(0,0,0,.08) 32%,transparent 55%) !important;}
  body.saisie-basse .px-tuile h2{text-align:left !important;width:100%;color:#fff !important;text-shadow:0 1px 10px rgba(0,0,0,.35);}
  /* Cartes du bandeau = MÊME taille que les tuiles (2 par vue), rangées uniformes + ALIGNÉES */
  body.saisie-basse #px-band-wrap{max-width:none !important;margin:0 !important;padding:0 0 20px !important;}
  body.saisie-basse .px-band{gap:14px !important;padding:0 !important;}
  body.saisie-basse .px-qcard{flex:0 0 calc(50% - 7px) !important;height:225px !important;aspect-ratio:auto !important;}
  /* Grille articles = remplit toute la colonne (plus de centrage max-width qui laissait un vide à gauche) */
  body.topbar-view .pgrid{max-width:none !important;margin:0 !important;}
  /* Hauteur UNIFORME des lignes de carte : 55px, titre 45px (demande Ethan) */
  body.apple-view .pgrid .sc-card .sc-grid{grid-template-rows:none !important;}
  body.apple-view .pgrid .sc-card .sc-cell{height:30px !important;min-height:0 !important;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;}
  /* Valeurs de carte : line-height assez ample pour ne pas rogner le haut des
     glyphes (ex. « Argent ») malgré overflow:hidden (ellipsis) — 08/08 Ethan */
  body.apple-view .pgrid .sc-card .sc-cell:not(.sc-det-only):not(.sc-price-main) .sc-val{line-height:1 !important;flex-shrink:0 !important;}
  body.apple-view .pgrid .sc-card .sc-cell:not(.sc-det-only):not(.sc-price-main) .sc-cap{flex-shrink:0 !important;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-title{height:26px !important;display:block !important;line-height:26px !important;padding-top:0 !important;padding-bottom:0 !important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-det-only{height:22px !important;display:flex !important;flex-direction:row !important;align-items:center;min-width:0 !important;overflow:hidden;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-det-only .sc-val{min-width:0;flex:1;display:block !important;-webkit-line-clamp:unset !important;white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis;}
  /* Ligne PRIX en CELLULES GRID (span 2) : USINE (gauche) | PRIX + bouton (droite),
     alignées PILE sur les colonnes du dessus (COULEUR/POIDS) grâce au grid. */
  body.apple-view .pgrid .sc-card .sc-cell.sc-price-usine{height:26px !important;padding:2px 5px 2px 8px !important;display:flex !important;flex-direction:row !important;align-items:center !important;justify-content:flex-start;gap:7px;overflow:hidden;}
  body.apple-view .pgrid .sc-card .sc-cell.sc-price-main{height:26px !important;padding:2px 3px 2px 8px !important;display:flex !important;flex-direction:row !important;align-items:center !important;justify-content:flex-start;gap:12px;}
  body.apple-view .pgrid .sc-card .sc-price-val{font-size:19px !important;font-weight:800 !important;line-height:1 !important;}
  /* + de carte = MÊME design que le + de la barre outils (#add-page-btn) :
     cercle blanc, pas de bordure, ombre var(--sh-md), + gras noir (08/08 Ethan). */
  /* + INVERSÉ (17/08 Ethan) : fond noir, signe blanc ; en liste = rouge + poubelle */
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add{width:28px !important;height:28px !important;flex:0 0 auto;margin-left:auto !important;border:none !important;background:#fff !important;box-shadow:0 2px 9px rgba(0,0,0,.19) !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add::before{font-size:18px !important;font-weight:700 !important;color:#1d1d1f !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add:hover{border:none !important;background:#1d1d1f !important;box-shadow:var(--sh-md) !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add.added{background:#FE0000 !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add.added:hover{background:#cc0000 !important;}
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add.added::before{content:'';width:15px;height:15px;}
  /* Barre PRODIX du bas masquée POUR LE MOMENT (desktop) — réactivable en retirant cette ligne */
  body.saisie-basse #px-dock{display:none !important;}
  /* + et tri ⤓ (barre) masqués sur le LANDING (inutiles avant d'avoir filtré) */
  body.saisie-basse #desk-toolbar{display:none !important;}
  /* Boutons « Voir le stock » retirés (le clic sur la tuile entre déjà dans le stock) */
  body.saisie-basse .px-qcard-btn,body.saisie-basse .px-tuile-cta{display:none !important;}

  /* Segment Bobine/Format = MÊME style que les cartes du rail (17/08) :
     blanc flottant, ombre douce, sans bordure — actif = fond noir. */
  body.topbar-view .filters-panel .format-pills{display:flex !important;width:100% !important;margin:0 !important;position:relative;grid-template-columns:none !important;gap:4px;background:transparent;border-radius:0;padding:0;box-shadow:none;}
  /* 23/08 Ethan : contour fin visible pour que ça se lise comme des boutons */
  body.topbar-view .filters-panel .format-pills .fpill{flex:1 1 0 !important;position:relative;z-index:1;border:none !important;background:#fff !important;border:1px solid #d2d2d7 !important;outline:none;border-radius:12px !important;box-shadow:0 2px 8px rgba(0,0,0,.10) !important;padding:9px 0 !important;width:auto !important;font-family:'DM Sans',sans-serif;font-weight:700;color:#1d1d1f !important;box-shadow:none !important;}
  body.topbar-view .filters-panel .format-pills .fpill:not(.active):hover{background:#fafafa !important;}
  body.topbar-view .filters-panel .format-pills .fpill.active{background:#222 !important;color:#fff !important;}
  /* Bouton « Offre » en HAUT du rail (déplacé du header en JS), pleine largeur */
  body.topbar-view .filters-panel #offre-wrap{order:-2;width:100%;position:relative;margin-bottom:2px;}
  body.topbar-view .filters-panel #offre-wrap .btn-head{width:100% !important;justify-content:space-between !important;}

  /* Tous les menus du rail se déroulent INLINE (partie du panneau, pas d'overlay
     flottant) — le rail s'allonge. S'ouvre/ferme via .show (toggleMsd). */
  body.topbar-view .filters-panel .msd:not(#sb-msd-type):not(#sb-msd-details) .msd-panel{position:static !important;inset:auto !important;width:100% !important;min-width:0 !important;max-width:none !important;transform:none !important;box-shadow:none !important;border:none !important;margin:6px 0 0 !important;background:transparent !important;max-height:none !important;overflow-x:clip;}
  /* Type de papier ET Détails = dropdowns FLOTTANTS qui SURVOLENT le panneau (ne le
     rallongent pas), largeur du rail, ~6 items visibles puis SCROLL. */
  body.topbar-view #sb-msd-type .msd-panel,
  body.topbar-view #sb-msd-details .msd-panel{position:absolute !important;top:calc(100% + 4px) !important;left:0 !important;right:auto !important;inset-inline:0 auto !important;transform:none !important;width:100% !important;min-width:0 !important;max-width:none !important;max-height:344px !important;overflow-y:auto !important;overflow-x:hidden;box-sizing:border-box;}
  /* Rail = largeur FIXE 270px (300→270 le 17/08, −10 %), RIEN ne la bouge —
     garder cette valeur ET grid-template-columns du .body-wrap SYNCHRO */
  body.topbar-view .sidebar-col{width:270px !important;min-width:270px !important;max-width:270px !important;box-sizing:border-box;position:sticky;top:52px;align-self:start;}
  body.topbar-view .filters-panel{box-sizing:border-box;max-width:100%;}
  body.topbar-view .filters-panel .msd-option{white-space:normal !important;}
  body.topbar-view .filters-panel .msd-label{white-space:normal !important;overflow-wrap:anywhere;min-width:0;}

  /* GRAMMAGES : ACCORDÉON (17/08) — fermé = juste « Grammages » + flèche,
     clic = le curseur se déplie dans la carte (classe .gsl-open posée en JS) */
  body.topbar-view #sb-msd-grammage .msd-btn{pointer-events:auto;background:transparent !important;box-shadow:none !important;border:none !important;font-weight:700;cursor:pointer;}
  body.topbar-view #sb-msd-grammage .gsl-btnval{display:none !important;}
  body.topbar-view #sb-msd-grammage.gsl-open .gsl-btnval{display:inline !important;margin-left:auto;padding-right:8px !important;font-size:15.5px;font-weight:700;color:#48484a;white-space:nowrap;}
  body.topbar-view #sb-msd-grammage .msd-btn .msd-arrow{display:inline-block;background:none !important;width:auto !important;height:auto !important;flex:none !important;font-size:0 !important;transform:none !important;}
  body.topbar-view #sb-msd-grammage .msd-btn .msd-arrow::after{content:none !important;display:none !important;} /* glyph › Grammages SUPPRIMÉ — SVG inline (20/08) */
  body.topbar-view #sb-msd-grammage .gsl-val{display:none;}
  body.topbar-view #sb-msd-grammage .gsl-bornes{display:none !important;}
  body.topbar-view #sb-msd-grammage .msd-panel{position:static !important;inset:auto !important;display:none !important;width:100% !important;min-width:0 !important;max-width:none !important;transform:none !important;box-shadow:none !important;border:none !important;padding:4px 2px 0 !important;margin:0 !important;background:transparent !important;}
  body.topbar-view #sb-msd-grammage.gsl-open .msd-panel{display:block !important;}
  /* Laize / Ø / Poids = DUPLICATION exacte de l'accordéon-curseur Grammages (29/08) */
  body.topbar-view #sb-msd-laize .msd-btn,body.topbar-view #sb-msd-diametre .msd-btn,body.topbar-view #sb-msd-poids .msd-btn{pointer-events:auto;background:transparent !important;box-shadow:none !important;border:none !important;font-weight:700;cursor:pointer;}
  body.topbar-view #sb-msd-laize .gsl-btnval,body.topbar-view #sb-msd-diametre .gsl-btnval,body.topbar-view #sb-msd-poids .gsl-btnval{display:none !important;}
  body.topbar-view #sb-msd-laize.gsl-open .gsl-btnval,body.topbar-view #sb-msd-diametre.gsl-open .gsl-btnval,body.topbar-view #sb-msd-poids.gsl-open .gsl-btnval{display:inline !important;margin-left:auto;padding-right:8px !important;font-size:13.5px;font-weight:700;color:#48484a;white-space:nowrap;}
  body.topbar-view #sb-msd-grammage .msd-btn-label,body.topbar-view #sb-msd-laize .msd-btn-label,body.topbar-view #sb-msd-diametre .msd-btn-label,body.topbar-view #sb-msd-poids .msd-btn-label{flex:0 0 auto;white-space:nowrap;}
  body.topbar-view #sb-msd-laize .msd-btn .msd-arrow,body.topbar-view #sb-msd-diametre .msd-btn .msd-arrow,body.topbar-view #sb-msd-poids .msd-btn .msd-arrow{display:inline-block;background:none !important;width:auto !important;height:auto !important;flex:none !important;font-size:0 !important;transform:none !important;}
  body.topbar-view #sb-msd-laize .gsl-val,body.topbar-view #sb-msd-diametre .gsl-val,body.topbar-view #sb-msd-poids .gsl-val{display:none;}
  body.topbar-view #sb-msd-laize .gsl-bornes,body.topbar-view #sb-msd-diametre .gsl-bornes,body.topbar-view #sb-msd-poids .gsl-bornes{display:none !important;}
  body.topbar-view #sb-msd-laize .msd-panel,body.topbar-view #sb-msd-diametre .msd-panel,body.topbar-view #sb-msd-poids .msd-panel{position:static !important;inset:auto !important;display:none !important;width:100% !important;min-width:0 !important;max-width:none !important;transform:none !important;box-shadow:none !important;border:none !important;padding:4px 2px 0 !important;margin:0 !important;background:transparent !important;}
  body.topbar-view #sb-msd-laize.gsl-open .msd-panel,body.topbar-view #sb-msd-diametre.gsl-open .msd-panel,body.topbar-view #sb-msd-poids.gsl-open .msd-panel{display:block !important;}
  body.topbar-view .filters-panel #sb-msd-laize,body.topbar-view .filters-panel #sb-msd-diametre,body.topbar-view .filters-panel #sb-msd-poids{border:1px solid rgba(0,0,0,.05);border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.10);margin:0;}
  body.topbar-view .filters-panel #sb-msd-laize .msd-btn,body.topbar-view .filters-panel #sb-msd-diametre .msd-btn,body.topbar-view .filters-panel #sb-msd-poids .msd-btn{border:none !important;background:transparent !important;box-shadow:none !important;border-radius:11px !important;padding:9px 14px !important;margin:0 !important;width:100% !important;}
  body.topbar-view .filters-panel #sb-msd-laize .msd-panel,body.topbar-view .filters-panel #sb-msd-diametre .msd-panel,body.topbar-view .filters-panel #sb-msd-poids .msd-panel{margin:0 !important;padding:0 5px 6px !important;background:transparent !important;}
}

/* ── Segment BOBINE|FORMAT harmonisé partout sur le dessin « contour noir »
   (17/08 Ethan) : menu Offre + tuiles landing = même style que le rail. ── */
.offre-seg-forme{background:transparent !important;border-radius:0 !important;padding:0 6px !important;gap:8px !important;box-shadow:none !important;}
.offre-seg-forme .offre-seg-btn{border:1.5px solid #222 !important;border-radius:7px !important;background:#fff !important;color:#222 !important;font-size:12px !important;font-weight:700 !important;letter-spacing:.8px;text-transform:uppercase;padding:8px 0 !important;box-shadow:none !important;}
.offre-seg-forme .offre-seg-btn:not(.on):not(:disabled):hover{background:#f5f5f3 !important;}
.offre-seg-forme .offre-seg-btn.on{background:#222 !important;border-color:#222 !important;color:#fff !important;}
body.saisie-basse .px-tuile-seg{background:transparent !important;border-radius:0 !important;padding:0 !important;gap:8px !important;box-shadow:none !important;}
body.saisie-basse .px-tuile-seg button{border:1.5px solid #222 !important;border-radius:7px !important;background:#fff !important;color:#222 !important;font-weight:700 !important;letter-spacing:.8px;text-transform:uppercase;box-shadow:none !important;}
body.saisie-basse .px-tuile-seg button:not(.on):hover{background:#f5f5f3 !important;}
body.saisie-basse .px-tuile-seg button.on{background:#222 !important;border-color:#222 !important;color:#fff !important;}

/* Chevrons du rail vers le BAS (17/08 Ethan) : › tourné 90°, ouvert = vers le haut */
body.topbar-view .filters-panel .mgr-arrow{display:inline-block;transform:rotate(90deg);transition:transform .15s;}
body.topbar-view .filters-panel .msd-group-row.open .mgr-arrow{transform:rotate(-90deg);}
/* BOBINE/FORMAT à la même taille que Type de papier (18.5px, 17/08) */
body.topbar-view .filters-panel .format-pills .fpill{font-size:18.5px !important;padding:9px 0 !important;}

/* ── Rail 17/08 v3 : style APPLE « réglages » — une rangée par filtre,
   cartes blanches flottantes (ombre, sans bordure), UNE colonne, compact. ── */
@media(min-width:769px){
  /* le panneau devient un fond discret, les rangées portent le blanc */
  body.topbar-view .filters-panel{background:transparent !important;box-shadow:none !important;padding:10px 4px 20px !important;gap:4px !important;}

  body.topbar-view .filters-panel #sb-msd-type .msd-btn,
  body.topbar-view .filters-panel #sb-msd-details .msd-btn,
  body.topbar-view .filters-panel #sb-msd-couleur .msd-btn,
  body.topbar-view .filters-panel #sb-msd-format .msd-btn{
    border:1px solid rgba(0,0,0,.05) !important;border-radius:12px !important;
    background:#fff !important;box-shadow:0 2px 8px rgba(0,0,0,.10) !important;
    padding:9px 14px !important;margin:0 !important;}
  body.topbar-view .filters-panel .msd-btn:hover{background:#fafafa !important;}

  /* Grammages : une carte avec le curseur dedans */
  body.topbar-view .filters-panel #sb-msd-grammage{border:1px solid rgba(0,0,0,.05);border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.10);margin:0;}
  body.topbar-view .filters-panel #sb-msd-grammage .msd-btn{border:none !important;background:transparent !important;box-shadow:none !important;border-radius:11px !important;padding:9px 14px !important;margin:0 !important;width:100% !important;}
  body.topbar-view .filters-panel #sb-msd-grammage .msd-panel{margin:0 !important;padding:0 5px 6px !important;background:transparent !important;}

  /* Avancés : mêmes cartes, UNE colonne */
  body.topbar-view .filters-panel #tb-adv .msd-panel{display:block !important;}
  body.topbar-view .filters-panel .msd-group-row{
    border:1px solid rgba(0,0,0,.05) !important;border-radius:12px !important;
    background:#fff !important;box-shadow:0 2px 8px rgba(0,0,0,.10) !important;
    padding:9px 14px !important;margin:0 0 4px !important;font-size:18.5px !important;}
  body.topbar-view .filters-panel .msd-group-row:hover{background:#fafafa !important;}

  /* Titre FILTRES AVANCÉS : petites capitales grises, aéré */
  body.topbar-view .filters-panel #tb-adv .msd-btn{border:none !important;background:transparent !important;box-shadow:none !important;margin:4px 0 2px !important;}
}

/* ── Démarcation rail / produits (17/08, ESSAI) : la zone des tuiles a son
   propre fond plus soutenu — les cartes blanches ressortent. ── */
@media(min-width:769px){
  body.topbar-view .body-wrap>div:not(.sidebar-col){background:#e4e4ea;border-radius:16px 0 0 16px;padding:10px 12px 16px;min-height:70vh;}
  /* rail : fond légèrement teinté distinct (17/08 ESSAI) */
  body.topbar-view .body-wrap>.sidebar-col{background:transparent;border-radius:0;box-shadow:none;}
  /* toute la colonne gauche est blanche jusqu'en bas (pas que le panneau sticky) */
  body.topbar-view .body-wrap{background:linear-gradient(90deg,#fff 270px,transparent 270px);}
  body.topbar-view .filters-panel{padding:10px 8px 20px !important;}
}

/* Colonne gauche BLANCHE toute hauteur (17/08) — posé en fin de fichier car
   une règle background .body-wrap plus spécifique l'écrasait plus haut. */
@media(min-width:769px){
  body.topbar-view .body-wrap{background:linear-gradient(90deg,#f0f0f4 270px,#f5f5f7 270px) !important;}
}

/* Rail v4 (17/08) : titre de section aéré, chevrons gris doux */
@media(min-width:769px){
  body.topbar-view .filters-panel #tb-adv .msd-btn{margin:10px 0 2px !important;color:#1d1d1f !important;}
}

@media(min-width:769px){
  body.apple-view .pgrid .sc-card .sc-price-main .sc-add:hover::before{color:#fff !important;}
}

/* Ma Liste = même pilule que Album photo/Usine/Offre (17/08) */
@media(min-width:769px){
  body.topbar-view #cart-btn{height:42px !important;padding:0 18px !important;border:1px solid rgba(0,0,0,.07) !important;background:#fff !important;box-shadow:0 2px 10px rgba(0,0,0,.16) !important;border-radius:999px !important;}
  body.topbar-view #cart-btn .btn-panier-txt{font-size:16px !important;font-weight:700 !important;color:#1d1d1f !important;}
}

/* 17/08 (Ethan) : bouton scanner QR du header masqué — « inutile » */
body.topbar-view .dh-scan-btn{display:none !important;}

/* 17-18/08 (Ethan) : poubelle « Vider la liste » retirée du header
   (on gère la liste dans le tiroir Ma Liste) */
body.topbar-view #cart-clear-btn{display:none !important;}

/* Ma Liste : camion visible + même graisse que les autres boutons (17-18/08) */
@media(min-width:769px){
  body.topbar-view #cart-btn svg{display:inline-block !important;}
  body.topbar-view #cart-btn .btn-panier-txt{font-size:16px !important;font-weight:700 !important;}
}

/* 18/08 (Ethan) : boutons du header = EXACTEMENT la forme des cartes du rail
   (arrondi 12px, liseré + ombre douce identiques, police 18.5px/700) */
@media(min-width:769px){
  body.topbar-view .hright .btn-head,
  body.topbar-view #cart-btn{
    height:auto !important;padding:9px 14px !important;
    border:1px solid rgba(0,0,0,.05) !important;border-radius:12px !important;
    background:#fff !important;box-shadow:0 2px 8px rgba(0,0,0,.10) !important;}
  body.topbar-view .hright .btn-head .offre-txt,
  body.topbar-view .hright .btn-head .btn-panier-txt,
  body.topbar-view #cart-btn .btn-panier-txt{
    font-size:18.5px !important;font-weight:700 !important;color:#1d1d1f !important;}
  body.topbar-view .hright .btn-head:hover,
  body.topbar-view #cart-btn:hover{background:#fafafa !important;}
}
@media(min-width:769px){
  body.topbar-view #cart-btn img{height:23px !important;width:auto;} /* camion calé sur la hauteur texte */
}

/* ── CARTE v2 (18/08, inspirée ligne liste ethanelb) ── */
.nc2{display:flex;flex-direction:column;}
.nc2 .nc-body{display:flex;flex-direction:column;flex:1;background:#fff;}
.nc2 .nc-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:11px 13px 0;}
.nc2 .nc-title{font-family:'Bebas Neue',sans-serif;font-size:21px;letter-spacing:.4px;line-height:1;color:#111;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.nc2 .nc-gsm{font-family:'Bebas Neue',sans-serif;font-size:17px;color:#111;flex-shrink:0;line-height:1;}
.nc2 .nc-sub{padding:5px 13px 0;font-size:13.5px;color:#6e6e73;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.nc2 .nc-foot{display:flex;align-items:center;gap:8px;padding:10px 11px 11px 13px;margin-top:auto;}
.nc2 .nc-ref{font-size:12.5px;font-weight:600;color:#48484a;background:#f2f2f6;border-radius:6px;padding:4px 8px;display:inline-flex;align-items:center;gap:5px;cursor:pointer;white-space:nowrap;}
.nc2 .nc-ref:hover{background:#e8e8ee;}
.nc2 .nc-price{color:#FE0000;font-weight:800;font-size:16px;margin-left:auto;white-space:nowrap;}
.nc2 .nc-kgs{font-weight:800;font-size:16px;color:#111;white-space:nowrap;}
.nc2 .nc-kgs small{font-size:11.5px;font-weight:700;}
/* + de la carte v2 : blanc/noir, en liste = rouge poubelle (mêmes codes qu'avant) */
body.topbar-view .nc2 .sc-add{width:28px !important;height:28px !important;flex:0 0 auto;border:none !important;background:#fff !important;box-shadow:0 2px 9px rgba(0,0,0,.19) !important;}
body.topbar-view .nc2 .sc-add::before{font-size:18px !important;font-weight:700 !important;color:#1d1d1f !important;}
body.topbar-view .nc2 .sc-add:hover{background:#1d1d1f !important;}
body.topbar-view .nc2 .sc-add:hover::before{color:#fff !important;}
body.topbar-view .nc2 .sc-add.added{background:#FE0000 !important;}
body.topbar-view .nc2 .sc-add.added:hover{background:#cc0000 !important;}
body.topbar-view .nc2 .sc-add.added::before{content:'';width:15px;height:15px;}

/* ── Tiroir Ma Liste calé sur le modèle ethanelb (18/08) ── */
body.apple-view .ci-laize{text-transform:uppercase;font-size:14.5px;font-weight:800;letter-spacing:.3px;}
body.apple-view .ci-name{color:#6e6e73;font-size:13px;}
body.apple-view .ci-gsm{font-size:17px;}
body.apple-view .ci-price{font-size:14px !important;font-weight:800 !important;}
body.apple-view .ci-kgs{font-size:15px;}

/* ── Tiroir Ma Liste : MINI-ÉTIQUETTE façon carte catalogue (18/08 v2) ── */
body.apple-view .cie-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#e8e8e4;border:1px solid #e8e8e4;border-radius:6px;overflow:hidden;margin-top:5px;}
body.apple-view .cie-cell{background:#fff;padding:4px 8px;}
body.apple-view .cie-cap{font-size:8.5px;font-weight:700;letter-spacing:.7px;color:#86868b;}
body.apple-view .cie-val{font-size:13.5px;font-weight:700;color:#111;line-height:1.15;}
body.apple-view .cie-val small{font-size:10px;font-weight:600;}
/* Carte liste 3 col (18/08) : titre+poubelle / grammage-laize-couleur / poids-réf-prix, photo seule dehors */
body.apple-view .cie-grid.cie-g4{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:0;}
body.apple-view .cie-g4 .cie-cell{padding:3px 7px;}
body.apple-view .cie-g4 .cie-cap{font-size:9.5px;}
body.apple-view .cie-g4 .cie-val{font-size:14px;}
body.apple-view .cie-g4 .cie-title{grid-column:1/-1;font-size:14.5px;font-weight:800;color:#111;letter-spacing:.2px;line-height:1.2;display:flex;align-items:center;gap:6px;min-width:0;padding:4px 7px;}
body.apple-view .cie-g4 .cie-title-txt{flex:1;min-width:0;}
body.apple-view .cie-g4 .cie-rm{min-width:0;min-height:0;width:auto;height:auto;margin:0;padding:0;flex-shrink:0;color:var(--red);}
body.apple-view .cie-g4 .cie-rm:hover{color:#cc0000;}
/* Cadenas ORANGE dans la carte du tiroir « Ma Liste » quand l'article est réservé (28/08). */
.cie-lock{display:inline-flex;align-items:center;flex-shrink:0;color:#ea8600;line-height:0;}
/* Clients externes / accès sans prix (body.hide-reserved) : les réservés sont
   masqués du catalogue → le filtre Réservé/Dispo n'a plus de sens, on le cache. */
body.hide-reserved .fpill-resa{display:none !important;}
body.hide-reserved .fd-section:has(.fpill-resa){display:none !important;}
body.apple-view .cie-g4 .cie-ref{cursor:pointer;}
body.apple-view .cie-g4 .cie-ref:hover{background:#f6f6f4;}
body.apple-view .cie-g4 .cie-ref .cie-val{font-family:monospace;display:flex;align-items:center;gap:4px;}
body.apple-view .ci-laize{text-transform:uppercase;font-family:'Bebas Neue',sans-serif;font-size:17px;font-weight:400;letter-spacing:.5px;}
body.apple-view .ci-gsm{display:none;} /* le grammage vit dans la grille */
body.apple-view .ci-foot{margin-top:6px;}

/* 18/08 : téléphone — Ma Liste = juste le CAMION, pilule compacte */
@media(max-width:768px){
  body.topbar-view #cart-btn{padding:5px 12px !important;min-width:0 !important;width:auto !important;}
  body.topbar-view #cart-btn .btn-panier-txt{display:none !important;}
  body.topbar-view #cart-btn img{height:28.7px !important;width:auto;} /* +10% cumulé (26→28,7) Ethan 26/08 */
}

/* ── 18/08 téléphone : TOUS les filtres en pilules individuelles dans la barre
   défilante (le groupe « Filtres avancés » est dissous, chaque section devient
   une pilule ; son panneau s'ouvre en surcouche pleine largeur). ── */
@media(max-width:768px){
  body.topbar-view .filters-panel #tb-adv>.msd-btn{display:none !important;}
  body.topbar-view .filters-panel #tb-adv{display:contents;}
  body.topbar-view .filters-panel #tb-adv>.msd-panel{display:contents !important;}
  body.topbar-view .filters-panel .msd-group-row{flex:0 0 auto;border:none !important;border-radius:999px !important;background:#fff !important;padding:8px 14px !important;margin:0 !important;font-size:14.5px !important;white-space:nowrap;box-shadow:0 1px 4px rgba(0,0,0,.10);}
  body.topbar-view .filters-panel #tb-adv .adv-pop{position:fixed !important;left:10px !important;right:10px !important;top:120px !important;bottom:auto !important;width:auto !important;max-height:62vh;overflow-y:auto;background:#fff !important;border-radius:14px;box-shadow:0 14px 44px rgba(0,0,0,.28);z-index:3000;padding:8px;}
}
@media(max-width:768px){
  /* la plage chiffrée vit AVEC le curseur (panneau ouvert), pas sur la pilule */
  body.topbar-view #sb-msd-grammage .gsl-btnval{display:none !important;}
  body.topbar-view #sb-msd-grammage .msd-panel .gsl-val{display:block !important;}
}
@media(max-width:768px){
  /* 18/08 : pilules avancées APRÈS Type/Détails/Grammages (elles retombaient
     entre les deux, ordre flex) + harmonisées sur le modèle « Type de papier » */
  body.topbar-view .filters-panel .msd-group-row{order:10;font-size:13px !important;font-weight:600 !important;padding:8px 12px !important;border-radius:10px !important;box-shadow:0 1px 6px rgba(0,0,0,.06) !important;}
}

/* Tonnage sélection dans le header (18/08, téléphone) */
#head-tons{display:none;}
@media(max-width:768px){
  body.topbar-view #head-tons{display:block;font-size:22px;color:#1d1d1f;white-space:nowrap;align-self:center;justify-self:start;padding-left:10px;}
  body.topbar-view #head-tons b{font-weight:800;}
}

/* ── 18/08 (Ethan) : menus déroulants DÉPÔT + OFFRE = EXACTEMENT le dessin du
   rail de filtres (v3 Apple 17/08) — fond gris doux, cartes blanches
   flottantes (arrondi 12px, liseré + ombre douce, 18.5px/700), segment
   BOBINE/FORMAT blanc → actif noir, chevron ˅ gris. Remplace le dessin
   « contour noir » du bloc 17/08 plus haut pour ces deux menus. ── */
.offre-menu{background:#f0f0f4;border:none;border-radius:16px;padding:10px;min-width:270px;}
.offre-menu.show{display:flex;flex-direction:column;gap:4px;}
body.topbar-view .offre-menu{min-width:270px;}
/* segment BOBINE|FORMAT : même recette que .format-pills du rail */
.offre-seg-forme{background:transparent !important;border-radius:0 !important;padding:0 !important;gap:4px !important;margin:0 0 4px !important;box-shadow:none !important;}
.offre-seg-forme .offre-seg-btn{border:1px solid rgba(0,0,0,.05) !important;border-radius:12px !important;background:#fff !important;color:#1d1d1f !important;font-size:18.5px !important;font-weight:700 !important;letter-spacing:.5px;text-transform:uppercase;padding:9px 0 !important;box-shadow:none !important;}
.offre-seg-forme .offre-seg-btn:not(.on):not(:disabled):hover{background:#fafafa !important;}
.offre-seg-forme .offre-seg-btn.on{background:#222 !important;border-color:#222 !important;color:#fff !important;}
/* lignes qualités = cartes du rail (Type de papier, Détails…) */
.offre-item{border:1px solid rgba(0,0,0,.05);border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.10);padding:9px 14px;align-items:center;box-sizing:border-box;}
.offre-item:hover{background:#fafafa;}
.offre-offer .offre-lbl{font-size:18.5px;font-weight:700;color:#1d1d1f;}
/* chevron ˅ gris comme le rail (ouvert = ˄) */
.offre-chev-us{color:#a1a1a6;font-weight:400;font-size:19px;transform:rotate(90deg);padding:2px 4px;}
.offre-chev-us:hover{color:#1d1d1f;background:transparent;}
.offre-chev-us.open{transform:rotate(-90deg);color:#1d1d1f;}
/* sous-lignes dépliées (usines / offres) = rangées plates sur le fond gris,
   comme les panneaux inline du rail */
.offre-item.offre-usine{border:none;border-radius:10px;background:transparent;box-shadow:none;padding:7px 14px 7px 22px;}
.offre-item.offre-usine:hover{background:#e6e6ec;}
.offre-usine .offre-lbl{font-size:16px;font-weight:600;}
.fab-us-hdr .offre-lbl{font-size:16px;font-weight:800;}

/* 18/08 (Ethan) : vue client — badge réf masqué sur les cartes (inutile côté
   client ; la poubelle est retirée en JS, le prix s'affiche à sa place) */
body.shared-view .pbig-ref{display:none !important;}

/* UNIFORMITÉ flèche boutons filtres (20/08, Ethan) — UN SEUL chevron identique à
   TOUTES les largeurs (mobile + desktop) : tue les 2 styles qui cohabitaient
   (icône « sliders » sur certains boutons, glyph « › » sur Type/Détails/Couleur/
   Dimensions/Grammages). Fin de fichier + !important pour battre les overrides #id. */
body.topbar-view .filters-panel .msd-btn .msd-arrow{font-size:0 !important;width:auto !important;min-width:0 !important;height:auto !important;flex:0 0 auto !important;background:none !important;border:none !important;box-shadow:none !important;padding:0 !important;display:inline-flex !important;align-items:center !important;justify-content:center !important;}
body.topbar-view .filters-panel .msd-btn .msd-arrow::before,
body.topbar-view .filters-panel .msd-btn .msd-arrow::after{content:none !important;display:none !important;background:none !important;border:none !important;}
body.topbar-view .filters-panel .msd-btn .msd-arrow svg{display:block !important;width:13px !important;height:13px !important;stroke:#86868b !important;fill:none !important;transform:none !important;}

/* MENU FILTRE MOBILE = BOTTOM-SHEET (21/08) — plein écran + fond noir, patron du popup
   tonnage (qui marche sur iOS). Impossible de passer derrière les tuiles : z 9000/9001
   au niveau body, backdrop opaque. Fin du bug de compositing Safari des dropdowns fixed. */
#msd-sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:9000;}
/* padding-top:0 (26/08) : avec un padding-top, la recherche collée `top:0` se
   figeait 16px trop bas (un sticky ne peut pas remonter dans le padding) et les
   options défilaient DANS ce trou, passant DERRIÈRE la recherche. On enlève le
   padding-haut ; l'espace du haut vient de la marge de la poignée. */
.msd-panel.msd-sheet{position:fixed !important;left:0 !important;right:0 !important;bottom:0 !important;top:auto !important;width:100% !important;max-width:100% !important;min-width:0 !important;max-height:74vh !important;z-index:9001 !important;border:none !important;border-radius:18px 18px 0 0 !important;box-shadow:0 -10px 40px rgba(0,0,0,.28) !important;overflow-y:auto !important;padding:0 14px calc(18px + env(safe-area-inset-bottom)) !important;animation:msdSheetUp .24s cubic-bezier(.32,.72,0,1) !important;}
/* Poignée NON collante : elle défile avec le contenu (marge du haut = l'espace). */
.msd-panel.msd-sheet::before{content:'';display:block;width:40px;height:4px;border-radius:99px;background:#d2d2d7;margin:12px auto 12px;flex:0 0 auto;}
/* Recherche = seule collée en haut, PLEINE LARGEUR + fond blanc opaque → couvre
   toute option qui défile derrière. */
.msd-panel.msd-sheet .msd-search-wrap{top:0;margin:0 -14px;padding:8px 24px;background:#fff;}
@keyframes msdSheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}

/* ── ACCÈS LEAD (23/08) : formulaire « Accéder au stock » validé sans code
   client → catalogue SANS PRIX ; on masque aussi l'export chiffré
   (Excel de la liste). body.lead-view = catalogue.js. */
body.lead-view #btn-excel-list{display:none !important;}
/* 23/08 Ethan : Album photo + Fiches non plus ne parlent pas aux leads */
body.lead-view #album-wrap,body.lead-view #fiche-wrap{display:none !important;}
/* ── STAND BY (23/08 Ethan) : Fabrication + Stocklot masqués pour TOUT LE
   MONDE « pour le moment » — réactiver en supprimant cette règle. */
#fab-wrap,#offre-wrap{display:none !important;}

/* ── TÉLÉPHONE 23/08 (Ethan) : plus de barre de filtres horizontale — les
   filtres passent par le TIROIR (#filter-drawer, bouton Filtres du header,
   ex-panneau ethanelb.github.io). Réf article Min/Max = dans le tiroir.
   Album photo mobile : sacrifié avec le menu Outils (dispo sur ordinateur). */
@media(max-width:768px){
  body.topbar-view .filters-panel{display:none !important;}
  body.topbar-view .header-search-group,body.topbar-view #album-wrap{display:none !important;}
}

/* Toast MOBILE « Navigation PC recommandé » (26/08) — dans le stock, monte du bas */
#pc-hint{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translate(-50%,160%);background:#1d1d1f;color:#fff;padding:11px 18px;border-radius:999px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;box-shadow:0 10px 34px rgba(0,0,0,.3);z-index:9500;display:flex;align-items:center;gap:9px;white-space:nowrap;max-width:calc(100vw - 24px);opacity:0;pointer-events:none;transition:transform .42s cubic-bezier(.32,.72,0,1),opacity .42s;}
#pc-hint.show{transform:translate(-50%,0);opacity:1;}

/* Case prix « Ajouter + » (29/08 Ethan) : plus de pilule — TOUTE la case fait
   bouton, le .sc-add la remplit (texte « Ajouter » + signe « + » à côté, sans
   fond ni bordure). L'état « dans la liste » garde la poubelle rouge (re-clic = retire). */
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add{cursor:pointer;transition:background .15s;}
/* État « déjà dans la liste » : la case redevient transparente (poubelle rouge visible). */
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add:has(.sc-add.added){background:transparent !important;}
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add .sc-add:not(.added){width:100% !important;min-width:0 !important;height:100% !important;padding:0 !important;border:none !important;background:transparent !important;box-shadow:none !important;border-radius:0 !important;justify-content:flex-start !important;}
/* Défaut = clair + texte foncé ; SURVOL = fond NOIR + texte blanc (inversion). */
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add:hover{background:#1d1d1f !important;}
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add .sc-add:not(.added):hover{background:transparent !important;box-shadow:none !important;}
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add .sc-add:not(.added)::before{content:'Ajouter +' !important;font-family:'DM Sans',sans-serif !important;font-size:15.5px !important;font-weight:800 !important;color:#1d1d1f !important;letter-spacing:.2px;line-height:1.2;}
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add:hover .sc-add:not(.added)::before{color:#fff !important;}
body.apple-view .pgrid .sc-card .sc-price-main.sc-price-add .sc-add.added{width:28px !important;padding:0 !important;}
/* Prix + « Ajouter + » alignés à GAUCHE dans leur case (29/08 Ethan). */
body.apple-view .pgrid .sc-card .sc-cell.sc-price-main:not(.sc-price-add){justify-content:flex-start !important;}
/* Cartes catalogue à bords CARRÉS (29/08 Ethan) — carte + grille interne
   (.sc-grid a un border-radius:0 0 17px 17px + overflow:hidden qui arrondissait
   le BAS des cartes / rognait le bouton foncé). Pas la vue client ?s=. */
body.apple-view:not(.shared-view) .pgrid .pcard,
body.apple-view:not(.shared-view) .pgrid .sc-grid{border-radius:0 !important;}
/* Fond de page en BLANC derrière les cartes (29/08 Ethan, validé) — le panneau de filtres repasse en gris clair plus bas. */
html:has(body.apple-view:not(.shared-view)),
body.apple-view:not(.shared-view),
body.apple-view:not(.shared-view) .body-wrap,
body.topbar-view:not(.shared-view) .body-wrap>div:not(.sidebar-col),
body.apple-view:not(.shared-view) #results-bar,
body.apple-view:not(.shared-view) .rbar-inner,
body.apple-view:not(.shared-view) footer{background:#fff !important;}
/* Gris clair DERRIÈRE le panneau de filtres (rail desktop) — cartes restent blanches (29/08 Ethan). */
body.topbar-view:not(.shared-view) .body-wrap>.sidebar-col{background:#f5f5f7 !important;}

/* ── ACCUEIL CATALOGUE : rangées horizontales par qualité (29/08 Ethan) ── */
#quality-rows{display:none;}
body.landing-rows #quality-rows{display:block;}
body.landing-rows #pgrid,body.landing-rows #pager,body.landing-rows #scroll-sentinel{display:none !important;}
/* Accueil (rangées) : barre + / tonnage / tri masquée — elle apparaît dès qu'on filtre. */
body.landing-rows #desk-toolbar{display:none !important;}
.qrow-sec{margin:0 0 22px;}
.qrow-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 2px 8px;}
.qrow-title{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:34px;letter-spacing:.5px;color:#1d1d1f;margin:0;line-height:1.15;flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.qrow-title .qrow-sub{font-family:'DM Sans',sans-serif;font-weight:600;font-size:16px;letter-spacing:0;color:#1d1d1f;}
.qrow-more{background:none;border:none;color:#1d1d1f;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;cursor:pointer;padding:4px;white-space:nowrap;flex-shrink:0;}
.qrow-more:hover{color:#000;text-decoration:underline;}
.qrow-scroll.pgrid{display:flex !important;align-items:flex-start !important;gap:12px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding:2px 2px 10px;grid-template-columns:none !important;}
/* 30/08 : barre de défilement MASQUÉE (mobile + ordi) — le débord des cartes
   suffit à comprendre qu'on peut glisser */
.qrow-scroll.pgrid{scrollbar-width:none;-ms-overflow-style:none;}
.qrow-scroll.pgrid::-webkit-scrollbar{display:none;height:0;}
.qrow-scroll .pcard{flex:0 0 212px;width:212px;scroll-snap-align:start;content-visibility:visible !important;contain-intrinsic-size:auto !important;}
.qrow-scroll .pcard .pcard-img{height:172px;}
/* Zébrage (30/08) : une rangée sur deux sur fond gris clair — marges négatives
   = le panneau gris déborde du gabarit sans décaler le contenu (titres alignés
   entre rangées grises et blanches) */
#quality-rows .qrow-sec:nth-child(even){background:#f0f0f4;
  padding:14px 14px 4px;margin-left:-14px;margin-right:-14px;}
@media(max-width:768px){
  /* 30/08 : la zone produits mobile n'a AUCUN padding latéral -> titres/cartes
     colles au bord (mesure 0-2px). 14px ici + les marges -14px du zebrage se
     compensent : bande grise plein bord, contenus alignes a 14px. */
  #quality-rows{padding:0 14px;}
  /* 30/08 (test Ethan) : CONTOUR de la photo aligne sur l'etiquette */
  body.apple-view .pgrid .sc-card .pcard-img{border:1px solid #c9c9ce;border-bottom:none;border-radius:0;box-sizing:border-box;background:#fff;}
  .qrow-title{font-size:29px;}
  .qrow-title .qrow-sub{font-size:14px;}
  .qrow-scroll .pcard{flex:0 0 166px;width:166px;}
  .qrow-scroll .pcard .pcard-img{height:150px;}
}

/* 30/08 : lignes header mobile visuellement EGALES — 14px de blanc au-dessus
   du logo (8px header + 6px header-inner) faisaient paraitre la ligne 1 plus
   haute que la ligne grise (40px chacune). En fin de fichier pour la cascade. */
@media(max-width:768px){
  body:not(.shared-view) header{padding-top:2px !important;}
  body:not(.shared-view) .header-inner{padding-top:0 !important;}
}
/* ── VUE CLIENT MOBILE (31/08 Ethan) : header + cartes 2 colonnes ──
   Le logo (absolu, centré, z1 — règle mobile .logo-link) passait PAR-DESSUS le
   compteur « 87 formats • 26,5 t » → logo réduit + compteur compacté pour
   cohabiter sur ~390px. Cellules des cartes 2 col : caps/valeurs réduites
   (« GRAMMAGE/DIMENSIONS/963 × 1005 » sortaient tronqués). */
@media(max-width:768px){
  body.shared-view .logo-full{height:26px !important;}
  body.shared-view .rbar-count{font-size:10.5px !important;margin-left:6px !important;}
  body.shared-view .pgrid .sc-card .sc-cap{font-size:8.5px !important;letter-spacing:.2px !important;}
  body.shared-view .pgrid .sc-card .sc-cell .sc-val{font-size:12px !important;}
  body.shared-view .pgrid .sc-card .sc-det-only .sc-val{font-size:12px !important;}
}
