/*
 * CSS del progetto custom. Caricato per ultimo (vedi _header.php).
 * Il tema del core sta in dist/css/cms-core.css: per cambiarlo basta ridefinire qui i token, ad esempio
 * :root { --accent: #1d4ed8; --accent-strong: #1e3a8a; --accent-soft: #dbeafe; }
 */

:root {
    --success-soft: #e3efe8;
    --warning-soft: #f6ecd9;
    --danger-soft: #f5e1df;
    --info-soft: #e2ebf5;
    --surface-2: #f1f0ec;
    --radius: 0.3rem;
    --radius-lg: 0.5rem;
    /* Ombre a strati sull'inchiostro del tema (--ink #14181f): unico punto in cui
       il colore delle ombre è scritto; fuori da qui si usa solo var(--shadow-*). */
    --shadow-sm: 0 1px 2px rgba(20, 24, 31, 0.05), 0 1px 3px rgba(20, 24, 31, 0.04);
    --shadow-md: 0 2px 4px rgba(20, 24, 31, 0.05), 0 8px 18px rgba(20, 24, 31, 0.08);
    --shadow-lg: 0 10px 24px rgba(20, 24, 31, 0.1), 0 20px 48px rgba(20, 24, 31, 0.14);
    --shadow-up: 0 -6px 24px rgba(20, 24, 31, 0.1);
    /* Velo traslucido per barre sticky con sfocatura (frosted) */
    --surface-veil: rgba(255, 255, 255, 0.85);
    --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* ── Rifinitura di tema: profondità, movimento, dettagli ─────────────────────
   Solo token (ombre e raggi definiti sopra), nessun colore scritto qui sotto.
   Ogni movimento introdotto si spegne nel blocco prefers-reduced-motion in coda
   alla sezione. */

/* Movimenti condivisi (li usano anche i CSS di pagina) */
@keyframes entra-dal-basso {
    from {
        opacity: 0;
        transform: translateY(0.4rem);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes respiro-anello {
    0%, 100% {
        box-shadow: 0 0 0 0.2rem var(--accent-soft);
    }
    50% {
        box-shadow: 0 0 0 0.45rem var(--accent-soft);
    }
}

/* Card: elevazione morbida oltre il bordo, angoli più generosi del default */
.card {
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
}

.card > .card-header:first-child {
    border-radius: calc(var(--radius-lg) - 1px) calc(var(--radius-lg) - 1px) 0 0;
}

.card > .card-footer:last-child {
    border-radius: 0 0 calc(var(--radius-lg) - 1px) calc(var(--radius-lg) - 1px);
}

.card-title {
    font-weight: 600;
}

/* Titolo di pagina (CmsPageHeader) */
.content-header h1 {
    font-weight: 700;
    letter-spacing: -0.01em;
}

/* Bottoni e campi: raggio del tema e feedback tattile alla pressione */
.btn {
    border-radius: var(--radius);
    transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease,
        box-shadow 0.15s ease, transform 0.1s ease, filter 0.15s ease;
}

.btn:not(:disabled):not(.disabled):active {
    transform: scale(0.97);
}

.form-control,
.custom-select,
.input-group-text {
    border-radius: var(--radius);
}

/* Modali: pannello staccato dal fondo, entrata più naturale del solo fade */
.modal-content {
    border: 0;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
}

.modal-header {
    border-top-left-radius: var(--radius-lg);
    border-top-right-radius: var(--radius-lg);
}

.modal-footer {
    border-bottom-left-radius: var(--radius-lg);
    border-bottom-right-radius: var(--radius-lg);
}

.modal.fade .modal-dialog {
    transform: translateY(0.75rem) scale(0.98);
    transition: transform 0.25s var(--ease-out);
}

.modal.show .modal-dialog {
    transform: none;
}

/* Menu a tendina: ombra a strati, voci col colore del tema */
.dropdown-menu {
    border-color: var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    animation: entra-dal-basso 0.15s var(--ease-out);
}

.dropdown-item {
    transition: background-color 0.12s ease, color 0.12s ease;
}

.dropdown-item:hover,
.dropdown-item:focus {
    background-color: var(--accent-soft);
    color: var(--text);
}

.dropdown-item.active,
.dropdown-item:active {
    background-color: var(--accent);
    color: var(--surface);
}

/* Tabelle: testata senza doppio filo, riga che risponde al passaggio */
.table thead th {
    border-top: 0;
}

.table-hover tbody tr {
    transition: background-color 0.12s ease;
}

.table-hover tbody tr:hover {
    background-color: var(--surface-2);
}

/* Barre di scorrimento discrete, sul token dei bordi */
html {
    scrollbar-color: var(--line) transparent;
}

::-webkit-scrollbar {
    width: 0.6rem;
    height: 0.6rem;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: var(--line);
    border-radius: 999px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--muted);
}

@media (prefers-reduced-motion: reduce) {
    .btn,
    .dropdown-item,
    .table-hover tbody tr,
    .modal.fade .modal-dialog {
        transition: none;
    }

    .modal.fade .modal-dialog,
    .btn:not(:disabled):not(.disabled):active {
        transform: none;
    }

    .dropdown-menu {
        animation: none;
    }
}

.captcha-image {
    border: 1px solid var(--line);
    border-radius: var(--radius);
    cursor: pointer;
    max-width: 100%;
}

/* --- Stili di pagina del progetto (dopo il design system CMS) --- */

/* Anagrafica assistito (card condivisa + blocco ricetta) */
.ricettario-anagrafica-card.ricettario-anagrafica-incomplete {
    border-width: 2px;
    box-shadow: 0 0 0 0.05rem rgba(255, 193, 7, 0.35);
}

.ricettario-anagrafica-card .card-footer {
    background-color: var(--surface-2);
}

.ricettario-anagrafica-card .ts-wrapper.single .ts-control {
    min-height: calc(1.5em + 0.4rem + 2px);
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
    font-size: 0.875rem;
}

#fieldset-prescrizione[disabled],
.ricettario-prescrizione-locked {
    opacity: 0.55;
    pointer-events: none;
}

#fieldset-prescrizione[disabled] .select2-container,
#fieldset-prescrizione[disabled] .ts-wrapper {
    opacity: 0.85;
}

/* Omnibar callout condiviso (farmaci / prestazioni) */
.omnibar-search-callout {
    background: linear-gradient(180deg, var(--info-soft) 0%, var(--paper) 100%);
    border: 1px solid var(--info-soft);
    border-radius: 0.35rem;
    padding: 0.85rem 1rem 0.35rem;
    margin-bottom: 1rem;
}

.omnibar-search-callout > .form-group {
    margin-bottom: 0.75rem;
}

.omnibar-search-callout .omnibar-search-label {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 0.4rem;
}

.omnibar-search-callout .omnibar-search-label .omnibar-search-hint {
    font-weight: 400;
    font-size: 0.85rem;
    color: var(--muted);
}

.omnibar-search-callout .ts-wrapper.single .ts-control {
    min-height: 42px;
    border-color: var(--line);
    box-shadow: none;
}

.omnibar-search-callout .ts-wrapper.single.focus .ts-control,
.omnibar-search-callout .ts-wrapper.single.dropdown-active .ts-control {
    border-color: var(--accent);
    box-shadow: 0 0 0 0.2rem var(--accent-soft);
}

.omnibar-search-callout .ts-wrapper .ts-control input {
    font-size: 0.95rem;
}

.omnibar-dropdown-message {
    padding: 0.75rem 1rem;
    color: var(--muted);
    font-size: 0.9rem;
}

/* Dashboard medico: KPI in header card pazienti */
.dashboard-medico-pazienti-header {
    overflow: visible;
}

.dashboard-medico-pazienti-header::after {
    display: none;
}

.dashboard-medico-pazienti-header-meta {
    flex: 1 1 auto;
    min-width: 0;
}

.assistito-labeled-card.dashboard-medico-pazienti-card .nav-tabs .assistito-card-tabs-meta {
    pointer-events: auto;
    width: 100%;
    display: flex;
    align-items: center;
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
}

.assistito-labeled-card.dashboard-agenda-card .nav-tabs {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    width: 100%;
}

.dashboard-agenda-header-item {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
}

.dashboard-agenda-header-meta {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    width: 100%;
    min-height: 2.35rem;
    padding: 0 0.35rem 0 0.5rem;
}

.dashboard-agenda-nav {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    justify-self: start;
}

.dashboard-agenda-nav .btn {
    padding: 0.1rem 0.4rem;
    line-height: 1.2;
}

.dashboard-agenda-month-label {
    text-align: center;
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--text);
    line-height: 1.2;
    min-width: 0;
    justify-self: center;
}

.dashboard-agenda-expand {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: end;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 0.25rem;
    color: var(--muted);
    text-decoration: none;
}

.dashboard-agenda-expand:hover {
    background: var(--surface-2);
    color: var(--text);
    text-decoration: none;
}

