﻿
.dropzone-mymatch {
    position: relative;
    border: 2px dashed #98cf43;
    background-color: #c8f384;
    padding: 1em;
    min-height: 170px;
}
.dropzone-mymatch.dz-clickable {
    cursor: pointer;
}
.dropzone-mymatch.dz-clickable .dz-message,
.dropzone-mymatch.dz-clickable .dz-message span {
    cursor: pointer;
}
.dropzone-mymatch.dz-clickable * {
    cursor: default;
}
.dropzone-mymatch .dz-message {
    opacity: 1;
    -ms-filter: none;
    filter: none;
    font-size: 26px;
    font-weight: 300;
    text-align: center;
    padding: 60px 0;
}
.dropzone-mymatch.dz-drag-hover {
    border-color: rgba(0,0,0,0.15);
    background: rgba(0,0,0,0.04);
}
.dropzone-mymatch.dz-started .dz-message {
    display: none;
}
.dropzone-mymatch .dz-preview,
.dropzone-previews .dz-preview {
    background: rgba(255,255,255,0.8);
    position: relative;
    display: inline-block;
    margin: 17px;
    vertical-align: top;
    border: 1px solid #acacac;
    padding: 6px 6px 6px 6px;
}
.dropzone-mymatch .dz-preview.dz-file-preview [data-dz-thumbnail],
.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] {
    display: none;
}
.dropzone-mymatch .dz-preview .dz-details,
.dropzone-previews .dz-preview .dz-details {
    width: 100px;
    height: 100px;
    position: relative;
    background: #ebebeb;
    padding: 5px;
    margin-bottom: 22px;
}
.dropzone-mymatch .dz-preview .dz-details .dz-filename,
.dropzone-previews .dz-preview .dz-details .dz-filename {
    overflow: hidden;
    height: 100%;
}
.dropzone-mymatch .dz-preview .dz-details img,
.dropzone-previews .dz-preview .dz-details img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    height: 100px;
}
.dropzone-mymatch .dz-preview .dz-details .dz-size,
.dropzone-previews .dz-preview .dz-details .dz-size {
    position: absolute;
    bottom: -28px;
    left: 3px;
    height: 28px;
    line-height: 28px;
}
.dropzone-mymatch .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
    display: block;
}
.dropzone-mymatch .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
    display: block;
}
.dropzone-mymatch .dz-preview:hover .dz-details img,
.dropzone-previews .dz-preview:hover .dz-details img {
    display: none;
}
.dropzone-mymatch .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone-mymatch .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
    display: none;
    position: absolute;
    width: 40px;
    height: 40px;
    font-size: 30px;
    text-align: center;
    right: -10px;
    top: -10px;
}
.dropzone-mymatch .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
    color: #8cc657;
}
.dropzone-mymatch .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
    color: #ee162d;
}
.dropzone-mymatch .dz-preview .dz-progress,
.dropzone-previews .dz-preview .dz-progress {
    position: absolute;
    top: 100px;
    left: 6px;
    right: 6px;
    height: 6px;
    background: #d7d7d7;
    display: none;
}
.dropzone-mymatch .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 0%;
    background-color: #8cc657;
}
.dropzone-mymatch .dz-preview.dz-processing .dz-progress,
.dropzone-previews .dz-preview.dz-processing .dz-progress {
    display: block;
}
.dropzone-mymatch .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
    display: none;
    position: absolute;
    top: -5px;
    left: -20px;
    background: rgba(245,245,245,0.8);
    padding: 8px 10px;
    color: #800;
    min-width: 140px;
    max-width: 500px;
    z-index: 500;
}
.dropzone-mymatch .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
    display: block;
}

#gareTable tr.annullata { text-decoration: line-through; }
#gareTable tr.ritiro-squadra { background-color: #ccc; }
#gareTable tr.ritiro-squadra:nth-child(odd) > td { background-color: #bbb; }
#gareTable tr.variazione { border: 2px dotted red; }
#gareTable tr.spostamento { background-color: #ff8c66; }
#gareTable tr.spostamento:nth-child(odd) > td { background-color: #ff7d52; }
#gareTable tr.rigiocata { background-color: #ffde4c; }
#gareTable tr.rigiocata:nth-child(odd) > td { background-color: #ffd20a; }

.classifica .non-omologata { color: red; font-weight: bold; }

#squadreTable > tbody > tr.ritirata { background-color: #bbb; }
#squadreTable > tbody > tr.ritirata:nth-child(odd) > td { background-color: #b9b9b9; }

.tagLoader,
.garaLoader {
    position: absolute;
    background-color: #000;
    opacity: 0.4;
    z-index: 200;
}

.tagLoader img,
.garaLoader img {
    width: 100%;
    height: 100%;
}

.block-adempimento .btn { margin-top: 20px; }

