/* =========================================================================
   Manager – override personalizzati (caricato per ultimo)
   ========================================================================= */

/* --- DataTables: consenti il wrap nelle celle -----------------------------
   Le tabelle usano le classi .text-nowrap / .nowrap che impongono
   white-space: nowrap: con contenuti lunghi la colonna si allarga su una
   riga sola e la tabella sfora la finestra, ignorando la width impostata.
   Forzando il wrap il testo va a capo dentro la larghezza della colonna,
   quindi la width viene rispettata e non c'è più overflow orizzontale.     */
table.dataTable th,
table.dataTable td {
    white-space: normal !important;   /* annulla .text-nowrap / .nowrap */
    overflow-wrap: anywhere;          /* spezza parole/URL lunghissimi senza spazi */
    word-break: break-word;
    vertical-align: middle;
}

/* Le celle con i pulsanti di azione/stato restano su una riga sola:
   i bottoni non devono andare a capo tra loro.                             */
table.dataTable td .btn-list,
table.dataTable td .btn {
    white-space: nowrap;
}

/* La tabella non deve mai spingere la pagina oltre il viewport:
   chiude il trap flexbox (min-width:auto) delle colonne Bootstrap così che
   .table-responsive possa contenere/limitare la larghezza.                 */
.table-responsive {
    min-width: 0;
}

/* ============================================================
   Ricerca globale header (index.php #global-search)
   Tendina risultati sotto il campo di ricerca.
   ============================================================ */
#global-search {
    min-width: 260px;
}
.global-search-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    display: none;
    max-height: 60vh;
    overflow-y: auto;
    border-radius: 0 0 6px 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    z-index: 1050;
}
.global-search-results.show {
    display: block;
}
.global-search-results .gs-head {
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    position: sticky;
    top: 0;
    background: inherit;
}
.global-search-results .gs-item {
    white-space: normal;
    padding: 0.5rem 0.9rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
.global-search-results .gs-item:hover {
    background-color: rgba(0, 0, 0, 0.04);
}
.global-search-results .gs-tag {
    font-size: 0.7rem;
    vertical-align: middle;
}
.global-search-results .gs-title {
    font-weight: 600;
}
.global-search-results .gs-snippet {
    margin-top: 0.15rem;
    line-height: 1.35;
}
.global-search-results .gs-snippet mark {
    padding: 0 2px;
    background: #ffe08a;
    border-radius: 2px;
}

/* ============================================================
   Pulsanti pill dell'header (index.php)
   Base condivisa + varianti: "Vedi sito" e "Manutenzione ON/OFF".
   Gradiente/colori derivati dalle variabili del tema, hover "lift".
   ============================================================ */
.btn-header-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.42rem 1.05rem;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.2px;
    text-decoration: none;
    border: 1px solid transparent;
    border-radius: 50rem;
    cursor: pointer;
    white-space: nowrap;
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease,
        background-color .15s ease, color .15s ease, border-color .15s ease;
}
.btn-header-pill i {
    font-size: 0.95em;
    transition: transform .15s ease;
}
.btn-header-pill:hover {
    transform: translateY(-1px);
    filter: brightness(1.04);
}
.btn-header-pill:active {
    transform: translateY(0);
    filter: none;
}

/* --- "Vedi sito": pieno, gradiente del primario tema ---------------------- */
#main-go-to-site .btn-view-site {
    color: #fff;
    background: linear-gradient(135deg,
            var(--primary-bg-color) 0%,
            color-mix(in srgb, var(--primary-bg-color) 78%, #fff) 100%);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--primary-bg-color) 35%, transparent);
}
#main-go-to-site .btn-view-site:hover,
#main-go-to-site .btn-view-site:focus-visible {
    color: #fff;
    box-shadow: 0 7px 18px color-mix(in srgb, var(--primary-bg-color) 45%, transparent);
}
#main-go-to-site .btn-view-site:active {
    box-shadow: 0 3px 8px color-mix(in srgb, var(--primary-bg-color) 35%, transparent);
}
#main-go-to-site .btn-view-site:hover i {
    transform: translate(1px, -1px);
}
.dark-mode #main-go-to-site .btn-view-site {
    box-shadow: 0 4px 14px color-mix(in srgb, var(--primary-bg-color) 55%, transparent);
}

