html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    
}
.gantt-header-fixed {
    position: fixed;
    top: var(--mud-appbar-height);
    left: var(--mud-drawer-width);
    right: 0;
    z-index: 1000;
    background: white;
}


.gantt-body-offset {
    margin-top: calc(var(--mud-appbar-height) + 110px);
}
 




.login-overlay {
    position: fixed;
    inset: 0;
    background: rgba(255,255,255,0.8);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}

.page-transition {
    animation: pageFade 1.5s cubic-bezier(0.4, 0, 0.2, 1) forwards; 
}


@keyframes pageFade {
    from {
        opacity: 0;
        transform: translateY(15px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.page-slide {
    animation: slideIn 0.9s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateX(60px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.page-slide-left {
    animation: slideLeftIn 0.9s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes slideLeftIn {
    from {
        opacity: 0;
        transform: translateX(-60px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

 
.page-fade-blur {
    animation: fadeBlur 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes fadeBlur {
    from {
        opacity: 0;
        filter: blur(10px);
    }

    to {
        opacity: 1;
        filter: blur(0);
    }
}

.page-rotate {
    animation: rotateIn 0.9s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes rotateIn {
    from {
        opacity: 0;
        transform: rotate(-8deg) translateY(10px);
    }

    to {
        opacity: 1;
        transform: rotate(0) translateY(0);
    }
}
/* Transizione combinata fade + slide */
.page-smooth {
    animation: smoothIn 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes smoothIn {
    from {
        opacity: 0;
        transform: translateX(40px) translateY(15px) scale(0.95);
    }

    50% {
        opacity: 0.6;
        transform: translateX(20px) translateY(8px) scale(0.975);
    }

    to {
        opacity: 1;
        transform: translateX(0) translateY(0) scale(1);
    }
}

/* Variante slide + fade da sinistra */
.page-smooth-left {
    animation: smoothLeftIn 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes smoothLeftIn {
    from {
        opacity: 0;
        transform: translateX(-40px) translateY(15px) scale(0.95);
    }

    50% {
        opacity: 0.6;
        transform: translateX(-20px) translateY(8px) scale(0.975);
    }

    to {
        opacity: 1;
        transform: translateX(0) translateY(0) scale(1);
    }
}

/* Variante con leggero blur */
.page-smooth-blur {
    animation: smoothBlurIn 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes smoothBlurIn {
    from {
        opacity: 0;
        filter: blur(8px);
        transform: translateY(15px) scale(0.95);
    }

    50% {
        opacity: 0.6;
        filter: blur(4px);
        transform: translateY(8px) scale(0.975);
    }

    to {
        opacity: 1;
        filter: blur(0);
        transform: translateY(0) scale(1);
    }
}
.page-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255,255,255,0.15);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    z-index: 5000;
    opacity: 1;
    pointer-events: all;
    transition: opacity 0.6s cubic-bezier(0.4,0,0.2,1);
}

    .page-overlay.hidden {
        opacity: 0;
        pointer-events: none;
    }

.page-zoom {
    animation: zoomIn 0.9s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes zoomIn {
    from {
        opacity: 0;
        transform: scale(0.85);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}
 


body {
    background-image: url('img/background/background-wawe.webp');
    background-size: cover; /* Adatta l'immagine alla finestra */
    background-position: center;
    background-repeat: no-repeat;
    background-attachment: fixed; /* Mantiene l'immagine fissa allo scrolling */
}

.mud-snackbar {
    z-index: 9500 !important;
}

.mud-dialog {
    z-index: 3500 !important; /* Default � circa 2000 */
}

.mic-pulse {
    animation: mic-blink 1.2s infinite;
    color: #ff5252; /* puoi cambiarlo per adattarlo al tuo tema */
}

.col-piccola {
    width: 90px;
    min-width: 80px;
    max-width: 180px;
    white-space: normal;
   /* word-break: break-word;*/
    text-align: left;
}

 

@keyframes mic-blink {
    0%, 100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: 0.5;
        transform: scale(1.2);
    }
}

.my-dialog-background {
    background-color: rgba(0,0,0,0.7); /* sfondo scuro semi-trasparente */
}

.my-dialog-content {
    border-radius: 16px;
    padding: 24px;
    background-color: #fff;
    min-height: 90vh; /* come volevi tu */
    display: flex;
    flex-direction: column;
}


.wave-container {
    display: flex;
    justify-content: center; /* centra orizzontalmente */
    align-items: center; /* centra verticalmente */
    height: 86px;
    width: 100%;
    background-color: #263238;
    border-radius: 6px;
    padding: 10px;
    gap: 6px;
    color: #ECEFF1;
    box-sizing: border-box;
}


.wave {
    width: 6px;
    height: 40%;
    background: #ECEFF1;
    animation: wave-animation 1s infinite ease-in-out;
    border-radius: 3px;
}

    .wave:nth-child(1) {
        animation-delay: 0s;
    }

    .wave:nth-child(2) {
        animation-delay: 0.2s;
    }

    .wave:nth-child(3) {
        animation-delay: 0.4s;
    }

    .wave:nth-child(4) {
        animation-delay: 0.6s;
    }

    .wave:nth-child(5) {
        animation-delay: 0.8s;
    }

@keyframes wave-animation {
    0%, 100% {
        height: 20%;
    }

    50% {
        height: 100%;
    }
}
 

.mud-chip > .mud-chip-content {
    align-items: normal !important;
    /*display: inline-flex !important;*/
    /*height: 100% !important;*/
    max-width: 100% !important;
    white-space: normal !important;
    word-break: break-word;
    text-align: left;
}

/* Questo funziona davvero su MudBlazor */
.mud-calendar-hour {
    height: 30px !important;
    min-height: 30px !important;
}


.blinking-icon {
    animation: blinker 1s linear infinite;
}

@keyframes blinker {
    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: 0;
    }
}
/* ────────────────────────────────────────────────────────────────────────────
   TEMA "VETRO" (traslucido, stile chatbot GaIA)
   Attivato dalla classe gaia-vetro sul body (MainLayout -> setTemaVetro),
   solo per i temi con "Vetro": true in wwwroot/temi/temi.json.
   Le superfici diventano semitrasparenti e sfocano lo sfondo sottostante.
   ──────────────────────────────────────────────────────────────────────────── */

body.gaia-vetro {
    background-attachment: fixed;
    background-size: cover;
}

/* superfici principali: carte, pannelli, dialoghi, menu a tendina */
body.gaia-vetro .mud-paper,
body.gaia-vetro .mud-card,
body.gaia-vetro .mud-dialog,
body.gaia-vetro .mud-popover-cascading-value,
body.gaia-vetro .mud-expand-panel {
    background-color: rgba(255, 255, 255, 0.62) !important;
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 14px;
    box-shadow: 0 8px 24px rgba(15, 40, 80, 0.10);
}

/* barra in alto e menu laterale: piu' scuri, come l'header del bot */
body.gaia-vetro .mud-appbar,
body.gaia-vetro .mud-drawer {
    background-color: rgba(25, 118, 210, 0.72) !important;
    backdrop-filter: blur(16px) saturate(140%);
    -webkit-backdrop-filter: blur(16px) saturate(140%);
    border-right: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: 0 4px 18px rgba(10, 30, 60, 0.18);
}

/* le tabelle stanno gia' dentro una MudPaper: evito il doppio velo opaco */
body.gaia-vetro .mud-table,
body.gaia-vetro .mud-table-container,
body.gaia-vetro .mud-toolbar,
body.gaia-vetro .mud-expand-panel .mud-expand-panel-header {
    background-color: transparent !important;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: none;
    border: none;
}

/* intestazione colonne e righe alternate: leggibili sopra il vetro */
body.gaia-vetro .mud-table-head .mud-table-cell {
    background-color: rgba(255, 255, 255, 0.55) !important;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

body.gaia-vetro .mud-table-row:hover:not(.mud-table-no-hover) {
    background-color: rgba(25, 118, 210, 0.08) !important;
}

/* ── variante scura ── */
body.gaia-vetro.mud-theme-dark .mud-paper,
body.gaia-vetro.mud-theme-dark .mud-card,
body.gaia-vetro.mud-theme-dark .mud-dialog,
body.gaia-vetro.mud-theme-dark .mud-expand-panel {
    background-color: rgba(16, 27, 48, 0.58) !important;
    border: 1px solid rgba(255, 255, 255, 0.10);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}

body.gaia-vetro.mud-theme-dark .mud-appbar,
body.gaia-vetro.mud-theme-dark .mud-drawer {
    background-color: rgba(10, 27, 51, 0.75) !important;
}

body.gaia-vetro.mud-theme-dark .mud-table-head .mud-table-cell {
    background-color: rgba(16, 27, 48, 0.55) !important;
}

body.gaia-vetro.mud-theme-dark .mud-table-row:hover:not(.mud-table-no-hover) {
    background-color: rgba(79, 195, 247, 0.10) !important;
}

/* niente sfocatura per chi la disattiva a livello di sistema (o su GPU deboli):
   resta un fondo solido leggibile invece di un pannello semitrasparente illeggibile */
@media (prefers-reduced-transparency: reduce) {
    body.gaia-vetro .mud-paper,
    body.gaia-vetro .mud-card,
    body.gaia-vetro .mud-dialog,
    body.gaia-vetro .mud-expand-panel {
        background-color: var(--mud-palette-surface) !important;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }
}

/* ────────────────────────────────────────────────────────────────────────────
   TICKET - FASCIA "COMMENTO INTERNO"
   Marca in modo inequivocabile i commenti che il cliente NON vede: sia quelli
   gia' inseriti (dentro la bolla della chat) sia quello che si sta scrivendo
   con la spunta "Commento interno" attiva.
   Colori fissi (giallo avviso) invece delle variabili di tema: e' una fascia di
   allerta e deve restare riconoscibile con qualsiasi tema, chiaro o scuro.
   ──────────────────────────────────────────────────────────────────────────── */

.tk-fascia-interno {
    display: flex;
    align-items: center;
    gap: 4px;
    background: repeating-linear-gradient(
        45deg,
        #FFD54F,
        #FFD54F 10px,
        #FFCA28 10px,
        #FFCA28 20px
    );
    color: #4E342E;
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: .04em;
    line-height: 1.2;
    padding: 6px 10px;
    margin-bottom: 8px;
    border-left: 5px solid #F57F17;
    border-radius: 4px;
    text-transform: uppercase;
}

/* l'icona eredita il colore scuro del testo, non quello del tema */
.tk-fascia-interno .mud-icon-root {
    color: #4E342E;
}

/* variante sopra l'editor: piu' larga e staccata, si vede mentre si scrive */
.tk-fascia-interno-editor {
    margin: 8px 0;
    padding: 8px 12px;
    font-size: 0.82rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .15);
}

/* ────────────────────────────────────────────────────────────────────────────
   TICKET - ATTESA RISPOSTA IA
   Compare in cima ai commenti mentre l'assistente sta rispondendo: la domanda
   e' gia' stata registrata, quindi l'utente puo' andare avanti a lavorare.
   ──────────────────────────────────────────────────────────────────────────── */

.tk-ia-attesa {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 2px;
    background: var(--mud-palette-primary-hover, rgba(25, 118, 210, .08));
    border: 1px dashed var(--mud-palette-primary, #1976D2);
    color: var(--mud-palette-text-primary);
    border-radius: 8px;
    padding: 8px 12px;
    margin-bottom: 12px;
    font-size: .9rem;
}

.tk-ia-attesa-nota {
    margin-left: 6px;
    font-size: .8rem;
    opacity: .75;
}

/* puntini che pulsano uno dopo l'altro */
.tk-ia-puntini span {
    animation: tk-ia-blink 1.4s infinite both;
    font-weight: 700;
}

.tk-ia-puntini span:nth-child(2) {
    animation-delay: .2s;
}

.tk-ia-puntini span:nth-child(3) {
    animation-delay: .4s;
}

@keyframes tk-ia-blink {
    0%, 80%, 100% {
        opacity: .2;
    }
    40% {
        opacity: 1;
    }
}
