/* Restaurant variant: "noir" — cinematic dark editorial with gold accents.
   Il file variant conteneva solo token; qui aggiungiamo TUTTO lo styling
   restaurant-specific (nav, hero, story, menu dot-leader, gallery masonry,
   Instagram grid, reviews carousel, booking form 2col) senza toccare
   base.css shared con altri activity_type. */

:root {
  --accent: #c9a24b;
  --accent-2: #e3c987;
  --accent-3: #6b4f18;
  /* !important so the dark palette wins over the shared base-v2.css light
     override (loaded AFTER this variant): a noir/dark restaurant must stay dark. */
  --bg: #0d0b08 !important;
  --surface: #1a1611 !important;
  --surface-2: #221c15 !important;
  --ink: #f5efe4 !important;
  --ink-2: #d4c8b5 !important;
  --muted: #8a7f6c !important;
  --border: rgba(201,162,75,.16) !important;
  --border-strong: rgba(201,162,75,.35) !important;
  /* Language dropdown themed to the noir nav: dark panel + light/gold text.
     Without these, base.css falls back to a WHITE panel (--lang-bg #fff) while
     `.rest-body a` forces the item text to cream (--ink) → cream-on-white,
     unreadable. Setting the tokens makes it light-on-dark and readable. */
  --lang-bg: #17130d;
  --lang-fg: #f5efe4;
  --lang-bd: rgba(201,162,75,.38);
  --lang-active: #c9a24b;
  --radius: 4px;
  --radius-lg: 8px;
  --font-head: 'Playfair Display SC', 'Playfair Display', Georgia, serif;
  --font-body: 'Karla', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --hero-overlay: linear-gradient(180deg, rgba(0,0,0,.35) 0%, rgba(13,11,8,.65) 55%, rgba(13,11,8,.95) 100%);
  --shadow: 0 32px 80px rgba(0,0,0,.6);
  --shadow-sm: 0 12px 30px rgba(0,0,0,.45);
  --shadow-gold: 0 8px 30px rgba(201,162,75,.25);
}

/*wc-font:ignored*/

