/* Famiglie del progetto: sans 400–700, serif 400 + corsivo, mono 400/500 */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&family=DM+Mono:wght@400;500&display=swap');

/* ============================================================
   BLUVIA — FILE 1 · TOKEN
   Unica fonte di verità: colori, tipografia, spazi, filetti,
   raggi, ombre, misure, movimento. Il FILE 2 usa solo queste
   variabili, mai valori scritti a mano.
   ============================================================ */

:root {

  color-scheme: light;

  /* --- Colori · superfici ---------------------------------- */
  --bv-canvas:            #EDF2F5;   /* fondo pagina, azzurro nebbia */
  --bv-surface:           #FFFFFF;   /* carte e pannelli */
  --bv-surface-sunk:      #F4F8FA;   /* fondo alleggerito (meteo, note) */

  /* --- Colori · inchiostro -------------------------------- */
  --bv-ink:               #0F2942;   /* titoli e testo forte */
  --bv-ink-hover:         #1B3D5C;   /* navy su hover pieno */
  --bv-ink-2:             #31506B;   /* paragrafi */
  --bv-ink-3:             #4F6B82;   /* etichette, meta, secondario */

  /* --- Colori · filetti ----------------------------------- */
  --bv-line:              #E4EBF0;   /* filetto leggero, divisioni interne */
  --bv-line-strong:       #CBD9E3;   /* bordo carta, input */
  --bv-line-ink:          var(--bv-ink); /* filetto di apertura sezione */

  /* --- Colori · accento coral ----------------------------- */
  --bv-coral:             #E8674A;   /* solo CTA primaria */
  --bv-coral-hover:       #D4573B;
  --bv-coral-ink:         #C24A2B;   /* link e testo su fondo chiaro */
  --bv-coral-line:        rgba(194, 74, 43, .4); /* filetto sotto i link */
  --bv-on-coral:          #FFFFFF;
  --bv-on-ink:            #FFFFFF;

  /* --- Colori · overlay sopra immagine -------------------- */
  --bv-scrim:             rgba(8, 24, 40, .82);
  --bv-scrim-soft:        rgba(8, 24, 40, .62);
  --bv-scrim-zero:        rgba(8, 24, 40, 0);
  --bv-on-scrim:          #FFFFFF;
  --bv-on-scrim-2:        rgba(255, 255, 255, .86);
  --bv-on-scrim-line:     rgba(255, 255, 255, .42);

  /* --- Colori · stato ------------------------------------- */
  --bv-focus:             #C24A2B;
  --bv-success:           #176B43;
  --bv-success-soft:      rgba(23, 107, 67, .1);
  --bv-warning:           #7A5600;
  --bv-warning-soft:      rgba(122, 86, 0, .1);
  --bv-danger:            #B42318;
  --bv-danger-soft:       rgba(180, 35, 24, .1);
  --bv-skeleton-base:     #E3EBF0;
  --bv-skeleton-shine:    #F4F8FA;

  /* --- Tipografia · famiglie ------------------------------ */
  --bv-font-sans:  'Plus Jakarta Sans', system-ui, sans-serif;
  --bv-font-serif: 'Instrument Serif', Georgia, serif;
  --bv-font-mono:  'DM Mono', ui-monospace, monospace;

  /* --- Tipografia · scala --------------------------------- */
  --bv-fs-display:        68px;   /* hero desktop */
  --bv-fs-h1:             56px;
  --bv-fs-h2:             42px;
  --bv-fs-h3:             34px;
  --bv-fs-h4:             24px;
  --bv-fs-price:          30px;
  --bv-fs-temp:           40px;
  --bv-fs-lead:           19px;
  --bv-fs-body:           17px;
  --bv-fs-body-sm:        15px;
  --bv-fs-meta:           14px;
  --bv-fs-eyebrow:        12px;
  --bv-fs-eyebrow-sm:     11px;

  /* --- Tipografia · pesi --------------------------------- */
  --bv-fw-regular:        400;
  --bv-fw-medium:         500;
  --bv-fw-semibold:       600;
  --bv-fw-bold:           700;

  /* --- Tipografia · interlinea --------------------------- */
  --bv-lh-tight:          1.02;   /* display serif */
  --bv-lh-title:          1.06;
  --bv-lh-snug:           1.25;
  --bv-lh-flat:           1;      /* numeri grandi */
  --bv-lh-body:           1.65;
  --bv-lh-loose:          1.72;

  /* --- Tipografia · spaziatura lettere ------------------- */
  --bv-ls-display:        -.018em;
  --bv-ls-title:          -.014em;
  --bv-ls-num:            -.02em;
  --bv-ls-none:           0;
  --bv-ls-mono:           .14em;
  --bv-ls-eyebrow:        .24em;
  --bv-ls-eyebrow-wide:   .3em;

  /* --- Spazi (base 4px) ---------------------------------- */
  --bv-s-0:               0;
  --bv-s-1:               4px;
  --bv-s-2:               8px;
  --bv-s-3:               12px;
  --bv-s-4:               16px;
  --bv-s-5:               20px;
  --bv-s-6:               24px;
  --bv-s-7:               28px;
  --bv-s-8:               32px;
  --bv-s-10:              40px;
  --bv-s-12:              48px;
  --bv-s-14:              56px;
  --bv-s-16:              64px;
  --bv-s-18:              72px;
  --bv-s-22:              88px;
  --bv-s-24:              96px;

  /* --- Filetti e raggi ---------------------------------- */
  --bv-bw:                1px;    /* tutti i filetti sono 1px */
  --bv-bw-active:         2px;    /* sottolineatura filtro attivo */
  --bv-bw-focus:          3px;
  --bv-r-none:            0;      /* immagini editoriali: angoli vivi */
  --bv-r-sm:              8px;
  --bv-r-md:              14px;   /* bottoni */
  --bv-r-lg:              18px;   /* carta desktop */
  --bv-r-xl:              30px;   /* schermo mobile */
  --bv-r-pill:            99px;

  /* --- Ombre -------------------------------------------- */
  --bv-shadow-card:       0 30px 64px -30px rgba(15, 41, 66, .38);
  --bv-shadow-soft:       0 12px 28px -18px rgba(15, 41, 66, .3);

  /* --- Misure e proporzioni ----------------------------- */
  --bv-full:              100%;
  --bv-vh-full:           100dvh;
  --bv-tap:               44px;   /* area tocco minima */
  --bv-cta-h:             56px;
  --bv-btn-h:             52px;
  --bv-thumb:             92px;   /* miniatura riepilogo */
  --bv-badge-h:           28px;
  --bv-measure:           640px;  /* misura di lettura desktop */
  --bv-measure-sm:        520px;
  --bv-booking-w:         380px;
  --bv-chat-input-max:    120px;
  --bv-chat-media-w:      220px;
  --bv-chat-media-h:      240px;
  --bv-chat-message-max:  82%;
  --bv-chat-system-max:   92%;
  --bv-sticky-top:        32px;
  --bv-col-media:         1.15fr; /* colonna immagine, card editoriale */
  --bv-col-text:          1fr;
  --bv-ar-editorial:      4 / 3;
  --bv-ar-compact:        16 / 10;
  --bv-ar-square:         1 / 1;
  --bv-grid-min:          280px;  /* colonna minima nelle griglie auto */
  --bv-w-3-4:             75%;    /* righe skeleton accorciate */
  --bv-w-1-2:             50%;
  --bv-watermark-right:   -10%;
  --bv-watermark-bottom:  -35%;
  --bv-watermark-width:   72%;
  --bv-order-last:        2;      /* inversione colonne card specchiata */
  --bv-z-floating:        5;
  --bv-z-toast:           8;
  /* Barre che restano agganciate mentre il contenuto scorre. Deliberatamente
     sotto l'intestazione fissa della dashboard operatore (800): una barra di
     sezione non deve mai passare sopra l'identità e l'uscita. */
  --bv-z-sticky:          700;

  /* --- Movimento ---------------------------------------- */
  --bv-dur-fast:          150ms;
  --bv-dur:               250ms;
  --bv-dur-shimmer:       1400ms;
  --bv-ease:              cubic-bezier(.2, .7, .3, 1);
  --bv-op-hover:          .6;
  --bv-op-muted:          .7;
  --bv-op-disabled:       .5;
  --bv-op-watermark:      .13;   /* marchio in filigrana: presente, mai in gara */
  --bv-lift:              -2px;   /* micro-sollevamento hover */
  --bv-zoom:              1.03;   /* zoom immagine hover */
  --bv-shimmer-size:      200%;
  --bv-shimmer-from:      var(--bv-shimmer-size);
  --bv-shimmer-to:        calc(var(--bv-shimmer-size) * -1);
}

/* ------------------------------------------------------------
   Preferenza di movimento ridotto: si spegne alla radice.
   Le durate diventano impercettibili e i token di movimento
   si neutralizzano, così nessun componente deve saperlo.
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {

  :root {
    --bv-dur-fast:     1ms;
    --bv-dur:          1ms;
    --bv-dur-shimmer:  1ms;
    --bv-ease:         linear;
    --bv-lift:         0;      /* nessun sollevamento su hover */
    --bv-zoom:         1;      /* nessuno zoom immagine */
  }

  /* Rete di sicurezza per animazioni e transizioni non tokenizzate */
  *,
  *::before,
  *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 1ms !important;
    scroll-behavior: auto !important;
  }
}
