/*
 * Rottnest theme stylesheet.
 * I font del tema sono gestiti localmente e caricati via FTP nella cartella assets/fonts.
 */
@font-face {
    font-family: 'Urbanist';
    src: url('../fonts/Urbanist/Urbanist-VariableFont_wght.woff2') format('woff2'), url('../fonts/Urbanist/Urbanist-VariableFont_wght.ttf') format('truetype');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: 'Urbanist';
    src: url('../fonts/Urbanist/Urbanist-Italic-VariableFont_wght.woff2') format('woff2'), url('../fonts/Urbanist/Urbanist-Italic-VariableFont_wght.ttf') format('truetype');
    font-weight: 100 900;
    font-style: italic;
    font-display: swap;
}
html,
body {
    font-family: "Urbanist", system-ui;
    font-optical-sizing: auto;
    font-weight: 600;
    font-style: normal;
    margin: 0;
    padding: 0;
    max-width: 100%;
    overflow-x: clip;
    scrollbar-gutter: stable;
    background: white !important
}
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid #000;
    outline-offset: 3px
}

/* ==========================================================================
   Header
   ========================================================================== */
.site-skip-link {
    position: absolute;
    top: .75rem;
    left: .75rem;
    z-index: 1080;
    padding: .75rem 1rem;
    color: #fff;
    background: #000;
    border-radius: .25rem;
    text-decoration: none;
    transform: translateY(-150%);
    transition: transform .15s ease
}
.site-skip-link:focus,
.site-skip-link:focus-visible {
    color: #fff;
    transform: translateY(0)
}
.site-header-brand {
    display: inline-flex;
    align-items: center
}
.site-header-logo {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    object-fit: contain
}
.site-header-logo-desktop {
    max-height: 64px
}
.site-header-logo-mobile {
    max-height: 56px
}
.site-header-menu,
.site-header-mobile-menu {
    margin: 0
}
.site-header-menu-link,
.site-header-submenu-link,
.site-header-mobile-menu-link {
    transition: color .15s ease, background-color .15s ease
}
.site-header-menu-icon,
.site-header-toggler-svg {
    display: block;
    flex-shrink: 0
}
.site-header-toggler-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center
}
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important
    }
}

/* ==========================================================================
   404
   ========================================================================== */
.site-404 {
    min-height: 50vh;
    display: flex;
    align-items: center;
    justify-content: center
}
.site-404-inner {
    width: 100%
}
.site-404-actions {
    align-items: center
}
.site-404-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-decoration: underline;
    cursor: pointer
}

/* ==========================================================================
   Maintenance
   ========================================================================== */
.site-maintenance-main {
    min-height: 50vh;
    display: flex;
    align-items: center;
    justify-content: center
}
.site-maintenance {
    width: 100%
}

/* ==========================================================================
   Article
   ========================================================================== */
.site-article {
    width: 100%
}
.site-article-header {
    max-width: 52rem
}
.site-article-date {
    letter-spacing: .02em
}
.site-article-content {
    max-width: 52rem
}

/* ==========================================================================
   Page
   ========================================================================== */
.site-page {
    width: 100%
}
.site-page-content {
    width: 100%
}

/* ==========================================================================
   Category
   ========================================================================== */
.site-category {
    width: 100%
}
.site-category-header {
    max-width: 72rem
}
.site-category-content {
    margin-top: 1.5rem
}
.site-category-card,
.site-category-list-item {
    display: flex
}
.site-category-card-body,
.site-category-list-main {
    width: 100%
}
.site-category-list {
    display: grid;
    gap: 1rem
}
.site-category-card:has(.site-category-card-image) {
    flex-direction: column;
    border: 1px solid rgba(20, 40, 80, .08);
    border-radius: 1rem;
    overflow: hidden;
    padding: 0
}
.site-category-card-image {
    width: 100%;
    height: 160px;
    object-fit: cover;
    display: block
}
.site-category-card:has(.site-category-card-image) .site-category-card-body {
    padding: 1rem 1.25rem 1.25rem
}
.site-category-list-image {
    width: 72px;
    height: 72px;
    object-fit: cover;
    border-radius: .6rem;
    flex-shrink: 0;
    margin-right: 1rem
}

/* ==========================================================================
   Event
   ========================================================================== */
.site-event {
    width: 100%
}
.site-event-summary {
    height: 100%
}
.site-event-detail-list {
    display: grid;
    gap: .75rem
}
.site-event-detail-row {
    display: grid;
    gap: .15rem
}
.site-event-detail-label {
    color: var(--bs-secondary-color);
    font-size: .85rem;
    margin-bottom: 0
}
.site-event-detail-value {
    margin-bottom: 0
}
.site-event-placeholder {
    margin-bottom: 0
}
.site-event-gallery-img {
    display: block;
    width: 100%;
    height: auto
}
.site-booking-placeholder {
    margin-bottom: 0
}
.site-booking-gallery-img {
    display: block;
    width: 100%;
    height: auto
}

/* ==========================================================================
   Product
   ========================================================================== */
.site-product {
    width: 100%
}
.site-product-summary {
    height: 100%
}
.site-product-placeholder {
    margin-bottom: 0
}
.site-product-gallery-img {
    display: block;
    width: 100%;
    height: auto
}
.site-product-detail-list {
    display: grid;
    gap: .75rem
}
.site-product-detail-row {
    display: grid;
    gap: .15rem
}
.site-product-detail-label {
    color: var(--bs-secondary-color);
    font-size: .85rem;
    margin-bottom: 0
}
.site-product-detail-value {
    margin-bottom: 0
}

/* ==========================================================================
   Comments
   ========================================================================== */
.site-comments {
    width: 100%
}
.site-comments-pagination-list {
    margin-bottom: 1rem
}
.site-comments-honeypot {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden
}
.site-comments-form-alert {
    margin-top: 1rem
}
.site-comment-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem
}
.site-comment-content {
    overflow-wrap: anywhere
}

/* ==========================================================================
   Contact form
   ========================================================================== */
.site-contact-form-section {
    width: 100%
}
.site-contact-form-honeypot {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden
}
.site-contact-form-alert {
    margin-top: 1rem
}


/* ==========================================================================
   Booking cancel
   ========================================================================== */
.site-booking-cancel {
    width: 100%
}
.site-booking-cancel-column {
    margin-right: auto
}
.site-booking-cancel-alert {
    margin-bottom: 1.5rem
}

/* ==========================================================================
   Booking
   ========================================================================== */
.site-booking {
    width: 100%
}
.site-booking-summary {
    height: 100%
}
.site-booking-detail-list {
    display: grid;
    gap: .75rem
}
.site-booking-detail-row {
    display: grid;
    gap: .15rem
}
.site-booking-detail-label {
    color: var(--bs-secondary-color);
    font-size: .85rem;
    margin-bottom: 0
}
.site-booking-detail-value {
    margin-bottom: 0
}
.site-booking-amenity-list {
    margin-bottom: 0
}
.site-booking-honeypot {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden
}
.site-checkout-honeypot {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden
}
.site-account-honeypot {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden
}
.site-booking-form-alert {
    margin-top: 1rem
}

/* ==========================================================================
   Footer
   ========================================================================== */
footer,
.site-footer {
    padding: 3rem 0;
    background-color: whitesmoke;
}
.site-footer a {
    transition: color .15s ease, border-color .15s ease, background-color .15s ease
}
.site-footer-logo {
    width: 96px;
    max-width: 100%;
    max-height: 64px;
    height: auto;
    object-fit: contain
}
.site-footer-social-link {
    width: 2.5rem;
    height: 2.5rem
}
.site-footer .footer-menu-links a {
    color: var(--bs-secondary-color);
    text-decoration: none
}
.site-footer .footer-menu-links a:hover,
.site-footer .footer-menu-links a:focus-visible {
    color: var(--bs-dark)
}
.site-footer .list-inline a.rounded-circle:hover,
.site-footer .list-inline a.rounded-circle:focus-visible {
    color: var(--bs-dark) !important;
    background-color: var(--app-primary);
    border-color: var(--app-primary) !important
}
.site-footer-card {
    border: 0;
    background-color: white;
    padding: 1.5rem;
    border-radius: 1.5rem
}
/* ==========================================================================
   Menu digitale (app a colonna singola, senza header/footer del sito)
   Schede a pillola, categorie come accordion con contatore, piatti con prezzo a puntini, badge colorati per i
   tag e chip per gli allergeni. Tema scuro (default) o chiaro: menu.js imposta data-menu-theme su <html>.
   ========================================================================== */
.theme-menu {
    --menu-bg: #050506;
    --menu-surface: #111114;
    --menu-surface-2: #1a1a1f;
    --menu-border: rgba(255, 255, 255, .09);
    --menu-text: #fff;
    --menu-muted: #9c9ca6;
    --menu-active-bg: #fff;
    --menu-active-text: #000;
    --menu-dot: rgba(255, 255, 255, .28);
    --menu-shadow: 0 .5rem 1.5rem rgba(255, 255, 255, .12);
    min-height: 100vh;
    background-color: var(--menu-bg);
    color: var(--menu-text);
    padding-bottom: 3rem;
    color-scheme: dark
}
html[data-menu-theme="light"] .theme-menu {
    --menu-bg: #f3f3f6;
    --menu-surface: #fff;
    --menu-surface-2: #e9e9ee;
    --menu-border: rgba(0, 0, 0, .09);
    --menu-text: #101014;
    --menu-muted: #62626d;
    --menu-active-bg: #101014;
    --menu-active-text: #fff;
    --menu-dot: rgba(0, 0, 0, .3);
    --menu-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .18);
    color-scheme: light
}
html[data-menu-theme="light"],
html[data-menu-theme="light"] body {
    background: #f3f3f6
}
.theme-menu [hidden] {
    display: none !important
}
.theme-menu a {
    color: inherit
}
.theme-menu-content,
.theme-menu-note,
.theme-menu-tabs-track,
.theme-menu-cover-inner {
    max-width: 40rem;
    margin-left: auto;
    margin-right: auto
}