/* Reset base */
.rest-body { background: var(--bg); color: var(--ink); font-family: var(--font-body); margin: 0; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
.rest-body a { color: var(--ink); text-decoration: none; transition: color .2s ease; }
.rest-body a:hover { color: var(--accent-2); }

/* Hide default header/topbar from base.css */
.site-header, .topbar { display: none !important; }

/* ═══ NAV STICKY ═══ */
/* Nav sempre visibile con background solido — anche a scroll=0 la barra deve
   essere leggibile sopra la foto hero. Prima era trasparente e i link
   sparivano contro immagini chiare. */
.rest-nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; padding: 14px 0; background: rgba(13,11,8,.94); backdrop-filter: blur(10px); border-bottom: 1px solid var(--border); transition: padding .3s ease, background .3s ease; }
.rest-nav.is-scrolled { padding: 10px 0; background: rgba(13,11,8,.98); }
.rest-nav__inner { max-width: 1280px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.rest-nav__brand { display: flex; align-items: center; gap: 12px; font-family: var(--font-head); font-size: 20px; letter-spacing: .04em; color: var(--ink) !important; text-decoration: none; min-width: 0; flex: 0 1 auto; }
.rest-nav__brand:hover { color: var(--accent-2) !important; }
/* Keep the brand on ONE line (ellipsis) so the fixed bar never grows/overlaps
   the hero on mobile with a long business name. The hero H1 keeps the full name. */
.rest-nav__name { color: var(--ink); display: block; max-width: 46vw; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rest-nav__actions { flex-shrink: 0; }
.rest-nav__brand:hover .rest-nav__name { color: var(--accent-2); }
.rest-nav__logo { height: 36px; width: auto; }
.rest-nav__menu { display: flex; align-items: center; gap: 36px; }
.rest-nav__menu a { font-size: 13px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-2); font-weight: 500; position: relative; }
.rest-nav__menu a::after { content: ''; position: absolute; left: 0; right: 0; bottom: -6px; height: 1px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .3s ease; }
.rest-nav__menu a:hover::after { transform: scaleX(1); }
.rest-nav__cta { padding: 10px 20px; border: 1px solid var(--accent); color: var(--accent) !important; letter-spacing: .18em; }
.rest-nav__cta:hover { background: var(--accent); color: var(--bg) !important; }
.rest-nav__cta::after { display: none !important; }
/* language switcher: defer to base.css dropdown (chip + panel); always in the top bar */
.lang-switch { position: relative; margin: 0; }
.lang-switch a::after { display: none !important; }
.rest-nav__actions { display: flex; align-items: center; gap: 10px; }
.rest-nav__toggle { display: none; background: transparent; border: 0; padding: 8px; cursor: pointer; gap: 4px; flex-direction: column; }
.rest-nav__toggle span { display: block; width: 24px; height: 2px; background: var(--ink); transition: transform .3s ease, opacity .2s ease; }
@media (max-width: 900px) {
  /* Drawer is hidden: the top bar is just brand + actions. Cap the brand so the
     fixed bar keeps a stable single-line height and never covers the hero. */
  .rest-nav__name { max-width: calc(100vw - 150px); font-size: 17px; }
  .rest-nav__menu { position: fixed; top: 68px; left: 0; right: 0; background: rgba(13,11,8,.98); flex-direction: column; align-items: stretch; padding: 24px 24px 32px; gap: 8px; transform: translateY(-120%); transition: transform .35s ease; visibility: hidden; opacity: 0; max-height: calc(100vh - 68px); overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .rest-nav__menu.is-open { transform: translateY(0); visibility: visible; opacity: 1; }
  .rest-nav__menu a { padding: 14px 0; border-bottom: 1px solid var(--border); font-size: 15px; min-height: 44px; display: flex; align-items: center; }
  /* In the drawer the "Prenota" CTA must read like the other links, not a gold box. */
  .rest-nav__menu .rest-nav__cta { border: 0 !important; padding: 14px 0 !important; color: var(--ink-2) !important; letter-spacing: .18em; }
  .rest-nav__menu .rest-nav__cta:hover { background: transparent; color: var(--accent) !important; }
  .rest-nav__toggle { display: flex; width: 44px; height: 44px; justify-content: center; align-items: center; z-index: 2; }
  .rest-nav__toggle.is-open span:nth-child(1) { transform: rotate(45deg) translate(6px, 4px); }
  .rest-nav__toggle.is-open span:nth-child(2) { opacity: 0; }
  .rest-nav__toggle.is-open span:nth-child(3) { transform: rotate(-45deg) translate(6px, -4px); }
  body.nav-open { overflow: hidden; }
}

/* ============ WhatsApp floating button ============ */
/* Desktop: in basso a SINISTRA per non collidere con .float-cta "Prenota un tavolo" (in basso a dx).
   Mobile (<=720px): torna a destra come icona sola (piccola, non collide con la CTA stretta). */
.wa-float {
  position: fixed;
  left: 20px;
  right: auto;
  bottom: 20px;
  z-index: 950;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px 14px 14px;
  background: #25D366;
  color: #fff !important;
  border-radius: 999px;
  box-shadow: 0 10px 28px rgba(37,211,102,.35), 0 4px 12px rgba(0,0,0,.25);
  text-decoration: none;
  font-weight: 600;
  font-size: 14px;
  letter-spacing: .02em;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
  animation: wa-pulse 2.6s ease-in-out 1.5s infinite;
}
.wa-float:hover { background: #1EBE5C; transform: translateY(-2px); box-shadow: 0 14px 34px rgba(37,211,102,.45), 0 6px 14px rgba(0,0,0,.3); }
.wa-float:active { transform: translateY(0) scale(.97); }
.wa-float svg { flex-shrink: 0; }
.wa-float__label { line-height: 1; }
@keyframes wa-pulse {
  0%, 100% { box-shadow: 0 10px 28px rgba(37,211,102,.35), 0 4px 12px rgba(0,0,0,.25), 0 0 0 0 rgba(37,211,102,.5); }
  50% { box-shadow: 0 10px 28px rgba(37,211,102,.35), 0 4px 12px rgba(0,0,0,.25), 0 0 0 12px rgba(37,211,102,0); }
}
@media (max-width: 720px) {
  .wa-float { padding: 14px; left: auto; right: 16px; bottom: 16px; }
  .wa-float__label { display: none; }
}
@media (prefers-reduced-motion: reduce) { .wa-float { animation: none; } }

/* ═══ HERO cinematic ═══ */
.rest-hero { position: relative; min-height: 100vh; min-height: 100dvh; display: flex; align-items: center; justify-content: center; overflow: hidden; padding: 140px 24px 80px; }
.rest-hero__bg { position: absolute; inset: -10%; background-size: cover; background-position: center; will-change: transform; z-index: 1; }
.rest-hero__scrim { position: absolute; inset: 0; background: var(--hero-overlay); z-index: 2; }
.rest-hero__content { position: relative; z-index: 3; text-align: center; max-width: 900px; margin: 0 auto; }
.rest-hero__eyebrow { display: flex; align-items: center; justify-content: center; gap: 20px; font-family: var(--font-body); font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 32px; }
.rest-hero__dash { display: inline-block; width: 48px; height: 1px; background: var(--accent); }
.rest-hero__title { font-family: var(--font-head); font-weight: 700; font-size: clamp(48px, 9vw, 110px); line-height: 1; letter-spacing: -.01em; color: #fff; margin: 0 0 24px; text-shadow: 0 6px 40px rgba(0,0,0,.75), 0 2px 12px rgba(0,0,0,.6); }
.rest-hero__sub { font-family: 'Playfair Display', serif; font-style: italic; font-size: clamp(18px, 2.2vw, 24px); color: #fff; margin: 0 0 48px; letter-spacing: .02em; text-shadow: 0 3px 12px rgba(0,0,0,.7), 0 1px 4px rgba(0,0,0,.5); font-weight: 500; }
.rest-hero__landmark { display: inline-flex; align-items: center; gap: 8px; margin: -28px 0 32px; padding: 8px 18px; border-radius: 100px; background: rgba(13,11,8,.45); border: 1px solid var(--border-strong); backdrop-filter: blur(6px); color: var(--accent-2); font-family: var(--font-body); font-size: 13px; font-weight: 600; letter-spacing: .04em; }
.rest-hero__landmark svg { flex-shrink: 0; color: var(--accent-2); }
.rest-hero__cta { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-bottom: 48px; }
.rest-hero__badge { display: inline-flex; align-items: center; gap: 12px; padding: 12px 24px; border: 1px solid var(--border-strong); background: rgba(13,11,8,.5); backdrop-filter: blur(8px); border-radius: 100px; font-size: 14px; color: var(--ink-2); }
.rest-hero__stars { color: var(--accent-2); font-size: 16px; letter-spacing: 2px; }
.rest-hero__rating { color: var(--ink); font-weight: 600; }
.rest-hero__reviews { color: var(--muted); font-size: 13px; }
.rest-hero__scroll { position: absolute; bottom: 24px; right: 32px; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 10px; letter-spacing: .3em; color: var(--ink-2); opacity: .85; }
.rest-hero__scroll-line { display: block; width: 1px; height: 32px; background: linear-gradient(180deg, var(--accent) 0%, transparent 100%); animation: scrollPulse 2s ease-in-out infinite; }
@media (max-width: 900px) { .rest-hero__scroll { display: none; } }
@keyframes scrollPulse { 0%,100% { opacity: .3; transform: scaleY(1); } 50% { opacity: 1; transform: scaleY(1.15); } }

/* ═══ BUTTONS ═══ */
.rest-btn { display: inline-flex; align-items: center; gap: 10px; padding: 16px 32px; font-family: var(--font-body); font-size: 13px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; border-radius: 2px; transition: all .3s ease; cursor: pointer; border: 0; }
.rest-btn--gold { background: var(--accent); color: var(--bg); }
.rest-btn--gold:hover { background: var(--accent-2); color: var(--bg) !important; transform: translateY(-2px); box-shadow: var(--shadow-gold); }
.rest-btn--ghost { background: transparent; color: var(--ink); border: 1px solid rgba(255,255,255,.3); }
.rest-btn--ghost:hover { border-color: var(--accent-2); color: var(--accent-2) !important; background: rgba(201,162,75,.06); }
.rest-btn--wide { width: 100%; justify-content: center; padding: 18px 32px; }

/* ═══ SECTIONS common ═══ */
.rest-story, .rest-menu, .rest-gallery, .rest-ig, .rest-reviews, .rest-book { padding: 72px 24px; }
@media (max-width: 900px) { .rest-story, .rest-menu, .rest-gallery, .rest-ig, .rest-reviews, .rest-book { padding: 50px 20px; } }

/* ═══ STORY editorial ═══ */
.rest-story__grid { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
@media (max-width: 900px) { .rest-story__grid { grid-template-columns: 1fr; gap: 48px; } }
.rest-story__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 20px; }
.rest-story__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 56px); line-height: 1.1; color: var(--ink); margin: 0 0 32px; }
.rest-story__tagline { font-family: var(--font-head); font-style: italic; font-size: 18px; letter-spacing: .04em; color: var(--accent-2); margin: -8px 0 24px; }
.rest-story__lead { font-size: 17px; line-height: 1.75; color: var(--ink-2); margin: 0 0 20px; }
.rest-story__lead + .rest-story__lead { margin-top: 0; }
.rest-story__lead:last-of-type { margin-bottom: 32px; }
@media (max-width: 720px) {
  .rest-story__tagline { font-size: 16px; }
  .rest-story__lead { font-size: 16px; line-height: 1.7; margin-bottom: 16px; }
}
.rest-story__facts { list-style: none; padding: 0; margin: 32px 0 0; border-top: 1px solid var(--border); }
.rest-story__facts li { display: grid; grid-template-columns: 120px 1fr; gap: 24px; padding: 16px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.rest-story__k { color: var(--muted); text-transform: uppercase; letter-spacing: .15em; font-size: 11px; font-weight: 600; align-self: center; }
.rest-story__v { color: var(--ink); }
.rest-story__media { position: relative; }
.rest-story__figure { margin: 0; overflow: hidden; border-radius: var(--radius-lg); box-shadow: var(--shadow); aspect-ratio: 3/4; }
.rest-story__figure img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s ease; }
.rest-story__figure:hover img { transform: scale(1.06); }
.rest-story__badge { position: absolute; bottom: -32px; right: -20px; background: var(--surface); border: 1px solid var(--border-strong); padding: 20px 28px; border-radius: 4px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; align-items: center; gap: 4px; }
@media (max-width: 900px) { .rest-story__badge { right: 12px; bottom: 12px; } }
.rest-story__badge-num { font-family: var(--font-head); font-size: 40px; color: var(--accent-2); line-height: 1; }
.rest-story__badge-stars { color: var(--accent-2); font-size: 12px; letter-spacing: 2px; }
.rest-story__badge-lbl { font-size: 10px; letter-spacing: .18em; color: var(--muted); text-transform: uppercase; }

/* ═══ CRAFT / Lavorazioni artigianali ═══ */
.rest-craft { padding: 72px 24px; background: linear-gradient(180deg, var(--bg) 0%, var(--surface) 100%); }
@media (max-width: 900px) { .rest-craft { padding: 50px 20px; } }
.rest-craft__grid { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; }
@media (max-width: 900px) { .rest-craft__grid { grid-template-columns: 1fr; gap: 40px; } }
.rest-craft__figure { margin: 0; overflow: hidden; border-radius: var(--radius-lg); box-shadow: var(--shadow); aspect-ratio: 4/5; position: relative; }
.rest-craft__figure::after { content: ''; position: absolute; inset: 0; box-shadow: inset 0 0 60px rgba(0,0,0,.4); pointer-events: none; }
.rest-craft__figure img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s ease; }
.rest-craft__figure:hover img { transform: scale(1.04); }
.rest-craft__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-craft__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(30px, 4.5vw, 52px); line-height: 1.1; color: var(--ink); margin: 0 0 20px; }
.rest-craft__lead { font-family: 'Playfair Display', serif; font-style: italic; font-size: 18px; color: var(--ink-2); margin: 0 0 32px; line-height: 1.55; }
.rest-craft__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0; }
.rest-craft__item { display: grid; grid-template-columns: 130px 1fr; gap: 20px; padding: 18px 0; border-top: 1px solid var(--border); }
.rest-craft__item:last-child { border-bottom: 1px solid var(--border); }
.rest-craft__k { font-family: var(--font-head); color: var(--accent-2); font-weight: 700; font-size: 14px; letter-spacing: .1em; text-transform: uppercase; align-self: start; padding-top: 2px; }
.rest-craft__v { color: var(--ink-2); font-size: 15px; line-height: 1.65; }

