/*!
 * Presidia Design System - Portale gestione presidi antincendio
 * Tipografia: Space Grotesk (display), IBM Plex Sans (UI), IBM Plex Mono (codici)
 * Palette: Ember (brand), Ink (scuro), semantic per stati di conformita'
 * -----------------------------------------------------------------------------
 */

/* =========================================================================
   1. TOKENS
   ========================================================================= */
:root {
    /* Brand */
    --ember-500: #E23A2E;
    --ember-600: #C42E23;
    --ember-050: #FCEBE9;
    --ember-100: #F7D3CE;

    /* Ink (scale scura) */
    --ink-900: #0F141B;
    --ink-800: #141A22;
    --ink-700: #293241;
    --ink-600: #3B4453;

    /* Neutri */
    --text: #1A2230;
    --text-strong: #141A22;
    --text-secondary: #59616E;
    --text-tertiary: #98A0AC;
    --text-muted: #8A929E;
    --border: #E4E8ED;
    --border-soft: #EEF0F3;
    --border-strong: #CBD2DB;
    --surface: #F7F8FA;
    --surface-soft: #FAFBFC;
    --canvas: #EEF0F3;
    --white: #FFFFFF;

    /* Stati semantici */
    --state-ok: #12885A;
    --state-ok-bg: #E7F6EF;
    --state-warn: #E0900A;
    --state-warn-fg: #B26A00;
    --state-warn-bg: #FDF1DD;
    --state-bad: #E23A2E;
    --state-bad-fg: #C42E23;
    --state-bad-bg: #FCEBE9;
    --state-neutral: #8A929E;
    --state-neutral-fg: #5B6472;
    --state-neutral-bg: #EEF1F4;

    /* Radii */
    --radius-pill: 20px;
    --radius-card: 14px;
    --radius-control: 10px;
    --radius-chip: 6px;

    /* Ombre */
    --shadow-brand: 0 6px 20px rgba(213, 40, 26, 0.35);
    --shadow-card: 0 1px 2px rgba(15, 20, 27, 0.04);
    --shadow-elevated: 0 8px 30px rgba(15, 20, 27, 0.08);

    /* Layout */
    --sidebar-w: 256px;
    --topbar-h: 66px;

    /* Bootstrap overrides */
    --bs-primary: var(--ember-500);
    --bs-primary-rgb: 226, 58, 46;
    --bs-body-font-family: 'IBM Plex Sans', system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --bs-body-color: var(--text);
    --bs-body-bg: var(--canvas);
    --bs-border-color: var(--border);
    --bs-border-radius: var(--radius-control);
    --bs-link-color: var(--ember-500);
    --bs-link-hover-color: var(--ember-600);
}

/* =========================================================================
   2. BASE
   ========================================================================= */
*, *::before, *::after { box-sizing: border-box; }

html, body { height: 100%; }

body {
    font-family: 'IBM Plex Sans', system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    background: var(--canvas);
    color: var(--text);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

::selection { background: var(--ember-100); }

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: 'Space Grotesk', system-ui, sans-serif;
    letter-spacing: -0.01em;
    color: var(--text-strong);
    font-weight: 600;
}

.font-display  { font-family: 'Space Grotesk', system-ui, sans-serif !important; }
.font-mono     { font-family: 'IBM Plex Mono', "SF Mono", Menlo, monospace !important; }
.font-ui       { font-family: 'IBM Plex Sans', system-ui, sans-serif !important; }
.text-ember    { color: var(--ember-500) !important; }
.text-ink      { color: var(--ink-800) !important; }
.text-secondary-2 { color: var(--text-secondary) !important; }
.text-tertiary { color: var(--text-tertiary) !important; }

/* scrollbar sottile */
.presidia-scroll::-webkit-scrollbar { width: 10px; height: 10px; }
.presidia-scroll::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 8px; border: 3px solid transparent; background-clip: content-box; }
.presidia-scroll::-webkit-scrollbar-track { background: transparent; }

/* =========================================================================
   3. LAYOUT: shell (sidebar + topbar + main)
   ========================================================================= */
.presidia-shell {
    display: flex;
    height: 100vh;
    width: 100%;
    overflow: hidden;
    background: var(--canvas);
}

.presidia-sidebar {
    width: var(--sidebar-w);
    flex-shrink: 0;
    background: var(--ink-900);
    color: #8B94A3;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.presidia-sidebar__brand {
    padding: 22px 22px 18px;
    display: flex;
    align-items: center;
    gap: 11px;
}

