/* /Components/Layout/ClosureAlertBar.razor.rz.scp.css */
/* Barra piena (layout, tutte le pagine) e pillola compatta (testata dei banchi).
   Stili nel css scoped del componente: applicano ovunque il componente venga usato. */
.closure-alert-bar[b-3n8dgpds3h] {
    display: flex;
    align-items: center;
    gap: .75rem;
    background-color: #fdf3dc;
    color: #8a5a00;
    border-bottom: 1px solid #ecd39a;
    padding: .35rem 2rem;
    font-size: .9rem;
    /* Altezza FISSA: le pagine a viewport la sottraggono via
       --pms-closure-alert-h (app.css). Se cambia qui, cambia anche là. */
    height: 2.7rem;
    flex-wrap: nowrap;
    white-space: nowrap;
    overflow: hidden;
}

.closure-alert-bar > span[b-3n8dgpds3h] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.closure-alert-inline[b-3n8dgpds3h] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    background-color: #fdf3dc;
    color: #8a5a00;
    border: 1px solid #ecd39a;
    padding: .25rem .6rem;
    font-size: .85rem;
    border-radius: 6px;
}
/* /Components/Layout/GestionalDateBadge.razor.rz.scp.css */
.gd-short[b-5emazi8731] { display: none; }

@media (max-width: 640.98px) {
    .gd-full[b-5emazi8731] { display: none; }
    .gd-short[b-5emazi8731] { display: inline; }
}
/* /Components/Layout/HotelBadge.razor.rz.scp.css */
/* Nome dell'hotel di lavoro come titolo della barra (Ranieri 02/10): ben leggibile,
   su una riga sola anche con nomi lunghi. */
.hotel-badge-name[b-myp5k7nfor] {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -.01em;
    white-space: nowrap;
    cursor: default;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-68bwbo28nc] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-68bwbo28nc] {
    flex: 1;
    /* Item flex: senza questo il min-width "auto" lo allarga fino al contenuto
       più largo (es. il nastro del planning) e nasce una scrollbar orizzontale
       sul body — gli overflow interni devono restare interni. */
    min-width: 0;
}

/* Tema "V2 Operativo denso": sidebar CHIARA su fondo freddo, separata dal
   contenuto solo da un bordo netto 1px — niente gradienti, niente ombre. */
.sidebar[b-68bwbo28nc] {
    background-color: #fbfcfd;
    border-right: 1px solid #e3e6ea;
}

.top-row[b-68bwbo28nc] {
    background-color: #ffffff;
    border-bottom: 1px solid #e3e6ea;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-68bwbo28nc]  a, .top-row[b-68bwbo28nc]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-68bwbo28nc]  a:hover, .top-row[b-68bwbo28nc]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-68bwbo28nc]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-68bwbo28nc] {
        justify-content: space-between;
    }

    .top-row[b-68bwbo28nc]  a, .top-row[b-68bwbo28nc]  .btn-link {
        margin-left: 0;
    }

    /* Testata su telefono: due righe che stanno nello schermo (niente scroll della pagina). */
    .top-row[b-68bwbo28nc] {
        height: auto;
        flex-wrap: wrap;
        row-gap: .5rem;
        padding-top: .5rem;
        padding-bottom: .5rem;
    }

    .top-row-left[b-68bwbo28nc] {
        flex: 1 1 100%;
        min-width: 0;
        flex-wrap: wrap;
    }

    .top-row-left > *[b-68bwbo28nc] {
        min-width: 0;
        max-width: 100%;
    }

    /* Le pillole scorrono in orizzontale da sole, target touch da 44px. */
    .top-row-left[b-68bwbo28nc]  .mode-switcher {
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .top-row-left[b-68bwbo28nc]  .mode-switcher::-webkit-scrollbar {
        display: none;
    }

    .top-row-left[b-68bwbo28nc]  .mode-switcher .btn {
        flex: none;
        min-height: 44px;
        white-space: nowrap;
    }

    .top-row-left[b-68bwbo28nc]  .hotel-badge-name {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .top-row-right[b-68bwbo28nc] {
        flex: 1 1 100%;
        min-width: 0;
        justify-content: space-between;
    }
}

@media (min-width: 641px) {
    .page[b-68bwbo28nc] {
        flex-direction: row;
    }

    .sidebar[b-68bwbo28nc] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-68bwbo28nc] {
        position: sticky;
        top: 0;
        /* Livello "barra sticky" (scala Bootstrap): la barra crea lo stacking
           context dei suoi pannelli (Guida, palette, menu utente) e a z-index 1
           veniva scavalcata dalle intestazioni sticky delle tabelle (z 1, ma
           successive nel DOM) su mezza app. Resta sotto SatelliteDrawer (1050)
           e overlay scheda (1060). */
        z-index: 1020;
    }

    .top-row.auth[b-68bwbo28nc]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-68bwbo28nc], article[b-68bwbo28nc] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

#blazor-error-ui[b-68bwbo28nc] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-68bwbo28nc] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

/* Gli stili della barra/pillola chiusura vivono in ClosureAlertBar.razor.css. */
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-hfuk4rkyo0] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: #4a5058;
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    border: 1px solid #c6ccd4;
    border-radius: 6px;
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2874, 80, 88, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem #ffffff;
}

.navbar-toggler:checked[b-hfuk4rkyo0] {
    background-color: #e8eeff;
}

.top-row[b-hfuk4rkyo0] {
    min-height: 3.5rem;
    background-color: #fbfcfd;
    border-bottom: 1px solid #e3e6ea;
}

.navbar-brand[b-hfuk4rkyo0] {
    display: inline-flex;
    align-items: center;
    padding: 0;
}

/* Lockup orizzontale del kit NITIS (README: "il logo nell'header di una web app").
   Altezza fissa, larghezza dal viewBox: a 26px il simbolo resta sopra i 24px minimi
   della versione piena. */
.navbar-brand .brand-logo[b-hfuk4rkyo0] {
    height: 26px;
    width: auto;
    display: block;
}

/* Icone Bootstrap Icons 1.11.3 ufficiali (SVG inline, una per voce di menu):
   ogni sezione ha l'icona del suo mestiere, non più i 4 generici del template. */

.nav-item[b-hfuk4rkyo0] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-hfuk4rkyo0] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-hfuk4rkyo0] {
        padding-bottom: 1rem;
    }

    .nav-item[b-hfuk4rkyo0]  .nav-link {
        color: #4a5058;
        background: none;
        border: none;
        border-radius: 6px;
        min-height: 3rem;
        height: auto;
        display: flex;
        align-items: center;
        line-height: 1.25;
        width: 100%;
    }

.nav-item[b-hfuk4rkyo0]  a.active {
    background-color: #e8eeff;
    color: #2f5fd0;
}

.nav-item[b-hfuk4rkyo0]  .nav-link:hover {
    background-color: #eef1f5;
    color: #1a1d21;
}

/* Le icone del catalogo (.bi in app.css) sono SVG con fill bianco: sulla
   sidebar chiara vanno scurite via filter — grigio di base, blu accento
   sulla voce attiva (approssimazione filtrata di #2f5fd0). */
.nav-item[b-hfuk4rkyo0]  .nav-link .bi {
    flex-shrink: 0; /* etichette lunghe vanno a capo: l'icona non si stringe */
    filter: brightness(0) opacity(.62);
}

.nav-item[b-hfuk4rkyo0]  a.active .bi {
    filter: brightness(0) saturate(100%) invert(31%) sepia(76%) saturate(1832%) hue-rotate(216deg) brightness(94%) contrast(89%);
}

.nav-scrollable[b-hfuk4rkyo0] {
    display: none;
}

.navbar-toggler:checked ~ .nav-scrollable[b-hfuk4rkyo0] {
    display: block;
}

@media (min-width: 641px) {
    .navbar-toggler[b-hfuk4rkyo0] {
        display: none;
    }

    .nav-scrollable[b-hfuk4rkyo0] {
        /* Never collapse the sidebar for wide screens */
        display: block;

        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}

/* Sottovoci dinamiche di Risorse: un tipo = una voce, rientrata, col pallino colore. */
.nav-subitem[b-hfuk4rkyo0]  .nav-link {
    padding-left: 2.4rem;
    font-size: .88rem;
    min-height: unset;
    height: 2.1rem;
    line-height: 2.1rem;
}

.nav-subitem[b-hfuk4rkyo0]  .nav-type-dot {
    display: inline-block;
    width: .6rem;
    height: .6rem;
    border-radius: 50%;
    margin-right: .45rem;
    vertical-align: baseline;
}

.nav-subitem[b-hfuk4rkyo0]  .nav-type-gear {
    background: none;
    width: auto;
    font-size: .8rem;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-jdyvon25hf],
.components-reconnect-repeated-attempt-visible[b-jdyvon25hf],
.components-reconnect-failed-visible[b-jdyvon25hf],
.components-pause-visible[b-jdyvon25hf],
.components-resume-failed-visible[b-jdyvon25hf],
.components-rejoining-animation[b-jdyvon25hf] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-retrying[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-failed[b-jdyvon25hf],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-jdyvon25hf] {
    display: block;
}


#components-reconnect-modal[b-jdyvon25hf] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-jdyvon25hf 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-jdyvon25hf 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-jdyvon25hf 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-jdyvon25hf]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-jdyvon25hf 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-jdyvon25hf {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-jdyvon25hf {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-jdyvon25hf {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-jdyvon25hf] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-jdyvon25hf] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-jdyvon25hf] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-jdyvon25hf] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-jdyvon25hf] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-jdyvon25hf] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-jdyvon25hf] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-jdyvon25hf 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-jdyvon25hf] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-jdyvon25hf {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Layout/TrainingBanner.razor.rz.scp.css */
.training-banner[b-2lgt37wckr] {
    display: flex;
    align-items: center;
    gap: .35rem;
    height: 2.7rem;
    padding: 0 1rem;
    color: #1f2937;
    background: repeating-linear-gradient(-45deg, #fbbf24, #fbbf24 14px, #f59e0b 14px, #f59e0b 28px);
    font-size: .95rem;
}
/* /Components/Layout/UserMenu.razor.rz.scp.css */
/* Il menu vive nella top-row sticky (z-index 1020): questi z-index sono LOCALI a
   quel contesto — il backdrop copre comunque tutta la pagina perché l'intera
   top-row sta sopra il contenuto. */
/* Il bottone è il <summary> del <details>: via il triangolino nativo. Sta SOPRA il
   backdrop (z-index 7 > 5): così, a menu aperto, ri-cliccare 👤 chiude e basta —
   altrimenti il mousedown sul backdrop chiuderebbe e il click sul summary riaprirebbe. */
.user-menu summary[b-4579z4838c] {
    list-style: none;
    cursor: pointer;
    display: inline-block;
    position: relative;
    z-index: 7;
}

.user-menu summary[b-4579z4838c]::-webkit-details-marker {
    display: none;
}

.user-menu-backdrop[b-4579z4838c] {
    position: fixed;
    inset: 0;
    z-index: 5;
}

.user-menu-panel[b-4579z4838c] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.25rem);
    z-index: 6;
    min-width: 11rem;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    box-shadow: 0 2px 8px rgba(33, 37, 41, 0.15);
    padding: 0.25rem 0;
    white-space: nowrap;
}

.user-menu-panel a[b-4579z4838c],
.user-menu-panel form button[b-4579z4838c] {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.35rem 0.75rem;
    font-size: 0.875rem;
    color: #212529;
    text-decoration: none;
    background: none;
    border: 0;
}

.user-menu-panel a:hover[b-4579z4838c],
.user-menu-panel form button:hover[b-4579z4838c] {
    background: #f1f3f5;
}
/* /Components/Pages/Academy/Index.razor.rz.scp.css */
/* Pagina Academy: elenco denso, una riga per video; le intestazioni di gruppo sono le guide. */
.academy-search[b-wwcqwffonn] {
    min-width: 16rem;
}

.academy-table[b-wwcqwffonn] {
    max-width: 64rem;
}

.academy-group th[b-wwcqwffonn] {
    padding-top: .7rem;
    font-size: .8rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: #6c757d;
    background: transparent;
}

.academy-play[b-wwcqwffonn] {
    text-decoration: none;
    font-weight: 500;
}

.academy-play:hover[b-wwcqwffonn] {
    text-decoration: underline;
}

.academy-empty[b-wwcqwffonn] {
    color: #6c757d;
    font-style: italic;
}
/* /Components/Pages/Applicazione/UtentiApplicazione.razor.rz.scp.css */
/* Dettaglio accessi dell'utente, aperto sotto la sua riga (Ranieri 02/10):
   griglia compatta hotel → gruppi, larga quanto la tabella. */
.utenti-accessi > td[b-82dkpb5v0p] {
    background: var(--bs-tertiary-bg);
    padding: .5rem .75rem .75rem;
}

.utenti-accessi-griglia[b-82dkpb5v0p] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(22rem, 1fr));
    gap: .25rem 1.5rem;
    font-size: .85rem;
}

.utenti-accessi-hotel[b-82dkpb5v0p] {
    display: grid;
    grid-template-columns: 4.5rem 1fr;
    gap: .5rem;
    padding: .2rem 0;
    border-bottom: 1px solid var(--bs-border-color-translucent);
}

/* Editor gruppi per hotel: al massimo ~5 hotel visibili, poi scorre; l'intestazione
   dei gruppi resta ferma in alto così si sa sempre cosa si spunta (Ranieri 12/10). */
.utenti-gruppi-scroll[b-82dkpb5v0p] {
    max-height: 28rem;
    overflow-y: auto;
    border: 1px solid var(--bs-border-color-translucent);
}

.utenti-gruppi-scroll thead th[b-82dkpb5v0p] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--bs-body-bg);
    box-shadow: inset 0 -1px 0 var(--bs-border-color);
}

/* Riepilogo gruppi su una riga: troncato coi puntini, testo intero nel tooltip,
   così la riga non spinge fuori i pulsanti azione. */
.utenti-riepilogo[b-82dkpb5v0p] {
    display: inline-block;
    max-width: 20rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}
/* /Components/Pages/Configurazione/BarCalendario.razor.rz.scp.css */
/* Le regole della griglia mesi (cal-grid, cal-cell, ...) vivono in Shared/BarDayCalendar.razor.css:
   il CSS isolato non raggiunge il markup dei componenti figli. Qui restano quelle del markup della pagina. */