/* ═══ SPECIALITÀ pizze cards ═══ */
.rest-specials { padding: 72px 24px; }
@media (max-width: 900px) { .rest-specials { padding: 72px 20px; } }
.rest-specials__head { max-width: 900px; margin: 0 auto 56px; text-align: center; }
.rest-specials__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-specials__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 52px); color: var(--ink); margin: 0 0 16px; line-height: 1.15; }
.rest-specials__sub { font-family: 'Playfair Display', serif; font-style: italic; font-size: 18px; color: var(--ink-2); margin: 0; }
.rest-specials__grid { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
@media (max-width: 900px) { .rest-specials__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .rest-specials__grid { grid-template-columns: 1fr; } }
.rest-specials__card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; display: flex; flex-direction: column; transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease; }
.rest-specials__card:hover { transform: translateY(-6px); box-shadow: var(--shadow); border-color: var(--border-strong); }
.rest-specials__figure { margin: 0; aspect-ratio: 16/10; overflow: hidden; background: var(--surface-2); }
.rest-specials__figure img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.rest-specials__card:hover .rest-specials__figure img { transform: scale(1.08); }
.rest-specials__body { padding: 24px 26px; display: flex; flex-direction: column; gap: 12px; flex: 1; }
.rest-specials__head-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.rest-specials__name { font-family: var(--font-head); font-weight: 700; font-size: 22px; color: var(--ink); margin: 0; letter-spacing: .01em; }
.rest-specials__price { font-family: var(--font-head); font-weight: 700; font-size: 20px; color: var(--accent-2); flex-shrink: 0; }
.rest-specials__cat { display: inline-block; font-family: var(--font-body); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--accent-2); font-weight: 600; margin: 4px 0 2px; opacity: .85; }
.rest-specials__desc { color: var(--ink-2); font-size: 14px; line-height: 1.6; margin: 0; flex: 1; }
.rest-specials__tag { display: inline-block; align-self: flex-start; padding: 4px 10px; background: rgba(201,162,75,.12); color: var(--accent-2); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; border-radius: 100px; border: 1px solid var(--border-strong); }

/* ═══ MENU downloads ═══ */
.rest-menu__downloads { margin-top: 48px; padding: 32px; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-lg); text-align: center; }
.rest-menu__downloads--top { margin: 24px auto 48px; max-width: 640px; padding: 28px 24px; background: linear-gradient(180deg, rgba(201,162,75,.06), rgba(201,162,75,.02)); border: 1px solid rgba(201,162,75,.25); }
.rest-menu__dl-label { color: var(--accent-2); font-size: 13px; letter-spacing: .18em; text-transform: uppercase; margin: 0 0 18px; font-weight: 600; }
.rest-menu__dl-list { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }
.rest-menu__section-h { font-family: var(--font-head); font-weight: 400; font-size: clamp(28px, 4.2vw, 44px); color: var(--ink); margin: 0 0 12px; text-align: center; }
.rest-menu__section-sub { color: var(--ink-2); font-style: italic; font-family: 'Playfair Display', serif; font-size: 17px; margin: 0 auto 48px; max-width: 640px; text-align: center; }