/* Schermata di ingresso */
.theme-menu-splash {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    background: radial-gradient(circle at 50% 30%, var(--menu-surface-2), var(--menu-bg) 70%);
    text-align: center
}
.theme-menu-splash-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem
}
.theme-menu-splash-enter {
    padding: .85rem 2.25rem;
    border: 1px solid var(--menu-text);
    border-radius: 3rem;
    background: transparent;
    font-size: .95rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--menu-text)
}
.theme-menu-splash-enter:hover,
.theme-menu-splash-enter:focus-visible {
    background: var(--menu-active-bg);
    color: var(--menu-active-text)
}
.theme-menu-splash-langs {
    display: flex;
    gap: .5rem;
    margin: 0;
    padding: 0;
    list-style: none
}

/* Copertina */
.theme-menu-cover {
    position: relative;
    padding: 3.5rem 1.25rem 2rem;
    background: linear-gradient(180deg, var(--menu-surface-2), var(--menu-bg));
    text-align: center
}
.theme-menu-lang {
    position: absolute;
    top: .85rem;
    right: .85rem;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .35rem
}
.theme-menu-lang-link {
    display: inline-block;
    min-width: 2.4rem;
    padding: .3rem .6rem;
    border: 1px solid var(--menu-border);
    border-radius: .7rem;
    background: var(--menu-surface);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-align: center;
    text-decoration: none;
    color: var(--menu-muted) !important
}
.theme-menu-lang-link:hover,
.theme-menu-lang-link:focus-visible {
    color: var(--menu-text) !important
}
.theme-menu-lang-link.is-current {
    background: var(--menu-active-bg);
    border-color: var(--menu-active-bg);
    color: var(--menu-active-text) !important
}
.theme-menu-brand {
    display: inline-block;
    margin-bottom: 1rem;
    text-decoration: none
}
.theme-menu-brand img {
    width: auto;
    max-width: 14rem;
    height: 3.5rem;
    object-fit: contain
}
.theme-menu-brand-text {
    font-size: 1.1rem;
    font-weight: 800;
    letter-spacing: .25em;
    text-transform: uppercase
}
.theme-menu-title {
    margin: 0 0 .35rem;
    font-size: clamp(1.4rem, 5vw, 1.9rem);
    font-weight: 800;
    line-height: 1.1
}
.theme-menu-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .6rem;
    margin-top: 1.1rem
}
.theme-menu-action {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 2.5rem;
    padding: .45rem 1.1rem;
    border: 1px solid var(--menu-border);
    border-radius: 3rem;
    background: var(--menu-surface);
    font-size: .85rem;
    font-weight: 800;
    letter-spacing: .02em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--menu-text) !important
}
.theme-menu-action-icon {
    flex: 0 0 auto
}
.theme-menu-action:hover,
.theme-menu-action:focus-visible {
    background: var(--menu-active-bg);
    border-color: var(--menu-active-bg);
    color: var(--menu-active-text) !important
}
.theme-menu-action-compact .theme-menu-action-label {
    display: inline
}
@media (max-width: 767.98px) {
    /* Su mobile Raggiungici e Chiamaci mostrano solo l'icona; l'etichetta resta per i lettori di schermo. */
    .theme-menu-action-compact {
        position: relative;
        justify-content: center;
        width: 2.5rem;
        padding: .45rem
    }
    .theme-menu-action-compact .theme-menu-action-label {
        position: absolute;
        width: 1px;
        height: 1px;
        margin: -1px;
        padding: 0;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0
    }
}
/* Conto (cuore): scheda bianca con icona scura, cuore sui piatti, riepilogo con coperto e totale */
/* Doppia classe: la scheda del cuore resta bianca con icona scura in ogni stato e tema, anche se le regole base delle pillole vengono dopo */
.theme-menu-pill.theme-menu-pill-heart,
.theme-menu-pill.theme-menu-pill-heart:hover,
.theme-menu-pill.theme-menu-pill-heart:focus-visible,
.theme-menu-pill.theme-menu-pill-heart.is-active {
    position: relative;
    background: #fff;
    border-color: #fff;
    color: #101014 !important
}
.theme-menu-pill-heart .theme-menu-heart-icon {
    fill: currentColor
}
.theme-menu-pill.theme-menu-pill-heart.is-active {
    box-shadow: 0 0 0 2px var(--menu-text)
}
.theme-menu-pill-count {
    position: absolute;
    top: -.2rem;
    right: -.2rem;
    min-width: 1.2rem;
    height: 1.2rem;
    padding: 0 .3rem;
    border-radius: 1rem;
    background: #d9304f;
    font-size: .7rem;
    font-weight: 800;
    line-height: 1.2rem;
    text-align: center;
    color: #fff
}
.theme-menu-heart {
    flex: 0 0 auto;
    align-self: center;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    margin-left: .5rem;
    padding: 0;
    border: 1px solid var(--menu-border);
    border-radius: 50%;
    background: var(--menu-surface-2);
    color: var(--menu-muted)
}
.theme-menu-heart .theme-menu-heart-icon {
    fill: none
}
.theme-menu-heart[aria-pressed="true"] {
    background: #fff;
    border-color: #fff;
    color: #101014
}
.theme-menu-heart[aria-pressed="true"] .theme-menu-heart-icon {
    fill: currentColor
}
.theme-menu-heart:hover,
.theme-menu-heart:focus-visible {
    color: var(--menu-text)
}
.theme-menu-heart[aria-pressed="true"]:hover,
.theme-menu-heart[aria-pressed="true"]:focus-visible {
    color: #101014
}
.theme-menu-bill-list {
    margin: 0;
    padding: 0;
    list-style: none
}
.theme-menu-bill-row {
    padding: .9rem 0;
    border-bottom: 1px solid var(--menu-border)
}
.theme-menu-bill-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem
}
.theme-menu-bill-sub {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-top: .15rem
}
.theme-menu-bill-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-top: .75rem
}
/* Modifica: btn-outline-secondary di Bootstrap (colori e stati), qui forma e misure; matita + testo */
.theme-menu-bill-edit {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    flex: 0 0 auto;
    padding: .25rem .8rem;
    border-radius: 3rem;
    font-size: .8rem;
    font-weight: 800;
    letter-spacing: .03em;
    text-transform: uppercase
}
.theme-menu-bill-name {
    font-weight: 800;
    overflow-wrap: anywhere
}
.theme-menu-bill-original {
    font-size: .9rem;
    color: var(--menu-muted)
}
.theme-menu-bill-line {
    min-width: 4.5rem;
    font-weight: 800;
    text-align: right;
    white-space: nowrap
}
.theme-menu-stepper {
    display: inline-flex;
    align-items: center;
    gap: .4rem
}
.theme-menu-stepper-button {
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 1px solid var(--menu-border);
    border-radius: 50%;
    background: var(--menu-surface-2);
    font-size: 1.1rem;
    font-weight: 800;
    line-height: 1;
    color: var(--menu-text)
}
.theme-menu-stepper-button:hover,
.theme-menu-stepper-button:focus-visible {
    background: var(--menu-active-bg);
    color: var(--menu-active-text)
}
.theme-menu-stepper-value {
    min-width: 1.6rem;
    font-weight: 800;
    text-align: center
}
.theme-menu-bill-totals {
    margin: 1rem 0 0
}
.theme-menu-bill-totals > div {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .35rem 0
}
.theme-menu-bill-totals dt,
.theme-menu-bill-totals dd {
    margin: 0
}
.theme-menu-bill-totals small {
    color: var(--menu-muted);
    font-weight: 600
}
.theme-menu-bill-totals .is-total {
    margin-top: .4rem;
    padding-top: .75rem;
    border-top: 2px solid var(--menu-surface-2);
    font-size: 1.25rem;
    font-weight: 800
}
.theme-menu-bill-note {
    margin: 1rem 0 0;
    font-size: .85rem;
    color: var(--menu-muted)
}
.theme-menu-bill .theme-menu-reset {
    margin-top: .75rem
}
/* Schede a pillola */
.theme-menu-tabs {
    position: sticky;
    top: 0;
    z-index: 20;
    padding: .75rem 1rem;
    background: color-mix(in srgb, var(--menu-bg) 92%, transparent);
    backdrop-filter: blur(10px)
}
/* Schede: Home, Ricerca e Cuore restano fermi; le altre (da "Piatti del giorno") scorrono in orizzontale (touch e trackpad) */
.theme-menu-tabs-track {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .25rem .1rem
}
.theme-menu-tabs-fixed {
    display: flex;
    flex: 0 0 auto;
    gap: .6rem
}
.theme-menu-tabs-scroll {
    display: flex;
    flex: 1 1 auto;
    gap: .6rem;
    min-width: 0;
    padding: .25rem;
    margin: -.25rem;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none
}
.theme-menu-tabs-scroll::-webkit-scrollbar {
    display: none
}
/* Sfumatura sul lato dove ci sono altre schede (classi messe da menu.js) */
.theme-menu-tabs-scroll.has-more-end {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 2rem), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 2rem), transparent)
}
.theme-menu-tabs-scroll.has-more-start {
    -webkit-mask-image: linear-gradient(to left, #000 calc(100% - 2rem), transparent);
    mask-image: linear-gradient(to left, #000 calc(100% - 2rem), transparent)
}
.theme-menu-tabs-scroll.has-more-start.has-more-end {
    -webkit-mask-image: linear-gradient(to right, transparent, #000 2rem, #000 calc(100% - 2rem), transparent);
    mask-image: linear-gradient(to right, transparent, #000 2rem, #000 calc(100% - 2rem), transparent)
}
.theme-menu-pill {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.75rem;
    padding: .5rem 1.25rem;
    border: 1px solid var(--menu-border);
    border-radius: 3rem;
    background: var(--menu-surface);
    font-size: .95rem;
    font-weight: 800;
    letter-spacing: .02em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--menu-muted) !important;
    transition: background-color .2s, color .2s, box-shadow .2s
}
.theme-menu-pill-icon {
    width: 2.75rem;
    padding: 0
}
.theme-menu-pill:hover,
.theme-menu-pill:focus-visible {
    color: var(--menu-text) !important
}
.theme-menu-pill.is-active {
    background: var(--menu-active-bg);
    border-color: var(--menu-active-bg);
    color: var(--menu-active-text) !important;
    box-shadow: var(--menu-shadow)
}
/* Piatti del giorno: scheda e card in un colore diverso dalle altre */
.theme-menu {
    --menu-daily: #f2b705;
    --menu-daily-text: #1a1400;
    --menu-daily-soft: rgba(242, 183, 5, .12)
}
html[data-menu-theme="light"] .theme-menu {
    --menu-daily: #e0a000;
    --menu-daily-soft: rgba(224, 160, 0, .14)
}
.theme-menu-pill-daily {
    border-color: var(--menu-daily);
    background: var(--menu-daily-soft);
    color: var(--menu-daily) !important
}
.theme-menu-pill-daily:hover,
.theme-menu-pill-daily:focus-visible {
    color: var(--menu-daily-text) !important;
    background: var(--menu-daily)
}
.theme-menu-pill-daily.is-active {
    background: var(--menu-daily);
    border-color: var(--menu-daily);
    color: var(--menu-daily-text) !important;
    box-shadow: 0 .5rem 1.5rem var(--menu-daily-soft)
}
.theme-menu-daily-card {
    border-color: var(--menu-daily);
    background: linear-gradient(180deg, var(--menu-daily-soft), var(--menu-surface) 60%)
}
.theme-menu-theme-toggle {
    position: absolute;
    top: .85rem;
    left: .85rem;
    min-height: 2.4rem;
    width: 2.4rem
}
.theme-menu-icon-sun {
    display: none
}
html[data-menu-theme="light"] .theme-menu-icon-moon {
    display: none
}
html[data-menu-theme="light"] .theme-menu-icon-sun {
    display: block
}

/* Pannelli (con JavaScript ne resta uno solo visibile) */
.theme-menu-content {
    padding: 1.25rem 1rem 0
}
.theme-menu.is-enhanced [data-menu-panel]:not(.is-active) {
    display: none
}
.theme-menu-panel-title {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0
}
.theme-menu-section {
    margin-bottom: 2rem
}
.theme-menu-section-description {
    margin: 0 0 1rem;
    color: var(--menu-muted)
}
.theme-menu-card,
.theme-menu-acc {
    overflow: hidden;
    margin-bottom: .9rem;
    border: 1px solid var(--menu-border);
    border-radius: 1.5rem;
    background: var(--menu-surface)
}
.theme-menu-card {
    padding: .25rem 1.25rem
}

/* Accordion delle categorie */
.theme-menu-acc-summary {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 1.25rem 1.25rem 1.25rem 1.5rem;
    list-style: none;
    cursor: pointer
}
.theme-menu-acc-summary::-webkit-details-marker {
    display: none
}
.theme-menu-acc-summary::before {
    content: "";
    flex: 0 0 .3rem;
    align-self: stretch;
    border-radius: .3rem;
    background: var(--menu-surface-2)
}
.theme-menu-acc-summary:focus-visible {
    outline: 2px solid var(--menu-text);
    outline-offset: -4px;
    border-radius: 1.5rem
}
.theme-menu-acc-summary .theme-menu-section-title {
    flex: 1 1 auto;
    margin: 0;
    font-size: 1.35rem;
    font-weight: 800
}
.theme-menu-acc-count {
    min-width: 2.2rem;
    padding: .2rem .6rem;
    border-radius: 1rem;
    background: var(--menu-surface-2);
    font-size: .9rem;
    font-weight: 800;
    text-align: center;
    color: var(--menu-muted)
}
.theme-menu-acc-chevron {
    flex: 0 0 auto;
    color: var(--menu-muted);
    transition: transform .2s
}
.theme-menu-acc[open] .theme-menu-acc-chevron {
    transform: rotate(180deg)
}
.theme-menu-acc-body {
    padding: 0 1.25rem 1rem
}
.theme-menu-subsection {
    margin-top: 1.25rem
}
.theme-menu-subsection-title {
    margin: 0 0 .25rem;
    padding-bottom: .35rem;
    border-bottom: 2px solid var(--menu-surface-2);
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--menu-muted)
}

/* Piatti */
.theme-menu-items {
    margin: 0;
    padding: 0;
    list-style: none
}
.theme-menu-item {
    display: flex;
    flex-direction: column;
    gap: .75rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--menu-border)
}
.theme-menu-item:last-child {
    border-bottom: 0
}
.theme-menu-item-media {
    display: block;
    margin: 0 -1.25rem;
    width: auto;
    overflow: hidden
}
.theme-menu-item.has-image {
    padding-top: 0
}
.theme-menu-item.has-image:first-child .theme-menu-item-media {
    margin-top: -.25rem
}
.theme-menu-item-media img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover
}
.theme-menu-item-body {
    width: 100%;
    min-width: 0
}
.theme-menu-item-head {
    display: flex;
    align-items: baseline;
    gap: .6rem
}
.theme-menu-item-name {
    flex: 0 1 auto;
    margin: 0;
    font-size: 1.1rem;
    font-weight: 800;
    line-height: 1.25
}
.theme-menu-item-leader {
    flex: 1 1 1rem;
    min-width: 1rem;
    border-bottom: 2px dotted var(--menu-dot);
    transform: translateY(-.25rem)
}
.theme-menu-item-price {
    flex: 0 0 auto;
    font-size: 1.1rem;
    font-weight: 800;
    white-space: nowrap
}
.theme-menu-item-badge {
    margin-left: auto;
    padding: .1rem .65rem;
    border-radius: 1rem;
    background: var(--menu-surface-2);
    font-size: .75rem;
    font-weight: 700;
    color: var(--menu-muted)
}
.theme-menu-item-description {
    margin: .3rem 0 0;
    font-size: .95rem;
    line-height: 1.45;
    color: var(--menu-muted)
}
.theme-menu-item-tags,
.theme-menu-item-allergens {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin: .6rem 0 0;
    padding: 0;
    list-style: none
}
.theme-menu-item-tag {
    padding: .15rem .65rem;
    border-radius: 1rem;
    background: #f2c200;
    font-size: .75rem;
    font-weight: 800;
    color: #1a1400
}
.theme-menu-item-extras {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .25rem .75rem;
    margin-top: .6rem;
    font-size: .85rem
}
.theme-menu-item-extras-label {
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    font-size: .72rem;
    color: var(--menu-muted)
}
.theme-menu-item-extras ul {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .9rem;
    margin: 0;
    padding: 0;
    list-style: none
}
.theme-menu-item-extra-price {
    font-weight: 800
}
/* Modale di modifica del piatto */
.theme-menu-modal {
    width: min(34rem, calc(100% - 1.5rem));
    max-height: calc(100% - 2rem);
    padding: 0;
    border: 1px solid var(--menu-border);
    border-radius: 1.5rem;
    background: var(--menu-surface);
    color: var(--menu-text)
}
.theme-menu-modal::backdrop {
    background: rgba(0, 0, 0, .6)
}
.theme-menu-modal-box {
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 2rem)
}
.theme-menu-modal-head {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.25rem 1.25rem .75rem 1.5rem
}
.theme-menu-modal-title {
    flex: 1 1 auto;
    margin: 0;
    font-size: 1.3rem;
    font-weight: 800
}
.theme-menu-modal-close {
    width: 2.25rem;
    height: 2.25rem;
    border: 0;
    border-radius: 50%;
    background: var(--menu-surface-2);
    font-size: 1.4rem;
    line-height: 1;
    color: var(--menu-text)
}
.theme-menu-modal-body {
    overflow-y: auto;
    padding: 0 1.5rem 1rem
}
.theme-menu-modal-heading {
    margin: 1rem 0 .25rem;
    font-size: .8rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--menu-muted)
}
.theme-menu-modal-hint {
    margin: 0 0 .5rem;
    font-size: .85rem;
    color: var(--menu-muted)
}
.theme-menu-modal-list {
    margin: 0;
    padding: 0;
    list-style: none
}
.theme-menu-modal-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem 0;
    border-bottom: 1px solid var(--menu-border)
}
.theme-menu-modal-row:last-child {
    border-bottom: 0
}
.theme-menu-modal-choice {
    display: flex;
    align-items: center;
    gap: .6rem;
    cursor: pointer
}
.theme-menu-modal-choice input {
    width: 1.25rem;
    height: 1.25rem;
    margin: 0;
    accent-color: var(--menu-active-bg);
    cursor: pointer
}
.theme-menu-modal-choice input:focus-visible {
    outline: 2px solid var(--menu-text);
    outline-offset: 2px
}
.theme-menu-modal-price {
    font-weight: 800;
    white-space: nowrap
}
.theme-menu-modal-foot {
    background: transparent;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem;
    padding: 1rem 1.5rem 1.25rem;
    border-top: 1px solid var(--menu-border)
}
.theme-menu-modal-total {
    flex: 1 1 100%;
    display: flex;
    justify-content: space-between;
    margin: 0;
    font-size: 1.05rem
}
/* Ordine da asporto */
.theme-menu-takeaway {
    display: block;
    width: 100%;
    min-height: 3rem;
    margin-top: 1rem;
    padding: .6rem 1.25rem;
    border: 1px solid var(--menu-active-bg);
    border-radius: 3rem;
    background: var(--menu-active-bg);
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--menu-active-text)
}
.theme-menu-takeaway:hover,
.theme-menu-takeaway:focus-visible {
    box-shadow: var(--menu-shadow)
}
.theme-menu-order-summary {
    margin: 0 0 .5rem;
    padding: 0;
    list-style: none
}
.theme-menu-order-line {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .5rem 0;
    border-bottom: 1px solid var(--menu-border)
}
.theme-menu-order-line-text {
    display: flex;
    flex-direction: column;
    min-width: 0
}
.theme-menu-order-line-details {
    font-size: .85rem;
    color: var(--menu-muted)
}
.theme-menu-order-line-price {
    font-weight: 800;
    white-space: nowrap
}
.theme-menu-order-total {
    margin: .5rem 0 1rem
}
.theme-menu-order-fee {
    margin: .5rem 0 0
}
.theme-menu-order-types {
    display: flex;
    flex-direction: column;
    gap: .6rem
}
.theme-menu-order-type {
    border: 1px solid var(--menu-border);
    border-radius: 1rem;
    overflow: hidden
}
.theme-menu-order-type.is-open {
    border-color: var(--menu-text)
}
.theme-menu-order-type-title {
    margin: 0;
    font-size: 1rem
}
.theme-menu-order-type-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    min-height: 3rem;
    padding: .6rem 1rem;
    border: 0;
    background: transparent;
    font-weight: 800;
    letter-spacing: .04em;
    text-align: left;
    text-transform: uppercase;
    color: var(--menu-text)
}
.theme-menu-order-type-head:focus-visible {
    outline: 2px solid var(--menu-text);
    outline-offset: -2px
}
.theme-menu-order-type-chevron {
    width: .6rem;
    height: .6rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform .2s
}
.theme-menu-order-type.is-open .theme-menu-order-type-chevron {
    transform: rotate(-135deg)
}
.theme-menu-order-type-panel {
    padding: 0 1rem 1rem
}
.theme-menu-order-table-text {
    margin: 0;
    font-size: 1rem
}
.theme-menu-field select {
    width: 100%;
    padding: .65rem .9rem;
    border: 1px solid var(--menu-border);
    border-radius: 1rem;
    background: var(--menu-bg);
    font-size: 1rem;
    color: var(--menu-text)
}
.theme-menu-field select[aria-invalid="true"] {
    border-color: #dc3545
}
.theme-menu-order-wait {
    margin: 0 0 1rem;
    padding: .7rem .9rem;
    border: 1px solid var(--menu-daily);
    border-radius: 1rem;
    background: var(--menu-daily-soft);
    font-size: .92rem
}
.theme-menu-order-wait:empty {
    display: none
}
.theme-menu-field {
    margin-bottom: .8rem
}
.theme-menu-field label {
    display: block;
    margin-bottom: .25rem;
    font-size: .85rem;
    font-weight: 700;
    color: var(--menu-muted)
}
.theme-menu-field input,
.theme-menu-field textarea {
    width: 100%;
    padding: .65rem .9rem;
    border: 1px solid var(--menu-border);
    border-radius: 1rem;
    background: var(--menu-bg);
    font-size: 1rem;
    color: var(--menu-text)
}
.theme-menu-field input:focus-visible,
.theme-menu-field textarea:focus-visible {
    outline: 2px solid var(--menu-text);
    outline-offset: 2px
}
.theme-menu-field input[aria-invalid="true"] {
    border-color: #dc3545
}
.theme-menu-field-hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden
}
.theme-menu-field-check {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    margin: 0 0 .8rem;
    font-size: .9rem
}
.theme-menu-field-check input {
    flex: 0 0 auto;
    width: 1.25rem;
    height: 1.25rem;
    margin-top: .1rem;
    accent-color: var(--menu-active-bg)
}
.theme-menu-order-code {
    margin: 0 0 .5rem;
    font-size: 1.5rem;
    font-weight: 800;
    letter-spacing: .08em
}
.theme-menu-order-feedback {
    min-height: 1.4rem;
    margin: .5rem 0;
    font-size: .9rem;
    font-weight: 700;
    color: #dc3545
}
.theme-menu-order-submit,
.theme-menu-order-done-close {
    width: 100%
}
.theme-menu-modal-remove,
.theme-menu-modal-apply {
    min-height: 2.75rem;
    padding: .5rem 1.25rem;
    border-radius: 3rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .03em
}
/* Rimuovi: stile btn-outline-danger di Bootstrap (colori e stati), qui solo forma e misure */
.theme-menu-modal-remove {
    flex: 0 0 auto
}
.theme-menu-modal-apply {
    flex: 1 1 auto;
    border: 1px solid var(--menu-active-bg);
    background: var(--menu-active-bg);
    color: var(--menu-active-text)
}
/* Ingredienti e aggiunte nel conto: list-group di Bootstrap con i colori del tema (chiaro/scuro), una riga ciascuno */
.theme-menu-bill-ingredients {
    --bs-list-group-bg: var(--menu-surface-2);
    --bs-list-group-color: var(--menu-text);
    --bs-list-group-border-color: var(--menu-border);
    --bs-list-group-border-radius: .9rem;
    margin: .6rem 0 0;
    padding: 0
}
.theme-menu-bill-ingredient {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    min-height: 2.6rem;
    padding: .45rem .8rem;
    font-size: .9rem
}
.theme-menu-bill-ingredient-label {
    display: flex;
    align-items: center;
    gap: .6rem;
    min-width: 0;
    margin: 0;
    cursor: pointer
}
.theme-menu-bill-ingredient-label input {
    flex: 0 0 auto;
    width: 1.1rem;
    height: 1.1rem;
    margin: 0;
    accent-color: var(--menu-active-bg);
    cursor: pointer
}
.theme-menu-bill-ingredient-label input:focus-visible {
    outline: 2px solid var(--menu-text);
    outline-offset: 2px
}
.theme-menu-bill-ingredient-name {
    overflow-wrap: anywhere
}
.theme-menu-bill-ingredient.is-removed .theme-menu-bill-ingredient-name {
    text-decoration: line-through;
    color: var(--menu-muted)
}
.theme-menu-bill-ingredient-price {
    font-weight: 800;
    white-space: nowrap
}
.theme-menu-item-allergen {
    padding: .3rem .8rem;
    border: 1px solid var(--menu-border);
    border-radius: 1rem;
    background: var(--menu-bg);
    font-size: .8rem;
    font-weight: 600;
    color: var(--menu-text)
}
.theme-menu-item.is-unavailable .theme-menu-item-media,
.theme-menu-item.is-unavailable .theme-menu-item-name,
.theme-menu-item.is-unavailable .theme-menu-item-description {
    opacity: .5
}