.presidia-sidebar__logo {
    width: 36px; height: 36px;
    border-radius: 10px;
    background: linear-gradient(150deg, #F0503A, #D5281A);
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 4px 14px rgba(213, 40, 26, .4);
    color: #fff;
    flex-shrink: 0;
}

.presidia-sidebar__title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 700; font-size: 18px;
    color: #fff;
    letter-spacing: -.02em;
    line-height: 1;
}

.presidia-sidebar__sub {
    font-size: 10.5px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #5C6472;
    margin-top: 3px;
}

.presidia-sidebar__section {
    padding: 12px 14px 4px;
    font-size: 10.5px;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: #4B5361;
    font-weight: 600;
}

.presidia-sidebar__nav {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 4px 12px;
}

.presidia-sidebar__scroll {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}
.presidia-sidebar__scroll::-webkit-scrollbar { width: 6px; }
.presidia-sidebar__scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,.06); border-radius: 4px; }

.presidia-sidebar__link {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 12px;
    border-radius: 9px;
    font-size: 13.5px;
    color: #8B94A3;
    cursor: pointer;
    text-decoration: none;
    font-weight: 400;
    transition: background .15s ease, color .15s ease;
}
.presidia-sidebar__link:hover {
    background: rgba(255,255,255,.055);
    color: #D4DAE3;
    text-decoration: none;
}
.presidia-sidebar__link.is-active {
    background: rgba(226,58,46,.14);
    color: #fff;
    font-weight: 600;
}
.presidia-sidebar__link.is-active::before {
    content: '';
    position: absolute;
    left: -12px; top: 8px; bottom: 8px;
    width: 3px; border-radius: 3px;
    background: var(--ember-500);
}
.presidia-sidebar__link i {
    width: 20px;
    text-align: center;
    font-size: 15px;
    flex-shrink: 0;
}
.presidia-sidebar__link .label { flex: 1; }
.presidia-sidebar__link .badge-nav {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    color: #5C6472;
    background: rgba(255,255,255,.05);
    padding: 1px 7px;
    border-radius: 6px;
}
.presidia-sidebar__link.is-active .badge-nav {
    color: #F0A79F;
    background: rgba(226,58,46,.16);
}

.presidia-sidebar__separator {
    height: 1px;
    background: rgba(255,255,255,.055);
    margin: 10px 14px;
}

.presidia-sidebar__user {
    padding: 14px;
    flex-shrink: 0;
}
.presidia-sidebar__user-card {
    background: rgba(255,255,255,.045);
    border: 1px solid rgba(255,255,255,.06);
    border-radius: 12px;
    padding: 12px;
}
.presidia-sidebar__user-info {
    display: flex;
    align-items: center;
    gap: 10px;
}
.presidia-sidebar__avatar {
    width: 34px; height: 34px;
    border-radius: 9px;
    background: var(--ink-700);
    color: #D4DAE3;
    display: flex; align-items: center; justify-content: center;
    font-weight: 600;
    font-size: 13px;
    font-family: 'Space Grotesk', sans-serif;
    flex-shrink: 0;
    text-transform: uppercase;
}
.presidia-sidebar__user-name {
    color: #E7EBF0;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.presidia-sidebar__user-role {
    font-size: 11.5px;
    color: #6B7484;
}

.presidia-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.presidia-topbar {
    height: var(--topbar-h);
    flex-shrink: 0;
    background: #fff;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 0 26px;
    z-index: 5;
}

.presidia-topbar__title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    font-size: 19px;
    letter-spacing: -.01em;
    color: var(--text-strong);
    line-height: 1.1;
}

.presidia-topbar__sub {
    font-size: 12.5px;
    color: #7A828F;
    margin-top: 1px;
}

.presidia-topbar__search {
    display: flex;
    align-items: center;
    background: #F1F3F6;
    border: 1px solid var(--border);
    border-radius: 10px;
    height: 40px;
    padding: 0 12px;
    gap: 9px;
    width: 290px;
    color: var(--text-tertiary);
    font-size: 13.5px;
}
.presidia-topbar__search input {
    border: none;
    background: transparent;
    flex: 1;
    outline: none;
    font-size: 13.5px;
    color: var(--text);
    font-family: inherit;
}
.presidia-topbar__search input::placeholder { color: var(--text-tertiary); }

.presidia-topbar__kbd {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    color: #AEB5C0;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 5px;
    padding: 2px 6px;
}

