/* Taverna Pithecusana da Michele, vestito grafico fedele al PDF del locale (10/10/2026).
   Carta bianca e inchiostro quasi nero. I font del PDF sono a pagamento (i vini sono in
   Blackadder ITC): qui i gratuiti piu' vicini, scelti MISURANDO la forma delle lettere
   contro il PDF a 300 dpi su tutto il catalogo Google (_source/misura-font.py):
   titoli e racconto Gwendolyn col doppio filo, nomi e prezzi Fraunces 700, descrizioni e
   testi Brygada 1918, vini Fondamento corsivo. Classi = template condiviso + menu.js.

   Font gratuiti (licenza OFL) serviti da qui, mai da reti esterne (CSP font-src 'self').
   Un file per font, sottoinsieme Latin + Latin Ext-A: copre anche polacco e tedesco
   (verificato con fontTools il 10/10/2026). Font, logo, vigna e grappolo li genera
   _source/estrai-asset.py; assets/ e' fuori da git e arriva sul server via scp. */

@font-face{font-family:'Gwendolyn';src:url(../fonts/gwendolyn-700.woff2) format('woff2');
  font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Gwendolyn';src:url(../fonts/gwendolyn-400.woff2) format('woff2');
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Fraunces';src:url(../fonts/fraunces-700.woff2) format('woff2');
  font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Fondamento';src:url(../fonts/fondamento-400-italic.woff2) format('woff2');
  font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Brygada 1918';src:url(../fonts/brygada-1918-var.woff2) format('woff2');
  font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:'Brygada 1918';src:url(../fonts/brygada-1918-var-italic.woff2) format('woff2');
  font-weight:400 700;font-style:italic;font-display:swap}

:root{
  /* contrasti su bianco misurati il 10/10/2026: fg 16,3  muted 9,1  faint 5,8 (soglia 4,5).
     L'arancio della fiamma fa 1,9: mai come testo, solo filetti e sottolineature. */
  --bg:#fff; --fg:#231F20; --muted:#4d4749; --faint:#6b6466;
  --line:rgba(35,31,32,.14); --flame:#f2ad3c;
  --script:'Gwendolyn',cursive;
  --display:'Fraunces',Georgia,serif;
  --wine:'Fondamento',Georgia,serif;
  --body:'Brygada 1918',Georgia,serif;
  --max-w:720px; --pad-x:clamp(18px,5vw,28px); --nav-h:48px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 12px);-webkit-text-size-adjust:100%}
/* clip e non hidden: hidden fa di body un contenitore di scorrimento e la barra
   delle sezioni smette di restare in alto */
html,body{margin:0;padding:0;max-width:100%;overflow-x:clip}
/* legature comuni spente: nate per il Libre Caslon (poi sostituito), che ha "st" e "sp"
   antiche nella feature liga ("stagionali" con una specie di f lunga, letta come refuso).
   Restano per prudenza: costano solo fi/fl unite. */
body{background:var(--bg);color:var(--fg);font-family:var(--body);font-size:16px;line-height:1.5;
  font-variant-ligatures:no-common-ligatures;-webkit-font-smoothing:antialiased;
  padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}
img,picture{display:block;max-width:100%;height:auto}
a{color:inherit}
:focus-visible{outline:2px solid var(--fg);outline-offset:3px}