.assistito-labeled-card .nav-tabs .assistito-card-tabs-label--link {
    pointer-events: auto;
    cursor: pointer;
    text-decoration: none;
}

.assistito-labeled-card .nav-tabs .assistito-card-tabs-label--link:hover {
    background: var(--line);
    color: var(--text);
}

.dashboard-medico-pazienti-header-top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    width: 100%;
}

.dashboard-medico-kpi {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    gap: 0;
}

.dashboard-medico-kpi-item {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.3rem 0.4rem;
    min-width: 0;
    padding: 0 0.85rem;
    border-right: 1px solid var(--line);
}

.dashboard-medico-kpi-item:first-child {
    padding-left: 0.25rem;
}

.dashboard-medico-kpi-item:last-child {
    border-right: none;
    padding-right: 0.5rem;
}

.dashboard-medico-kpi-label {
    font-size: 0.72rem;
    font-weight: 400;
    color: var(--muted);
    line-height: 1.2;
    white-space: nowrap;
}

.dashboard-medico-kpi-value {
    font-weight: 700;
    font-size: 1rem;
    color: var(--accent-strong);
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.dashboard-medico-sync-status {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.72rem;
    font-weight: 400;
}

.dashboard-medico-sync-status .badge {
    font-size: 0.65rem;
    font-weight: 500;
    padding: 0.15em 0.45em;
    vertical-align: baseline;
}

.dashboard-medico-sync-tools {
    flex: 0 0 auto;
    margin-left: auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.dashboard-medico-add-btn {
    white-space: nowrap;
}

.dashboard-medico-sync-btn {
    width: 1.65rem;
    height: 1.65rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    border-radius: 0.25rem;
}

.dashboard-medico-sync-btn i {
    font-size: 0.7rem;
    margin: 0;
    line-height: 1;
}

@media (max-width: 767.98px) {
    .dashboard-medico-kpi-item {
        border-right: 0;
        padding: 0 0.75rem 0 0;
    }
}

/* Dashboard medico: barra assistito selezionato */
.dashboard-assistito-bar > .card-header {
    display: flex;
    align-items: center;
}

.dashboard-assistito-bar-title {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.5rem 0.65rem;
}

.dashboard-assistito-bar > .card-header .card-title {
    float: none;
    width: auto;
}

.dashboard-assistito-picker {
    max-width: 28rem;
}

.dashboard-assistito-deselect {
    font-weight: 600;
    font-size: 0.78rem;
    letter-spacing: 0.01em;
    border-radius: 999px;
    padding: 0.18rem 0.7rem;
    color: var(--muted);
    border: 1px solid var(--line);
    background: var(--surface);
    box-shadow: none;
}

.dashboard-assistito-deselect:hover,
.dashboard-assistito-deselect:focus {
    color: #fff;
    background: var(--muted);
    border-color: var(--muted);
}

.dashboard-assistito-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
}

.dashboard-assistito-actions .dashboard-assistito-action {
    font-weight: 600;
    font-size: 0.8125rem;
    letter-spacing: 0.01em;
    white-space: nowrap;
    border: 0;
    border-radius: 0.4rem;
    padding: 0.4rem 0.8rem;
    color: #fff;
    box-shadow: var(--shadow-sm);
    transition: transform 0.12s ease, box-shadow 0.12s ease, filter 0.12s ease;
}

.dashboard-assistito-actions .dashboard-assistito-action:hover,
.dashboard-assistito-actions .dashboard-assistito-action:focus {
    color: #fff;
}

.dashboard-assistito-actions a.dashboard-assistito-action:hover,
.dashboard-assistito-actions a.dashboard-assistito-action:focus {
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
    filter: brightness(1.06);
}

.dashboard-assistito-actions .dashboard-assistito-action:disabled,
.dashboard-assistito-actions .dashboard-assistito-action[aria-disabled="true"] {
    opacity: 0.55;
    box-shadow: none;
    transform: none;
    filter: none;
}

.dashboard-assistito-actions .is-scheda {
    background: var(--info);
}

.dashboard-assistito-actions .is-farmaci {
    background: var(--accent);
}

.dashboard-assistito-actions .is-prestazioni {
    background: var(--success);
}

.dashboard-assistito-actions .is-ssn {
    background: var(--warning);
}

.dashboard-followup-placeholder {
    min-height: 8rem;
}

.dashboard-followup-card .dashboard-followup-gruppi {
    flex: 1 1 auto;
    min-height: 0;
    max-height: 22rem;
    overflow-y: auto;
}

.dashboard-followup-card .dashboard-followup-item-list {
    gap: 0.4rem;
}

.agenda-fc-wrap {
    min-height: 12rem;
}

.agenda-fc-wrap.agenda-fc-loading {
    opacity: 0.7;
    pointer-events: none;
}

.agenda-fc-expand {
    position: absolute;
    top: 0.3rem;
    right: 0.3rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    border: 1px solid var(--line);
    border-radius: 0.25rem;
    background: var(--surface);
    color: var(--muted);
}

.agenda-fc-expand:hover {
    background: var(--surface-2);
    color: var(--text);
    text-decoration: none;
}

.agenda-fc .fc-toolbar-title {
    font-size: 1.15rem;
    line-height: 1.25;
    margin: 0;
    text-transform: capitalize;
}

.agenda-fc .fc-col-header-cell-cushion {
    text-transform: capitalize;
}

.agenda-fc-wrap .fc.fc-theme-bootstrap .fc-toolbar.fc-header-toolbar {
    margin-bottom: 0.5rem;
}

.agenda-fc-wrap .fc.fc-theme-bootstrap .fc-toolbar-title {
    font-size: 1.15rem;
    line-height: 1.25;
    margin: 0;
    text-transform: capitalize;
}

.agenda-fc-compact .fc.fc-theme-bootstrap .fc-toolbar.fc-header-toolbar {
    margin-bottom: 0.15rem;
    min-height: 0;
}

.agenda-fc-compact .fc-toolbar-chunk:empty {
    display: none;
}

.agenda-fc-compact .fc.fc-theme-bootstrap .fc-toolbar-title {
    font-size: 0.95rem;
    font-weight: 600;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    text-transform: capitalize;
}

.agenda-fc-compact .fc.fc-theme-bootstrap .fc-button,
.agenda-fc-compact .fc.fc-theme-bootstrap .btn {
    padding: 0.1rem 0.35rem;
    font-size: 0.75rem;
    line-height: 1.15;
    height: auto;
}

.agenda-fc-compact .fc-toolbar-chunk {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.agenda-fc-compact .fc-col-header-cell-cushion {
    padding: 0.2rem 0.25rem;
}

.agenda-fc-compact .fc {
    font-size: 0.85rem;
}

.agenda-fc-compact .fc-daygrid-day-frame {
    min-height: 3.5rem !important;
}

.agenda-fc-compact .fc-daygrid-day-top {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
}

.agenda-fc-compact .fc-daygrid-day-number {
    padding: 0.35rem 0.4rem;
    float: none;
}

.agenda-fc-compact .fc-daygrid-body,
.agenda-fc-compact .fc-daygrid-body table,
.agenda-fc-compact .fc-scrollgrid-sync-table {
    height: auto !important;
}

.agenda-fc-compact .fc-daygrid-day-events,
.agenda-fc-compact .fc-daygrid-day-bottom {
    display: none;
}

.agenda-fc-compact .fc-daygrid-body-unbalanced .fc-daygrid-day-events {
    min-height: 0 !important;
}

.agenda-fc-day-counts {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.2rem;
    padding: 0.35rem 0.3rem;
}

.agenda-fc-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    padding: 0.05rem 0.38rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.4;
}

.agenda-fc-count-visita {
    background: var(--info);
    color: #fff;
}

.agenda-fc-count-impegno {
    background: var(--warning);
    color: #fff;
}

.agenda-fc-legend {
    font-size: 0.75rem;
    color: var(--muted);
}

.agenda-fc-legend-dot {
    display: inline-block;
    width: 0.65rem;
    height: 0.65rem;
    padding: 0;
    min-width: 0;
    border-radius: 50%;
    vertical-align: middle;
    margin-right: 0.2rem;
}

.agenda-fc .fc-event {
    cursor: pointer;
}

/* Specificita' alzata apposta: la regola di FullCalendar per "oggi" (.fc .fc-daygrid-day.fc-day-today)
   ha lo stesso numero di classi e vincerebbe per ordine di caricamento, cancellando la selezione
   quando il giorno selezionato e' anche oggi. */
.agenda-fc-wrap .fc .fc-daygrid-day.is-selected {
    background: var(--accent-soft);
    box-shadow: inset 0 0 0 2px var(--accent);
}

.agenda-fc-wrap.agenda-hide-visite .agenda-fc-visita {
    display: none !important;
}

.agenda-fc-wrap.agenda-hide-impegni .agenda-fc-impegno {
    display: none !important;
}

/* ── Tema FullCalendar (tutte le modalita') ─────────────────────────────────
   Le variabili --fc-* sono definite dal plugin su :root: ridefinite qui prendono i
   token del tema. Gli eventi arrivano dal feed senza colori e si vestono per classe. */

.agenda-fc-wrap .fc {
    --fc-border-color: var(--line);
    --fc-page-bg-color: var(--surface);
    --fc-neutral-bg-color: var(--surface-2);
    --fc-neutral-text-color: var(--muted);
    /* Piu' leggero della selezione (--accent-soft), cosi' i due stati non si confondono. */
    --fc-today-bg-color: var(--surface-2);
    --fc-now-indicator-color: var(--danger);
    --fc-highlight-color: var(--accent-soft);
    --fc-non-business-color: var(--surface-2);
    --fc-event-bg-color: var(--info);
    --fc-event-border-color: var(--info);
    --fc-event-text-color: var(--surface);
    --fc-more-link-bg-color: var(--surface-2);
    --fc-more-link-text-color: var(--accent);
    --fc-bg-event-color: var(--surface-2);
    --fc-bg-event-opacity: 1;
    --fc-small-font-size: 0.8rem;
}

.agenda-fc-wrap .fc .fc-event.agenda-fc-visita {
    background-color: var(--info);
    border-color: var(--info);
    color: var(--surface);
}

.agenda-fc-wrap .fc .fc-event.agenda-fc-impegno {
    background-color: var(--warning);
    border-color: var(--warning);
    color: var(--ink);
}

.agenda-fc-wrap .fc .fc-event.agenda-fc-visita-noshow {
    background-color: var(--muted);
    border-color: var(--muted);
    color: var(--surface);
}

.agenda-fc-wrap .fc .fc-event.agenda-fc-visita-noshow .agenda-fc-ev-nome {
    text-decoration: line-through;
}

/* In vista Mese gli eventi con orario sono un pallino piu' testo: il pallino prende il
   colore dal bordo, quindi la classe deve arrivare fin li'. */
.agenda-fc-wrap .fc .fc-daygrid-dot-event.agenda-fc-visita,
.agenda-fc-wrap .fc .fc-daygrid-dot-event.agenda-fc-impegno,
.agenda-fc-wrap .fc .fc-daygrid-dot-event.agenda-fc-visita-noshow {
    background-color: transparent;
    border-color: transparent;
    color: var(--text);
}

.agenda-fc-wrap .fc .fc-daygrid-dot-event:hover {
    background-color: var(--surface-2);
}

.agenda-fc-wrap .fc .agenda-fc-visita .fc-daygrid-event-dot { border-color: var(--info); }
.agenda-fc-wrap .fc .agenda-fc-impegno .fc-daygrid-event-dot { border-color: var(--warning); }
.agenda-fc-wrap .fc .agenda-fc-visita-noshow .fc-daygrid-event-dot { border-color: var(--muted); }

.agenda-fc-wrap .fc .fc-bg-event.agenda-fc-chiusura {
    background: repeating-linear-gradient(135deg, var(--surface-2) 0 6px, var(--line) 6px 7px);
    opacity: 1;
}

.agenda-fc-wrap .fc .fc-bg-event.agenda-fc-chiusura .fc-event-title,
.agenda-fc-chiusura-label {
    margin: 0.25rem 0.35rem;
    font-size: 0.7rem;
    font-weight: 600;
    font-style: normal;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--muted);
}