.presidia-topbar__iconbtn {
    width: 40px; height: 40px;
    flex-shrink: 0;
    background: #F1F3F6;
    border: 1px solid var(--border);
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    position: relative;
    color: #5B6472;
    transition: background .15s ease;
}
.presidia-topbar__iconbtn:hover { background: #E9ECF0; color: var(--text-strong); }
.presidia-topbar__iconbtn .pip {
    position: absolute;
    top: 7px; right: 8px;
    width: 8px; height: 8px;
    background: var(--ember-500);
    border: 2px solid #fff;
    border-radius: 50%;
}

.presidia-content {
    flex: 1;
    overflow-y: auto;
    padding: 24px 26px 40px;
}

.presidia-content--flush {
    padding: 0;
}

/* Toggle mobile */
.presidia-sidebar-toggle {
    display: none;
    width: 40px; height: 40px;
    border: 1px solid var(--border);
    background: #F1F3F6;
    border-radius: 10px;
    align-items: center;
    justify-content: center;
    color: #5B6472;
}

@media (max-width: 992px) {
    .presidia-sidebar {
        position: fixed;
        left: -260px;
        top: 0;
        bottom: 0;
        z-index: 1050;
        transition: left .25s ease;
    }
    .presidia-sidebar.is-open { left: 0; box-shadow: 0 10px 40px rgba(0,0,0,.35); }
    .presidia-topbar { padding: 0 16px; gap: 10px; }
    .presidia-sidebar-toggle { display: inline-flex; }
    .presidia-topbar__search { width: auto; flex: 1; min-width: 0; }
    .presidia-topbar__kbd { display: none; }
    .presidia-content { padding: 18px 16px 40px; }
}

/* =========================================================================
   4. CARDS
   ========================================================================= */
.card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-card);
    box-shadow: none;
}
.card-header {
    background: #fff;
    border-bottom: 1px solid var(--border-soft);
    padding: 16px 20px;
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    color: var(--text-strong);
}
.card-header h1, .card-header h2, .card-header h3,
.card-header h4, .card-header h5, .card-header h6 {
    margin: 0;
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    font-size: 15.5px;
    color: var(--text-strong);
}
.card-body { padding: 20px; }

.presidia-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-card);
    padding: 20px 22px;
}

.presidia-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}
.presidia-card__title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    font-size: 15.5px;
    color: var(--text-strong);
    margin: 0;
}
.presidia-card__sub {
    font-size: 12.5px;
    color: var(--text-muted);
}

/* =========================================================================
   5. BUTTONS
   ========================================================================= */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    font-family: 'IBM Plex Sans', sans-serif;
    font-weight: 500;
    border-radius: var(--radius-control);
    padding: 0 15px;
    height: 40px;
    font-size: 13.5px;
    transition: background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
    line-height: 1;
}
.btn-sm {
    height: 32px; padding: 0 12px; font-size: 12.5px; border-radius: 8px;
}
.btn-lg {
    height: 48px; padding: 0 20px; font-size: 15px; border-radius: 11px;
}

