/* Ficopalo — foglio di stile del sito pubblico.
   I colori non sono scritti qui: arrivano dal backoffice come variabili CSS
   stampate nel <head>. Qui ci sono solo i valori di riserva, nel caso il
   database non risponda. */

:root {
  --crema:    #F7EDD9;
  --petrolio: #1E4E6B;
  --azzurro:  #79ADCC;
  --cactus:   #3E9A46;
  --ocra:     #E3B93C;
  --fico:     #DE5227;

  --carta:   #FFFBF2;
  --inchiostro: #14212A;
  --smorzato:   #5A6C77;
  --filo:       #E0D0B2;

  --font_display: "Archivo";
  --font_testo:   "Instrument Sans";

  --display: var(--font_display), "Arial Black", system-ui, sans-serif;
  --testo:   var(--font_testo), "Segoe UI", system-ui, sans-serif;

  --riga-max: 1120px;
  --raggio: 4px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--crema);
  color: var(--inchiostro);
  font-family: var(--testo);
  font-size: 1.0625rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3 { font-family: var(--display); margin: 0; line-height: 1.05; text-wrap: balance; }
p { margin: 0; }
a { color: var(--petrolio); }

:focus-visible { outline: 2px solid var(--fico); outline-offset: 3px; }

.riga {
  max-width: var(--riga-max);
  margin-inline: auto;
  padding-inline: clamp(1.1rem, 4vw, 2.5rem);
}

/* Il collegamento che salta l'intestazione: invisibile finché non lo si raggiunge
   con il tasto Tab. Serve a chi naviga da tastiera e a chi usa uno screen reader. */
.salta {
  position: absolute;
  left: -9999px;
  background: var(--petrolio);
  color: var(--carta);
  padding: .6rem 1rem;
  z-index: 100;
}
.salta:focus { left: 1rem; top: 1rem; }

/* ---------------------------------------------------------------- intestazione */

.testa {
  background: var(--carta);
  border-bottom: 1px solid var(--filo);
  position: sticky;
  top: 0;
  z-index: 20;
}
.testa .riga {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  min-height: 60px;
  flex-wrap: wrap;
}

.marchio {
  font-family: var(--display);
  font-variation-settings: "wdth" 118, "wght" 800;
  font-weight: 800;
  font-size: 1rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--inchiostro);
  display: flex;
  align-items: center;
  gap: .5rem;
}
.marchio .pala {
  width: 11px;
  height: 16px;
  border-radius: 60% 60% 55% 55%;
  background: var(--cactus);
  display: inline-block;
}

.navigazione { display: flex; gap: 1.25rem; }
.navigazione a {
  text-decoration: none;
  color: var(--smorzato);
  font-size: .95rem;
  padding-block: .3rem;
  border-bottom: 2px solid transparent;
}
.navigazione a:hover { color: var(--inchiostro); border-bottom-color: var(--fico); }

.coda { margin-left: auto; display: flex; align-items: center; gap: .75rem; }

.pillola {
  font-size: .8rem;
  padding: .25rem .65rem;
  border-radius: 99px;
  border: 1px solid var(--filo);
  white-space: nowrap;
}
.pillola.aperto { color: var(--cactus); border-color: var(--cactus); }
.pillola.chiuso { color: var(--smorzato); }

.lingua {
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-decoration: none;
  border: 1px solid var(--filo);
  border-radius: var(--raggio);
  padding: .25rem .5rem;
  color: var(--smorzato);
}
.lingua:hover { color: var(--inchiostro); border-color: var(--petrolio); }

/* ---------------------------------------------------------------- apertura */

.apertura { padding-block: clamp(3rem, 8vw, 6rem); }
.apertura h1 {
  font-size: clamp(2.2rem, 6vw, 4.2rem);
  font-variation-settings: "wdth" 120, "wght" 800;
  font-weight: 800;
  letter-spacing: -.015em;
  margin-bottom: .8rem;
  max-width: 16ch;
}
.occhiello {
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--smorzato);
  margin-bottom: .9rem;
}
.sommario { max-width: 54ch; color: var(--smorzato); font-size: 1.05rem; }
.motto {
  font-family: var(--display);
  font-style: italic;
  color: var(--petrolio);
  margin-top: 1.2rem;
}