.agenda-fc-wrap .fc .fc-col-header-cell-cushion,
.agenda-fc-wrap .fc .fc-daygrid-day-number {
    color: var(--text);
    text-decoration: none;
}

.agenda-fc-wrap .fc .fc-col-header-cell-cushion {
    padding: 0.4rem 0.25rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--muted);
}

.agenda-fc-wrap .fc .fc-daygrid-day-number {
    padding: 0.3rem 0.45rem;
    font-size: 0.875rem;
    font-variant-numeric: tabular-nums;
}

.agenda-fc-wrap .fc .fc-day-today .fc-daygrid-day-number {
    font-weight: 700;
    color: var(--accent-strong);
}

.agenda-fc-wrap .fc .fc-day-other .fc-daygrid-day-number {
    color: var(--muted);
    opacity: 0.7;
}

.agenda-fc-wrap .fc .fc-timegrid-slot-label-cushion,
.agenda-fc-wrap .fc .fc-timegrid-axis-cushion {
    font-size: 0.7rem;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
}

.agenda-fc-wrap .fc .fc-daygrid-more-link {
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.05rem 0.35rem;
    border-radius: var(--radius);
}

.agenda-fc-wrap .fc .fc-popover {
    border-color: var(--line);
    border-radius: var(--radius);
    box-shadow: 0 0.35rem 1rem var(--line);
}

.agenda-fc-wrap .fc .fc-popover-header {
    background: var(--surface-2);
    color: var(--text);
    font-size: 0.8rem;
    font-weight: 600;
}

/* ── Modalita' completa (calendar.php e Calendari medici) ──────────────────── */

.agenda-fc-full .fc .fc-scrollgrid {
    border-radius: var(--radius);
    overflow: hidden;
}

.agenda-fc-full .fc .fc-timegrid-slot {
    height: 2rem;
}

.agenda-fc-full .fc .fc-timegrid-col.is-selected,
.agenda-fc-full .fc .fc-col-header-cell.is-selected {
    background: var(--accent-soft);
    box-shadow: inset 0 -3px 0 var(--accent);
}

.agenda-fc-full .fc .fc-event {
    border-radius: var(--radius);
}

.agenda-fc-ev {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    min-width: 0;
    padding: 0.1rem 0.3rem;
    line-height: 1.25;
    overflow: hidden;
}

.agenda-fc-ev-riga {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    min-width: 0;
}