/* Colori dei badge dei tag (anche nei chip del filtro) */
.theme-menu-badge-vegan { background: #1f9d55; color: #fff }
.theme-menu-badge-vegetarian { background: #7cb518; color: #101400 }
.theme-menu-badge-gluten_free { background: #f2c200; color: #1a1400 }
.theme-menu-badge-lactose_free { background: #1d9bd1; color: #fff }
.theme-menu-badge-spicy { background: #d9304f; color: #fff }
.theme-menu-badge-house_special { background: #f2c200; color: #1a1400 }
.theme-menu-badge-organic { background: #14958f; color: #fff }

/* Ricerca e filtri (guida alle icone) */
.theme-menu-search-panel {
    padding: 1.25rem;
    border: 1px solid var(--menu-border);
    border-radius: 1.5rem;
    background: var(--menu-surface)
}
.theme-menu-search-title {
    margin: 0 0 .75rem;
    font-size: 1.35rem;
    font-weight: 800
}
.theme-menu-search-input {
    width: 100%;
    padding: .8rem 1.25rem;
    border: 1px solid var(--menu-border);
    border-radius: 2rem;
    background: var(--menu-bg);
    font-size: 1rem;
    color: var(--menu-text)
}
.theme-menu-search-input::placeholder {
    color: var(--menu-muted)
}
.theme-menu-search-input:focus-visible {
    outline: 2px solid var(--menu-text);
    outline-offset: 2px
}
.theme-menu-filter {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin: 1rem 0 0;
    padding: 0;
    border: 0
}
.theme-menu-filter-legend {
    float: none;
    width: 100%;
    margin: 0;
    padding: 0;
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--menu-muted)
}
.theme-menu-chip {
    position: relative;
    cursor: pointer
}
.theme-menu-chip input {
    position: absolute;
    opacity: 0;
    pointer-events: none
}
.theme-menu-chip span {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .4rem .9rem;
    border: 1px solid var(--menu-border);
    border-radius: 1rem;
    background: var(--menu-bg);
    font-size: .85rem;
    font-weight: 700;
    color: var(--menu-text);
    transition: box-shadow .2s, opacity .2s
}
.theme-menu-chip span[class*="theme-menu-badge-"] {
    border-color: transparent
}
.theme-menu-chip-count {
    min-width: 1.4rem;
    padding: 0 .35rem;
    border-radius: 1rem;
    background: rgba(0, 0, 0, .25);
    font-size: .75rem;
    text-align: center
}
.theme-menu-chip input:not(:checked) + span[class*="theme-menu-badge-"] {
    opacity: .75
}
.theme-menu-chip input:checked + span {
    box-shadow: 0 0 0 2px var(--menu-text)
}
.theme-menu-chip-exclude input:checked + span {
    background: #7a2a2a;
    border-color: #b84a4a;
    color: #fff;
    text-decoration: line-through
}
.theme-menu-chip input:focus-visible + span {
    outline: 2px solid var(--menu-text);
    outline-offset: 2px
}
.theme-menu-toolbar-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 1.75rem;
    margin-top: 1rem
}
.theme-menu-results {
    margin: 0;
    font-size: .9rem;
    color: var(--menu-muted)
}
.theme-menu-reset {
    padding: 0;
    border: 0;
    background: none;
    font-size: .85rem;
    text-decoration: underline;
    color: var(--menu-text)
}
.theme-menu-results-list .theme-menu-item-path {
    margin: 0 0 .15rem;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--menu-muted)
}
.theme-menu-empty {
    padding: 1.5rem 0;
    text-align: center;
    color: var(--menu-muted)
}

/* Nota finale */
.theme-menu-note {
    background: transparent;
    padding: 1.5rem 1rem 0;
    text-align: center;
    font-size: .85rem;
    color: var(--menu-muted)
}
.theme-menu-back {
    text-decoration: underline
}
@media (min-width: 768px) {
    .theme-menu {
        max-width: 44rem;
        margin: 0 auto
    }
}
@media (prefers-reduced-motion: reduce) {
    .theme-menu-pill,
    .theme-menu-acc-chevron,
    .theme-menu-chip span {
        transition: none
    }
}

/* ==========================================================================
   Gallerie
   Miniature della griglia ritagliate quadrate (scelta di progetto: niente
   proporzioni configurabili); il carosello resta a proporzioni originali.
   ========================================================================== */
.gallery .gallery-thumb:not(.gallery-carousel-image) {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1 / 1;
    object-fit: cover
}
.gallery-carousel-image {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain
}
.qk-gallery-carousel-inner {
    background: #212529
}

/* ==========================================================================
   Sorgenteco - identita' del sito (palette, pulsanti, componenti dei contenuti)
   Portata dal vecchio tema; le classi sono usate dai contenuti delle pagine.
   ========================================================================== */
@font-face {
    font-family: 'Manrope';
    src: url('../fonts/Manrope/Manrope-VariableFont_wght.woff2') format('woff2');
    font-weight: 200 800;
    font-style: normal;
    font-display: swap;
}
:root {
    --app-primary: #12182c;
    --app-primary-rgb: 18, 24, 44;

    --app-secondary: #9cddcd;
    --app-secondary-rgb: 156, 221, 205;

    --app-info: #98aba3;
    --app-info-rgb: 152, 171, 163;

    --app-white: #ffffff;
    --app-paper: #fbffff;
    --app-soft: #f4fbfb;
    --app-line: rgba(var(--app-info-rgb), .34);
    --app-muted: #6e7185;

    --app-radius-sm: 16px;
    --app-radius: 26px;
    --app-radius-lg: 38px;

    --app-shadow: 0 24px 70px rgba(139, 207, 192, .45);
    --app-shadow-soft: 0 14px 40px rgba(139, 207, 192, .32);

    --app-field-radius: var(--bs-border-radius-xl);

    --bs-primary: var(--app-primary);
    --bs-primary-rgb: var(--app-primary-rgb);
    --bs-secondary: var(--app-secondary);
    --bs-secondary-rgb: var(--app-secondary-rgb);
    --bs-info: var(--app-info);
    --bs-info-rgb: var(--app-info-rgb);

    --app-btn-padding-y: 1rem;
    --app-btn-padding-x: 3rem;
    --app-btn-navbar-padding-x: 1.25rem;
}

* {
    box-sizing: border-box;
}
html, body {
    font-family: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
    font-weight: 400;
    color: var(--app-primary);
    background: var(--app-paper) !important;
}
.site-header-nav { text-transform: none; }
.site-header-nav .nav-link { font-weight: 600; }
/* Buttons
   ========================================================================== */
.btn {
    padding: var(--app-btn-padding-y) var(--app-btn-padding-x);
    border-radius: var(--app-field-radius) !important;
    box-shadow: var(--bs-box-shadow-sm);
    font-weight: 600 !important;
    line-height: 1.5;
}

.btn:hover {
    transform: translateY(-2px);
}

.btn-app-primary,
.btn--primary,
.btn--dark {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--app-primary);
    --bs-btn-border-color: var(--app-primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #0d1222;
    --bs-btn-hover-border-color: #0d1222;
    --bs-btn-focus-shadow-rgb: var(--app-primary-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #090d19;
    --bs-btn-active-border-color: #090d19;
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--app-primary);
    --bs-btn-disabled-border-color: var(--app-primary);
}

.btn-app-secondary {
    --bs-btn-color: var(--app-primary);
    --bs-btn-bg: var(--app-secondary);
    --bs-btn-border-color: var(--app-secondary);
    --bs-btn-hover-color: var(--app-primary);
    --bs-btn-hover-bg: #85d2bf;
    --bs-btn-hover-border-color: #85d2bf;
    --bs-btn-focus-shadow-rgb: var(--app-secondary-rgb);
    --bs-btn-active-color: var(--app-primary);
    --bs-btn-active-bg: #70c7b0;
    --bs-btn-active-border-color: #70c7b0;
    --bs-btn-disabled-color: var(--app-primary);
    --bs-btn-disabled-bg: var(--app-secondary);
    --bs-btn-disabled-border-color: var(--app-secondary);
}

.btn-app-info {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--app-info);
    --bs-btn-border-color: var(--app-info);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #849991;
    --bs-btn-hover-border-color: #849991;
    --bs-btn-focus-shadow-rgb: var(--app-info-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #748880;
    --bs-btn-active-border-color: #748880;
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--app-info);
    --bs-btn-disabled-border-color: var(--app-info);
}

.btn-outline-app-primary {
    --bs-btn-color: var(--app-primary);
    --bs-btn-border-color: var(--app-primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--app-primary);
    --bs-btn-hover-border-color: var(--app-primary);
    --bs-btn-focus-shadow-rgb: var(--app-primary-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--app-primary);
    --bs-btn-active-border-color: var(--app-primary);
    --bs-btn-disabled-color: var(--app-primary);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--app-primary);
}

.btn-outline-app-secondary {
    --bs-btn-color: var(--app-primary);
    --bs-btn-border-color: var(--app-secondary);
    --bs-btn-hover-color: var(--app-primary);
    --bs-btn-hover-bg: var(--app-secondary);
    --bs-btn-hover-border-color: var(--app-secondary);
    --bs-btn-focus-shadow-rgb: var(--app-secondary-rgb);
    --bs-btn-active-color: var(--app-primary);
    --bs-btn-active-bg: var(--app-secondary);
    --bs-btn-active-border-color: var(--app-secondary);
    --bs-btn-disabled-color: var(--app-secondary);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--app-secondary);
}

.btn-outline-app-info,
.btn--ghost {
    --bs-btn-color: var(--app-info);
    --bs-btn-border-color: var(--app-info);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--app-info);
    --bs-btn-hover-border-color: var(--app-info);
    --bs-btn-focus-shadow-rgb: var(--app-info-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--app-info);
    --bs-btn-active-border-color: var(--app-info);
    --bs-btn-disabled-color: var(--app-info);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--app-info);
}

