/* ===== Fontes hebergees (vague 3 de l'audit du 14/10/2026) =====
   Les fichiers sont ceux que Google servait (DM Sans v17, Playfair Display v40, polices
   variables 400-700), copies dans /fontes/ et servis immuables avec CORS par _headers.
   Plus de feuille Google bloquante ni de connexion a fonts.gstatic.com : chaque index.html
   precharge les deux fichiers latin. Les plages unicode sont celles de Google : latin-ext ne
   se telecharge que si un caractere l'exige. */
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url(fontes/dm-sans-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url(fontes/dm-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:400 700;font-display:swap;src:url(fontes/playfair-display-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:400 700;font-display:swap;src:url(fontes/playfair-display-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
        *{margin:0;padding:0;box-sizing:border-box}
        :root{--bg:#ffffff;--bg2:#fafafa;--bg3:#f5f5f5;--bg4:#eeeeee;--text:#212121;--text2:#6e6e6e;--text3:#9e9e9e;--accent:#C9A84C;--accent2:#AB8F41;--accent-soft:rgba(201,168,76,0.1);--accent-texte:#7f6a2c;--sur-accent:#212121;--sur-gold:#212121;--gold:#C9A84C;--gold2:#AB8F41;--gold-soft:rgba(201,168,76,0.1);--success:#22c55e;--success-soft:rgba(34,197,94,0.1);--warning:#f59e0b;--warning-soft:rgba(245,158,11,0.1);--error:#ef4444;--error-soft:rgba(239,68,68,0.1);--info:#3b82f6;--info-soft:rgba(59,130,246,0.1);--border:#e0e0e0;--border2:#d0d0d0;--radius:16px;--radius-sm:10px;--radius-xs:6px}
        html{scroll-behavior:smooth}body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);line-height:1.6}
        ::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg2)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}
        
        .loading{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;z-index:9999;transition:opacity .4s}.loading.hidden{opacity:0;pointer-events:none}.loader{width:48px;height:48px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading p{color:var(--text2);font-size:.9rem}
        
        .promo-banner{background:var(--accent);color:var(--sur-accent);padding:.6rem 2rem;text-align:center;font-size:.85rem;font-weight:600}
        .link-promo-banner{background:var(--success-soft);color:var(--text);border-bottom:1px solid var(--success);padding:.6rem 2rem;text-align:center;font-size:.85rem;font-weight:600}
        
        /* CLOSED BANNER */
        .closed-banner{background:var(--error);color:#fff;padding:1rem 2rem;text-align:center;font-size:1rem;font-weight:600;position:sticky;top:0;z-index:150}.closed-banner .closed-icon{font-size:1.5rem;margin-right:.5rem}.closed-banner .closed-message{display:block;font-size:.85rem;font-weight:400;margin-top:.25rem;opacity:.9}.closed-banner .closed-phone{display:block;margin-top:.5rem}.closed-banner .closed-phone a{color:#fff;text-decoration:none;background:rgba(255,255,255,.2);padding:.5rem 1.25rem;border-radius:100px;display:inline-block;font-size:.95rem;font-weight:600;transition:background .2s}.closed-banner .closed-phone a:hover,.closed-banner .closed-phone a:active{background:rgba(255,255,255,.35)}.closed-banner.precommande{background:var(--gold-soft);color:var(--text);position:static;border-bottom:1px solid var(--border)}.closed-banner.precommande .next-opening{background:var(--bg2)}.closed-banner .next-opening{background:rgba(255,255,255,.2);padding:.5rem 1rem;border-radius:100px;display:inline-block;margin-top:.5rem;font-size:.85rem}
        
        header{position:sticky;top:0;z-index:100;padding:1rem 2rem;background:rgba(255,255,255,.95);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}.header-inner{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.logo-area{display:flex;align-items:center;gap:1rem}.logo{font-family:'Playfair Display',serif;font-size:1.75rem;font-weight:700;color:var(--text);text-decoration:none}.logo span{color:var(--accent)}.location-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg2);border:1px solid var(--border);border-radius:100px;font-size:.85rem;color:var(--text2)}.location-badge svg{width:16px;height:16px;color:var(--accent)}.header-right{display:flex;align-items:center;gap:1rem}
        .user-menu{position:relative;display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg2);border:1px solid var(--border);border-radius:100px;font-size:.85rem;color:var(--text2);cursor:pointer;transition:all .2s}.user-menu:hover{border-color:var(--accent);color:var(--text)}.user-menu svg{width:18px;height:18px}
        .cart-btn{display:flex;align-items:center;gap:.5rem;background:var(--gold);color:var(--sur-gold);padding:.75rem 1.25rem;border-radius:100px;font-weight:600;font-size:.9rem;cursor:pointer;border:none;transition:all .2s;font-family:inherit}.cart-btn:hover{background:var(--gold2);transform:translateY(-2px)}.cart-count{background:#fff;color:var(--gold);min-width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}
        
        .user-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--bg4);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:220px;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s;z-index:60;box-shadow:0 25px 50px -12px rgba(0,0,0,.5);overflow:hidden}.user-dropdown.active{opacity:1;visibility:visible;transform:translateY(0)}.user-dropdown-header{padding:1rem;border-bottom:1px solid var(--border);background:var(--bg3)}.user-dropdown-header strong{display:block;font-size:.95rem;margin-bottom:.2rem}.user-dropdown-header span{font-size:.8rem;color:var(--text3)}.user-dropdown-item{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;color:var(--text2);font-size:.9rem;cursor:pointer;transition:all .2s;border:none;background:none;width:100%;text-align:left;font-family:inherit}.user-dropdown-item:hover{background:var(--bg3);color:var(--text)}.user-dropdown-item svg{width:18px;height:18px}.user-dropdown-item.danger{color:var(--error)}.user-dropdown-item.danger:hover{background:var(--error-soft)}
        
        .hero{min-height:70vh;display:flex;align-items:center;padding:4rem 2rem;position:relative;overflow:hidden}.hero::before{content:'';position:absolute;top:-50%;right:-20%;width:80%;height:150%;background:radial-gradient(ellipse at center,rgba(232,165,75,.15) 0%,transparent 60%);pointer-events:none}.hero-content{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center;width:100%}.hero-text h1{font-family:'Playfair Display',serif;font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1.1;margin-bottom:1.5rem}.hero-text h1 em{color:var(--accent);font-style:normal}.hero-text p{font-size:1.1rem;color:var(--text2);margin-bottom:2rem;max-width:480px;line-height:1.7}.hero-badges{display:flex;gap:.75rem;margin-bottom:2rem;flex-wrap:wrap}.badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg2);border:1px solid var(--border);border-radius:100px;font-size:.85rem;color:var(--text2)}.badge svg{width:16px;height:16px;color:var(--accent)}.btn-primary{display:inline-flex;align-items:center;gap:.5rem;background:var(--accent);color:var(--sur-accent);padding:1rem 2rem;border-radius:100px;font-weight:600;font-size:1rem;text-decoration:none;transition:all .2s;border:none;cursor:pointer;font-family:inherit}.btn-primary:hover{background:var(--accent2);transform:translateY(-2px)}.hero-image{position:relative;display:flex;justify-content:center}.hero-image img{width:100%;max-width:400px;border-radius:50%;animation:float 6s ease-in-out infinite;box-shadow:0 40px 80px rgba(0,0,0,.5)}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-15px) rotate(2deg)}}
        
        .order-mode{background:var(--bg2);border-bottom:1px solid var(--border);padding:1rem 2rem}.order-mode-inner{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.mode-toggle{display:flex;background:var(--bg3);border-radius:100px;padding:4px;border:1px solid var(--border)}.mode-btn{padding:.65rem 1.25rem;border-radius:100px;border:none;background:transparent;color:var(--text2);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s;font-family:inherit}.mode-btn.active{background:var(--accent);color:var(--sur-accent)}.order-info{display:flex;align-items:center;gap:2rem;font-size:.9rem;color:var(--text2)}.order-info span{display:flex;align-items:center;gap:.5rem}.order-info svg{width:18px;height:18px;color:var(--success)}
        
        .categories{position:sticky;top:var(--hauteur-header,73px);z-index:50;background:var(--bg);border-bottom:1px solid var(--border);padding:0 2rem}.categories-inner{max-width:1400px;margin:0 auto;display:flex;gap:.5rem;overflow-x:auto;scrollbar-width:none;padding:1rem 0}.categories-inner::-webkit-scrollbar{display:none}.category-btn{padding:.6rem 1.15rem;background:transparent;border:1px solid var(--border);border-radius:100px;color:var(--text2);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap;font-family:inherit}.category-btn:hover{border-color:var(--accent);color:var(--text)}.category-btn.active{background:var(--accent);border-color:var(--accent);color:var(--sur-accent)}
        
        .menu-section{padding:3rem 2rem;max-width:1400px;margin:0 auto}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-title{font-family:'Playfair Display',serif;font-size:1.75rem;font-weight:600}.section-count{color:var(--text2);font-size:.9rem}.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem}
        
        /* FICHES PRODUIT COMPACTES (11-render, 24b-formulas) : texte à gauche, vignette et « + » à droite.
   L'ancienne carte, image pleine largeur, faisait 316 px de haut sur téléphone : deux produits et demi par écran. */
        .menu-card{position:relative;display:flex;align-items:stretch;gap:.9rem;padding:.85rem;background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--border);transition:border-color .2s,box-shadow .2s;cursor:pointer}.menu-card:hover{border-color:var(--accent);box-shadow:0 12px 28px -16px rgba(0,0,0,.35)}.menu-card-content{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start}.menu-card-tag{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--accent);color:var(--sur-accent);padding:.2rem .55rem;border-radius:100px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;margin-bottom:.35rem}.menu-card-title{font-family:'Playfair Display',serif;font-size:1.05rem;font-weight:600;line-height:1.3;margin-bottom:.2rem}.menu-card-desc{color:var(--text2);font-size:.8rem;margin-bottom:.5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45}.menu-card-footer{margin-top:auto;display:flex;align-items:center;gap:.75rem}.menu-card-price{font-size:.95rem;font-weight:700;color:var(--accent-texte);white-space:nowrap}.menu-card-image{position:relative;flex:0 0 108px;width:108px;height:108px;align-self:center}.menu-card-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;border-radius:var(--radius-xs);background:var(--bg3)}.menu-card-image .add-btn{position:absolute;right:-6px;bottom:-6px;border:3px solid var(--bg);box-shadow:0 3px 10px rgba(0,0,0,.2)}.add-btn{width:38px;height:38px;border-radius:50%;background:var(--accent);border:none;color:var(--sur-accent);font-size:1.3rem;line-height:1;cursor:pointer;transition:background .2s,transform .2s;display:flex;align-items:center;justify-content:center;font-family:inherit}.add-btn:hover{background:var(--accent2);transform:scale(1.08)}
        
        /* MODALS */
        .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:500;opacity:0;visibility:hidden;transition:all .3s;padding:1rem}.modal-overlay.active{opacity:1;visibility:visible}
        .modal-box{background:var(--bg2);border-radius:var(--radius);max-width:500px;width:100%;max-height:90vh;max-height:90dvh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border);box-shadow:0 35px 60px -15px rgba(0,0,0,.6);transform:scale(.95) translateY(20px);transition:transform .3s}.modal-overlay.active .modal-box{transform:scale(1) translateY(0)}.modal-box.large{max-width:600px}.modal-box.xlarge{max-width:700px}
        .modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg3)}.modal-header h2{font-family:'Playfair Display',serif;font-size:1.25rem;font-weight:600;display:flex;align-items:center;gap:.75rem}.modal-header h2 .icon{width:36px;height:36px;background:var(--accent-soft);border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-header h2 .icon svg{width:20px;height:20px;color:var(--accent)}.modal-close{width:36px;height:36px;border-radius:50%;background:var(--bg2);border:1px solid var(--border);color:var(--text2);font-size:1.25rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-close:hover{background:var(--error-soft);border-color:var(--error);color:var(--error)}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}
        
        /* FORMS */
        .form-section{margin-bottom:1.5rem}.form-section-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.form-section-title svg{width:16px;height:16px;color:var(--accent)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.form-row.thirds{grid-template-columns:1fr 2fr}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.85rem;font-weight:500;margin-bottom:.4rem;color:var(--text2)}.form-group label .required{color:var(--error);margin-left:2px}.form-input{width:100%;padding:.8rem 1rem;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.95rem;font-family:inherit;transition:all .2s}.form-input:focus{outline:none;border-color:var(--accent);background:var(--bg4)}.form-input::placeholder{color:var(--text3)}.form-input:disabled{opacity:.5;cursor:not-allowed}.form-hint{font-size:.8rem;color:var(--text3);margin-top:.4rem}.form-error{background:var(--error-soft);border:1px solid var(--error);color:var(--error);padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:.85rem;margin-bottom:1rem;display:none}.form-error.show{display:block}
        .payment-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.payment-option:hover{border-color:var(--accent)}
        
        /* STRIPE ELEMENTS */
        #stripe-card-container{margin-top:0.75rem;padding:1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);display:none}
        .payment-option:has(input[value="online"]:checked) ~ #stripe-card-container,
        #stripe-card-container.show{display:block}
        #card-element{padding:0.75rem;background:#fff;border:1px solid var(--border);border-radius:var(--radius-xs)}
        #card-errors{color:var(--error);font-size:0.8rem;margin-top:0.5rem;min-height:1.2rem}
        /* TWINT : masqué par défaut. Seuls les tenants en CHF l'affichent
           (openCheckoutModal), TWINT n'existant qu'en Suisse et qu'en francs. */
        #payment-twint-option{display:none}
        #payment-twint-option.show{display:flex}
        #twint-note{margin-top:0.75rem;padding:0.85rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:0.8rem;color:var(--text3);display:none}
        #twint-note.show{display:block}
        
        /* BUTTONS */
        .btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.85rem 1.5rem;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit;border:none}.btn-accent{background:var(--accent);color:var(--sur-accent)}.btn-accent:hover:not(:disabled){background:var(--accent2)}.btn-secondary{background:var(--bg3);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--text3)}.btn-ghost{background:transparent;color:var(--text2);padding:.5rem .75rem}.btn-ghost:hover{color:var(--text)}.btn-danger{background:var(--error-soft);color:var(--error);border:1px solid var(--error)}.btn-danger:hover:not(:disabled){background:var(--error);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-full{width:100%}.btn-sm{padding:.5rem 1rem;font-size:.85rem}
        
        /* AUTH */
        .auth-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;background:var(--bg3);padding:4px;border-radius:var(--radius-sm)}.auth-tab{flex:1;padding:.75rem;background:transparent;border:none;border-radius:var(--radius-xs);color:var(--text2);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s;font-family:inherit}.auth-tab.active{background:var(--accent);color:var(--sur-accent)}.auth-divider{display:flex;align-items:center;gap:1rem;margin:1.5rem 0;color:var(--text3);font-size:.85rem}.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--border)}
        
        /* PROFILE TABS - FIXED */
        .profile-tabs{display:flex;border-bottom:1px solid var(--border);margin:0;padding:0 1rem;background:var(--bg3);overflow-x:auto;scrollbar-width:none}.profile-tabs::-webkit-scrollbar{display:none}.profile-tab{padding:1rem 1.5rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text2);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s;font-family:inherit;display:flex;align-items:center;gap:.5rem;white-space:nowrap;flex-shrink:0}.profile-tab:hover{color:var(--text)}.profile-tab.active{color:var(--accent-texte);border-bottom-color:var(--accent-texte)}.profile-tab svg{width:18px;height:18px}.profile-content{display:none}.profile-content.active{display:block}
        
        /* ADDRESS CARDS */
        .address-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem;margin-bottom:.75rem;transition:all .2s}.address-card:hover{border-color:var(--border2)}.address-card.default{border-color:var(--accent);background:var(--accent-soft)}.address-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.address-label{font-weight:600;display:flex;align-items:center;gap:.5rem}.address-badge{font-size:.7rem;font-weight:600;text-transform:uppercase;padding:.2rem .5rem;border-radius:100px}.address-badge.default{background:var(--accent);color:var(--sur-accent)}.address-text{font-size:.9rem;color:var(--text2);line-height:1.5}.address-text em{display:block;margin-top:.25rem;font-style:italic;color:var(--text3)}.address-actions{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}.add-card{border:2px dashed var(--border);background:transparent;padding:1.5rem;text-align:center;cursor:pointer;transition:all .2s;border-radius:var(--radius-sm)}.add-card:hover{border-color:var(--accent);background:var(--accent-soft)}.add-card svg{width:24px;height:24px;color:var(--text3);margin-bottom:.5rem}.add-card span{display:block;font-size:.9rem;color:var(--text2)}
        
        /* ORDERS */
        .order-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:1rem;overflow:hidden}.order-card-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg4);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.5rem}.order-number{font-weight:700;font-family:monospace;font-size:.95rem}.order-date{font-size:.85rem;color:var(--text3);margin-left:.75rem}.order-status{padding:.35rem .75rem;border-radius:100px;font-size:.75rem;font-weight:600;text-transform:uppercase}.order-status.pending{background:var(--warning-soft);color:var(--warning)}.order-status.confirmed{background:var(--info-soft);color:var(--info)}.order-status.preparing{background:var(--accent-soft);color:var(--accent-texte)}.order-status.ready,.order-status.delivered{background:var(--success-soft);color:var(--success)}.order-status.cancelled{background:var(--error-soft);color:var(--error)}.order-card-body{padding:1rem}.order-items{margin-bottom:1rem}.order-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.9rem}.order-item:not(:last-child){border-bottom:1px solid var(--border)}.order-item-qty{color:var(--text3);margin-right:.5rem}.order-item-price{color:var(--text2)}.order-item.free{color:var(--success)}.order-total{display:flex;justify-content:space-between;align-items:center;padding-top:.75rem;border-top:1px solid var(--border);font-weight:700}.order-total span:last-child{color:var(--accent-texte);font-size:1.1rem}.orders-empty{text-align:center;padding:3rem 1rem;color:var(--text2)}.orders-empty svg{width:64px;height:64px;color:var(--text3);margin-bottom:1rem;opacity:.5}.orders-empty p{margin-bottom:1rem}
        
        /* HAUTEURS MOBILES — `dvh` après `vh`, jamais seul. Sur Chrome et Safari mobiles,
   100vh vaut la hauteur SANS barre d'adresse : barre affichée, le bas du tiroir
   panier passait sous l'écran, bouton « Commander » compris (constaté le
   15/09/2026 sur Android, panier Mamma Pizza Cagnes). `dvh` suit la hauteur
   réellement visible ; `vh` reste le repli des navigateurs qui l'ignorent. */