.agenda-fc-ev-ora {
    flex: 0 0 auto;
    font-size: 0.7rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.agenda-fc-ev-nome {
    min-width: 0;
    font-size: 0.8rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.agenda-fc-ev-tipo,
.agenda-fc-ev-sede {
    font-size: 0.7rem;
    opacity: 0.85;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.agenda-fc-ev-stato {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.agenda-fc-full .fc .fc-daygrid-dot-event .agenda-fc-ev {
    flex-direction: row;
    align-items: center;
    gap: 0.3rem;
    padding: 0.1rem 0.2rem;
}

.agenda-fc-full .fc .fc-daygrid-dot-event .agenda-fc-ev-nome {
    font-weight: 500;
}

/* Barra: frecce e Oggi, titolo, selettore di vista. Sostituisce la toolbar del plugin. */
.agenda-fc-bar {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.5rem 0.75rem;
    position: relative;
    margin-bottom: 0.65rem;
    padding: 0.15rem 0.15rem 0.65rem;
    border-bottom: 1px solid var(--line);
}

.agenda-fc-bar-nav {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.agenda-fc-bar-nav .btn {
    min-width: 2rem;
    min-height: 2rem;
}

.agenda-fc-bar-title {
    margin: 0;
    min-width: 0;
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.25;
    text-align: center;
    text-transform: capitalize;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.agenda-fc-views {
    display: inline-flex;
    padding: 0.15rem;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--surface-2);
}

.agenda-fc-view {
    min-height: 1.75rem;
    padding: 0.2rem 0.75rem;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--muted);
    font: inherit;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.agenda-fc-view:hover {
    color: var(--text);
}

.agenda-fc-view[aria-pressed="true"] {
    background: var(--accent);
    color: var(--surface);
}

.agenda-fc-view:focus-visible,
.agenda-fc-bar-nav .btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* Caricamento: una linea che scorre sotto la barra, oltre all'opacita' del wrap. */
.agenda-fc-loading .agenda-fc-bar::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
    background-size: 40% 100%;
    background-repeat: no-repeat;
    animation: agenda-fc-progress 1.2s ease-in-out infinite;
}

@keyframes agenda-fc-progress {
    from { background-position: -40% 0; }
    to { background-position: 140% 0; }
}

.agenda-fc-scroll {
    overflow-x: auto;
}

/* La settimana ha bisogno di larghezza: sotto i 40rem si scorre in orizzontale
   e il plugin, che si misura sul contenitore, non schiaccia le colonne. */
.agenda-fc-full.is-view-week .agenda-fc {
    min-width: 40rem;
}

.agenda-fc-error {
    margin-top: 0.75rem;
}

.agenda-fc-error[hidden] {
    display: none;
}

/* Conteggi per giorno: gli stessi della dashboard, ma qui solo su schermo stretto,
   dove il testo degli eventi non ci sta. Sopra, restano gli eventi. */
.agenda-fc-full .agenda-fc-day-counts {
    display: none;
}

@media (max-width: 767.98px) {
    .agenda-fc-bar {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .agenda-fc-views {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .agenda-fc-view {
        text-align: center;
    }

    .agenda-fc-full .fc .fc-dayGridMonth-view .agenda-fc-day-counts {
        display: flex;
        padding: 0.2rem 0.25rem;
    }

    .agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-day-events,
    .agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-day-bottom {
        display: none;
    }

    .agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-day-top {
        display: flex;
        flex-direction: row;
        align-items: flex-start;
        justify-content: space-between;
    }

    .agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-day-frame {
        min-height: 3.25rem;
    }

    .agenda-fc-full .fc .fc-daygrid-day-number {
        padding: 0.25rem 0.35rem;
    }
}

/* ── Vista completa: griglia mese viva ──────────────────────────────────────
   Solo su .agenda-fc-full (calendar.php e Calendari medici): il mini-calendario
   della dashboard resta com'è. */

.agenda-fc-wrap.agenda-fc-full {
    border-left: 3px solid var(--accent);
}

/* La barra resta a portata quando la griglia supera lo schermo */
.agenda-fc-full .agenda-fc-bar {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--surface-veil);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}

/* Weekend e giorni fuori mese si distinguono a colpo d'occhio */
.agenda-fc-full .fc .fc-daygrid-day.fc-day-sat,
.agenda-fc-full .fc .fc-daygrid-day.fc-day-sun {
    background-color: var(--paper);
}

.agenda-fc-full .fc .fc-daygrid-day.fc-day-other {
    background-color: var(--surface-2);
}

/* Il click sulla cella seleziona il giorno (pannello Giornata): la cella lo dice */
.agenda-fc-full .fc .fc-daygrid-day {
    transition: background-color 0.12s ease;
    cursor: pointer;
}

.agenda-fc-full .fc .fc-daygrid-day:hover {
    background-color: var(--accent-soft);
}

/* «Oggi» nel cerchietto pieno: riconoscibile anche accanto alla selezione */
.agenda-fc-full .fc .fc-day-today .fc-daygrid-day-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.6rem;
    height: 1.6rem;
    margin: 0.15rem;
    padding: 0 0.35rem;
    border-radius: 999px;
    background: var(--accent);
    color: var(--surface);
    font-weight: 700;
}

/* Celle più alte sui monitor: la griglia riempie la pagina invece di lasciarla vuota.
   Sotto i 768px vale il minimo compatto della sezione qui sopra. */
@media (min-width: 768px) {
    .agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-day-frame {
        min-height: clamp(5.5rem, 11vh, 8.5rem);
    }
}

/* Eventi del mese a chip pieno: il puntino si perdeva sul bianco.
   La fascia di colore è un inset per non cambiare il box del plugin. */
.agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-dot-event {
    background-color: var(--info-soft);
    border-color: transparent;
    box-shadow: inset 3px 0 0 var(--info);
    border-radius: var(--radius);
    margin: 0.1rem 0.25rem;
    padding: 0.1rem 0.3rem 0.1rem 0.45rem;
    color: var(--text);
}

.agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-dot-event.agenda-fc-impegno {
    background-color: var(--warning-soft);
    box-shadow: inset 3px 0 0 var(--warning);
}

.agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-dot-event.agenda-fc-visita-noshow {
    background-color: var(--surface-2);
    box-shadow: inset 3px 0 0 var(--muted);
    color: var(--muted);
}

.agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-dot-event:hover {
    filter: brightness(0.96);
}

.agenda-fc-full .fc .fc-dayGridMonth-view .fc-daygrid-event-dot {
    display: none;
}

@media (prefers-reduced-motion: reduce) {
    .agenda-fc-loading .agenda-fc-bar::after {
        animation: none;
        background: var(--accent);
        background-size: 100% 100%;
    }

    .agenda-fc-view {
        transition: none;
    }

    .agenda-fc-full .fc .fc-daygrid-day {
        transition: none;
    }
}

.prenota-code-dictable {
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: 0.28em;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    text-align: center;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: 0.5rem;
    padding: 0.75rem 1rem;
    user-select: all;
}

/* Scheda assistito: patient banner */
.content-header.assistito-content-header {
    padding-top: 0.35rem;
    padding-bottom: 0.1rem;
}

.content-wrapper > .content-header.assistito-content-header + .content {
    padding-top: 0.35rem;
}

.ricettario-patient-banner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.35rem 0.85rem;
    padding: 0;
}

.ricettario-patient-banner-main {
    display: flex;
    align-items: center;
    min-width: 0;
    gap: 0.6rem;
}

.ricettario-patient-avatar {
    flex: 0 0 auto;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent) 0%, var(--accent-strong) 100%);
    color: var(--surface);
    font-weight: 600;
    font-size: 0.82rem;
    letter-spacing: 0.02em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--accent-soft);
}

.ricettario-patient-banner-text {
    min-width: 0;
}

.ricettario-patient-name-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.5rem;
}

.ricettario-patient-name {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--text);
}

.ricettario-patient-name-row .badge {
    font-size: 0.68rem;
    font-weight: 600;
    padding: 0.2em 0.45em;
}

.ricettario-patient-cf {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.04em;
    color: var(--muted);
    padding: 0.1rem 0.55rem;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--surface-2);
}

.ricettario-patient-incarico {
    font-size: 0.75rem;
    margin-top: 0.05rem;
    line-height: 1.2;
}

.ricettario-patient-banner-actions {
    flex: 0 0 auto;
    margin-left: auto;
}

/* Card anagrafica: identità a testo */
.ricettario-anagrafica-identity-compact {
    margin-bottom: 0.85rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--line);
}

.ricettario-anagrafica-identity {
    margin-bottom: 0.15rem;
}

.ricettario-anagrafica-field {
    margin-bottom: 0.45rem;
}

.ricettario-anagrafica-label {
    display: block;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 0.15rem;
}

.ricettario-anagrafica-value {
    display: block;
    font-size: 0.95rem;
    color: var(--text);
    line-height: 1.35;
    word-break: break-word;
}

.ricettario-anagrafica-residenza,
.ricettario-anagrafica-contatti {
    margin-top: 0.1rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--line);
}

.ricettario-anagrafica-residenza-title {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--muted);
    margin-bottom: 0.4rem;
}

.ricettario-anagrafica-card .card-body {
    padding: 0.7rem 1rem 0.45rem;
}

.ricettario-anagrafica-residenza .form-group,
.ricettario-anagrafica-contatti .form-group {
    margin-bottom: 0.45rem;
}

.ricettario-anagrafica-residenza .row > [class*="col-"]:last-child .form-group,
.ricettario-anagrafica-contatti .row > [class*="col-"]:last-child .form-group {
    margin-bottom: 0;
}

.ricettario-anagrafica-residenza label,
.ricettario-anagrafica-contatti label {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 0.12rem;
}

.ricettario-anagrafica-residenza .form-control,
.ricettario-anagrafica-contatti .form-control {
    height: calc(1.5em + 0.4rem + 2px);
    padding: 0.2rem 0.5rem;
    font-size: 0.875rem;
}

.ricettario-anagrafica-residenza .form-text,
.ricettario-anagrafica-contatti .form-text {
    margin-top: 0.15rem;
    font-size: 0.75rem;
}

/* Domicilio: la casella «come residenza» e' una scelta, non l'etichetta maiuscola di un campo */
.ricettario-anagrafica-domicilio-toggle {
    margin-bottom: 0.45rem;
}

.ricettario-anagrafica-residenza .ricettario-anagrafica-domicilio-toggle .custom-control-label {
    font-size: 0.875rem;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
    color: var(--text);
}