.btn--ghost {
    --bs-btn-color: var(--app-primary);
}

.bg-app-primary {
    background-color: var(--app-primary) !important;
}

.bg-app-secondary {
    background-color: var(--app-secondary) !important;
}

.bg-app-info {
    background-color: var(--app-info) !important;
}

.text-app-primary {
    color: var(--app-primary) !important;
}

.text-app-secondary {
    color: var(--app-secondary) !important;
}

.text-app-info {
    color: var(--app-info) !important;
}

.logo-watermark,
.content figure:has(img),
.content p:has(> img),
.image-stack__main,
.hero-product,
.product-card__visual,
.team-card figure,
.office-strip__image,
.cert-logo {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

/* Filigrana del logo sulle immagini (logo in assets/images/card-placeholder.webp) */
.logo-watermark::after,
.content figure:has(img)::after,
.content p:has(> img)::after,
.image-stack__main::after,
.hero-product::after,
.product-card__visual::after,
.team-card figure::after,
.office-strip__image::after,
.cert-logo::after {
    content: "";
    display: block;
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 2;
    width: min(42%, 220px);
    height: 48px;
    background: url('../images/card-placeholder.webp') center / contain no-repeat;
    opacity: .25;
    pointer-events: none;
    transform: translate(-50%, -50%);
}

.header-topbar {
    color: var(--app-primary);
    background: rgba(var(--app-secondary-rgb), .35);
    font-size: .88rem;
    font-weight: 600;
}

.header-topbar__inner {
    min-height: 38px;
    padding-block: .35rem;
}

.header-topbar__links {
    gap: .65rem;
}

.header-topbar a {
    color: inherit;
    transition: color .18s ease;
}

.header-topbar a:hover,
.header-topbar a:focus {
    color: var(--app-primary);
}

.header-topbar__social {
    gap: .35rem;
}

.header-topbar__social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    color: var(--app-primary);
    background: rgba(255, 255, 255, .45);
    transition: background .18s ease, color .18s ease, transform .18s ease;
}