/* ═══ SOCIAL brand icons: contrasto migliore ═══ */
.rest-book__social-list { flex-wrap: wrap; }
.rest-book__social-list .rest-soc { width: 46px; height: 46px; min-width: 46px; flex: 0 0 46px; background: #fff; border: 0; padding: 0; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
@media (max-width: 520px) {
  .rest-book__social-list { gap: 10px; }
  .rest-book__social-list .rest-soc { width: 42px; height: 42px; min-width: 42px; flex: 0 0 42px; }
  .rest-book__social-list .rest-soc svg { width: 20px; height: 20px; }
}
.rest-book__social-list .rest-soc:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 8px 20px rgba(0,0,0,.45); border-color: transparent; }
.rest-book__social-list .rest-soc--fb { background: #fff; }
.rest-book__social-list .rest-soc--ig { background: #fff; }
.rest-book__social-list .rest-soc--ta { background: #fff; }
.rest-book__social-list .rest-soc--gm { background: #fff; }
.rest-book__social-list .rest-soc--wa { background: #fff; }

/* ═══ BLOG editorial ═══ */
.rest-menu { background: var(--surface); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.rest-menu__inner { max-width: 900px; margin: 0 auto; text-align: center; }
.rest-menu__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 20px; }
.rest-menu__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(36px, 5.5vw, 64px); color: var(--ink); margin: 0 0 12px; }
.rest-menu__sub { color: var(--ink-2); font-style: italic; font-family: 'Playfair Display', serif; font-size: 18px; margin: 0 0 64px; }
.rest-menu__list { display: flex; flex-direction: column; gap: 32px; text-align: left; }
.rest-menu__item { padding: 8px 0; min-width: 0; }
/* No flex-wrap on the row: the row must always stay on one flex line so the
   price never drops to its own line. Fit is resolved entirely inside the line
   via shrink: the dish name (flex:1 1 auto; min-width:0) is the only item
   allowed to shrink below its content width, so on narrow viewports it is the
   dish's own box that narrows and wraps its text onto multiple lines, while
   the leader (flex-basis 0%, absorbs no negative space) shrinks to nothing and
   the price (flex: 0 0 auto; white-space: nowrap) never shrinks/wraps and stays
   pinned top-right via margin-left:auto, aligned to the dish's first line via
   align-items:baseline (flex baseline = first line box). Desktop is unchanged:
   single line, dotted leader, price at the far right. */
.rest-menu__row { display: flex; align-items: baseline; gap: 4px 12px; margin-bottom: 8px; min-width: 0; }
.rest-menu__dish { font-family: var(--font-head); font-weight: 700; font-size: 20px; color: var(--ink); margin: 0; letter-spacing: .02em; flex: 1 1 auto; min-width: 0; overflow-wrap: break-word; word-break: break-word; }
.rest-menu__leader { flex: 1 1 0%; min-width: 0; height: 1px; border-bottom: 1px dotted var(--border-strong); position: relative; top: -4px; }
.rest-menu__price { font-family: var(--font-head); font-size: 20px; color: var(--accent-2); font-weight: 700; flex: 0 0 auto; white-space: nowrap; margin-left: auto; align-self: flex-start; }
/* Per-lead OPT-IN translated dish-name gloss (extra.translations[lang].menu_names),
   shown only on non-Italian pages right under the (always-Italian) dish name so a
   foreign guest understands what they're ordering. Absent for every other
   restaurant (no entry => builder never emits item.name_t/dish.title_t). */
.rest-menu__dish-t { color: var(--ink-2); opacity: .8; font-size: 13.5px; font-style: italic; margin: -4px 0 0; }
.rest-menu__text { color: var(--ink-2); font-size: 15px; line-height: 1.6; margin: 0; padding-left: 0; }
.rest-menu__note { margin-top: 56px; padding: 28px 32px; background: linear-gradient(135deg, rgba(201,162,75,.08) 0%, rgba(201,162,75,.02) 100%); border: 1px solid var(--border-strong); border-radius: var(--radius-lg); text-align: center; display: flex; align-items: center; gap: 18px; justify-content: center; }
.rest-menu__note::before { content: ''; flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; background: rgba(201,162,75,.15); background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c9a24b' stroke-width='2'><circle cx='12' cy='12' r='10'/><line x1='12' y1='8' x2='12' y2='12'/><line x1='12' y1='16' x2='12.01' y2='16'/></svg>"); background-repeat: no-repeat; background-position: center; background-size: 22px; }
.rest-menu__note p { margin: 0; color: var(--ink-2); font-size: 14.5px; font-family: 'Playfair Display', serif; font-style: italic; line-height: 1.55; text-align: left; }

/* ═══ GALLERY masonry (asymmetric) ═══ */
.rest-gallery__head { max-width: 1280px; margin: 0 auto 48px; text-align: center; }
.rest-gallery__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-gallery__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 56px); color: var(--ink); margin: 0 0 12px; }
.rest-gallery__count { color: var(--muted); font-size: 13px; letter-spacing: .18em; text-transform: uppercase; margin: 0; }

/* ═══ CAROSELLO GALLERIA ═══ */
.rest-carousel { position: relative; max-width: 1440px; margin: 0 auto; --per-view: 3; --slide-gap: 16px; }
.rest-carousel__viewport { overflow: hidden; }
.rest-carousel__track { display: flex; gap: var(--slide-gap); margin: 0; padding: 0; list-style: none; transition: transform .55s cubic-bezier(.4,.14,.3,1); will-change: transform; }
.rest-carousel__slide {
  flex: 0 0 calc((100% - (var(--per-view) - 1) * var(--slide-gap)) / var(--per-view));
  min-width: 0; margin: 0; padding: 0;
  border-radius: var(--radius-lg); overflow: hidden;
  background: var(--surface); box-shadow: 0 12px 32px rgba(0,0,0,.35);
}
.rest-carousel__figure { margin: 0; aspect-ratio: 4 / 3; background: #0d0b08; overflow: hidden; }
.rest-carousel__figure picture, .rest-carousel__figure img { width: 100%; height: 100%; display: block; }
.rest-carousel__figure img { object-fit: cover; user-select: none; }

/* Nav prev/next */
.rest-carousel__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 52px; height: 52px; border-radius: 50%;
  background: rgba(13,11,8,.75); backdrop-filter: blur(8px);
  border: 1px solid rgba(201,162,75,.35); color: var(--accent-2);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; z-index: 3;
  transition: background .2s ease, transform .2s ease, border-color .2s ease;
}
.rest-carousel__nav:hover { background: var(--accent); color: var(--bg); border-color: var(--accent); transform: translateY(-50%) scale(1.06); }
.rest-carousel__nav:active { transform: translateY(-50%) scale(.98); }
.rest-carousel__nav:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.rest-carousel__nav--prev { left: 16px; }
.rest-carousel__nav--next { right: 16px; }

/* Status "X / N" */
.rest-carousel__status {
  position: absolute; top: 16px; right: 16px; z-index: 3;
  background: rgba(13,11,8,.7); backdrop-filter: blur(8px);
  color: var(--accent-2); font-size: 12px; letter-spacing: .16em; font-weight: 600;
  padding: 8px 14px; border-radius: 999px; border: 1px solid rgba(201,162,75,.35);
  font-variant-numeric: tabular-nums;
}

/* Dots (bullet indicators) */
.rest-carousel__dots {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px;
  margin: 24px auto 0; max-width: 900px;
}
.rest-carousel__dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: rgba(201,162,75,.25); border: 0; padding: 0; cursor: pointer;
  transition: transform .2s ease, background .2s ease, width .3s ease;
}
.rest-carousel__dot:hover { background: rgba(201,162,75,.5); transform: scale(1.15); }
.rest-carousel__dot.is-active { background: var(--accent); width: 26px; border-radius: 8px; }
.rest-carousel__dot:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Tablet: 2 foto per view */
@media (max-width: 1100px) {
  .rest-carousel { --per-view: 2; }
}
/* Mobile: 1 foto per view */
@media (max-width: 720px) {
  .rest-carousel { --per-view: 1; --slide-gap: 0px; }
  .rest-carousel__slide { border-radius: var(--radius); }
  .rest-carousel__figure { aspect-ratio: 4 / 3; }
  .rest-carousel__nav { width: 44px; height: 44px; }
  .rest-carousel__nav--prev { left: 8px; }
  .rest-carousel__nav--next { right: 8px; }
  .rest-carousel__status { top: 12px; right: 12px; font-size: 11px; padding: 6px 12px; }
  .rest-carousel__dots { gap: 6px; margin-top: 20px; }
  .rest-carousel__dot { width: 8px; height: 8px; }
  .rest-carousel__dot.is-active { width: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .rest-carousel__track { transition: none; }
}

/* ═══ INSTAGRAM ═══ */
.rest-ig { background: var(--surface); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.rest-ig__inner { max-width: 1280px; margin: 0 auto; text-align: center; }
.rest-ig__label { font-size: 13px; letter-spacing: .25em; color: var(--accent-2); font-weight: 600; margin: 0 0 16px; text-transform: lowercase; font-family: var(--font-body); }
.rest-ig__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 52px); color: var(--ink); margin: 0 0 12px; }
.rest-ig__sub { color: var(--ink-2); font-style: italic; font-family: 'Playfair Display', serif; margin: 0 0 48px; }
.rest-ig__grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-bottom: 48px; }
@media (max-width: 900px) { .rest-ig__grid { grid-template-columns: repeat(3, 1fr); } }
.rest-ig__tile { position: relative; aspect-ratio: 1; overflow: hidden; border-radius: 2px; display: block; }
.rest-ig__tile img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease, filter .3s ease; }
.rest-ig__tile:hover img { transform: scale(1.1); filter: brightness(.5); }
.rest-ig__icon { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--ink); opacity: 0; transition: opacity .3s ease; }
.rest-ig__tile:hover .rest-ig__icon { opacity: 1; }
.rest-ig__cta { margin-top: 8px; }