.ricettario-anagrafica-domicilio-campi {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.ricettario-anagrafica-card .card-footer {
    padding: 0.4rem 1rem;
}

/* Azioni rapide */
.ricettario-azioni-label {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 0.4rem;
}

.ricettario-azioni-btn {
    text-align: left;
    font-weight: 500;
}

.ricettario-azioni-btn + .ricettario-azioni-btn {
    margin-top: 0.4rem;
}

/* Accents card (allineati a dashboard / tab-ricetta) */
.card.ricettario-anagrafica-card:not(.ricettario-anagrafica-incomplete),
.card.ricettario-azioni-card,
.card.assistito-elenco-card,
.card.assistito-cartella-card,
.card.dashboard-medico-pazienti-card,
.card.dashboard-agenda-card,
.card.dashboard-followup-card,
.card.dashboard-news-card {
    border-top: 1px solid var(--line);
    border-left: 3px solid var(--accent);
}

.dashboard-news-item {
    display: flex;
    gap: 0.75rem;
}

.dashboard-news-thumb {
    width: 52px;
    height: 52px;
    object-fit: cover;
    flex-shrink: 0;
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
}

.dashboard-news-body {
    min-width: 0;
    flex: 1;
}

.dashboard-news-tags .badge {
    font-size: 0.7rem;
    margin-right: 0.25rem;
}

.dashboard-news-cover {
    max-height: 360px;
    object-fit: cover;
}

.dashboard-news-detail-body img {
    max-width: 100%;
    height: auto;
}

.dashboard-news-detail-body table {
    max-width: 100%;
}

.card.assistito-cartella-card {
    border-left-color: var(--info);
}

.card.assistito-note-card {
    border-top: 1px solid var(--line);
    border-left: 3px solid var(--muted);
}

.card.ricettario-anagrafica-card.ricettario-anagrafica-incomplete {
    border-left-color: var(--warning);
}

/*
 * Linguette delle card con etichetta: una famiglia sola, per classe. Dati essenziali, quadro clinico e
 * ultime prescrizioni hanno lo stesso comportamento; cambia solo il colore della linguetta attiva.
 * Prima la regola elencava due card, e la terza (Dati essenziali) ereditava da AdminLTE linguette
 * bianche su testata bianca, con un bordo grigio in alto come unico segno: non si capiva che
 * fossero linguette. Lo stato non è solo colore: l'attiva ha anche il peso e la barra inferiore.
 */
.assistito-labeled-card.card-outline-tabs > .card-header .nav-tabs {
    padding-top: 0.3rem;
}

.assistito-labeled-card.card-outline-tabs > .card-header a.nav-link {
    font-size: 0.875rem;
    color: var(--muted);
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-bottom-color: transparent;
    margin-right: 0.2rem;
    transition: background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.assistito-labeled-card.card-outline-tabs > .card-header a.nav-link:hover {
    color: var(--text);
    background: var(--accent-soft);
}

.assistito-labeled-card.card-outline-tabs > .card-header a.nav-link:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.assistito-labeled-card.card-outline-tabs > .card-header a.nav-link.active {
    background: var(--surface);
    font-weight: 600;
    color: var(--accent);
    border-color: var(--line);
    box-shadow: inset 0 -2px 0 var(--accent);
}

/* con le linguette sul fondo grigio, il titolo della card torna a essere un titolo e non una di loro */
.assistito-labeled-card.card-outline-tabs > .card-header .nav-tabs .assistito-card-tabs-label {
    background: transparent;
    border-right: 0;
}

.assistito-elenco-card.card-outline-tabs > .card-header a.nav-link.active.assistito-ricette-tab-prestazioni {
    color: var(--success);
    box-shadow: inset 0 -2px 0 var(--success);
}

.assistito-cartella-card.card-outline-tabs > .card-header a.nav-link.active {
    color: var(--info);
    box-shadow: inset 0 -2px 0 var(--info);
}

.assistito-labeled-card .nav-tabs .assistito-card-tabs-label {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text);
    cursor: default;
    pointer-events: none;
    background: var(--surface-2);
    border: 0;
    border-right: 1px solid var(--line);
    border-radius: 0;
    margin: 0;
    padding-left: 1rem;
    padding-right: 1rem;
    opacity: 1;
}

/* Le linguette devono vedersi tutte: vanno a capo, non scorrono oltre il bordo della card */
.assistito-labeled-card .nav-tabs {
    flex-wrap: wrap;
    row-gap: 0.15rem;
}

.assistito-labeled-card .nav-tabs .nav-link {
    white-space: nowrap;
}

/* tolto il bordo fuso col corpo, la separazione dal card-body va data qui */
.assistito-labeled-card.card-outline-tabs > .card-header + .card-body {
    border-top: 1px solid var(--line);
}

/* Riepilogo in testa alla scheda Anagrafica: si legge prima del form. Disegnato sul più stretto */
.assistito-essenziali-riepilogo {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
    gap: 0.6rem 1.25rem;
    margin: 0 0 1rem;
    padding: 0.75rem 1rem;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--radius);
}

.assistito-essenziali-voce {
    min-width: 0;
}

.assistito-essenziali-voce-larga {
    grid-column: 1 / -1;
}

.assistito-essenziali-riepilogo dt {
    margin-bottom: 0.1rem;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--muted);
}

.assistito-essenziali-riepilogo dd {
    margin: 0;
    font-size: 1rem;
    color: var(--text);
    overflow-wrap: anywhere;
}

.assistito-essenziali-nota,
.assistito-essenziali-email {
    display: block;
}

.assistito-essenziali-nota {
    font-size: 0.8rem;
    color: var(--muted);
}

.assistito-anagrafica-toolbar {
    display: flex;
    justify-content: flex-end;
    margin: 0 0 0.75rem;
}

.assistito-cartella-tab-count {
    font-weight: 600;
}

.assistito-quadro-pane-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

/* I modali della cartella condividono la classe cartella-modal: elencare gli id
   lasciava fuori ogni sezione nuova (e' successo a procedura e contatto_sanitario). */
.cartella-modal .ts-wrapper {
    width: 100%;
}

.cartella-modal .ts-control {
    min-height: calc(1.5em + 0.75rem + 2px);
}

.cartella-modal .pss-badge {
    font-size: 0.65rem;
    font-weight: 600;
    vertical-align: middle;
    padding: 0.12em 0.4em;
    letter-spacing: 0.03em;
}

.cartella-modal label .pss-badge {
    margin-left: 0.3rem;
}

.cartella-modal .pss-legend {
    color: var(--text);
}

.partial-date {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.2rem;
}

.partial-date-d,
.partial-date-m {
    width: 2.55rem;
    flex: 0 0 2.55rem;
    text-align: center;
    padding-left: 0.2rem;
    padding-right: 0.2rem;
}

.partial-date-y {
    width: 4.1rem;
    flex: 0 0 4.1rem;
    text-align: center;
    padding-left: 0.25rem;
    padding-right: 0.25rem;
}

.partial-date-sep {
    color: var(--muted);
    user-select: none;
    line-height: 1;
}

.partial-date-pick-wrap {
    position: relative;
    flex: 0 0 auto;
}

.partial-date-pick {
    padding: 0.25rem 0.45rem;
}

.partial-date-native {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    border: 0;
    padding: 0;
    margin: 0;
    pointer-events: none;
}

.assistito-quadro-stato {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
}

.assistito-quadro-stato label {
    font-size: 0.85rem;
}

.assistito-labeled-card .nav-tabs .assistito-card-tabs-label i {
    color: var(--muted);
    font-size: 0.85em;
}

.assistito-labeled-card .nav-tabs .nav-item:first-child .assistito-card-tabs-label {
    /* raccordata all'angolo della card (--radius-lg meno il bordo) */
    border-top-left-radius: calc(var(--radius-lg) - 1px);
}

.assistito-labeled-card .nav-tabs .assistito-card-tabs-meta {
    cursor: default;
    pointer-events: none;
    background: transparent;
    border: 0;
    opacity: 1;
}

.assistito-labeled-card .nav-tabs .assistito-card-tabs-meta .btn,
.assistito-labeled-card .nav-tabs .assistito-card-tabs-meta a {
    pointer-events: auto;
}

.assistito-labeled-card .nav-tabs .nav-item.assistito-elenco-expand-item {
    align-self: center;
}

.assistito-labeled-card .nav-tabs .assistito-elenco-expand {
    pointer-events: auto;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 0;
    opacity: 1;
    margin-top: 0.2rem;
    margin-right: 0.35rem;
    padding: 0.35rem 0.55rem;
    min-height: 1.75rem;
    min-width: 1.75rem;
    border-radius: 0.25rem;
    color: var(--muted);
}

.assistito-labeled-card .nav-tabs .assistito-elenco-expand:hover {
    background: var(--surface-2);
    color: var(--text);
}


.ricettario-anagrafica-card .nav-tabs {
    flex-wrap: wrap;
    align-items: center;
}

.assistito-anagrafica-header-alert-item {
    flex: 1 1 12rem;
    min-width: 0;
}

.assistito-anagrafica-header-alert {
    display: block;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--warning);
    cursor: default;
    pointer-events: none;
    background: transparent;
    border: 0;
    white-space: nowrap;
    padding-top: 0.4rem;
    padding-bottom: 0.4rem;
    opacity: 1;
}

.assistito-anagrafica-header-alert i {
    color: var(--warning);
}

/* Scadenza del codice STP/ENI o della tessera estera: scaduta blocca le ricette (rosso), vicina e' un avviso */
.assistito-anagrafica-scadenza-item .assistito-anagrafica-header-alert,
.assistito-anagrafica-scadenza-item .assistito-anagrafica-header-alert i {
    color: var(--danger);
}

.assistito-anagrafica-scadenza-item .assistito-anagrafica-header-alert-info,
.assistito-anagrafica-scadenza-item .assistito-anagrafica-header-alert-info i {
    color: var(--ink);
}

/* Con le linguette lo stato sta dentro la scheda Anagrafica: nelle altre non c'entra nulla */
.assistito-anagrafica-stato {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.75rem;
}

.assistito-anagrafica-stato-msg {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--warning);
}

/* ... e la linguetta si fa notare anche da un'altra linguetta */
.assistito-labeled-card.card-outline-tabs > .card-header a.nav-link.assistito-tab-incompleta {
    border-color: var(--warning);
    border-bottom-color: transparent;
}

.assistito-labeled-card.card-outline-tabs > .card-header a.nav-link.assistito-tab-incompleta.active {
    border-color: var(--warning);
}