.azioni { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.8rem; }
.bottone {
  display: inline-block;
  text-decoration: none;
  padding: .7rem 1.2rem;
  border-radius: var(--raggio);
  border: 1px solid var(--petrolio);
  color: var(--petrolio);
  background: transparent;
  font-weight: 600;
  font-size: .95rem;
}
.bottone:hover { background: var(--carta); }
.bottone.primario { background: var(--fico); border-color: var(--fico); color: var(--carta); }
.bottone.primario:hover { filter: brightness(.94); }

/* ---------------------------------------------------------------- oggi */

.oggi { background: var(--carta); border-block: 1px solid var(--filo); padding-block: 2.5rem; }
.oggi h2 { font-size: 1.4rem; margin-bottom: 1.2rem; }
.schede { display: grid; gap: .8rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.scheda {
  border: 1px solid var(--filo);
  border-top: 3px solid var(--ocra);
  border-radius: var(--raggio);
  padding: 1rem 1.1rem;
  background: var(--crema);
}
.scheda.avviso { border-top-color: var(--fico); }
.scheda .etichetta {
  display: block;
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--smorzato);
  margin-bottom: .35rem;
}

/* ---------------------------------------------------------------- pagine interne */

.testata-pagina { padding-block: clamp(2.5rem, 6vw, 4rem) 1.5rem; }
.testata-pagina h1 {
  font-size: clamp(1.8rem, 4vw, 3rem);
  font-variation-settings: "wdth" 115, "wght" 780;
  font-weight: 800;
  margin-bottom: .7rem;
}

.cantiere { padding-block: 2.5rem 4rem; color: var(--smorzato); font-size: .92rem; }

/* ---------------------------------------------------------------- menu */

.menu { padding-bottom: 4rem; }
.categoria { margin-bottom: 2.6rem; }
.categoria h2 {
  font-size: 1.35rem;
  font-variation-settings: "wdth" 110, "wght" 750;
  font-weight: 700;
  padding-bottom: .5rem;
  border-bottom: 2px solid var(--petrolio);
  margin-bottom: .3rem;
}
.categoria .sottotitolo { color: var(--smorzato); font-size: .9rem; margin-bottom: .8rem; }

.voci { list-style: none; margin: 0; padding: 0; }
.voci li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: .2rem .9rem;
  padding-block: .7rem;
  border-bottom: 1px dotted var(--filo);
}
.voci li:last-child { border-bottom: 0; }
.voci .nome { font-weight: 600; }
.voci .prezzo {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  font-weight: 600;
  color: var(--petrolio);
}
.voci .descrizione {
  grid-column: 1 / -1;
  color: var(--smorzato);
  font-size: .88rem;
  max-width: 62ch;
}
.voci li.esaurito .nome, .voci li.esaurito .prezzo { opacity: .5; }

.tag {
  display: inline-block;
  font-size: .68rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  border: 1px solid var(--filo);
  border-radius: 99px;
  padding: .1rem .45rem;
  color: var(--smorzato);
  margin-left: .35rem;
  vertical-align: middle;
  font-weight: 500;
}
.tag.finito { border-color: var(--fico); color: var(--fico); }

.vuoto { color: var(--smorzato); }

/* ---------------------------------------------------------------- piede */

.piede {
  background: var(--carta);
  border-top: 1px solid var(--filo);
  padding-block: 2.5rem 3rem;
  font-size: .9rem;
  color: var(--smorzato);
}
.piede .riga {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.piede strong { color: var(--inchiostro); font-family: var(--display); }
.orario { display: flex; justify-content: space-between; gap: 1rem; max-width: 260px; }
.orario span:last-child { font-variant-numeric: tabular-nums; }
.piede .minuto { font-family: var(--display); font-style: italic; color: var(--petrolio); }

@media (max-width: 640px) {
  .testa .riga { min-height: 0; padding-block: .6rem; }
  .navigazione { order: 3; width: 100%; gap: 1rem; }
  .coda { margin-left: auto; }
}

/* Allergeni sotto la descrizione del piatto: informazione di servizio, non decorazione.
   Piccola ma leggibile — chi la cerca ha un motivo serio per cercarla. */
.voci .allergeni {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: .2rem 1rem;
  font-size: .78rem;
  color: var(--smorzato);
  margin-top: .15rem;
}
.voci .allergeni span::before {
  content: "";
  display: inline-block;
  width: 5px; height: 7px;
  border-radius: 60% 60% 55% 55%;
  background: var(--ocra);
  margin-right: .35rem;
}

/* ---------------------------------------------------------------- ordina e ritira */

.ordina { padding-bottom: 4rem; }
.due-colonne { display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr) minmax(260px, 340px); align-items: start; }
@media (max-width: 800px) { .due-colonne { grid-template-columns: 1fr; } }
.riga.stretta { max-width: 40rem; }

