/* ────────────────────────────────────────────────────────────────
   `hidden` deve battere le utility di display
   Tabler dichiara `[hidden]{display:none!important}` in cima al foglio, prima delle utility:
   a pari specificità (0,1,0) vince l'ultima regola, quindi su un elemento con `d-flex`
   l'attributo `hidden` non nascondeva niente. Ridichiarata qui — questo foglio viene dopo
   core/main.css, così `el.hidden = true` funziona su qualsiasi elemento.
   ──────────────────────────────────────────────────────────────── */

[hidden] {
    display: none !important;
}

/* ────────────────────────────────────────────────────────────────
   Sidebar — hover & active enhancements
   Colori dalle variabili della navbar di Tabler: valgono sia con la
   sidebar scura sia con quella chiara (theme.ui.color-scheme).
   ──────────────────────────────────────────────────────────────── */

.navbar-vertical .nav-link {
    color: var(--tblr-navbar-color);
    transition: background-color .15s ease, color .15s ease;
}

.navbar-vertical .nav-link:hover:not(.active) {
    color: var(--tblr-navbar-hover-color);
    background-color: color-mix(in oklab, currentColor 7%, transparent);
}

.navbar-vertical .nav-link.active {
    color: var(--tblr-navbar-active-color);
}

/* left accent pill on active item */
.navbar-vertical .nav-link.active {
    position: relative;
}

.navbar-vertical .nav-link.active::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 55%;
    background-color: var(--tblr-primary);
    border-radius: 0 3px 3px 0;
}

/* ────────────────────────────────────────────────────────────────
   Skin del cliente (static/assets/css/skins/skin-<nome>.css)
   La skin definisce --joraweb-sidebar-bg; senza skin resta lo sfondo
   scuro di Tabler. Solo sulla sidebar scura: quella chiara segue le
   superfici del tema.
   ──────────────────────────────────────────────────────────────── */

.navbar-vertical[data-bs-theme=dark] {
    --tblr-navbar-bg: var(--joraweb-sidebar-bg, var(--tblr-bg-surface));
}

/* Primario come testo: la skin può scurirlo (giallo, azzurro) con
   --joraweb-primary-text; senza skin vale il primario, come in Tabler. */
.text-primary,
.bg-primary-lt {
    color: var(--joraweb-primary-text, var(--tblr-primary)) !important;
}

.btn-outline-primary,
.btn-ghost-primary {
    --tblr-btn-color: var(--joraweb-primary-text, var(--tblr-primary));
    --tblr-btn-disabled-color: var(--joraweb-primary-text, var(--tblr-primary));
}

.btn-link:not(:hover) {
    color: var(--joraweb-primary-text, oklch(from var(--tblr-primary) calc(l + .05) c h));
}

/* ────────────────────────────────────────────────────────────────
   Loghi in un riquadro fisso: qualsiasi proporzione abbia il file del
   cliente, la barra e il login restano identici.
   ──────────────────────────────────────────────────────────────── */

.navbar-vertical .navbar-brand-image-large {
    height: 2.5rem;
    width: auto;
    max-width: 10.5rem;
    object-fit: contain;
}

.navbar-vertical .navbar-brand-image-small {
    height: 2rem;
    width: 2rem;
    object-fit: contain;
}

.logo-auth {
    height: 5rem;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

/* ────────────────────────────────────────────────────────────────
   Icona collassa sidebar (.hamburger, da framework-starter-tabler):
   il tema la piazza fissa in basso a sinistra (bottom:1em;left:1em).
   Qui la ancoriamo in alto a destra della sidebar stessa (che è fixed):
   segue la larghezza reale, anche quando con "folded-hover" la barra si
   allarga al passaggio del mouse.
   ──────────────────────────────────────────────────────────────── */

.hamburger {
    position: absolute;
    top: .75rem;
    right: .75rem;
    bottom: auto;
    left: auto;
}

/* Tabler lo colora come un link normale (scuro): sulla sidebar scura spariva. Prende il colore delle
   voci della sidebar, in cui è contenuto. */
.hamburger button {
    color: var(--tblr-navbar-color);
    font-size: 1.25rem;
}

.hamburger button:hover {
    color: var(--tblr-navbar-active-color);
}

/* ────────────────────────────────────────────────────────────────
   Sidebar ripiegata (<html data-bs-sidebar="folded…">, da 992px in su,
   come la navbar-expand-lg del layout): i titoli di sezione non ci
   stanno nei 4rem e restano solo le linee di separazione tra i gruppi;
   icone al centro. Con "folded-hover" la sidebar si riapre al passaggio
   del mouse e torna tutto come da aperta.
   ──────────────────────────────────────────────────────────────── */

@media (min-width: 992px) {
    [data-bs-sidebar=folded] .navbar-vertical .nav-section-title,
    [data-bs-sidebar=folded-hover] .navbar-vertical:not(:hover):not(:has(:focus-visible)) .nav-section-title {
        display: none !important;
    }

    [data-bs-sidebar=folded] .navbar-vertical .navbar-nav .nav-link,
    [data-bs-sidebar=folded-hover] .navbar-vertical:not(:hover):not(:has(:focus-visible)) .navbar-nav .nav-link {
        justify-content: center;
    }

    [data-bs-sidebar=folded] .navbar-vertical .navbar-divider,
    [data-bs-sidebar=folded-hover] .navbar-vertical:not(:hover):not(:has(:focus-visible)) .navbar-divider {
        margin-left: .75rem;
        margin-right: .75rem;
    }

    /* Da stretta il pulsante per riaprire va sotto il marchio, al centro. Tabler da chiusa lo
       nasconde (display:none), e così non c'era modo di riaprirla: qui resta sempre visibile.
       Il pulsante di Tabler mette "folded-hover"; "folded" arriva solo da localStorage. */
    [data-bs-sidebar=folded] .navbar-vertical .hamburger,
    [data-bs-sidebar=folded-hover] .navbar-vertical:not(:hover):not(:has(:focus-visible)) .hamburger {
        top: 3.25rem;
        right: auto;
        left: 50%;
        transform: translateX(-50%);
    }

    [data-bs-sidebar=folded] .navbar-vertical [data-bs-toggle=sidebar-folded],
    [data-bs-sidebar=folded-hover] .navbar-vertical:not(:hover):not(:has(:focus-visible)) [data-bs-toggle=sidebar-folded] {
        display: inline-block !important;
        opacity: 1 !important;
    }

    /* Spazio per il pulsante tra il marchio e la prima voce; con "folded-hover" resta anche da
       allargata, così le voci non saltano quando passa il mouse. */
    [data-bs-sidebar=folded] .navbar-vertical .navbar-nav,
    [data-bs-sidebar=folded-hover] .navbar-vertical .navbar-nav {
        margin-top: 1.75rem;
    }
}

/* Parti IDP senza il permesso IDP: restano visibili ma spente, con "IDP non abilitato" accanto
   (canIdp in PermissionInterceptor). Il menu invece nasconde la sezione IDP. */
.idp-off {
    opacity: .45;
    filter: grayscale(1);
    pointer-events: none;
    user-select: none;
}

.btn.idp-off-btn:disabled {
    filter: grayscale(1);
}