.assistito-labeled-card.assistito-note-card .nav-tabs .assistito-note-actions {
    pointer-events: auto;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding-top: 0.3rem;
    padding-bottom: 0.3rem;
}

.assistito-note-card textarea {
    min-height: 8rem;
    resize: vertical;
    font-size: 0.875rem;
}

.assistito-note-count-row {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.25rem;
}

.assistito-note-count {
    font-size: 0.75rem;
}

.assistito-elenco-scroll {
    max-height: 22rem;
    overflow-y: auto;
}

.assistito-elenco-card .card-body {
    min-height: 16rem;
}

.assistito-nre-block {
    padding: 0.65rem 0.75rem;
    border-bottom: 1px solid var(--line);
    transition: background-color 0.12s ease, box-shadow 0.12s ease;
}

.assistito-nre-block:hover {
    background: var(--surface-2);
    box-shadow: inset 2px 0 0 var(--accent);
}

.assistito-nre-block:last-child {
    border-bottom: 0;
}

.assistito-nre-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.35rem 0.5rem;
    margin-bottom: 0.35rem;
}

.assistito-nre-head-main,
.assistito-nre-head-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.assistito-nre-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--text);
    word-break: break-all;
}

.assistito-nre-date {
    font-size: 0.75rem;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.assistito-nre-voci {
    margin: 0;
    padding: 0;
}

.assistito-nre-voci li {
    font-size: 0.8rem;
    line-height: 1.35;
    color: var(--muted);
    word-break: break-word;
    padding: 0.08rem 0;
}

.assistito-nre-qt {
    color: var(--muted);
    font-variant-numeric: tabular-nums;
    margin-left: 0.15rem;
}

.assistito-nre-fallback {
    font-size: 0.78rem;
    color: var(--muted);
    font-style: italic;
}

.assistito-empty-state {
    text-align: center;
    padding: 1.75rem 1rem;
    color: var(--muted);
}

.assistito-empty-state i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    background: var(--surface-2);
    font-size: 1.05rem;
    color: var(--muted);
    margin-bottom: 0.55rem;
}

.assistito-empty-state p {
    margin-bottom: 0.65rem;
    font-size: 0.88rem;
}

.assistito-empty-state-tab {
    min-height: 12rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.assistito-cartella-card .card-body {
    min-height: 16rem;
}

.certificato-riepilogo dt {
    font-weight: 600;
}

/* Pagina FSE assistito */
.card.assistito-fse-pss-card,
.card.assistito-fse-consulta-card,
.card.assistito-fse-ricerca-card {
    border-top: 1px solid var(--line);
    border-left: 3px solid var(--accent);
}

.card.assistito-fse-pss-card {
    border-left-color: var(--info);
}

.assistito-fse-callout {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    margin-bottom: 1rem;
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--warning-soft);
    border-left: 3px solid var(--warning);
    background: var(--warning-soft);
    border-radius: 0.25rem;
}

.assistito-fse-callout > i {
    color: var(--warning);
    margin-top: 0.12rem;
}

.assistito-fse-callout p {
    margin: 0;
    font-size: 0.88rem;
    color: var(--text);
    line-height: 1.4;
}

/* Sezione senza voci: nasconde la tabella e mostra la frase. Lo fa il tema, da
   data-dt-empty-into + data-dt-hide-empty sulla tabella; qui resta solo l'aspetto. */
.assistito-quadro-vuoto {
    margin: 0 0 0.5rem;
    font-size: 0.88rem;
    color: var(--muted);
}

/* Parametri vitali: striscia «Ultime misure» sopra lo storico. Due colonne a 390px, poi quante ne stanno */
.assistito-parametri-ultime {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
    gap: 0.5rem;
    margin: 0 0 0.75rem;
}

.assistito-parametri-ultime > div {
    padding: 0.45rem 0.6rem;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--surface-2);
}

.assistito-parametri-ultime dt {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--muted);
}

.assistito-parametri-ultime dd {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text);
}

.assistito-parametri-ultime dd small {
    display: block;
    font-size: 0.78rem;
    font-weight: 400;
    color: var(--muted);
}

/* Modulo di rilevazione: numeri grandi, l'unita' accanto al campo, righe alte almeno 44px al dito */
.cartella-modal .parametri-valore {
    font-size: 1.05rem;
    min-height: 2.75rem;
}

.cartella-modal .parametri-input-group {
    max-width: 22rem;
}

.cartella-modal .parametri-input-group .input-group-text {
    min-width: 3.25rem;
    justify-content: center;
}

.cartella-modal .parametri-gruppo-titolo {
    margin: 1rem 0 0.6rem;
    padding-bottom: 0.25rem;
    border-bottom: 1px solid var(--line);
    font-size: 0.9rem;
    font-weight: 600;
}

.cartella-modal .parametri-altre > summary,
.cartella-modal .parametri-note > summary {
    padding: 0.6rem 0;
    font-weight: 600;
    cursor: pointer;
}

.cartella-modal .parametri-avviso {
    color: var(--text);
    font-weight: 600;
}

/* Piano di cura: il tipo di attivita' si sceglie con cinque bottoni grandi. Sono radio veri (frecce
   e lettore di schermo gratis): l'input resta nel DOM, invisibile, e il bottone e' la sua etichetta */
.cartella-modal .piano-tipi {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
    gap: 0.5rem;
}

.cartella-modal .piano-tipo-btn {
    position: relative;
    margin: 0;
    font-weight: 400;
    cursor: pointer;
}

.cartella-modal .piano-tipo-radio {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.cartella-modal .piano-tipo-btn > span {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 2.75rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--surface-2);
    color: var(--text);
    line-height: 1.2;
}

/* scelto: bordo spesso, grassetto e spunta — non solo un colore */
.cartella-modal .piano-tipo-radio:checked + span {
    border: 2px solid var(--accent);
    padding: calc(0.5rem - 1px) calc(0.75rem - 1px);
    background: var(--accent-soft);
    font-weight: 600;
}

.cartella-modal .piano-tipo-radio:checked + span::after {
    content: "\2713";
    margin-left: auto;
}

.cartella-modal .piano-tipo-radio:focus-visible + span {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.cartella-modal .piano-tipo-radio:disabled + span {
    opacity: 0.55;
    cursor: not-allowed;
}

.cartella-modal .piano-tipo-radio:disabled:checked + span {
    opacity: 1;
}

/* il riquadro giallo o la riga verde dicono gia' che e' vuota.
   Si spegne il <p>, non il contenitore: quello porta lo stile inline del tema. */
.assistito-dichiara:not(.d-none) ~ .assistito-quadro-vuoto-wrap > .assistito-quadro-vuoto,
.assistito-dichiarato:not(.d-none) ~ .assistito-quadro-vuoto-wrap > .assistito-quadro-vuoto {
    display: none;
}

/* Riquadro «dichiara che il dato manca»: e' un assistito-fse-callout con due bottoni. Disegnato sui ~390px */
.assistito-dichiara-body {
    flex: 1 1 auto;
    min-width: 0;
}

.assistito-dichiara-azioni {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

/* Dichiarazione in vigore: stessa sagoma del riquadro giallo, tono quieto */
.assistito-dichiarato {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.65rem;
    margin-bottom: 1rem;
    padding: 0.5rem 0.9rem;
    border: 1px solid var(--success-soft);
    border-left: 3px solid var(--success);
    background: var(--success-soft);
    border-radius: 0.25rem;
}

.assistito-dichiarato > i {
    color: var(--success);
}

.assistito-dichiarato p {
    margin: 0;
    font-size: 0.88rem;
    color: var(--text);
}

.assistito-dichiarato .btn-link {
    margin-left: auto;
    min-height: 2rem;
    padding: 0 0.25rem;
    font-size: 0.875rem;
}

.assistito-dichiara-azioni .btn {
    min-height: 2rem;
    font-size: 0.875rem;
}

.assistito-labeled-card.assistito-fse-pss-card .nav-tabs .assistito-fse-pss-actions {
    pointer-events: auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.4rem 0.5rem;
    padding: 0.35rem 0.65rem 0.35rem 0.5rem;
}

.assistito-fse-pss-card .card-body {
    padding-top: 0.85rem;
}

.assistito-fse-esito-host:not(:empty) {
    margin-top: 0.85rem;
}

.assistito-fse-esito {
    border: 1px solid var(--success-soft);
    border-left: 3px solid var(--success);
    background: var(--success-soft);
    padding: 0.65rem 0.8rem;
    border-radius: 0.2rem;
}

.assistito-fse-esito.is-warning {
    border-color: var(--warning-soft);
    border-left-color: var(--warning);
    background: var(--warning-soft);
}

.assistito-fse-esito.is-failed {
    border-color: var(--danger-soft);
    border-left-color: var(--danger);
    background: var(--danger-soft);
}

.assistito-fse-esito-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem 0.75rem;
    margin: 0;
    font-size: 0.85rem;
    color: var(--text);
}

.assistito-fse-esito-stato {
    font-weight: 600;
}

.assistito-fse-esito-meta {
    color: var(--muted);
    font-size: 0.8rem;
}

.assistito-fse-esito-sezioni {
    display: flex;
    flex-wrap: wrap;
    gap: 0.2rem 0.5rem;
    margin: 0.4rem 0 0;
    font-size: 0.8rem;
    color: var(--text);
}

.assistito-fse-esito-sezione.is-vuota {
    color: var(--muted);
}

.assistito-fse-consenso-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.assistito-fse-consenso-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.55rem;
    padding: 0.45rem 0;
    border-bottom: 1px solid var(--paper);
    font-size: 0.85rem;
}