.catalogo h2 {
  font-size: 1.15rem; font-variation-settings: "wdth" 110, "wght" 750; font-weight: 700;
  padding-bottom: .4rem; border-bottom: 2px solid var(--petrolio); margin: 1.8rem 0 .4rem;
}
.catalogo h2:first-child { margin-top: 0; }

.voci-ordina { list-style: none; margin: 0; padding: 0; }
.voci-ordina li {
  display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: .8rem;
  padding-block: .55rem; border-bottom: 1px dotted var(--filo);
}
.voci-ordina .prezzo { font-variant-numeric: tabular-nums; color: var(--petrolio); font-weight: 600; }
.voci-ordina li.esaurito .nome, .voci-ordina li.esaurito .prezzo { opacity: .45; }
.aggiungi {
  font: inherit; font-size: 1.1rem; line-height: 1; width: 2rem; height: 2rem;
  border: 1px solid var(--petrolio); background: var(--carta); color: var(--petrolio);
  border-radius: 50%; cursor: pointer;
}
.aggiungi:hover { background: var(--petrolio); color: var(--carta); }

.carrello {
  background: var(--carta); border: 1px solid var(--filo); border-radius: var(--raggio);
  padding: 1.2rem 1.3rem; position: sticky; top: 76px;
  display: flex; flex-direction: column; gap: .8rem;
}
.carrello h2 { font-size: 1.05rem; font-weight: 700; }
.righe-carrello { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.righe-carrello li {
  display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: .5rem;
  padding-block: .45rem; border-bottom: 1px dotted var(--filo); font-size: .92rem;
}
.righe-carrello.secco li { grid-template-columns: 1fr auto; }
.righe-carrello li:last-child { border-bottom: 0; }
.righe-carrello .prezzo { font-variant-numeric: tabular-nums; white-space: nowrap; }
.quantita { display: flex; gap: .2rem; }
.quantita input { width: 3rem; padding: .2rem .3rem; font: inherit; font-size: .85rem; text-align: center;
  border: 1px solid var(--filo); border-radius: var(--raggio); background: var(--crema); }
.quantita button { font: inherit; font-size: .75rem; padding: .2rem .45rem; border: 1px solid var(--filo);
  background: transparent; border-radius: var(--raggio); cursor: pointer; }

.totale { display: flex; justify-content: space-between; align-items: baseline;
  border-top: 2px solid var(--petrolio); padding-top: .6rem; font-size: 1.05rem; }
.totale strong { font-family: var(--display); font-variation-settings: "wdth" 110, "wght" 750;
  font-variant-numeric: tabular-nums; }
.bottone.largo { display: block; text-align: center; width: 100%; }
.svuota { font: inherit; font-size: .82rem; background: none; border: 0; color: var(--smorzato);
  text-decoration: underline; cursor: pointer; padding: 0; }
.minuto { font-size: .82rem; color: var(--smorzato); }
.modifica { font-size: .85rem; text-decoration: none; }

.allarme { border-left: 3px solid var(--fico); background: #FBEBE6; color: #8E2E12;
  padding: .7rem .9rem; border-radius: var(--raggio); font-size: .88rem; }
.allarme p + p { margin-top: .3rem; }

.conferma { display: flex; flex-direction: column; gap: 1rem; }
.conferma h2 { font-size: 1.1rem; font-weight: 700; margin-top: .6rem; }
.conferma .coppia { display: grid; gap: .9rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.conferma label { display: flex; flex-direction: column; gap: .3rem; }
.conferma label > span { font-size: .85rem; color: var(--smorzato); }
.conferma label > span em { font-style: normal; font-size: .75rem; color: #A9B3B9; }
.conferma input, .conferma textarea { font: inherit; padding: .55rem .7rem; border: 1px solid var(--filo);
  border-radius: var(--raggio); background: var(--carta); width: 100%; }
.conferma textarea { resize: vertical; }

.giorno { font-size: .85rem; letter-spacing: .1em; text-transform: uppercase; color: var(--smorzato);
  font-family: var(--testo); font-weight: 600; margin-top: .4rem; }
.orari { display: flex; flex-wrap: wrap; gap: .4rem; }
.orario { position: relative; border: 1px solid var(--filo); border-radius: var(--raggio);
  padding: .45rem .7rem; cursor: pointer; background: var(--carta); font-variant-numeric: tabular-nums;
  display: flex; align-items: baseline; gap: .35rem; }
.orario input { position: absolute; opacity: 0; width: 0; height: 0; }
.orario:hover { border-color: var(--petrolio); }
.orario:has(input:checked) { background: var(--petrolio); border-color: var(--petrolio); color: var(--carta); }
.orario em { font-style: normal; font-size: .7rem; color: var(--fico); }
.orario:has(input:checked) em { color: var(--ocra); }
.orario input:focus-visible + span { outline: 2px solid var(--fico); outline-offset: 3px; }

.codice-grosso { background: var(--carta); border: 1px solid var(--filo); border-radius: var(--raggio);
  padding: 1.2rem; text-align: center; margin: 1.2rem 0; }
.codice-grosso .etichetta { display: block; font-size: .75rem; letter-spacing: .12em;
  text-transform: uppercase; color: var(--smorzato); margin-bottom: .3rem; }
.codice-grosso strong { font-family: var(--display); font-variation-settings: "wdth" 122, "wght" 800;
  font-size: clamp(2.4rem, 9vw, 3.6rem); letter-spacing: .12em; color: var(--petrolio); display: block; }

/* ---------------------------------------------------------------- pagine di contenuto */

.contenuto-pagina { padding-bottom: 4rem; }
.contenuto-pagina p, .contenuto-pagina ul { max-width: 66ch; }
.contenuto-pagina p + p, .contenuto-pagina ul + p, .contenuto-pagina p + ul { margin-top: 1rem; }
.contenuto-pagina h2 { font-size: 1.5rem; font-variation-settings: "wdth" 112, "wght" 750; margin: 2rem 0 .6rem; }
.contenuto-pagina h3 { font-size: 1.2rem; font-variation-settings: "wdth" 108, "wght" 700; margin: 1.6rem 0 .5rem; }
.contenuto-pagina h4 { font-size: 1.02rem; font-family: var(--testo); font-weight: 700; margin: 1.2rem 0 .4rem; }
.contenuto-pagina ul { padding-left: 1.1rem; }
.contenuto-pagina li { margin-bottom: .3rem; }

.mini-titolo { font-size: 1.15rem; font-variation-settings: "wdth" 110, "wght" 750; margin: 2rem 0 .7rem; }

.distanze { list-style: none; margin: 0; padding: 0; max-width: 26rem; }
.distanze li { display: flex; justify-content: space-between; gap: 1rem; padding-block: .45rem;
  border-bottom: 1px dotted var(--filo); }
.distanze li:last-child { border-bottom: 0; }
.distanze em { font-style: normal; color: var(--smorzato); font-size: .88rem; white-space: nowrap; }

.orari-elenco { list-style: none; margin: 0; padding: 0; }
.orari-elenco li { display: flex; justify-content: space-between; gap: 1rem; padding-block: .35rem;
  font-size: .9rem; border-bottom: 1px dotted var(--filo); }
.orari-elenco li:last-child { border-bottom: 0; }
.orari-elenco li.oggi { font-weight: 700; color: var(--petrolio); }
.orari-elenco em { font-style: normal; font-variant-numeric: tabular-nums; }

/* Il marchio nell'intestazione: immagine, non testo.
   Alto 80px ovunque, desktop e telefono — nessuna riduzione sotto una certa
   larghezza. È la barra che si adatta a lui, non il contrario. */
.marchio img { height: 80px; width: auto; }

.testa .riga { min-height: 96px; padding-block: .55rem; }

@media (max-width: 720px) {
  /* Sul telefono il marchio resta 80px e la navigazione scende sotto: stringere
     le voci per farle stare in riga le renderebbe illeggibili. */
  .testa .riga { min-height: 0; row-gap: .4rem; }
  .navigazione { order: 3; width: 100%; gap: 1rem; overflow-x: auto; }
  .navigazione::-webkit-scrollbar { display: none; }
  .navigazione a { white-space: nowrap; }
}

/* ---------------------------------------------------------------- piede */

.piede-griglia {
  display: grid;
  gap: 2rem;
  grid-template-columns: minmax(220px, 1.1fr) minmax(200px, .9fr) minmax(160px, .7fr);
  align-items: start;
}
@media (max-width: 780px) { .piede-griglia { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .piede-griglia { grid-template-columns: 1fr; } }

.piede h3 {
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  font-family: var(--testo);
  font-weight: 700;
  color: var(--inchiostro);
  margin-bottom: .7rem;
}

.piede-locale img { width: 140px; height: auto; margin-bottom: .8rem; }
.piede-locale p { margin-bottom: .6rem; }
.piede-contatti a { display: inline-block; }

.bottone-whatsapp {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  margin-top: .5rem;
  padding: .55rem .9rem;
  border-radius: var(--raggio);
  background: #25D366;
  color: #06331a;
  font-weight: 700;
  font-size: .88rem;
  text-decoration: none;
  border: 1px solid #1faa52;
}
.bottone-whatsapp:hover { filter: brightness(1.06); }
.bottone-whatsapp svg { flex: none; }

.piede-pagine { display: flex; flex-direction: column; gap: .3rem; }
.piede-pagine a { text-decoration: none; }
.piede-pagine a:hover { text-decoration: underline; }

.piede-coda {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: baseline;
  margin-top: 2.2rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--filo);
  font-size: .82rem;
}
.motto-piede { font-family: var(--display); font-style: italic; color: var(--petrolio); }
.piede-servizio { color: var(--smorzato); }

/* ---------------------------------------------------------------- mappa */

.mappa { border-top: 1px solid var(--filo); background: var(--carta); }
.mappa iframe { display: block; width: 100%; filter: saturate(.92); }
.mappa-sotto {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  padding-block: .8rem 1.4rem;
  font-size: .84rem;
  color: var(--smorzato);
}

.bottone.whatsapp {
  background: #25D366;
  border-color: #1faa52;
  color: #06331a;
}
.bottone.whatsapp:hover { filter: brightness(1.06); background: #25D366; }

/* ---------------------------------------------------------------- barra di invito
   Compare in basso, dopo che la persona ha letto qualcosa. Non copre il
   contenuto e si chiude con una croce che resta chiusa: la decisione presa una
   volta non si chiede più. */

.barra-invito {
  position: fixed;
  left: 50%;
  bottom: 1rem;
  transform: translate(-50%, 140%);
  width: min(38rem, calc(100% - 1.6rem));
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: .9rem 1rem .9rem 1.2rem;
  background: var(--carta);
  border: 1px solid var(--filo);
  border-left: 4px solid var(--fico);
  border-radius: 6px;
  box-shadow: 0 18px 46px -20px rgba(20, 33, 42, .5);
  transition: transform .45s cubic-bezier(.2, .7, .3, 1), opacity .45s ease;
  opacity: 0;
}
.barra-invito.dentro { transform: translate(-50%, 0); opacity: 1; }

.barra-invito p { font-size: .9rem; line-height: 1.45; flex: 1; }

.barra-azioni { display: flex; gap: .4rem; flex: none; }
.barra-invito .bottone { padding: .5rem .9rem; font-size: .85rem; white-space: nowrap; }

.barra-chiudi {
  flex: none;
  width: 1.9rem;
  height: 1.9rem;
  border: 0;
  background: none;
  color: var(--smorzato);
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  border-radius: 50%;
}
.barra-chiudi:hover { background: var(--crema); color: var(--inchiostro); }

@media (max-width: 620px) {
  .barra-invito { flex-wrap: wrap; padding: .9rem; }
  .barra-invito p { flex: 1 1 100%; order: 1; padding-right: 1.8rem; }
  .barra-azioni { order: 2; flex: 1 1 100%; }
  .barra-invito .bottone { flex: 1; text-align: center; }
  .barra-chiudi { position: absolute; top: .5rem; right: .5rem; }
}

@media (prefers-reduced-motion: reduce) {
  .barra-invito { transition: none; transform: translate(-50%, 0); opacity: 1; }
}

/* ================================================================ MODALITÀ SCURA
   I colori arrivano già riscritti dal <head>: qui ci sono solo le cose che il
   cambio di tavolozza da solo non sistema — le velature sopra le foto, le ombre,
   e il marchio, che con le lettere nere sparirebbe. */

/* Il marchio esiste in due versioni — lettere nere e lettere bianche — e in
   pagina ci sono sempre tutte e due: le nasconde il CSS, quindi il passaggio da
   chiaro a scuro e immediato e non scarica niente in quel momento.

   Il display lo decidono SOLO queste quattro righe. Una regola di dimensione
   che lo tocchi — .marchio img, .piede-locale img — vince per specificita su
   .solo-scuro, e in chiaro si vedono tutti e due i loghi uno sotto l'altro.
   E' esattamente quello che succedeva nella testata. */
.solo-chiaro { display: block; }
.solo-scuro  { display: none; }

@media (prefers-color-scheme: dark) {
  :root:not([data-tema="chiaro"]) .solo-chiaro { display: none; }
  :root:not([data-tema="chiaro"]) .solo-scuro  { display: block; }
}
:root[data-tema="scuro"] .solo-chiaro { display: none; }
:root[data-tema="scuro"] .solo-scuro  { display: block; }

/* Il pulsante che cambia tema. Mostra il sole quando sei al buio e la luna
   quando sei alla luce: indica dove stai andando, non dove sei. */
.cambia-tema {
  display: inline-grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid var(--filo);
  border-radius: var(--raggio);
  background: transparent;
  color: var(--smorzato);
  cursor: pointer;
}
.cambia-tema:hover { color: var(--inchiostro); border-color: var(--petrolio); }
.cambia-tema .sole, .cambia-tema .raggi { display: none; }
.cambia-tema .luna { display: block; }

@media (prefers-color-scheme: dark) {
  :root:not([data-tema="chiaro"]) .cambia-tema .sole,
  :root:not([data-tema="chiaro"]) .cambia-tema .raggi { display: block; }
  :root:not([data-tema="chiaro"]) .cambia-tema .luna { display: none; }
}
:root[data-tema="scuro"] .cambia-tema .sole,
:root[data-tema="scuro"] .cambia-tema .raggi { display: block; }
:root[data-tema="scuro"] .cambia-tema .luna { display: none; }

/* Le velature sopra le fotografie vanno rifatte: quella chiara schiarisce il
   murale per far leggere il testo scuro, al buio serve l'opposto. */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="chiaro"]) .copertina-velo {
    background: linear-gradient(105deg,
      rgba(15,26,33,.95) 0%,
      rgba(15,26,33,.86) 34%,
      rgba(15,26,33,.35) 62%,
      rgba(15,26,33,.55) 100%);
  }
  :root:not([data-tema="chiaro"]) .copertina-carta {
    background: rgba(22,36,45,.82);
    border-color: var(--filo);
    box-shadow: 0 24px 60px -28px rgba(0,0,0,.7);
  }
  :root:not([data-tema="chiaro"]) .citazione::before {
    background: linear-gradient(180deg, rgba(8,14,18,.8), rgba(15,26,33,.78));
  }
  :root:not([data-tema="chiaro"]) .momento:hover { box-shadow: 0 16px 30px -22px rgba(0,0,0,.8); }
  :root:not([data-tema="chiaro"]) .barra-invito { box-shadow: 0 18px 46px -20px rgba(0,0,0,.75); }
  :root:not([data-tema="chiaro"]) .mappa iframe { filter: saturate(.75) brightness(.82); }
}

:root[data-tema="scuro"] .copertina-velo {
  background: linear-gradient(105deg,
    rgba(15,26,33,.95) 0%,
    rgba(15,26,33,.86) 34%,
    rgba(15,26,33,.35) 62%,
    rgba(15,26,33,.55) 100%);
}
:root[data-tema="scuro"] .copertina-carta {
  background: rgba(22,36,45,.82);
  border-color: var(--filo);
  box-shadow: 0 24px 60px -28px rgba(0,0,0,.7);
}
:root[data-tema="scuro"] .citazione::before {
  background: linear-gradient(180deg, rgba(8,14,18,.8), rgba(15,26,33,.78));
}
:root[data-tema="scuro"] .momento:hover { box-shadow: 0 16px 30px -22px rgba(0,0,0,.8); }
:root[data-tema="scuro"] .barra-invito { box-shadow: 0 18px 46px -20px rgba(0,0,0,.75); }
:root[data-tema="scuro"] .mappa iframe { filter: saturate(.75) brightness(.82); }

/* La banda dei cocktail è già scura di suo: al buio va tenuta distinta dal
   fondo, altrimenti sparisce la separazione fra le sezioni. */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="chiaro"]) .cocktail { background: var(--carta); color: var(--inchiostro); }
  :root:not([data-tema="chiaro"]) .cocktail .sommario { color: var(--smorzato); }
  :root:not([data-tema="chiaro"]) .nomi li { border-bottom-color: var(--filo); }
}
:root[data-tema="scuro"] .cocktail { background: var(--carta); color: var(--inchiostro); }
:root[data-tema="scuro"] .cocktail .sommario { color: var(--smorzato); }
:root[data-tema="scuro"] .nomi li { border-bottom-color: var(--filo); }