.bar-swatch[b-6663odrgyh] { display: inline-block; width: 1.4rem; height: 1.4rem; border-radius: 0.25rem; vertical-align: middle; }
.cal-range[b-6663odrgyh] { min-width: 14rem; text-align: center; }
.bar-level-selected > td[b-6663odrgyh] { background-color: #cfe2ff; }
.bar-level-selected > td:first-child[b-6663odrgyh] { box-shadow: inset 4px 0 0 #0d6efd; }
.bar-selected-badge[b-6663odrgyh] { display: inline-block; min-width: 5.6rem; padding: 0.45rem 0.5rem; }
/* /Components/Pages/Configurazione/BarCalendarioTrattamenti.razor.rz.scp.css */
/* Le regole della griglia mesi (cal-grid, cal-cell, ...) vivono in Shared/BarDayCalendar.razor.css:
   il CSS isolato non raggiunge il markup dei componenti figli. Qui restano quelle del markup della pagina. */
.bar-swatch[b-y6kkqzpwz3] { display: inline-block; width: 1.4rem; height: 1.4rem; border-radius: 0.25rem; vertical-align: middle; }
.cal-range[b-y6kkqzpwz3] { min-width: 14rem; text-align: center; }
.bar-level-selected > td[b-y6kkqzpwz3] { background-color: #cfe2ff; }
.bar-level-selected > td:first-child[b-y6kkqzpwz3] { box-shadow: inset 4px 0 0 #0d6efd; }
.bar-selected-badge[b-y6kkqzpwz3] { display: inline-block; min-width: 5.6rem; padding: 0.45rem 0.5rem; }
/* /Components/Pages/Configurazione/BarLivelli.razor.rz.scp.css */
.bar-swatch[b-8n9kdctdfq] {
    display: inline-block;
    width: 1.4rem;
    height: 1.4rem;
    border-radius: 0.25rem;
    vertical-align: middle;
}

/* Colonna P_std nella griglia per occupazione: è la cella di sempre, evidenziata. */
.bar-occ td.bar-std[b-8n9kdctdfq] {
    background-color: rgba(13, 110, 253, 0.08);
}

.bar-occ input[b-8n9kdctdfq]::placeholder {
    color: #8a8f98;
    opacity: 1;
}

.bar-panel[b-8n9kdctdfq] {
    background-color: #f8f9fa;
}

/* Bambini Dynamic, cella a metà (1° senza 2° o viceversa): solo il bordo rosso. L'icona di
   is-invalid in caselle così strette copriva il valore (segnalazione Ranieri 15/10). */
input.bar-incomplete[b-8n9kdctdfq] {
    border-color: var(--bs-danger);
    box-shadow: inset 0 0 0 1px var(--bs-danger);
}
/* /Components/Pages/Configurazione/BarLivello.razor.rz.scp.css */
/* Colonna P_std nella griglia del livello: è la cella di sempre, evidenziata. */
.bar-occ td.bar-std[b-vkjlj1lptc] {
    background-color: rgba(13, 110, 253, 0.08);
}

/* Cella senza input: la tipologia non ha quel posto (letto base, letto aggiunto o culla). */
.bar-occ td.bar-na[b-vkjlj1lptc] {
    background-color: #f1f3f5;
}

/* Titoli colonna fermi mentre si scorrono le tipologie (richiesta Ranieri 25/09): la griglia
   scorre nel suo riquadro (serve già per lo scroll orizzontale), thead sticky in cima.
   L'altezza la fissa fit-viewport.js: lo spazio rimasto fino al fondo della finestra. */
.bar-scroll[b-vkjlj1lptc] {
    overflow-y: auto;
    overscroll-behavior: contain;
}

.bar-scroll thead th[b-vkjlj1lptc] {
    position: sticky;
    top: 0;
    z-index: 2;
    background-color: var(--bs-body-bg);
    box-shadow: inset 0 -1px var(--bs-border-color);
}

.bar-occ input[b-vkjlj1lptc]::placeholder {
    color: #8a8f98;
    opacity: 1;
}

/* Larghezza (Ranieri 25/09, come la griglia prezzi dei Prodotti): la tabella occupa la larghezza
   della pagina con layout fisso, colonne compatte, intestazioni a capo, input senza frecce. La
   min-width inline (GridMinWidth) fa comparire la barra orizzontale solo sotto quella soglia. */
.bar-occ[b-vkjlj1lptc] {
    width: 100%;
    table-layout: fixed;
}

.bar-occ th[b-vkjlj1lptc],
.bar-occ td[b-vkjlj1lptc] {
    padding: 0.2rem 0.15rem;
}

.bar-occ th[b-vkjlj1lptc] {
    white-space: normal;
    overflow-wrap: normal;
    line-height: 1.15;
    font-size: 0.75rem;
    vertical-align: bottom;
}

/* Separatore fra tipologie più marcato (Ranieri 30/09): con tante colonne l'occhio perdeva la riga. */
.bar-occ > tbody > tr[b-vkjlj1lptc] {
    border-bottom: 2px solid var(--bs-gray-500, #adb5bd);
}

/* Riga «selezionata» (Ranieri 30/09): la tipologia su cui si sta scrivendo prende uno sfondo
   da evidenziatore e una barra a sinistra, così l'occhio non scivola sulla riga sopra o sotto.
   Si accende da sola col focus su una cella (anche col Tab); il passaggio del mouse la accenna. */
.bar-occ > tbody > tr:hover > td[b-vkjlj1lptc] {
    --bs-table-bg-state: rgba(255, 193, 7, 0.08);
}

.bar-occ > tbody > tr:focus-within > td[b-vkjlj1lptc] {
    --bs-table-bg-state: rgba(255, 193, 7, 0.22);
}

.bar-occ > tbody > tr:focus-within > td:first-child[b-vkjlj1lptc] {
    box-shadow: inset 4px 0 0 #e0a800, inset 0 0 0 9999px var(--bs-table-bg-state);
}

.bar-occ td:first-child[b-vkjlj1lptc] {
    overflow-wrap: anywhere;
    font-size: 0.8125rem;
}

.bar-occ input[b-vkjlj1lptc] {
    min-width: 0;
    padding: 0.15rem 0.25rem;
    font-size: 0.8125rem;
    -moz-appearance: textfield;
    appearance: textfield;
}

.bar-occ input[b-vkjlj1lptc]::-webkit-outer-spin-button,
.bar-occ input[b-vkjlj1lptc]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Selettore € / % accanto alle celle letto aggiunto e fascia (spec 25/09 §2): stretto, così il
   numero resta leggibile anche con molte colonne. */
.bar-occ .bar-mode[b-vkjlj1lptc] {
    flex: 0 0 auto;
    width: 2.7rem;
    padding: 0.15rem 1.1rem 0.15rem 0.35rem;
    font-size: 0.8125rem;
    background-position: right 0.2rem center;
}

/* Prezzo risultante sotto ogni cella (Ranieri 25/09): piccolo, allineato come il numero. */
.bar-occ .bar-res[b-vkjlj1lptc] {
    font-size: 0.7rem;
    line-height: 1.1;
    margin-top: 0.1rem;
    text-align: right;
    color: var(--bs-secondary-color, #6c757d);
    white-space: nowrap;
}

/* Bambini Dynamic, cella a metà (1° senza 2° o viceversa): solo il bordo rosso. L'icona di
   is-invalid in caselle così strette copriva il valore (segnalazione Ranieri 15/10). */
input.bar-incomplete[b-vkjlj1lptc] {
    border-color: var(--bs-danger);
    box-shadow: inset 0 0 0 1px var(--bs-danger);
}
/* /Components/Pages/Configurazione/Camere.razor.rz.scp.css */
/* Lista camere (piano ARC 07/08, lesson «fixare fino a X»): la barra filtri resta
   ferma sopra la tabella, la lista scorre nel suo riquadro con thead sticky in cima —
   tutto l'header (filtri + contatore) resta sempre visibile. */
.camere-filters[b-p8tfr04t56] {
    position: sticky;
    top: 3.5rem; /* altezza della .top-row sticky del MainLayout (stessa convenzione di Booking/Ricevimento) */
    z-index: 2;
    background-color: var(--bs-body-bg);
    padding-bottom: .5rem;
}

.camere-scroll[b-p8tfr04t56] {
    max-height: 60vh;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.camere-scroll thead th[b-p8tfr04t56] {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: var(--bs-body-bg);
    /* Il bordo sotto i titoli sopravvive allo scroll (il border del th no). */
    box-shadow: inset 0 -1px var(--bs-border-color);
}

.camere-scroll thead th.sortable[b-p8tfr04t56] {
    cursor: pointer;
    user-select: none;
}
/* /Components/Pages/Configurazione/ColoriStati.razor.rz.scp.css */
/* Anteprima della barra del planning: stessa forma di .tape-bar (Planning.razor.css). */
.cs-bar[b-igcuoiwiba] {
    display: inline-block;
    min-width: 7rem;
    padding: 0.1rem 0.6rem;
    border-radius: 0.8rem;
    border: 1px solid transparent;
    font-size: 0.78rem;
    line-height: 1.4rem;
    vertical-align: middle;
}

.cs-bar.cs-bar-option[b-igcuoiwiba] {
    border-style: dashed;
    border-color: rgba(0, 0, 0, 0.45);
}
/* /Components/Pages/Configurazione/ScriptPrezziCalendario.razor.rz.scp.css */
.cal-grid[b-351kmuiz3m] {
    table-layout: fixed;
}

.cal-month-head[b-351kmuiz3m] {
    width: 6.5rem;
    white-space: nowrap;
    vertical-align: middle;
}

.cal-grid th[b-351kmuiz3m],
.cal-grid td[b-351kmuiz3m] {
    text-align: center;
    padding: 0.15rem;
    font-size: 0.75rem;
    vertical-align: middle;
}

.cal-cell[b-351kmuiz3m] {
    cursor: pointer;
    min-width: 2.2rem;
    user-select: none;
}

.cal-cell:hover[b-351kmuiz3m] {
    outline: 2px solid #0d6efd;
    outline-offset: -2px;
}

.cal-empty[b-351kmuiz3m] {
    background-color: #f8f9fa;
    color: #adb5bd;
}

.cal-pending[b-351kmuiz3m] {
    background-color: #fd7e14 !important;
    color: #fff !important;
    font-weight: 600;
}

.cal-na[b-351kmuiz3m] {
    background-color: transparent;
    border-color: transparent;
}

.cal-wd-head[b-351kmuiz3m] {
    color: #6c757d;
    font-weight: 600;
}

.cal-wd-weekend[b-351kmuiz3m] {
    color: #b02a37;
    background-color: #f8d7da;
}

/* Numero del giorno nell'angolo della cella: la testata ora porta le iniziali
   dei giorni della settimana, il giorno del mese vive dentro la cella. */
.cal-daynum[b-351kmuiz3m] {
    display: block;
    font-size: 0.6rem;
    line-height: 0.7rem;
    opacity: 0.75;
    text-align: left;
    padding-left: 0.1rem;
}
/* /Components/Pages/CRM/Clienti.razor.rz.scp.css */
/* Pagina a viewport (richiesta Ranieri 03/08): la testata (titolo → filtri con
   paginazione) resta ferma, la lista scorre in un riquadro proprio coi titoli
   colonna sticky, e "Gestisci tag" resta sempre visibile in fondo alla finestra.
   Sotto i 641px la top-row del layout non è sticky: si torna al flusso normale. */
@media (min-width: 641px) {
    .clienti-page[b-s4c4wkk266] {
        display: flex;
        flex-direction: column;
        /* Altezza utile: 100vh meno top-row del layout (3.5rem) e padding contenuto. */
        max-height: calc(100vh - 5.6rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    }

    .clienti-scroll[b-s4c4wkk266] {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
    }

    .clienti-scroll thead th[b-s4c4wkk266] {
        position: sticky;
        top: 0;
        z-index: 1;
        background-color: var(--pms-cream, var(--bs-body-bg));
        /* Il bordo sotto i titoli sopravvive allo scroll (il border del th no). */
        box-shadow: inset 0 -1px var(--bs-border-color);
    }
}

/* Scheda cliente compatta (Ranieri 06/10): righe dell'anagrafica ravvicinate (gy-1 nel markup),
   consensi senza l'aria del form-check e date di raccolta in carattere ridotto. */
.cl-scheda .form-check[b-s4c4wkk266] {
    min-height: 0;
    margin-bottom: 0;
}

.cl-consenso-data[b-s4c4wkk266] {
    font-size: .75rem;
    padding-top: .1rem;
    padding-bottom: .1rem;
    min-height: 0;
}
/* /Components/Pages/CRM/Duplicati.razor.rz.scp.css */
/* Pagina a viewport (pattern Clienti.razor.css 03/08): testata + filtri fermi, la
   lista scorre in un riquadro proprio coi titoli colonna sticky. Sotto i 641px la
   top-row del layout non è sticky: si torna al flusso normale. */
@media (min-width: 641px) {
    .duplicati-page[b-all4mohryw] {
        display: flex;
        flex-direction: column;
        max-height: calc(100vh - 5.6rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    }

    /* flex:1 (mai un cap vh secco, lezione Clienti.razor.css): il riquadro si allunga
       fino a riempire lo spazio rimasto sotto testata/filtri dentro .duplicati-page,
       che è già l'unico posto dove l'altezza della finestra entra in gioco. */
    .duplicati-scroll[b-all4mohryw] {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
    }

    .duplicati-scroll thead th[b-all4mohryw] {
        position: sticky;
        top: 0;
        z-index: 1;
        background-color: var(--pms-cream, var(--bs-body-bg));
        box-shadow: inset 0 -1px var(--bs-border-color);
    }
}
/* /Components/Pages/Direzione/BudgetAnnuale.razor.rz.scp.css */
/* Griglia budget, V2 «Operativo denso»: cifre mono tabulari, derivate in grigio (sola lettura). */
.budget-grid[b-p7h6kuijmb] {
    width: 100%;
    max-width: 60rem;
    table-layout: fixed;
    background: #fff;
    border: 1px solid var(--pms-border);
}

.budget-grid thead th[b-p7h6kuijmb] {
    background: var(--pms-thead);
    font-weight: 600;
    white-space: nowrap;
}

.budget-grid th[scope="row"][b-p7h6kuijmb] {
    width: 8rem;
}

.budget-grid td[b-p7h6kuijmb],
.budget-grid th[b-p7h6kuijmb] {
    padding-top: .2rem;
    padding-bottom: .2rem;
}

.budget-grid .form-control[b-p7h6kuijmb] {
    padding: .1rem .4rem;
}

.budget-grid .derived[b-p7h6kuijmb] {
    color: var(--bs-secondary-color);
    background: var(--pms-cream);
}

.budget-grid tfoot td[b-p7h6kuijmb],
.budget-grid tfoot th[b-p7h6kuijmb] {
    border-top: 2px solid var(--pms-border);
}

.budget-year[b-p7h6kuijmb] {
    min-width: 4.2rem;
    color: var(--pms-ink) !important;
    opacity: 1 !important;
}

.budget-pct[b-p7h6kuijmb] {
    width: 7.5rem;
}

.budget-paste[b-p7h6kuijmb] {
    max-width: 60rem;
    background: #fff;
}
/* /Components/Pages/Direzione/Cruscotto.razor.rz.scp.css */
/* Cruscotto del direttore, V2 «Operativo denso»: tabelle fitte su fondo bianco, cifre mono
   tabulari, Δ colorato solo nel verso (verde/rosso desaturati), «n.d.» in grigio. Su tablet la
   tabella scorre dentro il suo riquadro, mai la pagina. */
.dir-head[b-rk3r36wfa0] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    margin-bottom: .5rem;
}

.dir-ref[b-rk3r36wfa0] {
    display: flex;
    align-items: center;
    gap: .35rem;
}

.dir-ref-input[b-rk3r36wfa0] {
    width: 9.5rem;
}

.dir-strip[b-rk3r36wfa0] {
    margin-bottom: .5rem;
}

.dir-block[b-rk3r36wfa0] {
    margin-bottom: 1.25rem;
}

.dir-title[b-rk3r36wfa0] {
    font-size: 1rem;
    margin: 0 0 .15rem;
}

.dir-scroll[b-rk3r36wfa0] {
    overflow-x: auto;
    max-width: 100%;
    background: #fff;
    border: 1px solid var(--pms-border);
    border-radius: 6px;
}

.dir-table[b-rk3r36wfa0] {
    width: 100%;
    min-width: 62rem;
    border-collapse: collapse;
    font-size: .8125rem;
}

.dir-proj[b-rk3r36wfa0] {
    min-width: 46rem;
}

.dir-table th[b-rk3r36wfa0],
.dir-table td[b-rk3r36wfa0] {
    padding: .15rem .45rem;
    border-bottom: 1px solid var(--pms-thead);
    white-space: nowrap;
}

.dir-table td[b-rk3r36wfa0] {
    text-align: right;
    font-family: var(--pms-mono);
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
}

.dir-table thead th[b-rk3r36wfa0] {
    background: var(--pms-thead);
    font-weight: 600;
    text-align: right;
    border-bottom: 1px solid var(--pms-border);
}

.dir-table thead th.dir-label[b-rk3r36wfa0],
.dir-table thead th.dir-period[b-rk3r36wfa0] {
    text-align: left;
}

.dir-period[b-rk3r36wfa0] {
    border-left: 1px solid var(--pms-border);
}

.dir-range[b-rk3r36wfa0] {
    font-weight: 400;
    color: var(--bs-secondary-color);
    margin-left: .25rem;
}

/* Prima colonna di ogni periodo: separatore verticale fra i gruppi. */
.dir-table .dir-first[b-rk3r36wfa0] {
    border-left: 1px solid var(--pms-border);
}

/* Etichette delle righe ferme a sinistra mentre la tabella scorre (tablet). */
.dir-table .dir-label[b-rk3r36wfa0] {
    position: sticky;
    left: 0;
    z-index: 1;
    background: #fff;
    text-align: left;
    font-weight: 400;
    min-width: 11rem;
}

.dir-table thead .dir-label[b-rk3r36wfa0] {
    background: var(--pms-thead);
}

.dir-section th[b-rk3r36wfa0] {
    background: var(--pms-cream);
    font-weight: 600;
    text-align: left;
    padding-top: .3rem;
}

.dir-total th[b-rk3r36wfa0],
.dir-total td[b-rk3r36wfa0] {
    font-weight: 600;
    border-top: 1px solid var(--pms-border);
}

.dir-up[b-rk3r36wfa0] {
    color: var(--bs-success-text-emphasis);
}

.dir-down[b-rk3r36wfa0] {
    color: var(--bs-danger-text-emphasis);
}

.dir-nd[b-rk3r36wfa0] {
    color: var(--bs-secondary-color);
    cursor: help;
}

.dir-flag[b-rk3r36wfa0] {
    display: inline-block;
    margin-left: .3rem;
    padding: 0 .3rem;
    border: 1px solid var(--pms-border);
    border-radius: 4px;
    font-size: .6875rem;
    font-weight: 400;
    color: var(--bs-secondary-color);
    background: #fff;
}

.dir-warn[b-rk3r36wfa0] {
    color: var(--bs-warning-text-emphasis);
}

.dir-top-grid[b-rk3r36wfa0] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
    gap: 0.75rem;
}
/* /Components/Pages/Direzione/CruscottoDettagli.razor.rz.scp.css */
/* Grafici 2-3 e «Da guardare» (V2 «Operativo denso»): riquadri come «Andamento e previsione»,
   tabella fitta con cifre mono tabulari, Δ colorato solo nel verso. */
.dir2-gap[b-q3k4q5dv3z] {
    margin-top: 1rem;
}

.dir2-panel[b-q3k4q5dv3z] {
    margin-top: 1rem;
    padding: .75rem;
    border: 1px solid var(--pms-border);
    background: var(--bs-body-bg);
}

.dir2-title[b-q3k4q5dv3z] {
    margin: 0 0 .5rem;
    font-size: 1rem;
    font-weight: 600;
}

.dir2-range[b-q3k4q5dv3z] {
    font-weight: 400;
    color: var(--bs-secondary-color);
    margin-left: .25rem;
}

.dir2-sub[b-q3k4q5dv3z] {
    margin: .75rem 0 .25rem;
    font-size: .875rem;
    font-weight: 600;
}

.dir2-panel > .dir2-sub:first-of-type[b-q3k4q5dv3z],
.dir2-pair .dir2-sub[b-q3k4q5dv3z] {
    margin-top: 0;
}

.dir2-pair[b-q3k4q5dv3z] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
    gap: 1rem 1.5rem;
}

.dir2-note[b-q3k4q5dv3z] {
    margin: .25rem 0 0;
    font-size: .8125rem;
    color: var(--pms-ink);
    opacity: .75;
}

.dir2-line[b-q3k4q5dv3z] {
    margin: 0;
    font-size: .8125rem;
}

.dir2-warn[b-q3k4q5dv3z] {
    color: var(--bs-warning-text-emphasis);
    opacity: 1;
}

.dir2-scroll[b-q3k4q5dv3z] {
    overflow-x: auto;
    max-width: 100%;
    border: 1px solid var(--pms-border);
    border-radius: 6px;
}

.dir2-table[b-q3k4q5dv3z] {
    width: 100%;
    min-width: 36rem;
    border-collapse: collapse;
    font-size: .8125rem;
}

.dir2-table th[b-q3k4q5dv3z],
.dir2-table td[b-q3k4q5dv3z] {
    padding: .15rem .45rem;
    border-bottom: 1px solid var(--pms-thead);
    white-space: nowrap;
}

.dir2-table td[b-q3k4q5dv3z] {
    text-align: right;
    font-family: var(--pms-mono);
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
}

.dir2-table thead th[b-q3k4q5dv3z] {
    background: var(--pms-thead);
    font-weight: 600;
    text-align: right;
    border-bottom: 1px solid var(--pms-border);
}

.dir2-table .dir2-label[b-q3k4q5dv3z] {
    text-align: left;
    font-weight: 400;
    white-space: normal;
    min-width: 12rem;
}

.dir2-table thead .dir2-label[b-q3k4q5dv3z] {
    font-weight: 600;
}

.dir2-flag[b-q3k4q5dv3z] {
    display: inline-block;
    margin-left: .3rem;
    padding: 0 .3rem;
    border: 1px solid var(--pms-border);
    border-radius: 4px;
    font-size: .6875rem;
    color: var(--bs-secondary-color);
}

.dir2-nd[b-q3k4q5dv3z] {
    color: var(--bs-secondary-color);
    cursor: help;
}

.dir2-up[b-q3k4q5dv3z] {
    color: var(--bs-success-text-emphasis);
}

.dir2-down[b-q3k4q5dv3z] {
    color: var(--bs-danger-text-emphasis);
}
/* /Components/Pages/Direzione/DirectorDigestToggle.razor.rz.scp.css */
/* Riepilogo via email (onda 2, U3): una riga sotto la testata del cruscotto, che va a capo su tablet. */
.dir-digest[b-p77maf09lz] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem 1rem;
    margin-bottom: .5rem;
}

.dir-digest-mail[b-p77maf09lz] {
    overflow-wrap: anywhere;
}
/* /Components/Pages/FrontOffice/Conto.razor.rz.scp.css */
/* Finestra delle voci del conto: resta dentro lo schermo (Ranieri 22/08), con
   scorrimento interno e intestazione che resta visibile. Le card dei totali sopra e
   «Nuovo addebito» sotto restano sempre raggiungibili senza scorrere la pagina. */
.conto-voci[b-0re6z7koqd] {
    max-height: clamp(16rem, 50vh, 40rem);
    overflow-y: auto;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--pms-border, #d9dde3);
}

.conto-voci thead th[b-0re6z7koqd] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--pms-thead, #f1f3f6);
    box-shadow: inset 0 -1px 0 var(--pms-border, #d9dde3);
}
/* /Components/Pages/FrontOffice/Housekeeping.razor.rz.scp.css */
/* La pagina cresce libera (richiesta 28/08: via il footer sticky dei blocchi e il
   riquadro a scroll della lista): resta solo la testata di colonna incollata in
   cima mentre la pagina scorre. Il bordo va in box-shadow perché con
   border-collapse i bordi non seguono l'elemento sticky. */
.hk-rooms thead th[b-9s02ntsxvl] {
    position: sticky;
    top: 0;
    z-index: 5;
    background-color: var(--pms-thead, var(--bs-body-bg));
    box-shadow: inset 0 -1px 0 var(--pms-border, var(--bs-border-color));
}

.hk-floor td[b-9s02ntsxvl] {
    background-color: var(--bs-tertiary-bg);
}
/* /Components/Pages/FrontOffice/Planning.razor.rz.scp.css */
/* La pagina occupa la finestra senza far scorrere il body (3.5rem top-row +
   1.1rem padding del content): filtri e pannelli fermi, scorre solo il nastro. */
/* Intestazione compatta: titolo | legenda | bottone sulla stessa riga. La legenda
   scorre su più righe SOLO fino all'altezza del titolo (h1 = 1.2 × font-size), poi
   si tronca con i puntini; il testo intero resta nel title. */
.plan-head[b-8gik5t1pin] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.25rem;
}

.plan-head h1[b-8gik5t1pin] {
    font-size: 1.75rem;
    line-height: 1.2;
    white-space: nowrap;
}

.plan-hint[b-8gik5t1pin] {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 0.8rem;
    line-height: 1.25;
    max-height: calc(1.75rem * 1.2); /* = altezza del titolo: due righe di legenda */
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.plan-shell[b-8gik5t1pin] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--pms-top-chrome-h, 4.6rem) - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    height: calc(100dvh - var(--pms-top-chrome-h, 4.6rem) - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    padding-bottom: 0.5rem;
}

/* Pannello prenotazione stretto: padding minimo, altezza = riga di bottoni btn-sm
   (≈1.95rem) + padding, margine sotto ridotto a 0.25rem così il nastro sale. */
.plan-info[b-8gik5t1pin] {
    margin-bottom: 0.25rem;
}

.plan-info-body[b-8gik5t1pin] {
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
    min-height: 2.4rem;
}

.tape-wrap[b-8gik5t1pin] {
    overflow: auto;
    flex: 1 1 auto;
    min-height: 8rem; /* coi pannelli aperti il nastro non collassa a zero */
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    background: #fff;
}

/* Testata giorni + corsia "Da assegnare" bloccate in alto DENTRO lo scroll:
   si trascina una barra sulle camere in fondo senza perderle di vista.
   z-index sopra le barre (2) e le etichette sticky-left (3) delle righe camere. */
.tape-fixed[b-8gik5t1pin] {
    position: sticky;
    top: 0;
    z-index: 5;
    background: #fff;
    box-shadow: 0 2px 4px rgba(33, 37, 41, 0.08);
}

/* Riga "Occ." bloccata in basso: la situazione resta sott'occhio. */
.tape-footer[b-8gik5t1pin] {
    position: sticky;
    bottom: 0;
    z-index: 5;
    background: #fff;
    box-shadow: 0 -2px 4px rgba(33, 37, 41, 0.08);
}

.tape[b-8gik5t1pin] {
    --cell: 3rem;
    --label: 7.5rem;
    display: inline-block;
    min-width: 100%;
}

.tape-row[b-8gik5t1pin] {
    display: flex;
    border-bottom: 1px solid #f1f3f5;
}

.tape-label[b-8gik5t1pin] {
    flex: 0 0 var(--label);
    position: sticky;
    left: 0;
    z-index: 3; /* sopra le barre attive (2): a pari livello vincevano loro per ordine DOM */
    background: #fff;
    border-right: 1px solid #dee2e6;
    padding: 0.15rem 0.5rem;
    font-size: 0.85rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: flex;
    align-items: center;
}

/* Codice tipologia subito dopo il numero camera. */
.tape-type[b-8gik5t1pin] {
    margin-left: 0.3rem;
    color: #495057;
    font-weight: 600;
    flex: none;
}

/* Descrizione breve della camera: riempie lo spazio che resta, mai a capo. */
.tape-desc[b-8gik5t1pin] {
    margin-left: 0.35rem;
    color: #6c757d;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tape-days[b-8gik5t1pin] {
    position: relative;
    display: flex;
    flex: 0 0 calc(var(--cell) * var(--cols));
    min-height: 1.9rem;
}

.tape-cell[b-8gik5t1pin] {
    flex: 0 0 var(--cell);
    border-right: 1px solid #f1f3f5;
}

.tape-cell.tag-weekend[b-8gik5t1pin] {
    background: #f8f9fa;
}

.tape-cell.tag-today[b-8gik5t1pin] {
    background: #e8eeff;
}

.tape-cell.droppable:hover[b-8gik5t1pin] {
    background: #e2efe8;
    outline: 1px dashed #2f9e63;
    outline-offset: -1px;
}

/* Selezione col trascinamento a MEZZA GIORNATA, come le barre di occupazione:
   parte da metà cella d'arrivo e finisce a metà cella del giorno di partenza.
   background-image (non background) così l'ombra weekend/oggi resta sotto le metà libere. */
.tape-cell.tape-sel-start[b-8gik5t1pin] {
    background-image: linear-gradient(to right, transparent 50%, #d5def6 50%);
}

.tape-cell.tape-sel-mid[b-8gik5t1pin] {
    background-image: linear-gradient(#d5def6, #d5def6);
}

.tape-cell.tape-sel-end[b-8gik5t1pin] {
    background-image: linear-gradient(to right, #d5def6 50%, transparent 50%);
}

.tape-head[b-8gik5t1pin] {
    text-align: center;
    font-size: 0.75rem;
    line-height: 1.1;
    padding: 0.2rem 0;
    border-bottom: 2px solid #dee2e6;
    color: #495057;
    cursor: pointer;
}

.tape-head.tag-today[b-8gik5t1pin] {
    font-weight: 700;
    color: #2f5fd0;
}

.tape-head-label[b-8gik5t1pin],
.tape-group .tape-label[b-8gik5t1pin] {
    background: #f8f9fa;
}

/* Grip di resize della colonna camere: bordo destro dell'etichetta di testata
   (dentro il blocco sticky, quindi sempre raggiungibile). Niente position: relative:
   annullava lo sticky-left di .tape-label e scorrendo a destra i giorni la coprivano;
   sticky fa già da contenitore per il grip assoluto. */
.tape-head-label[b-8gik5t1pin] {
    overflow: visible;
}

/* Conteggio camere visualizzate (solo coi filtri attivi). */
.rooms-shown[b-8gik5t1pin] {
    font-size: 0.75rem;
    font-weight: 600;
    color: #495057;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.label-grip[b-8gik5t1pin] {
    position: absolute;
    top: 0;
    right: -4px;
    width: 9px;
    height: 100%;
    cursor: col-resize;
    z-index: 6;
    touch-action: none;
}

.label-grip:hover[b-8gik5t1pin] {
    background: rgba(47, 95, 208, 0.3);
}

.tape-group[b-8gik5t1pin] {
    border-bottom: 1px solid #dee2e6;
}

.tape-group .tape-days[b-8gik5t1pin] {
    min-height: 1.4rem;
    background: #f8f9fa;
}

.tape-unassigned .tape-label[b-8gik5t1pin] {
    color: #b02a37;
    font-weight: 600;
}

.tape-unassigned .tape-cell[b-8gik5t1pin] {
    background: #fff8f8;
}

.tape-unassigned .tape-cell.tag-today[b-8gik5t1pin] {
    background: #e8eeff;
}

/* Vista "solo numeri" della corsia Da assegnare: conteggio per giorno, clic = barre. */
.tape-unum[b-8gik5t1pin] {
    text-align: center;
    font-weight: 600;
    font-size: 0.85rem;
    line-height: 1.9rem;
    color: #b02a37;
    cursor: pointer;
}

.tape-unum:hover[b-8gik5t1pin] {
    background: #ffe9ec;
}

.unassigned-toggle[b-8gik5t1pin] {
    font-size: 0.7rem;
    text-decoration: none;
    white-space: nowrap;
}

.tape-occ[b-8gik5t1pin] {
    text-align: center;
    color: #6c757d;
}

/* «:where(.tape-days) ::deep .tape-bar» (stessa specificità di .tape-bar): le barre dei gruppi sono l'<a> di GruppoLink, componente
   figlio che NON riceve l'attributo di scope del planner (senza, niente posizionamento). */
.tape-bar[b-8gik5t1pin], :where(.tape-days)[b-8gik5t1pin]  .tape-bar {
    position: absolute;
    top: 0.15rem;
    height: 1.6rem;
    border-radius: 0.8rem;
    padding: 0.1rem 0.45rem;
    font-size: 0.78rem;
    line-height: 1.4rem;
    white-space: nowrap;
    overflow: hidden;
    cursor: pointer;
    z-index: 1;
    border: 1px solid transparent;
    color: #fff;
    /* Flex: il nome (.tape-bar-name) cede spazio e si accorcia con i puntini, i badge
       (tipologia, puntina, «← 203 / → 501») non si riducono mai (Ranieri 23/08). */
    display: flex;
    align-items: center;
    gap: 0.2rem;
}

.tape-bar-name[b-8gik5t1pin] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tape-bar.selected[b-8gik5t1pin] {
    outline: 2px solid #212529;
    outline-offset: 1px;
}

/* Venduta come virtuale (spec Camere virtuali 21/07 §4): la camera è della MADRE,
   il codice venduto compare come piccolo badge prima del nome ospite. */
.tape-bar-virtual[b-8gik5t1pin] {
    display: inline-block;
    flex: 0 0 auto;
    padding: 0 0.22rem;
    border-radius: 0.6rem;
    background: rgba(255, 255, 255, 0.4);
    font-size: 0.66rem;
    font-weight: 600;
    vertical-align: 1px;
}

/* Camera fissa (richiesta Ranieri 15/08): puntina in testa alla barra — l'ospite
   ha chiesto proprio quella camera, non spostarla. */
.tape-bar-pin[b-8gik5t1pin] {
    display: inline-block;
    flex: 0 0 auto;
    font-size: 0.7rem;
    filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.6));
}

/* Colori di stato: INLINE dalla palette dell'hotel (Configurazione → Colori stati, Ranieri
   26/09). Qui resta solo la struttura: l'opzione (anche scaduta) tratteggiata, le partite
   sotto le attive sulla stessa camera. */
.tape-bar.st-option[b-8gik5t1pin] {
    border-style: dashed;
    border-color: rgba(0, 0, 0, 0.45);
}

.tape-bar.st-out[b-8gik5t1pin] {
    z-index: 1; /* le barre storiche restano sotto quelle attive sulla stessa camera */
}

.tape-bar.st-active[b-8gik5t1pin] {
    z-index: 2;
}

/* Barra fantasma (camere comunicanti, Task 7): stesso colore di stato della barra
   vera ma attenuato e tratteggiato — "sei fuori gioco per colpa di questa". Nessuna
   gestione di sovrapposizione dedicata: se una barra vera copre le stesse notti
   sulla stessa riga (gruppi con camera comunicante prenotata a parte), l'ombra resta
   sotto per z-index, coerente con come il planning già impila st-out sotto le attive. */
.tape-bar.plan-ghost[b-8gik5t1pin] {
    z-index: 0;
    opacity: 0.55;
    border: 1px dashed rgba(33, 37, 41, 0.6);
    background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.25) 0 4px, transparent 4px 8px);
}

.plan-ghost-origin[b-8gik5t1pin] {
    font-weight: 700;
    margin-right: 0.25rem;
}

/* In trascinamento l'ombra non deve intercettare dragover/drop: la cella sotto
   (che li gestisce davvero, col rifiuto server "comunicante" del Task 3) deve
   restare raggiungibile — click resta invece attivo fuori dal trascinamento. */
.tape-bar.plan-ghost.plan-ghost-dragging[b-8gik5t1pin] {
    pointer-events: none;
}

.legend[b-8gik5t1pin] {
    display: inline-block;
    width: 0.9rem;
    height: 0.9rem;
    border-radius: 0.45rem;
    vertical-align: -0.1rem;
    margin-left: 0.4rem;
}

.legend.legend-option[b-8gik5t1pin] { border: 1px dashed rgba(0, 0, 0, 0.45); }
.legend.st-block-ooo[b-8gik5t1pin] { background: #23272c; }
.legend.st-block-oos[b-8gik5t1pin] { background: repeating-linear-gradient(45deg, #d9a514, #d9a514 3px, #fff 3px, #fff 6px); border: 1px solid #a87d10; }

.tape-bar.st-block-ooo[b-8gik5t1pin] {
    background: repeating-linear-gradient(45deg, #23272c, #23272c 6px, #3d434a 6px, #3d434a 12px);
    border-radius: 0.25rem;
    cursor: default;
}

.tape-bar.st-block-oos[b-8gik5t1pin] {
    background: repeating-linear-gradient(45deg, #faf1d9, #faf1d9 6px, #f2e2ae 6px, #f2e2ae 12px);
    color: #664d03;
    border: 1px solid #a87d10;
    border-radius: 0.25rem;
    cursor: default;
}

.hk-dot[b-8gik5t1pin] {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    margin-right: 0.35rem;
    flex: 0 0 auto;
}

.hk-dot.hk-dirty[b-8gik5t1pin] { background: #d64545; }
.hk-dot.hk-clean[b-8gik5t1pin] { background: #2f9e63; }
.hk-dot.hk-inspected[b-8gik5t1pin] { background: #2f5fd0; }

/* Riquadro del motivo di spostamento/cambio camera: popover fisso sul punto del
   drop, sopra il nastro. La larghezza fissa rende affidabile il clamp inline
   (calc(100vw - 31rem)) che lo tiene dentro lo schermo. */
.move-popover[b-8gik5t1pin] {
    position: fixed;
    z-index: 1055;
    width: 30rem;
    max-width: calc(100vw - 1rem);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.25);
}

/* Fascia temporanea "al volo" (click sulla testata): striscia azzurra larga 1/4
   della colonna, centrata ESATTAMENTE a metà giornata — dove iniziano e finiscono
   le barre, che corrono da mezzogiorno a mezzogiorno (richiesta Ranieri 05/08).
   Sopra qualunque sfondo (periodo in evidenza compreso); solo stato di sessione. */
.tape-cell.tag-pinned[b-8gik5t1pin] {
    background-image: linear-gradient(rgba(47, 95, 208, .45), rgba(47, 95, 208, .45));
    background-size: 25% 100%;
    background-position: 50% 0;
    background-repeat: no-repeat;
}

/* Toast a scomparsa dei messaggi operativi (cambio camera, assegnazioni):
   position fixed = zero slittamenti del nastro; ~2,2s pieni + sfumatura. */
.plan-toast[b-8gik5t1pin] {
    position: fixed;
    left: 50%;
    bottom: 1.25rem;
    transform: translateX(-50%);
    z-index: 1080;
    background: rgba(33, 37, 41, .92);
    color: #fff;
    padding: .5rem 1.1rem;
    border-radius: .5rem;
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .25);
    max-width: min(90vw, 42rem);
    text-align: center;
    pointer-events: none;
    animation: plan-toast-fade-b-8gik5t1pin 2.8s forwards;
}

@keyframes plan-toast-fade-b-8gik5t1pin {
    0% { opacity: 0; transform: translateX(-50%) translateY(.5rem); }
    8% { opacity: 1; transform: translateX(-50%) translateY(0); }
    78% { opacity: 1; }
    100% { opacity: 0; }
}

/* Griglia marcata (richiesta Ranieri 08/10, operatori che non distinguono le linee chiare):
   righe e giorni con tratto scuro, colonna camere e testata ancora più decise, stacco netto
   a ogni lunedì e weekend un tono più scuro. Le barre restano sopra, invariate. */
.tape-hc .tape-row[b-8gik5t1pin] {
    border-bottom-color: #868e96;
}

.tape-hc .tape-cell[b-8gik5t1pin] {
    border-right-color: #868e96;
}

.tape-hc .tape-cell.tag-weekstart[b-8gik5t1pin] {
    box-shadow: inset 2px 0 0 #343a40; /* ombra, non bordo: la cella non cambia misura */
}

.tape-hc .tape-cell.tag-weekend[b-8gik5t1pin] {
    background: #e9ecef;
}

.tape-hc .tape-label[b-8gik5t1pin] {
    border-right: 2px solid #343a40;
}

.tape-hc .tape-head[b-8gik5t1pin] {
    border-bottom-color: #343a40;
    color: #212529;
}

.tape-hc .tape-group[b-8gik5t1pin] {
    border-bottom: 2px solid #343a40;
}

/* Ricerca pratica: dropdown sotto il box e barra trovata evidenziata. */
.planner-search[b-8gik5t1pin] { min-width: 14rem; }
.planner-search-results[b-8gik5t1pin] {
    position: absolute;
    z-index: 30;
    left: 0.75rem;
    right: 0;
    max-height: 18rem;
    overflow-y: auto;
}

.tape-bar.bar-found[b-8gik5t1pin] {
    outline: 3px solid #d63384;
    outline-offset: 1px;
    animation: bar-found-pulse-b-8gik5t1pin 0.8s ease-in-out 3;
}

@keyframes bar-found-pulse-b-8gik5t1pin {
    50% { outline-color: transparent; }
}

/* Gruppo bloccato non ancora splittato (corsia «Da assegnare»): grigliato, solo clic. */
.tape-days[b-8gik5t1pin]  .tape-bar.bar-group-block {
    color: var(--bs-body-color);
    border: 1px dashed var(--bs-secondary-color);
    background-color: var(--bs-tertiary-bg);
    background-image: repeating-linear-gradient(45deg, var(--bs-border-color) 0 6px, transparent 6px 12px);
    font-weight: 600;
    text-decoration: none;
}

/* Opzione «non blocca dispo»: solo il bordo tratteggiato, niente riempimento (non occupa). */
.tape-days[b-8gik5t1pin]  .tape-bar.bar-group-block.bar-group-nonblocking {
    background-color: transparent;
    background-image: none;
    font-weight: 400;
    font-style: italic;
}

.tape-days[b-8gik5t1pin]  .tape-bar.bar-group-block:hover {
    color: var(--bs-body-color);
    text-decoration: none;
}
/* /Components/Pages/FrontOffice/Rack.razor.rz.scp.css */
/* Room Rack: card della giornata a DIMENSIONE FISSA (griglia a colonne uguali,
   altezza bloccata, testi con ellissi — mai card che si allungano). */

.rack-grid[b-q0azuxnqhi] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(15.5rem, 1fr));
    gap: .6rem;
}

.rack-card[b-q0azuxnqhi] {
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    background: #fff;
    padding: .5rem .65rem;
    height: 10.5rem;
    display: flex;
    flex-direction: column;
    cursor: pointer;
    overflow: hidden;
    transition: box-shadow .12s ease;
}

.rack-card:hover[b-q0azuxnqhi] {
    box-shadow: 0 .15rem .5rem rgba(0, 0, 0, .12);
    border-color: #9ec5fe;
}

.rack-card.done[b-q0azuxnqhi] {
    opacity: .55;
    background: #f8f9fa;
}

.rack-top[b-q0azuxnqhi] {
    display: flex;
    align-items: baseline;
    gap: .4rem;
}

.rack-room[b-q0azuxnqhi] {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.2;
}

.rack-type[b-q0azuxnqhi] {
    font-size: .75rem;
    color: #6c757d;
}

.rack-guest[b-q0azuxnqhi] {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rack-line[b-q0azuxnqhi] {
    font-size: .78rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rack-label[b-q0azuxnqhi] {
    display: inline-block;
    width: 4.6rem;
    color: #6c757d;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.rack-dates[b-q0azuxnqhi] {
    font-size: .75rem;
    color: #495057;
    margin-top: auto;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rack-money[b-q0azuxnqhi] {
    border-top: 1px solid #eceff1;
    margin-top: .25rem;
    padding-top: .25rem;
    font-size: .8rem;
    line-height: 1.35;
}

.rack-money .rack-label[b-q0azuxnqhi] {
    width: 6.2rem;
}
/* /Components/Pages/FrontOffice/Ricevimento.razor.rz.scp.css */
/* Testata fissa del Ricevimento (richiesta Ranieri 23/07): il blocco
   titolo → Funzioni → giorno/contatori → checklist/note → AVVISI → form walk-in
   resta agganciato sotto la top-row del layout mentre il body scorre; le righe
   di Arrivi/Partenze/In casa (coi loro titoli) scivolano SOTTO la testata.
   Sfondo pieno color fondo-pagina (--pms-cream, oggi grigio freddo V2) per
   coprirle; z-index sopra le tabelle (statiche), sotto gli overlay
   (modali/palette partono da 1050+). */
.ricevimento-head[b-jbdp4jlxni] {
    position: sticky;
    top: 3.5rem; /* altezza della .top-row sticky del MainLayout */
    z-index: 5;
    background-color: var(--pms-cream);
    /* Copre anche l'aria del padding-top del contenuto, così le righe non
       spuntano nella fessura sopra la testata. */
    margin-top: -1.1rem;
    padding-top: 1.1rem;
    padding-bottom: .25rem;
}

/* Sotto i 641px la top-row del layout NON è sticky: la testata si aggancia
   direttamente in cima alla finestra. */
@media (max-width: 640.98px) {
    .ricevimento-head[b-jbdp4jlxni] {
        top: 0;
    }
}

/* Mini-griglia della card NOW! (richiesta Ranieri 05/08): i numeri di
   camere e pax incolonnati sotto arrivi/partenze/in casa. I NUMERI sono
   il dato guardato più spesso: font pieno e pesato, etichette discrete. */
.ric-now-grid[b-jbdp4jlxni] {
    display: grid;
    grid-template-columns: auto repeat(3, auto);
    column-gap: .7rem;
    line-height: 1.25;
}

.ric-now-grid > span[b-jbdp4jlxni] {
    text-align: center;
    font-size: 1.25rem;
    font-weight: 700;
    /* V2: i numeri operativi in mono tabellare (come il mock di riferimento). */
    font-family: var(--pms-mono);
    font-variant-numeric: tabular-nums;
}

.ric-now-grid > .text-muted[b-jbdp4jlxni] {
    font-size: 1rem;
    font-weight: 400;
    font-family: var(--pms-sans);
}

/* Prima colonna (camere/pax): etichette a sinistra. */
.ric-now-grid > span:nth-child(4n+1)[b-jbdp4jlxni] {
    text-align: left;
}

/* La "R" del banco: firma della pagina al posto della parola Ricevimento
   (richiesta Ranieri 05/08). */
.ric-r[b-jbdp4jlxni] {
    font-size: 2.1rem;
    font-weight: 700;
    line-height: 1;
}

/* Liste collassabili di NOW!/Giornata (richiesta Ranieri 20/08): la testata h4
   diventa un bottone a hit-area piena, stile invariato da chiuso/aperto — solo
   la freccia cambia — così il collasso resta un gesto dell'utente senza salti
   di layout bruschi sulla testata stessa. */
.pms-collapsible[b-jbdp4jlxni] {
    margin-bottom: .5rem;
}

/* .pms-collapsible-toggle e .pms-collapse-arrow vivono in app.css (promosse con
   la scheda Alert del Banco Booking, spec 2026-09-04): stesse classi, stessi valori. */

/* Intestazioni ordinabili di NOW!/Giornata (richiesta Ranieri 28/08): stesso spirito
   di .pms-collapsible-toggle, ma per un <th> — nessuna larghezza forzata al 100%. */
.pms-th-sort[b-jbdp4jlxni] {
    border: 0;
    background: transparent;
    padding: 0;
    margin: 0;
    font: inherit;
    font-weight: inherit;
    color: inherit;
    cursor: pointer;
    white-space: nowrap;
}

.pms-th-sort:hover[b-jbdp4jlxni],
.pms-th-sort:focus-visible[b-jbdp4jlxni] {
    color: var(--pms-accent, #2f5fd0);
}


/* Gesto ARMATO (harden 22/09): al posto del bottone iniziale compaiono il motivo,
   «Conferma …» e «Annulla» — elementi nuovi, così un doppio click non conferma.
   Il motivo è testo di rinforzo (colore d'enfasi Bootstrap, ≥ 4.5:1 su fondo chiaro). */
.ric-arm[b-jbdp4jlxni] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: .35rem;
}

.ric-arm-why[b-jbdp4jlxni] {
    font-size: .8rem;
    color: var(--bs-warning-text-emphasis);
    white-space: nowrap;
}

.ric-arm-why-danger[b-jbdp4jlxni] {
    color: var(--bs-danger-text-emphasis);
}

/* Tastiera del gesto (harden 22/09): scorciatoia visibile nel campo (kbd, tema V2)
   e stato «zero risultati» che rimanda a Prenotazioni. */
.ric-kbd-wrap[b-jbdp4jlxni] {
    padding-inline: .45rem;
    background-color: var(--bs-body-bg);
}

.ric-kbd-wrap kbd[b-jbdp4jlxni] {
    font-size: .7rem;
    padding: .1rem .35rem;
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border: 1px solid var(--bs-border-color);
    box-shadow: none;
}

.ric-gesto-empty[b-jbdp4jlxni] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    font-size: .9rem;
    color: var(--bs-secondary-color);
}
/* /Components/Pages/Gruppo/GruppoCruscotto.razor.rz.scp.css */
/* Cruscotto di gruppo, V2 «Operativo denso» come /direzione: tabella fitta su fondo bianco, cifre
   mono tabulari, Δ colorato solo nel verso, «n.d.» in grigio; su tablet scorre il riquadro, non la pagina. */
.grp-head[b-m4hoz2xz1m] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    margin-bottom: .5rem;
}

.grp-scroll[b-m4hoz2xz1m] {
    overflow-x: auto;
    max-width: 100%;
    background: #fff;
    border: 1px solid var(--pms-border);
    border-radius: 6px;
}

.grp-table[b-m4hoz2xz1m] {
    width: 100%;
    min-width: 62rem;
    border-collapse: collapse;
    font-size: .8125rem;
}

.grp-table th[b-m4hoz2xz1m],
.grp-table td[b-m4hoz2xz1m] {
    padding: .15rem .45rem;
    border-bottom: 1px solid var(--pms-thead);
    white-space: nowrap;
}

.grp-table td[b-m4hoz2xz1m] {
    text-align: right;
    font-family: var(--pms-mono);
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
}

.grp-table thead th[b-m4hoz2xz1m] {
    background: var(--pms-thead);
    font-weight: 600;
    text-align: right;
    border-bottom: 1px solid var(--pms-border);
}

.grp-table thead th.grp-label[b-m4hoz2xz1m],
.grp-table thead th.grp-period[b-m4hoz2xz1m] {
    text-align: left;
}

.grp-period[b-m4hoz2xz1m] {
    border-left: 1px solid var(--pms-border);
}

.grp-range[b-m4hoz2xz1m] {
    font-weight: 400;
    color: var(--bs-secondary-color);
    margin-left: .25rem;
}

.grp-table .grp-first[b-m4hoz2xz1m] {
    border-left: 1px solid var(--pms-border);
}

/* Nome dell'hotel fermo a sinistra mentre la tabella scorre (tablet). */
.grp-table .grp-label[b-m4hoz2xz1m] {
    position: sticky;
    left: 0;
    z-index: 1;
    background: #fff;
    text-align: left;
    font-weight: 400;
    min-width: 14rem;
}

.grp-table thead .grp-label[b-m4hoz2xz1m] {
    background: var(--pms-thead);
}

.grp-total th[b-m4hoz2xz1m],
.grp-total td[b-m4hoz2xz1m] {
    font-weight: 600;
    border-top: 1px solid var(--pms-border);
}

.grp-dot[b-m4hoz2xz1m] {
    display: inline-block;
    width: .55rem;
    height: .55rem;
    border-radius: 50%;
    margin-right: .3rem;
}

.grp-up[b-m4hoz2xz1m] {
    color: var(--bs-success-text-emphasis);
}

.grp-down[b-m4hoz2xz1m] {
    color: var(--bs-danger-text-emphasis);
}

.grp-nd[b-m4hoz2xz1m] {
    color: var(--bs-secondary-color);
    cursor: help;
}

.grp-mark[b-m4hoz2xz1m] {
    color: var(--bs-secondary-color);
    margin-left: .1rem;
    cursor: help;
}

.grp-flag[b-m4hoz2xz1m] {
    display: inline-block;
    margin-left: .3rem;
    padding: 0 .3rem;
    border: 1px solid var(--pms-border);
    border-radius: 4px;
    font-size: .6875rem;
    font-weight: 400;
    color: var(--bs-warning-text-emphasis);
    background: #fff;
}
/* /Components/Pages/Offerta/PagamentoScelte.razor.rz.scp.css */
/* Riepilogo prima del pagamento: stili propri, così è identico sulla pagina pubblica e
   nell'anteprima del banco (che non carica gli stili di Vedi). Etichette a sinistra,
   valori a destra con cifre tabellari. */
.offer-pay-summary[b-krmkcps7vf] {
    border: 1px solid var(--prenota-border, #ddd);
    border-radius: .5rem;
    padding: .9rem 1rem;
}

.ops-title[b-krmkcps7vf] {
    font-weight: 600;
    margin-bottom: .5rem;
}

.ops-list[b-krmkcps7vf] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 1.5rem;
    row-gap: .35rem;
    margin: 0;
}

.ops-list dt[b-krmkcps7vf] {
    font-weight: 400;
    color: var(--bs-secondary-color, #6c757d);
}

.ops-list dd[b-krmkcps7vf] {
    margin: 0;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ops-list .ops-total[b-krmkcps7vf] {
    border-top: 1px solid var(--prenota-border, #ddd);
    padding-top: .5rem;
    margin-top: .25rem;
    font-weight: 700;
    color: inherit;
}

.ops-note[b-krmkcps7vf] {
    font-size: .85rem;
    color: var(--bs-secondary-color, #6c757d);
    margin: .75rem 0 0;
}
/* /Components/Pages/Offerte/RichiestaPagamentoPanel.razor.rz.scp.css */
/* Anteprima della richiesta di pagamento (07/10): l'email nell'iframe porta i suoi stili
   inline; la sezione della pagina pubblica (PagamentoScelte) ha gli stili in Vedi.razor,
   assenti qui: quanto basta per leggerla, senza ristilizzare la pagina pubblica. */
.rp-preview-email[b-lxeffbndb4] {
    display: block;
    width: 100%;
    height: 32rem;
    border: 1px solid var(--bs-border-color);
    border-radius: .375rem;
    background: #f4f3f1;
}

.rp-preview-page[b-lxeffbndb4]  .offer-pay {
    border: 0;
    margin-bottom: 0 !important;
}

.rp-preview-page[b-lxeffbndb4]  .offer-pay-method {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    border-top: 1px solid var(--bs-border-color);
    padding: .75rem 0;
}

.rp-preview-page[b-lxeffbndb4]  .btn-prenota-green {
    background: var(--bs-success);
    border-color: var(--bs-success);
    color: #fff;
}
/* /Components/Pages/Prenotazioni/Allotment.razor.rz.scp.css */
/* src/Web/PMS.WebApp/Components/Pages/Prenotazioni/Allotment.razor.css
   Griglia LINEA × GIORNO del monitor allotment: stessa geometria della griglia
   disponibilità (TypeAvailabilityGrid) — colonna etichetta ferma a sinistra e celle a
   larghezza fissa — ma dati diversi (residuo/quota della linea, non il vendibile ARI),
   quindi markup proprio. La cella è più larga: ci sta «12/15», non un numero solo. */
.alt-grid[b-t9pgbqgh2b] { --cell: 3.1rem; --label: 13rem; display: inline-block; min-width: 100%; }
.alt-row[b-t9pgbqgh2b] { display: flex; align-items: stretch; }

.alt-label[b-t9pgbqgh2b] {
    flex: 0 0 var(--label);
    position: sticky;
    left: 0;
    z-index: 2;
    background: var(--bs-body-bg);
    border-bottom: 1px solid var(--pms-border, #d9dde3);
    padding: .15rem .4rem;
    font-size: .85rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.alt-label small[b-t9pgbqgh2b] { margin-left: .3rem; }

.alt-days[b-t9pgbqgh2b] { display: flex; flex: 0 0 calc(var(--cell) * var(--cols)); }

.alt-cell[b-t9pgbqgh2b] {
    flex: 0 0 var(--cell);
    text-align: center;
    font-size: .8rem;
    line-height: 1.15;
    border-left: 1px solid var(--pms-border, #d9dde3);
    border-bottom: 1px solid var(--pms-border, #d9dde3);
    padding: .2rem 0;
    user-select: none;
    cursor: pointer;
}

.alt-head-row .alt-label[b-t9pgbqgh2b], .alt-head-row .alt-cell[b-t9pgbqgh2b] {
    background: var(--bs-body-bg);
    font-weight: 500;
    cursor: default;
}

/* Semafori: stessa tavolozza desaturata della griglia disponibilità (V2 operativo).
   zero = contingente esaurito, over = venduto oltre la quota (extra-allotment). */
.alt-zero[b-t9pgbqgh2b] { background: #fdf3dc; color: #6d4700; }
.alt-over[b-t9pgbqgh2b] { background: #f9e5e3; color: #b3261e; font-weight: 700; }

/* Riga già rilasciata: la quota è rientrata in casa, non è più vendibile dal TO —
   spenta a vista e NON selezionabile (il cursore lo dice). */
.alt-released[b-t9pgbqgh2b] {
    background: var(--pms-thead, #f1f3f6);
    color: var(--bs-secondary-color, #6c757d);
    cursor: not-allowed;
}

/* Nessuna quota contrattata in quel giorno: la cella esiste solo per tenere la colonna. */
.alt-empty[b-t9pgbqgh2b] { color: var(--bs-secondary-color, #adb5bd); cursor: not-allowed; }

/* Ritocco manuale (stop sales): tacca sul fianco sinistro, non un colore di fondo —
   il fondo dice già esaurito/overbooking e non va coperto. */
.alt-adjusted[b-t9pgbqgh2b] { box-shadow: inset 2px 0 0 var(--pms-accent, #2f5fd0); }

/* Selezione dello stop sales: piena (non a mezza giornata come le barre di occupazione),
   perché qui si sceglie un INSIEME DI GIORNATE, non un soggiorno da arrivo a partenza. */
.alt-selected[b-t9pgbqgh2b] { outline: 2px solid var(--pms-accent, #2f5fd0); outline-offset: -2px; }

.alt-cell.alt-weekend:not(.alt-zero):not(.alt-over):not(.alt-released)[b-t9pgbqgh2b] { background: var(--pms-thead, #f1f3f6); }

/* Totale del contratto: si stacca dalle linee come la riga Hotel della disponibilità. */
.alt-total-row .alt-label[b-t9pgbqgh2b], .alt-total-row .alt-cell[b-t9pgbqgh2b] {
    font-weight: 600;
    border-bottom: 2px solid var(--pms-border, #d9dde3);
    cursor: default;
}

/* Barra dello stop sales: SEMPRE presente, altezza riservata anche da vuota — un blocco
   che compare al primo clic farebbe scorrere la griglia sotto il mouse mentre si trascina
   (lesson «mai far apparire/sparire blocchi che spostano il contenuto operativo»).
   Sticky in cima all'area di lavoro: con 45 colonne e più contratti la selezione può
   avvenire molto più in basso del punto in cui si preme il bottone. */
.alt-actions[b-t9pgbqgh2b] {
    position: sticky;
    top: 3.5rem; /* altezza della .top-row sticky del MainLayout, come banco e ricevimento */
    z-index: 3;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25rem;
    min-height: 3.1rem;
    padding: .4rem .6rem;
    margin-bottom: .5rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--pms-border, #d9dde3);
    border-radius: .375rem;
}

/* Pillole della legenda: gli stessi fondi delle celle, in piccolo. */
.alt-chip[b-t9pgbqgh2b] {
    display: inline-block;
    padding: 0 .3rem;
    border: 1px solid var(--pms-border, #d9dde3);
    border-radius: .2rem;
    font-family: var(--bs-font-monospace);
}
/* /Components/Pages/Prenotazioni/Booking.razor.rz.scp.css */
/* Testata fissa del banco Booking (spec 2026-08-05, gemella di
   .ricevimento-head): le card-tab restano agganciate sotto la top-row del
   layout mentre il body scorre. Sfondo pieno crema per coprire le righe. */
.booking-head[b-z0ii0c2e6q] {
    position: sticky;
    top: 3.5rem; /* altezza della .top-row sticky del MainLayout */
    z-index: 5;
    background-color: var(--pms-cream);
    margin-top: -1.1rem;
    padding-top: 1.1rem;
    padding-bottom: .25rem;
}

/* Sotto i 641px la top-row del layout NON è sticky. */
@media (max-width: 640.98px) {
    .booking-head[b-z0ii0c2e6q] {
        top: 0;
    }
}

/* Liste del banco che possono crescere (coda Online): scorrono nel loro
   riquadro invece di allungare la pagina, con la testata del banco sempre a
   video. 6.6rem = top-row 3.5 + padding 1.1 + la riga del filtro «Da
   elaborare/Tutte»; testata card-tab, intestazione di sezione e avviso di
   chiusura arrivano dalle variabili globali (app.css). */
.bk-scroll[b-z0ii0c2e6q] {
    max-height: calc(100vh - 6.6rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem) - var(--pms-bank-chrome-h, 0rem));
    max-height: calc(100dvh - 6.6rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem) - var(--pms-bank-chrome-h, 0rem));
    min-height: 8rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

/* Testate sticky dentro il riquadro che scorre (pattern .resv-scroll). */
.bk-scroll thead th[b-z0ii0c2e6q] {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: var(--pms-thead, #f1f3f6);
    box-shadow: inset 0 -2px 0 var(--pms-border, #d9dde3);
    border-bottom: 0;
}

/* La "B" del banco: firma della pagina, come la R del Ricevimento. */
.bk-b[b-z0ii0c2e6q] {
    font-size: 2.1rem;
    font-weight: 700;
    line-height: 1;
}

/* Mini-griglia della card Individuali: numeri pieni sopra, etichette sotto. */
.bk-face-grid[b-z0ii0c2e6q] {
    display: grid;
    grid-template-columns: auto auto;
    column-gap: .7rem;
    line-height: 1.25;
    text-align: center;
}

.bk-face-grid > strong[b-z0ii0c2e6q] {
    font-size: 1.25rem;
    font-family: var(--pms-mono, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}

.bk-face-grid > .text-muted[b-z0ii0c2e6q] {
    font-size: 1rem;
    font-weight: 400;
}

/* Card della testata tutte uguali (richiesta Ranieri 07/10): stessa larghezza minima e
   stessa altezza (align-self: stretch = l'altezza della card più alta della riga, cioè
   Individuali con la mini-griglia — la testata non cresce, --pms-bank-chrome-h resta
   valida), contenuto in colonna allineato in alto a sinistra. Solo il banco Booking: le
   card del Ricevimento (stessa .pms-card-tab di app.css) restano com'erano. Da compressa
   niente larghezza minima: le pillole restano strette per non andare a capo. */
.booking-head .pms-card-tab[b-z0ii0c2e6q] {
    align-self: stretch;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
}

.booking-head:not(.pms-head-collapsed) .pms-card-tab[b-z0ii0c2e6q] {
    min-width: 9rem;
}
/* /Components/Pages/Prenotazioni/CruscottoBooking.razor.rz.scp.css */
/* La griglia disponibilità scorre in orizzontale nel suo riquadro: 45 giorni su schermi
   stretti non ci stanno, e la pagina sotto non deve mai scorrere in orizzontale.
   Tetto verticale = tutto lo spazio sotto la testata (richiesta Ranieri 26/08, layout
   da portatile): la disponibilità è la fascia che conta e prende il viewport; le
   offerte stanno sotto la piega e ci si arriva scorrendo la PAGINA, che ora è libera
   di crescere. 6.6rem = testata sticky del banco (top-row 3.5 + padding 1.1) + riga
   «Disponibilità» sopra la griglia; l'ingombro card-tab arriva da --pms-bank-chrome-h. */
.cru-grid-scroll[b-tg36k6dz6n] {
    max-height: calc(100vh - 6.6rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem) - var(--pms-bank-chrome-h, 0rem));
    max-height: calc(100dvh - 6.6rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem) - var(--pms-bank-chrome-h, 0rem));
    min-height: 8rem;
    overflow-x: auto;
    overflow-y: auto;
    overscroll-behavior: contain;
}

/* KPI del funnel: numeri grossi, etichetta piccola (stessa grammatica dei contatori
   dell'elenco offerte). */
.cru-kpi[b-tg36k6dz6n] {
    border: 1px solid var(--pms-border, #d9dde3); border-radius: 6px; background: #fff;
    padding: .45rem .9rem; text-align: center; display: inline-flex; flex-direction: column;
    line-height: 1.15; min-width: 5.2rem;
}
.cru-kpi .n[b-tg36k6dz6n] { font-size: 1.25rem; font-weight: 700; font-variant-numeric: tabular-nums; font-family: var(--pms-mono, Consolas, monospace); }
.cru-kpi .l[b-tg36k6dz6n] { font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; color: var(--bs-secondary-color); }

/* Gli eventi scorrono nel loro riquadro con la testata ferma: la pagina non si allunga. */
.cru-events-scroll[b-tg36k6dz6n] { max-height: 15rem; overflow-x: auto; overflow-y: auto; overscroll-behavior: contain; }
.cru-events-scroll thead th[b-tg36k6dz6n] {
    position: sticky; top: 0; z-index: 1; background: var(--pms-thead, #f1f3f6);
    box-shadow: inset 0 -2px 0 var(--pms-border, #d9dde3); border-bottom: 0;
}
/* /Components/Pages/Prenotazioni/GruppoRooming.razor.rz.scp.css */
/* Rooming list: il minimo indispensabile: il resto sono classi Bootstrap.
   Le celle delle tabelle Bootstrap dipingono `--bs-table-bg`, quindi lo sfondo si
   cambia sulla variabile e non con un background-color (che l'inset box-shadow
   della tabella coprirebbe). */

/* Riga con l'editor aperto: si deve vedere a colpo d'occhio quale persona si sta
   compilando in una griglia di decine di righe. */
tr.riga-aperta[b-0ffkrvd9sz] {
    --bs-table-bg: var(--bs-primary-bg-subtle);
}

/* Slot ancora da compilare: grigi, chiaramente "non ancora una schedina". */
tr.riga-slot[b-0ffkrvd9sz] {
    --bs-table-bg: var(--bs-tertiary-bg);
}

/* Date della PERSONA diverse da quelle della camera: l'operatore deve accorgersene
   senza aprire la riga (è il caso che genera le date orfane di capogruppo). */
.data-persona[b-0ffkrvd9sz] {
    color: var(--bs-warning-text-emphasis);
    font-weight: 600;
}
/* /Components/Pages/Prenotazioni/GruppoScheda.razor.rz.scp.css */
/* Blocco camere: i riquadri (matrici notti indipendenti) si affiancano a 2 per riga
   quando lo spazio basta — coi gruppi da 3-4 notti un blocco a tutta larghezza sfora
   il campo visivo. Sui gruppi lunghi la soglia non è raggiungibile due volte e la
   griglia degrada da sola a 1 colonna. */
.blocchi-griglia[b-qt244il3dr] {
    display: grid;
    gap: 0.5rem;
    /* max(…, 50%): ogni colonna pretende almeno metà riga → MAI più di 2 blocchi
       affiancati (la richiesta è «2 per riga», non un mosaico). */
    grid-template-columns: repeat(auto-fit, minmax(max(34rem, calc(50% - 0.25rem)), 1fr));
    align-items: start;
}

/* Senza min-width:0 il contenuto in overflow sfonda la colonna invece di far
   scrollare il .table-responsive interno. */
.blocchi-griglia > *[b-qt244il3dr] {
    min-width: 0;
}

/* Griglie per notte (listino, blocco, pratiche): colonne a larghezza FISSA (5,8rem
   per notte, larghezza tabella calcolata inline). Senza layout fisso il .table al
   100% allargava le colonne sui gruppi corti (richiesta Ranieri 12/10; 5,2→5,8 il 13/10 per una cifra in più). */
.griglia-notti[b-qt244il3dr] {
    table-layout: fixed;
}

/* Card della scheda (come Nuova.razor.css, 14/10): riga 1 = Cliente 40 / Soggiorno 40 /
   Statistica 20, riga 2 = Stato 40 / Riepilogo economico 40 / Note 20.
   Bootstrap a 12 colonne non fa il 20%: sotto lg valgono i col-12. */
@media (min-width: 992px) {
    .col-lg-p40[b-qt244il3dr] {
        flex: 0 0 40%;
        max-width: 40%;
    }

    .col-lg-p20[b-qt244il3dr] {
        flex: 0 0 20%;
        max-width: 20%;
    }
}
/* /Components/Pages/Prenotazioni/Nuova.razor.rz.scp.css */
/* Scheda esistente: riga 1 = Ospite 40 / Soggiorno 40 / Statistica 20,
   riga 2 = 5 card da 20 (Importi, Risorse, Caparre, Riepilogo, Note).
   Bootstrap a 12 colonne non fa il 20%: sotto lg valgono i col-12. */
@media (min-width: 992px) {
    .col-lg-p40[b-hwcyjoh4y3] {
        flex: 0 0 40%;
        max-width: 40%;
    }

    .col-lg-p20[b-hwcyjoh4y3] {
        flex: 0 0 20%;
        max-width: 20%;
    }
}

/* Numero camera in evidenza (richiesta Ranieri 25/08): deve risaltare a colpo
   d'occhio rispetto agli altri campi della scheda. Mono per i numeri (tema V2). */
.room-chip[b-hwcyjoh4y3] {
    display: inline-block;
    min-width: 3.2rem;
    padding: 0 0.55rem;
    border-radius: 6px;
    background: var(--pms-accent);
    color: #fff;
    font-family: var(--pms-mono);
    font-size: 1.3rem;
    font-weight: 600;
    line-height: 1.6;
    text-align: center;
    vertical-align: baseline;
}

.room-chip--sm[b-hwcyjoh4y3] {
    font-size: 1.05rem;
    min-width: 2.6rem;
    line-height: 1.5;
}

/* Camera non ancora assegnata: stato che chiama l'azione, ambra tratteggiata. */
.room-chip--missing[b-hwcyjoh4y3] {
    background: #fff3cd;
    color: #664d03;
    border: 1px dashed #997404;
    font-family: var(--pms-sans);
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.7;
}

/* Zona "Assegna la camera" nella modale Soggiorno: pannello acceso, si trova al volo. */
.room-assign-panel[b-hwcyjoh4y3] {
    border: 2px solid var(--pms-accent);
    background: var(--pms-accent-soft);
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
}

/* Nuova prenotazione: nella colonna stretta (20%) i 4 assi della Statistica vanno uno
   sotto l'altro — il fragment è lo stesso della modale di edit, che li vuole su 4 colonne. */
.nuova-stat .row > [class*="col-"][b-hwcyjoh4y3] {
    flex: 0 0 100%;
    max-width: 100%;
}

/* Barra di conferma della nuova prenotazione: sempre a portata, anche con la card
   Soggiorno lunga (resta attaccata al fondo della finestra o della pagina). */
.nuova-actions[b-hwcyjoh4y3] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.75rem;
    padding: 0.6rem 0;
    background: var(--bs-body-bg);
    border-top: 1px solid var(--bs-border-color);
}

/* Nella finestra sovrapposta lo sticky si misura sul content-box del corpo (che ha 1rem
   di padding sotto): senza questo resta una fessura da cui si vede scorrere il form. */
.nuova-actions--overlay[b-hwcyjoh4y3] {
    bottom: -1rem;
}

/* Compattezza verticale (richiesta product owner 09/10): nuova prenotazione e modali di
   edit sforavano il laptop 1366x768. Riduce solo gli spazi, nessun campo tolto; font >= 11px. */
:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .card-body[b-hwcyjoh4y3] {
    padding: 0.55rem 0.75rem;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .card-title[b-hwcyjoh4y3] {
    margin-bottom: 0.35rem;
    font-size: 1rem;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .mb-2[b-hwcyjoh4y3] {
    margin-bottom: 0.3rem !important;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .form-label[b-hwcyjoh4y3] {
    margin-bottom: 0.1rem;
    font-size: 0.8rem;
    line-height: 1.2;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .form-control:not(textarea)[b-hwcyjoh4y3],
:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .form-select[b-hwcyjoh4y3] {
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
    font-size: 0.875rem;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .form-text[b-hwcyjoh4y3] {
    margin-top: 0.1rem;
    font-size: 0.72rem;
    line-height: 1.25;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .form-check[b-hwcyjoh4y3] {
    margin-bottom: 0.15rem;
    min-height: 0;
}

:is(.nuova-compact, .sez-persone, .sez-soggiorno, .sez-regole, .sez-cliente) .alert[b-hwcyjoh4y3] {
    padding-top: 0.3rem;
    padding-bottom: 0.3rem;
    margin-bottom: 0.3rem;
}
/* /Components/Pages/Prenotazioni/Restrizioni.razor.rz.scp.css */
/* Impostazione: tre riquadri numerati (tipologie → restrizione → valore). */
.rs-setup[b-edn1yosgp5] {
    display: grid;
    grid-template-columns: 1fr;
    gap: .75rem;
}

@media (min-width: 1100px) {
    .rs-setup[b-edn1yosgp5] { grid-template-columns: minmax(14rem, 1fr) minmax(18rem, 1.3fr) minmax(16rem, 1.2fr); }
}

.rs-box[b-edn1yosgp5] {
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: .375rem;
    padding: .6rem .75rem;
    background: var(--bs-body-bg, #fff);
}

.rs-step[b-edn1yosgp5] {
    font-size: .8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bs-secondary-color, #6c757d);
    margin-bottom: .4rem;
}

.rs-types[b-edn1yosgp5] { display: flex; flex-wrap: wrap; gap: .25rem; }

.rs-type[b-edn1yosgp5], .rs-wd[b-edn1yosgp5] {
    border: 1px solid var(--bs-border-color, #ced4da);
    background: var(--bs-body-bg, #fff);
    border-radius: .25rem;
    font-size: .78rem;
    padding: .1rem .45rem;
    line-height: 1.4;
}
.rs-type.on[b-edn1yosgp5], .rs-wd.on[b-edn1yosgp5] { background: #0d6efd; border-color: #0d6efd; color: #fff; }
.rs-type:disabled[b-edn1yosgp5] { opacity: .55; }
.rs-wd[b-edn1yosgp5] { min-width: 1.8rem; }
.rs-wd.we:not(.on)[b-edn1yosgp5] { color: #b02a37; }

.rs-kinds[b-edn1yosgp5] { display: grid; grid-template-columns: 1fr 1fr; gap: .15rem .5rem; }
.rs-kind[b-edn1yosgp5] { font-size: .85rem; padding: .15rem .3rem; border-radius: .25rem; cursor: pointer; }
.rs-kind.on[b-edn1yosgp5] { background: #e7f1ff; font-weight: 600; }

.rs-desc[b-edn1yosgp5] { font-size: .85rem; margin-bottom: .5rem; min-height: 3.6em; }
.rs-value[b-edn1yosgp5] { width: 6rem; }
.rs-month[b-edn1yosgp5] { font-weight: 600; text-decoration: none; color: inherit; }
.rs-month:hover[b-edn1yosgp5] { text-decoration: underline; }

/* Calendario annuale: stesse misure di BarCalendario.razor.css (CSS isolato, non si eredita). */
.cal-grid[b-edn1yosgp5] { table-layout: fixed; }
.cal-month-head[b-edn1yosgp5] { width: 6.5rem; white-space: nowrap; vertical-align: middle; }
.cal-grid th[b-edn1yosgp5], .cal-grid td[b-edn1yosgp5] { text-align: center; padding: 0.15rem; font-size: 0.75rem; vertical-align: middle; }
.cal-cell[b-edn1yosgp5] { cursor: pointer; min-width: 2.2rem; height: 2.1rem; user-select: none; position: relative; }
.cal-cell:hover[b-edn1yosgp5] { outline: 2px solid #0d6efd; outline-offset: -2px; }
.cal-off[b-edn1yosgp5] { background-color: #f8f9fa; color: #adb5bd; }
.cal-on[b-edn1yosgp5] { background-color: #b02a37; color: #fff; }
.cal-mixed[b-edn1yosgp5] { background: repeating-linear-gradient(45deg, #f1c3c8, #f1c3c8 4px, #f8f9fa 4px, #f8f9fa 8px); color: #58151c; }
.cal-pending[b-edn1yosgp5] { background-color: #fd7e14 !important; color: #fff !important; }
.cal-general[b-edn1yosgp5]::after {
    content: "";
    position: absolute;
    top: 2px;
    right: 2px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #6f42c1;
}
.cal-today[b-edn1yosgp5] { box-shadow: inset 0 0 0 2px #212529; }
.cal-range-start[b-edn1yosgp5] { outline: 3px solid #0d6efd; outline-offset: -3px; }
.cal-na[b-edn1yosgp5] { background-color: transparent; border-color: transparent; }
.cal-wd-head[b-edn1yosgp5] { color: #6c757d; font-weight: 600; }
.cal-wd-weekend[b-edn1yosgp5] { color: #b02a37; background-color: #f8d7da; }
.cal-daynum[b-edn1yosgp5] { display: block; font-size: 0.6rem; line-height: 0.7rem; opacity: 0.75; text-align: left; padding-left: 0.1rem; }
.cal-val[b-edn1yosgp5] { display: block; font-size: 0.7rem; font-weight: 700; line-height: 1rem; }

.rs-legend[b-edn1yosgp5] { display: inline-block; padding: 0 .35rem; border-radius: .2rem; font-size: .75rem; }
/* /Components/Pages/Prenota/Index.razor.rz.scp.css */
/* Segnale di rielaborazione della ricerca (Ranieri 01/10). */
.prenota-results[b-34bjw69gnm] {
    position: relative;
}

/* Velo sopra i risultati mentre il motore rielabora: attenua e blocca i clic. */
.prenota-results.is-busy[b-34bjw69gnm]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 4;
    background: rgb(255 255 255 / .55);
}

/* Avviso fisso in alto al centro: si vede anche se l'ospite ha scorso la pagina. */
.prenota-busy-badge[b-34bjw69gnm] {
    position: fixed;
    top: 1rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1050;
}

.prenota-busy-badge > span[b-34bjw69gnm] {
    display: inline-block;
}

.prenota-busy-badge > span[b-34bjw69gnm] {
    padding: .4rem 1rem;
    border-radius: 999px;
    background: var(--prenota-gold-dark);
    color: #fff;
    font-weight: 600;
    box-shadow: 0 2px 10px rgb(0 0 0 / .2);
    font-size: .9rem;
    white-space: nowrap;
}

/* Il bottone resta oro mentre cerca (Bootstrap spegnerebbe il colore del disabled). */
.btn-prenota-gold:disabled[b-34bjw69gnm] {
    background: var(--prenota-gold-dark);
    color: #fff;
    opacity: 1;
}

.prenota-hourglass[b-34bjw69gnm] {
    display: inline-block;
    animation: prenota-hourglass-turn-b-34bjw69gnm 1s ease-in-out infinite;
}

@keyframes prenota-hourglass-turn-b-34bjw69gnm {
    0%, 40% { transform: rotate(0deg); }
    60%, 100% { transform: rotate(180deg); }
}

@media (prefers-reduced-motion: reduce) {
    .prenota-hourglass[b-34bjw69gnm] { animation: none; }
}
/* /Components/Pages/Prenota/Risorse.razor.rz.scp.css */
/* Mappa pubblica a posto esatto (Risorse online R1, Task 7): stile PROPRIO della
   pagina — niente riuso di Risorse/Mappa.razor.css (quel foglio è per l'app interna,
   marker/testata diversi, e qui gli item non sono trascinabili). Stessa palette
   Free/Busy/Closed della mappa interna per coerenza visiva col resto del prodotto. */

.rr-map-scroll[b-a6dkh4ckyv] {
    overflow: auto;
    max-height: 60vh;
    border: 1px solid var(--bs-border-color);
    border-radius: .4rem;
    background: var(--bs-tertiary-bg);
}

.rr-map-canvas[b-a6dkh4ckyv] {
    position: relative;
    min-width: 22rem;
}

.rr-map-bg[b-a6dkh4ckyv] {
    display: block;
    width: 100%;
    user-select: none;
    pointer-events: none;
}

/* Fallback quando la mappa non ha uno sfondo caricato (BackgroundAttachmentId null) O
   l'immagine non carica (onerror lato Razor) — Fix review Medium T7-fix: senza un
   aspect-ratio esplicito il canvas collassa a 0px (l'unica altezza gliela dava l'<img>
   assente) e i marker restano invisibili sopra un contenitore vuoto. Pattern coerente
   con Risorse/Mappa.razor.css .map-bg-missing, ma foglio PROPRIO di questa pagina. */
.rr-map-canvas.rr-map-bg-missing[b-a6dkh4ckyv] {
    aspect-ratio: 16 / 9;
    background: repeating-linear-gradient(45deg, var(--bs-tertiary-bg) 0 12px, var(--bs-secondary-bg) 12px 24px);
}

/* Bottone-marker: la hit-area (--rr-size) è SEMPRE >= 40px anche quando il pallino
   visivo (--rr-dot) è più piccolo — tap target minimo, mai un marker "furbo" che si
   vede ma non si riesce a toccare da telefono. */
.rr-marker[b-a6dkh4ckyv] {
    position: absolute;
    transform: translate(-50%, -50%);
    width: var(--rr-size, 40px);
    min-height: var(--rr-size, 40px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    padding: 0;
    border: none;
    background: transparent;
    line-height: 1;
    z-index: 2;
}

.rr-marker:not(:disabled)[b-a6dkh4ckyv] {
    cursor: pointer;
}

.rr-marker:disabled[b-a6dkh4ckyv] {
    cursor: not-allowed;
}

.rr-dot[b-a6dkh4ckyv] {
    display: block;
    width: var(--rr-dot, 24px);
    height: var(--rr-dot, 24px);
    box-sizing: border-box;
    border-radius: 50%;
    border: 3px solid currentColor;
    background: rgba(255, 255, 255, .9);
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .45));
}

.rr-code[b-a6dkh4ckyv] {
    font-size: .62rem;
    font-weight: 700;
    color: #fff;
    background: rgba(0, 0, 0, .6);
    border-radius: .4rem;
    padding: 0 .28rem;
    white-space: nowrap;
}

.rr-st-free[b-a6dkh4ckyv] { color: #1e9e4a; }
.rr-st-busy[b-a6dkh4ckyv] { color: #d63333; }

.rr-st-closed[b-a6dkh4ckyv] {
    color: #8a8f98;
}

.rr-marker:disabled .rr-dot[b-a6dkh4ckyv] {
    opacity: .55;
}

/* Selezione del cliente: bordo blu evidenziato, distinto dal colore di stato. */
.rr-selected .rr-dot[b-a6dkh4ckyv] {
    border-color: #0d6efd;
    border-width: 4px;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(13, 110, 253, .35);
}

.rr-marker:not(:disabled):hover .rr-dot[b-a6dkh4ckyv] {
    filter: brightness(1.08) drop-shadow(0 1px 2px rgba(0, 0, 0, .5));
}
/* /Components/Pages/Prenota/Servizi.razor.rz.scp.css */
/* Mappa a posto esatto (Risorse online R3, Task 6): stessa palette Free/Busy/Closed di
   Risorse.razor.css — CSS isolation di Blazor scopa le classi al SOLO componente che le
   dichiara, quindi questo foglio è una copia intenzionale (non un riuso possibile) di
   quello di Risorse.razor, che serve lo stesso markup .rr-map-* per la pagina «gestisci
   la prenotazione» dell'ospite con pratica. */

.rr-map-scroll[b-tkxf1hukd4] {
    overflow: auto;
    max-height: 60vh;
    border: 1px solid var(--bs-border-color);
    border-radius: .4rem;
    background: var(--bs-tertiary-bg);
}

.rr-map-canvas[b-tkxf1hukd4] {
    position: relative;
    min-width: 22rem;
}

.rr-map-bg[b-tkxf1hukd4] {
    display: block;
    width: 100%;
    user-select: none;
    pointer-events: none;
}

.rr-map-canvas.rr-map-bg-missing[b-tkxf1hukd4] {
    aspect-ratio: 16 / 9;
    background: repeating-linear-gradient(45deg, var(--bs-tertiary-bg) 0 12px, var(--bs-secondary-bg) 12px 24px);
}

.rr-marker[b-tkxf1hukd4] {
    position: absolute;
    transform: translate(-50%, -50%);
    width: var(--rr-size, 40px);
    min-height: var(--rr-size, 40px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    padding: 0;
    border: none;
    background: transparent;
    line-height: 1;
    z-index: 2;
}

.rr-marker:not(:disabled)[b-tkxf1hukd4] {
    cursor: pointer;
}

.rr-marker:disabled[b-tkxf1hukd4] {
    cursor: not-allowed;
}

.rr-dot[b-tkxf1hukd4] {
    display: block;
    width: var(--rr-dot, 24px);
    height: var(--rr-dot, 24px);
    box-sizing: border-box;
    border-radius: 50%;
    border: 3px solid currentColor;
    background: rgba(255, 255, 255, .9);
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .45));
}

.rr-code[b-tkxf1hukd4] {
    font-size: .62rem;
    font-weight: 700;
    color: #fff;
    background: rgba(0, 0, 0, .6);
    border-radius: .4rem;
    padding: 0 .28rem;
    white-space: nowrap;
}

.rr-st-free[b-tkxf1hukd4] { color: #1e9e4a; }
.rr-st-busy[b-tkxf1hukd4] { color: #d63333; }

.rr-st-closed[b-tkxf1hukd4] {
    color: #8a8f98;
}

.rr-marker:disabled .rr-dot[b-tkxf1hukd4] {
    opacity: .55;
}

.rr-selected .rr-dot[b-tkxf1hukd4] {
    border-color: #0d6efd;
    border-width: 4px;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(13, 110, 253, .35);
}

.rr-marker:not(:disabled):hover .rr-dot[b-tkxf1hukd4] {
    filter: brightness(1.08) drop-shadow(0 1px 2px rgba(0, 0, 0, .5));
}

/* Disclaimer con scroll (riuso stile di Checkout.razor .prenota-disclaimers, foglio
   PROPRIO per lo stesso motivo di isolamento CSS di cui sopra). */
.prenota-ext-disclaimers[b-tkxf1hukd4] {
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid var(--prenota-border, #ddd);
    border-radius: .4rem;
    padding: .6rem .8rem;
    background: #fafaf8;
}
/* /Components/Pages/Report/ReportView.razor.rz.scp.css */
/* Tabella del report: scorre dentro il riquadro, intestazione sempre visibile. */
.rv-table[b-7gr24twgq8] {
    max-height: 70vh;
    overflow: auto;
}

.rv-table thead th[b-7gr24twgq8] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--bs-body-bg);
    box-shadow: inset 0 -1px 0 var(--bs-border-color);
    vertical-align: bottom;
}

.rv-table tr.rv-total > td[b-7gr24twgq8] {
    background: var(--bs-tertiary-bg);
}

/* «Colonne»: menu a spunte senza JS (details/summary). */
.rv-columns[b-7gr24twgq8] {
    position: relative;
}

.rv-columns > summary[b-7gr24twgq8] {
    list-style: none;
}

.rv-columns > summary[b-7gr24twgq8]::-webkit-details-marker {
    display: none;
}

.rv-columns-menu[b-7gr24twgq8] {
    position: absolute;
    z-index: 10;
    min-width: 18rem;
    max-height: 60vh;
    overflow: auto;
    margin-top: .25rem;
}
/* /Components/Pages/Risorse/Agenda.razor.rz.scp.css */
.agenda-wrap[b-hp73tq9h7s] {
    overflow: auto;
    max-height: calc(100dvh - 12rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    border: 1px solid #dee2e6;
    border-radius: .4rem;
}

.agenda-grid[b-hp73tq9h7s] {
    display: grid;
    min-width: 100%;
}

.agenda-corner[b-hp73tq9h7s],
.agenda-head[b-hp73tq9h7s] {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
    font-weight: 600;
    font-size: .85rem;
    padding: .35rem .5rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.agenda-time[b-hp73tq9h7s] {
    font-size: .75rem;
    color: #6c757d;
    text-align: right;
    padding-right: .4rem;
    border-right: 1px solid #dee2e6;
    background: #fff;
    position: sticky;
    left: 0;
    z-index: 2;
}

.agenda-time.hour[b-hp73tq9h7s] {
    border-top: 1px solid #dee2e6;
}

.agenda-cell[b-hp73tq9h7s] {
    border: 0;
    border-top: 1px dotted #eceef0;
    border-right: 1px solid #f1f3f5;
    background: #fff;
    padding: 0;
    cursor: pointer;
}

.agenda-cell.hour[b-hp73tq9h7s] {
    border-top: 1px solid #dee2e6;
}

.agenda-cell:hover[b-hp73tq9h7s] {
    background: #eef4ff;
}

.agenda-cell.closed[b-hp73tq9h7s] {
    background: repeating-linear-gradient(45deg, #f1f3f5, #f1f3f5 6px, #e9ecef 6px, #e9ecef 12px);
}

.agenda-block[b-hp73tq9h7s] {
    z-index: 1;
    margin: 1px 3px;
    border: 0;
    border-radius: .35rem;
    color: #fff;
    font-size: .75rem;
    line-height: 1.15;
    text-align: left;
    padding: .15rem .35rem;
    overflow: hidden;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
}

/* Esterno non ancora incassato: bordo giallo (stessa spia del planning). */
.agenda-block.bar-pending[b-hp73tq9h7s] {
    outline: 3px solid #ffc107;
    outline-offset: -1px;
}

/* Riservazione legata a una pratica annullata/no-show: barrata rossa (da sistemare). */
.agenda-block.bar-dead[b-hp73tq9h7s] {
    text-decoration: line-through;
    outline: 2px dashed #dc3545;
    opacity: .8;
}
/* /Components/Pages/Risorse/DaPosizionarePanel.razor.rz.scp.css */
/* Lista «Da posizionare»: compatta sopra la griglia, scorre da sola oltre ~6 righe
   per non spingere il planner fuori schermo. */
.dp-scroll[b-dprxod24ay] {
    max-height: 11rem;
    overflow: auto;
}
/* /Components/Pages/Risorse/Mappa.razor.rz.scp.css */
/* Shell con scroll interno (pattern del planning): la testata resta in vista. */
.map-shell[b-lw3bkdkijk] {
    display: flex;
    gap: .75rem;
    height: calc(100dvh - 8.2rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    min-height: 20rem;
}

.map-scroll[b-lw3bkdkijk] {
    flex: 1;
    overflow: auto;
    border: 1px solid var(--bs-border-color);
    border-radius: .4rem;
    background: var(--bs-tertiary-bg);
}

.map-canvas[b-lw3bkdkijk] {
    position: relative;
    min-width: 30rem;
}

.map-bg[b-lw3bkdkijk] {
    display: block;
    width: 100%;
    user-select: none;
}

.map-bg-missing[b-lw3bkdkijk] {
    aspect-ratio: 16 / 9;
    background: repeating-linear-gradient(45deg, #f2f2f2 0 12px, #e9e9e9 12px 24px);
}

/* Griglia di aggancio (solo in Disponi risorse): passo in % via background-size. */
.map-grid[b-lw3bkdkijk] {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    background-image:
        linear-gradient(to right, rgba(20, 20, 20, .28) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(20, 20, 20, .28) 1px, transparent 1px);
}

/* Marker centrato sul punto: icona sopra, codice sotto. Scala col fattore di zoom
   (--map-scale sul canvas, = zoom/100): misure in px valide al 100%, così icone,
   codice e spie crescono/calano insieme alla foto invece di restare fisse. */
.map-marker[b-lw3bkdkijk] {
    position: absolute;
    transform: translate(-50%, -50%) scale(var(--map-scale, 1));
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1;
    cursor: pointer;
    z-index: 2;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .55));
}

/* Disegno caricato per il tipo: tondo, con anello SOTTILE colorato dallo stato
   (currentColor) SOLO quando non è libera — libera = nessun indicatore, il disegno
   nudo sulla foto (richiesta Ranieri 16/09: i cerchi verdi disturbano); occupata =
   anello rosso, chiusa = anello grigio + grayscale. Il bordo resta trasparente, non
   zero, così il marker non cambia misura al cambio di stato. Sfondo trasparente: un
   PNG con trasparenza lascia vedere la mappa sotto (un JPG no: il bianco sta nel
   file, non qui). */
.map-marker .map-img[b-lw3bkdkijk] {
    display: block;
    border: 1.5px solid currentColor;
    border-radius: 50%;
    background: transparent;
    box-sizing: border-box;
    overflow: hidden;
}

.st-free .map-img[b-lw3bkdkijk],
.paired.st-busy .map-img[b-lw3bkdkijk] {
    border-color: transparent;
}

.map-marker .map-img img[b-lw3bkdkijk] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.st-closed .map-img[b-lw3bkdkijk] {
    filter: grayscale(1);
}

.map-marker .map-code[b-lw3bkdkijk] {
    font-size: 13px; /* default; la pagina lo imposta inline da ResourceMap.CodeSize */
    font-weight: 700;
    color: #fff;
    background: rgba(0, 0, 0, .55);
    border-radius: .5rem;
    padding: 0 .28rem;
    margin-top: 1px;
    white-space: nowrap;
}

.st-free[b-lw3bkdkijk] { color: #1e9e4a; }
.st-busy[b-lw3bkdkijk] { color: #d63333; }

.st-closed[b-lw3bkdkijk] {
    color: #8a8f98;
    opacity: .85;
}

.st-closed[b-lw3bkdkijk]::after {
    content: "";
    position: absolute;
    inset: 10% 42% 30% 42%;
    border-left: 2.5px solid #495057;
    transform: rotate(45deg);
    pointer-events: none;
}

/* Spie: esterno da incassare (giallo), pratica morta (rosso tratteggiato). */
.marker-pending svg[b-lw3bkdkijk], .marker-pending .map-img[b-lw3bkdkijk] { outline: 2px solid #ffc107; outline-offset: 1px; border-radius: 3px; }
.marker-dead svg[b-lw3bkdkijk], .marker-dead .map-img[b-lw3bkdkijk] { outline: 2px dashed #dc3545; outline-offset: 1px; border-radius: 3px; }

.marker-pending .map-img[b-lw3bkdkijk], .marker-dead .map-img[b-lw3bkdkijk] { border-radius: 50%; }

.map-closure-flag[b-lw3bkdkijk] {
    position: absolute;
    top: -6px;
    right: -10px;
    font-size: .6rem;
}

/* Legenda in testata. */
.map-dot[b-lw3bkdkijk] {
    display: inline-block;
    width: .65rem;
    height: .65rem;
    border-radius: 50%;
    margin-right: .2rem;
    vertical-align: baseline;
}

.dot-free[b-lw3bkdkijk] { background: #1e9e4a; }
.dot-busy[b-lw3bkdkijk] { background: #d63333; }
.dot-closed[b-lw3bkdkijk] { background: #8a8f98; }

.map-tray[b-lw3bkdkijk] {
    width: 13rem;
    flex-shrink: 0;
    overflow: auto;
    border: 1px solid var(--bs-border-color);
    border-radius: .4rem;
    padding: .5rem;
    background: var(--bs-body-bg);
}

.map-tray-item[b-lw3bkdkijk] {
    display: flex;
    align-items: center;
    gap: .35rem;
    padding: .15rem .3rem;
    border: 1px solid var(--bs-border-color);
    border-radius: .3rem;
    margin-bottom: .25rem;
    font-size: .8rem;
    cursor: grab;
    background: var(--bs-tertiary-bg);
}

.map-remove[b-lw3bkdkijk] {
    position: absolute;
    top: -10px;
    left: -12px;
    border: none;
    background: #dc3545;
    color: #fff;
    border-radius: 50%;
    width: 16px;
    height: 16px;
    font-size: .6rem;
    line-height: 1;
    padding: 0;
}

/* ---------- Ricevimento (spec 2026-10-17): pannello a destra, sotto su schermo stretto ---------- */
.map-main[b-lw3bkdkijk] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: .4rem;
}

.map-main .map-scroll[b-lw3bkdkijk] {
    min-height: 0;
}

.map-side[b-lw3bkdkijk] {
    width: 27rem;
    flex-shrink: 0;
    min-height: 0;
}

@media (max-width: 991.98px) {
    .map-shell[b-lw3bkdkijk] {
        flex-direction: column;
        height: auto;
    }

    .map-main[b-lw3bkdkijk] {
        height: 70dvh;
        min-height: 20rem;
    }

    .map-side[b-lw3bkdkijk] {
        width: auto;
        height: 24rem;
    }
}

/* Barra della modalità scelta e proposta con cambio, sopra la foto. */
.map-pick-bar[b-lw3bkdkijk] {
    border: 1px solid var(--bs-border-color);
    border-radius: .4rem;
    padding: .3rem .5rem;
    background: var(--bs-body-bg);
}

.map-proposal[b-lw3bkdkijk] {
    border-top: 1px solid var(--bs-border-color);
    padding-top: .3rem;
}

.dot-part[b-lw3bkdkijk] {
    background: transparent;
    border: 2px dashed #e0a100;
    box-sizing: border-box;
}

/* Marker in modalità scelta: alone verde = libera per tutto il soggiorno, alone giallo
   tratteggiato + «n/N» = libera solo in parte, spenta = occupata/chiusa all'arrivo. */
.map-marker.pick-full[b-lw3bkdkijk]::before,
.map-marker.pick-part[b-lw3bkdkijk]::before {
    content: "";
    position: absolute;
    inset: -5px -7px;
    border-radius: .6rem;
    z-index: -1;
    pointer-events: none;
}

.map-marker.pick-full[b-lw3bkdkijk]::before {
    background: rgba(30, 158, 74, .35);
    border: 2px solid #1e9e4a;
}

.map-marker.pick-part[b-lw3bkdkijk]::before {
    background: rgba(224, 161, 0, .18);
    border: 2px dashed #e0a100;
}

.map-marker.pick-off[b-lw3bkdkijk] {
    opacity: .28;
    cursor: default;
}

/* Pezzo della proposta: resta acceso anche se sfumato. */
.map-marker.pick-seq-on[b-lw3bkdkijk] {
    opacity: 1;
    z-index: 3;
}

.map-pick-run[b-lw3bkdkijk] {
    position: absolute;
    top: -8px;
    right: -14px;
    font-size: .65rem;
    font-weight: 700;
    line-height: 1;
    color: #3d2c00;
    background: #ffd25e;
    border-radius: .5rem;
    padding: .1rem .25rem;
    white-space: nowrap;
}

.map-pick-seq[b-lw3bkdkijk] {
    position: absolute;
    top: -10px;
    left: -12px;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    color: #fff;
    background: #0d6efd;
    border-radius: 50%;
    padding: 0 .1rem;
}

/* Scheda «Assegnate»: il marker cercato lampeggia (classe messa dal JS). */
.map-marker.marker-flash[b-lw3bkdkijk] {
    z-index: 4;
    animation: marker-flash-b-lw3bkdkijk .65s ease-in-out 4;
}

@keyframes marker-flash-b-lw3bkdkijk {
    0%, 100% { transform: translate(-50%, -50%) scale(var(--map-scale, 1)); filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .55)); }
    50% { transform: translate(-50%, -50%) scale(calc(var(--map-scale, 1) * 1.45)); filter: drop-shadow(0 0 8px #0d6efd) drop-shadow(0 0 3px #0d6efd); }
}
/* /Components/Pages/Risorse/Planning.razor.rz.scp.css */
/* Planning risorse: righe = risorse per tipo, colonne = giorni, barre = riservazioni. */

.res-scroll[b-p716yb04cx] {
    overflow: auto;
    max-height: calc(100dvh - 12rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    border: 1px solid #dee2e6;
    border-radius: .4rem;
}

.res-grid[b-p716yb04cx] {
    border-collapse: separate;
    border-spacing: 0;
    width: max-content;
    min-width: 100%;
}

.res-grid th[b-p716yb04cx], .res-grid td[b-p716yb04cx] {
    border-bottom: 1px solid #eceff1;
    border-right: 1px solid #f1f3f5;
}

.res-grid thead th[b-p716yb04cx] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #fff;
    text-align: center;
    padding: .25rem .4rem;
    box-shadow: inset 0 -1px 0 #dee2e6;
}

.res-label[b-p716yb04cx] {
    position: sticky;
    left: 0;
    z-index: 1;
    background: #fff;
    min-width: 10rem;
    max-width: 16rem;
    padding: .2rem .5rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: inset -1px 0 0 #dee2e6;
}

thead .res-label[b-p716yb04cx] {
    z-index: 3;
}

.res-type-row td[b-p716yb04cx] {
    background: #f8f9fa;
    padding: .25rem .5rem;
    position: sticky;
    left: 0;
}

.res-day[b-p716yb04cx] {
    min-width: 4.6rem;
}

.res-day.weekend[b-p716yb04cx] {
    background: #fbf6ec;
}

.res-day.today[b-p716yb04cx] {
    background: #e7f1ff;
}

.res-cell[b-p716yb04cx] {
    height: 2rem;
    min-width: 4.6rem;
    padding: 0;
    cursor: pointer;
}

.res-cell.free.weekend[b-p716yb04cx] {
    background: #fdfaf3;
}

.res-cell.free:hover[b-p716yb04cx] {
    background: #e9f5ff;
}

/* Fuori servizio: tratteggio grigio; sotto una barra spunta ai bordi della cella. */
.res-cell.closed[b-p716yb04cx] {
    background: repeating-linear-gradient(45deg, #e9ecef 0 6px, #f8f9fa 6px 12px);
    cursor: not-allowed;
}

.res-cell.busy.closed[b-p716yb04cx] {
    cursor: pointer;
}

.res-bar[b-p716yb04cx] {
    height: 1.6rem;
    margin: .2rem 0;
    color: #fff;
    font-size: .75rem;
    line-height: 1.6rem;
    padding: 0 .3rem;
    white-space: nowrap;
    overflow: hidden;
    opacity: .92;
}

.res-bar.bar-start[b-p716yb04cx] {
    border-top-left-radius: .8rem;
    border-bottom-left-radius: .8rem;
    margin-left: .25rem;
}

.res-bar.bar-end[b-p716yb04cx] {
    border-top-right-radius: .8rem;
    border-bottom-right-radius: .8rem;
    margin-right: .25rem;
}

/* Esterno non ancora incassato: bordo giallo. */
.res-bar.bar-pending[b-p716yb04cx] {
    box-shadow: inset 0 0 0 2px #ffc107;
}

/* Pratica annullata/no-show: barrata rossa, da sistemare a mano. */
.res-bar.bar-dead[b-p716yb04cx] {
    box-shadow: inset 0 0 0 2px #dc3545;
    text-decoration: line-through;
}

.res-bar-text[b-p716yb04cx] {
    text-shadow: 0 1px 1px rgba(0, 0, 0, .35);
}

/* Giorno scelto per la lista «Da posizionare»: l'intestazione è cliccabile. */
.res-day[b-p716yb04cx] {
    cursor: pointer;
}

.res-day.selected[b-p716yb04cx] {
    box-shadow: inset 0 -3px 0 #0d6efd, inset 0 -1px 0 #dee2e6;
    font-weight: 600;
}

/* Conteggio pratiche da posizionare nel giorno: va a capo nella colonna stretta. */
.res-day-need[b-p716yb04cx] {
    display: block;
    margin-top: .1rem;
    font-size: .62rem;
    line-height: 1.1;
    white-space: normal;
}
/* /Components/Pages/Risorse/RicevimentoPanel.razor.rz.scp.css */
/* Pannello del ricevimento: occupa l'altezza della shell della mappa e scorre dentro. */
.rx-panel[b-5fxfiuqzew] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    background: var(--bs-body-bg);
}

.rx-tabs .nav-link[b-5fxfiuqzew] {
    border-radius: 0;
    white-space: nowrap;
}

.rx-scroll[b-5fxfiuqzew] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.rx-row[b-5fxfiuqzew] {
    cursor: pointer;
}
/* /Components/Pages/Risorse/RisorseCard.razor.rz.scp.css */
/* Con molte risorse la lista scorre nel suo riquadro; lo spazio della
   scrollbar è riservato sempre (gutter stable): niente salti né testo
   coperto quando la barra compare. */
.res-list[b-qqpo5fjjpo] {
    max-height: 13rem;
    overflow-y: auto;
    scrollbar-gutter: stable;
    padding-right: .25rem;
}

.res-item + .res-item[b-qqpo5fjjpo] {
    border-top: 1px solid var(--bs-border-color);
    margin-top: .25rem;
    padding-top: .25rem;
}
/* /Components/Pages/SelectHotel.razor.rz.scp.css */
/* Scelta hotel: card con logo in testa. Il colore tema dell'hotel entra come banda
   sopra il logo e come cornice al passaggio del mouse; il logo vive su fondo bianco
   (i PNG arrivano su bianco), le iniziali colorate fanno da fallback. */
.hotel-card[b-u4q40u43mu] {
    --hotel-color: var(--pms-accent);
    border: 1px solid var(--pms-border);
    border-radius: 12px;
    background: #fff;
    overflow: hidden;
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.hotel-card:hover[b-u4q40u43mu],
.hotel-card:focus-within[b-u4q40u43mu] {
    transform: translateY(-3px);
    border-color: var(--hotel-color);
    box-shadow: 0 10px 24px -12px color-mix(in srgb, var(--hotel-color) 55%, transparent),
                0 2px 6px rgba(0, 0, 0, .06);
}

.hotel-card-visual[b-u4q40u43mu] {
    position: relative;
    height: 132px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(180deg,
        color-mix(in srgb, var(--hotel-color) 14%, #fff) 0%,
        #fff 70%);
    border-bottom: 1px solid var(--pms-border);
}

.hotel-card-visual[b-u4q40u43mu]::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 5px;
    background: var(--hotel-color);
}

.hotel-card-logo[b-u4q40u43mu] {
    max-height: 96px;
    max-width: 96px;
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
}

.hotel-card-initials[b-u4q40u43mu] {
    width: 84px;
    height: 84px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.7rem;
    font-weight: 700;
    letter-spacing: .02em;
    color: #fff;
    background: var(--hotel-color);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .15);
}

.hotel-card-training[b-u4q40u43mu] {
    position: absolute;
    top: 12px;
    right: 10px;
}

.hotel-card-body[b-u4q40u43mu] {
    padding: .9rem 1rem 1rem;
    display: flex;
    flex-direction: column;
    gap: .35rem;
    flex: 1 1 auto;
}

.hotel-card-name[b-u4q40u43mu] {
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.25;
    margin: 0;
}

.hotel-card-code[b-u4q40u43mu] {
    font-family: var(--pms-mono);
    font-size: .78rem;
    color: var(--hotel-color);
    font-weight: 600;
}

.hotel-card-roles[b-u4q40u43mu] {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    margin-top: .15rem;
}

.hotel-card-form[b-u4q40u43mu] {
    margin-top: auto;
    padding-top: .6rem;
}
/* /Components/Pages/Spa/Agenda.razor.rz.scp.css */
.agenda-wrap[b-hannlk39tz] {
    overflow: auto;
    max-height: calc(100dvh - 12rem - var(--pms-closure-alert-h, 0rem) - var(--pms-training-banner-h, 0rem));
    border: 1px solid #dee2e6;
    border-radius: .4rem;
}

.agenda-grid[b-hannlk39tz] {
    display: grid;
    min-width: 100%;
}

.agenda-corner[b-hannlk39tz],
.agenda-head[b-hannlk39tz] {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
    font-weight: 600;
    font-size: .85rem;
    padding: .35rem .5rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.agenda-head .dot[b-hannlk39tz] {
    display: inline-block;
    width: .7rem;
    height: .7rem;
    border-radius: 50%;
    margin-right: .25rem;
}

.agenda-time[b-hannlk39tz] {
    font-size: .75rem;
    color: #6c757d;
    text-align: right;
    padding-right: .4rem;
    border-right: 1px solid #dee2e6;
    background: #fff;
    position: sticky;
    left: 0;
    z-index: 2;
}

.agenda-time.hour[b-hannlk39tz] {
    border-top: 1px solid #dee2e6;
}

.agenda-cell[b-hannlk39tz] {
    border: 0;
    border-top: 1px dotted #eceef0;
    border-right: 1px solid #f1f3f5;
    background: #fff;
    padding: 0;
    cursor: pointer;
}

.agenda-cell.hour[b-hannlk39tz] {
    border-top: 1px solid #dee2e6;
}

.agenda-cell:hover[b-hannlk39tz] {
    background: #eef4ff;
}

.agenda-cell.closed[b-hannlk39tz] {
    background: #f1f3f5;
    cursor: default;
}

.agenda-block[b-hannlk39tz] {
    z-index: 1;
    margin: 1px 3px;
    border: 0;
    border-radius: .35rem;
    color: #fff;
    font-size: .75rem;
    line-height: 1.15;
    text-align: left;
    padding: .15rem .35rem;
    overflow: hidden;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
}

/* Arrivato: bordo acceso. Concluso: attenuato. */
.agenda-block.status-1[b-hannlk39tz] {
    outline: 2px solid #198754;
    outline-offset: -2px;
}

.agenda-block.status-2[b-hannlk39tz] {
    opacity: .55;
}

/* Richiesta online da confermare: tratteggio (composto nello style inline, il colore
   risorsa usa lo shorthand background) + bordo tratteggiato, non ancora un appuntamento certo. */
.agenda-block.status-5[b-hannlk39tz] {
    outline: 2px dashed #fff;
    outline-offset: -3px;
}

@media print {
    .agenda-wrap[b-hannlk39tz] { overflow: visible; max-height: none; }
    .agenda-cell[b-hannlk39tz] { border-color: #ccc; }
    .agenda-block[b-hannlk39tz] { color: #000 !important; border: 1px solid #000; }
}
/* /Components/Pages/Spa/Coda.razor.rz.scp.css */
.coda[b-jlvylzsup0] { display: grid; gap: .75rem; }
.coda-item[b-jlvylzsup0] { display: grid; grid-template-columns: 6rem 1fr auto; align-items: center; gap: 1rem;
    padding: .9rem 1rem; border: 1px solid var(--bs-border-color); border-radius: .5rem; }
.coda-item.done[b-jlvylzsup0] { opacity: .55; }
.coda-ora[b-jlvylzsup0] { font-size: 1.6rem; font-weight: 600; line-height: 1; }
.coda-ora small[b-jlvylzsup0] { display: block; font-size: .9rem; font-weight: 400; color: var(--bs-secondary-color); }
/* /Components/Pages/TemplateEmail/Editor.razor.rz.scp.css */
/* Editor dei template email: tre zone a tutta altezza. L'altezza la limita fit-viewport.js
   (max-height = spazio rimasto nella finestra): la pagina non scorre, scorrono le zone. */
.te-shell[b-fyssovo20g] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    min-height: 480px;
}

.te-top[b-fyssovo20g] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
    padding: .5rem 0;
    border-bottom: 1px solid var(--bs-border-color);
}

.te-name[b-fyssovo20g] {
    width: 16rem;
    max-width: 100%;
    font-weight: 600;
}

.te-use[b-fyssovo20g] {
    width: 9.5rem;
}

.te-main[b-fyssovo20g] {
    flex: 1 1 auto;
    min-height: 0;
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr) 340px;
}

.te-left[b-fyssovo20g],
.te-right[b-fyssovo20g] {
    overflow: auto;
    padding: .75rem;
    min-height: 0;
}

.te-left[b-fyssovo20g] {
    border-right: 1px solid var(--bs-border-color);
}

.te-right[b-fyssovo20g] {
    border-left: 1px solid var(--bs-border-color);
}

.te-center[b-fyssovo20g] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    min-width: 0;
    background: var(--bs-tertiary-bg);
}

.te-canvas-wrap[b-fyssovo20g] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    display: flex;
    justify-content: center;
    padding: 1rem;
}

.te-canvas-wrap iframe[b-fyssovo20g] {
    flex: 0 0 auto;
    height: 100%;
    border: 0;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
}

.te-warnings[b-fyssovo20g] {
    flex: 0 0 auto;
    max-height: 6.5rem;
    overflow: auto;
    padding: .375rem .75rem;
    border-top: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    font-size: .8125rem;
}

.te-toast[b-fyssovo20g] {
    position: fixed;
    left: 50%;
    bottom: 1.25rem;
    transform: translateX(-50%);
    z-index: 1080;
    background: rgba(33, 37, 41, .92);
    color: #fff;
    padding: .5rem 1.1rem;
    border-radius: .5rem;
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .25);
    animation: te-toast-fade-b-fyssovo20g 2.8s forwards;
}

@keyframes te-toast-fade-b-fyssovo20g {
    0% { opacity: 0; transform: translateX(-50%) translateY(.5rem); }
    8% { opacity: 1; transform: translateX(-50%) translateY(0); }
    78% { opacity: 1; }
    100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .te-canvas-wrap iframe[b-fyssovo20g] { transition: none; }
    .te-toast[b-fyssovo20g] { animation: none; }
}
/* /Components/Pages/TemplateEmail/Palette.razor.rz.scp.css */
/* Voci della tavolozza: trascinabili (cursore «afferra») e cliccabili. */
.te-item[b-dlt9mhogk8] {
    display: flex;
    align-items: center;
    gap: .5rem;
    width: 100%;
    padding: .375rem .5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: .375rem;
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    font-size: .8125rem;
    text-align: left;
    cursor: grab;
}

.te-item:hover:not(:disabled)[b-dlt9mhogk8] {
    border-color: var(--bs-primary);
    background: var(--bs-primary-bg-subtle);
}

.te-item:focus-visible[b-dlt9mhogk8] {
    outline: 2px solid var(--bs-primary);
    outline-offset: 1px;
}

.te-item:disabled[b-dlt9mhogk8] {
    cursor: not-allowed;
    opacity: .6;
}

.te-blocks[b-dlt9mhogk8] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .375rem;
}

.te-item-block[b-dlt9mhogk8] {
    flex-direction: column;
    gap: .125rem;
    text-align: center;
}

.te-glyph[b-dlt9mhogk8] {
    font-size: 1.1rem;
    line-height: 1.2;
    color: var(--bs-secondary-color);
}
/* /Components/Pages/VenditaOnline/ModificaRapida.razor.rz.scp.css */
.mr[b-fr93ccreci] { max-width: 40rem; margin: 0 auto; padding: 0 1rem 8rem; }
.mr-head[b-fr93ccreci] { display: flex; align-items: center; gap: .5rem; padding: .75rem 0; }
.mr-head h1[b-fr93ccreci] { font-size: 1.25rem; margin: 0; }
.mr-back[b-fr93ccreci] { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.5rem; text-decoration: none; }
.mr-muted[b-fr93ccreci] { color: var(--bs-secondary-color, #6c757d); font-size: .9rem; margin: .25rem 0; }
.mr-card[b-fr93ccreci] { display: block; width: 100%; text-align: left; border: 1px solid var(--bs-border-color, #dee2e6); border-radius: .75rem; padding: 1rem; margin-bottom: .75rem; background: var(--bs-body-bg, #fff); color: inherit; }
.mr-card.is-done[b-fr93ccreci] { padding: .75rem 1rem; min-height: 44px; cursor: pointer; color: var(--bs-secondary-color, #6c757d); }
.mr-card.is-done:disabled[b-fr93ccreci] { cursor: default; }
.mr-card input[b-fr93ccreci], .mr-card select[b-fr93ccreci] { font-size: 16px; min-height: 44px; width: 100%; }
.mr-title[b-fr93ccreci] { font-size: 1.1rem; margin: 0 0 .75rem; }
.mr-group[b-fr93ccreci] { font-size: .85rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--bs-secondary-color, #6c757d); margin: 1rem 0 .25rem; }
.mr-dates[b-fr93ccreci] { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.mr-dates label[b-fr93ccreci], .mr-field[b-fr93ccreci] { display: block; font-size: .9rem; }
.mr-chips[b-fr93ccreci] { display: flex; flex-wrap: wrap; gap: .5rem; margin: .5rem 0; }
.mr-chip[b-fr93ccreci] { min-height: 44px; padding: 0 1rem; border-radius: 22px; border: 1px solid var(--bs-border-color, #dee2e6); background: transparent; color: inherit; }
.mr-chip:disabled[b-fr93ccreci] { opacity: .5; }
.mr-chip.is-child[b-fr93ccreci] { margin-left: 1rem; }
.mr-chip[aria-pressed="true"][b-fr93ccreci] { background: var(--bs-primary, #0d6efd); border-color: var(--bs-primary, #0d6efd); color: #fff; }
.mr-week[b-fr93ccreci] { display: grid; grid-template-columns: repeat(7, minmax(44px, 1fr)); gap: 2px; margin-top: .75rem; overflow-x: auto; }
.mr-week .mr-chip[b-fr93ccreci] { padding: 0; min-width: 44px; border-radius: .5rem; }
.mr-count[b-fr93ccreci] { font-weight: 600; margin: .5rem 0 0; }
.mr-actions[b-fr93ccreci] { display: grid; gap: .5rem; }
.mr-action[b-fr93ccreci] { min-height: 48px; text-align: left; padding: .75rem 1rem; border-radius: .5rem; border: 1px solid var(--bs-border-color, #dee2e6); background: transparent; color: inherit; }
.mr-action[aria-pressed="true"][b-fr93ccreci] { border-color: var(--bs-primary, #0d6efd); box-shadow: inset 0 0 0 1px var(--bs-primary, #0d6efd); }
.mr-stepper[b-fr93ccreci] { display: inline-flex; align-items: center; gap: .5rem; }
.mr-stepper button[b-fr93ccreci] { min-width: 44px; min-height: 44px; font-size: 1.25rem; }
.mr-stepper output[b-fr93ccreci] { min-width: 2.5rem; text-align: center; font-variant-numeric: tabular-nums; font-size: 1.125rem; }
.mr-levels[b-fr93ccreci] { display: grid; gap: .5rem; margin-top: .5rem; }
.mr-level[b-fr93ccreci] { display: flex; align-items: center; gap: .75rem; min-height: 48px; }
.mr-price[b-fr93ccreci] { margin-left: auto; color: var(--bs-secondary-color, #6c757d); font-variant-numeric: tabular-nums; }
.mr-dot[b-fr93ccreci] { width: 14px; height: 14px; border-radius: 50%; flex: none; }
.mr-limit[b-fr93ccreci] { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin: .5rem 0; }
.mr-limit-name[b-fr93ccreci] { flex: 1 1 6rem; }
.mr-summary[b-fr93ccreci] { font-size: 1.05rem; margin: 0 0 .5rem; }
.mr-ok[b-fr93ccreci] { margin: 0 0 .75rem; }
.mr-warn[b-fr93ccreci] { background: var(--bs-warning-bg-subtle, #fff3cd); border-radius: .5rem; padding: .5rem .75rem; margin-top: .5rem; }
.mr-err[b-fr93ccreci] { background: var(--bs-danger-bg-subtle, #f8d7da); border-radius: .5rem; padding: .5rem .75rem; margin-top: .5rem; }
.mr-link[b-fr93ccreci] { display: inline-flex; align-items: center; min-height: 44px; background: none; border: 0; padding: 0; color: var(--bs-link-color, #0d6efd); text-decoration: underline; }
.mr-reason[b-fr93ccreci] { margin: 0 auto .5rem; max-width: 40rem; font-size: .9rem; color: var(--bs-secondary-color, #6c757d); }
.mr-bar[b-fr93ccreci] { position: fixed; left: 0; right: 0; bottom: 0; padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom)); background: var(--bs-body-bg, #fff); border-top: 1px solid var(--bs-border-color, #dee2e6); z-index: 5; }
.mr-bar .btn[b-fr93ccreci] { width: 100%; min-height: 48px; font-size: 1rem; max-width: 40rem; display: block; margin: 0 auto; }
@media (min-width: 768px) { .mr-bar[b-fr93ccreci] { position: sticky; border-top: 0; background: transparent; padding: .75rem 0; } }
/* Telefono (<641px, stessa soglia di MainLayout): a 375px i 7 giorni da 44px stanno senza scroll.
   Spazio utile = viewport - article px-4 (2x24) - bordo card (2) - padding card (2x8) + margine negativo
   del gruppo (2x8): 375 -> 327 -> 309 -> 325 (>= 308 = 7x44, gap 0); 360 -> 312 -> 294 -> 310 (>= 308). */
@media (max-width: 640.98px) {
    .mr[b-fr93ccreci] { padding-inline: 0; }
    .mr-card[b-fr93ccreci] { padding-inline: .5rem; }
    .mr-week[b-fr93ccreci] { gap: 0; margin-inline: -.5rem; }
    /* Bolla chat (ChatDock: right 14px + 46px) fissa in basso a destra: la barra le lascia lo spazio. */
    .mr-bar[b-fr93ccreci] { padding-right: calc(1rem + 60px); }
}
/* /Components/Pages/VenditaOnline/Overbooking.razor.rz.scp.css */
/* Barra delle scelte: va a capo su schermi stretti, Salva a destra quando c'è spazio
   (stessi idiomi di RestrizioniProdotto). */
.ob-bar[b-x4wmabxb70] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .5rem .9rem;
}
.ob-bar select[b-x4wmabxb70] { max-width: 20rem; }
.ob-date[b-x4wmabxb70] { width: 9.5rem; }
.ob-save[b-x4wmabxb70] { margin-left: auto; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }

.ob-hint[b-x4wmabxb70] {
    border: 1px dashed var(--bs-border-color, #ced4da);
    border-radius: .375rem;
    padding: .75rem 1rem;
    color: #6c757d;
    font-size: .875rem;
}

.ob-quick[b-x4wmabxb70] {
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: .375rem;
    padding: .4rem .6rem .5rem;
    background: var(--bs-tertiary-bg, #f8f9fa);
}
.ob-step[b-x4wmabxb70] { font-size: .8rem; font-weight: 600; margin: 0 0 .25rem; color: #495057; }
.ob-quick-row[b-x4wmabxb70] { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .5rem .9rem; }
.ob-quick-row select[b-x4wmabxb70] { width: auto; }

.ob-wd[b-x4wmabxb70] {
    border: 1px solid var(--bs-border-color, #ced4da);
    background: var(--bs-body-bg, #fff);
    border-radius: .25rem;
    font-size: .78rem;
    padding: .1rem .45rem;
    line-height: 1.4;
    min-width: 1.8rem;
}
.ob-wd.on[b-x4wmabxb70] { background: #0d6efd; border-color: #0d6efd; color: #fff; }
.ob-wd.we:not(.on)[b-x4wmabxb70] { color: #b02a37; }

/* Griglia: riquadro che scorre (altezza da fit-viewport.js), intestazione sticky. */
.ob-gridbox[b-x4wmabxb70] {
    width: 100%;
    max-width: 100%;
    overflow: auto;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: .375rem;
    background: var(--bs-body-bg, #fff);
}
.ob-grid[b-x4wmabxb70] {
    width: 100%;
    min-width: 50rem;
    border-collapse: separate;
    border-spacing: 0;
    font-size: .8rem;
    font-variant-numeric: tabular-nums;
}
.ob-grid th[b-x4wmabxb70], .ob-grid td[b-x4wmabxb70] {
    border-right: 1px solid var(--bs-border-color, #dee2e6);
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
    padding: .15rem .4rem;
    text-align: center;
    vertical-align: middle;
    white-space: nowrap;
}
.ob-grid thead th[b-x4wmabxb70] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--bs-tertiary-bg, #f8f9fa);
    font-weight: 600;
    white-space: normal;
    line-height: 1.15;
}
.ob-grid .ob-day[b-x4wmabxb70] { text-align: left; font-weight: normal; }
.ob-grid thead .ob-day[b-x4wmabxb70] { font-weight: 600; }
.ob-dow[b-x4wmabxb70] { display: inline-block; width: 2.2rem; color: #6c757d; }
.ob-grid tr.ob-we th.ob-day[b-x4wmabxb70], .ob-grid tr.ob-we td[b-x4wmabxb70] { background-color: #fdf1f2; }
.ob-grid tr.ob-we .ob-dow[b-x4wmabxb70] { color: #b02a37; }
.ob-grid tr.ob-today th.ob-day[b-x4wmabxb70] { box-shadow: inset 3px 0 0 #0d6efd; }
.ob-grid thead th.ob-edit[b-x4wmabxb70] { background: #e7f1ff; }
.ob-grid tr.ob-pending td.ob-edit[b-x4wmabxb70] { background-color: #fd7e14; color: #fff; }

.ob-num[b-x4wmabxb70] { width: 4.5rem; display: inline-block; padding-top: .05rem; padding-bottom: .05rem; }
.ob-mark[b-x4wmabxb70] {
    font-size: .65rem;
    padding: 0 .25rem;
    margin-left: .25rem;
    border-radius: .2rem;
    background: #e9ecef;
    color: #495057;
}
.ob-mark.ob-stop[b-x4wmabxb70] { background: #f8d7da; color: #b02a37; font-weight: 700; }
.ob-oos[b-x4wmabxb70] { display: block; font-size: .65rem; line-height: 1; color: #6c757d; }
.ob-general[b-x4wmabxb70] { display: block; font-size: .65rem; line-height: 1; color: #6f42c1; }
.ob-grid tr.ob-pending td.ob-edit .ob-general[b-x4wmabxb70] { color: #fff; }
.ob-bookable[b-x4wmabxb70] { font-weight: 700; }
.ob-grid td.ob-zero[b-x4wmabxb70] { color: #b02a37; font-weight: 700; }
.ob-grid td.ob-bookable.ob-zero[b-x4wmabxb70] { background-color: #f8d7da; }

@media (max-width: 767.98px) {
    .ob-save[b-x4wmabxb70] { margin-left: 0; }
    .ob-grid[b-x4wmabxb70] { min-width: 44rem; }
}
/* /Components/Pages/VenditaOnline/RestrizioniProdotto.razor.rz.scp.css */
/* Barra delle scelte: va a capo su schermi stretti, Salva a destra quando c'è spazio. */
.rp-bar[b-ls3msep3vj] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .5rem .9rem;
}
.rp-bar select[b-ls3msep3vj] { max-width: 20rem; }
.rp-value[b-ls3msep3vj] { width: 5.5rem; }
.rp-date[b-ls3msep3vj] { width: 9.5rem; }
.rp-save[b-ls3msep3vj] { margin-left: auto; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }

.rp-wd[b-ls3msep3vj] {
    border: 1px solid var(--bs-border-color, #ced4da);
    background: var(--bs-body-bg, #fff);
    border-radius: .25rem;
    font-size: .78rem;
    padding: .1rem .45rem;
    line-height: 1.4;
    min-width: 1.8rem;
}
.rp-wd.on[b-ls3msep3vj] { background: #0d6efd; border-color: #0d6efd; color: #fff; }
.rp-wd.we:not(.on)[b-ls3msep3vj] { color: #b02a37; }

/* Griglia: il riquadro scorre in entrambe le direzioni (altezza da fit-viewport.js), la pagina
   no. Colonna nomi e riga dei giorni sticky; 14 giorni anche su mobile (spec D3). */
.rp-gridbox[b-ls3msep3vj] {
    width: 100%;
    max-width: 100%;
    overflow: auto;
    border: 1px solid #000;
    border-radius: .375rem;
    background: var(--bs-body-bg, #fff);
}
.rp-grid[b-ls3msep3vj] {
    width: 100%;
    min-width: 72rem;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
    font-size: .78rem;
}
.rp-grid th[b-ls3msep3vj], .rp-grid td[b-ls3msep3vj] {
    border-right: 1px solid #000;
    border-bottom: 1px solid #000;
    padding: .15rem .2rem;
    text-align: center;
    vertical-align: middle;
}
.rp-grid thead th[b-ls3msep3vj] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--bs-tertiary-bg, #f8f9fa);
    font-weight: 600;
}
.rp-grid .rp-name[b-ls3msep3vj] {
    position: sticky;
    left: 0;
    z-index: 1;
    width: 13rem;
    text-align: left;
    background: var(--bs-body-bg, #fff);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: normal;
}
.rp-grid thead .rp-name[b-ls3msep3vj] { z-index: 3; background: var(--bs-tertiary-bg, #f8f9fa); font-weight: 600; }
.rp-day .rp-dow[b-ls3msep3vj], .rp-day .rp-date-num[b-ls3msep3vj] { display: block; line-height: 1.1; }
.rp-day .rp-dow[b-ls3msep3vj] { font-size: .7rem; color: #6c757d; }
.rp-grid thead th.rp-we[b-ls3msep3vj] { background: #f8d7da; }
.rp-grid thead th.rp-we .rp-dow[b-ls3msep3vj] { color: #b02a37; }
.rp-grid thead th.rp-today[b-ls3msep3vj] { box-shadow: inset 0 -3px 0 #0d6efd; }

.rp-row-structure .rp-name[b-ls3msep3vj], .rp-row-type .rp-name[b-ls3msep3vj] { font-weight: 600; }
.rp-row-structure td[b-ls3msep3vj], .rp-row-structure th[b-ls3msep3vj] { background-color: #eef2f7; }
.rp-row-type td[b-ls3msep3vj] { background-color: #f8f9fa; }
.rp-row-product .rp-name[b-ls3msep3vj], .rp-row-promo .rp-name[b-ls3msep3vj] { padding-left: 1.4rem; }
.rp-row-channel .rp-name[b-ls3msep3vj] { padding-left: 2.8rem; color: #495057; }
.rp-cname[b-ls3msep3vj] { font-size: .72rem; }
.rp-hidden .rp-name[b-ls3msep3vj], .rp-hidden td[b-ls3msep3vj] { color: #adb5bd; }

.rp-toggle[b-ls3msep3vj] {
    border: 0;
    background: transparent;
    padding: 0;
    font: inherit;
    color: inherit;
    width: 100%;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.rp-toggle:focus-visible[b-ls3msep3vj] { outline: 2px solid #0d6efd; outline-offset: 1px; }
.rp-pname[b-ls3msep3vj] { margin-right: .3rem; }
.rp-kind[b-ls3msep3vj] {
    font-size: .65rem;
    padding: 0 .25rem;
    border-radius: .2rem;
    background: #e7f1ff;
    color: #084298;
}
.rp-kind.cm[b-ls3msep3vj] { background: #efe7fb; color: #432874; }
.rp-kind.promo[b-ls3msep3vj] { background: #fff3cd; color: #664d03; }

.rp-cell[b-ls3msep3vj] { cursor: pointer; height: 2.2rem; position: relative; user-select: none; }
.rp-cell.rp-sum[b-ls3msep3vj] { height: 2.9rem; padding: 2px 3px; }
.rp-cell:hover[b-ls3msep3vj] { outline: 2px solid #0d6efd; outline-offset: -2px; }
.rp-cell.rp-na[b-ls3msep3vj] { cursor: default; background-image: repeating-linear-gradient(45deg, transparent, transparent 4px, rgba(0,0,0,.04) 4px, rgba(0,0,0,.04) 8px); }
.rp-cell.rp-na:hover[b-ls3msep3vj] { outline: none; }
/* Fuori dai confini della scheda (validità, giorni di arrivo): grigio pieno, non si clicca. */
.rp-grid tbody td.rp-cell.rp-out:not(.rp-pending)[b-ls3msep3vj] { cursor: not-allowed; background-color: #e9ecef; }
.rp-cell.rp-out:hover[b-ls3msep3vj] { outline: none; }
/* Notte spenta nel calendario del prodotto: tratteggio, ma la cella resta cliccabile (Ranieri 13/10). */
.rp-cell.rb-cal-off[b-ls3msep3vj], .rp-legend.rb-cal-off[b-ls3msep3vj] { background-image: repeating-linear-gradient(135deg, transparent, transparent 4px, rgba(108,117,125,.28) 4px, rgba(108,117,125,.28) 7px); }
.rp-grid td.rp-we:not(.rp-red):not(.rp-pending):not(.rp-sum)[b-ls3msep3vj] { background-color: #fdf1f2; }
.rp-grid td.rp-today[b-ls3msep3vj] { box-shadow: inset 2px 0 0 #0d6efd, inset -2px 0 0 #0d6efd; }
.rp-grid td.rp-red[b-ls3msep3vj] { background-color: #f8d7da; }
.rp-grid td.rp-red .rp-sell[b-ls3msep3vj] { color: #b02a37; font-weight: 700; }
.rp-grid td.rp-pending:not(.rp-sum)[b-ls3msep3vj] { background-color: #fd7e14; color: #fff; }
.rp-grid td.rp-pending:not(.rp-sum) .rp-sym[b-ls3msep3vj] { color: #fff; }

/* Cella riassuntiva (13/10): sfondo = chiusura sui canali, in sospeso = bordo arancione così lo
   stato (già con le modifiche) resta leggibile. */
.rp-grid tbody td.rp-st-open[b-ls3msep3vj] { background-color: #d1e7dd; }
.rp-grid tbody td.rp-st-some[b-ls3msep3vj] { background-color: #fff3cd; }
.rp-grid tbody td.rp-st-closed[b-ls3msep3vj] { background-color: #f8d7da; }
.rp-grid td.rp-sum.rp-pending[b-ls3msep3vj] { box-shadow: inset 0 0 0 3px #fd7e14; }
.rp-box[b-ls3msep3vj] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    grid-template-rows: repeat(3, minmax(.75rem, auto));
    align-items: center;
    column-gap: 2px;
    height: 100%;
}
.rp-sum .rp-sell[b-ls3msep3vj] { grid-column: 2; grid-row: 1 / 4; font-size: .85rem; font-weight: 700; color: #000; }
.rp-sum .rp-sell.rp-zero[b-ls3msep3vj] { color: #b02a37; }
.rp-c[b-ls3msep3vj] { line-height: 1; font-size: .58rem; font-weight: 700; color: #000; white-space: nowrap; }
.rp-tl[b-ls3msep3vj] { grid-column: 1; grid-row: 1; }
.rp-bl[b-ls3msep3vj] { grid-column: 1; grid-row: 3; }
.rp-tr[b-ls3msep3vj] { grid-column: 3; grid-row: 1; justify-self: end; }
.rp-mr[b-ls3msep3vj] { grid-column: 3; grid-row: 2; justify-self: end; }
.rp-br[b-ls3msep3vj] { grid-column: 3; grid-row: 3; justify-self: end; }
.rp-dot[b-ls3msep3vj] { width: 7px; height: 7px; border-radius: 50%; border: 1px solid rgba(0,0,0,.35); }
.rp-dot-some[b-ls3msep3vj] { background: #ffc107; }
.rp-dot-all[b-ls3msep3vj] { background: #dc3545; }
.rp-sell[b-ls3msep3vj] { display: block; font-size: .7rem; line-height: 1; color: #495057; }
.rp-sym[b-ls3msep3vj] { display: block; font-weight: 700; line-height: 1.2; }
.rp-ok[b-ls3msep3vj] { color: #198754; }
.rp-on[b-ls3msep3vj] { color: #b02a37; }

.rp-legend[b-ls3msep3vj] { display: inline-block; padding: 0 .35rem; border-radius: .2rem; font-size: .75rem; }
.rp-legend.rp-ok[b-ls3msep3vj] { background: #d1e7dd; }
.rp-legend.rp-on[b-ls3msep3vj] { background: #f8d7da; }
.rp-legend.rp-pending[b-ls3msep3vj] { background: #fd7e14; color: #fff; }
.rp-legend.rp-l-open[b-ls3msep3vj] { background: #d1e7dd; }
.rp-legend.rp-l-some[b-ls3msep3vj] { background: #fff3cd; }
.rp-legend.rp-l-closed[b-ls3msep3vj] { background: #f8d7da; }
.rp-legend.rp-outl[b-ls3msep3vj] { background: #e9ecef; }

@media (max-width: 767.98px) {
    .rp-grid .rp-name[b-ls3msep3vj] { width: 8.5rem; }
    .rp-grid[b-ls3msep3vj] { min-width: 64rem; }
    .rp-save[b-ls3msep3vj] { margin-left: 0; }
}
/* /Components/Pages/VenditaOnline/Tariffe.razor.rz.scp.css */
/* Griglia «Prezzi del prodotto» (override del livello BAR, Ranieri 25/09): stesse celle della
   pagina «Livello BAR». Colonna P_std evidenziata, celle senza posto in grigio. */
.bar-occ td.bar-std[b-h4okrjnnb2] {
    background-color: rgba(13, 110, 253, 0.08);
}

.bar-occ td.bar-na[b-h4okrjnnb2] {
    background-color: #f1f3f5;
}

/* Titoli colonna fermi mentre si scorrono le tipologie (Ranieri 25/09, come «Livello BAR»): la
   griglia scorre nel suo riquadro, mai più alto della parte visibile del corpo della finestra
   (modal-dialog-scrollable: margini 2×1,75rem + testata + padding ≈ 9rem, più un po' d'aria). */
.bar-scroll[b-h4okrjnnb2] {
    max-height: calc(100vh - 12rem);
    overflow-y: auto;
    overscroll-behavior: contain;
}

.bar-scroll thead th[b-h4okrjnnb2] {
    position: sticky;
    top: 0;
    z-index: 2;
    background-color: var(--bs-body-bg);
    box-shadow: inset 0 -1px var(--bs-border-color);
}

.bar-occ input[b-h4okrjnnb2]::placeholder {
    color: #8a8f98;
    opacity: 1;
}

/* Larghezza (Ranieri 25/09): la griglia sta nella finestra (modal-xl). Tabella al 100% con
   layout fisso: le colonne si dividono lo spazio, la prima è compatta, gli input si restringono
   (padding e testo ridotti, niente frecce del campo numerico), le intestazioni vanno a capo.
   La min-width inline (4,5rem + 4rem per colonna) fa comparire la barra orizzontale SOLO sotto
   quella soglia: 11 colonne ≈ 776 px contro ~1090 px utili in modal-xl. */
.bar-occ[b-h4okrjnnb2] {
    width: 100%;
    table-layout: fixed;
}

.bar-occ th[b-h4okrjnnb2],
.bar-occ td[b-h4okrjnnb2] {
    padding: 0.2rem 0.15rem;
}

.bar-occ th[b-h4okrjnnb2] {
    white-space: normal;
    overflow-wrap: normal; /* a capo solo fra parole: mai «Trattament-o» */
    line-height: 1.15;
    font-size: 0.75rem;
    vertical-align: bottom;
}

.bar-occ th.bar-occ-first[b-h4okrjnnb2] {
    width: 6rem;
}

.bar-occ td:first-child[b-h4okrjnnb2] {
    overflow-wrap: anywhere;
    font-size: 0.8125rem;
}

.bar-occ input[b-h4okrjnnb2] {
    width: 100%;
    min-width: 0;
    padding: 0.15rem 0.25rem;
    font-size: 0.8125rem;
    -moz-appearance: textfield;
    appearance: textfield;
}

.bar-occ input[b-h4okrjnnb2]::-webkit-outer-spin-button,
.bar-occ input[b-h4okrjnnb2]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Accordion «Prezzi del prodotto»: intestazione come le legend dei fieldset. */
.bar-acc > summary[b-h4okrjnnb2] {
    cursor: pointer;
    list-style-position: inside;
}

.bar-acc[open] > summary[b-h4okrjnnb2] {
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
    margin-bottom: 0.5rem;
}
/* /Components/Pages/VenditaOnline/Traduzioni.razor.rz.scp.css */
/* La griglia cresce con i contenuti dell'hotel: scorre nel PROPRIO riquadro, mai
   allungando la pagina, con l'intestazione delle lingue sempre visibile. */
.traduzioni-scroll[b-h2ppaodvlm] {
    max-height: 68vh;
    overflow: auto;
}

.traduzioni-table[b-h2ppaodvlm] {
    table-layout: fixed;
    width: 100%;
}

.traduzioni-table thead th[b-h2ppaodvlm] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--bs-body-bg, #fff);
    box-shadow: inset 0 -1px 0 var(--bs-border-color, #dee2e6);
}

.traduzioni-table td[b-h2ppaodvlm] {
    vertical-align: top;
    min-width: 0;
}

/* L'italiano è testo di sola lettura: va a capo anche se è un paragrafo lungo. */
.traduzioni-it[b-h2ppaodvlm] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.traduzioni-cell[b-h2ppaodvlm] {
    width: 100%;
    min-width: 0;
    resize: vertical;
}

/* Cella riempita dall'AI e non ancora salvata: si vede che è da rivedere. */
.traduzioni-ai[b-h2ppaodvlm] {
    background-color: var(--bs-warning-bg-subtle, #fff3cd);
    border-color: var(--bs-warning-border-subtle, #ffe69c);
}
/* /Components/Pages/VenditaOnline/Vetrina.razor.rz.scp.css */
/* Riquadro elenco/form: default 1/4 elenco - 3/4 form (richiesta Ranieri, il form
   di modifica ha molti campi + 3 sottopannelli, l'elenco porta pochi dati). Sotto
   la soglia desktop resta impilato: niente divisorio da trascinare, non serve. */
.vetrina-split[b-l8laczx9ng] {
    display: flex;
    align-items: flex-start;
    gap: 0;
}

.vetrina-split-list[b-l8laczx9ng] {
    flex: 0 0 25%;
    min-width: 220px;
    max-width: 60%;
}

.vetrina-split-handle[b-l8laczx9ng] {
    flex: 0 0 auto;
    width: 12px;
    align-self: stretch;
    cursor: col-resize;
    position: relative;
    touch-action: none;
}

.vetrina-split-handle[b-l8laczx9ng]::after {
    content: "";
    position: absolute;
    left: 5px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--bs-border-color, #dee2e6);
}

.vetrina-split-handle:hover[b-l8laczx9ng]::after,
.vetrina-split-handle.dragging[b-l8laczx9ng]::after {
    background: var(--bs-primary, #0d6efd);
}

.vetrina-split-form[b-l8laczx9ng] {
    flex: 1 1 auto;
    min-width: 0;
}

@media (max-width: 991.98px) {
    .vetrina-split[b-l8laczx9ng] {
        flex-direction: column;
    }

    .vetrina-split-handle[b-l8laczx9ng] {
        display: none;
    }

    .vetrina-split-list[b-l8laczx9ng],
    .vetrina-split-form[b-l8laczx9ng] {
        flex-basis: auto;
        max-width: none;
        width: 100%;
    }
}
/* /Components/Shared/AcademyPlayerHost.razor.rz.scp.css */
.academyplayer-backdrop[b-pzepbca9u1] {
    position: fixed;
    inset: 0;
    /* Più scuro degli altri fondi (.35): qui si GUARDA un video, la pagina sotto deve sparire. */
    background: rgba(0, 0, 0, .78);
    /* Scala esistente (lezione stacking: ogni z-index nuovo si confronta con quelli che ci
       sono): pannello «?» 1050/1051 — che per di più vive nello stacking context della
       top-row (1020) —, scheda in overlay e palette 1060/1061, bolla della chat 1065, scheda
       cliente e clessidra 1070. Il player si apre DAL pannello «?» e deve coprire tutto
       questo: 1075. Resta sotto il solo toast del planning (1080), che è un avviso a tempo. */
    z-index: 1075;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.academyplayer[b-pzepbca9u1] {
    /* La larghezza la decide il video: quasi tutto lo schermo, ma mai più alto di quanto
       ci sta — il limite in altezza (viewport meno margini e testata) è riportato in
       larghezza con le proporzioni 1366×768, così la finestra ha la misura giusta già
       prima che arrivino i metadati del video (niente salto da 300×150). */
    width: min(calc(100vw - 2rem), calc((100vh - 5.5rem) * 1366 / 768));
    display: flex;
    flex-direction: column;
    background: #000;
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: 6px;
    overflow: hidden;
    /* V2: una sola ombra netta, come la scheda in overlay. */
    box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
}

.academyplayer-head[b-pzepbca9u1] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: .4rem .75rem;
    background: #1b1f24;
    color: #fff;
}

.academyplayer-title[b-pzepbca9u1] {
    /* Titolo lungo su schermo stretto: si tronca, non allarga la finestra. */
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.academyplayer-durata[b-pzepbca9u1] {
    font-size: .85rem;
    font-variant-numeric: tabular-nums;
    color: rgba(255, 255, 255, .7);
}

.academyplayer-video[b-pzepbca9u1] {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1366 / 768;
    /* Cintura e bretelle: un video con altre proporzioni resta comunque dentro lo schermo
       (object-fit contain è il default di <video>: bande nere, mai deformato). */
    max-width: 100%;
    max-height: calc(100vh - 5.5rem);
    background: #000;
}
/* /Components/Shared/AllowedDaysCalendar.razor.rz.scp.css */
.adc-range[b-6277wsq3kg] { min-width: 15rem; text-align: center; }
.adc-swatch[b-6277wsq3kg] { display: inline-block; width: 0.9rem; height: 0.9rem; vertical-align: middle; border: 1px solid var(--bs-border-color); background-color: var(--bs-success-bg-subtle); }
/* /Components/Shared/BarChart.razor.rz.scp.css */
/* Grafico a barre (V2 «Operativo denso»), gemello di LineChart: bordi 1px, niente ombre né
   gradienti, colori dai token. Barra piena = accento; prevista = accento tenue tratteggiato;
   tacche: anno precedente piena scura, budget tratteggiata. */
.bar-chart[b-7tv6utaxe3] {
    position: relative;
}

.bar-chart:focus-visible[b-7tv6utaxe3] {
    outline: 2px solid var(--pms-accent);
    outline-offset: 2px;
}

.bar-chart-legend[b-7tv6utaxe3] {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1rem;
    margin: 0 0 .25rem;
    padding: 0;
    list-style: none;
    font-size: .8125rem;
    color: var(--pms-ink);
}

.bar-chart-legend li[b-7tv6utaxe3] {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
}

.bar-chart-swatch[b-7tv6utaxe3] {
    width: 24px;
    height: 8px;
    flex: none;
}

.bar-chart-key[b-7tv6utaxe3] {
    display: inline-block;
    width: 12px;
    height: 10px;
    flex: none;
    box-sizing: border-box;
}

.bar-chart-key-solid[b-7tv6utaxe3] {
    background: var(--pms-accent);
}

.bar-chart-key-projected[b-7tv6utaxe3] {
    background: rgba(var(--pms-accent-rgb), .18);
    border: 1px dashed var(--pms-accent);
}

.bar-chart-key-none[b-7tv6utaxe3] {
    visibility: hidden;
}

.bar-chart-plot[b-7tv6utaxe3] {
    position: relative;
}

.bar-chart-plot > svg[b-7tv6utaxe3] {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
}

.bar-chart-empty[b-7tv6utaxe3] {
    margin: 0;
    padding: 1rem 0;
    color: var(--pms-ink);
    opacity: .7;
}

.bar-chart-grid[b-7tv6utaxe3] {
    stroke: var(--pms-border);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.bar-chart-axis[b-7tv6utaxe3] {
    stroke: var(--pms-ink);
    stroke-opacity: .45;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.bar-chart-label[b-7tv6utaxe3] {
    fill: var(--pms-ink);
    fill-opacity: .7;
    font-family: var(--pms-mono);
    font-size: 11px;
}

.bar-chart-cat[b-7tv6utaxe3] {
    font-family: var(--pms-sans);
    fill-opacity: .85;
}

.bar-chart-bar[b-7tv6utaxe3] {
    fill: var(--pms-accent);
    stroke: none;
}

.bar-chart-projected[b-7tv6utaxe3] {
    fill: rgba(var(--pms-accent-rgb), .18);
    stroke: var(--pms-accent);
    stroke-width: 1;
    stroke-dasharray: 4 3;
    vector-effect: non-scaling-stroke;
}

.bar-chart-active .bar-chart-bar:not(.bar-chart-projected)[b-7tv6utaxe3] {
    fill: var(--pms-accent-dark);
}

.bar-chart-active .bar-chart-projected[b-7tv6utaxe3] {
    fill: rgba(var(--pms-accent-rgb), .3);
}

.bar-chart-ref[b-7tv6utaxe3] {
    stroke: var(--pms-ink);
    stroke-opacity: .8;
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}

.bar-chart-ref-secondary[b-7tv6utaxe3] {
    stroke-opacity: .9;
    stroke-width: 1.5;
    stroke-dasharray: 3 2;
}

.bar-chart-hit[b-7tv6utaxe3] {
    fill: transparent;
    pointer-events: all;
}

.bar-chart-tip[b-7tv6utaxe3] {
    position: absolute;
    transform: translateX(8px);
    z-index: 2;
    min-width: 12rem;
    padding: .375rem .5rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--pms-border);
    font-size: .8125rem;
    color: var(--pms-ink);
    pointer-events: none;
    white-space: nowrap;
}

.bar-chart-tip-left[b-7tv6utaxe3] {
    transform: translateX(calc(-100% - 8px));
}

.bar-chart-tip-below[b-7tv6utaxe3] {
    transform: translateY(2px);
}

.bar-chart-tip-day[b-7tv6utaxe3] {
    font-weight: 600;
    margin-bottom: .125rem;
}

.bar-chart-tip-row[b-7tv6utaxe3] {
    display: flex;
    align-items: center;
    gap: .375rem;
}

.bar-chart-tip-note[b-7tv6utaxe3] {
    margin-top: .25rem;
    max-width: 18rem;
    white-space: normal;
    opacity: .8;
}

.bar-chart-num[b-7tv6utaxe3] {
    margin-left: auto;
    padding-left: .75rem;
    font-family: var(--pms-mono);
}
/* /Components/Shared/BarDayCalendar.razor.rz.scp.css */
/* Regole della griglia mesi, spostate da BarCalendario.razor.css: il CSS isolato non raggiunge il markup dei figli. */
.cal-grid[b-cdf2aa5eev] { table-layout: fixed; }
.cal-month-head[b-cdf2aa5eev] { width: 8.5rem; white-space: nowrap; vertical-align: middle; }
.cal-grid th[b-cdf2aa5eev], .cal-grid td[b-cdf2aa5eev] { text-align: center; padding: 0.15rem; font-size: 0.75rem; vertical-align: middle; }
.cal-cell[b-cdf2aa5eev] { cursor: pointer; min-width: 2.2rem; height: 1.7rem; user-select: none; } /* solo sfondo colore: il nome è nel tooltip */
.cal-cell:hover[b-cdf2aa5eev] { outline: 2px solid #0d6efd; outline-offset: -2px; }
.cal-empty[b-cdf2aa5eev] { background-color: #f8f9fa; color: #adb5bd; }
.cal-pending[b-cdf2aa5eev] { background-color: #fd7e14 !important; color: #fff !important; font-weight: 600; }
.cal-na[b-cdf2aa5eev] { background-color: transparent; border-color: transparent; }
.cal-wd-head[b-cdf2aa5eev] { color: #6c757d; font-weight: 600; }
.cal-wd-weekend[b-cdf2aa5eev] { color: #b02a37; background-color: #f8d7da; }
.cal-daynum[b-cdf2aa5eev] { display: block; font-size: 0.6rem; line-height: 0.7rem; opacity: 0.75; text-align: left; padding-left: 0.1rem; }
.cal-range-start[b-cdf2aa5eev] { outline: 3px solid #0d6efd !important; outline-offset: -3px; font-weight: 700; }
/* /Components/Shared/ChatDock.razor.rz.scp.css */
/* Chat interna: bolla fissa sul bordo (posizione dal JS) + pannello ancorato accanto.
   Sopra l'overlay scheda (1060) e sotto la clessidra (1070): la chat deve restare a
   portata di mano anche con una scheda aperta. */

.chatdock[b-eyrppau43h] {
    position: fixed;
    right: 14px;
    bottom: 14px;
    /* Solo la bolla: mai stirarsi fra due bordi opposti (v. apply() nel JS). */
    width: max-content;
    height: max-content;
    z-index: 1065;
}

.chatdock.is-dragging[b-eyrppau43h] {
    transition: none;
}

.chatdock-bubble[b-eyrppau43h] {
    position: relative;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    border: 0;
    background: var(--pms-accent, #2f5fd0);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: grab;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
    touch-action: none;
    user-select: none;
}

.chatdock-bubble:hover[b-eyrppau43h] {
    background: var(--pms-accent-dark, #2549a8);
}

.chatdock.is-dragging .chatdock-bubble[b-eyrppau43h] {
    cursor: grabbing;
    opacity: .85;
}

.chatdock-bubble.has-unread[b-eyrppau43h] {
    animation: chatdock-pulse-b-eyrppau43h 2.4s ease-in-out infinite;
}

@keyframes chatdock-pulse-b-eyrppau43h {
    0%, 100% { box-shadow: 0 4px 12px rgba(0, 0, 0, .25); }
    50% { box-shadow: 0 4px 12px rgba(0, 0, 0, .25), 0 0 0 6px rgba(220, 53, 69, .25); }
}

.chatdock-badge[b-eyrppau43h] {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 1.35rem;
    height: 1.35rem;
    padding: 0 .35rem;
    border-radius: 999px;
    background: #dc3545;
    color: #fff;
    font-size: .72rem;
    font-weight: 600;
    line-height: 1.35rem;
    text-align: center;
    border: 2px solid #fff;
}

.chatdock-panel[b-eyrppau43h] {
    position: fixed;
    width: 360px;
    height: 540px;
    max-width: calc(100vw - 28px);
    max-height: calc(100vh - 28px);
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--pms-border, #d9dde3);
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .22);
    overflow: hidden;
    font-size: .85rem;
}

.chatdock-head[b-eyrppau43h] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .45rem .6rem;
    border-bottom: 1px solid var(--pms-border, #d9dde3);
    background: var(--pms-thead, #f1f3f6);
}

.chatdock-head .btn-group[b-eyrppau43h] {
    flex: 1;
}

.chatdock-close[b-eyrppau43h],
.chatdock-back[b-eyrppau43h] {
    line-height: 1;
    padding: .2rem .45rem;
}

.chatdock-title[b-eyrppau43h] {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: .4rem;
}

.chatdock-title-name[b-eyrppau43h] {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chatdock-title-presence[b-eyrppau43h],
.chatdock-presence[b-eyrppau43h] {
    color: #6c757d;
    font-size: .75rem;
    white-space: nowrap;
}

.chatdock-search[b-eyrppau43h] {
    padding: .4rem .6rem;
    border-bottom: 1px solid var(--pms-border, #d9dde3);
}

.chatdock-body[b-eyrppau43h] {
    flex: 1;
    overflow-y: auto;
    padding-bottom: .5rem;
}

.chatdock-empty[b-eyrppau43h] {
    padding: 1.2rem .9rem;
    color: #6c757d;
    text-align: center;
}

.chatdock-error[b-eyrppau43h] {
    padding: .3rem .6rem;
    color: #842029;
    background: #f8d7da;
    font-size: .78rem;
}

.chatdock-city[b-eyrppau43h] {
    padding: .5rem .6rem .15rem;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #6c757d;
}

.chatdock-hotel[b-eyrppau43h] {
    padding: .25rem .6rem .1rem;
    font-weight: 600;
    color: var(--pms-ink, #1a1d21);
}

.chatdock-code[b-eyrppau43h] {
    display: inline-block;
    min-width: 2.6em;
    padding: 0 .3em;
    margin-right: .25rem;
    border-radius: 3px;
    background: var(--pms-accent-soft, #e8eeff);
    color: var(--pms-accent-dark, #2549a8);
    font-family: var(--pms-mono, monospace);
    font-size: .75rem;
    text-align: center;
}

.chatdock-list[b-eyrppau43h] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.chatdock-row[b-eyrppau43h] {
    display: flex;
    align-items: center;
    gap: .5rem;
    width: 100%;
    padding: .4rem .6rem .4rem .8rem;
    border: 0;
    background: none;
    text-align: left;
    cursor: pointer;
}

.chatdock-row:hover[b-eyrppau43h] {
    background: var(--pms-accent-soft, #e8eeff);
}

.chatdock-contact[b-eyrppau43h] {
    padding-top: .3rem;
    padding-bottom: .3rem;
}

.chatdock-row-main[b-eyrppau43h] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.chatdock-row-name[b-eyrppau43h] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chatdock-row.is-unread .chatdock-row-name[b-eyrppau43h] {
    font-weight: 700;
}

.chatdock-row-preview[b-eyrppau43h] {
    color: #6c757d;
    font-size: .78rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chatdock-row-side[b-eyrppau43h] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .15rem;
    color: #6c757d;
    font-size: .72rem;
}

.chatdock-count[b-eyrppau43h] {
    min-width: 1.3em;
    padding: 0 .35em;
    border-radius: 999px;
    background: #dc3545;
    color: #fff;
    font-weight: 600;
    text-align: center;
}

.chatdock-dot[b-eyrppau43h] {
    flex: none;
    width: .6rem;
    height: .6rem;
    border-radius: 50%;
    background: #c4c9d0;
}

.chatdock-dot.is-online[b-eyrppau43h] {
    background: #22a06b;
    box-shadow: 0 0 0 2px rgba(34, 160, 107, .25);
}

/* Conversazione */
.chatdock-messages[b-eyrppau43h] {
    flex: 1;
    overflow-y: auto;
    padding: .6rem .6rem .3rem;
    background: var(--pms-cream, #f7f8fa);
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.chatdock-day[b-eyrppau43h] {
    align-self: center;
    margin: .3rem 0;
    padding: .1rem .6rem;
    border-radius: 999px;
    background: #e3e6ea;
    color: #495057;
    font-size: .7rem;
}

.chatdock-msg[b-eyrppau43h] {
    max-width: 82%;
    padding: .35rem .55rem .25rem;
    border-radius: 10px;
    line-height: 1.3;
}

.chatdock-msg.is-mine[b-eyrppau43h] {
    align-self: flex-end;
    background: #d9e6ff;
    border-bottom-right-radius: 2px;
}

.chatdock-msg.is-theirs[b-eyrppau43h] {
    align-self: flex-start;
    background: #fff;
    border: 1px solid var(--pms-border, #d9dde3);
    border-bottom-left-radius: 2px;
}

.chatdock-msg-who[b-eyrppau43h] {
    font-size: .7rem;
    font-weight: 600;
    color: var(--pms-accent-dark, #2549a8);
    margin-bottom: .1rem;
}

.chatdock-msg-text[b-eyrppau43h] {
    white-space: pre-wrap;
    word-break: break-word;
}

.chatdock-msg-when[b-eyrppau43h] {
    text-align: right;
    font-size: .66rem;
    color: #6c757d;
    margin-top: .1rem;
}

.chatdock-compose[b-eyrppau43h] {
    display: flex;
    align-items: flex-end;
    gap: .4rem;
    padding: .45rem .6rem;
    border-top: 1px solid var(--pms-border, #d9dde3);
    background: #fff;
}

.chatdock-compose textarea[b-eyrppau43h] {
    resize: none;
    flex: 1;
}

.chatdock-compose .btn[b-eyrppau43h] {
    height: 2.2rem;
}
/* /Components/Shared/ClienteOverlayHost.razor.rz.scp.css */
/* La scheda cliente è una modale Bootstrap (z-index 1055): ospitata qui deve stare
   SOPRA l'overlay della scheda prenotazione (1060/1061), da cui può essere aperta
   («Cliente censito», note). Lezione stacking: ogni z-index nuovo si confronta con
   la scala esistente, mai dato per scontato. */
.clienteoverlay[b-3v75tai9n9]  .modal {
    z-index: 1070;
}
/* /Components/Shared/ClienteStep.razor.rz.scp.css */
/* src/Web/PMS.WebApp/Components/Shared/ClienteStep.razor.css
   La tendina dei risultati vive dentro PmsModal (.modal-content) o dentro una card di
   pagina: z-index relativo al suo stacking context, NON alla scala globale — lezione
   13/08 (un overlay che ne apre un altro). 1051 = sopra i contenuti di pagina, sotto
   la modale Bootstrap (1055): dentro la modale eredita il contesto della modale.
   Con InlineResults (modali) la lista è IN FLUSSO: stessi tetti, niente posizione
   assoluta — quella verrebbe tagliata dal modal-body scrollabile (27/08). */
.cs-results[b-blan6zal2g] { z-index: 1051; max-height: 16rem; overflow: auto; min-width: 100%; width: max-content; max-width: 36rem; }
.cs-pills[b-blan6zal2g] { color: var(--bs-secondary-color); font-size: .75em; margin-left: .25rem; }
/* /Components/Shared/ColorGridPicker.razor.rz.scp.css */
.cgp-trigger[b-cv2wfy4t9v] {
    width: 2.3rem;
    height: 1.7rem;
    border: 1px solid var(--bs-border-color, #ced4da);
    cursor: pointer;
}

/* Cattura il click fuori dalla griglia per chiuderla (nessun JS). */
.cgp-backdrop[b-cv2wfy4t9v] {
    position: fixed;
    inset: 0;
    z-index: 1049;
}

.cgp-pop[b-cv2wfy4t9v] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    z-index: 1050;
    background-color: var(--bs-body-bg, #fff);
    width: max-content;
    max-width: calc(100vw - 2rem);
    overflow-x: auto;
}

/* Griglia 16×16: celle piccole, attaccate. */
.cgp-swatch[b-cv2wfy4t9v] {
    width: 1.1rem;
    height: 1.1rem;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(0, 0, 0, .15);
    border-radius: .15rem;
    cursor: pointer;
}

.cgp-swatch:hover[b-cv2wfy4t9v] {
    transform: scale(1.15);
}

.cgp-swatch.selected[b-cv2wfy4t9v] {
    outline: 2px solid var(--bs-primary, #0d6efd);
    outline-offset: 1px;
}

.cgp-swatch:focus-visible[b-cv2wfy4t9v] {
    outline: 2px solid var(--bs-body-color, #212529);
    outline-offset: 1px;
}

/* Apertura verso sinistra: il selettore sta sul bordo destro (form degli archivi). */
.cgp-pop-right[b-cv2wfy4t9v] {
    left: auto;
    right: 0;
}
/* /Components/Shared/CommandPalette.razor.rz.scp.css */
/* Overlay centrato stile VS Code; z-index sopra top-row e modali bootstrap. */
.palette-backdrop[b-0uiaa91zlq] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    z-index: 1060;
}

.palette-box[b-0uiaa91zlq] {
    position: fixed;
    top: 12vh;
    left: 50%;
    transform: translateX(-50%);
    width: min(640px, 92vw);
    max-height: 70vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    /* Confine netto come il pannello satellite: senza bordo il box si
       confonde con la pagina sottostante. */
    border: 2px solid var(--pms-accent, #2f5fd0);
    border-radius: .5rem;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
    z-index: 1061;
    overflow: hidden;
}

.palette-box input[b-0uiaa91zlq] {
    border: 0;
    border-bottom: 1px solid #dee2e6;
    border-radius: 0;
    padding: .75rem 1rem;
    font-size: 1.05rem;
}

.palette-box input:focus[b-0uiaa91zlq] {
    outline: none;
    box-shadow: none;
}

.palette-results[b-0uiaa91zlq] {
    overflow-y: auto;
}

.palette-group[b-0uiaa91zlq] {
    padding: .35rem 1rem .1rem;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #6c757d;
}

.palette-row[b-0uiaa91zlq] {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .45rem 1rem;
    cursor: pointer;
}

.palette-row.selected[b-0uiaa91zlq],
.palette-row:hover[b-0uiaa91zlq] {
    background: #e7f1ff;
}

.palette-row.info[b-0uiaa91zlq] {
    color: #6c757d;
    cursor: default;
}

.palette-row .detail[b-0uiaa91zlq] {
    margin-left: auto;
    color: #6c757d;
    font-size: .85rem;
    white-space: nowrap;
}

.palette-hint[b-0uiaa91zlq] {
    padding: .5rem 1rem;
    color: #6c757d;
    font-size: .85rem;
    border-top: 1px solid #f1f3f5;
}
/* /Components/Shared/ConciergeChat.razor.rz.scp.css */
/* Scheda «Chiedi»: colonna a tutta altezza dentro .helppanel (flex column). Bolle come la chat
   interna (ChatDock.razor.css) per non inventare un secondo linguaggio visivo. */
.concierge[b-fdflxfnrvp] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.concierge-notice[b-fdflxfnrvp] {
    padding: .4rem 1rem;
    font-size: .78rem;
    color: #6c757d;
    border-bottom: 1px solid rgba(0, 0, 0, .125);
}

.concierge-log[b-fdflxfnrvp] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: .4rem;
    padding: .6rem 1rem;
    background: var(--pms-surface-muted, #f4f6f9);
}

.concierge-empty[b-fdflxfnrvp] {
    margin: auto 0;
    text-align: center;
    color: #6c757d;
    font-size: .9rem;
}

.concierge-msg[b-fdflxfnrvp] {
    max-width: 92%;
    padding: .4rem .6rem;
    border-radius: 10px;
    line-height: 1.35;
    font-size: .9rem;
    word-break: break-word;
}

.concierge-msg.is-mine[b-fdflxfnrvp] {
    align-self: flex-end;
    background: #d9e6ff;
    border-bottom-right-radius: 2px;
    white-space: pre-wrap;
}

.concierge-msg.is-theirs[b-fdflxfnrvp] {
    align-self: flex-start;
    background: #fff;
    border: 1px solid var(--pms-border, #d9dde3);
    border-bottom-left-radius: 2px;
}

.concierge-msg.is-error[b-fdflxfnrvp] {
    border-color: #f1aeb5;
    background: #f8d7da;
}

.concierge-msg.is-waiting[b-fdflxfnrvp] {
    color: #6c757d;
    font-style: italic;
}

.concierge-answer[b-fdflxfnrvp]  p,
.concierge-answer[b-fdflxfnrvp]  li {
    font-size: .9rem;
    margin-bottom: .3rem;
}

.concierge-answer[b-fdflxfnrvp]  ol,
.concierge-answer[b-fdflxfnrvp]  ul {
    padding-left: 1.2rem;
    margin-bottom: .3rem;
}

.concierge-answer[b-fdflxfnrvp]  :last-child {
    margin-bottom: 0;
}

.concierge-sources[b-fdflxfnrvp] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .3rem;
    margin-top: .45rem;
    padding-top: .4rem;
    border-top: 1px dashed var(--pms-border, #d9dde3);
}

.concierge-sources-label[b-fdflxfnrvp] {
    font-size: .75rem;
    color: #6c757d;
}

.concierge-source[b-fdflxfnrvp] {
    font-size: .75rem;
    padding: .1rem .4rem;
    text-align: left;
}

.concierge-outcome[b-fdflxfnrvp] {
    align-self: flex-start;
    max-width: 92%;
    margin-bottom: .3rem;
}

.concierge-outcome-text[b-fdflxfnrvp] {
    font-size: .78rem;
    color: #6c757d;
}

.concierge-escalate[b-fdflxfnrvp] {
    background: #fff;
    border: 1px solid var(--pms-border, #d9dde3);
    border-radius: 8px;
    padding: .5rem .6rem;
    min-width: min(360px, 80vw);
}

.concierge-compose[b-fdflxfnrvp] {
    display: flex;
    gap: .5rem;
    align-items: flex-end;
    padding: .5rem 1rem;
    border-top: 1px solid rgba(0, 0, 0, .125);
}

.concierge-compose textarea[b-fdflxfnrvp] {
    flex: 1;
    resize: none;
}
/* /Components/Shared/GruppoOverlayHost.razor.rz.scp.css */
/* Finestra della scheda gruppo: stesse classi della scheda prenotazione, così
   wwwroot/js/modal-drag.js la rende trascinabile senza modifiche. */
.schedaoverlay-backdrop[b-h58b256dpf] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    /* Copia di SchedaOverlayHost.razor.css con la scala abbassata di due (spec 2026-10-14):
       sopra le modali di pagina (1055) e il SatelliteDrawer (1050/1051), SOTTO la scheda
       prenotazione (1060/1061) che dal gruppo si apre sopra questa finestra. Le modali
       interne alla scheda gruppo (PmsModal, 1055) stanno nel contesto di impilamento della
       finestra: sopra il suo contenuto, sotto la scheda prenotazione. */
    z-index: 1058;
}

.schedaoverlay[b-h58b256dpf] {
    position: fixed;
    /* Quasi tutto schermo: il bordo lascia intravedere la schermata di lavoro
       scurita sotto — è l'ancoraggio visivo chiesto dagli utenti. */
    inset: 1.25rem;
    /* Larghezza con tetto e pavimento (Ranieri 06/10, monitor 34"): oltre ~1440px l'occhio perde
       l'ordine dei campi; sotto i 1024px si stringe solo se lo schermo stesso è più stretto.
       left/right/width fissati + margin auto ⇒ la scheda resta centrata. */
    width: calc(100vw - 2.5rem);
    max-width: 1440px;
    min-width: min(1024px, calc(100vw - 2.5rem));
    margin-inline: auto;
    background: var(--bs-body-bg, #fff);
    z-index: 1059;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--pms-accent, #2f5fd0);
    border-radius: 6px;
    /* V2: niente ombre morbide — una sola ombra netta per staccare dal fondo. */
    box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
}

.schedaoverlay-head[b-h58b256dpf] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid var(--pms-border, #d9dde3);
}

.schedaoverlay-body[b-h58b256dpf] {
    flex: 1;
    overflow-y: auto;
    padding: 0 1rem 1rem;
    /* A fondo corsa la rotella NON deve proseguire sulla pagina sotto. */
    overscroll-behavior: contain;
}
/* /Components/Shared/HelpPanel.razor.rz.scp.css */
.helppanel-backdrop[b-j91uj3svyz] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    z-index: 1050;
}

.helppanel[b-j91uj3svyz] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    /* Più stretto del satellite (spec task 5): è testo da leggere, non una pagina intera. */
    width: min(560px, 92vw);
    background: var(--bs-body-bg, #fff);
    z-index: 1051;
    display: flex;
    flex-direction: column;
    border-left: .25rem solid var(--pms-accent, #2f5fd0);
    box-shadow: -4px 0 12px rgba(0, 0, 0, .25);
}

.helppanel-head[b-j91uj3svyz] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid rgba(0, 0, 0, .125);
}

.helppanel-search[b-j91uj3svyz] {
    padding: .5rem 1rem;
    border-bottom: 1px solid rgba(0, 0, 0, .125);
}

.helppanel-results[b-j91uj3svyz] {
    display: flex;
    flex-direction: column;
    max-height: 40vh;
    overflow-y: auto;
    border-bottom: 1px solid rgba(0, 0, 0, .125);
}

.helppanel-result[b-j91uj3svyz] {
    display: block;
    width: 100%;
    text-align: left;
    background: none;
    border: 0;
    padding: .4rem 1rem;
    cursor: pointer;
}

.helppanel-result:hover[b-j91uj3svyz],
.helppanel-result.active[b-j91uj3svyz] {
    background: #e7f1ff;
}

.helppanel-noresults[b-j91uj3svyz] {
    padding: .4rem 1rem;
}

.helppanel-body-wrap[b-j91uj3svyz] {
    flex: 1;
    overflow-y: auto;
    padding: .5rem 1rem 1rem;
}

.help-title[b-j91uj3svyz] {
    margin-bottom: .5rem;
}

/* Riga «Video di questa pagina» (Academy): bottoni piccoli che vanno a capo nel drawer stretto. */
.help-videos[b-j91uj3svyz] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .3rem;
    margin-bottom: .6rem;
    padding-bottom: .5rem;
    border-bottom: 1px dashed var(--pms-border, #d9dde3);
}

.help-videos-label[b-j91uj3svyz] {
    font-size: .8rem;
    color: #6c757d;
}

.help-video[b-j91uj3svyz] {
    font-size: .8rem;
    padding: .1rem .45rem;
    text-align: left;
}

.help-missing[b-j91uj3svyz] {
    color: #6c757d;
    font-style: italic;
}

/* Contenuto markdown renderizzato: titoli ridotti, leggibile in colonna stretta.
   Blazor CSS isolation: ::deep, non :deep() (sintassi Vue). */
.help-body[b-j91uj3svyz]  h1 {
    font-size: 1.15rem;
}

.help-body[b-j91uj3svyz]  h2 {
    font-size: 1.05rem;
}

.help-body[b-j91uj3svyz]  h3 {
    font-size: .95rem;
}

.help-body[b-j91uj3svyz]  p,
.help-body[b-j91uj3svyz]  li {
    font-size: .9rem;
}

.help-body[b-j91uj3svyz]  img {
    max-width: 100%;
}

/* Schede Guida | Chiedi (Concierge NITIS). */
.helppanel-tabs[b-j91uj3svyz] {
    display: flex;
    gap: .25rem;
}

.helppanel-tab[b-j91uj3svyz] {
    background: none;
    border: 0;
    border-bottom: 2px solid transparent;
    padding: .2rem .6rem;
    font-weight: 600;
    color: #6c757d;
    cursor: pointer;
}

.helppanel-tab.active[b-j91uj3svyz] {
    color: var(--pms-accent, #2f5fd0);
    border-bottom-color: var(--pms-accent, #2f5fd0);
}

/* Sezione raggiunta da una fonte del Concierge: un lampo per dire «è qui». */
.help-body[b-j91uj3svyz]  .help-anchor-flash {
    background: #fff3cd;
    transition: background 1.2s ease-out;
}
/* /Components/Shared/LineChart.razor.rz.scp.css */
/* Grafico a linee (V2 «Operativo denso»): bordi 1px, niente ombre né gradienti, colori dai token. */
.line-chart[b-gtndivpaqz] {
    position: relative;
}

.line-chart:focus-visible[b-gtndivpaqz] {
    outline: 2px solid var(--pms-accent);
    outline-offset: 2px;
}

.line-chart-legend[b-gtndivpaqz] {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1rem;
    margin: 0 0 .25rem;
    padding: 0;
    list-style: none;
    font-size: .8125rem;
    color: var(--pms-ink);
}

.line-chart-legend li[b-gtndivpaqz] {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
}

.line-chart-swatch[b-gtndivpaqz] {
    width: 24px;
    height: 8px;
    flex: none;
}

.line-chart-plot[b-gtndivpaqz] {
    position: relative;
}

.line-chart-plot > svg[b-gtndivpaqz] {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
}

.line-chart-empty[b-gtndivpaqz] {
    margin: 0;
    padding: 1rem 0;
    color: var(--pms-ink);
    opacity: .7;
}

.line-chart-grid[b-gtndivpaqz] {
    stroke: var(--pms-border);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.line-chart-tick[b-gtndivpaqz] {
    stroke: var(--pms-border);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.line-chart-label[b-gtndivpaqz] {
    fill: var(--pms-ink);
    fill-opacity: .7;
    font-family: var(--pms-mono);
    font-size: 11px;
}

.line-chart-series[b-gtndivpaqz] {
    fill: none;
    stroke: var(--pms-accent);
    stroke-width: 2;
    stroke-linejoin: round;
    stroke-linecap: round;
    vector-effect: non-scaling-stroke;
}

.line-chart-dashed[b-gtndivpaqz] {
    stroke-dasharray: 5 4;
    stroke-linecap: butt;
}

.line-chart-reference[b-gtndivpaqz] {
    stroke: var(--pms-ink);
    stroke-opacity: .35;
    stroke-width: 1.5;
}

.line-chart-dot[b-gtndivpaqz] {
    fill: var(--pms-accent);
    stroke: none;
}

.line-chart-dot.line-chart-reference[b-gtndivpaqz] {
    fill: var(--pms-ink);
    fill-opacity: .35;
}

.line-chart-marker[b-gtndivpaqz] {
    stroke: var(--pms-ink);
    stroke-opacity: .5;
    stroke-width: 1;
    stroke-dasharray: 2 3;
    vector-effect: non-scaling-stroke;
}

.line-chart-hover[b-gtndivpaqz] {
    stroke: var(--pms-ink);
    stroke-opacity: .25;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.line-chart-hit[b-gtndivpaqz] {
    fill: transparent;
    pointer-events: all;
}

.line-chart-tip[b-gtndivpaqz] {
    position: absolute;
    top: 0;
    transform: translateX(8px);
    min-width: 11rem;
    padding: .375rem .5rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--pms-border);
    font-size: .8125rem;
    color: var(--pms-ink);
    pointer-events: none;
    white-space: nowrap;
}

.line-chart-tip-left[b-gtndivpaqz] {
    transform: translateX(calc(-100% - 8px));
}

.line-chart-tip-day[b-gtndivpaqz] {
    font-weight: 600;
    margin-bottom: .125rem;
}

.line-chart-tip-row[b-gtndivpaqz] {
    display: flex;
    align-items: center;
    gap: .375rem;
}

.line-chart-num[b-gtndivpaqz] {
    margin-left: auto;
    padding-left: .75rem;
    font-family: var(--pms-mono);
}
/* /Components/Shared/LoadingOverlay.razor.rz.scp.css */
/* Sopra tutta la scala dell'app (top-row 1020, drawer 1051, scheda-overlay 1061),
   sotto niente: la clessidra deve vedersi anche con la scheda aperta. */
.pms-loading[b-inffjnfnrc] {
    position: fixed;
    inset: 0;
    z-index: 1070;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 30vh;
    background: rgba(255, 255, 255, 0.45);
    pointer-events: none; /* informa, non intrappola i click */
    opacity: 0;
    /* Anti-flicker: le attese sotto i ~300ms non si vedono proprio. */
    animation: pms-loading-in-b-inffjnfnrc 0.15s ease-out 0.3s forwards;
}

.pms-loading-box[b-inffjnfnrc] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    box-shadow: 0 2px 8px rgba(33, 37, 41, 0.15);
    padding: 1rem 1.5rem;
}

@keyframes pms-loading-in-b-inffjnfnrc {
    to { opacity: 1; }
}
/* /Components/Shared/MergeCompareModal.razor.rz.scp.css */
/* src/Web/PMS.WebApp/Components/Shared/MergeCompareModal.razor.css
   Due colonne campo per campo: griglia a 3 colonne (etichetta / superstite / assorbita).
   Nessuno z-index qui: il componente vive dentro lo stacking context di PmsModal
   (lezione 13/08 — un overlay sopra il modal Bootstrap 1055 deve sempre cedere il passo). */

.mcm-grid[b-11pv2eglb7] {
    display: grid;
    grid-template-columns: minmax(100px, 140px) 1fr 1fr;
    gap: .35rem .75rem;
    align-items: start;
}

.mcm-head[b-11pv2eglb7] {
    padding-bottom: .25rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.mcm-label[b-11pv2eglb7] {
    color: var(--bs-secondary-color, #6c757d);
    padding-top: .1rem;
}

.mcm-val[b-11pv2eglb7] {
    word-break: break-word;
}

.mcm-span2[b-11pv2eglb7] {
    grid-column: span 2;
}

.mcm-consensi .small + .small[b-11pv2eglb7] {
    margin-top: .15rem;
}
/* /Components/Shared/MultiFilterSelect.razor.rz.scp.css */
.mfs[b-2kvvs7yoy6] {
    position: relative;
}

.mfs-toggle[b-2kvvs7yoy6] {
    text-align: left;
    min-width: 7rem;
    max-width: 16rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mfs-backdrop[b-2kvvs7yoy6] {
    position: fixed;
    inset: 0;
    z-index: 1040;
}

.mfs-menu[b-2kvvs7yoy6] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    z-index: 1041;
    min-width: max(100%, 9rem);
    max-height: 20rem;
    overflow-y: auto;
    padding: .4rem .6rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    white-space: nowrap;
}

.mfs-item[b-2kvvs7yoy6] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .15rem 0;
    cursor: pointer;
}
/* /Components/Shared/NotificationCenter.razor.rz.scp.css */
/* Centro notifiche di reparto: bottone in top-row + pannello a discesa coi foglietti.
   Deroga voluta al tema «operativo denso» (niente ombre): qui la grafica da foglietto
   adesivo È il messaggio (richiesta Ranieri 16/09). */

.notif-btn[b-d9cuu05fih] {
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    line-height: 1;
    padding-top: .3rem;
    padding-bottom: .3rem;
}

.notif-bell[b-d9cuu05fih] {
    display: block;
}

.notif-btn.is-live[b-d9cuu05fih] {
    background: #f59e0b;
    border-color: #d97706;
    color: #1a1d21;
    font-weight: 600;
}

.notif-btn.is-live:hover[b-d9cuu05fih] {
    background: #e58e06;
    border-color: #b45309;
    color: #1a1d21;
}

.notif-count[b-d9cuu05fih] {
    display: inline-block;
    min-width: 1.35em;
    padding: 0 .4em;
    margin-left: .3rem;
    border-radius: 999px;
    background: #1a1d21;
    color: #fff;
    font-size: .75em;
    line-height: 1.5;
    text-align: center;
}

.notif-backdrop[b-d9cuu05fih] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .2);
    z-index: 1050;
}

.notif-panel[b-d9cuu05fih] {
    position: absolute;
    right: 0;
    top: calc(100% + .4rem);
    width: min(440px, 92vw);
    max-height: 75vh;
    overflow-y: auto;
    background: #f4f1ea; /* bacheca di sughero chiaro */
    border: 1px solid var(--pms-border, #d9dde3);
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
    z-index: 1051;
    padding: .6rem .75rem .9rem;
}

.notif-head[b-d9cuu05fih] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .5rem;
    margin-bottom: .25rem;
}

.notif-scope[b-d9cuu05fih] {
    font-size: .75rem;
    color: #6c757d;
    margin-bottom: .5rem;
}

.notif-empty[b-d9cuu05fih] {
    padding: 1rem;
    text-align: center;
    color: #6c757d;
    font-size: .85rem;
}

.notif-list[b-d9cuu05fih] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: .5rem .35rem .25rem;
}

/* Il foglietto */
.notif-note[b-d9cuu05fih] {
    position: relative;
    background: #fff3a3;
    padding: 1.05rem .9rem .7rem;
    border: 1px solid rgba(0, 0, 0, .06);
    box-shadow: 2px 3px 8px rgba(0, 0, 0, .18);
    font-family: "Segoe Print", "Bradley Hand", "Comic Sans MS", cursive;
    transform: rotate(-1.2deg);
    transition: transform .15s ease;
}

.notif-note:nth-child(2n)[b-d9cuu05fih] {
    transform: rotate(.9deg);
}

.notif-note:nth-child(3n)[b-d9cuu05fih] {
    transform: rotate(-.4deg);
}

.notif-note:hover[b-d9cuu05fih] {
    transform: rotate(0) scale(1.01);
    z-index: 1;
}

/* Striscia di nastro in alto */
.notif-note[b-d9cuu05fih]::before {
    content: "";
    position: absolute;
    top: -.55rem;
    left: 50%;
    width: 5.5rem;
    height: 1.1rem;
    margin-left: -2.75rem;
    background: rgba(255, 255, 255, .55);
    border: 1px solid rgba(0, 0, 0, .08);
    transform: rotate(-2deg);
}

.notif-note.is-future[b-d9cuu05fih] {
    background: #dff3ff;
}

.notif-note.is-expired[b-d9cuu05fih] {
    background: #ece9dc;
    opacity: .85;
}

.notif-meta[b-d9cuu05fih] {
    display: flex;
    justify-content: space-between;
    gap: .5rem;
    font-family: var(--pms-sans, system-ui, sans-serif);
    font-size: .74rem;
    color: #5b5646;
}

.notif-author[b-d9cuu05fih] {
    font-weight: 600;
}

.notif-when[b-d9cuu05fih] {
    white-space: nowrap;
}

.notif-text[b-d9cuu05fih] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    font-size: 1rem;
    line-height: 1.35;
    margin: .35rem 0 .45rem;
    color: #2b2718;
}

.notif-areas[b-d9cuu05fih] {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    font-family: var(--pms-sans, system-ui, sans-serif);
}

.notif-areas .badge[b-d9cuu05fih] {
    background: rgba(0, 0, 0, .08);
    color: #3a3520;
    font-weight: 500;
}

.notif-areas .notif-state[b-d9cuu05fih] {
    background: rgba(0, 0, 0, .5);
    color: #fff;
}

.notif-actions[b-d9cuu05fih] {
    position: absolute;
    top: .3rem;
    right: .35rem;
    display: flex;
    gap: .15rem;
    font-family: var(--pms-sans, system-ui, sans-serif);
}

.notif-actions .btn[b-d9cuu05fih] {
    padding: 0 .4rem;
    font-size: .8rem;
    line-height: 1.5;
    background: rgba(255, 255, 255, .55);
    border: 1px solid rgba(0, 0, 0, .15);
}

.notif-actions .btn.btn-danger[b-d9cuu05fih] {
    background: var(--bs-danger, #dc3545);
    color: #fff;
}

/* Notifiche ai colleghi */
.notif-note.is-for-me[b-d9cuu05fih] {
    background: #ffd6a5; /* foglietto arancio chiaro: è per te */
}

.notif-areas .notif-for-me[b-d9cuu05fih] {
    background: #d97706;
    color: #fff;
}

.notif-areas .notif-read[b-d9cuu05fih] {
    background: rgba(25, 135, 84, .18);
    color: #146c43;
}

.notif-read-row[b-d9cuu05fih] {
    display: flex;
    justify-content: flex-end;
    margin-top: .4rem;
    font-family: var(--pms-sans, system-ui, sans-serif);
}

.notif-frozen[b-d9cuu05fih] {
    font-size: .75rem;
    color: #5b5646;
    padding: .1rem .4rem;
    background: rgba(255, 255, 255, .55);
    border: 1px solid rgba(0, 0, 0, .15);
    border-radius: 4px;
}

.notif-colleagues[b-d9cuu05fih] {
    max-height: 11rem;
    overflow-y: auto;
    border: 1px solid var(--pms-border, #d9dde3);
    border-radius: 4px;
    padding: .35rem .6rem;
    columns: 2;
}

/* Telefono: il pannello si ancora allo schermo (il campanello sta a meta' barra e
   right:0 lo spingerebbe fuori a sinistra). */
@media (max-width: 640.98px) {
    .notif-anchor[b-d9cuu05fih] {
        position: static !important;
    }

    .notif-panel[b-d9cuu05fih] {
        left: .5rem;
        right: .5rem;
        top: auto;
        width: auto;
    }
}
/* /Components/Shared/OccupancyTrend.razor.rz.scp.css */
.occupancy-trend[b-c5fxzxiiwh] {
    padding: .75rem;
    border: 1px solid var(--pms-border);
    background: var(--bs-body-bg);
}

.occupancy-trend-title[b-c5fxzxiiwh] {
    margin: 0 0 .5rem;
    font-size: 1rem;
    font-weight: 600;
}

.occupancy-trend-note[b-c5fxzxiiwh] {
    margin: .25rem 0 0;
    font-size: .8125rem;
    color: var(--pms-ink);
    opacity: .75;
}
/* /Components/Shared/PlannerQuickCreate.razor.rz.scp.css */
/* src/Web/PMS.WebApp/Components/Shared/PlannerQuickCreate.razor.css
   Stesso posizionamento del move-popover del planning: fisso sul punto del click. */
.qc-popover[b-j1qyr1r8ly] { position: fixed; z-index: 1060; width: 23rem; box-shadow: var(--bs-box-shadow); }
/* Col pannello offerta aperto la card può superare l'altezza della finestra (il clamp
   del top riserva 16rem): scroll interno, mai bottoni irraggiungibili fuori schermo. */
.qc-popover > .card-body[b-j1qyr1r8ly] { max-height: calc(100vh - 1rem); overflow-y: auto; }
/* /Components/Shared/QuillEditor.razor.rz.scp.css */
/* Quill dentro il pannello proprietà: area di scrittura compatta, testi del suggerimento link in italiano
   (quill.snow.css li scrive in inglese con content:). */
.te-quill[b-bm88kwcytb]  .ql-container {
    font-family: inherit;
    font-size: .875rem;
}

.te-quill[b-bm88kwcytb]  .ql-editor {
    min-height: 9rem;
    max-height: 22rem;
    overflow-y: auto;
}

.te-quill[b-bm88kwcytb]  .ql-toolbar.ql-snow {
    padding: 4px;
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip {
    z-index: 5;
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip::before {
    content: "Apri:";
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip[data-mode=link]::before {
    content: "Link:";
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip a.ql-action::after {
    content: "Modifica";
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip a.ql-remove::before {
    content: "Togli";
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip.ql-editing a.ql-action::after {
    content: "Salva";
}

.te-quill[b-bm88kwcytb]  .ql-snow .ql-tooltip input[type=text].te-quill-bad {
    border-color: var(--bs-danger);
}
/* /Components/Shared/SatelliteDrawer.razor.rz.scp.css */
.satdrawer-backdrop[b-wirkp3fa02] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    z-index: 1050;
}

.satdrawer[b-wirkp3fa02] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(1240px, 96vw);
    background: var(--bs-body-bg, #fff);
    z-index: 1051;
    display: flex;
    flex-direction: column;
    /* Bordo marcato sul fianco: il pannello copre quasi tutto lo schermo e
       senza un confine netto si confonde con la pagina sottostante. */
    border-left: .25rem solid var(--pms-accent, #2f5fd0);
    box-shadow: -4px 0 12px rgba(0, 0, 0, .25);
}

.satdrawer-head[b-wirkp3fa02] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid rgba(0, 0, 0, .125);
}

.satdrawer-body[b-wirkp3fa02] {
    flex: 1;
    overflow-y: auto;
    padding: 0 1rem 1rem;
}
/* /Components/Shared/SchedaOverlayHost.razor.rz.scp.css */
.schedaoverlay-backdrop[b-1lzj0r2jqm] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    /* Sopra il SatelliteDrawer (1050/1051): la scheda si apre anche dai
       satelliti dei banchi (es. pannello Note). */
    z-index: 1060;
}

.schedaoverlay[b-1lzj0r2jqm] {
    position: fixed;
    /* Quasi tutto schermo: il bordo lascia intravedere la schermata di lavoro
       scurita sotto — è l'ancoraggio visivo chiesto dagli utenti. */
    inset: 1.25rem;
    /* Larghezza con tetto e pavimento (Ranieri 06/10, monitor 34"): oltre ~1440px l'occhio perde
       l'ordine dei campi; sotto i 1024px si stringe solo se lo schermo stesso è più stretto.
       left/right/width fissati + margin auto ⇒ la scheda resta centrata. */
    width: calc(100vw - 2.5rem);
    max-width: 1440px;
    min-width: min(1024px, calc(100vw - 2.5rem));
    margin-inline: auto;
    background: var(--bs-body-bg, #fff);
    z-index: 1061;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--pms-accent, #2f5fd0);
    border-radius: 6px;
    /* V2: niente ombre morbide — una sola ombra netta per staccare dal fondo. */
    box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
}

.schedaoverlay-head[b-1lzj0r2jqm] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid var(--pms-border, #d9dde3);
}

.schedaoverlay-body[b-1lzj0r2jqm] {
    flex: 1;
    overflow-y: auto;
    padding: 0 1rem 1rem;
    /* A fondo corsa la rotella NON deve proseguire sulla pagina sotto. */
    overscroll-behavior: contain;
}
/* /Components/Shared/SearchSelect.razor.rz.scp.css */
.ss[b-cg1kfl1mae] {
    position: relative;
}

.ss-toggle[b-cg1kfl1mae] {
    text-align: left;
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ss-backdrop[b-cg1kfl1mae] {
    position: fixed;
    inset: 0;
    z-index: 1040;
}

.ss-menu[b-cg1kfl1mae] {
    position: absolute;
    top: calc(100% + 2px);
    /* Ancorato a destra; all'apertura SearchSelect.razor.js lo passa in fixed (overlay). */
    right: 0;
    z-index: 1041;
    min-width: max(100%, 14rem);
    max-height: 20rem;
    overflow-y: auto;
    padding: .4rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
}

.ss-item[b-cg1kfl1mae] {
    display: block;
    width: 100%;
    padding: .15rem .35rem;
    border: 0;
    background: none;
    text-align: left;
    white-space: nowrap;
    border-radius: var(--bs-border-radius-sm);
}

.ss-item:hover[b-cg1kfl1mae] {
    background: var(--bs-tertiary-bg);
}

.ss-item.active[b-cg1kfl1mae] {
    background: var(--bs-primary-bg-subtle);
    font-weight: 600;
}
/* /Components/Shared/SectionColumnsPicker.razor.rz.scp.css */
.scp[b-m3h8u8wfsj] {
    position: relative;
    display: inline-block;
    /* Il titolo è grande e in grassetto: il pannello torna al testo normale. */
    font-size: 1rem;
    font-weight: normal;
    line-height: 1.5;
    text-transform: none;
    vertical-align: middle;
}

.scp-backdrop[b-m3h8u8wfsj] {
    position: fixed;
    inset: 0;
    z-index: 1040;
}

.scp-panel[b-m3h8u8wfsj] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 1041;
    width: max-content;
    min-width: 22rem;
    max-width: min(46rem, 90vw);
    color: var(--bs-body-color);
    text-align: left;
}
/* /Components/Shared/Toast.razor.rz.scp.css */
/* Toast condiviso (stile del .plan-toast del Planning): position fixed = nessuno
   slittamento della pagina; ~3,4 s pieni + sfumatura entro i 4 s del componente. */
.pms-toast[b-x4in1hh51z] {
    position: fixed;
    left: 50%;
    bottom: 1.25rem;
    transform: translateX(-50%);
    z-index: 1080;
    display: flex;
    align-items: center;
    gap: .75rem;
    color: #fff;
    background: rgba(33, 37, 41, .94);
    padding: .5rem .6rem .5rem 1.1rem;
    border-radius: .5rem;
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .25);
    max-width: min(90vw, 42rem);
    animation: pms-toast-fade-b-x4in1hh51z 4s forwards;
}

.pms-toast-success[b-x4in1hh51z] { background: #146c43; }
.pms-toast-error[b-x4in1hh51z] { background: #b02a37; }

.pms-toast-close[b-x4in1hh51z] {
    border: 0;
    background: transparent;
    color: inherit;
    font-size: 1.15rem;
    line-height: 1;
    padding: 0 .3rem;
    opacity: .8;
    cursor: pointer;
}

.pms-toast-close:hover[b-x4in1hh51z] { opacity: 1; }

@keyframes pms-toast-fade-b-x4in1hh51z {
    0% { opacity: 0; transform: translateX(-50%) translateY(.5rem); }
    6% { opacity: 1; transform: translateX(-50%) translateY(0); }
    85% { opacity: 1; }
    100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .pms-toast[b-x4in1hh51z] { animation: none; }
}
/* /Components/Shared/TreatmentSupplementGrid.razor.rz.scp.css */
.bar-occ input[b-rn04crjava]::placeholder {
    color: #8a8f98;
    opacity: 1;
}

/* Larghezza (Ranieri 25/09): la griglia sta nella finestra (modal-xl). Tabella al 100% con
   layout fisso: le colonne si dividono lo spazio, la prima è compatta, gli input si restringono
   (padding e testo ridotti, niente frecce del campo numerico), le intestazioni vanno a capo.
   La min-width inline (4,5rem + 4rem per colonna) fa comparire la barra orizzontale SOLO sotto
   quella soglia: 11 colonne ≈ 776 px contro ~1090 px utili in modal-xl. */
.bar-occ[b-rn04crjava] {
    width: 100%;
    table-layout: fixed;
}

.bar-occ th[b-rn04crjava],
.bar-occ td[b-rn04crjava] {
    padding: 0.2rem 0.15rem;
}

.bar-occ th[b-rn04crjava] {
    white-space: normal;
    overflow-wrap: normal; /* a capo solo fra parole: mai «Trattament-o» */
    line-height: 1.15;
    font-size: 0.75rem;
    vertical-align: bottom;
}

.bar-occ th.bar-occ-first[b-rn04crjava] {
    width: 6rem;
}

.bar-occ td:first-child[b-rn04crjava] {
    overflow-wrap: anywhere;
    font-size: 0.8125rem;
}

.bar-occ input[b-rn04crjava] {
    width: 100%;
    min-width: 0;
    padding: 0.15rem 0.25rem;
    font-size: 0.8125rem;
    -moz-appearance: textfield;
    appearance: textfield;
}

.bar-occ input[b-rn04crjava]::-webkit-outer-spin-button,
.bar-occ input[b-rn04crjava]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
/* /Components/Shared/TypeAvailabilityGrid.razor.rz.scp.css */
/* src/Web/PMS.WebApp/Components/Shared/TypeAvailabilityGrid.razor.css
   Stessa geometria del planning: colonna etichetta + celle a larghezza fissa. */
.tag-grid[b-g0nawelvrb] { --cell: 2.6rem; --label: 10rem; display: inline-block; min-width: 100%; }
/* scroll-margin-top: quando una riga viene portata a video (tastiera, scrollIntoView)
   resta sotto la testata sticky dei giorni invece di finirci dietro. */
.tag-row[b-g0nawelvrb] { display: flex; align-items: stretch; scroll-margin-top: 3rem; }
.tag-label[b-g0nawelvrb] {
    flex: 0 0 var(--label); position: sticky; left: 0; z-index: 2;
    background: var(--bs-body-bg); border-bottom: 1px solid var(--pms-border, #d9dde3);
    padding: .15rem .4rem; font-size: .85rem; white-space: nowrap; overflow: hidden;
}
.tag-days[b-g0nawelvrb] { display: flex; flex: 0 0 calc(var(--cell) * var(--cols)); }
.tag-cell[b-g0nawelvrb] {
    flex: 0 0 var(--cell); text-align: center; font-size: .8rem; line-height: 1.15;
    border-left: 1px solid var(--pms-border, #d9dde3); border-bottom: 1px solid var(--pms-border, #d9dde3);
    padding: .2rem 0; user-select: none;
}
/* Cursore pointer solo se la testata è davvero cliccabile (OnDayClick impostato):
   su /disponibilita, senza handler, la testata non deve promettere un'azione che non c'è. */
.tag-head-click[b-g0nawelvrb] { cursor: pointer; }
.tag-head-row .tag-label[b-g0nawelvrb], .tag-head-row .tag-cell[b-g0nawelvrb] {
    position: sticky; top: 0; z-index: 3; background: var(--bs-body-bg); font-weight: 500;
}
/* Semafori: zero = esaurito, over = sfora. Lo zero è testo rosso pieno in grassetto
   SENZA fondo (richiesta Ranieri 07/10: il fondo ambra si confondeva col weekend/oggi);
   l'over resta col suo fondo rosato, così i due casi non si confondono. Niente tema
   scuro nell'app: colori fissi come il resto del file. */
.tag-zero[b-g0nawelvrb] { color: #d0021b; font-weight: 700; }
.tag-over[b-g0nawelvrb] { background: #f9e5e3; color: #b3261e; font-weight: 700; }
.tag-closed[b-g0nawelvrb] { background: #3a4250; color: #fff; }
/* Marcatore ⁺N dell'extra in vendita online (overbooking voluto): apice ambra accanto al
   vendibile fisico, stessa geometria dei marcatori • e ᵗ — la cella non si allarga. */
.tag-extra[b-g0nawelvrb] { color: #b45309; font-weight: 700; }
.tag-clickable[b-g0nawelvrb] { cursor: pointer; }
.tag-clickable:hover[b-g0nawelvrb] { outline: 2px solid var(--pms-accent, #2f5fd0); outline-offset: -2px; }
/* Cella a 0 o chiusa: cliccabile lo stesso (overbooking voluto), ma l'hover è ambra così
   l'operatore sa da dove parte prima di rilasciare. */
.tag-cell.tag-clickable-over:hover[b-g0nawelvrb] { outline-color: #c2410c; }
/* Selezione col trascinamento a MEZZA GIORNATA, come le barre di occupazione del
   planning camere: da metà cella d'arrivo a metà cella del giorno di partenza.
   background-image (non background) così zero/weekend restano sotto le metà libere. */
/* Specificità a DUE classi (.tag-cell.tag-sel-*) e colore pieno dell'accento (non il
   soft): le classi-giorno sotto usano lo shorthand `background`, che a parità di
   specificità azzerava il background-image della selezione — sui weekend e su oggi la
   selezione spariva (segnalazione Ranieri 10/09). Il bordo interno la fa leggere anche
   sulle celle ambra/rosse. */
.tag-cell.tag-sel-start[b-g0nawelvrb],
.tag-cell.tag-sel-mid[b-g0nawelvrb],
.tag-cell.tag-sel-end[b-g0nawelvrb] {
    --sel: rgba(var(--pms-accent-rgb, 47, 95, 208), .38);
    box-shadow: inset 0 2px 0 var(--pms-accent, #2f5fd0), inset 0 -2px 0 var(--pms-accent, #2f5fd0);
}
.tag-cell.tag-sel-start[b-g0nawelvrb] { background-image: linear-gradient(to right, transparent 50%, var(--sel) 50%); }
.tag-cell.tag-sel-mid[b-g0nawelvrb] { background-image: linear-gradient(var(--sel), var(--sel)); }
.tag-cell.tag-sel-end[b-g0nawelvrb] { background-image: linear-gradient(to right, var(--sel) 50%, transparent 50%); }
/* Classi-giorno del componente: le passa il chiamante via DayCss (il Planning per il pin
   e per oggi, /disponibilita e il cruscotto per il weekend). Vivono QUI perché il CSS
   scoped di una pagina non raggiunge il markup di un componente: la stessa classe scritta
   in Planning.razor.css atterrerebbe sull'elemento senza dipingere nulla. */
.tag-cell.tag-weekend[b-g0nawelvrb] { background: var(--pms-thead, #f1f3f6); }
.tag-cell.tag-today[b-g0nawelvrb] { background: var(--pms-accent-soft, #e8eeff); }
.tag-head.tag-today[b-g0nawelvrb] { font-weight: 700; color: var(--pms-accent, #2f5fd0); }

/* Barra verticale della data pinnata: identica a quella del planner camere
   (Planning.razor.css), così il gesto è lo stesso a occhio. Corre da mezzogiorno a
   mezzogiorno, come le barre di occupazione. */
.tag-cell.tag-pinned[b-g0nawelvrb] {
    background-image: linear-gradient(rgba(var(--pms-accent-rgb, 47, 95, 208), .45), rgba(var(--pms-accent-rgb, 47, 95, 208), .45));
    background-size: 25% 100%;
    background-position: 50% 0;
    background-repeat: no-repeat;
}

/* La riga d'hotel è un totale, non una tipologia: si stacca da quelle sotto. */
.tag-hotel-row .tag-cell[b-g0nawelvrb], .tag-hotel-row .tag-label[b-g0nawelvrb] {
    font-weight: 600;
    border-bottom: 2px solid var(--pms-border, #d9dde3);
}

/* Riga macro: un totale di gruppo cliccabile (espandi/collassa), si stacca dalle
   tipologie come la riga Hotel. Lo sfondo sta SOLO sull'etichetta: dipingerlo anche
   sulle celle vincerebbe su `tag-zero` (ambra) e sulle classi-giorno `tag-weekend`,
   `tag-today` e `tag-pinned` (che è un background-image, azzerato dallo shorthand),
   cancellandole proprio sulla riga di riepilogo. Come la riga Hotel: peso e bordo, basta. */
.tag-macro-row[b-g0nawelvrb] { cursor: pointer; }
.tag-macro-row .tag-label[b-g0nawelvrb] { background: var(--pms-thead, #f1f3f6); }
.tag-macro-row .tag-label[b-g0nawelvrb], .tag-macro-row .tag-cell[b-g0nawelvrb] {
    font-weight: 600;
    border-bottom: 2px solid var(--pms-border, #d9dde3);
}
/* Carattere più grande della macro (richiesta Ranieri 09/09): si deve distinguere
   NETTAMENTE dalle tipologie sotto (.85/.8rem), in tutte le griglie che la usano. */
.tag-macro-row .tag-label[b-g0nawelvrb] { font-size: 1.05rem; }
.tag-macro-row .tag-label strong[b-g0nawelvrb] { font-weight: 700; letter-spacing: .01em; }
.tag-macro-row .tag-cell[b-g0nawelvrb] { font-size: .95rem; }
.tag-macro-row:hover .tag-label[b-g0nawelvrb] { text-decoration: underline; }
.tag-macro-caret[b-g0nawelvrb] { display: inline-block; width: .9rem; color: var(--pms-accent, #2f5fd0); }

/* Etichetta tipologia cliccabile (RoomPlanOnLabelClick): apre il piano camere. */
.tag-type-click[b-g0nawelvrb] { cursor: pointer; }
.tag-type-click:hover[b-g0nawelvrb] { text-decoration: underline; }

/* Piano camere incassato sotto la riga della tipologia: si stacca dal seguito
   con lo stesso bordo doppio delle righe di riepilogo. */
.tag-roomplan[b-g0nawelvrb] { border-bottom: 2px solid var(--pms-border, #d9dde3); }
/* /Components/Shared/TypePlannerMini.razor.rz.scp.css */
/* Mini-planner sola lettura dell'accordion prenotazione: stessa griglia --cols/--cell
   del Planning grande, ma in scala ridotta (cella ~2.2rem contro 3rem). */
.mini-tape[b-nu49lzr3fp] {
    overflow-x: auto;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    background: #fff;
}

.mini-tape-inner[b-nu49lzr3fp] {
    --cell: 2.2rem;
    --label: 4.5rem;
    display: inline-block;
    min-width: 100%;
}

.mini-row[b-nu49lzr3fp] {
    display: flex;
    border-bottom: 1px solid #f1f3f5;
}

.mini-row.selectable[b-nu49lzr3fp] {
    cursor: pointer;
}

.mini-row.selectable:hover[b-nu49lzr3fp] {
    background: #f8f9fa;
}

.mini-row.unselectable[b-nu49lzr3fp] {
    cursor: default;
}

.mini-row.selected[b-nu49lzr3fp] {
    background: #e7f1ff;
    outline: 1px solid #0d6efd;
    outline-offset: -1px;
}

.mini-head-row[b-nu49lzr3fp] {
    border-bottom: 2px solid #dee2e6;
}

.mini-label[b-nu49lzr3fp] {
    flex: 0 0 var(--label);
    padding: 0.1rem 0.4rem;
    font-size: 0.78rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: flex;
    align-items: center;
    border-right: 1px solid #dee2e6;
}

.mini-days[b-nu49lzr3fp] {
    position: relative;
    display: flex;
    flex: 0 0 calc(var(--cell) * var(--cols));
    min-height: 1.5rem;
}

.mini-cell[b-nu49lzr3fp] {
    flex: 0 0 var(--cell);
    border-right: 1px solid #f1f3f5;
}

/* Contesto attenuato: i giorni fuori dal soggiorno cercato restano visibili ma
   in secondo piano rispetto a quelli dentro (in-stay). */
.mini-cell.context[b-nu49lzr3fp] {
    background: #f8f9fa;
    opacity: 0.7;
}

.mini-cell.in-stay[b-nu49lzr3fp] {
    background: #fff;
    opacity: 1;
}

/* Incassato nella griglia tipologie (piano camere della tipologia, 26/08): stesse
   colonne del tag-grid (--cell 2.6rem, --label 10rem, TypeAvailabilityGrid.razor.css
   — se cambia là, cambia QUI) così le giornate cadono sotto la testata della griglia
   ospite; niente bordo né scroll proprio (scorre con la griglia) ed etichetta camera
   sticky e rientrata come una voce figlia della tipologia. */
.mini-tape.mini-embedded[b-nu49lzr3fp] {
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.mini-tape.mini-embedded .mini-tape-inner[b-nu49lzr3fp] {
    --cell: 2.6rem;
    --label: 10rem;
}

.mini-tape.mini-embedded .mini-label[b-nu49lzr3fp] {
    position: sticky;
    left: 0;
    z-index: 2;
    background: var(--bs-body-bg, #fff);
    padding-left: 1.4rem;
    font-size: 0.8rem;
    border-right: 0;
}

/* Corsia «senza camera» (solo incassato): pratiche vendute sulla tipologia senza
   camera assegnata — occupano il vendibile ma non stanno su nessuna riga camera.
   Barre tratteggiate per dire «occupazione vera, camera ancora da scegliere». */
.mini-row.mini-unassigned .mini-label[b-nu49lzr3fp] {
    color: var(--bs-secondary-color, #6c757d);
    font-style: italic;
}

.mini-bar.mini-bar-unassigned[b-nu49lzr3fp] {
    border-style: dashed;
    border-color: rgba(33, 37, 41, .55);
}

.mini-head[b-nu49lzr3fp] {
    text-align: center;
    font-size: 0.65rem;
    line-height: 1.05;
    padding: 0.15rem 0;
    color: #6c757d;
}

.mini-head.in-stay[b-nu49lzr3fp] {
    color: #212529;
    font-weight: 600;
}

.mini-bar[b-nu49lzr3fp] {
    position: absolute;
    top: 0.1rem;
    height: 1.3rem;
    border-radius: 0.65rem;
    padding: 0 0.4rem;
    font-size: 0.68rem;
    line-height: 1.3rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    z-index: 1;
    border: 1px solid transparent;
    color: #fff;
    /* Sola lettura: niente drag né cursor "grab", solo consultazione. */
    cursor: default;
}

/* Colori di stato: INLINE dalla palette dell'hotel (Configurazione → Colori stati, Ranieri
   26/09), come nel Planning grande. Qui solo la struttura: opzione tratteggiata. */
.mini-bar.st-option[b-nu49lzr3fp] {
    border-style: dashed;
    border-color: rgba(0, 0, 0, 0.45);
}

.mini-bar.st-block-ooo[b-nu49lzr3fp] {
    background: repeating-linear-gradient(45deg, #212529, #212529 5px, #495057 5px, #495057 10px);
    border-radius: 0.2rem;
}

.mini-bar.st-block-oos[b-nu49lzr3fp] {
    background: repeating-linear-gradient(45deg, #fff3cd, #fff3cd 5px, #ffe69c 5px, #ffe69c 10px);
    color: #664d03;
    border: 1px solid #997404;
    border-radius: 0.2rem;
}
/* /Components/Shared/VoiceButton.razor.rz.scp.css */
.voice-live[b-iqt4pgl18g] {
    animation: voice-pulse-b-iqt4pgl18g 1.2s ease-in-out infinite;
}

@keyframes voice-pulse-b-iqt4pgl18g {
    50% { opacity: .55; }
}