table.mymatch-dispo {
    width: 100%;
}
.mymatch-dispo th, .mymatch-dispo td { text-align: center; border: 1px solid #ffcc00; padding: 3px 0px; }
.mymatch-dispo .mymatch-dispo-sports { background-color: #004c70; color: #fff; padding: 8px 0px; }
.mymatch-dispo .mymatch-dispo-days { background-color: #006495; color: #fff; padding: 5px 0px; }
.mymatch-dispo tbody th { background-color: #006495; color: #fff; }
.mymatch-dispo tbody tr:nth-child(2n+1) td { background-color: #fff; }
.mymatch-dispo tbody tr:nth-child(2n) td { background-color: #e0f4ff }
.mymatch-dispoInfo .edit,
.mymatch-dispo .edit { display: none; }

table.dispo-timetable-table {
    width: 100%;
}
.dispo-timetable-table th,
.dispo-timetable-table td {
    text-align: center;
    border: 1px solid #ffcc00;
    padding: 3px 5px;
}
.dispo-timetable-table thead tr.mymatch-dispo-sports th {
    background-color: #004c70;
    color: #fff;
    padding: 8px 0;
}
.dispo-timetable-table thead tr.mymatch-dispo-days th {
    background-color: #006495;
    color: #fff;
    padding: 5px 0;
}
.dispo-timetable-table tbody th {
    background-color: #006495;
    color: #fff;
}
.dispo-timetable-table tbody tr:nth-child(2n+1) td {
    background-color: #fff;
}
.dispo-timetable-table tbody tr:nth-child(2n) td {
    background-color: #e0f4ff;
}

.indispo-fascia-slider {
    position: relative;
    height: 24px;
    margin: 15px 10px 8px;
    background-color: #e0f4ff;
    background-image: repeating-linear-gradient(to right, #ffffff 0, #ffffff 1px, transparent 1px, transparent calc(100% / 96));
    border: 1px solid #006495;
    border-radius: 3px;
}
.indispo-fascia-slider .ui-slider-range {
    background-color: #004c70;
}
.indispo-fascia-slider .ui-slider-handle {
    top: -6px;
    width: 0;
    height: 0;
    margin-left: -6px;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 10px solid #006495;
    background: none;
    outline: none;
    cursor: ew-resize;
}
.indispo-fascia-label {
    font-weight: bold;
    color: #004c70;
    margin-top: 4px;
}

.mymatch-indispo .past td { color: #ccc; }

#campionatoWizard li { border-radius: 5px; -moz-border-radius: 5px; }
#campionatoWizard li.label-success a { color: #fff; }

#campionatoWizard li.label-primary a { color: #fff; }
#campionatoWizard li.label-primary:hover a { color: #428bca; }

.contatto-privato { color: #fd9822; }

.schemaPartita { border: solid 1px black; display: flex;}
.schemaPartita div { float: left; text-align: center; margin: 0; padding: 2px; }
.schemaPartitaRiga { width: 15%; background-color: #ccc; }
.schemaPartitaSquadra { width: 27%; }
.schemaForm > .schemaPartitaSquadra { background-color: #ffd800; }
.schemaPartitaVS { width: 16%; background-color: #ccc; }
.schemaPartitaCommands { width: 15%; background-color: #ccc; }

.label { white-space: normal; }

.risultati-table th,
.risultati-table input { text-align: center; }
.col-head-finale,
.col-finale { padding: 0 10px; text-align: center; }
.span-finale { margin: 0 auto; font-size: 12px; font-weight: bold; }

.section-title { font-weight: bold; border-bottom: 1px solid #000; }
.switch-label { margin: -5px 0 0 5px; }

.approvazione-title { background-color: #ff9595; font-size: 20px; font-weight: bold; padding: 10px; }
.approvazione-content { background-color: #fed3d3; padding: 10px; }

.widget-sdd {
    color: #000; 
    background-color: #ccc;
    border-color: #aaa;
}

.alert-default {
    color: #000;
    background-color: #ccc;
    border-color: #aaa;
}

#arbitriTable tr.non-completata td { background-color: #ffda67; }
-modal_container_loader { margin: 20px auto; }

table.dataTable thead th, table.dataTable thead td,
table.dataTable tbody th, table.dataTable tbody td,
table.dataTable tfoot th, table.dataTable tfoot td {
    padding: 3px 5px !important;
}

.option-label { margin-left: 10px; }

#manifestazioneIscrizioneNewState option { font-size: 12pt; }

.table-header-vertical { writing-mode: vertical-lr; text-orientation: mixed; }

.manifestazioniGruppoSocietaSquadre thead > tr > th,
.manifestazioniGruppoSocietaSquadre td:not(:first-child) { text-align: center; }
.manifestazioniGruppoSocietaSquadre thead > tr:first-child th:first-child { text-align: left; }

.manifestazioniGruppoSocietaSquadre td.sport-1,
.manifestazioniGruppoSocietaSquadre th.sport-1 { border-left: 2px solid black; }
.manifestazioniGruppoSocietaSquadre td.sport-1 ~ td.sport-1,
.manifestazioniGruppoSocietaSquadre th.sport-1 ~ th.sport-1 { border-left: 1px solid white; }
.manifestazioniGruppoSocietaSquadre th.sport-1 { background-color: #0094ff; color: white; font-weight: 700; }
.manifestazioniGruppoSocietaSquadre td.sport-1:nth-child(2n+1),
.manifestazioniCampionatiTable tbody.sport-1 tr:nth-child(2n+1) td { background-color: #cae8fe; }
.manifestazioniGruppoSocietaSquadre td.sport-1:nth-child(2n),
.manifestazioniCampionatiTable tbody.sport-1 tr:nth-child(2n) td { background-color: #b0deff; }
.manifestazioniCampionatiTable tbody.sport-1 tr:first-child td { background-color: #0094ff; color: white; font-size: 14pt; }
.manifestazioniCampionatiTable tbody.sport-1 tr:last-child td { background-color: #0094ff; color: white; font-weight: 700; }

.manifestazioniGruppoSocietaSquadre td.sport-3,
.manifestazioniGruppoSocietaSquadre th.sport-3 { border-left: 2px solid black; }
.manifestazioniGruppoSocietaSquadre td.sport-3 ~ td.sport-3,
.manifestazioniGruppoSocietaSquadre th.sport-3 ~ th.sport-3 { border-left: 1px solid white; }
.manifestazioniGruppoSocietaSquadre th.sport-3 { background-color: #ff0000; color: white; font-weight: 700; }
.manifestazioniGruppoSocietaSquadre td.sport-3:nth-child(2n+1),
.manifestazioniCampionatiTable tbody.sport-3 tr:nth-child(2n+1) td { background-color: #ffc4c4; }
.manifestazioniGruppoSocietaSquadre td.sport-3:nth-child(2n),
.manifestazioniCampionatiTable tbody.sport-3 tr:nth-child(2n) td { background-color: #ffa9a9; }
.manifestazioniCampionatiTable tbody.sport-3 tr:first-child td { background-color: #ff0000; color: white; font-size: 14pt; }
.manifestazioniCampionatiTable tbody.sport-3 tr:last-child td { background-color: #ff0000; color: white; font-weight: 700; }

.manifestazioniGruppoSocietaSquadre td.sport-2,
.manifestazioniGruppoSocietaSquadre th.sport-2 { border-left: 2px solid black; }
.manifestazioniGruppoSocietaSquadre td.sport-2 ~ td.sport-2,
.manifestazioniGruppoSocietaSquadre th.sport-2 ~ th.sport-2 { border-left: 1px solid white; }
.manifestazioniGruppoSocietaSquadre th.sport-2 { background-color: #ff6a00; color: white; font-weight: 700; }
.manifestazioniGruppoSocietaSquadre td.sport-2:nth-child(2n+1),
.manifestazioniCampionatiTable tbody.sport-2 tr:nth-child(2n+1) td { background-color: #ffe2cd; }
.manifestazioniGruppoSocietaSquadre td.sport-2:nth-child(2n),
.manifestazioniCampionatiTable tbody.sport-2 tr:nth-child(2n) td { background-color: #ffc15e; }
.manifestazioniCampionatiTable tbody.sport-2 tr:first-child td { background-color: #ff6a00; color: white; font-size: 14pt; }
.manifestazioniCampionatiTable tbody.sport-2 tr:last-child td { background-color: #ff6a00; color: white; font-weight: 700; }

.manifestazioniGruppoSocietaSquadre td.sport-5,
.manifestazioniGruppoSocietaSquadre th.sport-5 { border-left: 2px solid black; }
.manifestazioniGruppoSocietaSquadre td.sport-5 ~ td.sport-5,
.manifestazioniGruppoSocietaSquadre th.sport-5 ~ th.sport-5 { border-left: 1px solid white; }
.manifestazioniGruppoSocietaSquadre th.sport-5 { background-color: #068643; color: white; font-weight: 700; }
.manifestazioniGruppoSocietaSquadre td.sport-5:nth-child(2n+1),
.manifestazioniCampionatiTable tbody.sport-5 tr:nth-child(2n+1) td { background-color: #00ef72; }
.manifestazioniGruppoSocietaSquadre td.sport-5:nth-child(2n),
.manifestazioniCampionatiTable tbody.sport-5 tr:nth-child(2n) td { background-color: #03dc6b; }
.manifestazioniCampionatiTable tbody.sport-5 tr:first-child td { background-color: #068643; color: white; font-size: 14pt; }
.manifestazioniCampionatiTable tbody.sport-5 tr:last-child td { background-color: #068643; color: white; font-weight: 700; }

.manifestazioniGruppoSocietaSquadre th.tot-camp { text-align: center; }
.manifestazioniGruppoSocietaSquadre tr.extra-comitato td:nth-child(1),
.manifestazioniGruppoSocietaSquadre tr.extra-comitato td:nth-child(2) { background-color: #98cf43; }


.element-loader {
    position: absolute;
    background-color: #000;
    opacity: 0.4;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    border-radius: 5px;
}

.element-loader-wheel {
    animation: spin 1s infinite linear;
    border: 2px solid rgba(30, 30, 30, 0.5);
    border-left: 4px solid #fff;
    border-radius: 50%;
    height: 30px;
    margin: 10px auto 0;
    width: 30px;
}

.element-loader-text {
    color: #fff;
    font-family: arial, sans-serif;
}

    .element-loader-text:after {
        content: 'Loading';
        animation: load 2s linear infinite;
    }

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes load {
    0% { content: 'Loading'; }
    33% { content: 'Loading.'; }
    67% { content: 'Loading..'; }
    100% { content: 'Loading...'; }
}

/* Popup notifiche / messaggi interni / email (header) */
.toolbar-popup {
    position: absolute;
    z-index: 2000;
    width: 320px;
    max-height: 400px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
    padding: 10px 15px 15px;
}

.toolbar-popup-close {
    float: right;
    color: #999;
}

.toolbar-popup-close:hover {
    color: #333;
}

.toolbar-popup .popup-item {
    clear: both;
    padding: 8px 0;
    border-bottom: 1px solid #ccc;
}

.toolbar-popup .popup-item:last-child {
    border-bottom: none;
}

.toolbar-popup .popup-item span.popup-item-date {
    display: block;
    font-size: 10px;
    color: #999;
}

.toolbar-popup .popup-item h2 {
    margin: 0 0 3px;
    font-size: 13px;
    font-weight: 600;
}

.toolbar-popup .popup-item span {
    font-size: 12px;
    color: #777;
}

.toolbar-popup .popup-item.unread {
    cursor: pointer;
    background: #f5f9ff;
}

.toolbar-popup .popup-item.unread h2 {
    font-weight: 700;
}

.toolbar-popup .popup-item-footer {
    text-align: center;
    padding: 6px 0 2px;
}

.toolbar-popup .popup-item-link {
    margin-top: 4px;
}

#alerts-flag.disabled,
#messages-flag.disabled,
#emails-flag.disabled {
    opacity: 0.4;
    cursor: default;
}

.sidebar-nav a.disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}
/* Modale indisponibilità: righe delle sezioni disciplina.
   Niente .checkbox-inline di Bootstrap, che applica il margin-left solo dal secondo elemento
   in poi lasciando la prima riga disallineata. Switch e nome allineati al centro fra loro. */
.indispo-sezione-riga {
    display: block;
    margin-bottom: 4px;
}
.indispo-sezione-riga .switch {
    display: inline-block;
    margin: 0;
    vertical-align: middle;
}
.indispo-sezione-nome {
    display: inline-block;
    margin-left: 10px;
    vertical-align: middle;
}

/* Flag disponibile comandato dall'icona (baffo verde / x rossa) invece che dalla casella. */
.indispo-disponibile-toggle,
.indispo-disponibile-toggle:hover,
.indispo-disponibile-toggle:focus {
    display: inline-block;
    margin-top: 2px;
    text-decoration: none;
    cursor: pointer;
}
.indispo-disponibile-toggle .fa {
    vertical-align: middle;
    width: 28px;
    text-align: center;
}
.indispo-disponibile-label {
    margin-left: 8px;
    vertical-align: middle;
    color: #333333;
}

/* Avviso in cima alla tab disciplina ("ISCRIZIONI NON APERTE" / "Iscrizione non completata").
   Bootstrap mette .label al 75% del corpo (13px), cioè ~9,75px: troppo piccolo per un avviso
   che è l'unica cosa presente nella tab. Qui è un banner, non un'etichetta in linea. */
.mymatch-avviso-iscrizione {
    display: block;
    font-size: 16px;
    font-weight: 700;
    padding-top: 20px;
    padding-bottom: 20px;
    white-space: normal;
}

/* Alert delle notifiche (bootstrap-notify): il testo deve andare a capo.
   Il plugin applica display:inline-block al contenitore, che percio' si allarga
   per stare su una riga sola invece di mandare a capo. Sui messaggi di errore
   applicativo - che sono lunghi e possono contenere percorsi o nomi di classe
   senza spazi - il testo restava illeggibile o tagliato. */
[data-notify="container"] {
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

[data-notify="container"] [data-notify="message"] {
    display: block;
    max-width: 100%;
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

/* .text-muted troppo chiaro per essere letto.
   Attenzione a dove si corregge: bootstrap.min.css la definisce #777, ma quel valore
   non arriva mai a schermo perche' main.css - caricato dopo - la ridefinisce #999999.
   Su fondo bianco #999 da un contrasto di 2,85:1, meno della meta' della soglia 4,5:1
   di WCAG AA per il testo normale; #666 sale a 5,74:1.
   L'override sta qui e non in main.css o bootstrap.min.css: mymatch.css e' il nostro
   foglio, si carica dopo entrambi, e una correzione fatta dentro una libreria o dentro
   il foglio del template si perderebbe in silenzio al primo aggiornamento.
   Si ripetono tutti i selettori di main.css, hover e focus compresi: coprendo solo
   .text-muted, al passaggio del mouse il testo tornerebbe #999. */
.text-muted,
.text-muted:hover,
a.text-muted,
a.text-muted:hover,
a.text-muted:focus {
    color: #666666;
}

/* =================================================================
   MENU IN BARRA ORIZZONTALE (Docs/piani/2026-10-20-menu-layout-utente.md)
   Seconda riga dell'intestazione fissa, emessa da _navigation_top.ascx solo per chi l'ha scelta
   nelle preferenze. In barra stanno le etichette compatte dei gruppi; col clic su un'etichetta il
   gruppo si espande e mostra le sue aree alla destra; sopra un'area si apre sotto il pannello
   (una colonna, piu' una per ogni voce con figli). Le righe della colonna di sinistra passate in
   barra hanno la classe menu-in-topbar e si nascondono SOLO da 992px in su: sotto, la barra
   sparisce e la colonna torna completa, com'e' sempre stata sul telefono.
   ================================================================= */

/* La barra sta dentro <header>, sotto le due ul a float della navbar: clear la mette a capo e
   l'intestazione passa da 50 a 90px (il padding della pagina lo regola _navigation_top.ascx). */
header.navbar .menu-topbar {
    clear: both;
    height: 40px;
    background-color: #f9fafc;
    border-top: 1px solid #eaedf1;
}
/* Con la barra delle notifiche prioritarie la navbar e' in flex (vedi _header.ascx): la barra del
   menu deve andare a capo e prendersi tutta la riga, non mettersi in coda alle icone. */
.navbar-has-priority-bar { flex-wrap: wrap; }
.navbar-has-priority-bar > .menu-topbar { flex: 0 0 100%; }

.menu-topbar-nav {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    height: 40px;
    margin: 0;
    padding: 0 6px;
    list-style: none;
}

/* Un gruppo: etichetta + (quando e' espanso) le sue aree in fila. */
.menu-topbar-nav > li.menu-topbar-gruppo {
    display: flex;
    flex: 0 0 auto;
    align-items: stretch;
    height: 40px;
    margin-left: 6px;
    border-left: 1px solid #dbe1e8;
}
.menu-topbar-nav > li.menu-topbar-gruppo:first-child {
    margin-left: 0;
    border-left: none;
}
/* L'etichetta del gruppo e' una "pastiglia", per distinguerla a colpo d'occhio dalle aree (testo
   semplice): grigia da chiusa, scura con testo bianco da aperta. Il gruppo si apre e si chiude
   SOLO col clic sull'etichetta (menu_top.js): al passaggio del mouse cambia solo il colore. */
.menu-topbar-nav > li.menu-topbar-gruppo > a.menu-topbar-gruppo-toggle {
    display: block;
    align-self: center;
    margin: 0 4px;
    padding: 0 10px 0 12px;
    line-height: 26px;
    border-radius: 13px;
    background-color: #eaedf1;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .5px;
    text-transform: uppercase;
    color: #394263;
    white-space: nowrap;
    text-decoration: none;
    transition: background-color .2s ease-out, color .2s ease-out;
}
.menu-topbar-nav > li.menu-topbar-gruppo > a.menu-topbar-gruppo-toggle .fa-angle-right {
    margin-left: 3px;
    transition: transform .25s ease-out;
}
.menu-topbar-nav > li.menu-topbar-gruppo > a.menu-topbar-gruppo-toggle:hover {
    background-color: #dbe1e8;
}
.menu-topbar-nav > li.menu-topbar-gruppo.espanso > a.menu-topbar-gruppo-toggle {
    background-color: #394263;
    color: #ffffff;
}
.menu-topbar-nav > li.menu-topbar-gruppo.espanso > a.menu-topbar-gruppo-toggle .fa-angle-right {
    transform: rotate(180deg);
}
/* Il gruppo della pagina corrente: testo nel colore del template da chiuso, bordo da aperto. */
.menu-topbar-nav > li.menu-topbar-gruppo.active > a.menu-topbar-gruppo-toggle {
    color: #1bbae1;
}
.menu-topbar-nav > li.menu-topbar-gruppo.active.espanso > a.menu-topbar-gruppo-toggle {
    color: #ffffff;
    box-shadow: inset 0 -2px 0 #1bbae1;
}

/* Le aree del gruppo: chiuse hanno larghezza 0 e si aprono scorrendo in orizzontale. La larghezza
   la anima menu_top.js (da 0 alla misura reale e ritorno); a fine apertura la classe
   "aree-aperte" toglie il taglio, altrimenti i pannelli che scendono dalle aree resterebbero
   nascosti. */
.menu-topbar-aree {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    max-width: 0;
    overflow: hidden;
    visibility: hidden;
    margin: 0;
    padding: 0;
    list-style: none;
    transition: max-width .3s ease-out, visibility 0s linear .3s;
}
.menu-topbar-nav > li.menu-topbar-gruppo.espanso > .menu-topbar-aree {
    visibility: visible;
    transition: max-width .3s ease-out, visibility 0s;
}
.menu-topbar-nav > li.menu-topbar-gruppo.espanso > .menu-topbar-aree.aree-aperte {
    max-width: none;
    overflow: visible;
}
/* Chi ha chiesto al sistema meno animazioni: apertura e chiusura immediate (anche la regola del
   gruppo espanso, piu' specifica, altrimenti l'apertura resterebbe animata e la chiusura no). */
@media (prefers-reduced-motion: reduce) {
    .menu-topbar-aree,
    .menu-topbar-nav > li.menu-topbar-gruppo.espanso > .menu-topbar-aree { transition: none; }
}
.menu-topbar-aree > li.menu-topbar-area {
    position: relative;
    flex: 0 0 auto;
    height: 40px;
}
.menu-topbar-aree > li.menu-topbar-area > a {
    display: block;
    padding: 0 10px;
    line-height: 40px;
    font-size: 13px;
    color: #394263;
    white-space: nowrap;
    text-decoration: none;
}
.menu-topbar-aree > li.menu-topbar-area > a .fa-angle-down {
    margin-left: 3px;
    opacity: .5;
}
.menu-topbar-aree > li.menu-topbar-area > a:hover,
.menu-topbar-aree > li.menu-topbar-area > a:focus,
.menu-topbar-aree > li.menu-topbar-area.open > a {
    background-color: #ffffff;
    color: #1bbae1;
}
/* L'area della pagina corrente: sottolineatura nel colore del template. */
.menu-topbar-aree > li.menu-topbar-area.active > a {
    font-weight: 600;
    box-shadow: inset 0 -3px 0 #1bbae1;
}

/* Pannello a UNA colonna (area senza voci con figli): lista semplice, scorre se e' piu' alta
   dello schermo. Riusa .dropdown-menu del template (padding, bordi, voce attiva). */
.menu-topbar-tendina {
    min-width: 240px;
    max-height: calc(100vh - 110px);
    overflow-y: auto;
}
.menu-topbar-tendina > li > a > i {
    display: inline-block;
    width: 18px;
    margin-right: 5px;
    text-align: center;
}
.menu-topbar-tendina > li.dropdown-header.menu-topbar-titolo {
    font-weight: 600;
}
/* Manuale dell'area: riga in fondo al pannello, sotto le colonne (26/10/2026). */
.menu-topbar-manuale > a {
    display: block;
    padding: 6px 12px;
    font-size: 12px;
    color: #394263;
    white-space: nowrap;
    text-decoration: none;
}
.menu-topbar-manuale > a > i {
    display: inline-block;
    width: 18px;
    margin-right: 5px;
    text-align: center;
    color: #1bbae1;
}
.menu-topbar-manuale > a:hover,
.menu-topbar-manuale > a:focus {
    background-color: #f0f3f7;
    color: #1bbae1;
}
/* Nel pannello a colonne: riga a tutta larghezza dopo l'ultima colonna, separata da un filo. */
/* Quante colonne attraversare lo scrive _navigation_top (style grid-column: 1 / span N): senza
   colonne esplicite "1 / -1" ne prenderebbe una sola. */
.menu-topbar-mega > li.menu-topbar-mega-manuale {
    grid-row: 2;
    margin-top: 4px;
    padding: 4px 6px 0;
    border-top: 1px solid #eaedf1;
}

/* Pannello a PIU' colonne: la principale (Dashboard + voci semplici) e una per ogni voce con figli
   (Impostazioni, Utility, Stampe), con il nome della voce come intestazione. Bootstrap mostra
   .open > .dropdown-menu come block: qui serve flex, e la specificita' deve battere quella regola. */
.menu-topbar-aree > li > ul.menu-topbar-mega {
    display: none;
    padding: 8px 4px;
    min-width: 240px;
    max-width: calc(100vw - 240px);
    max-height: calc(100vh - 110px);
    overflow: auto;
}
/* Griglia: le colonne affiancate sulla prima riga, il manuale sulla seconda a tutta larghezza.
   (Con flex + wrap il pannello, largo quanto il contenuto, metteva una colonna per riga.) */
.menu-topbar-aree > li.open > ul.menu-topbar-mega {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 230px;
    align-items: start;
}
.menu-topbar-mega > li.menu-topbar-colonna {
    grid-row: 1;
    max-width: 230px;
    padding: 0 6px 8px;
}
.menu-topbar-mega > li.menu-topbar-colonna + li.menu-topbar-colonna {
    border-left: 1px solid #eaedf1;
}
.menu-topbar-mega .menu-topbar-colonna-titolo {
    margin: 2px 8px 4px;
    padding-bottom: 4px;
    border-bottom: 1px solid #eaedf1;
    font-size: 12px;
    font-weight: 600;
    color: #394263;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.menu-topbar-mega .menu-topbar-colonna-titolo > i {
    display: inline-block;
    width: 18px;
    margin-right: 4px;
    text-align: center;
    opacity: .4;
}
.menu-topbar-mega > li.menu-topbar-colonna-sezione .menu-topbar-colonna-titolo {
    color: #7b8794;
}
.menu-topbar-mega > li.menu-topbar-colonna.active .menu-topbar-colonna-titolo {
    color: #1bbae1;
    border-bottom-color: #1bbae1;
}
.menu-topbar-mega ul.menu-topbar-colonna-voci {
    list-style: none;
    margin: 0;
    padding: 0;
}
.menu-topbar-mega ul.menu-topbar-colonna-voci > li > a {
    display: block;
    padding: 4px 8px;
    font-size: 12px;
    line-height: 1.4;
    color: #394263;
    border-radius: 3px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-decoration: none;
}
.menu-topbar-mega ul.menu-topbar-colonna-voci > li > a > i {
    display: inline-block;
    width: 18px;
    margin-right: 4px;
    text-align: center;
    opacity: .35;
}
.menu-topbar-mega ul.menu-topbar-colonna-voci > li > a:hover,
.menu-topbar-mega ul.menu-topbar-colonna-voci > li > a:focus {
    background-color: #f0f3f7;
    color: #1bbae1;
}
.menu-topbar-mega ul.menu-topbar-colonna-voci > li.active > a {
    background-color: #1bbae1;
    color: #ffffff;
}
.menu-topbar-mega ul.menu-topbar-colonna-voci > li.active > a > i {
    opacity: 1;
}

/* Seconda riga: le voci dell'area corrente (preferenza "Tieni aperto il menu dell'area", 30/10/2026).
   Stesse pastiglie della prima riga; le voci sono collegamenti diretti, con lo stile delle aree.
   Qui non scendono pannelli, quindi se la riga e' piu' larga dello schermo scorre in orizzontale
   invece di allargare la pagina. */
header.navbar .menu-topbar.menu-topbar-area-fissa {
    background-color: #ffffff;
}
/* La barra di scorrimento si nasconde (occuperebbe un quarto dell'altezza della riga): la riga scorre
   con la rotella del mouse (menu_top.js) e la voce attiva viene portata in vista al caricamento. */
.menu-topbar-area-fissa .menu-topbar-nav {
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
}
.menu-topbar-area-fissa .menu-topbar-nav::-webkit-scrollbar {
    display: none;
}
.menu-topbar-aree > li.menu-topbar-voce {
    flex: 0 0 auto;
    height: 40px;
}
.menu-topbar-aree > li.menu-topbar-voce > a {
    display: block;
    padding: 0 10px;
    line-height: 40px;
    font-size: 13px;
    color: #394263;
    white-space: nowrap;
    text-decoration: none;
}
.menu-topbar-aree > li.menu-topbar-voce > a > i {
    margin-right: 5px;
    opacity: .45;
}
.menu-topbar-aree > li.menu-topbar-voce > a:hover,
.menu-topbar-aree > li.menu-topbar-voce > a:focus {
    background-color: #f0f3f7;
    color: #1bbae1;
}
.menu-topbar-aree > li.menu-topbar-voce.active > a {
    font-weight: 600;
    color: #1bbae1;
    box-shadow: inset 0 -3px 0 #1bbae1;
}
.menu-topbar-aree > li.menu-topbar-voce.active > a > i {
    opacity: 1;
}

/* Pannello Preferenze nella colonna destra (_sidebar_alt.ascx): sfondo scuro del template,
   testi chiari, un blocco per preferenza con i due pulsanti affiancati. */
#sidebar-alt .sidebar-title {
    color: #ffffff;
    display: block;
}
#sidebar-alt .preferenze-blocco {
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
#sidebar-alt .preferenze-titolo {
    color: #ffffff;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .5px;
    text-transform: uppercase;
    opacity: .7;
    margin-bottom: 2px;
}
#sidebar-alt .preferenze-nota {
    color: #eaedf1;
    font-size: 11px;
    opacity: .6;
    margin-bottom: 8px;
    line-height: 1.4;
}
#sidebar-alt .preferenze-blocco .btn-group .btn {
    white-space: normal;
    line-height: 1.3;
    padding-top: 6px;
    padding-bottom: 6px;
}
#sidebar-alt .preferenze-blocco .btn-group .btn.disabled {
    opacity: .6;
}
#sidebar-alt .preferenze-esito {
    font-size: 12px;
}

/* Da 992px in su le righe della colonna passate in barra non si vedono. */
@media (min-width: 992px) {
    .sidebar-nav > li.menu-in-topbar {
        display: none;
    }
}
/* Sotto i 992px la barra non c'e': la colonna, completa, fa tutto come oggi. */
@media (max-width: 991px) {
    header.navbar .menu-topbar {
        display: none;
    }
}

/* =================================================================
   USABILITA' DA TELEFONO (Piano usabilita' mobile, Fase 1 - 2026-10-02)
   Tutto sotto media query: sopra i 992px nulla cambia.
   ================================================================= */

/* Menu laterale sotto i 992px: si sovrappone al contenuto invece di spingerlo di lato
   (il template sposta #main-container, header e footer di 200px fuori schermo).
   Lo sfondo scuro e la chiusura al tocco stanno in jscript/gnet/gnet.mobile.js. */
@media (max-width: 991px) {
    .sidebar-visible-xs #main-container {
        margin-left: 0;
        margin-right: 0;
    }
    .sidebar-visible-xs.header-fixed-top header.navbar-fixed-top,
    .sidebar-visible-xs.header-fixed-bottom header.navbar-fixed-bottom,
    .footer-fixed.sidebar-visible-xs #page-content + footer {
        left: 0;
        right: 0;
    }
    .sidebar-visible-xs #sidebar {
        z-index: 1045;
        box-shadow: 2px 0 12px rgba(0, 0, 0, .35);
    }
    .mobile-sidebar-backdrop {
        position: fixed;
        top: 0; right: 0; bottom: 0; left: 0;
        z-index: 1040;
        background: rgba(0, 0, 0, .4);
    }
}

@media (max-width: 767px) {
    /* Finestre modali: molte hanno style="width:800px" (o vw con min-width) scritto nel
       markup; lo stile inline batte la regola mobile di Bootstrap e la finestra esce dallo
       schermo. !important serve proprio a vincere sullo stile inline. */
    .modal-dialog {
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        margin: 10px !important;
    }

    /* Tabelle: il contenitore aggiunto da gnet.mobile.js scorre di lato invece di
       allargare la pagina. */
    .mobile-table-scroll {
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        margin-bottom: 15px;
    }
    .mobile-table-scroll > table {
        margin-bottom: 0;
    }
    /* I bottoni di riga restano affiancati: nel btn-group i .btn sono float e in una cella
       stretta andrebbero uno sotto l'altro, allungando ogni riga di 3-4 volte. La tabella
       scorre di lato, quindi conviene che si allarghi. */
    .mobile-table-scroll .btn-group {
        display: inline-flex;
        flex-wrap: nowrap;
    }
    .mobile-table-scroll td:has(> .btn),
    .mobile-table-scroll td:has(> .btn-group) {
        white-space: nowrap;
    }

    /* Bottoni piccoli: ~22px sono troppo pochi per un dito. */
    .btn-xs {
        min-width: 34px;
        min-height: 34px;
        padding: 6px 9px;
        font-size: 13px;
    }

    /* Intestazione: il nome dell'app (18pt, margini 30px) manda a capo le icone. */
    header.navbar .app_name {
        display: none;
    }
    .session-refresh-bar .session-refresh-box > span:last-child {
        display: none;
    }

    /* Bottoni nell'intestazione di un blocco (es. notifiche: "Segna come lette", ...): a
       destra del titolo non ci stanno e gli finiscono sopra. Vanno sotto il titolo, a capo. */
    .block-title .block-options.pull-right {
        float: none !important;
        display: block;
        padding: 0 10px 8px;
        white-space: normal;
    }
    .block-title .block-options .btn {
        margin-bottom: 4px;
    }

    /* Etichette dei form scritte a mano con text-right (es. col-md-2 text-right): impilate
       sopra il campo restano allineate a destra, lontane dal campo che descrivono. */
    .form-group > [class*="col-"].text-right,
    .form-group > label.text-right {
        text-align: left;
    }

    /* Schede nell'intestazione con un h2 dentro (profilo utente): titoli piu' piccoli. */
    .block-title .nav-tabs > li > a > h2 {
        font-size: 14px;
    }

    /* Barra delle fasce orarie (indisponibilita', rifiuto designazione): 96 quarti d'ora
       in ~330px. touch-action evita che la pagina scorra mentre si trascina (il touchmove
       e' ascoltato sul document, dove Chrome lo considera passivo e ignora preventDefault);
       barra e maniglie piu' grandi per il dito. */
    .indispo-fascia-slider {
        height: 40px;
        margin: 22px 14px 10px;
        touch-action: none;
    }
    .indispo-fascia-slider .ui-slider-handle {
        top: -12px;
        margin-left: -11px;
        border-left-width: 11px;
        border-right-width: 11px;
        border-top-width: 16px;
    }
    .indispo-fascia-label {
        font-size: 16px;
    }

    /* Elenco gare dei designatori (gare_designazioni): sotto i 768px ogni gara e' una scheda
       (vedi desSchedaGara in jscript/mymatch/gare/designazioni.js). I colori ripetono quelli
       delle righe della tabella, definiti nello <style> della pagina. */
    .gara-schede-cerca { margin-bottom: 10px; }
    .gara-scheda {
        border: 1px solid #dbe1e8;
        border-radius: 4px;
        padding: 10px 12px;
        margin-bottom: 10px;
        background-color: #fff;
    }
    .gara-scheda-testa { overflow: hidden; margin-bottom: 4px; }
    .gara-scheda-numero { font-weight: bold; font-size: 15px; }
    .gara-scheda-stato { float: right; margin-left: 6px; font-size: 12px; }
    .gara-scheda-quando { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
    .gara-scheda-campionato { color: #555; margin-bottom: 4px; }
    .gara-scheda-squadre { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
    .gara-scheda-vs { display: block; font-weight: normal; font-size: 12px; color: #999; }
    .gara-scheda-luogo { color: #555; margin-bottom: 8px; }
    .gara-scheda-azioni { display: flex; flex-wrap: wrap; gap: 6px; }
    .gara-scheda-azioni br { display: none; }
    /* I pulsanti btn-xs della tabella, nella scheda, diventano da dito (circa 40px). */
    .gara-scheda .btn-xs {
        padding: 9px 12px;
        font-size: 14px;
        line-height: 1.2;
        min-width: 42px;
    }
    .gara-scheda-apri { display: block; padding: 10px 0 2px; font-weight: 600; }
    .gara-scheda-dettagli { border-top: 1px solid #e5e5e5; margin-top: 6px; padding-top: 4px; }
    .gara-scheda-sezione { margin-bottom: 10px; }
    .gara-scheda-sezione h5 {
        margin: 6px 0 4px;
        font-size: 11px;
        font-weight: bold;
        text-transform: uppercase;
        color: #999;
    }
    .gara-scheda-dettagli .btn-group { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0 8px; }
    .gara-scheda-dettagli .btn-group > .btn { float: none; border-radius: 3px; }
    .gara-scheda-dettagli .btn-group + br { display: none; }
    .gara-scheda.spostata { background-color: #f67e7e; }
    .gara-scheda.spostatagiornata { background-color: #ffc98a; }
    .gara-scheda.rigiocata { background-color: #fdf8a3; }
    .gara-scheda.variata { border: 2px dashed red; }
    .gara-scheda.annullatagara { background-color: #aaaaaa; }
    .gara-scheda.gara-affidata { background-color: #e8eef7; color: #555; }
    .gara-scheda.gara-ricevuta { background-color: #e6f4f7; }
    .gara-scheda.rt-occupata { background-color: #d9d9d9; color: #777; }
    .gara-scheda.rt-aggiornata { animation: rtBordo 2.5s ease-out forwards; }

    /* Finestre a comparsa dell'intestazione (supporto, collaborazione): 320px fissi. */
    .toolbar-popup {
        max-width: calc(100vw - 20px);
    }

    /* Piè di pagina: fisso in fondo va a capo su due righe e copre ~50px di schermo per
       tutto il tempo. Sul telefono torna in coda alla pagina. */
    .footer-fixed #page-content + footer {
        position: static;
    }
    .footer-fixed #page-content {
        padding-bottom: 0;
    }

    /* Testata con immagine (bacheca): 248px sono un terzo dello schermo. */
    .content-header-media {
        height: 110px;
    }
}