.btn-primary,
.btn.btn-primary,
.btn-warning,
.btn-danger,
.btn-info {
    background: var(--ember-500);
    border: 1px solid var(--ember-500);
    color: #fff;
    font-weight: 600;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active,
.btn-warning:hover, .btn-danger:hover, .btn-info:hover {
    background: var(--ember-600) !important;
    border-color: var(--ember-600) !important;
    color: #fff !important;
}

.btn-outline-primary,
.btn-outline-danger,
.btn-outline-warning,
.btn-outline-info,
.btn-outline-success {
    background: #fff;
    color: var(--text-secondary);
    border: 1px solid var(--border);
    font-weight: 500;
}
.btn-outline-primary:hover, .btn-outline-danger:hover,
.btn-outline-warning:hover, .btn-outline-info:hover,
.btn-outline-success:hover {
    background: var(--surface);
    color: var(--text-strong);
    border-color: var(--border-strong);
}

.btn-secondary,
.btn-outline-secondary {
    background: #fff;
    color: var(--text-secondary);
    border: 1px solid var(--border);
    font-weight: 500;
}
.btn-secondary:hover, .btn-outline-secondary:hover {
    background: var(--surface);
    color: var(--text-strong);
    border-color: var(--border-strong);
}

.btn-success {
    background: var(--state-ok);
    border: 1px solid var(--state-ok);
    color: #fff;
    font-weight: 600;
}
.btn-success:hover {
    background: #0d6f49;
    border-color: #0d6f49;
    color: #fff;
}

.btn-dark {
    background: var(--ink-800);
    border: 1px solid var(--ink-800);
    color: #fff;
    font-weight: 600;
}
.btn-dark:hover { background: #000; border-color: #000; color: #fff; }

.btn-light {
    background: #F1F3F6;
    border: 1px solid var(--border);
    color: var(--text-strong);
}
.btn-light:hover { background: #E9ECF0; }

.btn-link {
    height: auto;
    padding: 0;
    color: var(--ember-500);
    font-weight: 600;
    text-decoration: none;
}
.btn-link:hover { color: var(--ember-600); text-decoration: underline; }

.btn-group .btn { border-radius: 0; }
.btn-group .btn:first-child { border-top-left-radius: var(--radius-control); border-bottom-left-radius: var(--radius-control); }
.btn-group .btn:last-child { border-top-right-radius: var(--radius-control); border-bottom-right-radius: var(--radius-control); }
.btn-group-sm .btn:first-child { border-top-left-radius: 8px; border-bottom-left-radius: 8px; }
.btn-group-sm .btn:last-child { border-top-right-radius: 8px; border-bottom-right-radius: 8px; }

/* =========================================================================
   6. FORMS
   ========================================================================= */
.form-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: 6px;
}

.form-control, .form-select {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-control);
    padding: 10px 13px;
    font-size: 14px;
    color: var(--text-strong);
    min-height: 42px;
    box-shadow: none;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.form-control:focus, .form-select:focus {
    border-color: var(--ember-500);
    box-shadow: 0 0 0 3px rgba(226, 58, 46, .09);
    background: #fff;
    color: var(--text-strong);
}
.form-control::placeholder { color: var(--text-tertiary); }

.form-control[readonly], .form-control:disabled {
    background: var(--surface);
    color: var(--text-secondary);
}

textarea.form-control { min-height: 96px; padding: 12px 13px; }

.form-check-input {
    border: 1.5px solid var(--border-strong);
    border-radius: 5px;
}
.form-check-input:checked {
    background-color: var(--ember-500);
    border-color: var(--ember-500);
}
.form-check-input:focus {
    border-color: var(--ember-500);
    box-shadow: 0 0 0 3px rgba(226, 58, 46, .12);
}
.form-check-label { font-size: 14px; color: var(--text); }

.input-group-text {
    background: var(--surface);
    border: 1px solid var(--border);
    color: var(--text-secondary);
    font-size: 13.5px;
}

/* =========================================================================
   7. STATUS PILLS
   ========================================================================= */
.presidia-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--radius-pill);
    line-height: 1.4;
    white-space: nowrap;
}
.presidia-pill i, .presidia-pill svg { font-size: 10px; }
.presidia-pill .dot {
    width: 6px; height: 6px; border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.presidia-pill--ok       { color: var(--state-ok);      background: var(--state-ok-bg); }
.presidia-pill--ok .dot  { background: var(--state-ok); }
.presidia-pill--warn     { color: var(--state-warn-fg); background: var(--state-warn-bg); }
.presidia-pill--warn .dot{ background: var(--state-warn); }
.presidia-pill--bad      { color: var(--state-bad-fg);  background: var(--state-bad-bg); }
.presidia-pill--bad .dot { background: var(--state-bad); }
.presidia-pill--neutral  { color: var(--state-neutral-fg); background: var(--state-neutral-bg); }
.presidia-pill--neutral .dot { background: var(--state-neutral); }
.presidia-pill--ink      { color: #fff; background: var(--ink-800); }
.presidia-pill--ink .dot { background: #fff; }

/* Bootstrap badge overrides */
.badge {
    font-family: 'IBM Plex Sans', sans-serif;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--radius-pill);
    font-size: 11.5px;
    line-height: 1.4;
    letter-spacing: 0;
}
.badge.bg-success { background: var(--state-ok-bg) !important; color: var(--state-ok) !important; }
.badge.bg-warning { background: var(--state-warn-bg) !important; color: var(--state-warn-fg) !important; }
.badge.bg-danger  { background: var(--state-bad-bg) !important; color: var(--state-bad-fg) !important; }
.badge.bg-info    { background: #E4EEFC !important; color: #1E58C4 !important; }
.badge.bg-secondary { background: var(--state-neutral-bg) !important; color: var(--state-neutral-fg) !important; }
.badge.bg-primary { background: var(--ember-500) !important; color: #fff !important; }
.badge.bg-dark    { background: var(--ink-800) !important; color: #fff !important; }
.badge.bg-light   { background: var(--surface) !important; color: var(--text-strong) !important; }

/* =========================================================================
   8. TABLES
   ========================================================================= */
.table {
    color: var(--text);
    font-size: 13.5px;
    margin-bottom: 0;
    --bs-table-hover-bg: var(--surface-soft);
    border-color: var(--border-soft);
}
.table > thead > tr > th {
    font-family: 'IBM Plex Sans', sans-serif;
    font-size: 11px;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-tertiary);
    font-weight: 600;
    background: var(--surface-soft);
    border-bottom: 1px solid var(--border-soft);
    padding: 12px 16px;
    white-space: nowrap;
}
.table > tbody > tr > td {
    padding: 14px 16px;
    border-color: var(--border-soft);
    color: var(--text-secondary);
    vertical-align: middle;
}
.table > tbody > tr > td strong,
.table > tbody > tr > td b { color: var(--text-strong); }

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

.table-danger { background: rgba(226,58,46,.045) !important; }
.table-warning { background: rgba(224,144,10,.045) !important; }
.table-success { background: rgba(18,136,90,.045) !important; }
.table-info { background: rgba(30,88,196,.045) !important; }

/* Wrapper tabella tipo Presidia */
.presidia-table {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-card);
    overflow: hidden;
}
.presidia-table .table { border: none; }
.presidia-table .table > thead > tr > th { background: var(--surface-soft); border-top: none; }
.presidia-table .table > tbody > tr:last-child > td { border-bottom: none; }

.presidia-table__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    font-size: 12.5px;
    color: var(--text-muted);
    border-top: 1px solid var(--border-soft);
    background: #fff;
}

/* =========================================================================
   9. KPI CARDS
   ========================================================================= */
.presidia-kpi {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-card);
    padding: 18px 20px 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.presidia-kpi__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}
.presidia-kpi__icon {
    width: 38px; height: 38px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px;
}
.presidia-kpi__icon--ink      { background: #F1F3F6; color: var(--ink-800); }
.presidia-kpi__icon--ok       { background: var(--state-ok-bg); color: var(--state-ok); }
.presidia-kpi__icon--warn     { background: var(--state-warn-bg); color: var(--state-warn-fg); }
.presidia-kpi__icon--bad      { background: var(--state-bad-bg); color: var(--state-bad-fg); }
.presidia-kpi__icon--neutral  { background: var(--state-neutral-bg); color: var(--state-neutral-fg); }

.presidia-kpi__trend {
    font-size: 11.5px;
    font-weight: 600;
    padding: 3px 8px;
    border-radius: var(--radius-pill);
    line-height: 1.4;
}
.presidia-kpi__value {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 700;
    font-size: 30px;
    letter-spacing: -.02em;
    color: var(--text-strong);
    margin-top: 8px;
    line-height: 1;
}
.presidia-kpi__label {
    font-size: 13px;
    color: var(--text-secondary);
    font-weight: 500;
    margin-top: 5px;
}
.presidia-kpi__sub {
    font-size: 11.5px;
    color: var(--text-tertiary);
    margin-top: 2px;
}

/* =========================================================================
   10. ALERTS
   ========================================================================= */
.alert {
    border-radius: 13px;
    padding: 14px 18px;
    font-size: 13.5px;
    border: 1px solid transparent;
    color: var(--text);
    display: flex;
    align-items: flex-start;
    gap: 12px;
}
.alert i:first-child { flex-shrink: 0; margin-top: 2px; }

.alert-success {
    background: var(--state-ok-bg);
    border-color: rgba(18,136,90,.18);
    color: #0a5a3d;
}
.alert-warning {
    background: var(--state-warn-bg);
    border-color: rgba(224,144,10,.22);
    color: #7d4c00;
}
.alert-danger {
    background: linear-gradient(90deg, #FCEBE9, #FDF3F1);
    border-color: #F4C9C3;
    color: #8F1D14;
}
.alert-info {
    background: #EBF3FD;
    border-color: #C7DBF6;
    color: #1E58C4;
}

.alert h1, .alert h2, .alert h3, .alert h4, .alert h5, .alert h6 {
    color: inherit;
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    font-size: 14.5px;
    margin: 0 0 2px;
}

/* Banner allerta tipo dashboard */
.presidia-banner {
    display: flex;
    align-items: center;
    gap: 14px;
    background: linear-gradient(90deg, #FCEBE9, #FDF3F1);
    border: 1px solid #F4C9C3;
    border-radius: 13px;
    padding: 14px 18px;
    margin-bottom: 20px;
}
.presidia-banner__icon {
    width: 38px; height: 38px;
    border-radius: 10px;
    background: var(--ember-500);
    color: #fff;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    font-size: 16px;
}
.presidia-banner__title {
    font-weight: 600;
    font-size: 14.5px;
    color: #8F1D14;
}
.presidia-banner__sub {
    font-size: 12.5px;
    color: #B2554C;
    margin-top: 1px;
}

/* =========================================================================
   11. DROPDOWN
   ========================================================================= */
.dropdown-menu {
    border: 1px solid var(--border);
    border-radius: 12px;
    box-shadow: var(--shadow-elevated);
    padding: 6px;
    font-size: 13.5px;
}
.dropdown-item {
    border-radius: 8px;
    padding: 8px 10px;
    color: var(--text);
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 9px;
}
.dropdown-item:hover, .dropdown-item:focus {
    background: var(--surface);
    color: var(--text-strong);
}
.dropdown-item.active, .dropdown-item:active {
    background: rgba(226,58,46,.08);
    color: var(--ember-500);
}
.dropdown-header {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 11px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--text-tertiary);
    font-weight: 600;
    padding: 8px 10px 4px;
}
.dropdown-divider { border-color: var(--border-soft); margin: 4px 0; }

/* =========================================================================
   12. PAGINATION
   ========================================================================= */
.pagination { gap: 6px; }
.pagination .page-item .page-link {
    min-width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    background: #fff;
    border-radius: 8px !important;
    color: var(--text-secondary);
    font-size: 13px;
    font-weight: 500;
}
.pagination .page-item .page-link:hover {
    background: var(--surface);
    color: var(--text-strong);
    border-color: var(--border-strong);
}
.pagination .page-item.active .page-link {
    background: var(--ink-800);
    border-color: var(--ink-800);
    color: #fff;
}
.pagination .page-item.disabled .page-link {
    color: var(--text-tertiary);
    background: #fff;
    border-color: var(--border);
}

/* =========================================================================
   13. TOOLBAR + FILTER TABS
   ========================================================================= */
.presidia-toolbar {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.presidia-tabs {
    display: flex;
    gap: 6px;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 11px;
    padding: 4px;
    flex-wrap: wrap;
}
.presidia-tabs__item {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 12px;
    border-radius: 8px;
    border: none;
    cursor: pointer;
    font-family: 'IBM Plex Sans', sans-serif;
    font-size: 13px;
    font-weight: 500;
    color: var(--text-secondary);
    background: transparent;
    text-decoration: none;
    line-height: 1;
    white-space: nowrap;
}
.presidia-tabs__item:hover { color: var(--text-strong); background: var(--surface); }
.presidia-tabs__item.is-active {
    background: var(--ink-800);
    color: #fff;
    font-weight: 600;
}
.presidia-tabs__count {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    color: var(--text-secondary);
    background: #F1F3F6;
    padding: 1px 6px;
    border-radius: 5px;
    line-height: 1.4;
}
.presidia-tabs__item.is-active .presidia-tabs__count {
    color: #fff;
    background: rgba(255,255,255,.16);
}

/* =========================================================================
   14. TIMELINE / ACTIVITY
   ========================================================================= */
.presidia-timeline { display: flex; flex-direction: column; }
.presidia-timeline__item {
    display: flex;
    gap: 13px;
    padding-bottom: 15px;
}
.presidia-timeline__rail {
    display: flex;
    flex-direction: column;
    align-items: center;
}
.presidia-timeline__dot {
    width: 10px; height: 10px;
    border-radius: 50%;
    margin-top: 4px;
    flex-shrink: 0;
    background: var(--ink-600);
    box-shadow: 0 0 0 4px rgba(59, 68, 83, .12);
}
.presidia-timeline__dot--ok { background: var(--state-ok); box-shadow: 0 0 0 4px rgba(18,136,90,.14); }
.presidia-timeline__dot--warn { background: var(--state-warn); box-shadow: 0 0 0 4px rgba(224,144,10,.14); }
.presidia-timeline__dot--bad { background: var(--state-bad); box-shadow: 0 0 0 4px rgba(226,58,46,.14); }
.presidia-timeline__line {
    width: 2px;
    flex: 1;
    background: var(--border-soft);
    margin-top: 3px;
}
.presidia-timeline__body { flex: 1; margin-top: -2px; }
.presidia-timeline__text { font-size: 13px; color: var(--text-secondary); }
.presidia-timeline__text b { color: var(--text-strong); font-weight: 600; }
.presidia-timeline__time { font-size: 11.5px; color: var(--text-tertiary); margin-top: 2px; }

/* =========================================================================
   15. LIST ITEM (scadenze / recente)
   ========================================================================= */
.presidia-list__item {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 13px 20px;
    border-bottom: 1px solid var(--border-soft);
    cursor: pointer;
    transition: background .15s ease;
    text-decoration: none;
    color: inherit;
}
.presidia-list__item:hover { background: var(--surface-soft); color: inherit; text-decoration: none; }
.presidia-list__item:last-child { border-bottom: none; }

.presidia-date-chip {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 46px; height: 46px;
    border-radius: 11px;
    flex-shrink: 0;
    font-family: 'Space Grotesk', sans-serif;
    color: var(--state-neutral-fg);
    background: var(--state-neutral-bg);
}
.presidia-date-chip .day { font-weight: 700; font-size: 17px; line-height: 1; }
.presidia-date-chip .month { font-size: 10px; text-transform: uppercase; letter-spacing: .06em; margin-top: 1px; }
.presidia-date-chip--ok      { color: var(--state-ok);      background: var(--state-ok-bg); }
.presidia-date-chip--warn    { color: var(--state-warn-fg); background: var(--state-warn-bg); }
.presidia-date-chip--bad     { color: var(--state-bad-fg);  background: var(--state-bad-bg); }

/* =========================================================================
   16. PROGRESS
   ========================================================================= */
.progress {
    height: 7px;
    background: var(--border-soft);
    border-radius: 6px;
    overflow: hidden;
}
.progress-bar {
    background: var(--ember-500);
    border-radius: 6px;
}
.presidia-progress-row { margin-bottom: 12px; }
.presidia-progress-row__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 7px;
    font-size: 13px;
}
.presidia-progress-row__head .label { color: var(--text-secondary); font-weight: 500; }
.presidia-progress-row__head .meta { color: var(--text-muted); font-size: 12px; }
.presidia-progress-row__head .meta b { color: var(--text-strong); font-family: 'Space Grotesk', sans-serif; font-weight: 700; }

/* =========================================================================
   17. UTILITIES
   ========================================================================= */
.presidia-eyebrow {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    font-size: 11px;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-tertiary);
}

.presidia-code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--text-strong);
}

