@import url('./fonts/fonts.css');
/* `[hidden]` deve valere davvero.
   Il foglio non aveva una regola generale: esisteva solo quella circoscritta a
   `.delivery-details`. Altrove vinceva `.btn{display:inline-flex}` — stessa
   specificità, ordine di sorgente successivo — e il pulsante «Scarica PDF
   Premium Black» restava visibile pur essendo marcato nascosto, puntava a `#`,
   non faceva nulla e comprimeva il vicino «Copia codice». */
[hidden]{display:none!important}

:root{--bg:#0b0908;--panel:#15110e;--panel2:#1d1712;--paper:#211a14;--ink:#f4eadc;--muted:#b9aa99;--line:rgba(218,185,128,.2);--red:#c9202c;--red2:#8d111a;--gold:#cfaa6b;--radius:22px;--shadow:0 28px 80px rgba(0,0,0,.38)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 18% 8%,#241a12 0,transparent 28%),var(--bg);color:var(--ink);font-family:Manrope,Arial,sans-serif;line-height:1.6}img{display:block;width:100%;height:100%;object-fit:cover}a{color:inherit;text-decoration:none}.container{width:min(1440px,calc(100% - 64px));margin:auto}.announcement{background:#8d111a;color:#fff;font-size:.8rem;letter-spacing:.03em}.announcement .container{height:36px;display:flex;justify-content:space-between;align-items:center}.announcement a{text-decoration:underline;font-weight:700}.site-header{position:sticky;top:0;z-index:50;background:rgba(9,8,7,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.nav-wrap{height:86px;display:flex;align-items:center;gap:38px}.brand{width:170px;height:60px;display:flex;align-items:center}.brand img{object-fit:contain}.main-nav{display:flex;gap:30px;margin-left:auto}.main-nav a{font-size:.84rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;position:relative}.main-nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-12px;height:2px;background:var(--red);transition:.3s}.main-nav a:hover:after,.main-nav a.active:after{right:0}.nav-actions{display:flex;align-items:center;gap:14px}.account-link{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:14px;background:linear-gradient(135deg,var(--red),#a6141e);color:#fff;padding:15px 24px;border-radius:2px;border:1px solid var(--red);font-weight:800;font-size:.82rem;letter-spacing:.05em;text-transform:uppercase;transition:.25s;cursor:pointer}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(201,32,44,.25)}.btn-small{padding:12px 18px}.btn-outline{background:transparent;border-color:var(--gold);color:var(--ink)}.btn-light{background:#f5e8d7;color:#1a120d;border-color:#f5e8d7}.btn-block{width:100%}.menu-toggle{display:none;background:none;color:#fff;border:0;font-size:1.6rem}.hero{min-height:780px;display:flex;align-items:center;position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#080706 0%,rgba(8,7,6,.95) 37%,rgba(8,7,6,.25) 68%,rgba(8,7,6,.05));z-index:1}.hero-grid{display:grid;grid-template-columns:1.02fr 1.38fr;min-height:780px;position:relative}.hero-copy{z-index:2;align-self:center;padding:90px 0}.eyebrow{color:#e63e47;text-transform:uppercase;letter-spacing:.22em;font-size:.72rem;font-weight:800;margin:0 0 20px}.hero h1,.page-hero h1,h2,h3{font-family:"Cormorant Garamond",serif}.hero h1{font-size:clamp(4rem,6.5vw,7.5rem);line-height:.86;letter-spacing:-.045em;margin:0 0 28px;font-weight:600}.text-red{color:var(--red)}.lead{font-size:1.08rem;color:var(--muted);max-width:650px}.hero-actions{display:flex;gap:16px;margin:34px 0}.hero-note{display:flex;gap:18px;align-items:center;color:var(--muted);font-size:.83rem}.avatar-stack{display:flex}.avatar-stack span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#211912;border:1px solid var(--gold);margin-right:-8px}.hero-media{position:absolute;z-index:0;inset:0 0 0 36%;overflow:hidden}.hero-photo-main{position:absolute;inset:0}.hero-photo-main img{animation:slowZoom 14s ease-in-out infinite alternate}.hero-photo-small{position:absolute;left:8%;bottom:38px;width:260px;height:200px;border:10px solid #0c0907;box-shadow:var(--shadow)}.hero-seal{position:absolute;right:7%;bottom:44px;width:140px;height:140px;border-radius:50%;background:var(--red);border:1px dashed #f2b9bc;display:grid;place-items:center;text-align:center;font-family:"Cormorant Garamond",serif;font-size:1.35rem;line-height:1.05;transform:rotate(-7deg)}@keyframes slowZoom{to{transform:scale(1.06)}}
.quick-strip{background:#0d0b09;border-bottom:1px solid var(--line)}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr)}.quick-item{padding:26px 32px;border-right:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.quick-item strong{display:block;font-family:"Cormorant Garamond",serif;font-size:1.45rem}.quick-item span{color:var(--muted);font-size:.82rem}.round-arrow{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;display:grid!important;place-items:center;color:var(--gold)!important}.section{padding:110px 0}.compact{padding:74px 0}.section-paper{background:linear-gradient(180deg,#17120e,#100d0b)}.section-dark{background:#070606;border-block:1px solid var(--line)}.intro-grid,.story-block,.order-cta,.info-band{display:grid;grid-template-columns:1fr 1.15fr;gap:70px;align-items:center}.intro-copy h2,.section-head h2,.order-cta-copy h2,.account-promo h2,.info-band h2{font-size:clamp(3rem,5vw,5.5rem);line-height:.95;margin:0 0 24px;font-weight:600}.intro-copy p,.section-head>p,.order-cta-copy p,.account-promo p{color:var(--muted)}.image-collage{height:620px;position:relative}.image-collage .large{height:100%;width:76%;margin-left:auto;border-radius:240px 240px 10px 10px;overflow:hidden}.image-collage .small{position:absolute;left:0;bottom:26px;width:44%;height:42%;border:12px solid #0e0b09;border-radius:170px 170px 12px 12px;overflow:hidden}.image-caption{position:absolute;z-index:2;right:18px;top:20px;background:rgba(8,7,6,.74);padding:10px 14px;color:#fff;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.section-head{display:flex;justify-content:space-between;gap:80px;align-items:end;margin-bottom:46px}.section-head>p{max-width:520px}.menu-showcase{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.menu-tile{height:440px;position:relative;overflow:hidden;background:#17120e;border:1px solid var(--line)}.menu-tile:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 35%,rgba(0,0,0,.92))}.menu-tile img{transition:.5s}.menu-tile:hover img{transform:scale(1.06)}.tile-copy{position:absolute;z-index:2;inset:auto 18px 20px;display:flex;justify-content:space-between;align-items:end}.tile-copy small{color:var(--gold);text-transform:uppercase;letter-spacing:.12em}.tile-copy h3{font-size:1.75rem;margin:3px 0}.tile-price{font-size:.76rem;color:#fff}.marquee{overflow:hidden;padding:25px 0}.marquee-track{width:max-content;display:flex;animation:marquee 22s linear infinite}.marquee-item{font-family:"Cormorant Garamond",serif;font-size:2.3rem;white-space:nowrap;color:#d9c1a3}.marquee-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--red);margin:0 28px}@keyframes marquee{to{transform:translateX(-50%)}}.order-cta{background:linear-gradient(135deg,#24180f,#120d09);border:1px solid var(--line);min-height:520px}.order-cta-image{height:100%}.order-cta-copy{padding:60px}.mode-pills{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0}.mode-pills span{border:1px solid var(--line);padding:8px 12px;font-size:.75rem}.social-grid{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:12px}.social-card{height:370px;position:relative;overflow:hidden}.social-card:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 40%,rgba(0,0,0,.9))}.social-card img{transition:.45s}.social-card:hover img{transform:scale(1.07)}.social-overlay{position:absolute;z-index:2;inset:auto 16px 16px;display:flex;justify-content:space-between;align-items:end;font-size:.77rem}.social-tag{color:var(--gold)}.social-actions{display:flex;gap:14px;margin-top:25px}.account-promo{padding:70px;background:linear-gradient(120deg,#7c0f18,#1b0f0c);display:grid;grid-template-columns:1fr 1.2fr;gap:60px}.account-features{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.18)}.account-feature{padding:28px;background:rgba(10,7,6,.62)}.account-feature strong{display:block;font-family:"Cormorant Garamond",serif;font-size:1.35rem}.account-feature span{color:#cdbdad;font-size:.82rem}.info-band{background:#16110d}.info-band-image{height:620px}.info-band-copy{padding:60px}.hours-list{margin:28px 0}.hours-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:13px 0;color:var(--muted)}
.page-hero{padding:90px 0 50px;background:radial-gradient(circle at 80% 20%,#3b2415 0,transparent 28%),#0b0908;border-bottom:1px solid var(--line)}.page-hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.page-hero h1{font-size:clamp(4rem,6vw,7rem);line-height:.9;margin:0 0 20px}.page-hero-visual{height:500px;overflow:hidden;border-radius:220px 220px 6px 6px;border:1px solid var(--line)}.page-kicker{font-family:"Cormorant Garamond",serif;color:var(--gold);font-size:1.4rem}.story-block{margin-bottom:80px}.story-block.reverse .story-image{order:2}.story-image{height:560px;overflow:hidden}.story-copy h2{font-size:4rem;line-height:.95}.values-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.value-card{padding:38px;border:1px solid var(--line);background:#15100d}.value-number{font-family:"Cormorant Garamond",serif;font-size:3.5rem;color:var(--red)}.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.price-card{padding:42px;background:#17110d;border:1px solid var(--line)}.price-card.featured{border-color:var(--red);transform:translateY(-12px)}.price{font-family:"Cormorant Garamond",serif;font-size:4rem;color:var(--red)}.notice{margin-top:25px;padding:18px;border-left:3px solid var(--red);background:#1c1510;color:var(--muted)}
.order-layout{display:grid;grid-template-columns:1fr 360px;gap:28px}.order-toolbar{margin-bottom:24px}.category-tabs{display:flex;gap:10px;flex-wrap:wrap}.category-tab{padding:10px 16px;border:1px solid var(--line);background:#15110e;color:#fff;cursor:pointer}.category-tab.active{background:var(--red);border-color:var(--red)}.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.product-card{background:#17120e;border:1px solid var(--line);overflow:hidden}.product-card img{height:190px}.product-card-body{padding:18px}.product-card h3{font-size:1.5rem;margin:0}.product-card p{color:var(--muted);font-size:.8rem}.product-bottom{display:flex;justify-content:space-between;align-items:center}.product-price{color:var(--gold);font-weight:800}.add-btn{width:34px;height:34px;border-radius:50%;border:0;background:var(--red);color:#fff;cursor:pointer}.cart-panel{position:sticky;top:110px;height:max-content;background:#17120e;border:1px solid var(--line);padding:24px}.delivery-switch{display:flex;background:#0d0b09;margin-bottom:20px}.delivery-switch button{flex:1;padding:10px;border:0;background:transparent;color:#aaa}.delivery-switch button.active{background:var(--red);color:#fff}.cart-note{color:var(--muted);font-size:.8rem}.cart-count,.cart-total{display:flex;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line)}
.booking-shell,.auth-layout,.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:30px}.booking-aside,.auth-promo,.contact-cards{background:#17120e;border:1px solid var(--line);padding:34px}.booking-card,.auth-card,.map-card{background:#15110e;border:1px solid var(--line);padding:34px}/* `minmax(0,1fr)` e non `1fr` nudo.
   Una traccia `1fr` ha per minimo automatico il `min-content`: se un elemento
   non riesce a restringersi, la traccia cresce **oltre** il contenitore invece
   di stringere lui. Il campo Data è l'unico controllo nativo del modulo — su
   Safari `input[type=date]` disegna il proprio widget, con un `min-content` più
   largo di quello che Chrome gli dà — e su iPhone la traccia si allargava
   portando fuori dalla scheda la parte destra, icona compresa. Chrome non lo
   mostra a nessuna larghezza: il difetto è arrivato da un telefono vero.
   `minmax(0,1fr)` toglie quel minimo e lascia stringere la colonna. */
.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gold)}.field input,.field select,.field textarea{width:100%;padding:14px;background:#0d0b09;border:1px solid var(--line);color:#fff}.form-actions{margin-top:20px}.form-hint{color:var(--muted);font-size:.75rem}.success-box{display:none;padding:18px;background:#15331e;color:#d5f4dc}.auth-tabs{display:flex;gap:8px;margin-bottom:20px}.auth-tabs button,.dashboard-nav button{padding:10px 15px;border:1px solid var(--line);background:#0d0b09;color:#fff}.auth-tabs .active,.dashboard-nav .active{background:var(--red)}.auth-form{display:none}.auth-form.active{display:block}.dashboard{display:none}.dashboard-head{display:flex;justify-content:space-between}.dashboard-grid{display:grid;grid-template-columns:220px 1fr;gap:20px}.dashboard-nav{display:flex;flex-direction:column}.dash-panel{display:none}.dash-panel.active{display:block}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.stat-card,.contact-card{padding:22px;background:#17120e;border:1px solid var(--line)}.contact-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.map-card{min-height:600px;background-image:linear-gradient(rgba(0,0,0,.28),rgba(0,0,0,.72)),url('img/locale/dsc_1279.jpg');background-size:cover;background-position:center;position:relative}.map-overlay{position:absolute;left:28px;right:28px;bottom:28px;background:rgba(9,7,6,.9);padding:28px}
.site-footer{background:#070606;border-top:1px solid var(--line);padding:70px 0 28px}.footer-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:60px}.footer-brand img{width:180px;height:auto;object-fit:contain}.footer-brand p,.footer-col span,.footer-col a{color:#a99a8b;font-size:.82rem}.footer-col{display:flex;flex-direction:column;gap:10px}.footer-col h4{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--gold)}.social-links{display:flex;gap:10px}.social-links a{width:36px;height:36px;border:1px solid var(--line);display:grid;place-items:center}/* Il piede del sito, su tre livelli distinti: i collegamenti, i dati che la
   legge chiede in ogni pagina, il credito di chi l'ha fatto. Prima era una
   riga sola con dentro tutto il blocco camerale, che su telefono si spezzava
   in cinque righe illeggibili e su desktop schiacciava i collegamenti. */
.footer-bottom{border-top:1px solid var(--line);padding-top:24px;margin-top:50px;display:flex;flex-direction:column;align-items:center;gap:14px;color:#71675e;font-size:.72rem;text-align:center}
.footer-company{line-height:1.6}
/* Il credito è discreto: più piccolo del resto, e solo il nome è cliccabile. */
.footer-credit{font-size:.66rem;color:#5e564e;line-height:1.6}
.footer-credit a{color:#8a7f74;text-decoration:none;border-bottom:1px solid rgba(138,127,116,.4)}
.footer-credit a:hover,.footer-credit a:focus-visible{color:var(--gold,#d1ae73);border-bottom-color:currentColor}
.mobile-bar{display:none}.reveal{opacity:0;transform:translateY(24px);transition:.7s}.reveal.visible{opacity:1;transform:none}
@media(max-width:1050px){.main-nav{display:none}.menu-toggle{display:block}.main-nav.open{display:flex;position:absolute;top:86px;left:0;right:0;background:#0c0a08;flex-direction:column;padding:28px 32px}.hero-grid{grid-template-columns:1fr}.hero-media{left:40%;opacity:.55}.menu-showcase{grid-template-columns:repeat(2,1fr)}.social-grid{grid-template-columns:repeat(2,1fr)}.social-card:first-child{grid-column:1/-1}.product-grid{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.container{width:min(100% - 28px,680px)}.announcement .container span:last-child{display:none}.nav-wrap{height:72px}.brand{width:138px}.nav-actions .btn-small,.account-link{display:none}.hero,.hero-grid{min-height:760px}.hero:before{background:linear-gradient(180deg,rgba(8,7,6,.4),#080706 74%)}.hero-media{left:0;right:0;bottom:auto;height:390px;opacity:.72}.hero-copy{padding:400px 0 70px}.hero h1{font-size:4.3rem}.hero-photo-small,.hero-seal{display:none}.quick-grid{grid-template-columns:1fr}.quick-item{border-right:0;border-bottom:1px solid var(--line)}.section{padding:72px 0}.intro-grid,.story-block,.order-cta,.info-band,.page-hero-grid,.booking-shell,.auth-layout,.contact-grid,.account-promo{grid-template-columns:1fr}.image-collage{height:470px}.section-head{display:block}.section-head h2,.intro-copy h2,.order-cta-copy h2,.account-promo h2,.info-band h2{font-size:3.2rem}.menu-showcase{grid-template-columns:1fr 1fr}.menu-tile{height:330px}.social-grid{grid-template-columns:1fr 1fr}.social-card{height:260px}.order-cta-copy,.account-promo,.info-band-copy{padding:28px}.account-features{grid-template-columns:1fr}.page-hero-visual{height:390px}.story-block.reverse .story-image{order:0}.price-grid,.values-grid,.stat-grid{grid-template-columns:1fr}.order-layout{grid-template-columns:1fr}.cart-panel{position:static}.product-grid{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:minmax(0,1fr)}.field.full{grid-column:auto}.contact-cards{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr}/* Il piede resta a colonna anche qui: la vecchia regola lo riportava a
   `block`, e le due righe societaria e credito — due <span> — si sarebbero
   incollate in una colata unica, che è proprio ciò che si voleva togliere. */
.footer-bottom{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}.mobile-bar{position:fixed;display:grid;grid-template-columns:repeat(3,1fr);bottom:0;left:0;right:0;z-index:80;background:#8d111a}.mobile-bar a{text-align:center;padding:12px;color:#fff;font-weight:800;font-size:.75rem}.site-footer{padding-bottom:80px}}
@media(max-width:480px){.hero h1{font-size:3.45rem}.menu-showcase,.product-grid,.social-grid{grid-template-columns:1fr}.menu-tile{height:380px}.hero-actions,.social-actions{flex-direction:column}.btn{width:100%}}


/* V8 — complete visual and usability refinement */
:root{--cream:#f2e4cf;--cream-soft:#d8c6ae;--surface:#16110d;--surface-2:#1c1510}
body{overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
.brand{width:186px;height:68px;flex:0 0 auto}.brand img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 14px rgba(0,0,0,.22))}
.account-link svg{width:21px;height:21px}.account-link:hover{color:var(--gold);border-color:var(--gold)}
.main-nav a,.btn{white-space:nowrap}
.hero-photo-main img{object-position:center 54%}.hero-photo-main:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,7,6,.16),transparent 45%)}
.hero-photo-small,.image-collage .small{border-color:#120e0b}
.hero-photo-small img,.image-collage img,.story-image img,.page-hero-visual img,.menu-tile img,.social-card img,.order-cta-image img,.info-band-image img{object-position:center}
.menu-tile,.product-card,.price-card,.value-card,.booking-card,.booking-aside,.auth-card,.auth-promo,.contact-card,.map-card{box-shadow:0 20px 55px rgba(0,0,0,.18)}
.menu-tile{border-radius:3px}.menu-tile:focus-visible,.social-card:focus-visible,.quick-item:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.product-card{display:flex;flex-direction:column;min-height:390px}.product-card img{height:215px;aspect-ratio:4/3}.product-info{padding:19px;display:flex;flex:1;flex-direction:column;justify-content:space-between;gap:18px}.product-info h3{font-size:1.55rem;margin:3px 0 6px}.product-info p{color:var(--muted);font-size:.82rem;margin:0}.product-bottom{border-top:1px solid var(--line);padding-top:14px}
.story-image{border:1px solid var(--line);background:#120e0b}.story-image img{aspect-ratio:4/3}
.order-cta{overflow:hidden}.order-cta-image{min-height:520px}.order-cta-image img{object-position:center 50%}.order-cta-image.chef-focus img{object-position:center 67%}
.page-hero-visual img{object-position:center 48%}.page-hero-visual{background:#120e0b}
.footer-brand img{width:190px;height:100px;object-fit:contain;margin-bottom:8px}
.footer-col a:hover,.footer-brand a:hover{color:var(--cream)}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid rgba(211,35,46,.42);border-color:var(--red)}
button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.btn:active{transform:translateY(0)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-photo-main img,.marquee-track{animation:none}.reveal{opacity:1;transform:none;transition:none}}
@media(max-width:1180px){.nav-wrap{gap:24px}.main-nav{gap:20px}.brand{width:160px}.btn-small{padding-inline:14px}}
@media(max-width:760px){.brand{width:150px;height:60px}.site-header{background:rgba(9,8,7,.96)}.main-nav.open{top:72px;border-top:1px solid var(--line);box-shadow:0 20px 45px rgba(0,0,0,.4)}.hero-photo-main img{object-position:62% center}.order-cta-image,.order-cta-image.chef-focus{height:380px;min-height:380px}.order-cta-image.chef-focus img{object-position:center 67%}.page-hero-visual img{object-position:center}.footer-brand img{width:165px}}

/* V9 — elegant motion system */
body{opacity:0;transform:translateY(8px);transition:opacity .55s ease,transform .55s ease}
body.page-ready{opacity:1;transform:none}
.site-header{transition:background .35s ease,box-shadow .35s ease,border-color .35s ease}
.site-header.scrolled{background:rgba(7,6,5,.97);box-shadow:0 12px 40px rgba(0,0,0,.28);border-color:rgba(212,166,93,.2)}
.brand img{transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .45s ease}.brand:hover img{transform:scale(1.025)}
.main-nav a{transition:color .25s ease}.main-nav a:hover{color:var(--gold)}
.btn{position:relative;overflow:hidden}.btn:before{content:"";position:absolute;top:-80%;left:-45%;width:32%;height:260%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);transform:rotate(18deg) translateX(-240%);transition:transform .75s ease}.btn:hover:before{transform:rotate(18deg) translateX(620%)}
.hero-copy>*{opacity:0;transform:translateY(22px);animation:heroEnter .75s cubic-bezier(.2,.75,.2,1) forwards}.hero-copy>.eyebrow{animation-delay:.08s}.hero-copy>h1{animation-delay:.18s}.hero-copy>.lead{animation-delay:.3s}.hero-copy>.hero-actions{animation-delay:.42s}.hero-copy>.hero-note{animation-delay:.54s}
@keyframes heroEnter{to{opacity:1;transform:none}}
.hero-photo-main{transform:translate3d(var(--hero-x,0),var(--hero-y,0),0);transition:transform .18s linear}.hero-photo-main img{will-change:transform}
.hero-photo-small{animation:floatCard 5.5s ease-in-out infinite}.hero-seal{animation:sealFloat 4.8s ease-in-out infinite}
@keyframes floatCard{0%,100%{transform:translateY(0) rotate(-.4deg)}50%{transform:translateY(-10px) rotate(.5deg)}}
@keyframes sealFloat{0%,100%{transform:rotate(-7deg) translateY(0)}50%{transform:rotate(-4deg) translateY(-8px)}}
.quick-item{transition:background .3s ease,transform .3s ease}.quick-item:hover{background:#15110e;transform:translateY(-3px)}.round-arrow{transition:transform .35s ease,border-color .35s ease,background .35s ease}.quick-item:hover .round-arrow{transform:translateX(5px);border-color:var(--gold);background:rgba(212,166,93,.08)}
.reveal{transition:opacity .8s cubic-bezier(.2,.75,.2,1),transform .8s cubic-bezier(.2,.75,.2,1),filter .8s ease;filter:blur(5px)}.reveal.visible{filter:none}.reveal[data-reveal="left"]{transform:translateX(-34px)}.reveal[data-reveal="right"]{transform:translateX(34px)}.reveal[data-reveal="scale"]{transform:scale(.965)}.reveal.visible[data-reveal]{transform:none}
.menu-showcase .menu-tile,.price-grid .price-card,.values-grid .value-card,.social-grid .social-card,.product-grid .product-card,.contact-cards .contact-card,.stat-grid .stat-card{opacity:0;transform:translateY(26px);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.75,.2,1),box-shadow .35s ease,border-color .35s ease}.visible .menu-tile,.visible.price-grid .price-card,.visible.values-grid .value-card,.visible.social-grid .social-card,.visible.product-grid .product-card,.visible.contact-cards .contact-card,.visible.stat-grid .stat-card{opacity:1;transform:none}
.menu-showcase>*:nth-child(2),.price-grid>*:nth-child(2),.values-grid>*:nth-child(2),.social-grid>*:nth-child(2),.product-grid>*:nth-child(2),.contact-cards>*:nth-child(2),.stat-grid>*:nth-child(2){transition-delay:.08s}.menu-showcase>*:nth-child(3),.price-grid>*:nth-child(3),.values-grid>*:nth-child(3),.social-grid>*:nth-child(3),.product-grid>*:nth-child(3),.contact-cards>*:nth-child(3),.stat-grid>*:nth-child(3){transition-delay:.16s}.menu-showcase>*:nth-child(4),.values-grid>*:nth-child(4),.social-grid>*:nth-child(4),.product-grid>*:nth-child(4),.contact-cards>*:nth-child(4){transition-delay:.24s}.menu-showcase>*:nth-child(5),.social-grid>*:nth-child(5),.product-grid>*:nth-child(5),.contact-cards>*:nth-child(5){transition-delay:.32s}.product-grid>*:nth-child(6),.contact-cards>*:nth-child(6){transition-delay:.4s}
.menu-tile:hover,.social-card:hover,.product-card:hover,.price-card:hover,.value-card:hover{border-color:rgba(212,166,93,.46);box-shadow:0 28px 75px rgba(0,0,0,.3)}
.menu-tile img,.social-card img,.story-image img,.page-hero-visual img,.order-cta-image img,.info-band-image img,.map-card>img,.auth-promo>img{transition:transform 1s cubic-bezier(.2,.7,.2,1),filter .65s ease;will-change:transform}.story-image:hover img,.page-hero-visual:hover img,.order-cta:hover .order-cta-image img,.info-band:hover .info-band-image img,.map-card:hover>img,.auth-promo:hover>img{transform:scale(1.035);filter:saturate(1.06)}
.image-collage .large{animation:collageBreath 8s ease-in-out infinite}.image-collage .small{animation:collageFloat 6s ease-in-out infinite}
@keyframes collageBreath{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes collageFloat{0%,100%{transform:translateY(0) rotate(-.3deg)}50%{transform:translateY(-11px) rotate(.5deg)}}
.eyebrow:before{content:"";display:inline-block;width:0;height:1px;background:currentColor;vertical-align:middle;margin-right:0;transition:width .75s ease,margin-right .75s ease}.visible .eyebrow:before,.hero-copy .eyebrow:before{width:30px;margin-right:12px}
.price-card.featured{animation:featuredGlow 4.5s ease-in-out infinite}@keyframes featuredGlow{0%,100%{box-shadow:0 20px 55px rgba(0,0,0,.18)}50%{box-shadow:0 24px 70px rgba(201,32,44,.18)}}
.status-pill{animation:statusPulse 2.8s ease-in-out infinite}@keyframes statusPulse{50%{box-shadow:0 0 0 7px rgba(201,32,44,0)}}
@media(prefers-reduced-motion:reduce){body{opacity:1;transform:none;transition:none}.hero-copy>*{opacity:1;transform:none;animation:none}.hero-photo-small,.hero-seal,.image-collage .large,.image-collage .small,.price-card.featured,.status-pill{animation:none}.hero-photo-main{transform:none!important}.btn:before{display:none}.menu-showcase .menu-tile,.price-grid .price-card,.values-grid .value-card,.social-grid .social-card,.product-grid .product-card,.contact-cards .contact-card,.stat-grid .stat-card{opacity:1;transform:none;transition:none}}
@media(max-width:760px){.hero-photo-small,.hero-seal{animation:none}.hero-photo-main{transform:none!important}.reveal[data-reveal="left"],.reveal[data-reveal="right"]{transform:translateY(22px)}}

/* V10 — contact and booking page redesign */
.contact-hero{padding:78px 0 72px;background:radial-gradient(circle at 75% 12%,rgba(141,17,26,.2),transparent 35%),linear-gradient(135deg,#0a0807,#17100c);}
.contact-hero-inner{max-width:880px}
.contact-hero h1{font-size:clamp(4.2rem,7vw,7.2rem);line-height:.86;margin-bottom:24px}
.contact-hero-actions{display:flex;gap:14px;margin-top:30px}
.contact-section{padding-top:88px}
.contact-layout{display:grid;grid-template-columns:minmax(420px,.88fr) minmax(520px,1.25fr);gap:28px;align-items:stretch}
.contact-panel{background:linear-gradient(145deg,#19130f,#100d0a);border:1px solid var(--line);padding:44px;display:flex;flex-direction:column;min-height:680px}
.contact-panel-head h2{font-size:4.3rem;line-height:.9;margin:0 0 18px}.contact-panel-head>p:last-child{color:var(--muted);max-width:520px}
.contact-list{margin-top:28px;border-top:1px solid var(--line)}
.contact-row{display:grid;grid-template-columns:42px minmax(0,1fr) 24px;gap:14px;align-items:center;padding:19px 0;border-bottom:1px solid var(--line);transition:padding .25s ease,color .25s ease}
.contact-row:hover{padding-left:8px;color:var(--gold)}
.contact-row span:nth-child(2){display:flex;flex-direction:column;min-width:0}.contact-row small{font-size:.67rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:2px}.contact-row strong{font-size:1rem;line-height:1.35;overflow-wrap:anywhere}.contact-row b{font-weight:400;color:var(--red)}
.contact-icon{width:38px;height:38px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--red)}
.contact-socials{margin-top:auto;display:flex;gap:20px;align-items:center;padding-top:30px}.contact-socials>span{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.contact-socials a{font-weight:700;font-size:.86rem}
.contact-visual{position:relative;min-height:680px;overflow:hidden;border:1px solid var(--line);background:#100d0a}.contact-visual img{object-position:center 48%;transition:transform 1.1s ease}.contact-visual:hover img{transform:scale(1.035)}
.contact-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(6,5,4,.9) 100%)}
.contact-visual-overlay{position:absolute;z-index:2;left:34px;right:34px;bottom:30px;display:flex;align-items:end;justify-content:space-between;gap:20px}.contact-visual-overlay small{display:block;color:var(--gold);text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px}.contact-visual-overlay strong{font-family:"Cormorant Garamond",serif;font-size:2.2rem;line-height:1.05}.round-link{width:54px;height:54px;border-radius:50%;border:1px solid rgba(255,255,255,.42);display:grid;place-items:center;font-size:1.25rem;flex:none}
.hours-section{padding-top:20px}.hours-showcase{display:grid;grid-template-columns:.95fr 1.05fr;gap:80px;padding:60px;border:1px solid var(--line);background:#15100d}.hours-showcase h2{font-size:3.8rem;line-height:.94;margin:0}.hours-table>div{display:flex;justify-content:space-between;gap:20px;padding:18px 0;border-bottom:1px solid var(--line)}.hours-table span{color:var(--muted)}.hours-table strong{color:var(--cream)}

.booking-hero{padding:58px 0 72px;background:radial-gradient(circle at 72% 15%,rgba(141,17,26,.12),transparent 32%),#0b0908}
.booking-hero-grid{display:grid;grid-template-columns:minmax(460px,.92fr) minmax(560px,1.08fr);gap:28px;align-items:stretch}
.booking-visual{position:relative;min-height:760px;overflow:hidden;border:1px solid var(--line);background:#120e0b}.booking-visual img{position:absolute;inset:0;object-position:center 55%;filter:brightness(.66) saturate(.9);transition:transform 1.2s ease}.booking-visual:hover img{transform:scale(1.035)}.booking-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,5,4,.08),rgba(6,5,4,.15) 32%,rgba(6,5,4,.92) 100%)}
.booking-visual-copy{position:absolute;z-index:2;left:48px;right:48px;bottom:96px}.booking-visual-copy h1{font-family:"Cormorant Garamond",serif;font-size:clamp(4.3rem,6vw,6.8rem);line-height:.84;margin:0 0 20px}.booking-visual-copy p:last-child{color:#d5c6b5;max-width:470px}
.booking-visual-note{position:absolute;z-index:3;left:48px;right:48px;bottom:34px;padding-top:18px;border-top:1px solid rgba(255,255,255,.22);display:flex;justify-content:space-between;gap:20px;font-size:.8rem}.booking-visual-note span{color:var(--muted)}.booking-visual-note a{font-weight:800;color:var(--cream)}
.booking-form-wrap{background:linear-gradient(145deg,#18120e,#100d0a);border:1px solid var(--line);padding:52px 54px}.booking-form-head h2{font-size:4rem;line-height:.92;margin:0 0 15px}.booking-form-head>p:last-child{color:var(--muted);margin-bottom:34px}.booking-grid{gap:18px}.booking-form-modern .field input,.booking-form-modern .field select,.booking-form-modern .field textarea{min-height:54px;padding:15px 16px;background:#0b0908;border-color:#3a2d23;font-family:inherit;font-size:.9rem}.booking-form-modern .field textarea{min-height:105px;resize:vertical}.booking-form-modern .field label{font-weight:800;color:#c9a76e}.privacy-check{display:flex;gap:12px;align-items:flex-start;margin-top:20px;color:var(--muted);font-size:.75rem;line-height:1.5}.privacy-check input{margin-top:3px;accent-color:var(--red)}
.booking-actions{display:flex;align-items:center;gap:18px;margin-top:24px}.booking-actions .form-hint{max-width:260px;line-height:1.45}.booking-trust{background:#080706;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.booking-trust-grid{display:grid;grid-template-columns:repeat(3,1fr)}.booking-trust-grid>div{padding:28px 34px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.booking-trust-grid>div:last-child{border-right:0}.booking-trust-grid small{color:var(--red);text-transform:uppercase;letter-spacing:.12em;font-size:.65rem}.booking-trust-grid strong{font-family:"Cormorant Garamond",serif;font-size:1.45rem;font-weight:600}

@media(max-width:1080px){.contact-layout,.booking-hero-grid{grid-template-columns:1fr}.contact-panel,.contact-visual,.booking-visual{min-height:620px}.hours-showcase{grid-template-columns:1fr;gap:35px}.booking-form-wrap{padding:44px}.booking-visual-copy{bottom:100px}}
@media(max-width:760px){.contact-hero{padding:55px 0}.contact-hero h1{font-size:4.2rem}.contact-hero-actions{flex-direction:column}.contact-panel{padding:28px;min-height:auto}.contact-panel-head h2{font-size:3.3rem}.contact-visual{min-height:500px}.contact-socials{align-items:flex-start;flex-wrap:wrap}.contact-socials>span{width:100%}.contact-visual-overlay{left:24px;right:24px}.contact-visual-overlay strong{font-size:1.7rem}.hours-showcase{padding:30px}.hours-showcase h2{font-size:3rem}.hours-table>div{display:block}.hours-table strong{display:block;margin-top:4px}.booking-hero{padding:28px 0 55px}.booking-visual{min-height:590px}.booking-visual-copy{left:28px;right:28px;bottom:108px}.booking-visual-copy h1{font-size:4.4rem}.booking-visual-note{left:28px;right:28px;display:block}.booking-form-wrap{padding:30px 24px}.booking-form-head h2{font-size:3.25rem}.booking-actions{align-items:stretch;flex-direction:column}.booking-actions .btn{width:100%}.booking-trust-grid{grid-template-columns:1fr}.booking-trust-grid>div{border-right:0;border-bottom:1px solid var(--line)}}

/* V12 — social icons */
.social-links a{color:#c9b69f;transition:color .25s ease,border-color .25s ease,transform .25s ease,background .25s ease}
.social-links a svg{width:18px;height:18px;display:block}
.social-links a:hover{color:#fff;border-color:var(--red);background:var(--red);transform:translateY(-2px)}

/* V13 — Area cliente dashboard */
.account-dashboard-page{min-height:70vh}.account-welcome{padding:70px 0 36px;background:linear-gradient(120deg,#17110d,#0a0807);border-bottom:1px solid var(--line)}.account-welcome-grid{display:flex;align-items:end;justify-content:space-between;gap:40px}.account-welcome h1{font-size:clamp(3rem,6vw,5.8rem);margin:0 0 12px;line-height:.95}.account-welcome .lead{max-width:720px;margin:0}.account-actions-top{display:flex;gap:12px;flex-wrap:wrap}.customer-shell{display:grid;grid-template-columns:270px minmax(0,1fr);gap:28px;align-items:start}.customer-sidebar{position:sticky;top:112px;background:#12100e;border:1px solid var(--line);padding:22px}.customer-profile-card{display:flex;align-items:center;gap:14px;padding-bottom:22px;border-bottom:1px solid var(--line)}.customer-profile-card div{min-width:0}.customer-profile-card strong,.customer-profile-card small{display:block}.customer-profile-card small{color:var(--muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-avatar.large{width:52px;height:52px;flex:0 0 52px;border-radius:50%;display:grid;place-items:center;background:var(--red);font-family:"Cormorant Garamond",serif;font-size:1.6rem}.customer-nav{display:grid;gap:5px;margin:20px 0}.customer-nav button{width:100%;display:flex;align-items:center;gap:12px;text-align:left;background:transparent;border:0;color:var(--muted);padding:13px 12px;font:inherit;cursor:pointer}.customer-nav button span{width:22px;color:var(--gold)}.customer-nav button:hover,.customer-nav button.active{background:#221813;color:#fff}.customer-nav button.active{border-left:3px solid var(--red)}.customer-logout{width:100%;padding:13px;background:transparent;border:1px solid var(--line);color:var(--muted);cursor:pointer}.customer-content{min-width:0}.dash-panel{display:none}.dash-panel.active{display:block}.panel-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:26px}.panel-heading h2{font-size:clamp(2.2rem,4vw,4rem);line-height:1;margin:0}.member-badge,.default-badge{border:1px solid var(--gold);color:var(--gold);padding:8px 12px;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.account-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.account-stats .stat-card{min-height:170px;display:flex;flex-direction:column}.stat-card span{color:var(--gold);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em}.stat-card strong{font-family:"Cormorant Garamond",serif;font-size:3.2rem;line-height:1;margin:16px 0 8px}.stat-card small{color:var(--muted);line-height:1.4}.points-progress{height:4px;background:#33251d;margin-top:auto}.points-progress i{display:block;height:100%;background:var(--red)}.dashboard-two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:28px}.dashboard-block{background:#12100e;border:1px solid var(--line);padding:24px;min-width:0}.block-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.block-head h3{margin:0;font-size:1.45rem}.block-head button{background:none;border:0;color:var(--gold);cursor:pointer}.order-summary-card,.booking-summary-card,.booking-detail-card,.address-card{background:#0d0b09;border:1px solid var(--line);padding:20px}.order-summary-top,.order-summary-bottom{display:flex;justify-content:space-between;gap:20px;align-items:center}.order-summary-top small,.order-summary-top strong{display:block}.order-items{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.order-items span,.favorite-items span{background:#1c1511;border:1px solid var(--line);padding:7px 10px;font-size:.74rem}.order-summary-bottom>strong{font-size:1.6rem}.status-pill{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;border-radius:99px;background:#14331d;color:#bfe8c8;font-size:.7rem;white-space:nowrap}.booking-summary-card,.booking-detail-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center}.calendar-date{width:66px;height:74px;border:1px solid var(--red);display:grid;place-items:center;align-content:center}.calendar-date strong{font-size:2rem;line-height:1}.calendar-date span{color:var(--gold);font-size:.7rem}.booking-summary-card strong,.booking-summary-card small{display:block}.booking-summary-card p{margin:5px 0 0;color:var(--muted);font-size:.8rem}.favorite-strip{margin-top:18px;background:linear-gradient(110deg,#78111a,#27110e);padding:28px;display:grid;grid-template-columns:1fr 1.5fr auto;align-items:center;gap:22px}.favorite-strip h3{margin:0}.favorite-items{display:flex;gap:8px;flex-wrap:wrap}.favorite-strip>a{color:#fff;font-weight:700}.orders-table{display:grid;gap:12px}.order-row{display:grid;grid-template-columns:1.3fr .8fr .8fr .7fr .8fr auto;gap:16px;align-items:center;background:#12100e;border:1px solid var(--line);padding:18px}.order-row small,.order-row strong{display:block}.order-row>a{color:var(--gold)}.booking-detail-card{grid-template-columns:auto minmax(0,1fr) auto auto}.booking-actions{display:flex;gap:8px}.booking-actions button,.address-card>button{background:transparent;border:1px solid var(--line);color:#fff;padding:8px 10px}.address-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:18px;align-items:center}.address-icon{font-size:1.5rem;color:var(--red)}.address-card small,.address-card strong{display:block}.address-card p{margin:4px 0 0;color:var(--muted)}.profile-form{background:#12100e;border:1px solid var(--line);padding:28px}.profile-form textarea{min-height:120px}/* Sedici pixel, e non è una scelta tipografica.
   Su iOS, toccare un campo con testo sotto i 16px fa **zoomare Safari**: la
   vista si stringe, il layout resta largo, e il controllo che si sta toccando
   finisce oltre il bordo della scheda. È il difetto che Marco vedeva sul campo
   Data — l'unico che stava toccando — e che nessun motore da scrivania
   riproduce, perché lo zoom al fuoco è di iOS soltanto.
   La regola c'era già, per la sola area account: qui si estende al modulo di
   prenotazione, che era rimasto a 14,4px. */
.account-dashboard-section .field input,.account-dashboard-section .field textarea,.booking-form-modern .field input,.booking-form-modern .field select,.booking-form-modern .field textarea{font-size:16px}.account-dashboard-section .container,.customer-shell,.customer-content,.dashboard-block,.order-summary-card,.booking-summary-card{overflow-wrap:anywhere}
@media(max-width:980px){.customer-shell{grid-template-columns:1fr}.customer-sidebar{position:static}.customer-nav{grid-template-columns:repeat(5,1fr);overflow:auto}.customer-nav button{justify-content:center;white-space:nowrap}.customer-logout{display:none}.account-stats,.dashboard-two-col{grid-template-columns:1fr}.favorite-strip{grid-template-columns:1fr}.order-row{grid-template-columns:1fr 1fr}.booking-detail-card,.address-card{grid-template-columns:auto 1fr}.booking-detail-card .status-pill,.booking-detail-card .booking-actions,.address-card .default-badge,.address-card>button{grid-column:2}}
@media(max-width:760px){.account-welcome{padding:45px 0 25px}.account-welcome-grid{display:block}.account-actions-top{margin-top:24px}.customer-sidebar{padding:14px}.customer-profile-card{padding:4px 4px 16px}.customer-nav{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:max-content;margin-bottom:0}.customer-nav button span{display:none}.panel-heading{align-items:flex-start}.account-stats{grid-template-columns:1fr}.dashboard-block{padding:18px}.booking-summary-card,.booking-detail-card,.address-card{grid-template-columns:1fr}.calendar-date{width:58px}.booking-detail-card .status-pill,.booking-detail-card .booking-actions,.address-card .default-badge,.address-card>button{grid-column:auto}.order-row{grid-template-columns:1fr}.favorite-strip{padding:22px}.account-dashboard-page{padding-bottom:70px}}

/* V16 — AYCE PDF e catalogo ordini completo */
/* `1fr` equivale a `minmax(auto,1fr)`: la traccia non scende sotto il
   contenuto minimo della scheda, e il pulsante «Menu PDF in aggiornamento» —
   reso incomprimibile da `white-space:nowrap` — teneva ogni colonna a 419px.
   Tre colonne più i vuoti chiedevano 1361px di finestra, ma il salvagente a
   una colonna entrava solo a 1100px: in mezzo, fra 1101 e 1360px, la pagina
   scorreva di lato e la terza scheda usciva dallo schermo. `minmax(0,…)`
   lascia che la traccia si stringa, e le azioni vanno a capo invece di
   spingere. 1280px è la larghezza di portatile più comune: era rotta. */
.ayce-pdf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px}.ayce-pdf-card{background:#12100e;border:1px solid var(--line);padding:34px;min-height:390px;display:flex;flex-direction:column}.ayce-pdf-card.featured{border-color:var(--red);background:linear-gradient(145deg,#24120f,#120d0b)}.menu-time{color:var(--red);text-transform:uppercase;letter-spacing:.14em;font-size:.68rem;font-weight:800}.ayce-pdf-card h3{font-size:2rem;margin:15px 0}.menu-price{font-family:"Cormorant Garamond",serif;font-size:5rem;line-height:.9;color:#fff}.menu-price span{font-size:2rem}.ayce-pdf-card p{color:var(--muted);margin:24px 0}.menu-card-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:auto;flex-wrap:wrap}.menu-card-actions>a:last-child{color:var(--gold);font-weight:700}.experience-list{list-style:none;padding:0;margin:30px 0;display:grid;gap:18px}.experience-list li{border-top:1px solid var(--line);padding-top:16px}.experience-list strong,.experience-list span{display:block}.experience-list span{color:var(--muted);font-size:.88rem;margin-top:4px}
.box-explainer{background:linear-gradient(120deg,#20140e,#0d0a08);border-bottom:1px solid var(--line)}.box-guide{display:grid;grid-template-columns:1.1fr 1.6fr .8fr;gap:34px;align-items:center}.box-guide h2{font-size:3.4rem;margin:0 0 14px}.box-guide>div>p{color:var(--muted)}.box-guide ol{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.box-guide li{background:#0b0908;border:1px solid var(--line);padding:22px;min-height:180px}.box-guide li span{width:34px;height:34px;border-radius:50%;background:var(--red);display:grid;place-items:center;font-weight:800}.box-guide li strong,.box-guide li small{display:block}.box-guide li strong{margin:18px 0 7px}.box-guide li small{color:var(--muted);line-height:1.45}.box-rule{border-left:3px solid var(--gold);padding:20px;background:#16100c}.box-rule strong,.box-rule span{display:block}.box-rule span{color:var(--muted);font-size:.82rem;margin-top:8px}.order-layout-v16{grid-template-columns:minmax(0,1fr) 360px}.catalog-controls{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:18px}.menu-search{min-width:330px;flex:1;background:#12100e;border:1px solid var(--line);display:flex;align-items:center;padding:0 16px}.menu-search input{width:100%;background:none;border:0;color:#fff;padding:15px;font:inherit;outline:0}.meal-filter{display:flex;border:1px solid var(--line)}.meal-filter button{background:transparent;border:0;color:var(--muted);padding:13px 16px;cursor:pointer}.meal-filter button.active{background:var(--red);color:#fff}.category-scroll{display:flex;overflow:auto;padding-bottom:8px;scrollbar-width:thin}.category-scroll .category-tab{white-space:nowrap}.catalog-result-head{display:flex;justify-content:space-between;align-items:center;margin:18px 0 22px}.catalog-result-head strong,.catalog-result-head small{display:block}.catalog-result-head small{color:var(--muted)}.text-button{background:none;border:0;color:var(--gold);cursor:pointer}.product-image-wrap{height:210px;position:relative;overflow:hidden}.product-image-wrap img{transition:transform .55s}.product-card:hover .product-image-wrap img{transform:scale(1.045)}.availability-badge{position:absolute;top:14px;left:14px;background:#c99c55;color:#130d08;padding:7px 10px;font-size:.65rem;font-weight:800;text-transform:uppercase}.product-category{color:var(--red);text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;font-weight:700}.availability-note{display:inline-block;color:#e1b976;font-size:.72rem;margin-top:8px}.no-results{grid-column:1/-1;border:1px dashed var(--line);padding:60px;text-align:center}.no-results strong,.no-results span{display:block}.no-results span{color:var(--muted);margin-top:6px}
@media(max-width:1100px){.ayce-pdf-grid{grid-template-columns:1fr}.box-guide{grid-template-columns:1fr}.box-guide ol{grid-template-columns:repeat(3,1fr)}.order-layout-v16{grid-template-columns:1fr}.cart-panel{position:static}.catalog-controls{align-items:stretch;flex-direction:column}.menu-search{min-width:0}}
@media(max-width:760px){.box-guide ol{grid-template-columns:1fr}.box-guide li{min-height:auto}.catalog-result-head{align-items:flex-start;gap:12px}.catalog-result-head .text-button{text-align:right}.meal-filter{overflow:auto}.meal-filter button{white-space:nowrap}.ayce-pdf-card{padding:26px}.menu-price{font-size:4rem}.menu-card-actions{align-items:stretch;flex-direction:column}.menu-card-actions .btn{width:100%}}

/* V22 final review */
.product-card.visible{opacity:1!important;transform:none!important}
.product-grid{min-height:240px}
.booking-date-wrap{position:relative}.booking-date-wrap input{cursor:pointer;padding-right:48px}.booking-date-icon{position:absolute;right:16px;bottom:14px;color:var(--gold);font-size:1.2rem}.field-help{display:block;color:var(--muted);font-size:.72rem;margin-top:7px}
.promo-code-box{display:grid;grid-template-columns:1fr auto;gap:8px;margin:18px 0}.promo-code-box input{min-width:0;background:#0e0c0a;border:1px solid var(--line);color:#fff;padding:12px}.promo-feedback{min-height:18px;color:var(--gold);font-size:.75rem;margin:0 0 8px}.cart-summary-line{display:flex;justify-content:space-between;padding:7px 0;color:var(--muted)}.cart-summary-line.discount{color:#69c893}.cart-summary-line.delivery{border-bottom:1px solid var(--line);padding-bottom:12px}
.gift-hero{padding:100px 0 60px;background:radial-gradient(circle at 80% 20%,rgba(201,29,42,.18),transparent 32%),#0b0908}.gift-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:42px;align-items:start}.gift-copy h1{font-size:clamp(3.7rem,7vw,7.5rem);line-height:.85;margin:18px 0 28px}.gift-copy h1 span{color:var(--red)}.gift-form-card,.gift-preview{background:var(--panel);border:1px solid var(--line);padding:30px}.gift-values{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0}.gift-values button{border:1px solid var(--line);background:#0e0c0a;color:#fff;padding:13px;cursor:pointer}.gift-values button.active{background:var(--red);border-color:var(--red)}.gift-preview{position:sticky;top:110px}.gift-card-visual{min-height:340px;border-radius:18px;padding:34px;background:linear-gradient(145deg,#21150f,#090807 64%);border:1px solid #6b4b36;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow)}.gift-card-visual img{width:150px}.gift-value{font-family:var(--serif);font-size:4rem;color:var(--gold)}.gift-code{letter-spacing:.18em;font-weight:800}.gift-actions{display:flex;gap:10px;margin-top:18px}.gift-note{color:var(--muted);font-size:.78rem;margin-top:14px}
@media(max-width:900px){.gift-grid{grid-template-columns:1fr}.gift-preview{position:static}.gift-values{grid-template-columns:repeat(2,1fr)}}

/* V23 quality fixes */
.booking-date-wrap{position:relative}.booking-date-wrap input[type="date"]{padding-right:62px;appearance:auto;-webkit-appearance:auto;max-width:100%;min-width:0}/* L'icona è un disegno, non un ostacolo.
   Sta sopra il campo e ne intercettava il tocco: chi premeva **sull'icona** non
   apriva niente. Il ripiego del gestore — dare il fuoco al campo — non basta su
   Safari, che il suo selettore lo apre solo se il dito è caduto sul campo, non
   se qualcun altro gliel'ha spostato addosso. Con `pointer-events:none` il
   tocco attraversa e arriva dove deve: l'intero controllo apre il calendario,
   icona compresa. La tastiera non perde niente — `pointer-events` riguarda i
   soli dispositivi di puntamento, e il pulsante resta raggiungibile con Tab. */
.booking-date-icon{position:absolute;right:12px;top:39px;bottom:auto;width:38px;height:38px;display:grid;place-items:center;border:1px solid #5b432c;background:#17120e;color:var(--gold);cursor:pointer;z-index:3;border-radius:4px;padding:8px;pointer-events:none}.booking-date-wrap:hover .booking-date-icon,.booking-date-icon:focus-visible{background:var(--red);color:#fff;border-color:var(--red);outline:none}.booking-date-icon svg{width:100%;height:100%}.booking-date-wrap .field-help{margin-top:8px;padding-right:0}
.home-gift-section{background:linear-gradient(135deg,#160e0b,#080706)}.home-gift-card{display:grid;grid-template-columns:1.2fr .8fr;gap:45px;align-items:center;border:1px solid var(--line);padding:48px;background:radial-gradient(circle at 85% 30%,rgba(201,29,42,.2),transparent 35%),#12100e}.home-gift-card h2{font-size:clamp(3rem,5vw,5.5rem);line-height:.92;margin:12px 0 18px}.home-gift-card p{color:var(--muted);max-width:650px}.home-gift-visual{min-height:280px;border:1px solid #6b4b36;border-radius:18px;padding:34px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(145deg,#2b1912,#090807);box-shadow:var(--shadow)}.home-gift-visual span{color:var(--gold);letter-spacing:.18em}.home-gift-visual strong{font-family:var(--serif);font-size:5.2rem}.home-gift-visual small{letter-spacing:.16em;color:var(--muted)}
.setting-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.setting-help{color:var(--muted);font-size:.78rem}.gift-admin-card{grid-column:span 2}.gift-admin-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.gift-admin-summary>div{background:#0d0b09;border:1px solid var(--line);padding:14px}.gift-admin-summary small,.gift-admin-summary strong{display:block}.gift-admin-summary small{color:var(--muted);font-size:.7rem}.gift-admin-summary strong{font-size:1.35rem;margin-top:5px}.gift-admin-list{display:grid;gap:8px;max-height:300px;overflow:auto}.gift-admin-row{display:grid;grid-template-columns:1.3fr .8fr .8fr .8fr;gap:10px;align-items:center;padding:12px;background:#0d0b09;border:1px solid var(--line);font-size:.76rem}.gift-admin-row small{color:var(--muted)}
.product-grid.loading::before{content:"Caricamento catalogo…";display:block;color:var(--muted);padding:30px}.catalog-error{padding:25px;border:1px solid #7f2630;background:#221014;color:#fff}.catalog-error button{margin-top:12px}
@media(max-width:900px){.home-gift-card{grid-template-columns:1fr;padding:30px}.gift-admin-card{grid-column:auto}.gift-admin-summary{grid-template-columns:1fr}.gift-admin-row{grid-template-columns:1fr 1fr}.setting-title-row{display:block}.setting-title-row .btn{margin-top:12px}}
@media(max-width:760px){.booking-date-icon{top:38px}.main-nav a[data-nav="gift"]{display:none}.home-gift-visual{min-height:220px}.home-gift-visual strong{font-size:4rem}}

/* V23.1 — rifinitura tipografica approvata: nessun cambio di layout */
:root{
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:Manrope,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body{font-family:var(--sans);font-weight:400;letter-spacing:-.008em;line-height:1.68}
p{max-width:72ch}
h1,h2,h3,h4,.page-kicker,.quick-item strong,.tile-copy h3,.price,.menu-price,.gift-value,.home-gift-visual strong{font-family:var(--serif);font-feature-settings:"liga" 1,"kern" 1;text-wrap:balance}
.hero h1,.page-hero h1{font-weight:600;letter-spacing:-.052em;line-height:.9}
.intro-copy h2,.section-head h2,.order-cta-copy h2,.account-promo h2,.info-band h2,.home-gift-card h2{font-weight:600;letter-spacing:-.038em;line-height:.98}
h3{font-weight:600;letter-spacing:-.018em}
.lead,.intro-copy p,.section-head>p,.order-cta-copy p,.account-promo p,.home-gift-card p{font-size:1.03rem;line-height:1.78}
.eyebrow,.page-kicker,.menu-time,.product-category{font-weight:700;letter-spacing:.19em}
.main-nav{gap:28px}.main-nav a{font-size:.79rem;font-weight:650;letter-spacing:.075em}
.btn{font-family:var(--sans);font-weight:750;letter-spacing:.075em}
.announcement{font-size:.76rem;letter-spacing:.055em}
.tile-copy small,.social-tag,.home-gift-visual span,.home-gift-visual small{letter-spacing:.14em}
.price,.menu-price,.gift-value{font-variant-numeric:tabular-nums lining-nums}
input,select,textarea,button{font-family:var(--sans)}
input,select,textarea{font-size:.94rem;line-height:1.45}
.site-footer{letter-spacing:-.004em}
.footer-title{font-weight:700;letter-spacing:.1em}
@media(max-width:760px){
  body{line-height:1.62}
  .hero h1,.page-hero h1{letter-spacing:-.04em;line-height:.94}
  .lead,.intro-copy p,.section-head>p,.order-cta-copy p,.account-promo p,.home-gift-card p{font-size:.96rem;line-height:1.7}
}

/* V23.2 — ordine più chiaro, senza modificare il design generale */
.hero-photo-small{display:none!important}
.product-card{cursor:pointer}
.product-card .add-btn{position:relative;z-index:2}
.product-card:focus-within{outline:2px solid var(--gold);outline-offset:3px}
.product-modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:24px}
.product-modal.open{display:flex}
.product-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.78);backdrop-filter:blur(8px)}
.product-modal-dialog{position:relative;width:min(880px,100%);max-height:min(720px,calc(100vh - 48px));overflow:auto;display:grid;grid-template-columns:45% 55%;background:#12100e;border:1px solid rgba(212,166,93,.35);box-shadow:0 34px 100px rgba(0,0,0,.65)}
.product-modal-image{background:#0b0908;display:grid;place-items:start center;padding:26px 18px;min-height:0}
/* Con il configuratore aperto la colonna diventa altissima e un'immagine
   centrata finisce sotto la piega: resta in alto, dove la si vede. */
.product-modal-image img{position:sticky;top:26px}
/* La fotografia riempie la fascia; il logo di ripiego no. Trattarlo come una
   foto lo stirava a tutta colonna: un marchio ingigantito al posto del piatto
   non è un'immagine, è un errore che si vede. */
.product-modal-image img{width:100%;height:100%;object-fit:cover;object-position:center}
.product-modal-image img[src*='logo']{width:auto;height:auto;max-width:min(62%,190px);max-height:150px;object-fit:contain;opacity:.9}
.product-modal-content{padding:30px 32px}
.product-modal-content h2{font-size:clamp(1.5rem,2.4vw,2.2rem);line-height:1.15;margin:8px 0 12px}
.product-modal-description{color:var(--muted);margin:0 0 16px;font-size:.88rem;line-height:1.6}
.product-modal-price{font-family:var(--serif);font-size:1.45rem;color:var(--gold);margin-bottom:18px}
.product-modal-close{position:absolute;top:14px;right:14px;z-index:2;width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:#090807;color:#fff;font-size:1.7rem;cursor:pointer}
.product-note-field,.box-number-field label{display:block;color:#fff;font-weight:700;margin:15px 0 8px}
.box-number-field label span{color:var(--red)}
.product-modal textarea{width:100%;resize:vertical;background:#090807;border:1px solid var(--line);color:#fff;padding:14px 15px;font:inherit;outline:none}
.product-modal textarea:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(212,166,93,.15)}
.box-number-field{padding:16px;border:1px solid rgba(212,166,93,.28);background:#17110d;margin-bottom:14px}
.box-number-field small{display:block;color:var(--muted);margin-top:8px;line-height:1.45}
.product-modal-actions{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-top:22px}
.quantity-control{display:grid;grid-template-columns:44px 52px 44px;align-items:center;border:1px solid var(--line);height:48px}
.quantity-control button{height:100%;border:0;background:#090807;color:#fff;font-size:1.35rem;cursor:pointer}
.quantity-control strong{text-align:center}
.product-modal-error{min-height:1.4em;color:#ff7b84;font-size:.82rem;margin:10px 0 0}
.cart-line{align-items:flex-start;gap:10px}
.cart-line-main{min-width:0;flex:1}
.cart-line-main strong,.cart-line-main small,.cart-item-note{display:block}
.cart-item-note{margin-top:5px;color:var(--muted);font-size:.72rem;line-height:1.35;overflow-wrap:anywhere}
.cart-line-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.cart-qty{display:flex;align-items:center;border:1px solid var(--line)}
.cart-qty button{width:28px;height:28px;border:0;background:#0a0908;color:#fff;cursor:pointer}
.cart-qty span{min-width:28px;text-align:center;font-size:.78rem}
.cart-remove{background:none!important;border:0!important;color:#e5a7ab!important;text-decoration:underline;cursor:pointer;padding:0!important;font-size:.7rem}
@media(max-width:760px){.product-modal{padding:8px}.product-modal-dialog{grid-template-columns:1fr;max-height:calc(100dvh - 16px)}.product-modal-image{height:150px;min-height:150px;padding:12px}.product-modal-image img[src*='logo']{max-width:150px;max-height:96px}.product-modal-content h2{font-size:clamp(1.25rem,5.2vw,1.6rem)}.product-modal-price{font-size:1.25rem}.product-modal-content{padding:20px 16px}.product-modal-actions{align-items:stretch;flex-direction:column}.quantity-control{width:140px}.product-modal-actions .btn{width:100%}}

/* V23.3 — domicilio più chiaro e utilizzabile */
.cart-panel h3{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cart-count{display:inline-grid!important;place-items:center;min-width:28px;height:28px;padding:0 8px;border:1px solid rgba(212,166,93,.38);border-radius:999px;background:#0d0b09;color:var(--gold);font-family:var(--sans);font-size:.78rem;font-weight:800;line-height:1}
.fulfilment-summary{display:flex;align-items:flex-start;gap:12px;margin:0 0 20px;padding:14px 15px;background:#100d0a;border:1px solid var(--line)}
.fulfilment-summary strong{display:block;margin-bottom:2px;color:#fff;font-size:.9rem}
.fulfilment-summary .cart-note{margin:0}
.fulfilment-icon{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:rgba(212,166,93,.12);color:var(--gold);font-size:1rem}
.delivery-details{margin:0 0 24px;padding:18px;background:#100d0a;border:1px solid rgba(212,166,93,.28)}
.delivery-details[hidden]{display:none}
.delivery-details-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}
.delivery-details-head small{display:block;margin-bottom:4px;color:var(--gold);font-size:.67rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase}
.delivery-details-head h4{margin:0;color:#fff;font-family:var(--serif);font-size:1.35rem;line-height:1.1}
.delivery-status{padding:6px 9px;border-radius:999px;background:rgba(212,166,93,.12);color:var(--gold);font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}
.delivery-status.valid{background:rgba(53,169,100,.14);color:#7ddba1}
.delivery-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.delivery-field{display:grid;gap:6px}
.delivery-field-wide{grid-column:1/-1}
.delivery-field span{color:#c9b9a9;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.delivery-field input,.delivery-field select,.delivery-field textarea{width:100%;min-width:0;border:1px solid var(--line);background:#090807;color:#fff;padding:11px 12px;font:inherit;font-size:.82rem;outline:none}
.delivery-field textarea{resize:vertical}
.delivery-field input:focus,.delivery-field select:focus,.delivery-field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(212,166,93,.12)}
.delivery-check-btn{width:100%;margin-top:14px;border:1px solid rgba(212,166,93,.55);background:transparent;color:var(--gold);padding:11px 14px;font:inherit;font-size:.75rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.delivery-check-btn:hover{background:rgba(212,166,93,.1)}
.delivery-feedback{min-height:1.25em;margin:10px 0 0;color:#ff8c94;font-size:.75rem;line-height:1.45}
.delivery-feedback.success{color:#7ddba1}
.cart-summary-line.delivery.pending span:last-child{color:var(--muted);font-size:.78rem}
@media(max-width:520px){.delivery-form-grid{grid-template-columns:1fr}.delivery-field-wide{grid-column:auto}.delivery-details{padding:15px}}

/* V23.4 — pannello ordine/domicilio sempre accessibile */
@media (min-width:1101px){
  body[data-page="ordina"] .order-layout-v16{align-items:start}
  body[data-page="ordina"] .cart-panel{
    top:96px;
    max-height:calc(100vh - 116px);
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    scrollbar-color:rgba(212,166,93,.65) rgba(255,255,255,.04);
    padding-right:18px;
  }
  body[data-page="ordina"] .cart-panel::-webkit-scrollbar{width:8px}
  body[data-page="ordina"] .cart-panel::-webkit-scrollbar-track{background:rgba(255,255,255,.04)}
  body[data-page="ordina"] .cart-panel::-webkit-scrollbar-thumb{background:rgba(212,166,93,.65);border-radius:20px}
  body[data-page="ordina"] .delivery-switch{
    position:sticky;
    top:-24px;
    z-index:5;
    box-shadow:0 12px 24px rgba(0,0,0,.32);
  }
  body[data-page="ordina"] .delivery-details{scroll-margin-top:56px}
}
@media (max-width:1100px){
  body[data-page="ordina"] .cart-panel{
    max-height:none;
    overflow:visible;
    padding-right:24px;
  }
}

/* V23.5 — selezione ritiro/domicilio sopra il catalogo */
.fulfilment-config-panel{margin-bottom:24px;padding:22px;background:linear-gradient(135deg,#17120e,#100d0a);border:1px solid var(--line)}.fulfilment-config-top{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px}.fulfilment-config-top .eyebrow{margin:0 0 5px}.fulfilment-config-top h3{margin:0;font-family:var(--serif);font-size:1.85rem}.delivery-switch-top{width:min(360px,100%);margin:0;flex:0 0 auto}.fulfilment-summary-top{margin:0;padding:12px 14px}.delivery-details-top{margin:16px 0 0;padding:18px}.delivery-form-grid-top{display:grid;grid-template-columns:2fr .7fr .8fr 1.2fr;gap:12px}.delivery-form-grid-top .delivery-field{min-width:0}.delivery-field-address{grid-column:span 2}.delivery-field-notes{grid-column:span 3}.delivery-verify-area{display:flex;flex-direction:column;justify-content:flex-end;gap:6px}.delivery-verify-area .delivery-check-btn{width:100%;min-height:48px}.delivery-verify-area .delivery-feedback{margin:0;font-size:.72rem}.cart-panel-summary{max-height:calc(100vh - 130px);overflow:auto}.cart-panel-summary .cart-count{display:inline-grid;place-items:center;min-width:26px;height:26px;padding:0 7px;border:1px solid var(--gold);border-radius:50%;color:var(--gold)}@media(max-width:1100px){.fulfilment-config-top{align-items:stretch;flex-direction:column}.delivery-switch-top{width:100%}.delivery-form-grid-top{grid-template-columns:1fr 1fr}.delivery-field-address,.delivery-field-notes{grid-column:1/-1}.delivery-verify-area{grid-column:1/-1}.cart-panel-summary{max-height:none;overflow:visible}}@media(max-width:620px){.fulfilment-config-panel{padding:16px}.fulfilment-config-top h3{font-size:1.5rem}.delivery-form-grid-top{grid-template-columns:1fr}.delivery-field-address,.delivery-field-notes,.delivery-verify-area{grid-column:auto}}

/* V23.6 final site review */
.order-general-note{display:grid;gap:7px;margin:16px 0}.order-general-note span{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.order-general-note textarea{width:100%;resize:vertical;min-height:82px;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:rgba(255,255,255,.045);color:inherit;padding:12px;font:inherit}.product-allergen-note{margin:12px 0 0;font-size:.78rem;line-height:1.5;color:var(--muted)}.field-error{display:block;color:#ef8d82;min-height:1.25em;margin-top:5px}.btn:disabled,.btn[disabled]{opacity:.42;cursor:not-allowed;filter:grayscale(.15);transform:none!important}.cart-panel-summary{align-self:start}.main-nav a[data-nav="gift"]{white-space:nowrap}@media(max-width:1120px){.main-nav a[data-nav="gift"]{white-space:normal}}

/* Legal pages and cookie consent */
.footer-legal-links{display:flex;flex-wrap:wrap;gap:.5rem .7rem;align-items:center;justify-content:center;line-height:1.9}
/* Sul telefono i collegamenti vanno a capo e devono restare distinguibili
   al dito: senza area minima due voci vicine diventano un bersaglio solo. */
@media(max-width:640px){.footer-bottom{gap:16px}.footer-legal-links{gap:.35rem .9rem}
 .footer-legal-links a,.footer-legal-links .cookie-settings-link{display:inline-block;padding:6px 2px;min-height:24px}
 .footer-company,.footer-credit{max-width:34ch;margin:0 auto}}
.footer-legal-links a,.cookie-settings-link{color:inherit;text-decoration:none;font:inherit}.cookie-settings-link,.inline-cookie-button{border:0;background:none;padding:0;color:inherit;text-decoration:underline;cursor:pointer}.legal-hero{padding:8rem 0 4rem;background:radial-gradient(circle at 80% 0,rgba(160,22,24,.22),transparent 35%),#100d0b;color:#fff}.legal-hero h1{max-width:900px;margin:.4rem 0 1rem;font-size:clamp(3rem,7vw,6.4rem);line-height:.95}.legal-hero>div>p:not(.eyebrow):not(.legal-updated){max-width:760px;font-size:1.12rem;color:rgba(255,255,255,.72)}.legal-updated{margin-top:1.4rem;color:rgba(255,255,255,.48);font-size:.85rem}/* Il fondo chiaro senza il testo scuro rendeva invisibile tutto ciò che non
   stava dentro `.legal-content`: su allergeni.html sparivano «I simboli del
   menu» e «Pesce crudo e abbattimento», cioè surgelati e abbattimento del
   pesce servito crudo — informazione di sicurezza alimentare, resa in
   #f4eadc su #f0e9dd, rapporto 1.01. Il colore del testo appartiene alla
   sezione che decide il fondo, non a un contenitore interno. */
.legal-section{padding:5rem 0;background:#f0e9dd;color:#2b241f}.legal-layout{display:grid;grid-template-columns:240px minmax(0,820px);gap:4rem;align-items:start}.legal-index{position:sticky;top:130px;display:grid;gap:.8rem;padding:1.5rem;border:1px solid rgba(37,30,25,.12);background:rgba(255,255,255,.45)}.legal-index strong{margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem}.legal-index a{color:#2c241f;text-decoration:none}.legal-index a:hover{color:#a51619}.legal-content{color:#2b241f}.legal-content h2{margin:2.8rem 0 .9rem;font-size:clamp(1.55rem,3vw,2.25rem);line-height:1.05}.legal-content h2:first-child{margin-top:0}.legal-content p,.legal-content li{font-size:1rem;line-height:1.75;color:#4f453e}.legal-content a{color:#8e1518}.legal-content ul{padding-left:1.25rem}.cookie-banner{position:fixed;z-index:9999;left:1rem;right:1rem;bottom:1rem;display:none;max-width:1180px;margin:auto;padding:1.15rem 1.2rem;background:#171310;color:#fff;border:1px solid rgba(255,255,255,.15);box-shadow:0 24px 80px rgba(0,0,0,.45)}.cookie-banner.is-open{display:block}.cookie-banner-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.5rem;align-items:center}.cookie-banner h2{font-size:1.2rem;margin:0 0 .35rem}.cookie-banner p{margin:0;color:rgba(255,255,255,.68);font-size:.9rem;line-height:1.5}.cookie-banner a{color:#fff}.cookie-actions{display:flex;flex-wrap:wrap;gap:.6rem}.cookie-actions button{min-height:42px;padding:.65rem 1rem;border:1px solid rgba(255,255,255,.25);background:transparent;color:#fff;cursor:pointer}.cookie-actions .primary{background:#a51619;border-color:#a51619}.cookie-panel{position:fixed;z-index:10000;inset:0;display:none;background:rgba(5,4,3,.72);padding:1rem;align-items:center;justify-content:center}.cookie-panel.is-open{display:flex}.cookie-dialog{width:min(680px,100%);max-height:90vh;overflow:auto;background:#f0e9dd;color:#2b241f;padding:1.7rem}.cookie-dialog-head{display:flex;justify-content:space-between;gap:1rem;align-items:start}.cookie-dialog h2{font-size:2rem;margin:0 0 .5rem}.cookie-close{border:0;background:none;font-size:1.8rem;cursor:pointer}.cookie-option{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:1rem 0;border-top:1px solid rgba(43,36,31,.14)}.cookie-option strong{display:block}.cookie-option p{margin:.25rem 0 0;font-size:.86rem;color:#665b53}.cookie-switch{width:48px;height:26px;position:relative}.cookie-switch input{position:absolute;opacity:0}.cookie-switch span{display:block;width:100%;height:100%;border-radius:999px;background:#8b8178;cursor:pointer}.cookie-switch span:after{content:'';position:absolute;top:4px;left:4px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s}.cookie-switch input:checked+span{background:#a51619}.cookie-switch input:checked+span:after{transform:translateX(22px)}.cookie-switch input:disabled+span{opacity:.55;cursor:not-allowed}.cookie-dialog-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1.2rem}.cookie-dialog-actions button{padding:.75rem 1.1rem;border:1px solid #2b241f;background:transparent;cursor:pointer}.cookie-dialog-actions .primary{background:#a51619;color:#fff;border-color:#a51619}@media(max-width:800px){.legal-layout{grid-template-columns:1fr;gap:2rem}.legal-index{position:static;display:flex;overflow:auto}.legal-index strong{display:none}.legal-index a{white-space:nowrap}.cookie-banner-grid{grid-template-columns:1fr}.cookie-actions{justify-content:stretch}.cookie-actions button{flex:1}.footer-legal-links{justify-content:flex-start}}

.transaction-legal-note{padding:0 0 2rem;color:#776b62;font-size:.82rem}.transaction-legal-note a{color:#8e1518}

/* Prenotazione: conferma interna, riepilogo ed errori inline */
.success-box.show{display:block}
.success-box h3{margin:0 0 10px}
.success-box p{margin:0;line-height:1.6}
.success-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}
.booking-recap{margin-top:18px;padding-top:16px;border-top:1px solid rgba(213,244,220,.22);display:grid;gap:9px}
.booking-recap div{display:flex;justify-content:space-between;gap:16px;font-size:.85rem}
.booking-recap span{opacity:.75}
.booking-recap strong{text-align:right}
.form-error{margin-top:18px;padding:13px 16px;border:1px solid #8c3a34;background:#2c1512;color:#f4b8b1;line-height:1.5;font-size:.85rem}
.booking-form-modern button[type=submit][disabled]{opacity:.55;cursor:progress}
@media(max-width:640px){.success-actions{flex-direction:column;align-items:stretch}.booking-recap div{flex-direction:column;gap:2px}.booking-recap strong{text-align:left}}

/* Buoni regalo: importo personalizzato e conferma di emissione */
.gift-form-card .field-help{display:block;color:#8b7d70;font-size:.7rem;margin-top:6px}


/* Checkout: passi dati, riepilogo server e consensi */
.checkout-panel{margin-top:18px;padding:20px;border:1px solid var(--line);background:#15110e;border-radius:14px}
.checkout-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.checkout-head h3{margin:4px 0 0;font-family:Georgia,serif;font-weight:500;font-size:1.35rem}
.checkout-close{background:transparent;border:1px solid var(--line);color:var(--ink);width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:1.2rem;line-height:1}
.checkout-step .field{display:block;margin-bottom:12px}
.checkout-step .field span{display:block;font-size:.76rem;color:var(--muted);margin-bottom:6px}
.checkout-step .field input{width:100%;padding:12px;border-radius:8px;background:#0c0a08;border:1px solid var(--line);color:var(--ink)}
.checkout-hint{color:var(--muted);font-size:.78rem;line-height:1.5;margin:0 0 14px}
.checkout-summary{display:grid;gap:9px;margin-bottom:16px}
.checkout-summary .line{display:flex;justify-content:space-between;gap:14px;font-size:.9rem;border-top:1px solid var(--line);padding-top:9px}
.checkout-summary .line:first-child{border-top:0;padding-top:0}
.checkout-summary .line span{color:var(--muted)}
.checkout-summary .line.total{border-top:1px solid var(--gold);padding-top:12px;font-size:1.05rem}
.checkout-summary .line.total strong{color:var(--gold)}
.checkout-consent{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px;color:var(--muted);font-size:.78rem;line-height:1.5}
.checkout-consent input{margin-top:2px;width:17px;height:17px;flex:none}
#checkout-pay[disabled]{opacity:.5;cursor:not-allowed}

/* Salto al contenuto: invisibile finché non lo si raggiunge con il Tab,
   così chi naviga da tastiera non deve attraversare tutto il menu.
   Non altera in alcun modo la resa visiva della pagina. */
.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;background:var(--gold);color:#1a1509;font-weight:700;padding:12px 18px;border-radius:0 0 10px 0;text-decoration:none}
.skip-link:focus{left:0}

/* Informazioni alimentari nella scheda piatto: obbligo di legge, quindi
   sempre visibili prima dell'aggiunta al carrello. Quando la dichiarazione
   manca lo si dice apertamente, senza far credere che il piatto sia sicuro. */
.product-food-info{margin:14px 0 4px;display:grid;gap:10px}
.food-tags{display:flex;flex-wrap:wrap;gap:7px}
.food-tag{display:inline-block;padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:rgba(207,170,107,.08);color:var(--gold);font-size:.72rem;font-weight:600;letter-spacing:.02em}
.food-ingredients,.food-allergens{margin:0;font-size:.8rem;line-height:1.55;color:var(--muted)}
.food-allergens strong{color:var(--ink)}
.food-allergens a{color:var(--gold)}
.food-allergens-missing{border-left:3px solid var(--red);padding-left:11px}
.food-allergens-missing strong{color:#f3a6ad}

/* Allergeni nel dettaglio ordine del Manager: la cucina deve vederli subito. */
.riga-allergeni{display:block;margin-top:4px;font-size:.72rem;letter-spacing:.02em}
.riga-allergeni-presenti{color:#e6c48d}
.riga-allergeni-ignoti{color:#f3a6ad;font-weight:600}

/* Tabelle dei documenti legali: scorrono da sole sui telefoni, senza
   trascinare con sé l'intera pagina. */
.legal-table-wrap{overflow-x:auto;margin:16px 0;-webkit-overflow-scrolling:touch}
.legal-table{width:100%;min-width:560px;border-collapse:collapse;font-size:.82rem}
.legal-table th,.legal-table td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top;line-height:1.5}
.legal-table th{background:rgba(207,170,107,.08);color:var(--gold);font-weight:600;letter-spacing:.02em}
.legal-table td{color:var(--muted)}
.legal-todo{color:#f3a6ad;font-weight:600}

/* Contenimento orizzontale.
   Le celle di griglia e gli elementi flessibili hanno per impostazione
   predefinita min-width:auto: un contenuto largo le allarga oltre lo schermo e
   fa comparire la barra di scorrimento laterale sui telefoni. Qui si consente
   loro di restringersi. Nessuna regola cambia colori, spaziature o impaginazione:
   agiscono solo quando lo spazio non basta. */
.gift-grid>*,.contact-grid>*,.container>*{min-width:0}
.gift-form-card,.gift-copy,.contact-visual{max-width:100%}
.gift-values{flex-wrap:wrap}
img,video,canvas,svg:not(.icon){max-width:100%}
@media(max-width:420px){
  .form-grid{grid-template-columns:minmax(0,1fr)}
  .gift-values{display:grid;grid-template-columns:repeat(2,1fr)}
}

/* Pulsante di una funzione non ancora disponibile: si vede che è spento,
   non si può premere e non porta da nessuna parte. */
.btn-unavailable{opacity:.55;cursor:not-allowed;pointer-events:none;border-style:dashed}

/* Legenda dell'asterisco del menu: leggibile senza rubare spazio ai piatti. */
.menu-asterisk-note{font-size:.82rem;line-height:1.5;color:var(--muted,#8a8a8a);margin:14px 0 0;max-width:70ch}
/* La stessa nota compare sul menu (fondo scuro) e sulla pagina allergeni
   (fondo chiaro): è il testo che spiega il simbolo del surgelato e quello del
   pesce abbattuto. Sul chiaro il grigio del tema scuro la rendeva quasi
   invisibile — rapporto 1.88 — proprio dove la legge chiede che si legga. */
.legal-section .menu-asterisk-note{color:#4a3f36}
.legal-section .menu-asterisk-note strong{color:#2b241f}

/* Nota del carrello: spiega perché lo sconto non copre tutto, senza
   nominare regole interne. */
.cart-summary-note{font-size:.78rem;line-height:1.45;color:var(--muted,#8a8a8a);margin:6px 0 0}

/* --- Menu Box: configuratore nel modale prodotto ------------------------- */
/* Riprende il comportamento approvato in anteprima: contatore sempre visibile,
   elenco che scorre da solo, riepilogo sotto gli occhi. */
.box-config{padding:14px;border:1px solid rgba(212,166,93,.28);background:#17110d;margin-bottom:14px;border-radius:12px}
.box-config-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.box-config-head strong{display:block;color:#f2e4cf;font-size:.95rem}
.box-config-head small{display:block;color:#9b8b7c;font-size:.74rem;margin-top:2px}
/* Quanti piatti mancano. Prende il posto delle vecchie linguette PRANZO/CENA:
   il turno non si sceglie più qui, lo porta il prodotto. */
.box-state{flex:none;align-self:center;background:#0f0b09;border:1px solid rgba(212,166,93,.25);
 border-radius:999px;padding:6px 14px;color:#9b8b7c;font-size:.7rem;letter-spacing:.08em}
.box-state.full{background:var(--red);border-color:var(--red);color:#fff}
.box-count{font-family:Georgia,serif;font-size:2rem;color:#f2e4cf;margin:10px 0 8px}
.box-count.full{color:var(--gold)}
.box-search{width:100%;box-sizing:border-box;background:#100c0a;border:1px solid rgba(212,166,93,.22);
 color:#f2e4cf;border-radius:9px;padding:10px 12px;font:inherit;font-size:.82rem}
.box-sections{display:flex;gap:6px;overflow-x:auto;padding:10px 0 8px;scrollbar-width:none}
.box-sections::-webkit-scrollbar{display:none}
.box-sections button{flex:none;background:#0f0b09;border:1px solid rgba(212,166,93,.35);color:#c6b39a;
 border-radius:999px;padding:6px 13px;font-size:.7rem;cursor:pointer;white-space:nowrap}
.box-sections button.on{background:var(--red);border-color:var(--red);color:#fff}
.box-list{max-height:44vh;overflow-y:auto;overscroll-behavior:contain;display:grid;
 grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;padding-right:4px}
.box-item{background:#15110e;border:1px solid rgba(212,166,93,.18);border-radius:11px;padding:10px 11px;
 display:flex;flex-direction:column;gap:3px}
.box-item.on{border-color:var(--gold);background:#1c1611}
.box-code{color:#8a7145;font-size:.6rem;letter-spacing:.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.box-item strong{color:#f4eadc;font-size:.82rem;font-weight:600;line-height:1.25}
.box-desc{color:#948577;font-size:.68rem;line-height:1.4;
 display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.box-item-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;flex-wrap:wrap}
.box-badge{font-size:.56rem;letter-spacing:.08em;border-radius:999px;padding:2px 8px;
 border:1px solid #8a7145;color:var(--gold)}
.box-badge.sera{border-color:#4d3a5c;color:#b79ad0}
.box-add{width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;font-size:1.2rem;line-height:1;
 background:linear-gradient(145deg,#e2c489,var(--gold));color:#191009}
.box-add:disabled{background:#241d16;color:#5d5145;cursor:not-allowed}
.box-qty{display:flex;align-items:center;gap:4px}
.box-qty button{width:26px;height:26px;border-radius:50%;border:1px solid rgba(212,166,93,.3);
 background:transparent;color:#e8dccb;cursor:pointer;line-height:1}
.box-qty button:disabled{opacity:.3;cursor:not-allowed}
.box-qty b{color:var(--gold);font-weight:500;min-width:14px;text-align:center}
.box-limits{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 0}
.box-lim{font-size:.6rem;border-radius:999px;padding:4px 9px;border:1px solid rgba(212,166,93,.2);color:#8d7f74}
.box-lim b{color:#c6b39a}
.box-lim.full{border-color:var(--red);color:#e79b91}
.box-lim.full b{color:#e79b91}
.box-chosen{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 0}
.box-chip{background:#100c0a;border:1px solid rgba(212,166,93,.22);border-radius:999px;padding:4px 8px 4px 11px;
 font-size:.68rem;color:#f2e4cf;display:inline-flex;align-items:center;gap:7px}
.box-chip button{background:transparent;border:0;color:#8d7f74;cursor:pointer;font-size:.9rem;line-height:1;padding:0 2px}
.box-chip button:hover{color:var(--red)}
.box-empty{color:#7d6f63;font-size:.75rem;padding:12px 2px}
/* Menù a scelte: poche domande, una risposta ciascuna. Niente ricerca, niente
   filtri — con due opzioni sarebbero arredamento. */
.choice-config{display:grid;gap:12px;margin-bottom:14px}
.choice-group{border:1px solid rgba(212,166,93,.28);background:#17110d;border-radius:12px;padding:12px 14px;margin:0}
.choice-group.done{border-color:rgba(212,166,93,.5)}
.choice-group legend{color:#f2e4cf;font-size:.95rem;padding:0 6px}
.choice-rule{color:#9b8b7c;font-size:.72rem;margin:0 0 10px;letter-spacing:.04em}
.choice-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;cursor:pointer;
 border:1px solid transparent;background:#100c0a;margin-top:6px;color:#e6d9c6;font-size:.85rem}
.choice-option:hover{border-color:rgba(212,166,93,.35)}
.choice-option.on{border-color:var(--gold);background:#1b1410}
.choice-option input{accent-color:var(--red);width:18px;height:18px;flex:none;margin:0}
.choice-option span{flex:1}
.choice-extra{color:var(--gold);font-size:.75rem;font-weight:400}
.cart-choice-list{display:block;color:var(--gold);font-size:.7rem;margin-top:4px;line-height:1.6}
.cart-choice-list b{color:#c9b899;font-weight:400}
.cart-box-count{display:block;color:#c9b899;font-size:.7rem;margin-top:4px;letter-spacing:.04em}
.cart-box-list{display:block;color:var(--gold);font-size:.68rem;margin-top:3px;line-height:1.6}
.cart-box-edit{background:transparent;border:0;color:#9b8b7c;font-size:.68rem;text-decoration:underline;
 cursor:pointer;padding:3px 0 0}
.cart-box-edit:hover{color:var(--gold)}
@media(max-width:600px){
 .box-list{grid-template-columns:1fr;max-height:38vh}
 .box-config-head{flex-direction:column}
 .box-state{align-self:flex-start}
}

/* Sotto i 380 px il modale deve restare usabile: il pulsante di conferma va
   raggiunto senza inseguirlo, e nulla può sporgere di lato. */
@media(max-width:380px){
 .product-modal{padding:4px}
 .product-modal-dialog{max-height:calc(100dvh - 8px)}
 .product-modal-image{height:118px;min-height:118px}
 .product-modal-image img[src*='logo']{max-width:118px;max-height:74px}
 .product-modal-content{padding:16px 13px}
 .product-modal-content h2{font-size:1.16rem}
 .product-modal-close{width:36px;height:36px;font-size:1.4rem;top:8px;right:8px}
 .box-list{max-height:32vh}
}

/* ═══════════════════════════════════════════════════════════════════════════
   La pagina larga quanto lo schermo

   Su un telefono vero il sito non riempiva tutto lo schermo: restava una
   fascia scura di lato, come se la pagina fosse stata rimpicciolita per farla
   entrare. È esattamente quello che succedeva. Quando il documento è più largo
   della vetrina del telefono, il browser lo riduce finché ci sta: il contenuto
   si stringe e ciò che avanza resta vuoto.

   `body{overflow-x:hidden}` toglieva la barra di scorrimento ma non la causa —
   e con `html` a `overflow:visible` quella dichiarazione passa alla viewport,
   quindi `body` non ritaglia proprio nulla. Le regole qui sotto tolgono gli
   elementi che erano davvero più larghi dello schermo, uno per uno.
   ═══════════════════════════════════════════════════════════════════════════ */

:root{
 /* Altezza della barra fissa Ordina/Prenota. Sta qui perché due regole devono
    restare d'accordo: quella che la disegna e quella che le riserva lo spazio
    in fondo alla pagina. Separate, prima o poi divergono. */
 --barra-mobile:44px;
}

/* Titoli d'apertura.
   `clamp()` sceglie il minimo quando la parte in `vw` scende sotto di esso:
   da lì in giù il titolo smette di rimpicciolirsi e resta inchiodato. Su uno
   schermo da 320px la colonna di testo è 292px, ma «Un'esperienza» a 59px ne
   misura 319. Non entra, e una parola sola non va a capo: allargava il
   documento a 333px. Stessa storia con «un'esperienza completa.» (348px) e
   «A Saronno, facile da raggiungere.» (322px).
   Qui il minimo torna proporzionato allo schermo. Sopra i 600px non cambia
   nulla: il disegno originale resta quello. */
@media(max-width:600px){
 .hero h1,.page-hero h1,.contact-hero h1,.booking-visual-copy h1,
 .gift-copy h1,.legal-hero h1,.account-welcome h1{font-size:clamp(2.45rem,11.5vw,4.6rem)}
 .intro-copy h2,.section-head h2,.order-cta-copy h2,.account-promo h2,
 .info-band h2,.home-gift-card h2{font-size:clamp(2.05rem,9.5vw,3.9rem)}
}

/* Rete di sicurezza. Una parola più larga della sua colonna si spezza invece
   di sfondare la pagina. Agisce solo quando lo spazio non basta: un titolo che
   già entra non se ne accorge. */
h1,h2,h3{overflow-wrap:break-word}

/* Indirizzi e collegamenti nei testi legali.
   `info.saronno@ristorantewu.com` è lungo 233px e non offre un solo punto dove
   andare a capo: con lo zoom spinto usciva dalla colonna. Stessa cura già usata
   per i recapiti in pagina contatti. */
.legal-content a{overflow-wrap:anywhere}

/* Pulsanti.
   `white-space:nowrap` tiene l'etichetta su una riga: giusto, finché la riga
   ci sta. «Menu PDF in aggiornamento» misura 272px e teneva la scheda AYCE a
   326px dentro uno schermo da 320. Sui telefoni l'etichetta va a capo; quelle
   corte, che sono quasi tutte, restano dove sono. */
@media(max-width:600px){
 .btn{white-space:normal}
}

/* Griglie a colonna singola.
   `1fr` vale `minmax(auto,1fr)`: la traccia non scende sotto il contenuto
   minimo di ciò che ospita, e un'immagine o un pulsante incomprimibile la
   allarga oltre lo schermo. È lo stesso inciampo già corretto sul desktop per
   le schede AYCE, rimasto aperto proprio in tutti i salvagenti a colonna
   singola — quelli che si aprono solo sui telefoni. */
@media(max-width:1100px){
 .ayce-pdf-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:760px){
 .intro-grid,.story-block,.order-cta,.info-band,.page-hero-grid,
 .booking-shell,.auth-layout,.contact-grid,.account-promo{grid-template-columns:minmax(0,1fr)}
}

/* Riga «Per gruppi numerosi».
   `display:block` spegneva flex, e con flex se ne andava anche il `gap`:
   etichetta e numero finivano attaccati — «Per gruppi numerosi02 43413622».
   Restano separati, incolonnati perché affiancati non ci stanno. */
@media(max-width:760px){
 .booking-visual-note{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
}

/* Barra fissa Ordina / Prenota. */
@media(max-width:760px){
 /* Tre colonne fisse per due voci lasciavano vuoto un terzo di barra sulla
    destra. Le colonne ora seguono le voci che ci sono davvero. */
 .mobile-bar{
  grid-template-columns:none;
  grid-auto-flow:column;
  /* `minmax(0,…)` e non `1fr`: `1fr` vale `minmax(auto,1fr)` e non scenderebbe
     sotto la larghezza delle due etichette, facendo sporgere la barra stessa
     sugli schermi più stretti. */
  grid-auto-columns:minmax(0,1fr);
  align-items:center;
  min-height:calc(var(--barra-mobile) + env(safe-area-inset-bottom,0px));
  /* Su iPhone sotto la barra corre l'indicatore di sistema: senza questo
     margine i due pulsanti finiscono a filo del bordo, sotto il dito. */
  padding-bottom:env(safe-area-inset-bottom,0px);
 }
 /* La barra è sovrapposta alla pagina. Senza questo spazio copriva le ultime
    righe di ogni pagina — e i tre pulsanti del banner cookie. */
 body{padding-bottom:calc(var(--barra-mobile) + env(safe-area-inset-bottom,0px))}
 .cookie-banner{bottom:calc(1rem + var(--barra-mobile) + env(safe-area-inset-bottom,0px))}
}

/* Animazione d'ingresso.
   Un elemento con `data-reveal="right"` parte spostato di 34px a destra e
   torna al suo posto quando entra nello schermo. Finché non è entrato resta
   però dov'è: trasparente, invisibile — e largo 34px oltre la sua colonna.
   Sul telefono in orizzontale il modulo di prenotazione arrivava così a 846px
   dentro una vetrina da 844: due pixel di pagina in più che nessuno vedeva e
   che bastavano a far rimpicciolire tutto.

   Non è un difetto dei telefoni: qualunque elemento a tutta larghezza marcato
   `right` sporge di 34px finché non entra, e su all-you-can-eat.html la stessa
   cosa succedeva a 1100, 1280 e 1440px. Una soglia di larghezza non lo
   coglierebbe — la condizione non è «schermo stretto» ma «il riquadro tocca il
   bordo». L'ingresso resta quindi ovunque, ma verticale: una rincorsa verso
   l'alto non ha nulla fuori dalla pagina da cui rincorrere.
   `left` viaggia all'indietro e non allargherebbe il documento, ma le due
   direzioni condividono lo stesso movimento: separarle darebbe due animazioni
   diverse per lo stesso gesto. */
.reveal[data-reveal="left"],.reveal[data-reveal="right"]{transform:translateY(24px)}

/* Campi del modulo.
   Un `input[type=date]` porta con sé una larghezza minima propria, e in una
   traccia `1fr` — che vale `minmax(auto,1fr)` — quel minimo diventa il minimo
   della colonna. A schermo pieno non si nota; con lo zoom del browser attivo,
   che restringe la pagina, il campo usciva dalla scheda. Qui può stringersi. */
@media(max-width:760px){
 .booking-grid,.booking-grid .field,
 .booking-grid input,.booking-grid select,.booking-grid textarea{min-width:0}
}

/* ═══════════════════════════════════════════════════════════════════════════
   Prenota: la prima schermata deve dire che sotto c'è altro

   `min-height:590px` era una misura giusta per uno schermo senza barra fissa.
   Con la barra, la finestra utile del telefono scende a 627px — header 109,
   barra 44 — e il riquadro se ne prendeva 590: restavano 9px. Il modulo
   cominciava a y=779, cioè dietro la barra. Chi apriva la pagina vedeva una
   fotografia a tutto schermo e nessun indizio che sotto ci fosse da prenotare.

   Le tre cose che si notavano — hero troppo alta, titolo dominante, barra che
   copre la sezione dopo — sono lo stesso numero fisso, scritto quando la barra
   non c'era. Qui l'altezza torna a essere una frazione dello schermo, così si
   adatta anche ai telefoni che non abbiamo in mano.

   Tutti i selettori esistono solo in prenota.html: nessuna altra pagina cambia.
   ═══════════════════════════════════════════════════════════════════════════ */
@media(max-width:760px){
 .booking-visual{
  min-height:400px;                      /* misura di ripiego per i browser senza `svh` */
  min-height:clamp(320px,58svh,440px);
 }
 /* Il titolo restava a 4.4rem fino a 760px: sotto i 600 era già stato
    ridimensionato, ma fra 601 e 760 tornava a 70px su una colonna sola.
    Questa regola vale su tutto l'arco, e riguarda solo l'apertura di Prenota. */
 .booking-visual-copy h1{font-size:clamp(2.1rem,9.4vw,3.6rem)}
 /* La velatura sulla fotografia è espressa in percentuali dell'altezza: se il
    riquadro si accorcia, il punto in cui diventa scura sale insieme a lui, e il
    testo finiva sulla parte ancora chiara. Misurato sui pixel: il titolo
    scendeva a 4,01:1 di contrasto nel punto peggiore e il paragrafo a 4,48:1,
    sotto la soglia di 4,5:1 per il testo normale. Con la velatura anticipata
    risalgono a 8,57:1 e 9,76:1 — meglio anche di prima dell'intervento. */
 .booking-visual:after{
  background:linear-gradient(180deg,rgba(6,5,4,.10),rgba(6,5,4,.34) 24%,rgba(6,5,4,.78) 58%,rgba(6,5,4,.95) 100%);
 }
}

/* ═══ Menu Box · configuratore ridisegnato ═══════════════════════════════════
   Solo presentazione: nessuna riga di logica commerciale cambia. Tutto si
   attiva con :has(), quindi il JavaScript non sa nemmeno che esiste.

   Il difetto di partenza era strutturale: il configuratore viveva dentro il
   modale di un piatto, che divide lo spazio 45% foto e 55% contenuto. Su una
   box da undici piatti quel 55% di 880px sono 484px per scegliere fra decine
   di voci, con la lista che scorre dentro un modale che a sua volta scorre.
   Da qui la foto gigante, la colonna stretta e il doppio scorrimento.

   In modalità box la foto sparisce — non aggiunge niente a chi sta componendo —
   e la stanza va tutta ai piatti, con il riepilogo fermo di lato. */

.product-modal-dialog:has(#box-config:not([hidden])){
  width:min(1180px,100%);
  height:min(880px,calc(100vh - 32px));
  max-height:min(880px,calc(100vh - 32px));
  grid-template-columns:minmax(0,1fr);
  /* La riga deve poter **restringersi**, non solo crescere. Senza questa riga
     il contenuto si allunga quanto vuole — 17.689px con 256 piatti — il dialogo
     lo taglia con overflow:hidden e i piatti oltre il fondo diventano
     irraggiungibili. Le prove a schermo l'hanno mostrato subito. */
  grid-template-rows:minmax(0,1fr);
  overflow:hidden;
}
.product-modal-dialog:has(#box-config:not([hidden])) .product-modal-image{display:none}
/* Colonna flessibile, non griglia a righe fisse.
   Con `grid-template-rows:auto minmax(0,1fr) auto` la riga elastica finiva sul
   **secondo figlio** — il titolo — che veniva schiacciato a zero mentre il
   prezzo gli si disegnava sopra. Qui i figli sono dieci, non tre, e contarli
   per posizione è una scommessa. Con flex la riga elastica la si assegna per
   nome a chi deve averla: il configuratore. */
.product-modal-dialog:has(#box-config:not([hidden])) .product-modal-content{
  display:flex;flex-direction:column;
  min-height:0;overflow:hidden;padding:22px 26px 0;gap:0
}
.product-modal-dialog:has(#box-config:not([hidden])) #box-config{flex:1 1 auto}
/* La descrizione del piatto e le info alimentari restano, ma non si prendono
   lo spazio dei piatti: in modalità box sono contorno, non contenuto. */
.product-modal-dialog:has(#box-config:not([hidden])) .product-modal-description,
.product-modal-dialog:has(#box-config:not([hidden])) .product-food-info{display:none}
.product-modal-dialog:has(#box-config:not([hidden])) .product-modal-price{margin:0 0 6px}
/* Il nome della box lo dice già il titolo del modale: ripeterlo nel
   configuratore lo faceva comparire due volte, uno sopra l'altro. Resta la
   riga che aggiunge qualcosa — «11 piatti · Menu cena». */
.product-modal-dialog:has(#box-config:not([hidden])) #box-config-title{display:none}
.product-modal-dialog:has(#box-config:not([hidden])) .product-modal-content > h2{
  margin:0;font-size:1.6rem;line-height:1.15
}
.product-modal-dialog:has(#box-config:not([hidden])) .product-category{margin:0 0 2px}

/* ── il configuratore: piatti a sinistra, riepilogo fermo a destra ── */
#box-config{
  position:relative;
  display:grid;grid-template-columns:minmax(0,1fr) 300px;
  grid-template-areas:"testa testa" "lista riepilogo";
  gap:0 20px;min-height:0;overflow:hidden;
  padding:0;border:0;background:none;margin:0
}
.box-config-head{
  grid-area:testa;display:flex;align-items:baseline;justify-content:space-between;
  gap:16px;padding-bottom:12px;border-bottom:1px solid rgba(212,166,93,.22)
}
.box-config-head strong{font-size:1.35rem;letter-spacing:.01em}
.box-config-head small{font-size:.95rem;opacity:.75}
/* Il contatore vive dentro il riepilogo nel markup — è l'unico modo perché su
   telefono finisca nella barra compatta insieme alla riga di stato. Su schermo
   largo però il posto giusto resta in alto a destra, nell'intestazione: si
   sgancia dal flusso e si àncora a `#box-config`.
   Per farlo, il riepilogo su desktop non può essere `sticky`: un elemento
   posizionato fa da riferimento a ciò che contiene, e il contatore si
   ancorerebbe a lui invece che all'intestazione. Non è una perdita — su
   desktop il riepilogo sta in una colonna che non scorre, quindi resta
   visibile da sé. */
#box-count{
  position:absolute;top:0;right:0;z-index:2;
  font-size:1.5rem;font-weight:700;letter-spacing:.02em;padding:0;line-height:1.1
}
#box-count::after{content:" scelti";font-size:.85rem;font-weight:400;opacity:.65}
#box-count.full{color:#7fd897}

.box-colonna{grid-area:lista;display:grid;grid-template-rows:auto auto minmax(0,1fr);min-height:0;overflow:hidden;gap:10px;padding:14px 0}
.box-search{
  width:100%;min-height:46px;padding:.7rem .9rem;font-size:1rem;
  border:1px solid rgba(212,166,93,.3);background:#15110e;color:inherit;border-radius:10px
}
.box-sections{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none}
.box-sections::-webkit-scrollbar{display:none}
.box-sections button,.box-chip{
  min-height:44px;padding:.55rem 1rem;font-size:.95rem;white-space:nowrap;border-radius:999px
}
/* Un solo scorrimento: quello della lista. Il modale non scorre più sotto. */
.box-list{
  max-height:none;min-height:0;height:100%;overflow-y:auto;overscroll-behavior:contain;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;padding-right:6px
}
.box-item{
  padding:14px 15px;gap:6px;border-radius:12px;
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:12px
}
.box-item .box-code{font-size:.85rem;opacity:.7;letter-spacing:.06em}
.box-item strong{font-size:1.05rem;line-height:1.25}
.box-desc{font-size:.9rem;line-height:1.5;opacity:.8;grid-column:2}
.box-badge{font-size:.78rem;padding:.2rem .55rem}
/* Bersagli grandi: si tocca con il pollice, non con un puntatore. */
.box-add,.box-qty button{min-width:44px;min-height:44px;width:44px;height:44px;font-size:1.35rem}
.box-qty{gap:8px}
.box-qty strong{min-width:26px;text-align:center;font-size:1.1rem}

/* ── il riepilogo, fermo mentre la lista scorre ── */
.box-riepilogo{
  grid-area:riepilogo;position:static;align-self:start;
  display:grid;gap:10px;padding:16px;margin:14px 0;
  border:1px solid rgba(212,166,93,.28);background:#17110d;border-radius:12px
}
#box-state{font-size:1.05rem;font-weight:600}
#box-state.full{color:#7fd897}
.box-limits{font-size:.9rem;line-height:1.55;opacity:.85;margin:0}
.box-chosen{max-height:34vh;overflow:auto;margin:0}
.box-scelti summary{
  list-style:none;min-height:34px;display:flex;align-items:center;gap:6px;
  font-size:.9rem;opacity:.8;cursor:pointer
}
.box-scelti summary::-webkit-details-marker{display:none}
.box-scelti summary::before{content:"▸";transition:transform .15s}
.box-scelti[open] summary::before{transform:rotate(90deg)}

/* ── la conferma resta sempre a portata, in fondo ── */
.product-modal-dialog:has(#box-config:not([hidden])) .product-modal-actions{
  position:sticky;bottom:0;z-index:2;
  padding:14px 0;margin:0;background:linear-gradient(180deg,rgba(15,11,9,0),#0f0b09 22%);
  display:flex;gap:14px;align-items:center;justify-content:flex-end
}
.product-modal-dialog:has(#box-config:not([hidden])) #confirm-add-product{
  min-height:52px;padding:.9rem 2rem;font-size:1.05rem;letter-spacing:.04em;text-transform:uppercase
}
/* «− 1 +» accanto a una box da undici piatti si legge come «un piatto».
   L'etichetta dice di che cosa è la quantità, e compare solo in modalità box. */
.product-modal-dialog:has(#box-config:not([hidden])) .quantity-control{position:relative;margin-top:14px}
.product-modal-dialog:has(#box-config:not([hidden])) .quantity-control::before{
  content:"Quantità box";position:absolute;top:-15px;left:0;right:0;text-align:center;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;opacity:.62;white-space:nowrap
}

/* ── 3 · la scheda piatto: prima il nome, poi il resto ──────────────────────
   Il codice e la sezione servono al personale, non a chi sceglie: restano,
   ma piccoli e sopra. Il nome diventa la cosa che si legge per prima, la
   descrizione torna visibile, i limiti si vedono, il «+» è il gesto. */
.box-item{
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"codice codice" "nome piu" "descrizione piu" "badge piu";
  align-items:center;row-gap:5px;column-gap:14px;padding:13px 15px
}
.box-item .box-code{
  grid-area:codice;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;opacity:.45
}
.box-item strong{grid-area:nome;align-self:end;font-size:1.08rem;line-height:1.22;letter-spacing:.01em}
.box-desc{
  grid-area:descrizione;align-self:start;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;font-size:.88rem;line-height:1.45;opacity:.72;margin:0
}
.box-item .box-badge{grid-area:badge;align-self:start;justify-self:start}
.box-add,.box-qty{grid-area:piu;align-self:center;justify-self:end}
.product-modal-dialog:has(#box-config:not([hidden])) .product-note-field,
.product-modal-dialog:has(#box-config:not([hidden])) #product-note,
.product-modal-dialog:has(#box-config:not([hidden])) .product-allergen-note{display:none}

/* ── tablet: il riepilogo scende sotto, la lista resta larga ── */
@media(max-width:1024px){
  .product-modal-dialog:has(#box-config:not([hidden])){width:min(920px,100%)}
  #box-config{grid-template-columns:minmax(0,1fr);grid-template-areas:"testa" "lista" "riepilogo";gap:0}
  .box-riepilogo{position:static;margin:0 0 12px}
  #box-count{position:absolute;top:0;right:0}
  .box-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
  .box-chosen{max-height:none}
}

/* ── telefono: una colonna, riepilogo fermo in basso ── */
@media(max-width:640px){
  .product-modal-dialog:has(#box-config:not([hidden])){
    width:100%;max-height:100vh;border-radius:0
  }
  .product-modal-dialog:has(#box-config:not([hidden])) .product-modal-content{padding:16px 14px 0}
  .box-config-head{flex-direction:column;align-items:flex-start;gap:2px;padding-bottom:10px}
  .box-config-head strong{font-size:1.15rem}
  #box-count{justify-self:start;font-size:1.25rem}
  .box-list{grid-template-columns:1fr;gap:8px}
  /* Su 390 le tre colonne strozzavano il nome — «SUSHI SASHIMI ROYAL» andava a
     capo tre volte e la descrizione si riduceva a «1pz *sca…». La scheda si
     impila: codice sopra, nome su tutta la riga, badge e «+» in fondo. Ogni
     scheda diventa bassa, e nella lista ce ne stanno il doppio. */
  .box-item{
    padding:10px 12px;grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:"codice codice" "nome nome" "badge piu";
    align-items:center;row-gap:4px
  }
  .box-item .box-code{grid-area:codice;font-size:.8rem}
  .box-item strong{grid-area:nome;font-size:1rem;line-height:1.2}
  .box-desc{display:none}
  .box-item .box-badge{grid-area:badge;justify-self:start}
  .box-add,.box-qty{grid-area:piu;justify-self:end}
  /* Il riepilogo si stacca dal flusso e resta sotto il pollice. */
  .box-riepilogo{
    position:sticky;bottom:0;z-index:3;margin:0;padding:12px 14px;border-radius:12px 12px 0 0
  }
  /* Il riepilogo occupava mezzo schermo, e diceva tre volte la stessa cosa:
     il contatore, la riga di stato e il pulsante ripetevano tutti «ancora 11
     piatti». Qui diventa una barra alta una riga — quanti ne hai scelti e
     quanti ne mancano — e il dettaglio si apre solo se lo si chiede. */
  .box-limits{display:none}
  .box-riepilogo{
    display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;
    padding:8px 12px;border-radius:12px 12px 0 0
  }
  #box-state{font-size:.95rem;font-weight:600;order:2}
  /* Il contatore scende nella barra e si porta dietro la parola che gli mancava. */
  #box-count{position:static;order:1;font-size:1.05rem;margin:0}
  #box-count::after{font-size:.78rem}
  #box-state::before{content:"· ";opacity:.5}
  .box-scelti{order:3;flex:1 0 100%;margin:0}
  .box-scelti summary{
    min-height:34px;display:flex;align-items:center;font-size:.85rem;opacity:.75;cursor:pointer
  }
  .box-scelti[open] summary{opacity:1}
  .box-chosen{max-height:18vh;overflow:auto;padding-top:4px}
  .box-colonna{padding:8px 0;gap:8px}
  .box-search{min-height:44px}
  .box-item{grid-template-areas:"codice codice" "nome piu" "descrizione piu" "badge piu";padding:11px 12px}
  .box-desc{-webkit-line-clamp:1}
  .product-modal-dialog:has(#box-config:not([hidden])) .product-modal-actions{padding:12px 0}
  .product-modal-dialog:has(#box-config:not([hidden])) #confirm-add-product{flex:1;min-height:52px}
}

/* I comandi per sostituire la fotografia di un piatto vivono nel Manager, e il
   Manager non carica questo foglio: il suo CSS è tutto dentro
   `manager-v23-16.html`. Le regole stavano qui e non hanno mai avuto effetto —
   è così che i tre pulsanti finivano uno sopra l'altro. Ora stanno dove la
   pagina le legge davvero, e qui non ne resta una copia morta. */

/* Perché un orario non si può scegliere. Sta sotto la tendina, dove guarda chi
   ha appena provato a selezionarlo, e non è un errore: è un'informazione. */
.booking-availability{margin:.5rem 0 0;font-size:.9rem;line-height:1.45;color:#b98a4a}
.booking-availability[hidden]{display:none}
#booking-time option:disabled{color:#999}

/* ====================================================================
   Ordina Online · la barra compatta e il pannello delle categorie

   Prima la pagina apriva con cinquantacinque pulsanti categoria, uno
   dietro l'altro: per cambiare categoria da metà elenco bisognava
   risalire in cima, e il muro si prendeva lo spazio dei piatti. Renderlo
   appiccicoso non era la risposta — un muro appiccicoso resta un muro, e
   su un telefono avrebbe occupato mezzo schermo.

   Restano due comandi: cercare e scegliere. L'elenco compare quando
   serve, e si chiude appena si è scelto.
   ==================================================================== */

/* La barra segue lo scorrimento, sotto l'intestazione che è già
   appiccicosa: `top` è la sua altezza, o la barra le finirebbe sotto.
   `z-index` più basso di quello dell'intestazione (50) e più alto del
   contenuto: deve passare sopra i piatti, mai sopra il menu del sito. */
.catalog-bar{position:sticky;top:86px;z-index:20;display:flex;gap:12px;align-items:stretch;
  margin-bottom:18px;padding:10px 0;background:var(--bg)}
.catalog-bar .menu-search{flex:1;min-width:0}
.category-picker{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:space-between;gap:12px;
  min-height:48px;min-width:190px;max-width:min(340px,52vw);padding:0 16px;
  background:#12100e;border:1px solid var(--line);color:#fff;font:inherit;cursor:pointer}
.category-picker.scelta{border-color:var(--gold);color:var(--gold)}
.category-picker:hover{border-color:var(--gold)}
.category-picker-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.category-picker-caret{flex:none;opacity:.75;font-size:.8em}

/* Il pannello: fuori dal flusso, così aprirlo non sposta né allunga la
   barra. Sul desktop scende da sotto il pulsante; più stretto diventa un
   foglio che sale dal basso, dove il pollice arriva. */
/* Percentuali, non `100vw`: quest'ultimo comprende la barra di scorrimento
   ed è la via più corta per una pagina più larga della sua finestra. Su un
   elemento fisso la percentuale si misura sul blocco contenitore iniziale,
   che la barra non la conta. C'è un presidio che lo pretende, e mi ha già
   fermato una volta. */
.category-panel{position:fixed;z-index:120;left:16px;top:150px;
  width:min(560px,calc(100% - 32px));max-height:min(70vh,620px);overflow:auto;
  background:#12100e;border:1px solid var(--line);box-shadow:0 30px 90px rgba(0,0,0,.55);padding:16px}
.category-panel[hidden]{display:none}
.category-panel-backdrop{position:fixed;inset:0;z-index:110;background:rgba(5,4,3,.55)}
.category-panel-backdrop[hidden]{display:none}
.category-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.category-panel-head strong{font-family:var(--serif);font-size:1.35rem}
.category-panel-close{min-width:44px;min-height:44px;background:none;border:0;color:#fff;font-size:1.6rem;cursor:pointer}
.category-panel .meal-filter{margin-bottom:12px}
/* Il filtro per fascia era in pagina e resta a portata: sta qui perché è
   una scelta dello stesso genere — che cosa mostrare — e nella barra
   avrebbe rifatto il muro che si è tolto. Il pulsante lo riporta scritto,
   così non si perde. */
.category-panel .meal-filter button{flex:1;min-height:44px}
.category-panel-list{display:grid;gap:2px}
.category-gruppo{display:grid;gap:2px;padding:6px 0;border-top:1px solid rgba(255,255,255,.06)}
/* Un'intestazione non scegliibile: la sezione non ha piatti suoi — «MENU
   BOX» ha solo le due figlie — e fingere una riga da premere porterebbe a
   un elenco vuoto. */
.category-sezione{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;
  padding:8px 12px;color:var(--gold);font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.category-sezione small{color:var(--muted);letter-spacing:0}
/* Bersagli da dito: 44px è il minimo, e vale anche col mouse — qui si
   preme una voce sola fra cinquantacinque. */
.category-voce{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
  min-height:44px;padding:9px 12px;background:transparent;border:1px solid transparent;color:#fff;
  font:inherit;text-align:left;cursor:pointer}
.category-voce:hover,.category-voce:focus-visible{background:#1c1511;border-color:var(--line)}
.category-voce.attiva{background:var(--red);border-color:var(--red)}
.category-voce small{flex:none;color:var(--muted);font-size:.75rem}
.category-voce.attiva small{color:#f6d9dc}
.category-voce.figlia{padding-left:30px}
.category-voce.figlia>span:first-child::before{content:"└ ";color:var(--muted)}
.category-voce.attiva>span:first-child::before{color:#f6d9dc}

/* La riga che dice dove sono gli altri risultati della stessa ricerca. */
.search-elsewhere{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 6px;
  color:var(--muted);font-size:.82rem}
.search-elsewhere[hidden]{display:none}
.search-elsewhere .text-button{min-height:44px}

@media(max-width:1100px){
  /* Il carrello qui non è più una colonna appiccicosa: sta nel flusso,
     sotto i piatti, e la barra non gli passa mai sopra. */
  .catalog-bar{top:86px}
  /* Larghezza e posizione arrivano dallo script, che le prende dalla barra:
     qui resta solo il tetto, perché un pannello largo come una colonna da
     mille pixel si legge peggio di uno stretto. */
  .category-panel{max-width:640px}
}
@media(max-width:760px){
  /* L'intestazione del sito si abbassa a 72px: la barra la segue, o
     resterebbe uno spiraglio di pagina fra le due. */
  .catalog-bar{top:72px;gap:8px;flex-wrap:nowrap}
  .catalog-bar .menu-search{padding:0 12px}
  .catalog-bar .menu-search input{padding:12px 0}
  .category-picker{min-width:0;flex:0 0 auto;max-width:46vw;padding:0 12px;gap:8px}
  /* Foglio dal basso: si raggiunge col pollice, e lascia scoperta la parte
     alta della pagina. Sopra la barra fissa del sito (z-index 80), che
     altrimenti coprirebbe l'ultima voce dell'elenco. */
  .category-panel{left:0;right:0;bottom:0;top:auto;transform:none;width:auto;
    max-height:78vh;border-radius:14px 14px 0 0;padding:14px 14px calc(14px + env(safe-area-inset-bottom,0px))}
  .category-panel-head strong{font-size:1.15rem}
  .category-panel .meal-filter{flex-wrap:wrap}
  .category-voce{min-height:48px}
  /* Con il pannello aperto la pagina sotto non scorre: due scorrimenti
     sovrapposti fanno perdere il punto in cui si era. */
  body.categorie-aperte{overflow:hidden}
}

/* ====================================================================
   Ordina Online · quando ricevere l'ordine

   Vale per il ritiro e per la consegna. Chiuso oggi non vuol dire chiuso
   domani: sbarrare la pagina manda via un cliente che avrebbe ordinato.
   ==================================================================== */
.quando-blocco{display:grid;gap:10px;margin-top:16px;padding:16px;
  background:#12100e;border:1px solid var(--line)}
.quando-titolo{margin:0;font-weight:800;letter-spacing:.02em}
.quando-scelta{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
/* Bersagli da dito: qui si sceglie con il pollice, in piedi, spesso di fretta. */
.quando-btn{min-height:48px;padding:0 14px;background:#0e0c0a;border:1px solid var(--line);
  color:#fff;font:inherit;cursor:pointer}
.quando-btn.attivo{background:var(--red);border-color:var(--red)}
.quando-btn:disabled{opacity:.42;cursor:not-allowed}
/* L'avviso di chiusura: si legge prima di capire che cosa fare, quindi sta
   sopra i campi e non sotto. */
.quando-chiuso{margin:0;padding:10px 12px;background:#2a1a12;border:1px solid var(--gold);
  color:var(--gold);font-size:.86rem}
.quando-chiuso[hidden]{display:none}
.quando-campi{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.quando-campi[hidden]{display:none}
.quando-campi label{display:grid;gap:6px;min-width:0;color:var(--muted);font-size:.78rem}
.quando-campi .field{width:100%;min-height:48px;box-sizing:border-box}
.quando-blocco .cart-note{margin:0}
@media(max-width:620px){.quando-campi,.quando-scelta{grid-template-columns:minmax(0,1fr)}}

/* ── Bersagli da dito ─────────────────────────────────────────────────────
   Le voci del piè di pagina sono collegamenti di testo dentro una colonna
   flessibile: alte ventun pixel, che col mouse vanno benissimo e con il pollice
   no. Misurate a 834, 768 e 390 pixel, su tutte le pagine.

   La regola vive in `@media(pointer:coarse)` e non in una larghezza: un iPad in
   sala è largo 834 pixel e si tocca, un portatile da 834 pixel non esiste. E
   non tocca l'aspetto sullo schermo grande, dove ventun pixel sono giusti.

   `inline-flex` con `align-items:center` alza l'area sensibile senza spostare
   il testo: il collegamento resta dov'è, cresce lo spazio che lo circonda. */
@media(pointer:coarse){
  .footer-col a,.footer-bottom a,.legal-nav a,
  .legal-index a,.contact-socials a,.menu-card-actions a,.announcement a,
  .booking-visual-note a,.cookie-settings-link,.legal-table a,
  .text-button{min-height:44px;display:inline-flex;align-items:center}
  .social-links a{width:44px;height:44px}
}
