/* =====================================================================
   MILANO MOSCOVA — FOGLIO DI STILE CONDIVISO
   ---------------------------------------------------------------------
   Unica sorgente di verità per colori, tipografia, raggi e ombre di
   TUTTE le applicazioni del gruppo (hub, vita, midco, profiles, finance,
   dc, onboard, contest, gare-pa) e dell'Area Broker, che sta su un
   dominio proprio e ne tiene una copia in assets/.

   Perché esiste
   -------------
   Prima ogni app riscriveva da zero il proprio blocco :root, e col tempo
   se ne erano formati due sistemi diversi con gli STESSI nomi di
   variabile e valori differenti:

     token          "carta"  (vita, midco,     "navy"  (hub, dc,
                              profiles, gare-pa,        onboard, finance)
                              contest, broker)
     --navy         #1B2A4A                    #0B1F3D
     --navy-deep    #0F1930                    #060E1F
     --gold         #B9922F                    #FFFFFF   <- oro contro bianco
     --paper        #F6F5F1                    #F4F6F9   (come --cream)
     --line         #D8D4C6                    #D6DEE8

   Il caso peggiore era --gold: nella famiglia "navy" valeva #FFFFFF,
   cioè un token chiamato "oro" che conteneva bianco. Non era un errore
   di battitura ma una scorciatoia: su fondo navy scuro l'accento è il
   bianco, e si era riusato il nome sbagliato invece di introdurne uno
   nuovo. Il risultato è che leggendo il CSS non si capiva più nulla.

   Come si risolve qui
   -------------------
   • i valori della famiglia "carta" diventano quelli canonici: sono la
     maggioranza (sei superfici su dieci) e portano l'identità del
     marchio;
   • l'accento sul fondo scuro ha finalmente un nome suo, --on-navy, e
     resta il bianco che era: le app "navy" non cambiano aspetto, cambia
     solo il nome con cui lo chiedono;
   • i vecchi nomi della famiglia "navy" (--cream, --cream-dim, --muted)
     restano definiti come alias, così nessuna app si rompe.

   Tipografia
   ----------
   I font sono ospitati qui, in assets/font/. Prima le app "navy" li
   prendevano da fonts.googleapis.com e quelle "carta" ripiegavano sui
   font di sistema (Iowan Old Style su Mac, un ripiego qualsiasi su
   Windows): due rese diverse a seconda dell'app E del computer. Ora la
   resa è identica ovunque e non si dipende più da un servizio esterno.

   Per modificare la grafica di tutte le app si tocca soltanto questo
   file.
   ===================================================================== */

@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font/fraunces-400-1fba.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font/fraunces-400-63f1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(font/fraunces-400-1fba.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(font/fraunces-400-63f1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(font/fraunces-400-1fba.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(font/fraunces-400-63f1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(font/fraunces-400-1fba.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(font/fraunces-400-63f1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font/ibm-plex-mono-400-9994.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font/ibm-plex-mono-400-d773.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(font/ibm-plex-mono-500-60d1.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(font/ibm-plex-mono-500-8d0a.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font/inter-400-749a.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font/inter-400-1ab1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(font/inter-400-749a.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(font/inter-400-1ab1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(font/inter-400-749a.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(font/inter-400-1ab1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(font/inter-400-749a.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(font/inter-400-1ab1.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* =====================================================================
   TOKEN
   ===================================================================== */
:root{
  /* --- Superfici scure ---------------------------------------------- */
  --ink:#152238;         /* testo principale                            */
  --navy:#1B2A4A;        /* fondo scuro di riferimento                  */
  --navy-deep:#0F1930;   /* fondo scuro più profondo (login, sidebar)   */
  --navy-soft:#1B3B66;   /* navy schiarito, per fondi secondari         */
  --slate:#3A4D6E;       /* testo secondario su chiaro                  */

  /* --- Superfici chiare --------------------------------------------- */
  --paper:#F6F5F1;       /* fondo pagina                                */
  --paper-deep:#EDEBE3;  /* fondo delle zone incassate                  */
  --white:#FFFFFF;
  --line:#D8D4C6;        /* bordi e separatori                          */
  --grey:#7C7565;        /* testo attenuato                             */

  /* --- Accenti ------------------------------------------------------- */
  --gold:#B9922F;        /* accento del marchio, su fondo chiaro        */
  --gold-soft:#E7D9AF;   /* la stessa tinta come fondo                  */
  --on-navy:#FFFFFF;     /* accento su fondo scuro (era --gold in dc,   */
  --on-navy-soft:#F0F0F0;/* onboard, hub e finance)                     */

  /* --- Colori con un significato ------------------------------------- */
  --green:#3D6B4C;   --green-bg:#E7F0EA;   /* positivo, confermato      */
  --amber:#A8712B;   --amber-bg:#F7E9D8;   /* in attesa, da verificare  */
  --red:#A13F3F;     --red-bg:#F5E2E0;     /* errore, scaduto           */
  --blue:#2C5C8F;    --blue-bg:#E3ECF5;    /* informativo               */

  /* --- Alias di compatibilità ---------------------------------------- */
  /* Nomi della vecchia famiglia "navy": restano validi e puntano ai
     token canonici, così le app che li usano non vanno riscritte.      */
  --cream:var(--paper);
  --cream-dim:var(--paper-deep);
  --muted:var(--grey);
  --border:var(--line);
  --surface:var(--white);
  --surface-alt:var(--paper-deep);
  --success:var(--green);
  --danger:var(--red);
  --text-900:var(--ink);
  --text-600:var(--slate);
  --text-400:var(--grey);
  --navy-950:var(--navy-deep);
  --navy-900:var(--navy-deep);
  --navy-800:var(--navy);
  --navy-700:var(--slate);
  --bronze:var(--amber);
  --silver:var(--grey);
  --silver-soft:var(--paper-deep);
  --blue-500:var(--blue);

  /* --- Tipografia ---------------------------------------------------- */
  --serif:'Fraunces','Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,'Courier New',monospace;

  /* --- Raggi ---------------------------------------------------------- */
  /* Erano 3px (onboard), 4px (dc, finance) e 10px (contest, gare-pa):
     tre arrotondamenti diversi nello stesso gruppo di applicazioni.     */
  --radius-sm:4px;
  --radius:8px;
  --radius-lg:14px;
  --radius-pill:999px;

  /* --- Ombre ---------------------------------------------------------- */
  --shadow-sm:0 1px 3px rgba(15,25,48,.08);
  --shadow:0 8px 30px rgba(15,25,48,.14);
  --shadow-lg:0 20px 50px rgba(15,25,48,.22);

  /* --- Spaziatura ------------------------------------------------------ */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-6:24px; --sp-8:32px;
}

/* =====================================================================
   BASE
   Volutamente minima: le app hanno già il proprio CSS e questo foglio
   non deve entrare in conflitto con le loro classi. Qui c'è solo ciò
   che serve a tutte e che nessuna dovrebbe ridefinire.
   ===================================================================== */

*,*::before,*::after{ box-sizing:border-box; }

body{
  font-family:var(--sans);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* Il focus da tastiera deve restare visibile: senza questa regola chi
   naviga con il tab non sa dove si trova. Diverse app azzeravano
   l'outline per motivi estetici. */
:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:2px;
}

/* Chi ha chiesto al sistema operativo di ridurre le animazioni non deve
   subirle: vale anche per il fondale animato di nebula.js. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}
