/* ============================================================
   CADBORTELA — stile condiviso (wizard, gestione, dashboard)
   ============================================================ */

/* Font dei titoli: Boska (variabile, self-hosted) */
@font-face {
    font-family: "Boska";
    src: url("fonts/Boska-Variable.woff2") format("woff2-variations"),
         url("fonts/Boska-Variable.woff") format("woff-variations");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

:root {
    --wine: #7a1f1f;
    --wine-dark: #5e1717;
    --cream: #f4f1ec;
    --ink: #2a2a2a;
    --muted: #8a8a8a;
    --line: #e7e2d9;
    --ok: #2e7d4f;
    --err: #c0392b;
    --radius: 12px;
    --shadow: 0 6px 24px rgba(0, 0, 0, .07);
    --font: "Segoe UI", Helvetica, Arial, sans-serif;
    --font-title: "Boska", Georgia, "Times New Roman", serif;
}

/* Tutti i titoli usano il font Boska */
h1, h2, h3 { font-family: var(--font-title); font-weight: 760; }

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--font);
    background: var(--cream);
    color: var(--ink);
    line-height: 1.5;
}

/* ---------- Layout wizard ---------- */
.booking {
    max-width: 540px;
    margin: 0 auto;
    padding: 24px 16px 48px;
}
.booking__header { text-align: center; margin-bottom: 22px; }
.booking__header h1 {
    font-size: 31px; margin: 0; color: var(--wine); letter-spacing: 0; font-weight: 780;
}
.booking__header p { margin: 4px 0 0; color: var(--muted); }
.booking__tagline {
    font-family: var(--font-title);
    font-size: 24px;
    line-height: 1.15;
    font-weight: 600;
}
.booking__footer { text-align: center; color: var(--muted); font-size: 13px; margin-top: 28px; }

