﻿
.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;
}

/* =================================================================
   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;
    }

    /* 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;
    }
}