/* ═══ BLOG editorial ═══ */
.rest-blog { padding: 100px 24px; }
@media (max-width: 900px) { .rest-blog { padding: 72px 20px; } }
.rest-blog__head { max-width: 1080px; margin: 0 auto 64px; text-align: center; }
.rest-blog__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-blog__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 56px); color: var(--ink); margin: 0; }
.rest-blog__grid { max-width: 1080px; margin: 0 auto; display: grid; gap: 32px; }
.rest-blog__card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; transition: transform .3s ease, box-shadow .3s ease; }
.rest-blog__card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.rest-blog__card--featured { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
@media (max-width: 900px) { .rest-blog__card--featured { grid-template-columns: 1fr; } }
.rest-blog__cover { position: relative; aspect-ratio: 4/3; overflow: hidden; }
.rest-blog__cover img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s ease; }
.rest-blog__card:hover .rest-blog__cover img { transform: scale(1.05); }
.rest-blog__body { padding: 40px; display: flex; flex-direction: column; gap: 16px; justify-content: center; }
@media (max-width: 900px) { .rest-blog__body { padding: 28px 24px; } }
.rest-blog__meta { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin: 0; }
.rest-blog__meta span, .rest-blog__meta time { color: var(--accent-2); }
.rest-blog__h { font-family: var(--font-head); font-weight: 400; font-size: clamp(24px, 3.2vw, 34px); line-height: 1.2; color: var(--ink); margin: 0; }
.rest-blog__lead { font-family: 'Playfair Display', serif; font-style: italic; font-size: 17px; color: var(--ink-2); line-height: 1.65; margin: 0; }
.rest-blog__text p { color: var(--ink-2); font-size: 15px; line-height: 1.75; margin: 0 0 14px; }
.rest-blog__text p:last-child { margin-bottom: 0; }
.rest-blog__cta { display: inline-flex; align-items: center; gap: 8px; padding: 12px 24px; background: transparent; color: var(--accent-2) !important; border: 1px solid var(--accent); font-size: 12px; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; border-radius: 2px; transition: all .3s ease; align-self: flex-start; margin-top: 8px; }
.rest-blog__cta:hover { background: var(--accent); color: var(--bg) !important; }

/* ═══ BLOG PAGE dedicata ═══ */
.rest-blog-page { padding-top: 100px; padding-bottom: 60px; }
.rest-blog-page__hero { padding: 60px 24px 40px; text-align: center; background: var(--surface); border-bottom: 1px solid var(--border); }
.rest-blog-page__hero-inner { max-width: 900px; margin: 0 auto; }
.rest-blog-page__eyebrow { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-blog-page__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(36px, 6vw, 72px); color: var(--ink); margin: 0 0 16px; line-height: 1.1; }
.rest-blog-page__sub { font-family: 'Playfair Display', serif; font-style: italic; font-size: 20px; color: var(--ink-2); margin: 0; }
.rest-blog-page__list { max-width: 1080px; margin: 0 auto; padding: 60px 24px; display: flex; flex-direction: column; gap: 64px; }
.rest-blog-page__post { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; }
.rest-blog-page__post:nth-child(even) { grid-template-columns: 1fr 1fr; direction: rtl; }
.rest-blog-page__post:nth-child(even) > * { direction: ltr; }
@media (max-width: 900px) { .rest-blog-page__post, .rest-blog-page__post:nth-child(even) { grid-template-columns: 1fr; direction: ltr; gap: 0; } }
.rest-blog-page__cover { aspect-ratio: 4/3; overflow: hidden; }
.rest-blog-page__cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.rest-blog-page__post:hover .rest-blog-page__cover img { transform: scale(1.05); }
.rest-blog-page__body { padding: 40px 44px; display: flex; flex-direction: column; gap: 16px; }
@media (max-width: 900px) { .rest-blog-page__body { padding: 28px 24px; } }
.rest-blog-page__meta { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin: 0; }
.rest-blog-page__meta span, .rest-blog-page__meta time { color: var(--accent-2); }
.rest-blog-page__h { font-family: var(--font-head); font-weight: 400; font-size: clamp(24px, 3.4vw, 36px); line-height: 1.2; color: var(--ink); margin: 0; }
.rest-blog-page__lead { font-family: 'Playfair Display', serif; font-style: italic; font-size: 17px; color: var(--ink-2); line-height: 1.65; margin: 0; }
.rest-blog-page__text p { color: var(--ink-2); font-size: 15px; line-height: 1.75; margin: 0 0 14px; }
.rest-blog-page__text p:last-child { margin-bottom: 0; }
.rest-blog-page__cta-final { text-align: center; padding: 80px 24px 60px; border-top: 1px solid var(--border); }
.rest-blog-page__cta-final h2 { font-family: var(--font-head); font-weight: 400; font-size: clamp(28px, 4vw, 44px); color: var(--ink); margin: 0 0 12px; }
.rest-blog-page__cta-final p { color: var(--ink-2); font-family: 'Playfair Display', serif; font-style: italic; margin: 0 0 32px; }