/* ---- Lingue: riga in alto a destra, sopra la vigna ---- */
.lang{display:flex;justify-content:flex-end;flex-wrap:wrap;padding:4px calc(var(--pad-x) - 8px) 0;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.lang a{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:44px;
  color:var(--muted);text-decoration:none}
.lang a[aria-current="true"]{color:var(--fg);box-shadow:inset 0 -2px var(--flame)}

/* Banner "cambia lingua" e "menu aggiornato" creati da menu.js */
.lang-suggest{position:fixed;top:env(safe-area-inset-top,0);left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.6rem;padding:.55rem .85rem;
  background:var(--fg);color:#fff;font-size:.9rem;line-height:1.3;box-shadow:0 4px 14px rgba(0,0,0,.2);
  transform:translateY(-100%);opacity:0;transition:transform .26s ease,opacity .26s ease}
.lang-suggest[data-visible="true"]{transform:none;opacity:1}
.lang-suggest[data-visible="false"]{pointer-events:none}
.lang-suggest--reload{top:auto;bottom:env(safe-area-inset-bottom,0);transform:translateY(100%)}
.lang-suggest--reload[data-visible="true"]{transform:none}
.lang-suggest__text{flex:0 1 auto}
.lang-suggest__cta{flex:0 0 auto;max-width:calc(100vw - 5.5rem);display:inline-flex;align-items:center;
  min-height:36px;padding:.5rem .85rem;border:0;border-radius:999px;background:var(--flame);color:var(--fg);
  font:inherit;font-weight:600;text-align:center;text-decoration:none;cursor:pointer}
.lang-suggest__close{flex:0 0 auto;min-width:36px;min-height:36px;padding:.25rem .5rem;border:0;
  background:transparent;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer}

/* ---- Testata: vigna (decorazione, da CSS) e logo del PDF ---- */
.hero{padding:6px var(--pad-x) 26px;text-align:center}
.hero::before{content:"";display:block;width:min(100%,620px);aspect-ratio:1100/426;margin:0 auto 22px;
  background:url(../img/vigna.webp) center/contain no-repeat}
/* il template dichiara 420x80: senza le proporzioni vere (900x696) il telefono riserva
   lo spazio sbagliato e la pagina salta quando il logo arriva */
.hero__wordmark{width:min(72vw,360px);height:auto;aspect-ratio:900/696;margin:0 auto}
/* il logo contiene gia' nome, sottotitolo e firma: niente doppioni sotto */
.hero__logo,.hero__tagline,.hero__meta,.hero__image{display:none}

/* ---- Barra delle sezioni: resta in alto, le voci in piu' scorrono dentro ---- */
.nav{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);padding-top:env(safe-area-inset-top,0px);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.nav__inner{display:flex;align-items:center;gap:20px;max-width:var(--max-w);height:var(--nav-h);margin:0 auto;
  padding:0 var(--pad-x);overflow-x:auto;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
.nav__inner::-webkit-scrollbar{display:none}
.nav a{flex:0 0 auto;display:inline-flex;align-items:center;min-height:44px;font-size:12px;letter-spacing:.14em;
  text-transform:uppercase;white-space:nowrap;color:var(--muted);text-decoration:none}
.nav a.is-active{color:var(--fg);box-shadow:inset 0 -2px var(--flame)}

/* ---- Racconto del locale: il corsivo centrato della copertina ---- */
.about{max-width:var(--max-w);margin:0 auto;padding:30px var(--pad-x) 6px;text-align:center}
.about__text p{max-width:28ch;margin:0 auto;font-family:var(--script);font-size:clamp(27px,7vw,34px);line-height:1.4}

/* Avviso e legenda allergeni: il template li stila in linea (bordo, max-width, margini
   auto). Qui solo la larghezza, se no su telefono il bordo tocca i lati dello schermo. */
.allergen-notice,.allergen-legend{width:calc(100% - 2 * var(--pad-x));text-align:center}
.allergen-legend ul{text-align:left}

/* ---- Sezioni ---- */
main{max-width:var(--max-w);margin:0 auto;padding:0 var(--pad-x) 30px}
.section{padding-top:44px}
/* titolo + filetto nero a tutta riga sotto, come le pagine del PDF */
.section__head{margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid var(--fg);text-align:center}
/* Doppio filo del PDF: lettere bianche con contorno sottile, il tratto del corsivo
   diventa due linee parallele. 1,4 px scelto fra 1 / 1,4 / 1,8 / 2,2 contro il titolo
   del PDF: a 1 px su schermo normale sembra grigio, da 1,8 il bianco interno sparisce.
   Gwendolyn Bold sui titoli (misura 5,26 contro 5,71 del Regular, filo piu' leggibile). */
.section-title{margin:0;font-family:var(--script);font-weight:700;font-size:clamp(50px,13vw,68px);line-height:1.15;
  color:var(--bg);-webkit-text-stroke:1.4px var(--fg)}
.section__intro{max-width:46ch;margin:12px auto 0;font-style:italic;font-weight:600;font-size:15px;color:var(--muted)}
.menu-list{list-style:none;margin:0;padding:0}

/* ---- Piatto: nome e prezzo in grassetto, descrizione corsiva a tutta riga ---- */
.item{display:grid;grid-template-columns:1fr auto;column-gap:16px;padding:14px 0 16px}
.item__head{grid-column:1;grid-row:1}
.item__name{font-family:var(--display);font-weight:700;font-size:clamp(18px,4.6vw,21px);line-height:1.25}
.item__price{grid-column:2;grid-row:1;font-family:var(--display);font-weight:700;font-size:clamp(17px,4.4vw,20px);line-height:1.25;
  white-space:nowrap}
.item__desc{grid-column:1/-1;margin:5px 0 0;font-style:italic;font-weight:600;font-size:15px;line-height:1.45}
/* allergeni "(1, 7)" accanto al nome, piccoli e leggeri come nel PDF
   (Cliente.allergeni_accanto_al_nome); restano col colore pieno: info sanitaria */
.item__allergens{margin-left:5px;font-family:var(--body);font-size:13px;font-weight:400;white-space:nowrap}
/* "(per 2 persone)", "(circa 200 gr.)": nel PDF piccolo e non grassetto (Cliente.nome_note_in_piccolo) */
.item__nota{font-family:var(--body);font-size:14px;font-weight:600}
.item__meta{grid-column:1/-1;margin-top:3px}
.allergens{font-size:13px;color:var(--faint)}
.badge{display:inline-block;margin-left:8px;padding:1px 7px;border:1px solid var(--fg);border-radius:2px;
  font-family:var(--body);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  vertical-align:3px;white-space:nowrap}

/* Piatto esaurito: etichetta ROSSA al posto del prezzo (stesso rosso dei paganti, 5,9:1
   su bianco), il resto si fa da parte. Allergeni mai attenuati: info sanitaria. */
.item--sold-out .item__price{display:none}
.item__badge--soldout{grid-column:2;grid-row:1;font-size:13px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;white-space:nowrap;color:#C42B22}
.item--sold-out .item__name{color:var(--muted)}
.item--sold-out .item__desc{opacity:.72}

/* testo solo per lettori di schermo: regola standard, non toccarla per estetica */
.sr-only,.section-title--sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;
  margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* ---- Carta dei vini: calligrafia Fondamento, gruppi a tendina, regioni sottolineate ----
   La carta si riconosce dalla STRUTTURA (l'unica sezione con le tendine), non da #cantina:
   in produzione la pagina nasce dal database, dove l'id della sezione e' un uuid nuovo a
   ogni seed (seed-db.py), e #cantina non scatterebbe mai. Regge anche a una rinomina. */
.section:has(> details) .section__head::before{content:"";display:block;width:76px;aspect-ratio:279/316;margin:0 auto 4px;
  background:url(../img/grappolo.png) center/contain no-repeat}
details{border-bottom:1px solid var(--line)}
/* il + e il - stanno fuori dal flusso, se no prendono anche loro la sottolineatura */
details summary{position:relative;display:block;padding:14px 34px 14px 0;cursor:pointer;list-style:none;
  font-family:var(--wine);font-style:italic;font-size:clamp(24px,6vw,28px);line-height:1.25;
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
details summary::-webkit-details-marker{display:none}
details summary::after{content:"+";position:absolute;right:4px;top:50%;transform:translateY(-50%);
  font-family:var(--body);font-style:normal;font-size:24px}
details[open] summary::after{content:"\2212"}
.subhead__region{margin:22px 0 2px;font-family:var(--wine);font-style:italic;font-weight:400;font-size:22px;
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.section:has(> details) .item__name,.section:has(> details) .item__price{font-family:var(--wine);font-style:italic;
  font-weight:400;font-size:clamp(22px,6vw,25px)}
.section:has(> details) .item__desc{font-family:var(--wine);font-weight:400;font-size:17px;color:var(--muted)}

/* ---- Piatto del giorno (sezione "Oggi", la accende il titolare da WhatsApp) ---- */
.section--oggi{margin-bottom:36px}
.oggi-card{position:relative;max-width:460px;margin-inline:auto;padding:32px 26px;text-align:center;
  border:1px solid var(--fg)}
.oggi-card::before{content:"";position:absolute;inset:7px;border:1px solid var(--fg);opacity:.3;pointer-events:none}
.oggi-card__corner{position:absolute;width:14px;height:14px;border:1.5px solid var(--fg)}
.oggi-card__corner--tl{top:7px;left:7px;border-right:0;border-bottom:0}
.oggi-card__corner--tr{top:7px;right:7px;border-left:0;border-bottom:0}
.oggi-card__corner--bl{bottom:7px;left:7px;border-right:0;border-top:0}
.oggi-card__corner--br{bottom:7px;right:7px;border-left:0;border-top:0}
.oggi-card__eyebrow{margin:0 0 6px;font-family:var(--script);font-size:38px;line-height:1.1}
.oggi-dish__name{margin:0;font-family:var(--display);font-size:25px;font-weight:700;line-height:1.15}
.oggi-dish__flourish{display:flex;align-items:center;justify-content:center;gap:9px;margin:12px 0;
  color:var(--flame);font-size:9px}
.oggi-dish__flourish::before,.oggi-dish__flourish::after{content:"";width:30px;height:1px;background:var(--fg);opacity:.5}
.oggi-dish__price{margin:0;font-family:var(--display);font-size:20px;font-weight:700}
.oggi-dish__desc{max-width:34ch;margin:14px auto 0;font-style:italic;font-weight:600;font-size:15px;line-height:1.5}
.oggi-dish__allergens{position:relative;margin:18px auto 0;padding-top:16px;font-size:13px;color:var(--faint)}
.oggi-dish__allergens::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:46%;border-top:1px solid var(--line)}
.oggi-dish--next{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}
.oggi-dish--sold-out .oggi-dish__name{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}
.oggi-dish__sold-out{margin:0;font-size:17px;font-weight:600;letter-spacing:.04em;color:#C42B22}
.oggi-dish--sold-out .oggi-dish__desc{opacity:.72}

/* ---- Pie' di pagina: coperto e note del PDF, contatti ---- */
.footer{max-width:var(--max-w);margin:24px auto 0;padding:26px var(--pad-x) calc(36px + env(safe-area-inset-bottom,0px));
  border-top:1px solid var(--fg);text-align:center;font-size:14px;line-height:1.6;color:var(--muted)}
.footer p{margin:0 0 8px}
.footer strong{font-family:var(--display);font-weight:700;font-size:19px;color:var(--fg)}
.footer .sep{display:block;width:40px;height:1px;margin:14px auto;background:var(--flame)}
/* la prima riga delle note e' il coperto: maiuscolo grassetto come in fondo alle pagine del PDF */
.footer .sep + p::first-line{font-weight:700;text-transform:uppercase;color:var(--fg)}
.contacts{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 22px;margin:14px 0 6px}
.contacts__item{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--fg);text-decoration:none}
.contacts__item svg{fill:var(--fg)}
.footer__updated,.footer__powered{font-size:12.5px;color:var(--faint)}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .lang-suggest{transition:opacity .15s ease}
}