.header-topbar__social a:hover,
.header-topbar__social a:focus {
    color: var(--app-primary);
    background: rgba(255, 255, 255, .72);
    transform: translateY(-1px);
}

.btn {
    border-radius: 999px;
    font-weight: 950;
    letter-spacing: -.01em;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease;
}

.btn:hover {
    transform: translateY(-2px);
}

.btn--primary,
.btn--dark {
    box-shadow: 0 18px 38px rgba(var(--app-primary-rgb), .24);
}

.btn--ghost {
    background: var(--app-white);
}

.hero,
.company-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background:
        radial-gradient(circle at 12% 20%, rgba(var(--app-secondary-rgb), .34), transparent 28%),
        radial-gradient(circle at 86% 12%, rgba(255, 255, 255, .16), transparent 22%),
        linear-gradient(135deg, var(--app-primary) 0%, #1e2542 50%, #102f3c 100%);
    color: var(--app-white);
}

.hero::before,
.company-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -2;
    background-image:
        linear-gradient(rgba(255, 255, 255, .04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .04) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(180deg, #000, transparent 78%);
}

.hero::after {
    content: "";
    position: absolute;
    z-index: -1;
    right: -18vw;
    bottom: -22vw;
    width: 58vw;
    height: 58vw;
    border-radius: 50%;
    background: rgba(var(--app-secondary-rgb), .20);
    filter: blur(10px);
}

.hero h1,
.company-hero h1 {
    max-width: 920px;
    line-height: 1;
    letter-spacing: -.05em;
}

.hero h1 span,
.company-hero h1 span {
    color: var(--app-secondary);
    text-shadow: 0 0 34px rgba(var(--app-secondary-rgb), .22);
}

.hero__lead {
    max-width: 720px;
    color: rgba(255, 255, 255, .78);
}

.eyebrow {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    border: 1px solid rgba(var(--app-secondary-rgb), .34);
    border-radius: 999px;
    background:
        radial-gradient(circle at 95% 8%, rgba(var(--app-secondary-rgb), .40), transparent 32%),
        linear-gradient(135deg, var(--app-primary), #101226);
    color: var(--app-secondary);
    font-weight: 950;
    letter-spacing: .11em;
    text-transform: uppercase;
}

.eyebrow::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--app-secondary);
    box-shadow: 0 0 0 6px rgba(var(--app-secondary-rgb), .14);
}