.assistito-fse-consenso-list li:last-child {
    border-bottom: 0;
}

.assistito-fse-ricerca-host .table-responsive {
    margin-bottom: 0;
}

.assistito-fse-ricerca-card .ts-wrapper {
    width: 100%;
}

.assistito-fse-ricerca-card .btn-block {
    white-space: nowrap;
}

@media (max-width: 991.98px) {
    .assistito-labeled-card.assistito-fse-pss-card .nav-tabs {
        flex-wrap: wrap;
    }

    .assistito-labeled-card.assistito-fse-pss-card .nav-tabs .nav-item.ml-auto {
        width: 100%;
        margin-left: 0 !important;
    }

    .assistito-labeled-card.assistito-fse-pss-card .nav-tabs .assistito-fse-pss-actions {
        justify-content: flex-start;
        padding-left: 0.75rem;
    }

    .ricettario-patient-banner-actions {
        margin-left: 0;
        width: 100%;
    }
}

.agenda-fc-visita-noshow {
    opacity: 0.85;
}

.assistito-sec {
    scroll-margin-top: 3.75rem;
}

.assistito-toc .pp-rail-link.is-active {
    color: var(--accent);
    font-weight: 600;
}

/* Le linguette del quadro clinico nel rail: rientrate e col trattino, perche' si leggano come figlie
   della voce sopra e non come sezioni della scheda */
/* conteggio e «!» in coda alla voce: il margine sta sul contenitore, cosi' non dipende da quale dei due c'e' */
.assistito-toc .pp-rail-meta {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: auto;
}

.assistito-toc .pp-rail-sublist {
    list-style: none;
    margin: 0 0 0.2rem;
    padding: 0.1rem 0 0 0.5rem;
}

.assistito-toc .pp-rail-sublink {
    font-size: 0.8rem;
    line-height: 1.2;
    padding-top: 0.02rem;
    padding-bottom: 0.02rem;
}

.assistito-toc .pp-rail-sublink::before {
    content: "–";
    flex: 0 0 auto;
    color: var(--muted);
}

.followup-item-list {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
}

.followup-item {
    display: flex;
    align-items: stretch;
    overflow: hidden;
    margin: 0;
    border: 1px solid var(--line);
    border-radius: 0.35rem;
    background: var(--surface);
    box-shadow: var(--shadow-sm);
    transition: box-shadow 0.15s ease;
}

.followup-item:hover {
    box-shadow: var(--shadow-md);
}

.followup-item--scaduto {
    border-color: var(--danger-soft);
    background: var(--danger-soft);
}

.followup-item--in-scadenza {
    border-color: var(--warning-soft);
    background: var(--warning-soft);
}

.followup-item--fatto {
    border-color: var(--success-soft);
    background: var(--success-soft);
}

/* scheda assistito: oltre la finestra di anticipo, in elenco ma non ancora da fare */
.followup-item--programmato {
    border-color: var(--line);
    background: var(--paper);
}

.followup-item-stato {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    align-self: stretch;
    padding: 0 0.15rem;
    user-select: none;
}

.followup-item-stato-label {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1.15;
    padding: 0.55rem 0.28rem;
    white-space: nowrap;
}

.followup-item-stato--scaduto {
    background: var(--danger);
    color: #fff;
}

.followup-item-stato--in-scadenza {
    background: var(--warning);
    color: var(--ink);
}

.followup-item-stato--fatto {
    background: var(--success);
    color: #fff;
}

.followup-item-stato--programmato {
    background: var(--line);
    color: var(--text);
}

.followup-item-body {
    flex: 1 1 auto;
    min-width: 0;
    padding: 0.55rem 0.75rem 0.6rem;
}

.followup-item-fatto .followup-item-body {
    opacity: 0.55;
}

.followup-item-data {
    font-weight: 600;
    color: inherit;
}

.followup-finestra-elenco .cms-aiuto {
    margin-bottom: 0;
}

.followup-item-azioni {
    flex-wrap: wrap;
}

.followup-item-azioni-form {
    margin-bottom: 0;
}

/* Dashboard omnibar — optical aperture (not the ricette .omnibar-* styles) */
.dashboard-omnibar-header-row {
    position: relative;
    z-index: 1050;
    overflow: visible;
}
.dashboard-omnibar {
    position: relative;
    z-index: 1050;
    max-width: 52rem;
    margin-left: auto;
}
.dashboard-omnibar-shell {
    position: relative;
    border-radius: 2px;
    padding: 1px;
    background: var(--line);
    overflow: hidden;
}
.dashboard-omnibar-spin {
    display: none;
    position: absolute;
    inset: -120%;
    background: conic-gradient(
        from 0deg,
        transparent 0 38%,
        var(--accent) 48%,
        var(--accent-soft) 52%,
        transparent 62%
    );
    pointer-events: none;
}
.dashboard-omnibar.is-focused .dashboard-omnibar-shell {
    background: transparent;
}
.dashboard-omnibar.is-focused .dashboard-omnibar-spin {
    display: block;
    animation: dashboard-omnibar-orbit 9s linear infinite;
}
.dashboard-omnibar-inner {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 0.7rem;
    min-height: 54px;
    padding: 0 0.85rem 0 0.95rem;
    background: var(--surface);
    border-radius: 1px;
}
.dashboard-omnibar-lens {
    display: flex;
    color: var(--muted);
    flex: 0 0 auto;
    line-height: 0;
}
.dashboard-omnibar.is-focused .dashboard-omnibar-lens {
    color: var(--accent);
}
.dashboard-omnibar-input {
    flex: 1 1 auto;
    min-width: 0;
    border: 0;
    background: transparent;
    color: var(--text);
    font-family: inherit;
    font-size: 1rem;
    letter-spacing: 0.01em;
    outline: none;
    box-shadow: none;
    height: 36px;
    padding: 0;
}
.dashboard-omnibar-input::-webkit-search-decoration,
.dashboard-omnibar-input::-webkit-search-cancel-button {
    -webkit-appearance: none;
}
.dashboard-omnibar-input::placeholder {
    color: var(--muted);
    opacity: 0.85;
}
.dashboard-omnibar-kbd {
    flex: 0 0 auto;
    font-family: "IBM Plex Mono", SFMono-Regular, Menlo, monospace;
    font-size: 0.68rem;
    font-weight: 500;
    color: var(--muted);
    border: 1px solid var(--line);
    border-radius: 2px;
    padding: 0.12rem 0.38rem;
    background: var(--paper);
}
.dashboard-omnibar.is-focused .dashboard-omnibar-kbd {
    display: none;
}
.dashboard-omnibar-panel {
    position: fixed;
    z-index: 1060;
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: 0;
    border-radius: 0 0 2px 2px;
    max-height: 60vh;
    overflow: auto;
}
.dashboard-omnibar-hints {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1.1rem;
    padding: 0.85rem 1rem 0.95rem;
}
.dashboard-omnibar-hints span {
    font-family: "IBM Plex Mono", SFMono-Regular, Menlo, monospace;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    color: var(--muted);
    position: relative;
    padding-left: 0.7rem;
}
.dashboard-omnibar-hints span::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.35em;
    width: 2px;
    height: 0.7em;
    background: var(--accent);
}
.dashboard-omnibar-status {
    padding: 0.7rem 1rem;
    font-size: 0.88rem;
    color: var(--muted);
}
.dashboard-omnibar-section-label {
    font-family: "IBM Plex Mono", SFMono-Regular, Menlo, monospace;
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    color: var(--muted);
    padding: 0.55rem 1rem 0.25rem;
    position: relative;
}
.dashboard-omnibar-section-label::before {
    content: "";
    display: inline-block;
    width: 2px;
    height: 0.7em;
    margin-right: 0.5rem;
    background: var(--accent);
    vertical-align: -0.05em;
}
.dashboard-omnibar-option {
    display: block;
    width: 100%;
    text-align: left;
    border: 0;
    background: transparent;
    padding: 0.55rem 1rem 0.6rem 1.05rem;
    cursor: pointer;
    color: inherit;
    position: relative;
}
.dashboard-omnibar-option::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.35rem;
    bottom: 0.35rem;
    width: 2px;
    background: transparent;
}
.dashboard-omnibar-option.is-active,
.dashboard-omnibar-option:hover {
    background: var(--accent-soft);
}
.dashboard-omnibar-option.is-active::before,
.dashboard-omnibar-option:hover::before {
    background: var(--accent);
}
.dashboard-omnibar-option-title {
    display: block;
    font-weight: 500;
    font-size: 0.95rem;
    color: var(--text);
}
.dashboard-omnibar-option-sub {
    display: block;
    margin-top: 0.12rem;
    font-size: 0.78rem;
    color: var(--muted);
}
@keyframes dashboard-omnibar-orbit {
    to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
    .dashboard-omnibar.is-focused .dashboard-omnibar-spin {
        display: none;
        animation: none;
    }
    .dashboard-omnibar.is-focused .dashboard-omnibar-shell {
        background: var(--accent);
    }
}
@media (max-width: 991.98px) {
    .dashboard-omnibar {
        max-width: none;
        margin-left: 0;
    }
    .dashboard-omnibar-panel {
        max-height: 60vh;
    }
}