.presidia-divider {
    height: 1px;
    background: var(--border-soft);
    margin: 20px 0;
}

.presidia-empty {
    text-align: center;
    padding: 40px 20px;
}
.presidia-empty__icon {
    width: 64px; height: 64px;
    border-radius: 16px;
    background: var(--surface);
    color: var(--text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    margin-bottom: 14px;
}
.presidia-empty__title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    font-size: 16px;
    color: var(--text-strong);
    margin-bottom: 6px;
}
.presidia-empty__sub {
    color: var(--text-muted);
    font-size: 13.5px;
    margin-bottom: 18px;
}

/* =========================================================================
   18. AUTH / GUEST LAYOUT
   ========================================================================= */
.presidia-auth {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: radial-gradient(circle at 20% 10%, rgba(226,58,46,.08), transparent 40%), var(--canvas);
}
.presidia-auth__card {
    width: 100%;
    max-width: 420px;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 18px;
    padding: 34px 30px;
    box-shadow: 0 12px 40px rgba(15, 20, 27, .06);
}
.presidia-auth__brand {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}
.presidia-auth__brand-logo {
    width: 44px; height: 44px;
    border-radius: 12px;
    background: linear-gradient(150deg, #F0503A, #D5281A);
    box-shadow: var(--shadow-brand);
    display: flex; align-items: center; justify-content: center;
    color: #fff;
}
.presidia-auth__title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 700;
    font-size: 22px;
    color: var(--text-strong);
    margin: 0;
}
.presidia-auth__sub {
    color: var(--text-secondary);
    font-size: 13.5px;
    margin-bottom: 22px;
}