.trust-card,
.stat-card,
.proof-card {
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 20px;
    background: rgba(255, 255, 255, .06);
}

.trust-card strong,
.stat-card strong,
.proof-card strong {
    display: block;
    color: var(--app-secondary);
    line-height: 1;
}

.trust-card span,
.stat-card span,
.proof-card span {
    display: block;
    color: rgba(255, 255, 255, .74);
    font-weight: 800;
}

.hero-showcase,
.hero-visual {
    position: relative;
    min-height: 560px;
}

.hero-product,
.hero-photo,
.contact-hero-card {
    position: relative;
    overflow: hidden;
    height: 560px;
    border-radius: 44px;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, .94), rgba(255, 255, 255, .78)),
        radial-gradient(circle at 60% 20%, rgba(var(--app-secondary-rgb), .34), transparent 42%);
    border: 1px solid rgba(255, 255, 255, .38);
    box-shadow: 0 34px 100px rgba(0, 0, 0, .32);
}

.hero-product img,
.hero-photo img,
.contact-hero-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.hero-badge {
    position: absolute;
    left: -12px;
    top: 42px;
    z-index: 3;
    max-width: 220px;
    border-radius: 24px;
    background: var(--app-secondary);
    color: var(--app-primary);
    box-shadow: var(--app-shadow);
    font-weight: 950;
}

.floating-card {
    position: absolute;
    left: -12px;
    bottom: 34px;
    z-index: 3;
    max-width: 330px;
    border-radius: 24px;
    background: var(--app-secondary);
    color: var(--app-primary);
    box-shadow: var(--app-shadow);
    font-weight: 950;
}

.hero-panel {
    position: absolute;
    right: -14px;
    bottom: 28px;
    width: min(310px, 86%);
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: 28px;
    background: rgba(var(--app-primary-rgb), .86);
    color: var(--app-white);
    box-shadow: var(--app-shadow);
    backdrop-filter: blur(14px);
}

.hero-panel strong,
.floating-card strong {
    display: block;
    color: var(--app-secondary);
}

.hero-panel p {
    color: rgba(255, 255, 255, .78);
}

.quick-search {
    position: relative;
    z-index: 2;
    margin-top: -54px;
}

.quick-search__box {
    border: 1px solid rgba(var(--app-primary-rgb), .08);
    border-radius: 28px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--app-shadow);
    backdrop-filter: blur(16px);
}

.quick-field {
    border-radius: 18px;
    background: var(--app-soft);
    border: 1px solid var(--app-line);
}

.quick-field small {
    color: var(--app-muted);
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.quick-field b {
    color: var(--app-primary);
}

.section-kicker {
    display: inline-block;
    color: var(--app-info);
    font-weight: 950;
    letter-spacing: .12em;
    text-transform: uppercase;
}

section h2,
.section-head h2,
.panel h2,
.content-block h2,
.cta h2,
.form-copy h2,
.office-strip__text h2,
.cert-box h2 {
    color: var(--app-primary);
    line-height: 1;
    letter-spacing: -.06em;
    font-weight: 700;
}

.section-head p,
.content-block p,
.product-card p,
.solution-card p,
.value-card p,
.team-card p,
.timeline-card p,
.review-card p,
.contact-method p,
.contact-method span,
.faq-item p,
.form-copy p {
    color: var(--app-muted);
}

.product-card,
.solution-card,
.value-card,
.team-card,
.timeline-card,
.review-card,
.contact-method,
.service-step,
.faq-card,
.faq-item,
.content-list article,
.benefit-card {
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    border-radius: var(--app-radius-lg);
    background: var(--app-white);
    border: 1px solid var(--app-line);
    box-shadow: var(--app-shadow-soft);
}

.product-card,
.solution-card {
    min-height: 100%;
    transition: transform .18s ease, box-shadow .18s ease;
}

.product-card:hover,
.solution-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--app-shadow);
}