/* Il testo dentro i pulsanti pieni: su fondo chiaro è crema, su fondo scuro
   dev'essere scuro, altrimenti arancione su arancione non si legge. */
.bottone.primario { color: var(--su-accento); }
.bottone.whatsapp, .bottone-whatsapp { color: #06331a; }

/* ---------------------------------------------------------------- mappa a richiesta */

.mappa-invito {
  min-height: 440px;
  display: grid;
  place-items: center;
  padding: 2rem 1rem;
  color: var(--petrolio);
  /* Un accenno di pala di fico d'India invece di una toppa grigia: il riquadro
     si vede per qualche secondo, tanto vale che sia del sito. */
  background:
    radial-gradient(circle at 22% 28%, color-mix(in srgb, var(--azzurro) 30%, transparent), transparent 42%),
    radial-gradient(circle at 78% 74%, color-mix(in srgb, var(--ocra) 22%, transparent), transparent 46%),
    var(--carta);
}
.mappa-invito-dentro { max-width: 34rem; text-align: center; }
.mappa-invito svg { color: var(--fico); }
.mappa-indirizzo {
  font-family: var(--display);
  font-size: 1.3rem;
  margin: .5rem 0 .6rem;
}
.mappa-perche {
  color: var(--smorzato);
  font-size: .9rem;
  line-height: 1.6;
  margin: 0 0 1.2rem;
}
.mappa-azioni { display: flex; gap: .6rem; flex-wrap: wrap; justify-content: center; margin: 0; }

@media (max-width: 640px) {
  .mappa-invito { min-height: 320px; padding: 2.4rem 1rem; }
}

/* ---------------------------------------------------------------- recapiti

   Le strade per arrivare a una persona: WhatsApp, telefono, email, indirizzo.
   Ogni scheda è un collegamento intero e non un pulsantino dentro un paragrafo,
   perché da telefono l'area da colpire dev'essere grande quanto la scheda. */

.recapiti {
  display: grid;
  gap: .9rem;
  grid-template-columns: repeat(auto-fit, minmax(228px, 1fr));
  list-style: none;
  padding: 0;
  margin: 0 0 2.6rem;
  max-width: none;
}

.recapito {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  height: 100%;
  padding: 1.3rem 1.35rem 1.4rem;
  border: 1px solid var(--filo);
  border-radius: var(--raggio);
  background: var(--carta);
  color: inherit;
  text-decoration: none;
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.recapito:hover {
  transform: translateY(-3px);
  border-color: var(--petrolio);
  box-shadow: 0 16px 30px -22px rgba(20, 33, 42, .5);
}
.recapito svg { color: var(--fico); margin-bottom: .45rem; }

.recapito .come {
  font-size: .74rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--smorzato);
}
.recapito .cosa {
  font-family: var(--display);
  font-size: 1.16rem;
  font-variation-settings: "wdth" 108, "wght" 740;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.recapito .quando { font-size: .86rem; color: var(--smorzato); line-height: 1.5; margin-top: .15rem; }

/* WhatsApp si riconosce dal verde prima che dalla parola. */
.recapito.wa svg { color: #25D366; }
.recapito.wa:hover { border-color: #25D366; }

.contenuto-pagina .recapiti li { margin-bottom: 0; }

/* ---------------------------------------------------------------- passa parola */

.condividi {
  margin-top: 2.6rem;
  padding-top: 1.3rem;
  border-top: 1px solid var(--filo);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .7rem 1rem;
}
.condividi-invito {
  font-size: .78rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--smorzato);
}
.condividi-tasti { display: flex; flex-wrap: wrap; gap: .4rem; }

/* Sul sito pubblico «minuto» non esisteva: era una classe del backoffice, e i
   pulsanti del passa-parola sarebbero usciti grandi come quelli d'azione. */
.bottone.minuto {
  padding: .38rem .7rem;
  font-size: .82rem;
  border-radius: var(--raggio);
}

/* ---------------------------------------------------------------- campi di testo

   I campi non ereditano il colore del testo: se si da' loro uno sfondo e non un
   colore, restano con il nero di default del browser. Al chiaro non si nota, al
   buio diventa nero su blu notte — cioe' illeggibile.

   La regola sta qui, sui selettori dell'elemento, e non dentro il blocco di una
   pagina: un campo aggiunto domani da un'altra parte deve nascere leggibile. */

/* Caselle di spunta, scelte e pulsanti restano fuori: hanno un aspetto loro e
   dargli sfondo e bordo li rovinerebbe. Si dice quali NON si vestono, invece di
   elencare i tipi da vestire: cosi' un campo di tipo nuovo nasce leggibile. */
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]):not([type="button"]):not([type="color"]),
textarea, select {
  font: inherit;
  color: var(--inchiostro);
  background: var(--carta);
  border: 1px solid var(--filo);
  border-radius: var(--raggio);
}
input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--fico);
  outline-offset: 2px;
  border-color: var(--fico);
}
::placeholder { color: var(--smorzato); opacity: 1; }