/* =========================================================================
   19. MODAL
   ========================================================================= */
.modal-content {
    border: 1px solid var(--border);
    border-radius: 16px;
    box-shadow: 0 20px 60px rgba(15, 20, 27, .18);
}
.modal-header {
    border-bottom: 1px solid var(--border-soft);
    padding: 18px 22px;
}
.modal-title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    color: var(--text-strong);
}
.modal-body { padding: 22px; }
.modal-footer {
    border-top: 1px solid var(--border-soft);
    padding: 16px 22px;
}

/* =========================================================================
   20. LINKS
   ========================================================================= */
a { color: var(--ember-500); text-decoration: none; }
a:hover { color: var(--ember-600); text-decoration: underline; }
.text-decoration-none:hover { text-decoration: none !important; }

/* Text helpers overrides */
.text-muted { color: var(--text-muted) !important; }
.text-primary { color: var(--ember-500) !important; }
.text-danger { color: var(--state-bad-fg) !important; }
.text-warning { color: var(--state-warn-fg) !important; }
.text-success { color: var(--state-ok) !important; }
.text-info { color: #1E58C4 !important; }
.text-dark { color: var(--text-strong) !important; }
.text-secondary { color: var(--text-secondary) !important; }

.bg-primary { background-color: var(--ember-500) !important; }
.bg-dark { background-color: var(--ink-800) !important; }
.bg-light { background-color: var(--surface) !important; }
.bg-white { background-color: #fff !important; }

/* Small helpers used across views */
.h1, h1 { font-size: 24px; }
.h2, h2 { font-size: 20px; }
.h3, h3 { font-size: 17px; }
.h4, h4 { font-size: 15.5px; }
.h5, h5 { font-size: 14.5px; }
.h6, h6 { font-size: 13px; }

.border { border-color: var(--border) !important; }
.rounded { border-radius: var(--radius-control) !important; }

/* Container shell tweaks */
.container-fluid > .row { --bs-gutter-x: 0; }

/* =========================================================================
   21. ORGCHART
   ========================================================================= */
.orgchart-scroll {
    overflow-x: auto;
    padding: 12px 4px 20px;
}
.orgchart, .orgchart ul {
    list-style: none;
    padding: 0;
    margin: 0;
    position: relative;
    text-align: center;
}
.orgchart li {
    display: inline-block;
    vertical-align: top;
    padding: 20px 12px 0;
    position: relative;
}
.orgchart > li { padding-top: 0; }
.orgchart li::before,
.orgchart li::after {
    content: '';
    position: absolute;
    top: 0;
    height: 20px;
    border-top: 1px solid var(--border);
    width: 50%;
}
.orgchart li::before { right: 50%; border-right: 1px solid var(--border); }
.orgchart li::after  { left: 50%; }
.orgchart li:only-child::before,
.orgchart li:only-child::after { display: none; }
.orgchart li:only-child { padding-top: 20px; }
.orgchart li:first-child::before,
.orgchart li:last-child::after { border: 0 none; }
.orgchart li:last-child::before {
    border-right: 1px solid var(--border);
    border-radius: 0 4px 0 0;
}
.orgchart li:first-child::after { border-radius: 4px 0 0 0; }

.orgchart ul::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    border-left: 1px solid var(--border);
    height: 20px;
    width: 0;
}

.org-node {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    text-align: left;
    background: var(--panel-1);
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-soft);
    padding: 10px 14px;
    min-width: 200px;
    max-width: 260px;
    transition: transform .15s ease, box-shadow .15s ease;
}
.org-node:hover { transform: translateY(-1px); box-shadow: var(--shadow-medium); }
.org-node__icon {
    width: 32px; height: 32px;
    border-radius: 10px;
    background: var(--ember-050);
    color: var(--ember-600);
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    font-size: 13px;
}
.org-node__body { min-width: 0; flex: 1; }
.org-node__title {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 600;
    color: var(--text-strong);
    font-size: 13px;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.org-node__subtitle,
.org-node__meta {
    font-size: 11.5px;
    color: var(--text-muted);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.org-node__roles { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 4px; }

.org-node--root {
    background: var(--ink-800);
    color: #fff;
    border-color: var(--ink-800);
}
.org-node--root .org-node__title { color: #fff; }
.org-node--root .org-node__subtitle { color: rgba(255,255,255,.75); }
.org-node--root .org-node__icon { background: rgba(255,255,255,.12); color: #FFB48A; }

.org-node--group {
    background: var(--panel-2);
    border-style: dashed;
    border-color: var(--border);
}
.org-node--titolari .org-node__icon    { background: var(--state-warn-bg);  color: var(--state-warn-fg); }
.org-node--supervisori .org-node__icon { background: var(--ember-050);      color: var(--ember-600); }
.org-node--operatori .org-node__icon   { background: var(--state-neutral-bg); color: var(--text-secondary); }
.org-node--clienti .org-node__icon     { background: #EEF3FE;               color: #1E58C4; }

.org-people {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-top: 12px;
}
.org-people .org-node { min-width: 200px; max-width: 240px; }

.org-empty {
    display: inline-block;
    font-size: 11.5px;
    color: var(--text-muted);
    background: var(--panel-2);
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px dashed var(--border);
}

/* =========================================================================
   22. QR PUBLIC VIEW
   ========================================================================= */
.qr-header {
    background: linear-gradient(135deg, var(--ember-600) 0%, var(--ember-500) 100%);
    color: #fff;
    padding: 22px 24px;
    text-align: center;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}
.qr-header .presidia-eyebrow {
    color: rgba(255,255,255,.9) !important;
    letter-spacing: .12em;
    font-size: 10.5px;
    margin-bottom: 6px;
}
.qr-header h1 {
    color: #fff;
    font-size: 22px;
    margin: 0;
    line-height: 1.15;
}

/* =========================================================================
   23. PHOTO CARDS
   ========================================================================= */
.presidia-photo-card {
    padding: 0;
    overflow: hidden;
    transition: transform .15s ease, box-shadow .15s ease;
}
.presidia-photo-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-medium); }
.presidia-photo-card .photo-image {
    width: 100%;
    height: 220px;
    object-fit: cover;
    background: var(--panel-2);
    border-bottom: 1px solid var(--border-soft);
}
.presidia-photo-card .photo-body { padding: 14px 16px; }
.presidia-photo-card .photo-actions {
    display: flex;
    gap: 4px;
    padding: 10px 16px 14px;
    border-top: 1px solid var(--border-soft);
    background: var(--panel-2);
}