/* ── Importazione assistiti: passi della procedura guidata ─────────────────────
   Disegnati a mano invece che con bs-stepper: qui il passo lo decide lo stato
   letto dal server, non la navigazione dell'utente, quindi della libreria
   servirebbe solo l'aspetto. Colori dai token del tema, mai esadecimali. */

.import-passi-testa {
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    margin: 0 0 1.25rem;
    padding: 0;
    gap: 0.25rem;
}

.import-passo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1 1 auto;
    min-width: 8rem;
    padding: 0.5rem 0.75rem;
    border-bottom: 3px solid var(--line);
    color: var(--muted);
    font-size: 0.88rem;
}

.import-passo-numero {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: var(--line);
    color: var(--surface);
    font-weight: 600;
    font-size: 0.8rem;
    flex: 0 0 auto;
}

.import-passo.is-attivo {
    border-bottom-color: var(--accent);
    color: var(--text);
    font-weight: 600;
}

.import-passo.is-attivo .import-passo-numero {
    background: var(--accent);
}

.import-passo.is-fatto {
    border-bottom-color: var(--success);
    color: var(--text);
}

.import-passo.is-fatto .import-passo-numero {
    background: var(--success);
}

@media (max-width: 575.98px) {
    .import-passo-label {
        display: none;
    }
    .import-passo {
        min-width: 0;
        flex: 1 1 0;
        justify-content: center;
    }
}

/* ── Elenchi: quel che il core non copre ───────────────────────────────
   Barra delle faccette, pill, contatore, stato vuoto, fasce di stato sulla riga e
   scheletro adesso stanno nel tema: `.cms-dt-*` e `.cms-skeleton` in cms-core.css,
   pilotati dagli attributi `data-dt-*`. Le pagine usano quelli, non copie locali.

   Qui restano le due cose che il core non pretende di sapere: come si disegna una
   striscia di numeri, e come si dice che la tabella non ha potuto caricare. */

.elenco-kpi {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.elenco-kpi-item {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    min-width: 0;
    padding: 0.6rem 0.75rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-left: 3px solid var(--line);
    border-radius: var(--radius);
}

.elenco-kpi-item--accento { border-left-color: var(--accent); }
.elenco-kpi-item--ok { border-left-color: var(--success); }
.elenco-kpi-item--attenzione { border-left-color: var(--warning); }
.elenco-kpi-item--scaduto { border-left-color: var(--danger); }
.elenco-kpi-item--info { border-left-color: var(--info); }

.elenco-kpi-ico {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: var(--radius);
    background: var(--surface-2);
    color: var(--muted);
    font-size: 0.8rem;
}

.elenco-kpi-corpo {
    min-width: 0;
}

.elenco-kpi-valore {
    display: block;
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--text);
    font-variant-numeric: tabular-nums;
}

.elenco-kpi-label {
    display: block;
    font-size: 0.7rem;
    line-height: 1.2;
    color: var(--muted);
    overflow-wrap: anywhere;
}

/* Non e' lo stato vuoto, che dice «qui non c'e' niente»: questo dice «non ho
   potuto guardare», e allo stato vuoto del core non compete. */

.elenco-errore {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    margin: 0.75rem 0 0;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--danger-soft);
    border-left: 3px solid var(--danger);
    border-radius: var(--radius);
    background: var(--danger-soft);
    color: var(--text);
    font-size: 0.875rem;
}

.elenco-errore > i {
    margin-top: 0.15rem;
    color: var(--danger);
}

.elenco-errore p {
    margin: 0;
}

.elenco-errore p + p {
    margin-top: 0.25rem;
    color: var(--muted);
}

/* Impostazioni → Carta intestata: il logo come lo vede la cornice dei PDF (max 18 mm di altezza). */
.carta-intestata-logo {
    display: inline-block;
    padding: 0.75rem 1rem;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: #fff;
}

.carta-intestata-logo img {
    display: block;
    max-height: 72px;
    max-width: 200px;
}

.carta-intestata-anteprima {
    padding: 1rem 1.25rem;
    border-left: 3px solid var(--accent);
    border-radius: var(--radius);
    background: var(--surface);
}

.carta-intestata-anteprima .nome {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 1.15rem;
    color: var(--ink);
}

.carta-intestata-anteprima .recapiti {
    margin: 0.25rem 0 0;
    font-size: 0.85rem;
    color: var(--muted);
}

.carta-intestata-anteprima .recapiti span + span::before {
    content: ' · ';
}

.assistiti-admin-medico {
    width: auto;
    min-width: 16rem;
    max-width: 24rem;
    flex: 1 1 16rem;
}

/* ── Rifinitura dashboard e scheda assistito ─────────────────────────────────
   Le card principali entrano con una salita breve e sfalsata (keyframe
   entra-dal-basso nella sezione di tema in testa al file); i dettagli
   interattivi rispondono al passaggio. Tutto si spegne sotto reduced-motion. */

.dashboard-medico-pazienti-card,
.dashboard-agenda-card,
.dashboard-followup-card,
.dashboard-news-card,
.dashboard-assistito-bar,
.ricettario-anagrafica-card,
.ricettario-azioni-card,
.assistito-elenco-card,
.assistito-cartella-card {
    animation: entra-dal-basso 0.3s var(--ease-out) both;
}

.dashboard-agenda-card,
.ricettario-azioni-card {
    animation-delay: 0.06s;
}

.dashboard-followup-card,
.assistito-elenco-card {
    animation-delay: 0.12s;
}

.dashboard-news-card,
.assistito-cartella-card {
    animation-delay: 0.18s;
}

/* Il bottone di sincronizzazione annuncia cosa fa: la freccia ruota al passaggio */
.dashboard-medico-sync-btn i {
    transition: transform 0.3s var(--ease-out);
}

.dashboard-medico-sync-btn:hover i,
.dashboard-medico-sync-btn:focus-visible i {
    transform: rotate(90deg);
}

/* Striscia KPI degli elenchi: l'icona prende la tinta tenue dello stato della voce */
.elenco-kpi-item {
    transition: box-shadow 0.15s ease;
}

.elenco-kpi-item:hover {
    box-shadow: var(--shadow-sm);
}

.elenco-kpi-item--accento .elenco-kpi-ico { background: var(--accent-soft); color: var(--accent); }
.elenco-kpi-item--ok .elenco-kpi-ico { background: var(--success-soft); color: var(--success); }
.elenco-kpi-item--attenzione .elenco-kpi-ico { background: var(--warning-soft); color: var(--warning); }
.elenco-kpi-item--scaduto .elenco-kpi-ico { background: var(--danger-soft); color: var(--danger); }
.elenco-kpi-item--info .elenco-kpi-ico { background: var(--info-soft); color: var(--info); }

@media (prefers-reduced-motion: reduce) {
    .dashboard-medico-pazienti-card,
    .dashboard-agenda-card,
    .dashboard-followup-card,
    .dashboard-news-card,
    .dashboard-assistito-bar,
    .ricettario-anagrafica-card,
    .ricettario-azioni-card,
    .assistito-elenco-card,
    .assistito-cartella-card {
        animation: none;
    }

    .assistito-nre-block,
    .followup-item,
    .elenco-kpi-item,
    .dashboard-medico-sync-btn i,
    .assistito-labeled-card.card-outline-tabs > .card-header a.nav-link {
        transition: none;
    }

    .dashboard-medico-sync-btn:hover i,
    .dashboard-medico-sync-btn:focus-visible i {
        transform: none;
    }
}


/* ── Storici: dettagli condivisi ─────────────────────────────────────────────
   La striscia KPI e le faccette vengono dal core (.elenco-kpi, .cms-dt-*);
   qui solo i due dettagli che il core non copre. */

/* La select «Tipo» dentro la barra delle faccette non prende tutta la riga */
.cms-dt-toolbar .storico-cert-kind {
    width: auto;
    max-width: 15rem;
}

/* Importi in tabella: cifra a destra, tabulare, mai spezzata dall'euro */
td .col-importo {
    display: block;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