/* ═══ FULL MENU PAGE (per-lead opt-in, extra['menu_page']) ═══ */
.rest-fullmenu { padding-top: 100px; padding-bottom: 40px; }
.rest-fullmenu__hero { padding: 60px 24px 40px; text-align: center; background: var(--surface); border-bottom: 1px solid var(--border); }
.rest-fullmenu__hero-inner { max-width: 900px; margin: 0 auto; }
.rest-fullmenu__eyebrow { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-fullmenu__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(36px, 6vw, 64px); color: var(--ink); margin: 0 0 16px; line-height: 1.1; }
.rest-fullmenu__sub { font-family: 'Playfair Display', serif; font-style: italic; font-size: 20px; color: var(--ink-2); margin: 0; }
.rest-fullmenu__catnav { max-width: 1080px; margin: 0 auto; padding: 28px 24px 0; }
.rest-fullmenu__tablist { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.rest-fullmenu__tab { font-family: var(--font-body); font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; padding: 10px 20px; border-radius: 999px; border: 1px solid var(--border-strong); background: transparent; color: var(--muted); text-decoration: none; cursor: pointer; white-space: nowrap; transition: background .22s ease, color .22s ease, border-color .22s ease; }
.rest-fullmenu__tab:hover { color: var(--ink); border-color: var(--accent); }
.rest-fullmenu__tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.rest-fullmenu__tab.is-active { background: var(--accent); color: var(--bg); border-color: var(--accent); }
@media (max-width: 640px) {
  .rest-fullmenu__tablist { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; padding: 2px 2px 8px; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
  .rest-fullmenu__tablist::-webkit-scrollbar { height: 4px; }
  .rest-fullmenu__tablist::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 4px; }
  .rest-fullmenu__tab { flex: 0 0 auto; }
}
.rest-fullmenu__body { max-width: 860px; margin: 0 auto; padding: 56px 24px 24px; display: flex; flex-direction: column; gap: 72px; }
.rest-fullmenu__cat { scroll-margin-top: 110px; }
.rest-fullmenu__cat[hidden] { display: none; }
.rest-fullmenu__cat-h { font-family: var(--font-head); font-weight: 400; font-size: clamp(28px, 4vw, 42px); color: var(--ink); text-align: center; margin: 0 0 36px; }
.rest-fullmenu__group + .rest-fullmenu__group { margin-top: 40px; }
.rest-fullmenu__group-h { font-family: var(--font-body); font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--accent-2); font-weight: 700; margin: 0 0 18px; }
.rest-fullmenu__foot { margin-top: 28px; color: var(--muted); font-size: 13px; font-style: italic; text-align: center; }
@media (max-width: 720px) { .rest-fullmenu__body { padding: 40px 20px 16px; gap: 56px; } }

/* ═══ REVIEWS carousel ═══ */
.rest-reviews__head { max-width: 1280px; margin: 0 auto 48px; text-align: center; }
.rest-reviews__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-reviews__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 56px); color: var(--ink); margin: 0; }
.rest-reviews__scroll { display: flex; gap: 24px; overflow-x: auto; padding: 8px 24px 32px; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--accent) var(--surface); max-width: 100%; margin: 0 auto; box-sizing: border-box; }
@media (min-width: 1441px) { .rest-reviews__scroll { max-width: 1440px; } }
.rest-reviews__scroll::-webkit-scrollbar { height: 4px; }
.rest-reviews__scroll::-webkit-scrollbar-thumb { background: var(--accent); border-radius: 2px; }
.rest-reviews__card { flex: 0 0 380px; padding: 32px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); scroll-snap-align: start; display: flex; flex-direction: column; gap: 20px; }
@media (max-width: 600px) { .rest-reviews__card { flex: 0 0 88%; } }
.rest-reviews__stars { color: var(--accent-2); letter-spacing: 3px; }
.rest-reviews__text { font-family: 'Playfair Display', serif; font-style: italic; font-size: 17px; line-height: 1.65; color: var(--ink); margin: 0; }
.rest-reviews__author { display: flex; align-items: center; gap: 12px; margin: 0; padding-top: 16px; border-top: 1px solid var(--border); }
.rest-reviews__avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--accent); color: var(--bg); display: flex; align-items: center; justify-content: center; font-family: var(--font-head); font-weight: 700; font-size: 16px; }
.rest-reviews__name { font-weight: 600; color: var(--ink); font-size: 14px; }

/* ═══ BOOKING form ═══ */
.rest-book { background: var(--surface); border-top: 1px solid var(--border); }
.rest-book__grid { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: 1.4fr 1fr; gap: 64px; align-items: start; }
/* Grid items: min-width:0 evita overflow (default `auto` cresce col contenuto) */
.rest-book__grid > * { min-width: 0; }
@media (max-width: 900px) { .rest-book__grid { grid-template-columns: 1fr; gap: 48px; } }
.rest-book__label { font-size: 12px; letter-spacing: .35em; color: var(--accent-2); font-weight: 500; margin: 0 0 16px; }
.rest-book__title { font-family: var(--font-head); font-weight: 400; font-size: clamp(32px, 5vw, 52px); color: var(--ink); margin: 0 0 16px; line-height: 1.1; }
.rest-book__sub { color: var(--ink-2); font-size: 16px; margin: 0 0 40px; line-height: 1.6; }
.rest-book__form-wrap { min-width: 0; }
.rest-book__form { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.rest-book__row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 600px) { .rest-book__row { grid-template-columns: 1fr; } }
.rest-book__form .field { display: flex; flex-direction: column; gap: 8px; }
.rest-book__form .field--full { grid-column: 1 / -1; }
.rest-book__form label { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.rest-book__form input, .rest-book__form textarea { background: var(--bg); border: 1px solid var(--border); color: var(--ink); padding: 14px 16px; border-radius: 2px; font-family: var(--font-body); font-size: 15px; transition: border-color .2s ease; box-sizing: border-box; max-width: 100%; width: 100%; }
.rest-book__form input:focus, .rest-book__form textarea:focus { outline: 0; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(201,162,75,.2); }
.rest-book__form textarea { resize: vertical; min-height: 100px; }
/* Date/time picker: icona visibile su sfondo scuro (dark palette scurisce l'icona nativa) */
.rest-book__form input[type="date"],
.rest-book__form input[type="time"] { color-scheme: dark; position: relative; padding-right: 44px; }
.rest-book__form input[type="date"]::-webkit-calendar-picker-indicator,
.rest-book__form input[type="time"]::-webkit-calendar-picker-indicator {
  filter: invert(78%) sepia(35%) saturate(504%) hue-rotate(1deg) brightness(94%) contrast(87%);
  opacity: 1;
  cursor: pointer;
  width: 20px;
  height: 20px;
  padding: 0;
  margin: 0;
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
}
.rest-book__form input[type="date"]::-webkit-datetime-edit,
.rest-book__form input[type="time"]::-webkit-datetime-edit { color: var(--ink); }
.rest-book__form input[type="date"]::-webkit-datetime-edit-fields-wrapper,
.rest-book__form input[type="time"]::-webkit-datetime-edit-fields-wrapper { color: var(--ink); }
/* Firefox: icona nativa non colorabile, ma color-scheme:dark rende almeno il popup dark */
@-moz-document url-prefix() {
  .rest-book__form input[type="date"],
  .rest-book__form input[type="time"] { padding-right: 16px; }
}
.rest-book__info { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.rest-book__info-card { padding: 28px; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-lg); box-sizing: border-box; max-width: 100%; overflow-wrap: anywhere; }
.rest-book__info-card h3 { font-family: var(--font-head); font-weight: 400; font-size: 22px; color: var(--ink); margin: 0 0 16px; }
.rest-book__info-card p { color: var(--ink-2); font-size: 14px; line-height: 1.7; margin: 8px 0; }
.rest-book__info-card a { color: var(--accent-2); border-bottom: 1px dotted var(--border-strong); }
.rest-book__info-card a:hover { color: var(--accent); }
.rest-book__addr { line-height: 1.7 !important; }
.rest-book__social { }
.rest-book__social-list { display: flex; gap: 12px; }
.rest-book__social-list a { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--border); border-radius: 50%; color: var(--ink-2); transition: all .3s ease; }
.rest-book__social-list a:hover { border-color: var(--accent); color: var(--accent-2); transform: translateY(-2px); }
.rest-book__map { border-radius: var(--radius-lg); overflow: hidden; height: 280px; border: 1px solid var(--border); max-width: 100%; box-sizing: border-box; }
.rest-book__map iframe { width: 100%; max-width: 100%; height: 100%; border: 0; filter: grayscale(.2) contrast(.95); display: block; }