/* --- "Manutenzione": ON = pieno rosso, OFF = outline verde ---------------- */
#main-toggle-maintenance .btn-maint.is-on {
    color: #fff;
    background: linear-gradient(135deg, #e0364f 0%, #f0637a 100%);
    box-shadow: 0 4px 12px rgba(224, 54, 79, 0.35);
}
#main-toggle-maintenance .btn-maint.is-on:hover,
#main-toggle-maintenance .btn-maint.is-on:focus-visible {
    color: #fff;
    box-shadow: 0 7px 18px rgba(224, 54, 79, 0.45);
}
#main-toggle-maintenance .btn-maint.is-off {
    color: #12805c;
    background: rgba(29, 158, 117, 0.10);
    border-color: rgba(29, 158, 117, 0.45);
}
#main-toggle-maintenance .btn-maint.is-off:hover,
#main-toggle-maintenance .btn-maint.is-off:focus-visible {
    color: #fff;
    background: linear-gradient(135deg, #12805c 0%, #1d9e75 100%);
    border-color: transparent;
    box-shadow: 0 7px 18px rgba(29, 158, 117, 0.40);
}
.dark-mode #main-toggle-maintenance .btn-maint.is-off {
    color: #4fd0a3;
    background: rgba(29, 158, 117, 0.16);
    border-color: rgba(29, 158, 117, 0.55);
}
.dark-mode #main-toggle-maintenance .btn-maint.is-off:hover {
    color: #fff;
}

/* ============================================================
   Visualizzatore JSON del dettaglio log (modulo logs)
   ============================================================ */
.jv-prefix {
    font-size: 0.9rem;
}
.jv-call {
    color: #d63384;
    background: rgba(214, 51, 132, 0.08);
    padding: 2px 6px;
    border-radius: 4px;
}
.jv-viewer,
.jv-rawbox {
    max-height: 55vh;
    overflow: auto;
    font-family: SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    font-size: 0.82rem;
    line-height: 1.5;
    background: #fbfbfd;
}
.jv-rawbox {
    white-space: pre-wrap;
    word-break: break-word;
}
.jv-node {
    margin: 0;
}
.jv-sum {
    cursor: pointer;
    color: #6c757d;
    font-style: italic;
    user-select: none;
    list-style: none;
}
.jv-sum::-webkit-details-marker {
    display: none;
}
.jv-sum::before {
    content: "\25be  ";
    display: inline-block;
    width: 1em;
    color: #adb5bd;
}
.jv-node:not([open]) > .jv-sum::before {
    content: "\25b8  ";
}
.jv-children {
    margin-left: 1.1em;
    border-left: 1px dashed rgba(0, 0, 0, 0.12);
    padding-left: 0.6em;
}
.jv-row {
    padding: 1px 0;
}
.jv-key {
    color: #0d6efd;
    font-weight: 600;
    margin-right: 0.4em;
}
.jv-key::after {
    content: ":";
    color: #adb5bd;
    font-weight: 400;
}
.jv-idx {
    color: #adb5bd;
    margin-right: 0.4em;
}
.jv-idx::after {
    content: ":";
}
.jv-str {
    color: #198754;
    word-break: break-word;
}
.jv-num {
    color: #d63384;
}
.jv-bool {
    color: #6f42c1;
    font-weight: 600;
}
.jv-null {
    color: #adb5bd;
    font-style: italic;
}
.jv-empty {
    color: #adb5bd;
}

/* Dark mode: il manager espone la classe .dark-mode sul body */
.dark-mode .jv-viewer,
.dark-mode .jv-rawbox {
    background: #1c2029;
}
.dark-mode .jv-call {
    background: rgba(214, 51, 132, 0.18);
}
.dark-mode .jv-children {
    border-left-color: rgba(255, 255, 255, 0.14);
}