.product-card__visual,
.team-card figure,
.office-strip__image,
.cert-logo {
    display: grid;
    place-items: center;
    background:
        radial-gradient(circle at 78% 18%, rgba(var(--app-secondary-rgb), .24), transparent 30%),
        linear-gradient(180deg, rgba(var(--app-secondary-rgb), .22), #fff);
    border-bottom: 1px solid var(--app-line);
}

.product-card__visual {
    min-height: 230px;
}

.product-card__visual img {
    width: 100%;
    height: 230px;
    object-fit: contain;
    padding: 30px;
}

.product-icon,
.content-list b,
.service-step b,
.contact-method b {
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, var(--app-primary), #202845);
    color: var(--app-secondary);
    font-weight: 950;
    box-shadow: 0 22px 42px rgba(var(--app-primary-rgb), .18);
}

.product-icon {
    width: 112px;
    height: 112px;
    border-radius: 34px;
    font-size: 46px;
}

.content-list b,
.contact-method b {
    width: 50px;
    height: 50px;
    border-radius: 17px;
}

.service-step b {
    width: 54px;
    height: 54px;
    border-radius: 18px;
}

.tag,
.seo-pill,
.pill-list span {
    display: inline-flex;
    width: fit-content;
    border-radius: 999px;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.tag {
    background: var(--app-primary);
    color: var(--app-secondary);
}

.seo-pill,
.pill-list span {
    background: var(--app-white);
    border: 1px solid var(--app-line);
    color: var(--app-primary);
}

.product-card h2,
.product-card h3,
.solution-card h3,
.value-card h3,
.team-card h3,
.timeline-card h3,
.contact-method h3,
.faq-item strong {
    color: var(--app-primary);
    line-height: 1.04;
    letter-spacing: -.045em;
}

.product-card a,
.solution-card a {
    color: var(--app-info);
    font-weight: 950;
}

.dark-section,
.office-strip,
.cert-box {
    overflow: hidden;
    background:
        radial-gradient(circle at 82% 10%, rgba(var(--app-secondary-rgb), .24), transparent 34%),
        linear-gradient(135deg, var(--app-primary), #202845);
    color: var(--app-white);
}

.dark-section .section-kicker,
.dark-section .section-head h2,
.dark-panel h2,
.office-strip__text h2,
.cert-box h2,
.cta h2 {
    color: var(--app-white);
}

.dark-section .section-head p,
.dark-panel p,
.office-strip__text p,
.cert-box p,
.cta p {
    color: rgba(255, 255, 255, .76);
}

.panel,
.form-box {
    border-radius: var(--app-radius-lg);
    background: var(--app-white);
    border: 1px solid var(--app-line);
    box-shadow: var(--app-shadow);
}

.dark-panel {
    color: var(--app-white);
    background: rgba(255, 255, 255, .07);
    border: 1px solid rgba(255, 255, 255, .14);
}

.checks {
    list-style: none;
}

.checks li {
    display: flex;
    align-items: flex-start;
    color: inherit;
    font-weight: 700;
}

.checks li::before {
    content: "✓";
    flex: 0 0 26px;
    width: 26px;
    height: 26px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--app-secondary);
    color: var(--app-primary);
    font-weight: 950;
}

.content-list article {
    align-items: start;
    border-radius: 22px;
}

.content-list strong {
    display: block;
    color: var(--app-primary);
}

.content-list span {
    color: var(--app-muted);
}

.image-stack {
    position: relative;
    min-height: 0;
}

.image-stack__main {
    display: grid;
    place-items: center;
    width: 100%;
    height: auto;
    aspect-ratio: 1 / 1;
    container-type: inline-size;
    overflow: hidden;
    border-radius: 44px;
    /*background: linear-gradient(180deg, rgba(var(--app-secondary-rgb), .22), #fff);*/
    border: 1px solid var(--app-line);
    box-shadow: var(--app-shadow);
}

.image-stack__main > img {
    display: block;
    width: auto !important;
    height: auto !important;
    min-width: 0;
    min-height: 0;
    max-width: calc(100cqw - 6rem) !important;
    max-height: calc(100cqw - 6rem) !important;
    padding: 0 !important;
    margin: auto;
    object-fit: contain !important;
    object-position: center;
}

.mixer-gallery__item {
    height: auto;
    aspect-ratio: 1 / 1;
}

/*
 * Le gallerie secondarie seguono lo stesso formato del box principale:
 * dimensioni uniformi e prodotto sempre interamente visibile.
 */
.image-stack__main.mixer-gallery__item {
    display: grid;
    place-items: center;
    height: auto;
    min-height: 0;
    aspect-ratio: 1 / 1;
    overflow: hidden;
}

.image-stack__main.mixer-gallery__item > img {
    width: auto !important;
    height: auto !important;
    min-width: 0;
    min-height: 0;
    max-width: calc(100cqw - 6rem) !important;
    max-height: calc(100cqw - 6rem) !important;
    padding: 0 !important;
    margin: auto;
    object-fit: contain !important;
}

.image-stack__main.mixer-gallery__item > a {
    display: grid !important;
    place-items: center;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 1.5rem 1.5rem 3.5rem !important;
}

.image-stack__main.mixer-gallery__item > a img {
    display: block;
    width: auto !important;
    height: auto !important;
    min-width: 0;
    min-height: 0;
    max-width: calc(100cqw - 3rem) !important;
    max-height: calc(100cqw - 5rem) !important;
    padding: 0 !important;
    margin: auto;
    object-fit: contain !important;
    object-position: center;
}

.mixer-gallery__link {
    display: block;
    width: 100%;
    height: auto;
    padding: 1.5rem;
    cursor: zoom-in;
}

/*
 * Le immagini dei miscelatori hanno proporzioni molto diverse (verticali,
 * quadrate e orizzontali). Mantiene sempre visibile l'intero prodotto nelle
 * pagine di dettaglio, come nelle card delle relative sottocategorie.
 */
.mixer-gallery__link img {
    display: block;
    width: 100% !important;
    height: auto !important;
    max-width: 100%;
    margin: auto;
}

.mixer-gallery__link:focus-visible {
    outline: 3px solid var(--app-info);
    outline-offset: -6px;
    border-radius: inherit;
}

@media (max-width: 575.98px) {
    .mixer-gallery__link {
        padding: 1rem;
    }

    .image-stack__main > img,
    .image-stack__main.mixer-gallery__item > img {
        max-width: calc(100cqw - 3rem) !important;
        max-height: calc(100cqw - 3rem) !important;
    }

    .image-stack__main.mixer-gallery__item > a {
        padding: 1rem 1rem 3.25rem !important;
    }
}

.image-stack__mini {
    position: absolute;
    right: -20px;
    bottom: 8px;
    width: 270px;
    overflow: hidden;
    border: 10px solid var(--app-white);
    border-radius: 34px;
    background: var(--app-white);
    box-shadow: var(--app-shadow);
}

.image-stack__mini img,
.team-card img,
.office-strip__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.image-stack__mini img {
    height: 190px;
}

.benefits,
.seo-local {
    background: var(--app-soft);
    border-block: 1px solid var(--app-line);
}

.office-strip,
.cert-box,
.seo-box,
.map-card {
    border-radius: 42px;
    box-shadow: var(--app-shadow);
}

.office-strip__image {
    overflow: hidden;
    min-height: 280px;
    border-radius: 28px;
}

.office-strip__text {
    align-self: center;
}

.cta__box {
    position: relative;
    overflow: hidden;
    align-items: center;
    border-radius: 46px;
    background:
        radial-gradient(circle at 95% 8%, rgba(var(--app-secondary-rgb), .35), transparent 34%),
        linear-gradient(135deg, var(--app-info) 0%, #85d2bf 45%, var(--app-secondary) 100%);
    color: var(--app-white);
    box-shadow: var(--app-shadow);
}

.contact-card {
    border-radius: 30px;
    background:
        radial-gradient(circle at 95% 8%, rgba(var(--app-secondary-rgb), .40), transparent 32%),
        linear-gradient(135deg, var(--app-primary), #101226);
    border: 1px solid rgba(255, 255, 255, .16);
}

.contact-card h3,
.contact-card a,
.contact-card span {
    color: rgba(255, 255, 255, .88);
}

.contact-card a,
.contact-card span {
    display: block;
    font-weight: 700;
}

/* Page-specific components */
.timeline-card::before {
    content: attr(data-year);
    position: absolute;
    right: 18px;
    top: 10px;
    font-size: clamp(3rem, 8vw, 6rem);
    line-height: 1;
    font-weight: 950;
    color: rgba(var(--app-secondary-rgb), .18);
    letter-spacing: -.08em;
}

.cert-logo {
    min-height: 220px;
    border-radius: 28px;
    background: var(--app-white);
}

.cert-logo img {
    max-height: 140px;
    width: auto;
}

.map-card {
    overflow: hidden;
    background: rgba(var(--app-secondary-rgb), .20);
    border: 1px solid var(--app-line);
}

.map-card .row {
    min-height: 420px;
}

.map-card iframe,
.map-iframe {
    display: block;
    width: 100%;
    min-height: 420px;
    height: 100%;
    border: 0;
}

.map-card__visual {
    min-height: 360px;
    background:
        radial-gradient(circle at 20% 30%, rgba(var(--app-secondary-rgb), .55), transparent 26%),
        radial-gradient(circle at 78% 12%, rgba(var(--app-primary-rgb), .14), transparent 24%),
        linear-gradient(135deg, #f5ffff, #dff5f4);
}

.route-pin {
    width: 88px;
    height: 88px;
    display: grid;
    place-items: center;
    border-radius: 50% 50% 50% 12px;
    transform: rotate(-45deg);
    background: var(--app-primary);
    box-shadow: var(--app-shadow);
}

.route-pin span {
    transform: rotate(45deg);
    color: var(--app-secondary);
    font-weight: 950;
    font-size: 1.8rem;
}

.hero-product--cover img,
.image-stack__main--cover img {
    object-fit: cover;
    padding: 0 !important;
}

    .map-card .row {
        min-height: auto;
    }

    .map-card iframe,
    .map-iframe {
        min-height: 320px;
    }
}

@media (max-width: 1040px) {
    .quick-search__box .btn {
        grid-column: 1 / -1;
    }

    .hero-showcase,
    .hero-visual {
        min-height: auto;
    }

    .hero-product,
    .hero-photo,
    .contact-hero-card {
        height: 500px;
    }

    .hero-badge,
    .hero-panel,
    .floating-card,
    .image-stack__mini {
        position: static;
        width: auto;
        max-width: none;
        margin-top: 14px;
    }
}

@media (max-width: 700px) {

    .hero,
    .company-hero {
        min-height: auto;
    }

    .hero-product,
    .hero-photo,
    .contact-hero-card {
        height: 420px;
        border-radius: 32px;
    }

    .image-stack {
        min-height: auto;
    }

    .image-stack__main {
        height: auto;
        aspect-ratio: 1 / 1;
        border-radius: 32px;
    }

    .cta__box,
    .form-box,
    .office-strip,
    .panel,
    .seo-box,
    .cert-box,
    .seo-local,
    .map-card,
    .product-card,
    .solution-card {
        border-radius: 30px;
    }
}
@media (max-width: 991.98px) {
    .map-card .row {
        min-height: auto;
    }

    .map-card iframe,
    .map-iframe {
        min-height: 320px;
    }
}


/* Header: allineamento al marchio (voci su una riga, sottolineatura al passaggio, barra superiore senza sottolineature) */
.header-topbar a { text-decoration: none; }
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(251, 255, 255, .97); }
.site-header-nav { background: transparent !important; border-bottom: 1px solid rgba(var(--app-primary-rgb), .08); }
.site-header-menu { color: var(--app-muted); font-size: .95rem; }
.site-header-menu .nav-link { position: relative; display: inline-flex; align-items: center; gap: .25rem; color: var(--app-muted); white-space: nowrap; }
.site-header-menu .nav-link.dropdown-toggle::after { display: none; }
.site-header-menu .nav-link::before { content: ""; position: absolute; left: .5rem; right: .5rem; bottom: .15rem; height: 2px; background: var(--app-secondary); transform: scaleX(0); transform-origin: left; transition: transform .18s ease; }
.site-header-menu .nav-link:hover,
.site-header-menu .nav-link:focus,
.site-header-menu .nav-link.active { color: var(--app-primary); }
.site-header-menu .nav-link:hover::before,
.site-header-menu .nav-link:focus::before,
.site-header-menu .nav-link.active::before { transform: scaleX(1); }
.site-header-menu-icon { width: 14px; height: 14px; }

/* Footer: tinta del marchio al posto del grigio generico */
footer,
.site-footer { background-color: var(--app-soft); border-top: 1px solid rgba(var(--app-primary-rgb), .08); }

/* Header: mega menu desktop e menu mobile a fisarmonica (come il progetto precedente) */
.navbar-toggler {
    border-color: var(--app-line);
    border-radius: 999px;
    box-shadow: none;
}

.navbar-toggler:focus {
    box-shadow: 0 0 0 4px rgba(var(--app-secondary-rgb), .18);
}

@media (min-width: 992px) {
    .navbar {
        position: relative;
    }

    .header-desktop,
    .header-desktop-menu,
    .header-menu {
        position: static;
    }

    .header-mega-menu {
        inset: 100% 0 auto 0 !important;
        transform: none !important;
        width: 100%;
        min-width: 100%;
        max-height: calc(100vh - 120px);
        overflow: auto;
        padding: .9rem max(1.5rem, calc((100vw - 1320px) / 2 + 1.5rem)) 1rem;
        border: 0;
        border-top: 1px solid rgba(var(--app-primary-rgb), .08);
        border-radius: 0 !important;
        background: rgba(255, 255, 255, .98);
        box-shadow: 0 18px 38px rgba(var(--app-primary-rgb), .08);
        backdrop-filter: blur(18px);
    }

    .header-mega-menu.show {
        display: flex;
        flex-direction: column;
        gap: .15rem;
    }

    .header-mega-menu .dropdown-menu {
        position: static !important;
        display: flex;
        flex-direction: column;
        gap: .1rem;
        min-width: 0;
        margin: .1rem 0 .15rem .75rem;
        padding: 0;
        border: 0;
        background: transparent;
        box-shadow: none;
        transform: none !important;
    }

    .header-mega-item,
    .header-mega-leaf {
        width: min(100%, 760px);
        min-width: 0;
    }

    .header-submenu-link,
    .header-flyout-link {
        gap: .5rem;
        min-height: 0;
        padding: .55rem .75rem;
        border-radius: 14px;
        color: var(--app-muted);
        font-weight: 700;
        line-height: 1.2;
        white-space: normal;
        background: transparent;
        border: 0;
        box-shadow: none;
        transition: background .18s ease, color .18s ease;
    }

    .header-submenu-parent {
        background: transparent;
        box-shadow: none;
    }

    .header-submenu-link:hover,
    .header-submenu-link:focus,
    .header-submenu-link.active,
    .header-flyout-link:hover,
    .header-flyout-link:focus,
    .header-flyout-link.active {
        color: var(--app-primary);
        background: rgba(var(--app-secondary-rgb), .22);
    }

    .header-flyout-link {
        min-height: auto;
        padding: .48rem .75rem;
        border-radius: 14px;
        font-size: .92rem;
        font-weight: 800;
    }

    .header-submenu-link .bi,
    .header-flyout-link .bi {
        color: var(--app-info);
    }
}

.header-mobile-body {
    overflow-y: auto;
    padding: 1rem 1.25rem 1.5rem;
}

.header-mobile-menu {
    width: 100%;
}

.header-mobile-item {
    padding: 0;
}

.header-mobile-link {
    display: block;
    width: 100%;
    padding: .65rem .75rem;
    border: 0;
    border-radius: 14px;
    color: var(--app-muted);
    background: transparent;
    font-weight: 700;
    line-height: 1.2;
    text-align: left;
}

.header-mobile-link:hover,
.header-mobile-link:focus,
.header-mobile-link.active {
    color: var(--app-primary);
    background: rgba(var(--app-secondary-rgb), .22);
}

.header-mobile-toggle {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.header-mobile-toggle .bi {
    color: var(--app-info);
    font-size: .9rem;
    transition: transform .18s ease;
}

.header-mobile-toggle:not(.collapsed) .bi {
    transform: rotate(180deg);
}

.header-mobile-submenu {
    list-style: none;
    margin: .15rem 0 .25rem;
    padding: 0;
}

.header-mobile-item--level-1 .header-mobile-link {
    font-size: .95rem;
    font-weight: 800;
}

.header-mobile-item--level-2 .header-mobile-link,
.header-mobile-item--level-3 .header-mobile-link {
    font-size: .9rem;
    font-weight: 750;
    color: var(--app-info);
}
.header-mobile-link { cursor: pointer; }
.header-mobile-toggle .site-header-menu-icon { margin-left: auto; color: var(--app-info); transition: transform .18s ease; }
.header-mobile-toggle:not(.collapsed) .site-header-menu-icon { transform: rotate(180deg); }
.header-mega-menu .site-header-menu-icon { color: var(--app-info); }

/* Contact form: allineato al progetto precedente (due colonne, campi arrotondati con tinta del marchio) */
.site-contact-form-section.bg-light { background-color: var(--app-soft) !important; }
.site-contact-form-section .site-contact-form-label { color: var(--app-primary); font-weight: 800; font-size: .875rem; margin-bottom: .5rem; }
.site-contact-form .form-control,
.site-contact-form .form-select {
    padding: 1rem;
    border: 1px solid var(--app-line);
    border-radius: 18px;
    color: var(--app-primary);
    background-color: var(--app-white);
    font-weight: 500;
}
.site-contact-form textarea.form-control { min-height: 128px; resize: vertical; }
.site-contact-form .form-control:focus,
.site-contact-form .form-select:focus {
    border-color: var(--app-secondary);
    box-shadow: 0 0 0 4px rgba(var(--app-secondary-rgb), .14);
}
.site-contact-form .form-check-input { border-color: var(--app-info) !important; }
.site-contact-form .form-check-input:checked { background-color: var(--app-primary); border-color: var(--app-primary) !important; }
.site-contact-form .form-check-label { font-weight: 500; font-size: .9rem; color: var(--app-muted); }
.site-contact-form-submit { min-width: 220px; }

/* Hero della home: illustrazione a tutta larghezza, testo sulla parte sinistra sfumata */
.hero--home {
    background:
        linear-gradient(90deg, rgba(var(--app-primary-rgb), .55) 0%, rgba(var(--app-primary-rgb), 0) 55%),
        url('../images/hero-home.webp') right center / cover no-repeat,
        var(--app-primary);
    min-height: min(78vh, 720px);
    display: flex;
    align-items: center;
}
.hero--home::before,
.hero--home::after { display: none; }
.hero--home > .container { position: relative; z-index: 1; width: 100%; }
@media (max-width: 991.98px) {
    .hero--home {
        display: flex;
        flex-direction: column;
        min-height: auto;
        padding-top: 0 !important;
        background-color: var(--app-primary);
        background: linear-gradient(180deg, var(--app-primary) 0%, #11306b 100%);
    }
    /* Illustrazione nitida sotto il testo, senza velature */
    .hero--home::after {
        display: block;
        content: "";
        position: relative;
        inset: auto;
        width: 100%;
        height: auto;
        order: -1;
        flex: none;
        aspect-ratio: 16 / 10;
        filter: none;
        border-radius: 0;
        z-index: auto;
        pointer-events: auto;
        margin: 0 0 1.5rem;
        background: url('../images/hero-home-900.webp') 88% center / cover no-repeat;
        opacity: 1;
        transform: none;
    }
}

/* Breadcrumb: respiro sotto l'header */
nav[aria-label="Breadcrumb"],
.theme-category-breadcrumb { margin-top: 2.5rem; }
@media (max-width: 991.98px) {
    nav[aria-label="Breadcrumb"],
    .theme-category-breadcrumb { margin-top: 1.5rem; }
}

/* Mappa e altri embed in attesa del consenso: riquadro nel tono del marchio */
.map-card .cookie-embed-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    min-height: 420px;
    height: 100%;
    padding: 2rem;
    text-align: center;
    color: var(--app-primary);
    background:
        radial-gradient(circle at 20% 30%, rgba(var(--app-secondary-rgb), .55), transparent 40%),
        linear-gradient(135deg, #f5ffff, #dff5f4);
}
.map-card .cookie-embed-placeholder p { max-width: 420px; margin: 0; font-weight: 600; }
@media (max-width: 991.98px) { .map-card .cookie-embed-placeholder { min-height: 280px; } }