/* ═══ FAQ (usa base but restyle) ═══ */
#faq { background: var(--bg); padding: 56px 24px; max-width: 900px; margin: 0 auto; }
@media (max-width: 900px) { #faq { padding: 44px 20px; } }
#faq .section-title { font-family: var(--font-head); font-weight: 400; text-align: center; font-size: clamp(30px, 4vw, 48px); color: var(--ink); margin-bottom: 48px; }
.faq { display: flex; flex-direction: column; gap: 12px; }
.faq-item { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 4px 8px; }
.faq-item summary { padding: 18px 20px; color: var(--ink); cursor: pointer; font-weight: 600; letter-spacing: .02em; }
.faq-item[open] summary { color: var(--accent-2); border-bottom: 1px solid var(--border); }
.faq-a { padding: 16px 20px; color: var(--ink-2); line-height: 1.7; }

/* ═══ FOOTER dark ═══ */
.site-footer { background: var(--bg); color: var(--ink-2); padding: 64px 24px 32px; border-top: 1px solid var(--border); text-align: center; }
.site-footer strong { color: var(--ink); font-family: var(--font-head); font-size: 20px; font-weight: 700; letter-spacing: .04em; }
.site-footer p { color: var(--ink-2); margin: 8px 0; }
.site-footer p.note { color: var(--muted); font-size: 13px; }
.site-footer a { color: var(--ink); border-bottom: 1px dotted var(--border-strong); }
.site-footer a:hover { color: var(--accent-2); border-color: var(--accent); }
.site-footer .review-cta { display: inline-block; margin: 16px auto; padding: 12px 28px; border: 1px solid var(--accent); color: var(--accent-2) !important; background: transparent; letter-spacing: .1em; text-transform: uppercase; font-size: 13px; border-radius: 2px; transition: all .3s ease; }
.site-footer .review-cta:hover { background: var(--accent); color: var(--bg) !important; }
/* Social + portal links in footer (icons) */
.site-footer .social, .site-footer .social-links, .site-footer .portal-links { display: flex; gap: 14px; justify-content: center; margin: 20px 0; flex-wrap: wrap; }
.site-footer .social a, .site-footer .social-links a, .site-footer .portal-links a { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border: 1px solid var(--border); border-radius: 50%; color: var(--ink-2); transition: all .3s ease; }
.site-footer .social a:hover, .site-footer .social-links a:hover, .site-footer .portal-links a:hover { border-color: var(--accent); color: var(--accent-2); }
.site-footer .social svg, .site-footer .social-links svg, .site-footer .portal-links svg { fill: currentColor; width: 18px; height: 18px; }

/* ═══ Form status ═══ */
.form-status { margin-top: 16px; padding: 12px 16px; border-radius: 2px; font-size: 14px; }
.form-status.ok { background: rgba(64,145,90,.15); color: #86e6a3; border: 1px solid rgba(64,145,90,.3); }
.form-status.err { background: rgba(180,64,64,.15); color: #ff9e9e; border: 1px solid rgba(180,64,64,.3); }

/* ═══ Float CTA "Prenota" — desktop dx / mobile dx (WA su sx dx cambia lato) ═══ */
.float-cta { position: fixed; right: 20px; bottom: 20px; z-index: 940; background: var(--accent) !important; color: var(--bg) !important; box-shadow: var(--shadow-gold); padding: 14px 26px; font-family: var(--font-body); font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; border-radius: 100px; border: 0; transition: all .3s ease; opacity: 0; transform: translateY(10px); pointer-events: none; }
.float-cta.show { opacity: 1; transform: translateY(0); pointer-events: auto; }
.float-cta:hover { background: var(--accent-2) !important; transform: translateY(-2px); }
/* Su schermi molto stretti WA (icona sola dx) + Prenota (dx) collidono → stacka Prenota sopra WA */
@media (max-width: 720px) {
  .float-cta { bottom: 84px; right: 16px; padding: 12px 22px; font-size: 11px; }
}
/* Cookie banner visibile → alza entrambi i floating */
body:has(#wc-cookie:not([hidden])) .float-cta,
body:has(#wc-cookie:not([hidden])) .wa-float { bottom: 172px; }
@media (max-width: 720px) {
  body:has(#wc-cookie:not([hidden])) .float-cta { bottom: 236px; }
  body:has(#wc-cookie:not([hidden])) .wa-float { bottom: 172px; }
}

/* ═══ Reveal animation ═══ */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .rest-hero__bg { transform: none !important; }
  .rest-hero__scroll-line { animation: none; }
}

/* ═══ Skip link ═══ */
.skip-link { position: absolute; top: -100px; left: 8px; padding: 8px 16px; background: var(--accent); color: var(--bg); z-index: 200; }
.skip-link:focus { top: 8px; }

/* ═══ Cookie banner: sposta in fondo per non coprire nav+lang switcher ═══ */
.cookie-banner { top: auto !important; bottom: 0 !important; background: rgba(13,11,8,.98) !important; backdrop-filter: blur(12px); border-top: 1px solid var(--accent) !important; border-bottom: 0 !important; color: var(--ink) !important; box-shadow: 0 -8px 26px rgba(0,0,0,.4) !important; z-index: 95 !important; }
.cookie-banner p { color: var(--ink-2) !important; font-size: 13px !important; }
.cookie-banner a { color: var(--accent-2) !important; border-bottom: 1px dotted var(--accent) !important; }
.cookie-banner .btn { padding: 10px 22px !important; font-size: 12px !important; letter-spacing: .15em; text-transform: uppercase; border-radius: 2px !important; }
.cookie-banner .btn-primary { background: var(--accent) !important; color: var(--bg) !important; border: 0 !important; }
.cookie-banner .btn-primary:hover { background: var(--accent-2) !important; }
.cookie-banner .btn-ghost { background: transparent !important; color: var(--ink-2) !important; border: 1px solid var(--border-strong) !important; }
.cookie-banner .btn-ghost:hover { color: var(--accent-2) !important; border-color: var(--accent) !important; }
/* Quando il banner è visibile, spinge float-cta/wa-float sopra */
body:has(#wc-cookie:not([hidden])) .float-cta,
body:has(#wc-cookie:not([hidden])) .wa-float { bottom: 172px !important; }
@media (max-width: 560px) {
  body:has(#wc-cookie:not([hidden])) .float-cta,
  body:has(#wc-cookie:not([hidden])) .wa-float { bottom: 200px !important; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   GALLERY (rest-galx) — carosello di thumbnail (frecce prev/next) + lightbox
   fullscreen. Reso SEMPRE (il link "Galleria" della nav deve risolvere). Nessuna
   tab di categoria: si scorre/ingrandisce su tutte le foto. Estetica noir/oro.
   ═══════════════════════════════════════════════════════════════════════════ */
.rest-galx { max-width: 1320px; margin: 0 auto; }
.rest-galx__stage { position: relative; }
.rest-galx__grid {
  list-style: none; margin: 0; padding: 4px 2px 16px;
  display: flex; gap: 16px;
  overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin; scrollbar-color: var(--accent-3) transparent;
}
.rest-galx__grid::-webkit-scrollbar { height: 8px; }
.rest-galx__grid::-webkit-scrollbar-thumb { background: var(--accent-3); border-radius: 999px; }
.rest-galx__grid::-webkit-scrollbar-track { background: transparent; }
.rest-galx__item {
  flex: 0 0 auto; width: min(78vw, 340px); margin: 0; scroll-snap-align: start;
}
.rest-galx__btn {
  display: block; width: 100%; padding: 0; border: 0; cursor: zoom-in;
  background: var(--surface); border-radius: var(--radius-lg); overflow: hidden;
  box-shadow: 0 12px 32px rgba(0,0,0,.35);
  position: relative; line-height: 0; aspect-ratio: 4 / 5;
  transition: transform .3s ease, box-shadow .3s ease;
}
.rest-galx__btn::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(13,11,8,.5) 100%);
  opacity: 0; transition: opacity .3s ease; pointer-events: none;
}
.rest-galx__btn img { width: 100%; height: 100%; display: block; object-fit: cover; }
.rest-galx__btn:hover { transform: translateY(-4px); box-shadow: 0 20px 44px rgba(0,0,0,.5); }
.rest-galx__btn:hover::after { opacity: 1; }
.rest-galx__btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Frecce prev/next (overlay sui bordi del carosello) */
.rest-galx__nav {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 52px; height: 52px; border-radius: 999px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--bg); background: var(--accent); border: 0; opacity: .95;
  box-shadow: 0 10px 28px rgba(0,0,0,.5);
  transition: background .2s ease, transform .2s ease, opacity .2s ease;
}
.rest-galx__nav:hover { background: var(--accent-2); transform: translateY(-50%) scale(1.06); }
.rest-galx__nav:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.rest-galx__nav[hidden] { display: none; }
.rest-galx__nav--prev { left: -8px; }
.rest-galx__nav--next { right: -8px; }

@media (max-width: 640px) {
  .rest-galx__item { width: 80vw; }
  .rest-galx__nav { width: 44px; height: 44px; }
  .rest-galx__nav--prev { left: 2px; }
  .rest-galx__nav--next { right: 2px; }
}

/* ── Lightbox ── */
.rest-lb {
  position: fixed; inset: 0; z-index: 1000;
  display: none; align-items: center; justify-content: center;
  background: rgba(6,5,3,.94); backdrop-filter: blur(6px);
  padding: 24px;
}
.rest-lb.is-open { display: flex; }
.rest-lb__stage {
  position: relative; max-width: min(1200px, 94vw); max-height: 88vh;
  display: flex; align-items: center; justify-content: center;
}
.rest-lb__img {
  max-width: 100%; max-height: 88vh; display: block;
  border-radius: var(--radius-lg); box-shadow: var(--shadow);
  animation: lbIn .3s cubic-bezier(.2,.7,.3,1);
}
@keyframes lbIn { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
.rest-lb__btn {
  position: absolute; z-index: 2;
  width: 54px; height: 54px; border-radius: 50%;
  background: rgba(13,11,8,.72); backdrop-filter: blur(8px);
  border: 1px solid rgba(201,162,75,.4); color: var(--accent-2);
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  transition: background .2s ease, transform .2s ease, border-color .2s ease, color .2s ease;
}
.rest-lb__btn:hover { background: var(--accent); color: var(--bg); border-color: var(--accent); transform: scale(1.06); }
.rest-lb__btn:active { transform: scale(.97); }
.rest-lb__btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.rest-lb__prev { left: max(16px, calc(50% - 640px)); top: 50%; transform: translateY(-50%); }
.rest-lb__next { right: max(16px, calc(50% - 640px)); top: 50%; transform: translateY(-50%); }
.rest-lb__prev:hover, .rest-lb__next:hover { transform: translateY(-50%) scale(1.06); }
.rest-lb__close { top: 20px; right: 20px; width: 46px; height: 46px; }
.rest-lb__counter {
  position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%);
  background: rgba(13,11,8,.72); backdrop-filter: blur(8px);
  color: var(--accent-2); font-family: var(--font-body);
  font-size: 12px; letter-spacing: .16em; font-weight: 600;
  padding: 8px 16px; border-radius: 999px; border: 1px solid rgba(201,162,75,.35);
  font-variant-numeric: tabular-nums;
}
@media (max-width: 720px) {
  .rest-lb__prev { left: 12px; }
  .rest-lb__next { right: 12px; }
  .rest-lb__btn { width: 46px; height: 46px; }
}
@media (prefers-reduced-motion: reduce) {
  .rest-galx__btn, .rest-lb__btn { transition: none; }
  .rest-galx__btn:hover { transform: none; }
  .rest-lb__img { animation: none; }
}