/* Il riempimento automatico di Chrome dipinge il suo sfondo e ignora il nostro.
   color-scheme (che il tema dichiara nel <head>) gli fa scegliere la versione
   scura; questa e' la seconda rete, per il colore del testo. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill {
  -webkit-text-fill-color: var(--inchiostro);
  caret-color: var(--inchiostro);
  transition: background-color 100000s;
}

/* ---------------------------------------------------------------- ordinare dal telefono

   La maggior parte di chi ordina lo fa dal telefono, e li' la pagina degli
   ordini era ingiocabile: il carrello sta in fondo a tremila pixel di catalogo,
   quindi si premeva «piu'» e non si vedeva succedere niente. */

/* Un giorno per volta, invece di quaranta pulsanti tutti aperti. */
.giorno-orari { border-bottom: 1px dotted var(--filo); }
.giorno-orari > summary {
  cursor: pointer;
  padding-block: .7rem;
  display: flex;
  align-items: baseline;
  gap: .5rem;
}
.giorno-orari > summary::marker { color: var(--smorzato); }
.giorno-orari > summary em {
  font-style: normal;
  font-size: .78rem;
  color: var(--smorzato);
  font-variant-numeric: tabular-nums;
}
.giorno-orari[open] > summary { color: var(--petrolio); }
.giorno-orari .orari { padding-bottom: .9rem; }