/* ---------- Indicatore step ---------- */
.steps {
    display: flex; align-items: center; justify-content: center; flex-wrap: wrap;
    gap: 6px; margin: 0 0 18px;
}
.steps__item {
    display: inline-flex; align-items: center; gap: 6px;
    border: none; background: none; font-family: inherit; font-size: 13px;
    color: var(--muted); cursor: default; padding: 5px 4px; border-radius: 8px;
}
.steps__item span {
    display: inline-flex; width: 22px; height: 22px; border-radius: 50%;
    background: var(--line); color: #fff; align-items: center; justify-content: center;
    font-weight: 700; font-size: 12px;
}
.steps__item.is-active { color: var(--wine); font-weight: 700; }
.steps__item.is-active span { background: var(--wine); }
.steps__item.is-done span { background: var(--ok); }
.steps__item.is-clickable { cursor: pointer; }
.steps__item.is-clickable:hover { color: var(--wine); background: var(--cream); }
.steps__sep { color: #cfc8bb; font-size: 16px; }

/* Mini-calendario dei giorni disponibili (wizard) */
.cal-picker { margin-bottom: 18px; }
.cal-picker__nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.mini-cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; }
.mini-dow { text-align: center; font-size: 11px; font-weight: 700; color: var(--muted); padding-bottom: 2px; }
.mini-day {
    aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--line); border-radius: 0; background: #fff;
    font-size: 14px; font-weight: 600; font-family: inherit; cursor: pointer; transition: .12s; padding: 0;
}
.mini-day.is-open:hover { border-color: var(--wine); }
.mini-day.is-selected { background: var(--wine); color: #fff; border-color: var(--wine); }
.mini-day.is-closed { color: #d0d0d0; background: #fafafa; border-style: dashed; cursor: not-allowed; }
.mini-day.is-full { background: #fff3d9; color: #b06b00; border-color: #f0d9b5; }
.mini-day.is-full:hover { border-color: #e08a00; }
.mini-day.is-full.is-selected { background: var(--wine); color: #fff; border-color: var(--wine); }

/* Servizio pieno → lista d'attesa */
.slot-full { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; background: #fff7ec; border: 1px solid #f0d9b5; border-radius: 9px; padding: 10px 14px; }
.slot-full > span { color: #b06b00; font-weight: 600; font-size: 14px; }
.btn--wait { background: #e08a00; color: #fff; border-color: #e08a00; }
.btn--wait:hover { background: #c87a00; }
.cal-legend { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--muted); margin: 12px 0 0; }
.cal-legend__dot { width: 13px; height: 13px; border-radius: 4px; border: 1px solid var(--line); background: #fff; }

/* ---------- Card / step ---------- */
.card {
    background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
    padding: 26px;
}
.step { display: none; }
.step.is-active { display: block; animation: fade .25s ease; }
@keyframes fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.step h2 { margin: 0 0 6px; font-size: 20px; }
.muted { color: var(--muted); }
.small { font-size: 13px; }

.step__nav {
    display: flex; justify-content: space-between; align-items: center;
    margin-top: 24px; gap: 12px;
}

/* ---------- Bottoni ---------- */
.btn {
    border: 1px solid var(--line); background: #fff; color: var(--ink);
    padding: 11px 20px; border-radius: 0; font-size: 15px; font-weight: 600;
    cursor: pointer; transition: .15s;
}
.btn:hover { border-color: var(--muted); }
.btn--primary { background: var(--wine); color: #fff; border-color: var(--wine); }
.btn--primary:hover { background: var(--wine-dark); }
.btn--danger { background: var(--err); color: #fff; border-color: var(--err); }
/* Blocca/sblocca giorno: bianco con solo bordo (come Modifica), diventa rosso tenue solo in hover */
.btn--block-toggle { background: #fff; color: var(--ink); border-color: var(--line); }
.btn--block-toggle:hover { background: #b5645e; border-color: #b5645e; color: #fff; }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn-icon {
    width: 42px;
    min-width: 42px;
    height: 42px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    line-height: 1;
}

/* Bottone "Nuova prenotazione": testo su desktop, "+" su mobile */
#add-open .add-open__icon { display: none; }
#add-open { white-space: nowrap; }

/* ---------- Step 1: griglia persone ---------- */
.party { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 16px; }
.party__btn {
    aspect-ratio: 1; border: 1px solid var(--line); background: #fff; border-radius: 0;
    font-size: 18px; font-weight: 700; cursor: pointer; transition: .15s;
}
.party__btn:hover { border-color: var(--wine); }
.party__btn.is-selected { background: var(--wine); color: #fff; border-color: var(--wine); }

/* Gruppo numeroso (oltre la soglia) */
.party-large { margin-top: 14px; }
.party-large__toggle {
    width: 100%; padding: 12px; border: 1px dashed var(--line); border-radius: 10px;
    background: none; color: var(--wine); font-size: 14px; font-weight: 600; cursor: pointer; transition: .15s;
}
.party-large__toggle:hover { border-color: var(--wine); }
.party-large__toggle.is-active { background: var(--cream); border-style: solid; }
.party-large__panel { margin-top: 12px; }

/* ---------- Campi ---------- */
.field { display: block; margin: 14px 0; }
.field span { display: block; font-size: 14px; margin-bottom: 6px; font-weight: 600; }
.field input, .field textarea, .field select {
    width: 100%; padding: 11px 12px; border: 1px solid var(--line); border-radius: 9px;
    font-size: 15px; font-family: inherit; background: #fff;
}
/* iOS/Safari: senza questo i campi date/time ignorano width:100% e sbordano dal contenitore */
.field input[type="date"], .field input[type="time"] {
    -webkit-appearance: none; appearance: none; min-width: 0; max-width: 100%;
}
.field input:focus, .field textarea:focus, .field select:focus { outline: 2px solid var(--wine); border-color: var(--wine); }

/* Prefisso telefonico + numero */
.phone-group { display: flex; gap: 8px; flex-wrap: wrap; }
.phone-group select { flex: 0 1 170px; max-width: 190px; }
.phone-group input { flex: 1 1 140px; min-width: 0; }

/* Casella aperitivo (funzione temporaneamente disattivata: vedi attributo hidden nel markup) */
.aperitivo:not([hidden]) { display: flex; gap: 10px; align-items: flex-start; margin: 16px 0 4px; cursor: pointer; }
.aperitivo input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; accent-color: var(--wine); }
.aperitivo span { font-size: 14px; font-weight: 600; }
.aperitivo small { display: block; font-weight: 400; margin-top: 2px; }

/* ---------- Step 2: slot ---------- */
.slots-area { margin-top: 18px; min-height: 40px; }
.slots-group { margin-top: 16px; }
.slots-group:first-child { margin-top: 0; }
.slots-group__title { font-weight: 700; font-size: 14px; margin: 0 0 8px; color: var(--wine); }
.slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); gap: 9px; }
.slot {
    border: 1px solid var(--line); background: #fff; border-radius: 0; padding: 11px 0;
    font-size: 15px; font-weight: 600; cursor: pointer; transition: .15s;
}
.slot:hover { border-color: var(--wine); }
.slot.is-selected { background: var(--wine); color: #fff; border-color: var(--wine); }

/* ---------- Riepilogo ---------- */
.summary { background: var(--cream); border-radius: 10px; padding: 14px 16px; margin-bottom: 8px; }
.summary__row { display: flex; justify-content: space-between; padding: 5px 0; }
.summary__row span { color: var(--muted); }

/* Riquadro dati bonifico (caparra) */
.deposit-box { background: #fff7ec; border: 1px solid #f0d9b5; border-radius: 10px; padding: 16px; margin-top: 14px; text-align: left; font-size: 15px; }
.deposit-box__title { font-weight: 700; margin-bottom: 8px; }
.deposit-box div { margin: 2px 0; }

/* Avviso "in attesa di conferma" (prenotazione numerosa / caparra) */
.notice-pending { background: #fff7ec; border: 1px solid #f0d9b5; border-left: 4px solid #e08a00; border-radius: 10px; padding: 16px; margin: 0 0 18px; text-align: left; }
.notice-pending__title { font-weight: 700; color: #b56b00; margin: 0 0 6px; font-size: 16px; }
.notice-pending p { margin: 0 0 8px; font-size: 15px; line-height: 1.5; }
.notice-pending p:last-child { margin-bottom: 0; }

/* Avviso evidente "richiesta ricevuta, ti ricontatteremo" (modifica numerosa senza posto) */
.notice-contact { background: #fff7ec; border: 1px solid #f0d9b5; border-left: 4px solid #e08a00; border-radius: 10px; padding: 16px 18px; margin: 14px 0 0; text-align: left; }
.notice-contact__title { font-weight: 700; color: #b56b00; margin: 0 0 8px; font-size: 16px; }
.notice-contact p { margin: 0 0 8px; font-size: 15px; line-height: 1.55; color: var(--ink); }
.notice-contact p:last-child { margin-bottom: 0; }
.notice-contact__strong { font-weight: 700; }

.error { color: var(--err); font-weight: 600; margin: 12px 0 0; }
.ok-msg { color: var(--ok); font-weight: 600; margin: 12px 0 0; }

/* Box di conferma verde (modifica/annullamento riuscito) */
.notice-ok { background: #f0f7ec; border: 1px solid #c0dba8; border-left: 4px solid #2e7d4f; border-radius: 10px; padding: 16px 18px; margin: 14px 0 0; text-align: left; }
.notice-ok__title { font-weight: 700; color: #2e7d4f; margin: 0 0 6px; font-size: 16px; }
.notice-ok p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--ink); }

/* ---------- Successo ---------- */
.step--done { text-align: center; }
#done-message { white-space: pre-line; }
.done-icon {
    width: 64px; height: 64px; border-radius: 50%; background: var(--ok); color: #fff;
    font-size: 34px; display: flex; align-items: center; justify-content: center;
    margin: 6px auto 14px;
}

/* ============================================================
   Pagine gestione cliente / dashboard (riuso classi sotto)
   ============================================================ */
.page { max-width: 1000px; margin: 0 auto; padding: 24px 16px 48px; }
.topbar {
    display: flex; justify-content: space-between; align-items: center;
    background: var(--wine); color: #fff; padding: 14px 22px; border-radius: var(--radius);
    margin-bottom: 22px;
}
.topbar a { color: #fff; text-decoration: none; opacity: .85; font-size: 14px; }
.topbar h1 { font-size: 18px; margin: 0; }

.panel { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px; margin-bottom: 20px; }
.panel h2 { margin-top: 0; font-size: 20px; line-height: 1.15; }
.panel-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    margin-bottom: 14px; flex-wrap: wrap;
}
.panel-head h2 { margin: 0; }
.panel-head__title-group { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.panel-head__title-group label { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 400; cursor: pointer; }
.panel-head__actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* "Nuova prenotazione" in verde, per distinguerla dalle azioni rosse (Blocca/Annulla) */
#add-open { background: #4f6a3a; border-color: #4f6a3a; }
#add-open:hover { background: #41582f; border-color: #41582f; }
.export-link-row { margin: 16px 0 0; text-align: right; font-size: 14px; }
.export-link-row a { color: var(--wine); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* Statistiche */
.stats-controls { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.stats-controls .field select { min-width: 110px; }
.stats-kpis {
    display: grid; grid-template-columns: repeat(4, minmax(130px, 1fr)); gap: 12px;
    margin-top: 16px;
}
.stat-card {
    border: 1px solid var(--line); border-radius: 8px; background: #fcfbf9;
    padding: 14px 16px;
}
.stat-card span { display: block; color: var(--muted); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; }
.stat-card b { display: block; font-size: 28px; line-height: 1.1; margin-top: 4px; }
.stats-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.chart-panel h3 { margin: 0 0 12px; font-size: 19px; line-height: 1.15; }
.chart-box {
    width: 100%; min-height: 260px; border: 1px solid var(--line); border-radius: 8px;
    background: #fffdf8; overflow: hidden;
}
.chart-box svg { display: block; width: 100%; height: auto; }
.chart-axis { fill: #8a8a8a; color: #8a8a8a; font-size: 11px; }
.chart-empty { color: var(--muted); padding: 28px; text-align: center; }
.service-bars { display: flex; flex-direction: column; gap: 12px; }
.service-bar {
    border: 1px solid var(--line); border-radius: 8px; padding: 12px; background: #fffdf8;
}
.service-bar__head { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; }
.service-bar__track { height: 10px; border-radius: 10px; background: var(--cream); overflow: hidden; margin-top: 8px; }
.service-bar__fill { height: 100%; background: var(--wine); border-radius: inherit; }
.service-bar__meta { margin-top: 6px; color: var(--muted); font-size: 12px; }

table.data { width: 100%; border-collapse: collapse; font-size: 14px; }
table.data th, table.data td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
table.data th { color: var(--muted); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; }
.badge { display: inline-block; padding: 3px 9px; border-radius: 20px; font-size: 12px; font-weight: 700; }
.badge--ok { background: #e6f4ec; color: var(--ok); }
.badge--off { background: #fbe9e7; color: var(--err); }
.badge--pending { background: #fff3d9; color: #b06b00; }

/* Prenotazioni in attesa di conferma */
tr.is-pending { background: #fffaf0; }
tr.is-pending:hover { background: #fff4df; }

/* Righe espandibili */
table.data tr.res-row { cursor: pointer; }
table.data tr.res-row:hover { background: #f7f4ef; }
.caret { display: inline-block; color: var(--muted); font-size: 11px; transition: transform .15s; }
tr.res-row.is-expanded .caret { transform: rotate(90deg); color: var(--wine); }
.row-toggle { display: none; }  /* toggle visibile solo su mobile (card) */
@media (min-width: 901px) {
    /* Azioni su griglia a 2 colonne uguali: "Modifica"+"Annulla" (o "Modifica"+"Rifiuta")
       occupano sempre la stessa larghezza totale in ogni riga. Quando c'è anche "Conferma"
       (righe in attesa), questo occupa l'intera riga sopra, allineandosi perfettamente
       con la coppia di pulsanti sotto invece di avere una larghezza diversa.

       IMPORTANTE: la griglia va sul DIV interno, mai sul <td>. Mettendo display:grid
       direttamente sulla cella, questa esce dal contesto tabellare, non si allunga più
       fino all'altezza della riga e il suo bordo inferiore risulta disallineato:
       la linea di separazione appare "spezzata" in corrispondenza delle azioni. */
    .res-actions { white-space: normal; }
    .res-actions__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
    .res-actions__grid .btn { width: 100%; text-align: center; margin: 0; }
    .res-row.is-pending .res-actions__grid .btn--confirm { grid-column: 1 / -1; }
}
.detail-row > td { background: #f7f4ef; padding: 14px 18px; }
.detail-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px 20px; }
.detail-item { display: flex; flex-direction: column; gap: 2px; }
.detail-item__k { font-size: 11px; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); font-weight: 700; }
.detail-item__v { font-size: 14px; }

/* Note interne dello staff: mai visibili al cliente. Colore neutro (slate), distinto
   dagli altri box colorati (rosso/ambra/verde) usati per stati rivolti al cliente. */
.detail-note-internal {
    margin-top: 16px; padding: 12px 14px; background: #eef1f5; border: 1px solid #c9d3dc;
    border-radius: 10px;
}
.detail-note-internal label {
    display: block; font-size: 12px; font-weight: 700; color: #3d5266; margin-bottom: 6px;
}
.detail-note-internal textarea {
    width: 100%; padding: 8px 10px; border: 1px solid #c9d3dc; border-radius: 8px;
    font-family: inherit; font-size: 13.5px; resize: vertical; background: #fff;
}
.detail-note-internal__actions { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.detail-note-internal__saved { color: var(--ok); font-size: 13px; font-weight: 700; }
.internal-note-flag { font-size: 12px; margin-left: 5px; }

.btn--confirm { background: #e08a00; color: #fff; border-color: #e08a00; }
.btn--confirm:hover { background: #c87a00; }

/* Disponibilità orarie raggruppate per giorno */
.week-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(155px, 1fr)); gap: 12px; }
.day-card { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.day-card--closed { opacity: .65; }
.day-card__head { background: var(--cream); padding: 8px 12px; font-weight: 700; font-size: 14px; }
.day-card__empty { padding: 14px 12px; color: var(--muted); font-size: 13px; text-align: center; }
.band { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 12px; border-top: 1px solid var(--line); }
.band__info { display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.band__del { border: none; background: none; color: var(--muted); cursor: pointer; font-size: 13px; padding: 4px 6px; border-radius: 6px; line-height: 1; }
.band__del:hover { background: #fbe9e7; color: var(--err); }
.svc { display: inline-block; width: fit-content; font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 20px; }
.svc--pranzo { background: #fff3d9; color: #b06b00; }
.svc--cena { background: #ece4f5; color: #6a3fa0; }
.svc--altro { background: var(--cream); color: var(--muted); }

.row { display: flex; gap: 12px; flex-wrap: wrap; }
.row > * { flex: 1; min-width: 140px; }
.inline-form { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; }
.list-controls__row2 {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; flex-wrap: wrap; margin-top: 14px;
}

/* ===== Layout dashboard con sidebar ===== */
.admin-shell { display: flex; min-height: 100vh; }
.sidebar {
    width: 240px; flex-shrink: 0; background: #313626; color: #fff;
    display: flex; flex-direction: column; padding: 20px 14px;
    height: 100vh; position: sticky; top: 0; overflow-y: auto;
}
.sidebar__brand {
    display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
    padding: 6px 10px 20px; color: #fff; text-decoration: none;
}
.sidebar__brand:hover { color: #fff; }
.sidebar__brand-logo {
    display: block;
    width: 100%;
    max-width: 178px;
    height: auto;
}
.sidebar__brand-subtitle {
    font-family: var(--font);
    font-size: 12px;
    line-height: 1.2;
    font-weight: 700;
    letter-spacing: 1.8px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .72);
}
.sidebar__nav { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.sidebar__settings-menu { display: none; }
.sidebar__settings-menu summary { list-style: none; }
.sidebar__settings-menu summary::-webkit-details-marker { display: none; }
.sidebar__link {
    display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
    background: none; border: none; color: rgba(255, 255, 255, .85); font-family: inherit;
    font-size: 14.5px; font-weight: 600; padding: 11px 12px; border-radius: 9px; cursor: pointer;
    text-decoration: none; transition: .15s;
}
.sidebar__link:hover { background: rgba(255, 255, 255, .12); color: #fff; }
.sidebar__link.is-active { background: rgba(255, 255, 255, .18); color: #fff; }
.sidebar__badge {
    margin-left: auto; background: #e08a00; color: #fff; font-size: 12px; font-weight: 800;
    min-width: 20px; height: 20px; border-radius: 20px; display: inline-flex;
    align-items: center; justify-content: center; padding: 0 6px;
}
.sidebar__foot { border-top: 1px solid rgba(255, 255, 255, .2); padding-top: 12px; margin-top: 14px; }
.sidebar__section-label { font-size: 10.5px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: rgba(255, 255, 255, .5); padding: 0 12px 6px; }
.sidebar__foot-link {
    display: flex; align-items: center; gap: 10px; color: rgba(255, 255, 255, .8);
    text-decoration: none; font-size: 13.5px; padding: 8px 12px; border-radius: 8px; margin-bottom: 6px;
}
.sidebar__foot-link:hover { background: rgba(255, 255, 255, .12); color: #fff; }
.sidebar__foot-link.is-active { background: rgba(255, 255, 255, .18); color: #fff; }
.sidebar__foot-row { display: flex; justify-content: space-between; align-items: center; padding: 0 12px; }
.sidebar__logout { color: rgba(255, 255, 255, .85); text-decoration: none; font-size: 14px; }
.sidebar__logout:hover { color: #fff; }

.admin-main { flex: 1; min-width: 0; height: 100vh; overflow-y: auto; padding: 24px 26px 48px; }
.admin-main > * { max-width: 1100px; }
.admin-main__head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 18px; gap: 12px; }
.admin-main__head h1 { font-size: 20px; margin: 0; }
.admin-login__logo {
    display: block;
    width: 100%;
    max-width: 320px;
    height: auto;
    margin: 0 auto 14px;
}
body.admin-login-page {
    background: #313626 !important;
    min-height: 100vh;
}
.admin-login-page .booking {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.admin-login-page .booking__header p {
    color: #f4ecd6;
}
.admin-login-page .card {
    background: #f4f1ec;
}

/* Card richieste in attesa */
.pending-card {
    display: flex; justify-content: space-between; align-items: center; gap: 14px;
    border: 1px solid var(--line); border-left: 4px solid #e08a00; border-radius: 10px;
    padding: 14px 16px; margin-bottom: 10px; background: #fffaf0;
}
.pending-card__actions { display: flex; gap: 8px; flex-shrink: 0; }

/* Riquadro statistica cliccabile ("In attesa") */
.stat-clickable { cursor: pointer; border-radius: 8px; padding: 4px 10px; margin: -4px -10px; transition: background .12s; }
.stat-clickable:hover { background: #fff4e2; }

@media (max-width: 980px) {
    .stats-grid { grid-template-columns: 1fr; gap: 16px; }
}

/* Tablet landscape / laptop stretti (901–1320px): la lista torna tabellare ma
   compatta e con contenuto che va a capo, così le colonne non vengono tagliate a destra. */
@media (min-width: 901px) and (max-width: 1320px) {
    .sidebar { width: 200px; }
    table.res-table th, table.res-table td { padding: 8px 7px; font-size: 13px; }
    table.res-table .small { font-size: 12px; }
    /* Contatti e note: spezza le parole lunghe (es. email) così la colonna si stringe */
    table.res-table td:nth-child(5),
    table.res-table td:nth-child(6) { overflow-wrap: anywhere; word-break: break-word; }
    /* Azioni: pulsanti più compatti (la griglia 2 colonne è già definita sopra) */
    .res-actions .btn.small { padding: 5px 9px; }
}

@media (max-width: 760px) {
    body:not(.theme-vintage) { background: #f7f4ef; }
    .admin-shell { flex-direction: column; min-height: 100vh; height: auto; }
    .admin-main { height: auto; overflow: visible; padding: 14px 12px 108px; }
    .admin-main__head { margin-bottom: 14px; }
    .admin-main__head h1 { font-size: 19px; line-height: 1.2; }
    .panel { padding: 14px; margin-bottom: 14px; border-radius: 10px; }
    .panel-head { align-items: stretch; }
    .panel-head > * { min-width: 0; }
    .panel-head .btn { width: 100%; text-align: center; }
    .panel-head .btn-icon { width: 42px; min-width: 42px; flex: 0 0 42px; }
    .panel-head__actions { flex-direction: column; align-items: stretch; }

    /* Sidebar compatta e sticky: logo sopra, navigazione a scorrimento sotto */
    .sidebar {
        width: auto; height: auto; position: static; overflow: visible;
        flex-direction: column; gap: 0; padding: 12px 14px 10px;
        box-shadow: none;
    }
    .sidebar__brand {
        width: fit-content; padding: 0; flex-direction: row; align-items: center; gap: 12px;
    }
    .sidebar__brand-logo { max-width: 176px; }
    .sidebar__brand-subtitle {
        font-size: 11px; letter-spacing: 1.5px; padding-top: 2px;
    }
    .sidebar__nav {
        position: fixed; left: 10px; right: 10px; bottom: 10px; z-index: 40;
        display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: 4px; flex: none; overflow: visible; padding: 6px;
        background: #313626; border-radius: 14px;
        box-shadow: 0 10px 30px rgba(0, 0, 0, .25);
    }
    .sidebar__nav::-webkit-scrollbar,
    .sidebar__foot::-webkit-scrollbar { display: none; }
    .sidebar__link {
        position: relative;
        width: 100%; height: 78px; flex: none; padding: 8px 4px;
        background: rgba(255, 255, 255, .08); white-space: normal;
        justify-content: center; align-items: center; flex-direction: column; gap: 6px;
        text-align: center; font-size: 10.5px; line-height: 1.1; border-radius: 10px;
        overflow: visible;
    }
    .sidebar__link > span:first-child {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 24px;
        flex: none;
        font-size: 19px;
        line-height: 1;
    }
    .sidebar__link.is-active { background: rgba(255, 255, 255, .22); }
    .sidebar__badge {
        position: absolute;
        top: -7px;
        right: -3px;
        margin: 0;
        min-width: 24px;
        height: 24px;
        font-size: 12px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
    }
    .sidebar__foot { display: none; }
    .sidebar__settings-menu { display: block; position: relative; min-width: 0; width: 100%; }
    .sidebar__settings-menu .sidebar__link { cursor: pointer; height: 78px; }
    .sidebar__settings-panel {
        position: absolute; right: 0; bottom: calc(100% + 10px);
        min-width: 170px; padding: 8px; border-radius: 12px;
        background: #fff; border: 1px solid var(--line);
        box-shadow: 0 12px 30px rgba(0, 0, 0, .25);
    }
    .sidebar__settings-panel a {
        display: block; color: var(--ink); text-decoration: none;
        padding: 10px 12px; border-radius: 8px; font-size: 14px; font-weight: 700;
    }
    .sidebar__settings-panel a:hover { background: var(--cream); }
    .sidebar__section-label { display: none; }
    .sidebar__foot-link {
        flex: 0 0 auto; margin: 0; padding: 8px 12px; min-height: 36px;
        background: rgba(255, 255, 255, .1); white-space: nowrap;
    }
    .sidebar__foot-row {
        flex: 0 0 auto; padding: 0 2px 0 8px; gap: 8px; white-space: nowrap;
    }
    .sidebar__foot-row .muted { display: none; }
    .sidebar__logout { display: inline-flex; align-items: center; min-height: 36px; }
    .export-link-row { text-align: center; margin-top: 18px; }

    /* "Nuova prenotazione" diventa un compatto "+" su mobile */
    #add-open .add-open__label { display: none; }
    #add-open .add-open__icon { display: inline; }
    #add-open { width: 42px; min-width: 42px; height: 42px; padding: 0; font-size: 24px; line-height: 1; }

    /* I controlli della lista vanno a capo in modo ordinato */
    .inline-form { gap: 10px; align-items: stretch; }
    .inline-form .field { flex: 1 1 calc(50% - 6px); min-width: 0; }
    .inline-form .field input,
    .inline-form .field select { min-height: 42px; min-width: 0; max-width: 100%; }
    #list-controls .field input[type="date"] {
        width: 100%;
        min-width: 0;
        max-width: 100%;
        text-align: center;
        font-size: 16px;
    }
    .range-group { width: 100%; }
    .range-group .btn,
    .btn { min-height: 42px; }
    .range-group .btn { flex: 1; }
    #range-prev,
    #range-next { min-width: 48px; }

    .pending-card { flex-direction: column; align-items: stretch; }
    .pending-card__actions { justify-content: stretch; }
    .pending-card__actions .btn { flex: 1; }
    .stats-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stats-grid { gap: 14px; }
    .stats-controls { width: 100%; }
    .stats-controls .range-group { width: 100%; }
    .stats-controls .field { flex: 1 1 110px; }
    .stats-controls #stats-export { flex: 1 1 150px; text-align: center; }
    .chart-box { min-height: 220px; }
}

/* Bottoni piccoli (dashboard) */
.btn.small { padding: 6px 12px; font-size: 13px; }
table.data .small { font-size: 12.5px; }

/* Riga prenotazione appena arrivata */
tr.is-new { animation: glow 2.5s ease; }
@keyframes glow {
    0% { background: #fff7cc; }
    100% { background: transparent; }
}

/* Toggle vista lista/calendario */
.view-toggle { display: flex; gap: 6px; }
.btn.is-active { background: var(--wine); color: #fff; border-color: var(--wine); }

/* Controllo segmentato (Oggi / 7 giorni / Mese) */
.range-group { display: inline-flex; border: 1px solid var(--line); border-radius: 0; overflow: hidden; }
.range-group .btn { border: none; border-radius: 0; border-right: 1px solid var(--line); }
.range-group .btn:last-child { border-right: none; }
.range-group .btn.is-active { background: var(--wine); color: #fff; }

/* Navigazione mese */
.cal-nav { display: flex; align-items: center; justify-content: center; gap: 18px; }

/* Griglia calendario mensile */
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-dow { text-align: center; font-size: 12px; font-weight: 700; color: var(--muted); padding: 4px 0; }
.cal-cell {
    position: relative;
    min-height: 100px; border: 1px solid var(--line); border-radius: 8px; padding: 5px;
    font-size: 12px; background: #fff; cursor: pointer; transition: .12s; overflow: hidden;
}
.cal-overflow {
    position: absolute; bottom: 4px; right: 4px;
    background: var(--err); color: #fff; font-size: 10px; font-weight: 800;
    min-width: 17px; height: 17px; border-radius: 9px; padding: 0 4px;
    display: inline-flex; align-items: center; justify-content: center;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
}
.cal-cell:hover { border-color: var(--wine); }
.cal-cell--empty { background: transparent; border: none; cursor: default; }
.cal-cell.has-res { background: #fcfbf9; }
.cal-cell.is-today { box-shadow: inset 0 0 0 2px var(--wine); }
.cal-cell.is-selected { background: #f3e7e7; box-shadow: inset 0 0 0 2px var(--wine); }
.cal-cell.is-selected .cal-num { color: var(--wine); }
/* Giorno bloccato manualmente (chiusura straordinaria da dashboard) */
.cal-cell.is-blocked { background: #fbe9e7; }
.cal-cell.is-blocked .cal-num { color: var(--err); }
.cal-blocked {
    display: block; font-size: 9.5px; font-weight: 700; color: var(--err); line-height: 1.25;
    background: #fff; border: 1px solid #f3c9c4; border-radius: 6px; text-align: center;
    padding: 2px 4px; margin-bottom: 3px;
}
.cal-blocked-count { display: block; font-size: 10px; color: var(--err); text-align: center; }
.cal-cell__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; }
.cal-num { font-weight: 700; font-size: 13px; }
.cal-covers { font-size: 10px; color: var(--muted); background: var(--cream); padding: 1px 6px; border-radius: 10px; }
.cal-res {
    background: #eef4f0; border-left: 3px solid var(--ok); border-radius: 4px;
    padding: 2px 5px; margin-bottom: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cal-res--pending { background: #fff3d9; border-left-color: #e08a00; }
.cal-res__n { color: var(--muted); }
.cal-more { font-size: 11px; color: var(--wine); font-weight: 600; padding-left: 2px; }

@media (max-width: 640px) {
    .cal-nav { justify-content: space-between; gap: 8px; }
    .cal-nav h3 { font-size: 15px; }
    .cal-nav .btn { padding-left: 10px; padding-right: 10px; }
    .cal-grid { gap: 4px; }
    .cal-dow { font-size: 10px; }
    .cal-cell { min-height: 58px; font-size: 10px; padding: 3px; }
    .cal-num { font-size: 11px; }
    .cal-covers { display: none; }
    /* Le prenotazioni diventano barrette colorate (verde = confermata, arancio = in attesa) */
    .cal-res {
        height: 6px; padding: 0; margin-bottom: 3px; border-radius: 3px; border-left: none;
        background: var(--ok); overflow: hidden; text-indent: -999px;
    }
    .cal-res--pending { background: #e08a00; }
    .cal-res b, .cal-res__n { display: none; }
    .cal-overflow { bottom: 3px; right: 3px; min-width: 15px; height: 15px; font-size: 9px; }
    .cal-blocked { font-size: 0; padding: 0; border: none; background: none; margin-bottom: 1px; }
    .cal-blocked::before { content: "🚫"; font-size: 11px; }
}

/* Modal */
.modal {
    position: fixed; inset: 0; background: rgba(0, 0, 0, .45);
    display: flex; align-items: center; justify-content: center; padding: 16px; z-index: 50;
}
.modal[hidden] { display: none; }
.modal__box {
    background: #fff; border-radius: var(--radius); padding: 26px;
    width: 100%; max-width: 420px; box-shadow: var(--shadow);
    max-height: calc(100vh - 32px); overflow-y: auto;
}

/* Avviso "capienza superata" nei modal admin: richiede una seconda conferma esplicita */
.over-capacity {
    background: #fff7ec; border: 1px solid #f0d9b5; border-left: 4px solid #e08a00;
    border-radius: 10px; padding: 12px 14px; margin: 14px 0 0;
}
.over-capacity__title { margin: 0 0 6px; font-weight: 700; color: #b56b00; font-size: 15px; }
.over-capacity p { margin: 0 0 4px; font-size: 14px; line-height: 1.5; }
.over-capacity__hint { color: var(--muted); font-size: 13px !important; margin: 6px 0 0 !important; }

/* Popup di conferma automatico (si chiude da solo, non richiede un click) */
.toast-overlay {
    position: fixed; inset: 0; background: rgba(0, 0, 0, 0);
    display: flex; align-items: center; justify-content: center; z-index: 200;
    opacity: 0; pointer-events: none; transition: opacity .2s ease, background-color .2s ease;
}
.toast-overlay.is-visible { opacity: 1; background: rgba(0, 0, 0, .35); }
.toast-box {
    background: #fff; color: var(--ink); padding: 16px 26px; border-radius: 12px;
    font-weight: 700; font-size: 15px; text-align: center; max-width: 320px;
    box-shadow: 0 12px 34px rgba(0, 0, 0, .28);
    transform: translateY(8px); transition: transform .2s ease;
}
.toast-overlay.is-visible .toast-box { transform: translateY(0); }
.modal__box h2 { margin-top: 0; }

/* Modal "Nuova prenotazione": più largo, due colonne (dati cliente | data/ora) così sta tutto a schermo */
.modal__box--wide { max-width: 760px; }
.add-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 28px; }
.add-form-col .field:first-child { margin-top: 0; }
@media (max-width: 700px) {
    .add-form-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
    .party { grid-template-columns: repeat(3, 1fr); }
    table.data { font-size: 13px; }
}

/* Lista prenotazioni come card leggibili (telefoni e tablet in verticale):
   nome in evidenza, poi data · ora · coperti, e toggle per il resto. Niente taglio orizzontale. */
@media (max-width: 900px) {
    #res-body { display: block; }
    table.res-table { border-collapse: separate; border-spacing: 0; }
    table.res-table thead { display: none; }
    #res-body tr.res-row {
        display: flex; flex-wrap: wrap; align-items: baseline; position: relative;
        background: #fff; border: 1px solid var(--line);
        border-radius: 10px; padding: 12px 40px 12px 14px; margin-bottom: 10px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, .04);
    }
    #res-body tr.res-row.is-pending { background: #fffaf0; border-left: 4px solid #e08a00; }
    #res-body tr.res-row.is-expanded { border-bottom-left-radius: 0; border-bottom-right-radius: 0; margin-bottom: 0; }

    /* reset celle: niente etichette, niente bordi */
    #res-body tr.res-row td { display: inline-flex; align-items: baseline; border: none; padding: 0; text-align: left; }
    #res-body tr.res-row td::before { content: none !important; }
    #res-body .caret { display: none; }

    /* Nome cliente in evidenza, in cima */
    #res-body tr.res-row td:nth-child(3) {
        order: 1; flex-basis: 100%; font-size: 17px; font-weight: 700; color: var(--ink); margin-bottom: 4px;
    }
    /* Riga compatta: data · ora · coperti */
    #res-body tr.res-row td:nth-child(1) { order: 2; font-size: 13px; color: var(--muted); }
    #res-body tr.res-row td:nth-child(2) { order: 3; font-size: 13px; color: var(--muted); }
    #res-body tr.res-row td:nth-child(4) { order: 4; font-size: 13px; color: var(--muted); }
    #res-body tr.res-row td:nth-child(2)::before,
    #res-body tr.res-row td:nth-child(4)::before { content: "·" !important; margin: 0 7px; color: var(--line); }
    #res-body tr.res-row td:nth-child(4)::after { content: " cop."; margin-left: 3px; }

    /* Stato: badge su riga propria */
    #res-body tr.res-row td:nth-child(7) { order: 5; flex-basis: 100%; margin-top: 8px; }

    /* Contatti e note: nascosti nella card (compaiono nel dettaglio) */
    #res-body tr.res-row td:nth-child(5),
    #res-body tr.res-row td:nth-child(6) { display: none; }

    /* Azioni: visibili solo quando la card è espansa */
    #res-body tr.res-row td:nth-child(8) { display: none; }
    #res-body tr.res-row.is-expanded td:nth-child(8) {
        order: 6; display: block; flex-basis: 100%;
        margin-top: 10px; padding-top: 10px; border-top: 1px solid #f0ebe2;
    }
    /* Qui i pulsanti stanno affiancati e a piena larghezza: il wrapper interno diventa
       la riga flessibile (su desktop è invece una griglia a 2 colonne). */
    #res-body tr.res-row td:nth-child(8) .res-actions__grid {
        display: flex; flex-wrap: wrap; gap: 8px; width: 100%;
    }
    #res-body tr.res-row td:nth-child(8) .btn { flex: 1 1 120px; }

    /* Toggle di espansione in alto a destra della card */
    #res-body .row-toggle {
        display: flex; align-items: center; justify-content: center;
        position: absolute; top: 10px; right: 10px; width: 26px; height: 26px;
        color: var(--muted); font-size: 15px; transition: transform .15s;
    }
    #res-body tr.res-row.is-expanded .row-toggle { transform: rotate(180deg); color: var(--wine); }

    #res-body .detail-row[hidden] { display: none !important; }
    #res-body .detail-row {
        display: block; background: #f7f4ef; border: 1px solid var(--line);
        border-top: none; border-radius: 0 0 10px 10px; margin: 0 0 10px;
    }
    #res-body .detail-row > td { display: block; padding: 12px; border: none; }
    .detail-grid { grid-template-columns: 1fr; gap: 10px; }
}

@media (max-width: 560px) {
    .stats-kpis { grid-template-columns: 1fr; }
    .stat-card b { font-size: 24px; }
    .service-bar__head { align-items: baseline; }
    .modal { align-items: flex-end; padding: 10px; }
    .modal__box {
        max-width: none; max-height: calc(100vh - 20px); overflow-y: auto;
        padding: 20px; border-radius: 14px;
    }
}

@media (max-width: 380px) {
    .sidebar__brand-logo { max-width: 158px; }
    .sidebar__brand-subtitle { font-size: 10px; }
    .sidebar__link { font-size: 9.5px; }
}

/* ============================================================
   Tema "vintage" pagine cliente (stesso stile della coming-soon)
   Sfondo verde oliva, card crema con bordo rosso ornamentale, logo.
   Scoped a body.theme-vintage → la dashboard NON è toccata.
   ============================================================ */
body.theme-vintage {
    background: #454c36;
    --wine: #b0413f;        /* ridefinizione locale: tutti gli accenti diventano il rosso coming-soon */
    --wine-dark: #8f3433;
    display: flex;
    flex-direction: column;
    min-height: 100vh;       /* footer ancorato in basso anche su pagine corte */
}
body.theme-vintage .booking { flex: 1 0 auto; }

/* Footer pubblico: banda verde scuro con i contatti (telefono ed email cliccabili) */
body.theme-vintage .site-footer {
    flex-shrink: 0;
    background: #313626;
    color: #cdd1bd;
    text-align: center;
    padding: 26px 18px 30px;
}
body.theme-vintage .site-footer__inner { max-width: 540px; margin: 0 auto; }
body.theme-vintage .site-footer__name {
    font-family: var(--font-title); font-size: 19px; color: #f4ecd6; margin: 0 0 6px;
}
body.theme-vintage .site-footer__addr { margin: 0 0 9px; font-size: 14px; color: #b7bca4; }
body.theme-vintage .site-footer__contacts { margin: 0 0 12px; font-size: 14.5px; line-height: 1.7; }
body.theme-vintage .site-footer__contacts a { color: #ebd086; text-decoration: none; font-weight: 600; }
body.theme-vintage .site-footer__contacts a:hover { text-decoration: underline; }
body.theme-vintage .site-footer__contacts span { color: #6c7158; margin: 0 9px; }
body.theme-vintage .site-footer__whatsapp {
    display: inline-block;
    margin: 0 0 14px;
    padding: 10px 18px;
    border-radius: 8px;
    background: #ebd086;
    color: #313626;
    text-decoration: none;
    font-weight: 700;
    font-size: 14px;
}
body.theme-vintage .site-footer__whatsapp:hover { background: #f4ecd6; }
body.theme-vintage .site-footer__legal { margin: 4px 0 10px; font-size: 13px; }
body.theme-vintage .site-footer__legal a { color: #b7bca4; text-decoration: none; }
body.theme-vintage .site-footer__legal a:hover { color: #ebd086; text-decoration: underline; }
body.theme-vintage .site-footer__legal span { color: #6c7158; margin: 0 8px; }
body.theme-vintage .site-footer__copy { margin: 0; font-size: 12px; color: #868b71; }

/* ---------- Pagine legali (privacy / cookie) ---------- */
.legal { text-align: left; }
.legal h2 { margin: 0 0 6px; }
.legal h3 { margin: 22px 0 6px; font-size: 17px; }
.legal p { margin: 0 0 10px; line-height: 1.6; font-size: 15px; }
.legal ul { margin: 0 0 12px; padding-left: 20px; line-height: 1.6; font-size: 15px; }
.legal li { margin-bottom: 6px; }
.legal a { color: var(--wine); font-weight: 600; }
.legal code { background: var(--cream); padding: 1px 6px; font-size: 13px; }
.legal .data th, .legal .data td { text-align: left; vertical-align: top; font-size: 14px; }
.legal__back { margin-top: 24px; }
body.theme-vintage .booking__logo {
    width: 100%; max-width: 360px; height: auto; display: block; margin: 2px auto 16px;
}
body.theme-vintage .booking__header p { color: #dde0cd; }
body.theme-vintage .booking__tagline {
    color: #f4ecd6;
    font-size: 31px;
    font-weight: 780;
}
body.theme-vintage .booking__footer { color: #b8bca5; }

/* Breadcrumb degli step su sfondo scuro */
body.theme-vintage .steps__item { color: #d2d6c1; }
body.theme-vintage .steps__item span { background: rgba(255, 255, 255, .22); color: #fff; }
body.theme-vintage .steps__item.is-active { color: #f4ecd6; }
body.theme-vintage .steps__item.is-active span { background: var(--wine); }
body.theme-vintage .steps__item.is-done span { background: var(--ok); }
body.theme-vintage .steps__sep { color: #8d927b; }
body.theme-vintage .steps__item.is-clickable:hover { color: #fff; background: rgba(255, 255, 255, .10); }

/* Card crema con bordo ornamentale a angoli concavi (border-image SVG) */
body.theme-vintage .card {
    background: #f4ecd6;
    border: 22px solid transparent;
    border-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='90' height='90' fill='none' stroke='%23b0413f' stroke-width='2'><path d='M27 13 H63 A14 14 0 0 0 77 27 V63 A14 14 0 0 0 63 77 H27 A14 14 0 0 0 13 63 V27 A14 14 0 0 0 27 13 Z'/></svg>") 30 stretch;
    border-radius: 0;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .18);
    padding: 24px 22px;
}

/* Sulla card crema i riquadri chiari diventano bianco caldo per staccare bene */
body.theme-vintage .summary { background: #fffdf7; border: 1px solid #e7ddc4; }
body.theme-vintage .field input,
body.theme-vintage .field textarea,
body.theme-vintage .field select { background: #fffdf7; }
body.theme-vintage .mini-day,
body.theme-vintage .party__btn,
body.theme-vintage .slot { background: #fffdf7; }
/* Hover: outline verde (non più rosso) su ciò che si può selezionare */
body.theme-vintage .mini-day.is-open:hover,
body.theme-vintage .party__btn:hover,
body.theme-vintage .slot:hover { border-color: #4f6a3a; }
/* Selezione dell'utente (persone, giorno, orario): verde "leggero" (50%), distinto dal verde pieno dei bottoni Continua */
body.theme-vintage .mini-day.is-selected,
body.theme-vintage .party__btn.is-selected,
body.theme-vintage .slot.is-selected {
    background: rgba(79, 106, 58, .5);
    color: #fff;
    border-color: rgba(79, 106, 58, .55);
}
/* Giorno già al completo: quadratino rosso "leggero" (50%), non a tinta piena */
body.theme-vintage .mini-day.is-full {
    background: rgba(176, 65, 63, .5);
    color: #6b2726;
    border-color: rgba(176, 65, 63, .55);
}
body.theme-vintage .mini-day.is-full:hover { border-color: var(--wine); }
/* Giorno pieno selezionato (per la lista d'attesa): rosso pieno, per distinguerlo dal verde della selezione normale */
body.theme-vintage .mini-day.is-full.is-selected {
    background: var(--wine);
    color: #fff;
    border-color: var(--wine);
}

/* Bottoni di avanzamento (Continua / Conferma / Salva) in verde, non rosso */
body.theme-vintage .btn--primary { background: #4f6a3a; border-color: #4f6a3a; }
body.theme-vintage .btn--primary:hover { background: #41582f; border-color: #41582f; }

/* Titoli (Boska) leggermente più grandi sulle pagine cliente */
body.theme-vintage .card h2 { font-size: 26px; line-height: 1.18; font-weight: 780; }
body.theme-vintage .step h2 { font-size: 26px; font-weight: 780; }

/* Ottimizzazioni mobile per il tema vintage */
@media (max-width: 560px) {
    body.theme-vintage .booking { padding: 18px 12px 40px; }
    body.theme-vintage .booking__logo { max-width: 250px; }
    body.theme-vintage .booking__tagline { font-size: 27px; }
    /* cornice e padding più contenuti per dare respiro al contenuto */
    body.theme-vintage .card { border-width: 13px; padding: 20px 18px; }
    body.theme-vintage .card h2,
    body.theme-vintage .step h2 { font-size: 24px; }
}
