@charset "UTF-8";

/*
@copyright: CAFFEINAPURA Srls Unipersonale - All right reserved
Version: 1.0 - 2026-09-05
Author: Roberto Cheli

Unica parte di CSS davvero indipendente da tema e da tipo sito (Website
o Eshop): reset, accessibilita, back-to-top, cookie banner. Caricata
incondizionatamente da ogni section/head, PRIMA del base.css di
tema/{siteType}-default — vedi docs/css-reorganizzazione.md.

Volutamente minima: non ho spostato qui nulla dagli attuali base.css di
viviagriturismo.com/3-default per non rischiare di rompere selettori che
in realta sono ancora specifici di un tema. E' un punto di partenza da
far crescere spostando qui, con calma, le regole che si rivelano
davvero identiche tra i temi.
*/

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
img { display: block; max-width: 100%; }
a { text-decoration: none; color: inherit; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.sr-only {
    position: absolute; width: 1px; height: 1px;
    overflow: hidden; clip: rect(0, 0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
    * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* --- Cookie banner: markup condiviso (public/cookie-banner.html) su tutti i temi ---
   Layout/posizionamento identico ovunque; i colori (background, bordi,
   .btn-green/.btn-outline, box-shadow) vanno nel base.css di ogni tema —
   qui SOLO proprietà che non dipendono dalla palette del brand. */
.cb-banner { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1000; padding: 18px 24px; }
.cb-banner-in { max-width: 1280px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.cb-banner-text { flex: 1 1 420px; font-size: .85rem; line-height: 1.6; }
.cb-banner-actions { display: flex; gap: 10px; flex-wrap: wrap; flex-shrink: 0; }
@media (max-width: 640px) {
    .cb-banner-in { padding: 0 14px; }
    .cb-banner-actions { width: 100%; }
    .cb-banner-actions .btn { flex: 1; justify-content: center; }
}

/* Bottoni generici usati anche nel cookie banner (btn-green/btn-outline
   sono nomi di classe storici del markup condiviso: il COLORE che
   rappresentano lo decide ogni tema, qui solo la forma). */
.btn { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; border: none; cursor: pointer; transition: all .2s; white-space: nowrap; border-radius: 6px; }
.btn-md { font-size: .875rem; padding: .65rem 1.4rem; }
.btn-lg { font-size: .95rem; padding: .8rem 1.8rem; }

.cb-modal { position: fixed; inset: 0; z-index: 1100; display: none; align-items: center; justify-content: center; padding: 20px; }
.cb-modal.is-open { display: flex; }
.cb-modal-backdrop { position: absolute; inset: 0; }
.cb-modal-dialog { position: relative; width: 100%; max-width: 480px; max-height: 90vh; overflow-y: auto; border-radius: 16px; }
.cb-modal-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 22px 24px 0; }
.cb-modal-title { font-size: 1.05rem; font-weight: 600; line-height: 1.35; }
.cb-modal-close { background: none; border: none; cursor: pointer; font-size: 1.4rem; line-height: 1; padding: 0 0 0 8px; transition: color .2s; }
.cb-modal-body { padding: 14px 24px 6px; }
.cb-modal-text { font-size: .85rem; line-height: 1.6; margin-bottom: 16px; }
.cb-check { display: flex; align-items: center; gap: 10px; padding: 10px 0; }
.cb-check:first-of-type { border-top: none; }
.cb-check-input { width: 18px; height: 18px; cursor: pointer; flex-shrink: 0; }
.cb-check-input:disabled { cursor: not-allowed; opacity: .6; }
.cb-check-label { font-size: .875rem; font-weight: 500; cursor: pointer; }
.cb-modal-footer { padding: 14px 24px 24px; }
.cb-modal-footer .btn { width: 100%; justify-content: center; }

/* --- Back-to-top: id/markup condiviso, lo stile del bottone (colori) resta al tema --- */
#back-to-top, #scroll-top {
    position: fixed; z-index: 900;
    display: flex; align-items: center; justify-content: center;
    border: none; cursor: pointer;
}