/* La barra del carrello: sempre davanti mentre si scorre il catalogo. Dice due
   cose sole — quante cose e quanto fanno — e la strada per andare avanti. */
.barra-carrello { display: none; }

@media (max-width: 800px) {
  .barra-carrello {
    display: flex;
    position: fixed;
    z-index: 40;
    left: 0;
    right: 0;
    bottom: 0;
    align-items: center;
    justify-content: space-between;
    gap: .8rem;
    padding: .7rem 1rem calc(.7rem + env(safe-area-inset-bottom, 0px));
    background: var(--carta);
    border-top: 1px solid var(--filo);
    box-shadow: 0 -10px 30px -18px rgba(20, 33, 42, .75);
  }
  .barra-conto { font-size: .92rem; font-variant-numeric: tabular-nums; }
  .barra-conto strong { font-size: 1.05rem; }
  .barra-carrello .bottone { white-space: nowrap; }

  /* Spazio in fondo, altrimenti la barra copre l'ultimo piatto. */
  .ordina { padding-bottom: 5rem; }

  /* Solo nella pagina di conferma: li' il riepilogo va letto PRIMA di
     compilare, non dopo aver premuto il pulsante. Nel catalogo invece il
     carrello resta in fondo, perche' davanti c'e' gia' la barra. */
  .passo-conferma .due-colonne { display: flex; flex-direction: column; }
  .passo-conferma .due-colonne > .carrello { order: -1; }
}