/* CART */
        .cart-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);opacity:0;visibility:hidden;transition:all .3s;z-index:200}.cart-overlay.active{opacity:1;visibility:visible}.cart-drawer{position:fixed;top:0;right:0;width:100%;max-width:420px;height:100vh;height:100dvh;background:var(--bg2);border-left:1px solid var(--border);transform:translateX(100%);transition:transform .4s cubic-bezier(.16,1,.3,1);z-index:201;display:flex;flex-direction:column}.cart-drawer.active{transform:translateX(0)}.cart-header{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--bg3)}.cart-header h3{font-family:'Playfair Display',serif;font-size:1.35rem;display:flex;align-items:center;gap:.75rem}.cart-header h3 span{background:var(--accent);color:var(--sur-accent);font-size:.8rem;padding:.2rem .6rem;border-radius:100px;font-family:'DM Sans',sans-serif}.cart-items{flex:1;overflow-y:auto;padding:1rem}.cart-empty{text-align:center;padding:3rem 1rem;color:var(--text2)}.cart-empty svg{width:64px;height:64px;margin-bottom:1rem;opacity:.3}
        .cart-item{display:flex;gap:1rem;padding:1rem;background:var(--bg3);border-radius:var(--radius-sm);margin-bottom:.75rem;border:1px solid var(--border)}.cart-item-image{width:65px;height:65px;border-radius:var(--radius-xs);object-fit:cover}.cart-item-details{flex:1;min-width:0}.cart-item-title{font-weight:600;margin-bottom:.2rem;font-size:.95rem}.cart-item-options{font-size:.75rem;color:var(--text3);margin-bottom:.5rem}.cart-item-actions{display:flex;justify-content:space-between;align-items:center}.quantity-control{display:flex;align-items:center;gap:.5rem}.qty-btn{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--bg2);color:var(--text);cursor:pointer;transition:all .2s;font-size:1rem;display:flex;align-items:center;justify-content:center}.qty-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.qty-value{width:28px;text-align:center;font-weight:600;font-size:.95rem}.cart-item-price{font-weight:700;color:var(--accent-texte);font-size:.95rem}
        .cart-promo{background:var(--accent-soft);border:1px dashed var(--accent);border-radius:var(--radius-sm);padding:.75rem;margin-bottom:.75rem;font-size:.85rem;color:var(--accent);text-align:center}.cart-promo.success{background:var(--success-soft);border-color:var(--success);color:var(--success)}
        /* Code refusé : croix pour l'écarter (18-promo-code). Ligne de l'horaire : un seul rang, même sur téléphone (13-cart). */
        .cart-promo.fermable{position:relative;padding-right:2.25rem}.cart-promo-fermer{position:absolute;top:50%;right:.35rem;transform:translateY(-50%);width:1.9rem;height:1.9rem;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:none;color:inherit;font-size:1.25rem;line-height:1;cursor:pointer}.cart-promo-fermer:hover,.cart-promo-fermer:focus-visible{background:rgba(0,0,0,.08)}
        .cart-horaire{display:flex;align-items:center;gap:.4rem;padding:.5rem 0;margin-bottom:.5rem;border-bottom:1px solid var(--border)}.cart-horaire-libelle{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.85rem;color:var(--text2)}.cart-horaire-choix{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}.cart-horaire select{padding:.3rem .4rem;border:1px solid var(--border);border-radius:4px;font-size:.8rem;background:var(--bg2);color:var(--text);max-width:9.5rem}
        .cart-gift{background:var(--bg3);border:1px solid var(--success);border-radius:var(--radius-sm);padding:1rem;margin-bottom:.75rem}.cart-gift-title{font-weight:600;color:var(--success);margin-bottom:.5rem;display:flex;align-items:center;gap:.5rem}.cart-gift-options{display:flex;flex-direction:column;gap:.5rem}.cart-gift-option{display:flex;align-items:center;gap:.75rem;padding:.5rem;background:var(--bg4);border:1px solid var(--border);border-radius:var(--radius-xs);cursor:pointer;transition:all .2s}.cart-gift-option:hover{border-color:var(--success)}.cart-gift-option.selected{border-color:var(--success);background:var(--success-soft)}.cart-gift-radio{width:16px;height:16px;border-radius:50%;border:2px solid var(--border2);pointer-events:none;flex-shrink:0}.cart-gift-option.selected .cart-gift-radio{border-color:var(--success);background:var(--success)}.cart-gift-option span{pointer-events:none}
        .gift-option-select{padding:0.3rem 0.5rem;border:1px solid var(--success);border-radius:4px;background:var(--bg);color:var(--text);font-size:0.8rem;font-family:inherit;cursor:pointer;margin-left:auto;min-width:100px}
        .cart-footer{padding:1.25rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:var(--bg3)}.cart-summary{margin-bottom:1rem}.summary-row{display:flex;justify-content:space-between;margin-bottom:.5rem;color:var(--text2);font-size:.9rem}.summary-row.free{color:var(--success)}.summary-row.total{color:var(--text);font-size:1.15rem;font-weight:700;padding-top:.75rem;border-top:1px solid var(--border);margin-top:.75rem}.min-order-warning{background:var(--warning-soft);color:var(--warning);padding:.75rem;border-radius:var(--radius-sm);font-size:.85rem;text-align:center;margin-bottom:1rem}
        
        /* PRODUCT MODAL */
        .product-modal-image{display:block;width:100%;height:220px;object-fit:cover}.product-modal-content{padding:1.5rem}.product-modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.product-modal-title{font-family:'Playfair Display',serif;font-size:1.5rem}.product-modal-price{font-size:1.25rem;font-weight:700;color:var(--accent-texte)}.product-modal-desc{color:var(--text2);margin-bottom:1.5rem;line-height:1.6;font-size:.95rem}.options-section{margin-bottom:1.25rem}.options-title{font-size:.9rem;font-weight:600;margin-bottom:.6rem;display:flex;justify-content:space-between;align-items:center}.options-title span{font-size:.75rem;color:var(--text3);font-weight:400}.option-grid{display:flex;flex-direction:column;gap:.4rem}.option-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--bg3);border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .2s}.option-item:hover{border-color:var(--border2)}.option-item.selected{border-color:var(--accent);background:var(--accent-soft)}.option-left{display:flex;align-items:center;gap:.75rem}.option-radio{width:18px;height:18px;border-radius:50%;border:2px solid var(--border2);display:flex;align-items:center;justify-content:center}.option-item.selected .option-radio{border-color:var(--accent)}.option-item.selected .option-radio::after{content:'';width:10px;height:10px;background:var(--accent);border-radius:50%}.option-checkbox{width:18px;height:18px;border-radius:4px;border:2px solid var(--border2);display:flex;align-items:center;justify-content:center}.option-item.selected .option-checkbox{border-color:var(--accent);background:var(--accent)}.option-item.selected .option-checkbox::after{content:'✓';color:var(--bg);font-size:.7rem;font-weight:700}.option-name{font-size:.9rem}.option-price{font-size:.85rem;color:var(--text3)}.option-price.add{color:var(--accent-texte);font-weight:500}.product-modal-footer{display:flex;gap:1rem;align-items:center;padding:1.25rem 1.5rem;border-top:1px solid var(--border);background:var(--bg3)}.modal-qty{display:flex;align-items:center;gap:.5rem;background:var(--bg2);border-radius:var(--radius-sm);padding:.35rem}.modal-qty-btn{width:36px;height:36px;border-radius:var(--radius-xs);border:none;background:var(--bg3);color:var(--text);font-size:1.1rem;cursor:pointer;transition:all .2s}.modal-qty-btn:hover{background:var(--accent);color:var(--sur-accent)}.modal-qty-value{font-size:1rem;font-weight:600;width:32px;text-align:center}.modal-add-btn{flex:1;padding:1rem;background:var(--accent);color:var(--sur-accent);border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.modal-add-btn:hover{background:var(--accent2)}
        
        /* TOAST : largeur du contenu, plafonnée à l'écran. Sans `width`, `left:50%` le bornait à une demi-largeur :
   un message de 40 caractères tenait sur quatre lignes.
   pointer-events:none (13/10/2026) : caché, le toast n'est que transparent et descendu de 100 px. Depuis la barre
   panier (bottom:88px, vague 1), il restait AU-DESSUS du bas de l'écran (z-index 600) et avalait les touchers au
   centre de « Voir le panier » et de « Commander » — un client de Mamma Pizza Cagnes n'a pas pu commander. Il ne
   porte que du texte : il ne doit jamais recevoir un toucher. */
        .toast{position:fixed;bottom:2rem;left:50%;width:max-content;max-width:calc(100vw - 2rem);transform:translateX(-50%) translateY(100px);background:var(--bg4);color:var(--text);padding:1rem 1.5rem;border-radius:var(--radius-sm);font-weight:500;opacity:0;transition:all .3s;z-index:600;pointer-events:none;display:flex;align-items:center;gap:.75rem;border:1px solid var(--border);box-shadow:0 25px 50px -12px rgba(0,0,0,.5)}.toast.show{transform:translateX(-50%) translateY(0);opacity:1}.toast.success{border-color:var(--success)}.toast.success::before{content:'✓';color:var(--success);font-weight:700}.toast.error{border-color:var(--error)}.toast.error::before{content:'✕';color:var(--error);font-weight:700}
        
        footer{background:var(--bg2);border-top:1px solid var(--border);padding:3rem 2rem 2rem;margin-top:4rem}.footer-inner{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr;gap:3rem}.footer-brand .logo{display:inline-block;margin-bottom:1rem}.footer-brand p{color:var(--text2);font-size:.9rem;max-width:280px}.footer-col h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;margin-bottom:1rem;color:var(--text2)}.footer-col p,.footer-col a{color:var(--text2);font-size:.9rem;text-decoration:none;display:block;margin-bottom:.5rem}.footer-col a:hover{color:var(--accent)}.footer-bottom{max-width:1400px;margin:2rem auto 0;padding-top:2rem;border-top:1px solid var(--border);text-align:center;color:var(--text2);font-size:.85rem}
        
        @media(max-width:1024px){.hero-content{grid-template-columns:1fr;text-align:center}.hero-text p{margin:0 auto 2rem}.hero-badges{justify-content:center}.hero-image{order:-1}.hero-image img{max-width:280px}.footer-inner{grid-template-columns:1fr;text-align:center}}
        @media(max-width:768px){header{padding:.75rem 1rem}.header-inner{gap:.5rem}.logo-area{min-width:0;flex:1 1 auto}.logo{font-size:1.1rem;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.location-badge{display:none}.header-right{gap:.5rem;flex-shrink:0}.user-menu{padding:.55rem}#user-name{display:none}.cart-btn{padding:.6rem .85rem}.closed-banner{position:static;padding:.75rem 1rem}.hero{min-height:auto;padding:2rem 1rem}.menu-section{padding:2rem 1rem}.menu-grid{grid-template-columns:1fr;gap:.75rem}.order-mode-inner{flex-direction:column;align-items:flex-start}.order-info{flex-direction:column;align-items:flex-start;gap:.5rem}.form-row{grid-template-columns:1fr}.modal-box{margin:0.5rem}}
        
        /* Intégration intl-tel-input avec form-input */
        .iti{width:100%;display:block}
        .iti__country-list{font-size:.9rem}
        .iti--separate-dial-code .iti__selected-dial-code{color:var(--text2);font-weight:500}

        /* FICHE PRODUIT / FORMULE (12-product-modal, 24b-formulas) : fenêtre au centre sur ordinateur,
   feuille du bas sur téléphone. L'image défile avec les options (.fiche-defil) au lieu d'en manger
   la place ; le pied « Ajouter » reste en bas. ✕ toujours visible, et le « retour » du téléphone
   referme la fiche au lieu de quitter le site. */
        .fiche{position:relative;padding:0}
        .fiche-defil{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
        .fiche .product-modal-footer{flex-shrink:0}
        .fiche .modal-add-btn{white-space:nowrap}
        .fiche-fermer{position:absolute;top:.75rem;right:.75rem;z-index:3;width:40px;height:40px;border-radius:50%;border:none;background:rgba(255,255,255,.94);color:var(--text);font-size:1.05rem;font-family:inherit;line-height:1;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}
        .fiche-fermer:hover{background:#fff;color:var(--error)}
        @media(max-width:768px){
            .fiche-overlay{align-items:flex-end;padding:0}
            .fiche-overlay .modal-box.fiche{width:100%;max-width:none;margin:0;border:none;border-radius:20px 20px 0 0;max-height:92vh;max-height:92dvh;transform:translateY(100%);transition:transform .35s cubic-bezier(.16,1,.3,1)}
            .fiche-overlay.active .modal-box.fiche{transform:translateY(0)}
            .fiche::before{content:'';position:absolute;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:rgba(255,255,255,.9);box-shadow:0 0 4px rgba(0,0,0,.3);z-index:3}
            .fiche .product-modal-image{height:190px}
            .fiche .product-modal-content{padding:1.1rem 1rem .5rem}
            .fiche .product-modal-title{font-size:1.3rem}
            .fiche .product-modal-footer{gap:.75rem;padding:.75rem 1rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0px))}
            .fiche .modal-qty-btn{width:34px;height:34px}
            .fiche .modal-qty-value{width:26px}
        }

        /* BARRE PANIER (13-cart, renderBarrePanier) : téléphone seulement, le bouton panier du header
   sort de l'écran dès qu'on fait défiler la carte. Nombre d'articles, total, prochain palier. */
        .barre-panier{display:none}
        .barre-panier-palier{font-size:.8rem;font-weight:600;color:var(--accent-texte);text-align:center;line-height:1.3;margin-bottom:.4rem}
        .barre-panier-palier:empty{display:none}
        .barre-panier-btn{width:100%;display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;border:none;border-radius:var(--radius-sm);background:var(--accent);color:var(--sur-accent);font-family:inherit;font-size:1rem;font-weight:600;cursor:pointer;box-shadow:0 6px 18px -8px rgba(0,0,0,.45)}
        .barre-panier-nb{min-width:26px;height:26px;padding:0 .45rem;border-radius:13px;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700}
        .barre-panier-libelle{flex:1;text-align:left}
        .barre-panier-total{white-space:nowrap}
        @keyframes barre-panier-monte{from{transform:translateY(100%)}to{transform:translateY(0)}}
        @media(max-width:768px){
            body.panier-plein .barre-panier{display:block;position:fixed;left:0;right:0;bottom:0;z-index:150;padding:.55rem .75rem;padding-bottom:calc(.55rem + env(safe-area-inset-bottom,0px));background:rgba(255,255,255,.97);border-top:1px solid var(--border);box-shadow:0 -6px 20px rgba(0,0,0,.08);animation:barre-panier-monte .25s ease-out}
            body.panier-plein{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
            body.panier-plein.palier-visible{padding-bottom:calc(100px + env(safe-area-inset-bottom,0px))}
            body.panier-plein .toast{bottom:calc(88px + env(safe-area-inset-bottom,0px))}
            body.panier-plein.palier-visible .toast{bottom:calc(112px + env(safe-area-inset-bottom,0px))}
        }

        /* MODE DE COMMANDE DANS LE TIROIR (09-delivery, choisirModeCommande) : même choix que sur la page. */
        .cart-mode{padding:.75rem 1rem 0;background:var(--bg2)}
        .cart-mode .mode-toggle{display:flex}
        .cart-mode .mode-btn{flex:1;padding:.6rem .5rem}

        /* ACCUEIL B (11b-accueil, test A/B) : bande compacte, offre prête à cliquer, « Les plus commandées ». */
        .hero.hero-b{min-height:0;display:block;padding:1rem 1rem .75rem}
        .hero-b .hero-content{display:block;text-align:left}
        .hero-b .hero-image,.hero-b #hero-subtitle,.hero-b .btn-primary{display:none}
        .hero-b .hero-text h1{font-size:1.45rem;line-height:1.2;margin-bottom:.55rem}
        .hero-b .hero-badges{justify-content:flex-start;gap:.5rem;margin-bottom:0}
        .hero-b .badge{padding:.3rem .7rem;font-size:.78rem}
        .hero-offre{margin-top:1rem;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;box-shadow:0 14px 32px -20px rgba(0,0,0,.4)}
        .hero-offre-image{position:relative;height:150px;background:var(--bg3)}
        .hero-offre-image img{display:block;width:100%;height:100%;object-fit:cover}
        .hero-offre-etiquette{position:absolute;top:.75rem;left:.75rem;background:var(--accent);color:var(--sur-accent);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.3rem .65rem;border-radius:100px}
        .hero-offre-corps{padding:.85rem 1rem 1rem}
        .hero-offre-titre{font-family:'Playfair Display',serif;font-size:1.2rem;font-weight:700;line-height:1.25}
        .hero-offre-texte{font-size:.85rem;color:var(--text2);line-height:1.4;margin-top:.25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
        .hero-offre-pied{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.75rem}
        .hero-offre-prix{font-size:1.15rem;font-weight:700;color:var(--accent-texte);white-space:nowrap}
        .hero-offre-btn{flex:1;max-width:240px;margin-left:auto;padding:.75rem 1.25rem;border:none;border-radius:100px;background:var(--accent);color:var(--sur-accent);font-family:inherit;font-size:.95rem;font-weight:600;cursor:pointer}
        .hero-offre-btn:hover{background:var(--accent2)}
        .hero-top{margin-top:1.25rem}
        .hero-top-titre{font-family:'Playfair Display',serif;font-size:1.2rem;font-weight:600;margin-bottom:.6rem}
        .hero-top-liste{display:flex;gap:.75rem;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;scroll-padding:0 1rem;margin:0 -1rem;padding:0 1rem .4rem}
        .hero-top-liste::-webkit-scrollbar{display:none}
        .hero-top-carte{flex:0 0 132px;scroll-snap-align:start;cursor:pointer}
        .hero-top-image{position:relative;height:110px}
        .hero-top-image img{display:block;width:100%;height:100%;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg3)}
        .hero-top-image .add-btn{position:absolute;right:6px;bottom:6px;width:34px;height:34px;font-size:1.2rem;box-shadow:0 3px 10px rgba(0,0,0,.25)}
        .hero-top-nom{font-size:.85rem;font-weight:600;line-height:1.25;margin-top:.4rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
        .hero-top-prix{font-size:.85rem;font-weight:700;color:var(--accent-texte)}
        @media(min-width:769px){
            .hero.hero-b{padding:1.5rem 2rem 1rem}
            #hero-b-zone{display:grid;grid-template-columns:minmax(320px,440px) minmax(0,1fr);gap:1.75rem;align-items:start}
            #hero-b-zone .hero-top{margin-top:1rem}
            .hero-top-liste{margin:0;padding:0 0 .4rem;scroll-padding:0}
        }

        /* CONNEXION (22-auth) : Google en tête, le geste le plus court ; l'e-mail en dessous. */
        .auth-google .auth-divider{margin:1.25rem 0}

        /* CODE POSTAL DU VISITEUR (13-cart, renderCpVisiteur) : minimum et frais de sa commune avant
   l'inscription. Le champ passe à 16 px sur écran tactile (règle SAISIE ci-dessous). */
        .cart-cp{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem .6rem;padding:.5rem 0 .6rem;margin-bottom:.5rem;border-bottom:1px solid var(--border);font-size:.85rem;color:var(--text2)}
        .cart-cp label{font-weight:600;color:var(--text)}
        .cart-cp-input{width:8.5rem;padding:.35rem .6rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);font-family:inherit;font-size:.9rem;letter-spacing:.06em}
        .cart-cp-input:focus{outline:none;border-color:var(--accent)}
        .cart-cp-info{flex:1 1 100%;font-size:.8rem;color:var(--text3)}
        .cart-retrait{margin-left:.35rem;padding:.2rem .65rem;border:1px solid currentColor;border-radius:100px;background:transparent;color:inherit;font-family:inherit;font-size:.8rem;font-weight:600;cursor:pointer}

        /* SAISIE : 16 px minimum sur écran tactile. En dessous, Safari sur iPhone zoome la page au focus
   d'un champ, et le client doit dézoomer à la main pour retrouver le bouton. !important : les menus
   d'horaire du panier portent leur taille en ligne (13-cart). */
        .form-input{font-size:1rem}
        @media(pointer:coarse){
            input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=hidden]),select,textarea{font-size:16px!important}
        }

        /* VAGUE 3 — PANIER MOYEN ET RÉACHAT (12/10/2026) */

        /* SUGGESTIONS DU TIROIR (17-upsell, suggestionsPanierHTML) : les produits « upsell » du manager,
   sous les articles, d'un toucher. Défilement horizontal au-delà de ce que l'écran montre. */
        .suggestions-panier{margin:.25rem 0 .5rem}
        .suggestions-titre{font-size:.85rem;font-weight:700;color:var(--text);margin-bottom:.5rem}
        .suggestions-liste{display:flex;gap:.6rem;overflow-x:auto;scrollbar-width:none;padding:.1rem .1rem .35rem;scroll-snap-type:x proximity}
        .suggestions-liste::-webkit-scrollbar{display:none}
        .suggestion{flex:0 0 205px;scroll-snap-align:start;display:flex;align-items:center;gap:.55rem;padding:.45rem .5rem .45rem .45rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:inherit;text-align:left;cursor:pointer;transition:border-color .2s}
        .suggestion:hover,.suggestion:active{border-color:var(--accent)}
        .suggestion img{flex-shrink:0;width:46px;height:46px;object-fit:cover;border-radius:var(--radius-xs);background:var(--bg3)}
        .suggestion-texte{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}
        .suggestion-nom{font-size:.8rem;font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
        .suggestion-prix{font-size:.8rem;font-weight:700;color:var(--accent-texte)}
        .suggestion-plus{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--sur-accent);display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:600;line-height:1}
        /* RANGÉES HORIZONTALES À LA SOURIS (04-ui-helpers, flechesDefilement) : sur ordinateur, la barre
   masquée et la molette verticale rendaient les cartes cachées inaccessibles. Flèches, fondu et
   glissé, sur écran à souris SEULEMENT : le tactile garde son défilement au doigt, inchangé. */
        .defile-cadre{position:relative}
        .defile-fleche{display:none}
        @media (hover:hover) and (pointer:fine){
            .defile-liste{cursor:grab}
            .defile-liste.defile-tire{cursor:grabbing;scroll-snap-type:none;user-select:none}
            .defile-liste img{-webkit-user-drag:none;user-select:none}
            .defile-fleche{position:absolute;top:var(--defile-fleche-haut,50%);transform:translateY(-50%);z-index:2;width:32px;height:32px;padding:0 0 2px;border:1px solid var(--border);border-radius:50%;background:var(--bg);color:var(--text);box-shadow:0 2px 8px rgba(0,0,0,.18);font-family:inherit;font-size:1.35rem;line-height:1;cursor:pointer;align-items:center;justify-content:center;transition:border-color .2s}
            .defile-fleche:hover{border-color:var(--accent)}
            .defile-gauche{left:2px}
            .defile-droite{right:2px}
            .defile-cadre.peut-gauche .defile-gauche,.defile-cadre.peut-droite .defile-droite{display:flex}
            .defile-cadre.peut-droite .defile-liste{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 56px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 56px),transparent)}
            .defile-cadre.peut-gauche .defile-liste{-webkit-mask-image:linear-gradient(to left,#000 calc(100% - 56px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 56px),transparent)}
            .defile-cadre.peut-gauche.peut-droite .defile-liste{-webkit-mask-image:linear-gradient(to right,transparent,#000 56px,#000 calc(100% - 56px),transparent);mask-image:linear-gradient(to right,transparent,#000 56px,#000 calc(100% - 56px),transparent)}
            .hero-top .defile-cadre{--defile-fleche-haut:55px} /* centrées sur les photos, pas sur nom + prix */
        }
        .categories-cadre{max-width:1400px;margin:0 auto} /* la barre garde sa largeur et son centrage */
        @media (hover:hover) and (pointer:fine){
            .categories-cadre .defile-gauche{left:-2px}
            .categories-cadre .defile-droite{right:-2px}
        }

        /* « IL MANQUE X € » (13-cart) : le minimum en petit, ce qui manque en gras. */
        .min-order-detail{white-space:nowrap;opacity:.85}

        /* FEUILLE DES SUPPLÉMENTS (12b) : après le « + » d'une carte. Au-dessus de la barre panier sur
   téléphone, en bas à droite sur ordinateur ; jamais devant le tiroir (z-index 200). */
        .feuille-supplements{position:fixed;left:.75rem;right:.75rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:160;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 12px 34px -8px rgba(0,0,0,.35);padding:.85rem .9rem .75rem;transform:translateY(calc(100% + 2rem));opacity:0;visibility:hidden;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .2s,visibility .3s}
        .feuille-supplements.visible{transform:translateY(0);opacity:1;visibility:visible}
        @media(max-width:768px){
            body.panier-plein .feuille-supplements{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
            body.panier-plein.palier-visible .feuille-supplements{bottom:calc(108px + env(safe-area-inset-bottom,0px))}
        }
        @media(min-width:769px){.feuille-supplements{left:auto;right:1.5rem;bottom:1.5rem;width:380px}}
        .fs-tete{display:flex;align-items:center;gap:.5rem;font-size:.9rem;line-height:1.3}
        .fs-coche{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--success);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}
        .fs-titre{flex:1;min-width:0}
        .fs-fermer{flex-shrink:0;width:32px;height:32px;margin:-.35rem -.35rem 0 0;border:none;border-radius:50%;background:transparent;color:var(--text3);font-size:.95rem;font-family:inherit;cursor:pointer}
        .fs-question{font-size:.8rem;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin:.65rem 0 .45rem}
        .fs-puces{display:flex;flex-wrap:wrap;gap:.4rem}
        .fs-puce{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .7rem;border:1px solid var(--border);border-radius:100px;background:var(--bg2);color:var(--text);font-family:inherit;font-size:.85rem;cursor:pointer;transition:background .15s,border-color .15s}
        .fs-puce .fs-signe{font-weight:700;color:var(--accent-texte)}
        .fs-puce .fs-prix{color:var(--text3);font-size:.8rem}
        .fs-puce.actif{background:var(--accent-soft);border-color:var(--accent)}
        .fs-puce.actif .fs-prix{color:var(--accent-texte)}
        .fs-pied{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.7rem}
        .fs-tout{border:none;background:none;padding:.35rem 0;color:var(--accent);font-family:inherit;font-size:.85rem;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
        .fs-fini{margin-left:auto;padding:.55rem 1.1rem;border:none;border-radius:100px;background:var(--accent);color:var(--sur-accent);font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer}

        /* « RECOMMANDER » (23b) : bandeau au-dessus des catégories, client connecté au panier vide ;
   tiroir vide ; « Mes commandes ». */
        .recommander-bandeau{padding:.75rem 2rem 0;background:var(--bg)}
        .recommander-bandeau[hidden]{display:none}
        .recommander-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;gap:.75rem;padding:.65rem .75rem .65rem 1rem;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent-soft)}
        .recommander-texte{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}
        .recommander-titre{font-size:.8rem;font-weight:700;color:var(--text2)}
        .recommander-detail{font-size:.85rem;font-weight:600;line-height:1.3;color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
        .recommander-btn{flex-shrink:0;padding:.55rem .95rem;border:none;border-radius:100px;background:var(--accent);color:var(--sur-accent);font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer}
        .recommander-fermer{flex-shrink:0;width:28px;height:28px;margin-right:-.35rem;border:none;border-radius:50%;background:transparent;color:var(--text3);font-family:inherit;font-size:.85rem;cursor:pointer}
        @media(max-width:768px){.recommander-bandeau{padding:.6rem 1rem 0}.recommander-inner{gap:.5rem;padding:.55rem .6rem .55rem .85rem}.recommander-btn{padding:.5rem .8rem;font-size:.85rem}}
        .recommander-vide{margin:0 .25rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg3);text-align:left}
        .recommander-vide .recommander-detail{-webkit-line-clamp:3;margin:.2rem 0 .8rem}
        .order-recommander{width:100%;margin-top:.85rem}

        /* ÉCRAN DE CONFIRMATION (20-order) : l'heure, puis l'offre de la prochaine commande. */
        .confirmation-heure{margin:0 0 1rem;padding:.8rem 1rem;border-radius:12px;background:var(--success-soft);border:1px solid var(--success)}
        .confirmation-heure-libelle{font-size:.85rem;font-weight:600;color:#15803d}
        .confirmation-heure-valeur{font-size:1.45rem;font-weight:700;color:#212121;line-height:1.25}
        .offre-commande{margin:0 0 1rem;padding:.9rem 1rem 1rem;border:2px dashed var(--accent);border-radius:14px;background:var(--accent-soft)}
        .offre-commande-sur{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#757575}
        .offre-commande-nom{font-family:'Playfair Display',serif;font-size:1.35rem;font-weight:700;color:#212121;margin:.15rem 0 .6rem}
        .offre-commande-code{display:inline-flex;align-items:center;gap:.6rem;padding:.5rem .6rem .5rem .9rem;border:1px solid var(--accent);border-radius:100px;background:#fff;color:#212121;font-family:inherit;font-size:1rem;cursor:pointer}
        .offre-commande-code strong{font-family:monospace;font-size:1.15rem;letter-spacing:.08em}
        .offre-commande-libelle{font-size:.75rem;color:#757575;text-transform:uppercase;letter-spacing:.04em}
        .offre-commande-copier{padding:.25rem .65rem;border-radius:100px;background:var(--accent);color:var(--sur-accent);font-size:.75rem;font-weight:600}
        .offre-commande-dates{font-size:.8rem;color:#616161;margin-top:.6rem;line-height:1.4}

        /* SÉLECTEUR DE MODE EN DOUBLE (13/10/2026) : sur téléphone, Livraison / À emporter ne se choisit
           plus que dans le tiroir panier, là où le choix compte (frais, minimum, horaire). La page garde
           ses deux lignes d'information (minimum, livraison offerte). Ordinateur : inchangé. */
        @media(max-width:768px){.order-mode .mode-toggle{display:none}.order-mode{padding:.75rem 1rem}}

        /* 01-template pose app-pending a l'injection, 25-boot le retire une fois la carte rendue :
           bandeaux et hero s'installent avant le premier affichage, rien ne saute (CLS 0,8-0,97 sur
           ordinateur le 14/10/2026). Le spinner, lui, reste visible. */
        body.app-pending > :not(#loading){visibility:hidden}
        /* width/height declares sur #hero-image (01-template) : la place est reservee avant le
           chargement. height:auto neutralise la hauteur fixe que l'attribut imposerait. */
        .hero-image img{height:auto}

        /* Produit en rupture : avant, toute la carte etait a opacite .5, texte compris (contraste 1,5:1).
           L'image s'efface, le texte reste lisible en gris (vague 3). */
        .menu-card.unavailable{pointer-events:none}
        .menu-card.unavailable .menu-card-image img{opacity:.45;filter:grayscale(1)}
        .menu-card.unavailable .menu-card-title,.menu-card.unavailable .menu-card-desc,.menu-card.unavailable .menu-card-price{color:var(--text2)}

        /* ===== Signalement d'une commande (23c-signalement.js, migration 110) ===== */
        .sig-lien{display:block;width:100%;margin-top:.6rem;background:none;border:0;padding:.4rem;color:var(--text2);font:inherit;font-size:.85rem;text-decoration:underline;cursor:pointer}
        .sig-reponse{margin-top:.75rem;padding:.75rem .85rem;border-radius:var(--radius-sm);background:var(--success-soft);font-size:.88rem;line-height:1.45}
        .sig-reponse.attente{background:var(--bg4);color:var(--text2)}
        .sig-titre{font-size:.78rem;font-weight:700;color:var(--success);margin-bottom:.25rem}
        .sig-message{margin-bottom:.35rem}
        .sig-code-ligne{margin-top:.2rem}
        .sig-code{display:inline-block;font-family:ui-monospace,Consolas,monospace;font-weight:700;letter-spacing:.06em;background:var(--bg);border:1px dashed var(--success);border-radius:6px;padding:.1rem .5rem}
        .sig-petit{font-size:.78rem;color:var(--text2)}
        .sig-utiliser{width:100%;margin-top:.6rem}
        .sig-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:550;display:flex;align-items:flex-end;justify-content:center;opacity:0;visibility:hidden;transition:opacity .25s}
        .sig-overlay.active{opacity:1;visibility:visible}
        .sig-feuille{background:var(--bg);color:var(--text);width:100%;max-width:520px;max-height:92vh;max-height:92dvh;display:flex;flex-direction:column;border-radius:22px 22px 0 0;transform:translateY(30px);transition:transform .25s;padding-bottom:env(safe-area-inset-bottom,0px)}
        .sig-overlay.active .sig-feuille{transform:translateY(0)}
        @media (min-width:700px){.sig-overlay{align-items:center}.sig-feuille{border-radius:var(--radius)}}
        .sig-poignee{width:40px;height:4px;border-radius:2px;background:var(--border2);margin:.6rem auto .2rem}
        .sig-entete{display:flex;justify-content:space-between;align-items:center;padding:0 1rem}
        .sig-entete h3{font-size:1.1rem;margin:0}
        .sig-sous{font-size:.8rem;color:var(--text2);padding:0 1rem .4rem}
        .sig-corps{overflow-y:auto;padding:0 1rem .5rem;flex:1}
        .sig-etiq{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text2);margin:.8rem 0 .4rem}
        .sig-puces{display:flex;flex-wrap:wrap;gap:.4rem}
        .sig-puce{border:1px solid var(--border);border-radius:999px;padding:.4rem .75rem;background:var(--bg);color:var(--text);font:inherit;font-size:.85rem;cursor:pointer}
        .sig-puce.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-texte);font-weight:600}
        .sig-ligne{display:flex;gap:.6rem;align-items:flex-start;border:1px solid var(--border);border-radius:12px;padding:.6rem .7rem;margin-bottom:.4rem}
        .sig-ligne.on{border-color:var(--accent);background:var(--accent-soft)}
        .sig-case{flex:none;width:20px;height:20px;margin-top:2px;border-radius:5px;border:2px solid var(--border2);background:var(--bg);cursor:pointer;padding:0}
        .sig-ligne.on .sig-case{background:var(--accent);border-color:var(--accent)}
        .sig-ligne-txt{flex:1;cursor:pointer;min-width:0}
        .sig-ligne-nom{font-weight:600;font-size:.9rem}
        .sig-ligne-txt em{font-style:normal;color:var(--warning)}
        .sig-qte{display:flex;align-items:center;gap:.35rem;font-size:.8rem;white-space:nowrap}
        .sig-qte button{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--text);font-weight:700;cursor:pointer}
        .sig-zone{width:100%;border:1px solid var(--border);border-radius:12px;padding:.6rem .7rem;font:inherit;font-size:.9rem;background:var(--bg2);color:var(--text);resize:vertical}
        .sig-photo{display:flex;gap:.7rem;align-items:center;margin-top:.8rem;border-radius:12px;padding:.7rem;background:var(--accent-soft);border:1.5px solid var(--accent);font-size:.85rem;line-height:1.35}
        .sig-photo.ok{background:var(--success-soft);border-color:var(--success)}
        .sig-photo img{width:56px;height:56px;object-fit:cover;border-radius:10px;flex:none}
        .sig-photo-ico{width:44px;height:44px;border-radius:10px;background:var(--bg);display:grid;place-items:center;font-size:1.3rem;flex:none}
        .sig-prendre{position:relative;display:inline-block;margin-top:.45rem;padding:.4rem .85rem;border-radius:999px;background:var(--text);color:var(--bg);font-weight:700;font-size:.82rem;cursor:pointer}
        .sig-fichier{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
        .sig-photo .sig-lien{display:inline;width:auto;padding:0;margin:0}
        .sig-relance{margin-top:.8rem;padding:.7rem;border-radius:12px;background:var(--warning-soft);font-size:.86rem}
        .sig-relance-btns{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}
        .sig-relance-btns label{position:relative}
        .sig-pied{padding:.6rem 1rem .9rem;border-top:1px solid var(--border)}
        .sig-mention{font-size:.72rem;color:var(--text3);text-align:center;margin-top:.4rem}

        /* ========== ALLERGÈNES (12c, migration 117) ==========
           Une ligne discrète sous la description de la fiche, et une feuille
           qui ne s'ouvre que si on la cherche (« Détails », pied de page).
           Au-dessus des modales (500-600) : elle s'ouvre par-dessus la fiche. */
        .fiche-allergenes{display:flex;align-items:baseline;gap:.4rem;margin:-1rem 0 1.25rem;font-size:.8rem;line-height:1.45;color:var(--text3)}
        .fiche-allergenes[hidden]{display:none}
        .fiche-allergenes b{font-weight:600;color:var(--text2)}
        .fiche-allergenes button{background:none;border:0;padding:0;font:inherit;cursor:pointer;color:var(--text2);text-decoration:underline;text-underline-offset:2px;white-space:nowrap;margin-left:auto}
        #allergenes-feuille{position:fixed;inset:0;z-index:700;display:none;background:rgba(0,0,0,.55);align-items:flex-end;justify-content:center}
        #allergenes-feuille.active{display:flex}
        #allergenes-feuille .af-boite{background:var(--bg);color:var(--text);width:100%;max-width:640px;max-height:88vh;max-height:88dvh;border-radius:18px 18px 0 0;display:flex;flex-direction:column}
        #allergenes-feuille .af-tete{padding:1.1rem 1.25rem .85rem;border-bottom:1px solid var(--border)}
        #allergenes-feuille h3{font-family:'Playfair Display',serif;font-size:1.3rem;margin:0 0 .35rem;display:flex;justify-content:space-between;align-items:center}
        #allergenes-feuille h3 button{background:none;border:0;padding:.25rem .5rem;margin-right:-.5rem;cursor:pointer;font-size:1.5rem;line-height:1;color:var(--text2)}
        #allergenes-feuille .af-note{font-size:.78rem;color:var(--text3);line-height:1.45;margin:0}
        #allergenes-feuille .af-corps{overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:.25rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom))}
        #allergenes-feuille h4{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text3);margin:1rem 0 .35rem}
        #allergenes-feuille .af-ligne{display:flex;justify-content:space-between;gap:1rem;padding:.45rem 0;border-bottom:1px solid var(--border);font-size:.85rem}
        #allergenes-feuille .af-ligne span{flex:1 0 42%}
        #allergenes-feuille .af-ligne i{font-style:normal;color:var(--text2);text-align:right;font-size:.8rem}
        #allergenes-feuille .af-ligne.af-inconnu i{color:var(--text3)}
