/*
 * Backoffice gare (A-GARE): bacheca, accesso, eventi, risultati, atleti, volontari
 * Stili specifici dell'area. Usare i token --clr-* di app.css; prima di creare una classe
 * verificare che non esista già in app.css.
 */

@keyframes riga-evidenzia { from { background: rgba(216, 154, 63, 0.2); } to { background: #FFFFFF; } }

/* Tutte le regole valgono solo nelle pagine di quest'area: il wrapper :where() non aggiunge specificità. */
:where(body.modulo-gare) {
    /* ---------------------------------------------------------------- Comuni */
    .admin-titolo__anno {
        font-family: var(--font-mono);
        font-weight: 500;
        font-size: 0.7em;
        color: var(--clr-text-muted);
        vertical-align: 0.12em;
    }

    &.layout-admin .card-header .btn, &.layout-admin .card-header .mono { text-transform: none; letter-spacing: normal; }
    &.layout-admin legend.card-header { font-size: 0.85rem; }
    &.layout-admin details > summary { cursor: pointer; color: var(--clr-blu); font-weight: 500; }

    /* Campi affiancati (.akra-campo) nei form validati lato client: il messaggio compare solo dopo l'invio */
    .form-edizione .akra-campo__errori .invalid-feedback,
    .form-atleta .akra-campo__errori .invalid-feedback { display: none; }
    .form-edizione.was-validated .akra-campo:has(:invalid) .akra-campo__errori .invalid-feedback,
    .form-atleta.was-validated .akra-campo:has(:invalid) .akra-campo__errori .invalid-feedback { display: block; }
    .akra-campo__errori .form-text { margin: 0; }

    /* ---------------------------------------------------------------- Accesso */
    .accesso-form .input-group-text .material-symbols-outlined { font-size: 1.15rem; }
    .accesso-form .input-group > .btn { border-color: var(--clr-border); }

    .accesso-recupero {
        background: var(--clr-surface-alt);
        border: 1px solid var(--clr-divider);
        border-radius: 0.375rem;
        padding: 0.85rem 1rem;
    }

    .codice-2fa { display: flex; align-items: center; gap: 0.4rem; }
    .codice-2fa__cifra {
        width: 2.75rem;
        height: 3.25rem;
        padding: 0;
        text-align: center;
        font-family: var(--font-mono);
        font-size: 1.5rem;
        font-weight: 500;
    }
    .codice-2fa__separatore { color: var(--clr-text-disabled); font-weight: 600; }

    @media (max-width: 379.98px) {
        .codice-2fa { gap: 0.25rem; }
        .codice-2fa__cifra { width: 2.3rem; height: 2.9rem; font-size: 1.25rem; }
    }

    /* ---------------------------------------------------------------- Bacheca */
    .finestra-gara { align-items: center; flex-wrap: wrap; }

    .scadenza {
        display: grid;
        grid-template-columns: auto 1fr auto;
        gap: 0.85rem;
        align-items: center;
        padding: 0.75rem 1rem;
        border-bottom: 1px solid var(--clr-divider);
        border-left: 3px solid transparent;
    }
    .scadenza:last-child { border-bottom: 0; }
    .scadenza--pericolo { border-left-color: var(--clr-danger); }
    .scadenza--attesa { border-left-color: var(--clr-warning); }
    .scadenza--neutro { border-left-color: var(--clr-border); }

    .scadenza__icona {
        width: 2.25rem;
        height: 2.25rem;
        border-radius: 50%;
        background: var(--clr-area-surface);
        color: var(--clr-area);
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
    .scadenza__icona .material-symbols-outlined { font-size: 1.2rem; }
    .scadenza__meta { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.15rem; }
    .scadenza__categoria { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--clr-text-muted); }
    .scadenza__titolo { margin: 0; font-weight: 600; line-height: 1.35; }
    .scadenza__dettaglio { margin: 0.1rem 0 0; font-size: 0.82rem; color: var(--clr-text-muted); line-height: 1.4; }
    .scadenza__azione { white-space: nowrap; }

    @media (max-width: 767.98px) {
        .scadenza { grid-template-columns: auto 1fr; }
        .scadenza__azione { grid-column: 2; justify-self: start; }
    }

    .scorciatoie { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; }
    .scorciatoia {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        padding: 0.6rem 0.7rem;
        border: 1px solid var(--clr-border);
        border-radius: 0.375rem;
        color: var(--clr-text);
        text-decoration: none;
        font-size: 0.85rem;
        font-weight: 500;
        line-height: 1.25;
        transition: background-color 0.1s ease, border-color 0.1s ease;
    }
    .scorciatoia .material-symbols-outlined { color: var(--clr-area); font-size: 1.25rem; }
    .scorciatoia:hover { background: var(--clr-surface-alt); border-color: var(--clr-border-strong); color: var(--clr-text); }
    .scorciatoia:focus-visible { outline: 0; box-shadow: var(--focus-ring); }

    .registro__voce { display: flex; gap: 0.65rem; padding: 0.65rem 1rem; border-bottom: 1px solid var(--clr-divider); font-size: 0.85rem; }
    .registro__voce:last-child { border-bottom: 0; }
    .registro__voce .avatar { font-size: 0.68rem; }
    .registro__meta { margin: 0.1rem 0 0; font-size: 0.75rem; color: var(--clr-text-muted); }

    /* ---------------------------------------------------------------- Manifestazioni ed edizioni */
    .manifestazione__testa { text-transform: none; letter-spacing: normal; color: var(--clr-text); flex-wrap: wrap; }
    .manifestazione__nome {
        font-family: var(--font-titoli);
        font-size: 1.3rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.01em;
        color: var(--clr-blu);
        margin: 0;
    }
    .manifestazione__meta { margin: 0; font-size: 0.8rem; font-weight: 400; color: var(--clr-text-muted); display: flex; align-items: center; gap: 0.25rem; flex-wrap: wrap; }
    .manifestazione__meta .material-symbols-outlined { font-size: 1rem; }

    /* ---------------------------------------------------------------- Scheda edizione */
    .schede-scorrimento {
        overflow-x: auto;
        scrollbar-width: thin;
        margin-bottom: -1px;
        position: relative;
        z-index: 1;
    }
    .schede-edizione { flex-wrap: nowrap; min-width: max-content; }
    .schede-edizione .nav-link {
        display: inline-flex;
        align-items: center;
        gap: 0.35rem;
        white-space: nowrap;
        padding: 0.55rem 0.85rem;
        font-size: 0.85rem;
    }
    .schede-edizione .nav-link .material-symbols-outlined { font-size: 1.1rem; }
    .schede-edizione__conteggio {
        font-family: var(--font-mono);
        font-size: 0.7rem;
        background: var(--clr-surface-alt);
        color: var(--clr-text-muted);
        border-radius: 999px;
        padding: 0 0.4rem;
    }
    .schede-edizione__avviso { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--clr-warning); }
    .schede-edizione .nav-link.ha-errori { color: var(--clr-danger); }
    .schede-edizione .nav-link.ha-errori::after { content: ''; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--clr-danger); }

    .scheda-corpo {
        background: #FFFFFF;
        border: 1px solid var(--clr-divider);
        border-radius: 0 0 0.5rem 0.5rem;
        padding: 1.25rem;
    }

    .scheda-sezione { margin-bottom: 1.25rem; }
    .scheda-sezione__titolo {
        float: none;
        width: 100%;
        font-size: 0.75rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        color: var(--clr-area);
        border-bottom: 1px solid var(--clr-divider);
        padding-bottom: 0.35rem;
        margin-bottom: 0.85rem;
    }

    .scelta-stato__voce { padding: 0.45rem 0 0.45rem 1.75rem; border-bottom: 1px solid var(--clr-divider); margin: 0; }
    .scelta-stato__voce:last-child { border-bottom: 0; }
    .scelta-stato__voce .form-check-input { margin-left: -1.75rem; }

    /* Percorsi e GPX */
    .gpx-carica { display: flex; flex-direction: column; gap: 0.6rem; margin-top: 0.25rem; }

    .gpx-dropzone {
        display: flex;
        align-items: center;
        gap: 0.75rem;
        padding: 0.85rem 1rem;
        border: 1.5px dashed var(--clr-border-strong);
        border-radius: 0.5rem;
        background: var(--clr-bg);
        cursor: pointer;
        font-size: 0.875rem;
        margin: 0;
        transition: background-color 0.15s ease, border-color 0.15s ease;
    }
    .gpx-dropzone > .material-symbols-outlined { font-size: 1.8rem; color: var(--clr-area); }
    .gpx-dropzone:hover, .gpx-dropzone.is-dragover { border-color: var(--clr-ocra); background: rgba(216, 154, 63, 0.08); }
    .gpx-dropzone:focus-within { box-shadow: var(--focus-ring); border-color: var(--clr-ocra); }
    .gpx-dropzone--compatta { margin-top: 0.75rem; padding: 0.65rem 0.75rem; font-size: 0.82rem; }
    .gpx-dropzone--compatta > .material-symbols-outlined { font-size: 1.5rem; }

    .gpx-file { display: flex; align-items: center; gap: 0.35rem; margin: 0; font-size: 0.82rem; flex-wrap: wrap; }
    .gpx-file .material-symbols-outlined { font-size: 1.1rem; color: var(--clr-text-muted); }

    .gpx-estratti {
        display: flex;
        align-items: center;
        gap: 0.75rem;
        padding: 0.7rem 0.85rem;
        border-radius: 0.375rem;
        background: var(--clr-warning-bg);
        border-left: 4px solid var(--clr-warning);
        font-size: 0.875rem;
        flex-wrap: wrap;
    }
    .gpx-estratti > .material-symbols-outlined { color: var(--clr-warning); }
    .gpx-estratti--ok { background: var(--clr-success-bg); border-left-color: var(--clr-success); }
    .gpx-estratti--ok > .material-symbols-outlined { color: var(--clr-success); }
    .gpx-estratti .mono { font-weight: 500; }

    .anteprima-traccia {
        background: var(--clr-surface-alt);
        border: 1px solid var(--clr-divider);
        border-radius: 0.5rem;
        padding: 0.6rem;
    }
    .anteprima-traccia svg { display: block; width: 100%; height: auto; border-radius: 0.375rem; }
    .anteprima-traccia__profilo svg { height: 90px; background: #FFFFFF; }
    .mappa-fondo { fill: #FFFFFF; }
    .mappa-traccia { fill: none; stroke: var(--clr-area); stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
    .mappa-traccia-ombra { fill: none; stroke: rgba(216, 154, 63, 0.35); stroke-width: 7; stroke-linejoin: round; stroke-linecap: round; }
    .mappa-partenza { fill: var(--clr-success); stroke: #FFFFFF; stroke-width: 2; }
    .mappa-arrivo { fill: var(--clr-blu); stroke: #FFFFFF; stroke-width: 2; }
    .profilo-area { fill: var(--clr-area-surface); }
    .profilo-linea { fill: none; stroke: var(--clr-area); stroke-width: 2; }
    .anteprima-traccia__didascalia { display: flex; justify-content: space-between; font-size: 0.75rem; color: var(--clr-text-muted); margin-top: 0.3rem; }

    /* Programma riordinabile */
    .righe-ordinabili { display: flex; flex-direction: column; gap: 0.4rem; }
    .riga-ordinabile {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        padding: 0.4rem 0.5rem;
        background: #FFFFFF;
        border: 1px solid var(--clr-border);
        border-radius: 0.375rem;
    }
    .riga-ordinabile__maniglia { cursor: grab; color: var(--clr-text-disabled); display: inline-flex; }
    .riga-ordinabile.is-trascinata { opacity: 0.5; border-style: dashed; }
    .riga-ordinabile.is-sopra { border-color: var(--clr-ocra); box-shadow: 0 -2px 0 var(--clr-ocra); }
    .riga-ordinabile__azioni { display: flex; gap: 0.15rem; }
    .riga-ordinabile__azioni .btn { --bs-btn-padding-y: 0.2rem; --bs-btn-padding-x: 0.3rem; min-width: 0; }
    .riga-ordinabile.is-spostata { animation: riga-evidenzia 0.6s ease-out; }


    @media (max-width: 767.98px) {
        .riga-ordinabile { flex-wrap: wrap; }
        .riga-ordinabile__campi { flex-basis: calc(100% - 2rem); }
        .riga-ordinabile__azioni { margin-left: auto; }
    }

    /* Tabelle con campi */
    .tabella-campi > :not(caption) > * > * { padding: 0.35rem 0.4rem; }
    .tabella-campi thead th { white-space: nowrap; }
    .tabella-campi .form-control, .tabella-campi .form-select { min-width: 7rem; }
    .tabella-campi .input-group { flex-wrap: nowrap; }
    .tabella-campi .input-group > .form-control { min-width: 5rem; }

    .numero-quota { font-family: var(--font-titoli); font-size: 2.25rem; font-weight: 700; color: var(--clr-blu); line-height: 1; }
    .numero-quota .mono { font-family: var(--font-titoli); }

    /* Iscrizioni */
    .link-iscrizione {
        border: 1px solid var(--clr-border);
        border-radius: 0.5rem;
        padding: 0.85rem 1rem 0.75rem;
        margin-bottom: 0.85rem;
    }
    .link-iscrizione--incompleto { border-color: rgba(181, 118, 31, 0.55); background: rgba(251, 240, 220, 0.35); }
    .link-iscrizione__titolo {
        float: none;
        width: auto;
        font-size: 0.9rem;
        font-weight: 600;
        display: flex;
        align-items: center;
        gap: 0.4rem;
        flex-wrap: wrap;
        margin-bottom: 0.6rem;
    }
    .finestra-anteprima { border-top: 1px solid var(--clr-divider); padding-top: 0.75rem; font-size: 0.875rem; }

    /* SEO e condivisione */
    .anteprima-google {
        background: #FFFFFF;
        border: 1px solid var(--clr-divider);
        border-radius: 0.5rem;
        padding: 0.9rem 1rem;
        font-family: Arial, Helvetica, sans-serif;
        max-width: 38rem;
    }
    .anteprima-google p { margin: 0; }
    .anteprima-google__sito { font-size: 0.78rem; color: #4D5156; display: flex; align-items: center; gap: 0.4rem; }
    .anteprima-google__favicon { width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--clr-surface-alt); display: inline-flex; align-items: center; justify-content: center; }
    .anteprima-google .anteprima-google__titolo { font-size: 1.15rem; color: #1A0DAB; line-height: 1.3; margin: 0.25rem 0 0.2rem; }
    .anteprima-google__descrizione { font-size: 0.85rem; color: #4D5156; line-height: 1.5; }

    .anteprima-social {
        border: 1px solid var(--clr-border);
        border-radius: 0.5rem;
        overflow: hidden;
        max-width: 30rem;
        background: #FFFFFF;
    }
    .anteprima-social__immagine { position: relative; aspect-ratio: 1200 / 630; background: var(--clr-blu-profondo); }
    .anteprima-social__immagine > img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .anteprima-social__grafica {
        position: absolute;
        inset: 0;
        display: none;
        flex-direction: column;
        justify-content: flex-end;
        gap: 0.3rem;
        padding: 1rem 1.15rem;
        color: #FFFFFF;
        background:
            radial-gradient(circle at 85% 15%, rgba(216, 154, 63, 0.4), transparent 45%),
            linear-gradient(160deg, #123A5A 0%, #0C2A42 70%);
        border-bottom: 5px solid var(--clr-ocra);
    }
    .anteprima-social.mostra-grafica .anteprima-social__grafica { display: flex; }
    .anteprima-social__grafica img { position: absolute; top: 0.85rem; left: 1.15rem; height: 38px; width: auto; }
    .anteprima-social__titolo { font-family: var(--font-titoli); font-weight: 700; font-size: 1.45rem; text-transform: uppercase; line-height: 1.05; }
    .anteprima-social__dati { font-family: var(--font-mono); font-size: 0.78rem; color: rgba(255, 255, 255, 0.85); }
    .anteprima-social__testo { padding: 0.6rem 0.85rem; background: #F0F2F5; }
    .anteprima-social__testo p { margin: 0; }
    .anteprima-social__dominio { font-size: 0.7rem; color: #65676B; letter-spacing: 0.02em; }
    .anteprima-social__titolo-link { font-weight: 600; font-size: 0.9rem; color: #050505; line-height: 1.3; }

    /* ---------------------------------------------------------------- Timeline del registro modifiche */
    .registro-timeline__voce { display: flex; gap: 0.85rem; position: relative; padding-bottom: 1.25rem; }
    .registro-timeline__voce::before {
        content: '';
        position: absolute;
        left: 1.05rem;
        top: 2.3rem;
        bottom: 0;
        width: 2px;
        background: var(--clr-divider);
    }
    .registro-timeline__voce:last-child { padding-bottom: 0; }
    .registro-timeline__voce:last-child::before { display: none; }
    .registro-timeline__icona {
        width: 2.2rem;
        height: 2.2rem;
        border-radius: 50%;
        flex-shrink: 0;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: var(--clr-surface-alt);
        color: var(--clr-text-muted);
    }
    .registro-timeline__icona .material-symbols-outlined { font-size: 1.15rem; }
    .registro-timeline__icona--successo { background: var(--clr-success-bg); color: var(--clr-success); }
    .registro-timeline__icona--info { background: var(--clr-info-bg); color: var(--clr-info); }
    .registro-timeline__icona--attesa { background: var(--clr-warning-bg); color: var(--clr-warning); }
    .registro-timeline__icona--pericolo { background: var(--clr-danger-bg); color: var(--clr-danger); }
    .registro-timeline__corpo { flex: 1; min-width: 0; }
    .registro-timeline__testa { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.25rem; }
    .registro-timeline__descrizione { margin: 0 0 0.5rem; font-size: 0.9rem; }

    .diff-audit { border: 1px solid var(--clr-divider); max-width: 40rem; }
    .diff-audit th[scope="row"] { color: var(--clr-text-muted); width: 34%; }
    .table > tbody > tr > .diff-audit__prima { background: rgba(176, 58, 46, 0.06); color: var(--clr-danger); text-decoration: line-through; text-decoration-color: rgba(176, 58, 46, 0.45); }
    .table > tbody > tr > .diff-audit__dopo { background: rgba(47, 125, 82, 0.07); color: var(--clr-success); font-weight: 500; }

    /* ---------------------------------------------------------------- Risultati */
    .classifica .riga-rettificata > * { background-color: rgba(251, 240, 220, 0.75) !important; }
    .classifica .riga-rettificata > td:first-child { box-shadow: inset 3px 0 0 var(--clr-warning); }

    .risultato-scheda__nome { font-family: var(--font-titoli); font-size: 1.5rem; font-weight: 600; color: var(--clr-blu); display: flex; align-items: center; gap: 0.4rem; margin-bottom: 0.75rem; }
    .risultato-scheda__nome .mono { font-size: 1.1rem; }

    /* Import: passi */
    .passi-import { display: flex; gap: 0.5rem; list-style: none; padding: 0; margin: 0 0 1.5rem; }
    .passi-import__voce {
        flex: 1;
        display: flex;
        align-items: center;
        gap: 0.6rem;
        padding: 0.6rem 0.85rem;
        border: 1px solid var(--clr-border);
        border-radius: 0.5rem;
        background: #FFFFFF;
        color: var(--clr-text-muted);
        font-size: 0.875rem;
    }
    .passi-import__numero {
        width: 1.75rem;
        height: 1.75rem;
        border-radius: 50%;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: var(--clr-surface-alt);
        font-family: var(--font-mono);
        font-weight: 600;
        flex-shrink: 0;
    }
    .passi-import__numero .material-symbols-outlined { font-size: 1.1rem; }
    .passi-import__voce--attivo { border-color: var(--clr-area); color: var(--clr-text); font-weight: 600; box-shadow: inset 0 -3px 0 var(--clr-area); }
    .passi-import__voce--attivo .passi-import__numero { background: var(--clr-area); color: #FFFFFF; }
    .passi-import__voce--fatto .passi-import__numero { background: var(--clr-success-bg); color: var(--clr-success); }

    @media (max-width: 575.98px) {
        .passi-import__voce:not(.passi-import__voce--attivo) .passi-import__label { display: none; }
        .passi-import__voce:not(.passi-import__voce--attivo) { flex: 0 0 auto; }
    }

    .sorgenti-import { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 0.5rem; }
    .sorgente-import {
        border: 1px solid var(--clr-border);
        border-radius: 0.5rem;
        padding: 0.75rem 0.85rem 0.75rem 2.4rem;
        margin: 0;
    }
    .sorgente-import:has(:checked) { border-color: var(--clr-ocra); background: rgba(216, 154, 63, 0.07); }
    .sorgente-import .form-check-input { margin-left: -1.6rem; }
    .sorgente-import .form-check-label .material-symbols-outlined { font-size: 1.15rem; vertical-align: -0.2em; color: var(--clr-area); margin-right: 0.15rem; }

    .esito-conteggio {
        display: grid;
        grid-template-columns: auto 1fr;
        grid-template-rows: auto auto;
        column-gap: 0.6rem;
        align-items: center;
        padding: 0.75rem 0.9rem;
        border-radius: 0.5rem;
        border: 1px solid var(--clr-border);
        background: #FFFFFF;
        height: 100%;
    }
    .esito-conteggio > .material-symbols-outlined { grid-row: span 2; font-size: 1.6rem; }
    .esito-conteggio__numero { font-family: var(--font-titoli); font-size: 1.9rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
    .esito-conteggio__label { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; }
    .esito-conteggio__label span { font-weight: 400; text-transform: none; letter-spacing: normal; color: var(--clr-text-muted); }
    .esito-conteggio--neutro > .material-symbols-outlined { color: var(--clr-text-muted); }
    .esito-conteggio--successo { border-color: rgba(47, 125, 82, 0.35); }
    .esito-conteggio--successo > .material-symbols-outlined, .esito-conteggio--successo .esito-conteggio__numero { color: var(--clr-success); }
    .esito-conteggio--info { border-color: rgba(44, 110, 155, 0.35); }
    .esito-conteggio--info > .material-symbols-outlined, .esito-conteggio--info .esito-conteggio__numero { color: var(--clr-info); }
    .esito-conteggio--attesa { border-color: rgba(181, 118, 31, 0.5); background: var(--clr-warning-bg); }
    .esito-conteggio--attesa > .material-symbols-outlined, .esito-conteggio--attesa .esito-conteggio__numero { color: var(--clr-warning); }

    .legenda-import {
        display: flex;
        gap: 0.75rem;
        align-items: center;
        padding: 0.85rem 1rem;
        border: 1px solid var(--clr-border-accent);
        border-left: 4px solid var(--clr-ocra);
        border-radius: 0.375rem;
        background: rgba(216, 154, 63, 0.08);
        font-size: 0.9rem;
    }
    .legenda-import > .material-symbols-outlined { font-size: 1.6rem; color: var(--clr-ocra-testo); }

    .riga-import--invariata > td { color: var(--clr-text-muted); }
    .riga-import--nuova > * { background-color: rgba(229, 242, 234, 0.6) !important; }
    .riga-import--aggiornata > * { background-color: rgba(228, 239, 247, 0.6) !important; }
    .riga-import--preservata > * { background-color: var(--clr-warning-bg) !important; }
    .riga-import--preservata > td:first-child { box-shadow: inset 3px 0 0 var(--clr-warning); }

    .diff-inline { display: inline-flex; align-items: center; gap: 0.25rem; flex-wrap: wrap; }
    .diff-inline del { color: var(--clr-danger); }
    .diff-inline ins { color: var(--clr-success); text-decoration: none; font-weight: 600; }
    .diff-inline .material-symbols-outlined { font-size: 1rem; color: var(--clr-text-muted); }

    .esito-import__icona {
        width: 4rem;
        height: 4rem;
        border-radius: 50%;
        background: var(--clr-success-bg);
        color: var(--clr-success);
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
    .esito-import__icona .material-symbols-outlined { font-size: 2.2rem; }
    .esito-import__riepilogo { display: flex; justify-content: center; flex-wrap: wrap; gap: 0.5rem 1.25rem; margin: 1rem 0; }
    .esito-import__riepilogo .mono { font-weight: 600; font-size: 1.1rem; color: var(--clr-blu); }

    /* ---------------------------------------------------------------- Squadra */
    .foto-atleta { display: flex; flex-direction: column; align-items: center; }
    .foto-atleta__img { border-radius: 50%; object-fit: cover; }
    .foto-atleta .gpx-dropzone { width: 100%; }

    .gara-calendario--nostra { border-left: 3px solid var(--clr-info); }
    .gara-calendario__riga { display: flex; gap: 1rem; align-items: flex-start; flex-wrap: wrap; }
    .gara-calendario__data {
        width: 3.5rem;
        text-align: center;
        border: 1px solid var(--clr-border);
        border-radius: 0.375rem;
        overflow: hidden;
        flex-shrink: 0;
    }
    .gara-calendario__giorno { display: block; font-family: var(--font-titoli); font-size: 1.6rem; font-weight: 700; line-height: 1.2; color: var(--clr-blu); }
    .gara-calendario__mese { display: block; background: var(--clr-area); color: #FFFFFF; font-size: 0.68rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; padding: 0.1rem 0; }
    .gara-calendario__nome { font-family: var(--font-titoli); font-size: 1.25rem; font-weight: 600; color: var(--clr-text); margin: 0; }
    .gara-calendario__meta { font-size: 0.82rem; color: var(--clr-text-muted); margin: 0.1rem 0 0.4rem; }
    .gara-calendario__societa { display: flex; flex-direction: column; align-items: flex-end; gap: 0.15rem; margin-left: auto; text-align: right; }
    .gara-calendario__posizione { display: inline-flex; align-items: center; gap: 0.2rem; font-size: 1.2rem; font-weight: 600; color: var(--clr-blu); }
    .gara-calendario__posizione .material-symbols-outlined { color: var(--clr-argento); }
    .gara-calendario__posizione--prima .material-symbols-outlined { color: var(--clr-oro); }

    .piazzamenti-gara {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
        gap: 0.35rem 1rem;
        margin: 0.85rem 0 0;
        padding-top: 0.75rem;
        border-top: 1px solid var(--clr-divider);
        font-size: 0.875rem;
    }
    .piazzamenti-gara li { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }
    .piazzamenti-gara .podio { min-width: 3.1rem; }
    .piazzamenti-gara .text-muted { font-size: 0.8rem; }

    @media (max-width: 575.98px) {
        .gara-calendario__societa { margin-left: 4.5rem; align-items: flex-start; text-align: left; }
    }

    /* ---------------------------------------------------------------- Volontari */
    .copertura-turno { display: inline-block; font-family: var(--font-mono); font-size: 0.78rem; font-weight: 600; padding: 0.1rem 0.45rem; border-radius: 0.25rem; }
    .copertura-turno--completa { background: var(--clr-success-bg); color: var(--clr-success); }
    .copertura-turno--attesa { background: var(--clr-warning-bg); color: var(--clr-warning); }
    .copertura-turno--scoperta { background: var(--clr-danger-bg); color: var(--clr-danger); }
    .legenda-copertura { display: inline-flex; gap: 0.35rem; flex-wrap: wrap; text-transform: none; letter-spacing: normal; }
    .legenda-copertura .copertura-turno { font-family: var(--font-testo); font-weight: 500; font-size: 0.72rem; }

    .griglia-turni th[scope="row"] { white-space: nowrap; }
    .griglia-turni td { min-width: 11rem; }
    .cella-turno { display: flex; flex-direction: column; gap: 0.25rem; }
    .cella-turno__valore { font-size: 0.85rem; }
    .cella-turno__valore .mono { font-weight: 600; font-size: 0.95rem; }
    .cella-turno__attesa { font-size: 0.75rem; color: var(--clr-warning); font-weight: 500; }
    .cella-turno__barra { display: block; height: 0.4rem; border-radius: 999px; background: var(--clr-divider); overflow: hidden; }
    .cella-turno__barra > span { display: block; height: 100%; border-radius: inherit; background: var(--clr-danger); }
    .cella-turno--attesa .cella-turno__barra > span { background: var(--clr-warning); }
    .cella-turno--completa .cella-turno__barra > span { background: var(--clr-success); }
    .cella-turno--completa .mono { color: var(--clr-success); }
    .cella-turno--scoperta .mono { color: var(--clr-danger); }

    /* ---------------------------------------------------------------- Area organizzatori */
    .contesto-edizione {
        display: flex;
        align-items: center;
        gap: 0.75rem;
        flex-wrap: wrap;
        padding: 0.75rem 1rem;
        background: var(--clr-area-surface);
        border: 1px solid var(--clr-area-border);
        border-radius: 0.5rem;
    }
    .contesto-edizione > .material-symbols-outlined { color: var(--clr-area); font-size: 1.6rem; }

    .locandina-mini {
        position: relative;
        aspect-ratio: 3 / 4;
        max-width: 15rem;
        margin: 0 auto;
        padding: 1.1rem;
        border-radius: 0.375rem;
        color: #FFFFFF;
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        gap: 0.3rem;
        overflow: hidden;
        background:
            radial-gradient(circle at 80% 20%, rgba(216, 154, 63, 0.45), transparent 45%),
            linear-gradient(170deg, #123A5A 0%, #0C2A42 70%);
        box-shadow: var(--shadow-hover);
    }
    .locandina-mini > img { position: absolute; top: 1rem; left: 1rem; height: 34px; width: auto; }
    .locandina-mini__numero { font-family: var(--font-titoli); font-size: 3.2rem; font-weight: 700; line-height: 0.9; color: var(--clr-ocra); }
    .locandina-mini__titolo { font-family: var(--font-titoli); font-size: 1.45rem; font-weight: 700; text-transform: uppercase; line-height: 1; }
    .locandina-mini__dedica { font-size: 0.72rem; color: rgba(255, 255, 255, 0.8); font-style: italic; }
    .locandina-mini__data { font-family: var(--font-titoli); font-weight: 600; font-size: 1.05rem; background: var(--clr-ocra); color: var(--clr-text); align-self: flex-start; padding: 0.1rem 0.45rem; border-radius: 0.2rem; margin-top: 0.3rem; }
    .locandina-mini__dati { font-family: var(--font-mono); font-size: 0.68rem; color: rgba(255, 255, 255, 0.85); }

    .comunicato-testo { font-size: 0.82rem; line-height: 1.5; background: var(--clr-bg); flex: 1; min-height: 16rem; }

    .qr-codice { border: 1px solid var(--clr-divider); border-radius: 0.375rem; padding: 0.4rem; background: #FFFFFF; max-width: 100%; height: auto; }

    .loghi-griglia { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; }
    .logo-tessera {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: space-between;
        gap: 0.5rem;
        padding: 0.85rem 0.5rem 0.5rem;
        border: 1px solid var(--clr-border);
        border-radius: 0.375rem;
        background: #FFFFFF;
        text-decoration: none;
        font-size: 0.75rem;
        color: var(--clr-text-muted);
        min-height: 8rem;
    }
    .logo-tessera img { max-width: 100%; height: 56px; width: auto; object-fit: contain; }
    .logo-tessera--scuro { background: var(--clr-blu); color: rgba(255, 255, 255, 0.8); border-color: var(--clr-blu); }
    .logo-tessera:hover { box-shadow: var(--shadow-hover); }
    .logo-tessera:focus-visible { outline: 0; box-shadow: var(--focus-ring); }

    .cartelli-griglia { display: grid; grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr)); gap: 0.5rem; }
    .cartello-gara {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 0.25rem;
        aspect-ratio: 7 / 5;
        padding: 0.5rem;
        border-radius: 0.375rem;
        text-align: center;
        font-family: var(--font-titoli);
        font-weight: 700;
        font-size: 0.95rem;
        text-transform: uppercase;
        line-height: 1.05;
    }
    .cartello-gara .material-symbols-outlined { font-size: 2rem; }
    .cartello-gara--direzione { background: var(--clr-ocra); color: var(--clr-text); }
    .cartello-gara--pericolo { background: #FFFFFF; color: var(--clr-danger); border: 3px solid var(--clr-danger); }
    .cartello-gara--ristoro { background: var(--clr-blu); color: #FFFFFF; }
    .cartello-gara--arrivo { background: var(--clr-text); color: #FFFFFF; background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.08) 0 10px, transparent 10px 20px); }

    .file-materiale li { display: flex; align-items: center; gap: 0.4rem; padding: 0.3rem 0; border-bottom: 1px solid var(--clr-divider); }
    .file-materiale li:last-child { border-bottom: 0; }
    .file-materiale .material-symbols-outlined { font-size: 1.1rem; color: var(--clr-text-muted); }
    .versioni-materiale li { padding: 0.15rem 0; }

    /* ---------------------------------------------------------------- Stampa («Esporta PDF» dei volontari) */
    @media print {
        .pagina-volontari .card { break-inside: auto; }
        .pagina-volontari .card-footer, .pagina-volontari .kpi { display: none !important; }
        .cella-turno__barra { border: 1px solid #888; }
        .no-print { display: none !important; }
    }

    /* Le select nella barra filtri mantengono lo spazio per la freccia */
    &.layout-admin .barra-filtri .form-select { padding-right: 2rem; }
}
