/* GaraScout – design system
   Palette dal logo "Evidenziatore": inchiostro quasi nero, giallo evidenziatore come accento, grigi caldi.
   Bootstrap 5.3 resta la base: qui ridefiniamo variabili e componenti, senza cambiare i nomi delle classi. */

@font-face {
    font-family: "Inter";
    src: url("/fonts/inter-var-latin.woff2") format("woff2");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Fraunces";
    src: url("/fonts/fraunces-italic-500-latin.woff2") format("woff2");
    font-weight: 500;
    font-style: italic;
    font-display: swap;
}

:root {
    --gs-ink: #111111;
    --gs-ink-2: #262624;
    --gs-ink-3: #3a3935;
    --gs-paper: #f7f6f2;
    --gs-surface: #ffffff;
    --gs-line: #e6e3dc;
    --gs-line-strong: #d4d0c6;
    --gs-muted: #6b675f;
    --gs-marker: #fde047;
    --gs-marker-strong: #facc15;
    --gs-marker-soft: #fef9c3;
    --gs-success: #15803d;
    --gs-danger: #b91c1c;
    --gs-warning: #b45309;
    --gs-info: #1d4ed8;
    --gs-radius: 12px;
    --gs-radius-sm: 8px;
    --gs-shadow: 0 1px 2px rgba(17, 17, 17, .04), 0 4px 16px rgba(17, 17, 17, .04);
    --gs-sidebar-w: 260px;

    --bs-body-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --bs-body-color: var(--gs-ink);
    --bs-body-bg: var(--gs-paper);
    --bs-secondary-color: var(--gs-muted);
    --bs-border-color: var(--gs-line);
    --bs-border-radius: var(--gs-radius-sm);
    --bs-border-radius-lg: var(--gs-radius);
    --bs-link-color: var(--gs-ink);
    --bs-link-color-rgb: 17, 17, 17;
    --bs-link-hover-color: #000;
    --bs-primary: var(--gs-ink);
    --bs-primary-rgb: 17, 17, 17;
    --bs-success-rgb: 21, 128, 61;
    --bs-danger-rgb: 185, 28, 28;
    --bs-warning-rgb: 250, 204, 21;
    --bs-focus-ring-color: rgba(250, 204, 21, .45);
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--bs-body-font-family);
    font-feature-settings: "cv11", "ss01";
    background: var(--gs-paper);
    color: var(--gs-ink);
    -webkit-font-smoothing: antialiased;
}

a { color: var(--gs-ink); text-underline-offset: 3px; }
a:hover { color: #000; }

::selection { background: var(--gs-marker); color: var(--gs-ink); }

/* Accenti tipografici del marchio */
.gs-serif { font-family: "Fraunces", Georgia, serif; font-style: italic; font-weight: 500; }
.gs-mark {
    background: linear-gradient(transparent 55%, var(--gs-marker) 55%, var(--gs-marker) 90%, transparent 90%);
    padding: 0 .15em;
}

/* ---------- Shell applicativa ---------- */
.app-shell { display: flex; min-height: 100vh; }

.sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--gs-sidebar-w);
    background: var(--gs-ink);
    color: #e9e7e1;
    display: flex;
    flex-direction: column;
    z-index: 1030;
    transition: transform .2s ease;
}
.sidebar-brand {
    display: flex;
    align-items: center;
    height: 68px;
    padding: 0 22px;
    border-bottom: 1px solid rgba(255, 255, 255, .07);
}
.sidebar-brand img { height: 26px; width: auto; display: block; }

.sidebar-menu { flex: 1; overflow-y: auto; padding: 14px 12px 20px; }
.sidebar-section {
    margin: 18px 12px 6px;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: #8f8b81;
}
.sidebar-section:first-child { margin-top: 4px; }
.sidebar-link {
    position: relative;
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 9px 12px;
    margin: 1px 0;
    border-radius: var(--gs-radius-sm);
    color: #d9d6cf;
    text-decoration: none;
    font-size: .9rem;
    font-weight: 500;
}
.sidebar-link i { width: 18px; text-align: center; color: #9c988e; font-size: .92rem; }
.sidebar-link:hover { background: rgba(255, 255, 255, .06); color: #fff; }
.sidebar-link:hover i { color: #fff; }
.sidebar-link.active { background: rgba(253, 224, 71, .12); color: #fff; }
.sidebar-link.active i { color: var(--gs-marker); }
.sidebar-link.active::before {
    content: "";
    position: absolute;
    left: -12px;
    top: 8px;
    bottom: 8px;
    width: 4px;
    border-radius: 0 4px 4px 0;
    background: var(--gs-marker);
}

.sidebar-user {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 18px;
    border-top: 1px solid rgba(255, 255, 255, .07);
    font-size: .85rem;
}
.avatar {
    flex: none;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--gs-marker);
    color: var(--gs-ink);
    font-weight: 800;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
}
.sidebar-user .name { color: #fff; font-weight: 600; line-height: 1.2; }
.sidebar-user .role { color: #8f8b81; font-size: .75rem; }

.app-main {
    flex: 1;
    min-width: 0;
    margin-left: var(--gs-sidebar-w);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.topbar {
    position: sticky;
    top: 0;
    z-index: 1020;
    height: 68px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 0 28px;
    background: rgba(247, 246, 242, .85);
    backdrop-filter: saturate(1.4) blur(8px);
    border-bottom: 1px solid var(--gs-line);
}
.topbar-left { display: flex; align-items: center; gap: 12px; min-width: 0; }
.topbar-title { font-weight: 700; font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar-right { display: flex; align-items: center; gap: 10px; }
.icon-btn {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--gs-line);
    border-radius: var(--gs-radius-sm);
    background: var(--gs-surface);
    color: var(--gs-ink);
    cursor: pointer;
}
.icon-btn:hover { border-color: var(--gs-line-strong); background: #fff; }
.menu-toggle { display: none; }

.user-menu .dropdown-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid var(--gs-line);
    background: var(--gs-surface);
    border-radius: 999px;
    padding: 3px 12px 3px 3px;
    font-size: .88rem;
    font-weight: 600;
    color: var(--gs-ink);
}
.user-menu .avatar { width: 30px; height: 30px; font-size: .8rem; }
.dropdown-menu { border-color: var(--gs-line); border-radius: var(--gs-radius); box-shadow: var(--gs-shadow); padding: 6px; }
.dropdown-item { border-radius: 6px; font-size: .9rem; padding: 7px 10px; }
.dropdown-item:active { background: var(--gs-marker); color: var(--gs-ink); }

.page-wrapper { flex: 1; padding: 28px; }
.page-container { max-width: 1440px; margin: 0 auto; }

.app-footer {
    padding: 16px 28px;
    border-top: 1px solid var(--gs-line);
    font-size: .8rem;
    color: var(--gs-muted);
}
.app-footer .container-fluid { padding: 0; }
.app-footer img { height: 14px; vertical-align: -2px; }

.sidebar-backdrop { display: none; }

/* ---------- Intestazione pagina ---------- */
.page-heading {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 24px;
}
.page-title { margin: 0; font-size: 1.65rem; font-weight: 800; letter-spacing: -.02em; }
.page-subtitle { margin: 4px 0 0; color: var(--gs-muted); font-size: .95rem; }

/* ---------- Componenti ---------- */
.card {
    border: 1px solid var(--gs-line);
    border-radius: var(--gs-radius);
    background: var(--gs-surface);
    box-shadow: var(--gs-shadow);
}
.card.shadow-sm { box-shadow: var(--gs-shadow) !important; }
.card-header {
    background: transparent;
    border-bottom: 1px solid var(--gs-line);
    padding: 14px 20px;
    font-weight: 700;
}
.card-body { padding: 20px; }

.btn { border-radius: var(--gs-radius-sm); font-weight: 600; font-size: .9rem; padding: .5rem 1rem; }
.btn-sm { padding: .3rem .7rem; font-size: .8rem; }
.btn-primary {
    --bs-btn-bg: var(--gs-ink);
    --bs-btn-border-color: var(--gs-ink);
    --bs-btn-hover-bg: #000;
    --bs-btn-hover-border-color: #000;
    --bs-btn-active-bg: #000;
    --bs-btn-active-border-color: #000;
    --bs-btn-disabled-bg: var(--gs-ink-3);
    --bs-btn-disabled-border-color: var(--gs-ink-3);
    --bs-btn-focus-shadow-rgb: 250, 204, 21;
}
.btn-outline-primary {
    --bs-btn-color: var(--gs-ink);
    --bs-btn-border-color: var(--gs-line-strong);
    --bs-btn-hover-bg: var(--gs-ink);
    --bs-btn-hover-border-color: var(--gs-ink);
    --bs-btn-active-bg: var(--gs-ink);
    --bs-btn-active-border-color: var(--gs-ink);
}
.btn-outline-secondary {
    --bs-btn-color: var(--gs-ink-2);
    --bs-btn-border-color: var(--gs-line-strong);
    --bs-btn-hover-bg: var(--gs-paper);
    --bs-btn-hover-color: var(--gs-ink);
    --bs-btn-hover-border-color: var(--gs-ink-3);
}
.btn-accent {
    --bs-btn-bg: var(--gs-marker);
    --bs-btn-border-color: var(--gs-marker);
    --bs-btn-color: var(--gs-ink);
    --bs-btn-hover-bg: var(--gs-marker-strong);
    --bs-btn-hover-border-color: var(--gs-marker-strong);
    --bs-btn-hover-color: var(--gs-ink);
    --bs-btn-active-bg: var(--gs-marker-strong);
}

.form-label, label.form-label { font-weight: 600; font-size: .85rem; margin-bottom: .35rem; }
.form-control, .form-select {
    border-color: var(--gs-line-strong);
    border-radius: var(--gs-radius-sm);
    padding: .55rem .8rem;
    font-size: .92rem;
    background-color: #fff;
}
.form-control:focus, .form-select:focus, .form-check-input:focus {
    border-color: var(--gs-ink);
    box-shadow: 0 0 0 .22rem rgba(250, 204, 21, .45);
}
.form-check-input:checked { background-color: var(--gs-ink); border-color: var(--gs-ink); }

.table { --bs-table-bg: transparent; font-size: .9rem; margin-bottom: 0; }
.table > :not(caption) > * > * { padding: .7rem .85rem; border-bottom-color: var(--gs-line); }
.table thead th {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--gs-muted);
    background: #fbfaf7;
    border-bottom: 1px solid var(--gs-line);
}
.table-light { --bs-table-bg: #fbfaf7; }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state: #fdfcf6; }

.badge { font-weight: 600; border-radius: 999px; padding: .38em .7em; letter-spacing: .01em; }
.text-bg-warning { background-color: var(--gs-marker) !important; color: var(--gs-ink) !important; }
.text-bg-light { background-color: #efede7 !important; color: var(--gs-ink-2) !important; }

.alert { border-radius: var(--gs-radius); border-width: 1px; font-size: .92rem; }
.alert-success { background: #f0fdf4; border-color: #bbf7d0; color: #14532d; }
.alert-danger { background: #fef2f2; border-color: #fecaca; color: #7f1d1d; }
.alert-warning { background: var(--gs-marker-soft); border-color: #fde68a; color: #713f12; }
.alert-info { background: #eff6ff; border-color: #bfdbfe; color: #1e3a8a; }

.empty-state {
    text-align: center;
    padding: 40px 20px;
    color: var(--gs-muted);
    border: 1px dashed var(--gs-line-strong);
    border-radius: var(--gs-radius);
    background: #fcfbf8;
}
.pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px;
    border-radius: 999px;
    background: #efede7;
    font-size: .8rem;
    font-weight: 600;
}
.detail-label { font-size: .78rem; font-weight: 600; color: var(--gs-muted); text-transform: uppercase; letter-spacing: .04em; }
.detail-value { font-weight: 600; }

/* KPI */
.kpi-card { height: 100%; }
.kpi-label { font-size: .78rem; font-weight: 600; color: var(--gs-muted); text-transform: uppercase; letter-spacing: .05em; }
.kpi-value { font-size: 1.9rem; font-weight: 800; letter-spacing: -.02em; line-height: 1.15; }

/* ---------- Login ---------- */
.auth-body { background: var(--gs-paper); }
.auth-shell { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); min-height: 100vh; }
.auth-brand {
    position: relative;
    overflow: hidden;
    background: var(--gs-ink);
    color: #f4f2ec;
    padding: 48px 56px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}
.auth-brand::after {
    /* passata di evidenziatore decorativa */
    content: "";
    position: absolute;
    right: -120px;
    bottom: 90px;
    width: 520px;
    height: 120px;
    background: var(--gs-marker);
    opacity: .07;
    transform: rotate(-12deg);
    border-radius: 6px;
}
.auth-brand .logo { height: 34px; width: auto; align-self: flex-start; }
.auth-claim { max-width: 520px; position: relative; z-index: 1; }
.auth-claim h1 { font-size: clamp(2rem, 3.2vw, 3rem); font-weight: 800; letter-spacing: -.03em; line-height: 1.08; margin: 0 0 18px; }
.auth-claim h1 .gs-serif { font-weight: 500; letter-spacing: -.01em; }
.auth-claim h1 .gs-mark { color: var(--gs-ink); background: linear-gradient(transparent 12%, var(--gs-marker) 12%, var(--gs-marker) 92%, transparent 92%); }
.auth-claim p { color: #b9b5ab; font-size: 1.02rem; line-height: 1.6; margin: 0; }
.auth-points { list-style: none; padding: 0; margin: 34px 0 0; display: grid; gap: 14px; }
.auth-points li { display: flex; gap: 12px; align-items: flex-start; color: #dedbd3; font-size: .95rem; }
.auth-points i {
    flex: none;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: rgba(253, 224, 71, .12);
    color: var(--gs-marker);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .85rem;
}
.auth-points b { color: #fff; font-weight: 600; }
.auth-foot { color: #77736a; font-size: .8rem; position: relative; z-index: 1; }

.auth-form-wrap { display: flex; align-items: center; justify-content: center; padding: 48px 24px; }
.auth-card { width: 100%; max-width: 400px; }
.auth-card .mobile-logo { display: none; height: 28px; margin-bottom: 28px; }
.auth-card h2 { font-size: 1.6rem; font-weight: 800; letter-spacing: -.02em; margin: 0 0 6px; }
.auth-card .lead-text { color: var(--gs-muted); margin: 0 0 28px; }
.auth-card .form-control { padding: .7rem .9rem; font-size: .95rem; }
.auth-card .btn-primary { padding: .75rem 1rem; font-size: .95rem; }
.password-field { position: relative; }
.password-field .form-control { padding-right: 46px; }
.password-toggle {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 36px;
    height: 36px;
    border: 0;
    background: transparent;
    color: var(--gs-muted);
    border-radius: 6px;
}
.password-toggle:hover { color: var(--gs-ink); background: #f1efea; }
.auth-help { margin-top: 26px; font-size: .85rem; color: var(--gs-muted); text-align: center; }

/* ---------- Responsive ---------- */
@media (max-width: 991.98px) {
    .sidebar { transform: translateX(-100%); }
    .sidebar-open .sidebar { transform: none; }
    .sidebar-open .sidebar-backdrop {
        display: block;
        position: fixed;
        inset: 0;
        background: rgba(17, 17, 17, .45);
        z-index: 1025;
    }
    .app-main { margin-left: 0; }
    .menu-toggle { display: inline-flex; }
    .topbar, .page-wrapper { padding-left: 16px; padding-right: 16px; }
    .user-menu .user-name { display: none; }

    .auth-shell { grid-template-columns: 1fr; }
    .auth-brand { display: none; }
    .auth-card .mobile-logo { display: block; }
}
.min-w-0 { min-width: 0; }

/* =========================================================
   Portale pubblico bandiprefettura.it
   ========================================================= */
.portal { min-height: 100vh; display: flex; flex-direction: column; background: var(--gs-paper); }
.portal > main { flex: 1; }
.portal-wrap { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
.portal-header { background: var(--gs-surface); border-bottom: 1px solid var(--gs-line); position: sticky; top: 0; z-index: 1020; }
.portal-header-inner { height: 66px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.portal-brand { text-decoration: none; color: var(--gs-ink); font-size: 1.35rem; letter-spacing: -.02em; white-space: nowrap; }
.portal-brand .b1 { font-weight: 800; }
.portal-brand .b2 { font-family: "Fraunces", Georgia, serif; font-style: italic; font-weight: 500; padding: 0 .08em;
    background: linear-gradient(transparent 58%, var(--gs-marker) 58%, var(--gs-marker) 92%, transparent 92%); }
.portal-brand .b3 { color: var(--gs-muted); font-weight: 600; }
.portal-brand.small-brand { font-size: 1.05rem; }
.portal-nav { display: flex; align-items: center; gap: 22px; font-size: .92rem; font-weight: 600; }
.portal-nav a:not(.btn) { text-decoration: none; color: var(--gs-ink-2); }
.portal-nav a:not(.btn):hover { color: #000; text-decoration: underline; }

.portal-hero { background: var(--gs-surface); border-bottom: 1px solid var(--gs-line); padding: 44px 0 40px; }
.portal-hero-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 40px; align-items: center; }
.portal-kicker, .portal-cta-kicker { font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gs-muted); margin-bottom: 12px; }
.portal-hero h1 { font-size: clamp(2rem, 4vw, 3.1rem); font-weight: 800; letter-spacing: -.035em; line-height: 1.05; margin: 0 0 16px; }
.portal-lead { font-size: 1.08rem; color: var(--gs-ink-3); line-height: 1.6; max-width: 560px; }
.portal-lead.small-lead { font-size: .98rem; }
.portal-stats { display: flex; gap: 32px; margin-top: 28px; }
.portal-stats b { display: block; font-size: 2rem; font-weight: 800; letter-spacing: -.03em; line-height: 1; }
.portal-stats span { font-size: .82rem; color: var(--gs-muted); }

.map-card { background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 16px; padding: 18px; box-shadow: var(--gs-shadow); }
.portal-hero .map-card { box-shadow: none; border: 0; padding: 0; }
.map-holder .italy-map { width: 100%; height: auto; max-height: 560px; display: block; }
.italy-map path { stroke: #fff; stroke-width: 1.3; stroke-linejoin: round; transition: fill .15s; cursor: pointer; }
.italy-map .lvl-0 { fill: #ebe8e0; }
.italy-map .lvl-1 { fill: #fef3c7; }
.italy-map .lvl-2 { fill: #fde68a; }
.italy-map .lvl-3 { fill: #fcd34d; }
.italy-map .lvl-4 { fill: #facc15; }
.italy-map a:hover path, .italy-map a:focus path { fill: var(--gs-ink); }
.italy-map path.selected { fill: var(--gs-ink); }
.map-legend { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 10px; font-size: .75rem; color: var(--gs-muted); }
.map-legend i { width: 22px; height: 10px; border-radius: 3px; display: inline-block; }
.map-legend .lvl-1 { background: #fef3c7; } .map-legend .lvl-2 { background: #fde68a; }
.map-legend .lvl-3 { background: #fcd34d; } .map-legend .lvl-4 { background: #facc15; }

.portal-body { padding-top: 32px; padding-bottom: 48px; }
.portal-h1 { font-size: clamp(1.6rem, 3vw, 2.3rem); font-weight: 800; letter-spacing: -.03em; margin: 0 0 16px; line-height: 1.12; }
.portal-h1.notice-h1 { font-size: clamp(1.35rem, 2.4vw, 1.9rem); }
.portal-h2 { font-size: 1.25rem; font-weight: 800; letter-spacing: -.02em; margin: 0; }
.portal-h3 { font-size: 1.05rem; font-weight: 800; margin: 0 0 10px; }

.portal-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: .85rem; color: var(--gs-muted); margin-bottom: 18px; }
.portal-breadcrumb i { font-size: .6rem; }
.portal-breadcrumb a { color: var(--gs-ink-2); }

.notice-list { display: grid; gap: 12px; }
.notice-card { background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: var(--gs-radius); padding: 18px 20px; transition: border-color .15s, box-shadow .15s; }
.notice-card:hover { border-color: var(--gs-line-strong); box-shadow: var(--gs-shadow); }
.notice-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.notice-title { font-size: 1.02rem; font-weight: 700; line-height: 1.35; margin: 0 0 10px; }
.notice-title a { text-decoration: none; color: var(--gs-ink); }
.notice-title a:hover { text-decoration: underline; text-decoration-color: var(--gs-marker-strong); text-decoration-thickness: 3px; }
.notice-facts { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: .86rem; color: var(--gs-ink-3); margin-bottom: 10px; }
.notice-facts i { color: var(--gs-muted); margin-right: 6px; width: 14px; text-align: center; }
.notice-bottom { display: flex; flex-wrap: wrap; gap: 6px 22px; font-size: .82rem; color: var(--gs-muted); border-top: 1px dashed var(--gs-line); padding-top: 10px; }
.notice-bottom b { color: var(--gs-ink); font-weight: 700; }

.region-list { display: grid; gap: 2px; background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: var(--gs-radius); padding: 6px; }
.region-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; border-radius: 8px; text-decoration: none; color: var(--gs-ink); font-size: .92rem; font-weight: 500; }
.region-row:hover, .region-row.active { background: var(--gs-marker-soft); }
.region-row .count { font-weight: 800; font-size: .85rem; min-width: 30px; text-align: center; background: #efede7; border-radius: 999px; padding: 1px 8px; }
.region-row.is-empty { color: var(--gs-muted); }
.region-row:not(.is-empty) .count { background: var(--gs-marker); }

.province-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 22px; }
.chip { display: inline-flex; align-items: center; gap: 8px; padding: 6px 8px 6px 12px; border: 1px solid var(--gs-line-strong); border-radius: 999px; background: var(--gs-surface); text-decoration: none; color: var(--gs-ink); font-size: .88rem; font-weight: 600; }
.chip b { background: var(--gs-marker); border-radius: 999px; padding: 0 8px; font-size: .8rem; }
.chip.is-empty { color: var(--gs-muted); font-weight: 500; }
.chip.is-empty b { background: #efede7; }
.chip:hover { border-color: var(--gs-ink); }

.portal-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--gs-line); margin-bottom: 16px; }
.portal-tabs a { padding: 8px 14px; text-decoration: none; color: var(--gs-muted); font-weight: 600; font-size: .9rem; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.portal-tabs a.active { color: var(--gs-ink); border-color: var(--gs-marker-strong); }

.portal-pager { display: flex; justify-content: center; align-items: center; gap: 16px; margin-top: 24px; font-size: .88rem; color: var(--gs-muted); }

.side-card { background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: var(--gs-radius); padding: 18px; }
.side-card.highlight { background: var(--gs-ink); color: #e9e7e1; border-color: var(--gs-ink); }
.side-card.highlight .portal-h3 { color: #fff; }
.side-card.highlight p { color: #b9b5ab; font-size: .92rem; }
.side-card.highlight .portal-cta-kicker { color: var(--gs-marker); }

.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--gs-line); border: 1px solid var(--gs-line); border-radius: var(--gs-radius); overflow: hidden; margin: 20px 0; }
.facts > div { background: var(--gs-surface); padding: 12px 16px; }
.facts dt { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--gs-muted); font-weight: 700; }
.facts dd { margin: 2px 0 0; font-weight: 600; }
.notice-object p { color: var(--gs-ink-3); line-height: 1.65; }

.portal-cta { background: var(--gs-ink); color: #f4f2ec; padding: 44px 0; }
.portal-cta-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; }
.portal-cta h2 { font-size: clamp(1.4rem, 2.6vw, 2rem); font-weight: 800; letter-spacing: -.02em; margin: 0 0 8px; }
/* su fondo scuro: come il logo in versione scura, testo bianco con passata ocra sotto */
.portal-cta h2 .gs-mark { color: #fff; font-weight: 900; letter-spacing: -.01em;
    background: linear-gradient(transparent 55%, #CA8A04 55%, #CA8A04 92%, transparent 92%); }
.portal-cta p { color: #b9b5ab; margin: 0; max-width: 620px; }
.portal-cta .portal-cta-kicker { color: var(--gs-marker); }
.portal-footer { background: var(--gs-surface); border-top: 1px solid var(--gs-line); padding: 24px 0; font-size: .82rem; color: var(--gs-muted); }
.footer-logo { height: 15px; vertical-align: -3px; margin-left: 4px; }
.portal-disclaimer { margin: 14px 0 0; font-size: .78rem; max-width: 860px; }

@media (max-width: 991.98px) {
    .portal-hero-grid { grid-template-columns: 1fr; }
    .portal-nav a:not(.btn) { display: none; }
    .facts { grid-template-columns: 1fr; }
}

/* ---------- Cruscotto ---------- */
.kpi-card .card-body { padding: 18px 20px; }
.kpi-card.kpi-alert { border-color: var(--gs-marker-strong); box-shadow: inset 4px 0 0 var(--gs-marker-strong), var(--gs-shadow); }
.flash-stack .alert { margin-bottom: 12px; }
.list-group-item { border-color: var(--gs-line); padding: 12px 20px; }
.list-group-item-action:hover { background: #fdfcf6; }
.notice-row { display: flex; align-items: center; gap: 14px; }
.deadline {
    flex: none; width: 46px; height: 50px; border-radius: 10px; border: 1px solid var(--gs-line-strong);
    display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1;
    background: #fff; text-transform: uppercase; font-size: .62rem; font-weight: 700; color: var(--gs-muted);
}
.deadline b { font-size: 1.15rem; color: var(--gs-ink); margin-bottom: 2px; }
.deadline.soon { background: var(--gs-marker); border-color: var(--gs-marker-strong); color: var(--gs-ink); }
.dashboard-map .italy-map { max-height: 420px; margin: 0 auto; }
.bar-row { position: relative; display: flex; justify-content: space-between; gap: 8px; padding: 6px 8px; font-size: .88rem; margin-bottom: 4px; z-index: 0; }
.bar-row i { position: absolute; inset: 0 auto 0 0; background: var(--gs-marker-soft); border-radius: 6px; z-index: -1; }
.bar-row b { font-weight: 800; }

/* ---------- Elenco bandi ---------- */
.filter-bar .card-body { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding: 14px 16px; }
.filter-bar .form-select { width: auto; min-width: 180px; }
.search-input { position: relative; flex: 1 1 240px; }
.search-input i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--gs-muted); font-size: .85rem; }
.search-input .form-control { padding-left: 34px; }
.status-toggle .btn { font-weight: 600; }
.status-toggle .btn-check:checked + .btn { background: var(--gs-ink); border-color: var(--gs-ink); color: #fff; }
.bandi-table { min-width: 880px; }
.bando-cell { max-width: 620px; }
.bando-link { display: block; font-weight: 700; color: var(--gs-ink); text-decoration: none; line-height: 1.35; margin-bottom: 2px;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bando-link:hover { text-decoration: underline; text-decoration-color: var(--gs-marker-strong); text-decoration-thickness: 3px; }
.list-pager { display: flex; justify-content: center; align-items: center; gap: 16px; margin-top: 18px; font-size: .88rem; color: var(--gs-muted); }

/* ---------- Filtri richiudibili ---------- */
.filter-details > summary { cursor: pointer; list-style: none; display: flex; align-items: center; border-bottom: 0; }
.filter-details > summary::-webkit-details-marker { display: none; }
.filter-details > summary::after { content: "\f078"; font-family: "Font Awesome 6 Free"; font-weight: 900; margin-left: auto; font-size: .75rem; color: var(--gs-muted); transition: transform .15s; }
.filter-details[open] > summary { border-bottom: 1px solid var(--gs-line); }
.filter-details[open] > summary::after { transform: rotate(180deg); }

/* ---------- Pannello admin ---------- */
.section-title { font-size: 1.05rem; font-weight: 800; margin: 0 0 12px; }
.status-box { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--gs-line); border-radius: var(--gs-radius-sm); background: #fbfaf7; }
.status-dot { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--gs-muted); }
.status-dot.ok { background: var(--gs-success); box-shadow: 0 0 0 4px rgba(21, 128, 61, .15); }
.status-dot.ko { background: var(--gs-danger); box-shadow: 0 0 0 4px rgba(185, 28, 28, .15); }
.status-dot.warn { background: var(--gs-marker-strong); box-shadow: 0 0 0 4px rgba(250, 204, 21, .25); }
.tool-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.tool-card { display: grid; grid-template-columns: 36px 1fr; gap: 2px 12px; padding: 16px; background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: var(--gs-radius); text-decoration: none; color: var(--gs-ink); transition: border-color .15s, box-shadow .15s; }
.tool-card:hover { border-color: var(--gs-ink); box-shadow: var(--gs-shadow); }
.tool-card i { grid-row: span 2; width: 36px; height: 36px; border-radius: 9px; background: var(--gs-marker-soft); display: inline-flex; align-items: center; justify-content: center; }
.tool-card b { font-size: .95rem; }
.tool-card span { font-size: .82rem; color: var(--gs-muted); line-height: 1.4; }

/* ---------- Dettaglio bando ---------- */
.bando-header { background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: var(--gs-radius); padding: 20px 24px 0; margin-bottom: 18px; box-shadow: var(--gs-shadow); }
.back-link { display: inline-block; font-size: .85rem; color: var(--gs-muted); text-decoration: none; margin-bottom: 10px; }
.back-link:hover { color: var(--gs-ink); }
.bando-title { font-size: clamp(1.25rem, 2.2vw, 1.6rem); line-height: 1.25; margin-bottom: 8px; }
.bando-meta { display: flex; flex-wrap: wrap; gap: 6px 20px; font-size: .9rem; color: var(--gs-ink-3); }
.bando-meta i { color: var(--gs-muted); margin-right: 6px; }
.bando-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--gs-line); margin: 18px -24px 0; }
.bando-kpis > div { padding: 14px 24px; border-right: 1px solid var(--gs-line); min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.bando-kpis > div:last-child { border-right: 0; }
.bando-kpis b { font-size: 1.05rem; font-weight: 800; }
.bando-tabs { display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 2px; border-bottom: 1px solid var(--gs-line); }
.bando-tabs .nav-link { border: 0; border-bottom: 3px solid transparent; color: var(--gs-muted); font-weight: 700; font-size: .92rem; padding: 10px 16px; white-space: nowrap; background: none; margin-bottom: -1px; }
.bando-tabs .nav-link:hover { color: var(--gs-ink); }
.bando-tabs .nav-link.active { color: var(--gs-ink); border-bottom-color: var(--gs-marker-strong); }
.bando-tab-pane { padding: 22px 0 0; }
.bando-card { border: 1px solid var(--gs-line); border-radius: var(--gs-radius); background: var(--gs-surface); }
.bando-label { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--gs-muted); font-weight: 700; margin-bottom: .25rem; }
.bando-value { font-weight: 600; }
.bando-note { white-space: pre-wrap; line-height: 1.55; font-size: .82rem; color: var(--gs-muted); padding-top: 10px; }
.bando-object { line-height: 1.7; color: var(--gs-ink-2); font-size: .98rem; }
.facts-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 0; }
.tech-details { margin-top: 18px; border: 1px dashed var(--gs-line-strong); border-radius: var(--gs-radius-sm); padding: 10px 14px; }
.tech-details summary { cursor: pointer; font-size: .85rem; font-weight: 600; color: var(--gs-muted); }
.next-steps { background: var(--gs-ink); color: #e9e7e1; border-radius: var(--gs-radius); padding: 18px 20px; margin-bottom: 14px; }
.next-steps .portal-cta-kicker { color: var(--gs-marker); }
.next-steps ol { margin: 0; padding-left: 18px; display: grid; gap: 8px; }
.next-steps a { color: #fff; text-underline-offset: 3px; }
.next-steps a:hover { color: var(--gs-marker); }
@media (max-width: 991.98px) {
    .bando-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bando-kpis > div:nth-child(2) { border-right: 0; }
    .facts-3 { grid-template-columns: 1fr; }
}
.doc-list { list-style: none; padding: 0; margin: 0; border: 1px solid var(--gs-line); border-radius: var(--gs-radius); overflow: hidden; }
.doc-list li { display: flex; align-items: center; gap: 14px; padding: 12px 16px; border-bottom: 1px solid var(--gs-line); background: #fff; }
.doc-list li:last-child { border-bottom: 0; }
.doc-list li:hover { background: #fdfcf6; }
.doc-icon { flex: none; width: 38px; height: 38px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; background: #efede7; color: var(--gs-ink-3); font-size: 1.05rem; }
.doc-icon.pdf { background: #fee2e2; color: #b91c1c; }
.doc-icon.doc, .doc-icon.docx, .doc-icon.odt { background: #dbeafe; color: #1d4ed8; }
.doc-icon.xls, .doc-icon.xlsx { background: #dcfce7; color: #15803d; }
.doc-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: .8rem; color: var(--gs-muted); min-width: 0; }
.doc-ok { color: var(--gs-success); font-weight: 600; }
.doc-ko { color: var(--gs-warning); font-weight: 600; }

/* =========================================================
   Sito pubblico GaraScout
   ========================================================= */
.site { background: var(--gs-paper); scroll-behavior: smooth; }
html:has(body.site) { scroll-behavior: smooth; scroll-padding-top: 76px; }
.site-wrap { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
.site-header { position: sticky; top: 0; z-index: 1030; background: rgba(247, 246, 242, .88); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--gs-line); }
.site-header-inner { height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.site-logo img { height: 26px; display: block; }
.site-nav { display: flex; gap: 26px; font-weight: 600; font-size: .92rem; }
.site-nav a { text-decoration: none; color: var(--gs-ink-2); }
.site-nav a:hover { color: #000; text-decoration: underline; text-decoration-color: var(--gs-marker-strong); text-decoration-thickness: 3px; }

.site-kicker { display: inline-flex; align-items: center; gap: 8px; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gs-muted); margin-bottom: 14px; }
.site-kicker .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gs-marker-strong); box-shadow: 0 0 0 4px rgba(250, 204, 21, .25); }
.site-kicker.light { color: var(--gs-marker); }

.site-hero { padding: 72px 0 64px; }
.site-hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 48px; align-items: center; }
.site-hero h1 { font-size: clamp(2.3rem, 4.6vw, 3.7rem); font-weight: 800; letter-spacing: -.04em; line-height: 1.04; margin: 0 0 20px; }
.site-hero h1 .gs-serif { font-weight: 500; letter-spacing: -.02em; }
.site-hero h1 .gs-mark { background: linear-gradient(transparent 58%, var(--gs-marker) 58%, var(--gs-marker) 92%, transparent 92%); }
.site-lead { font-size: 1.12rem; line-height: 1.65; color: var(--gs-ink-3); max-width: 560px; margin: 0; }
.site-checks { list-style: none; padding: 0; margin: 24px 0 0; display: grid; gap: 8px; font-size: .92rem; color: var(--gs-ink-3); }
.site-checks i { color: var(--gs-success); margin-right: 8px; }
.site-checks.light { color: #d9d6cf; }
.site-checks.light i { color: var(--gs-marker); }

.browser-frame { margin: 0; background: #fff; border: 1px solid var(--gs-line); border-radius: 14px; overflow: hidden; box-shadow: 0 30px 60px -20px rgba(17, 17, 17, .25), 0 0 0 1px rgba(17, 17, 17, .02); }
.browser-frame img { display: block; width: 100%; height: auto; }
.browser-bar { display: flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; background: #f1efea; border-bottom: 1px solid var(--gs-line); }
.browser-bar i { width: 10px; height: 10px; border-radius: 50%; background: #d4d0c6; }
.browser-bar span { margin-left: 10px; font-size: .72rem; color: var(--gs-muted); background: #fff; border-radius: 6px; padding: 2px 12px; }
.hero-shot { transform: perspective(1600px) rotateY(-6deg) rotateX(2deg); transform-origin: left center; }
.browser-frame.wide { max-width: 1040px; margin: 0 auto; }

.site-stats { border-top: 1px solid var(--gs-line); border-bottom: 1px solid var(--gs-line); background: var(--gs-surface); }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.stats-grid > div { padding: 26px 20px; border-right: 1px solid var(--gs-line); }
.stats-grid > div:last-child { border-right: 0; }
.stats-grid b { display: block; font-size: 2.1rem; font-weight: 800; letter-spacing: -.03em; line-height: 1; margin-bottom: 6px; }
.stats-grid span { font-size: .85rem; color: var(--gs-muted); }

.site-section { padding: 88px 0; }
.site-section.alt { background: var(--gs-surface); border-top: 1px solid var(--gs-line); border-bottom: 1px solid var(--gs-line); }
.site-section.dark { background: var(--gs-ink); color: #e9e7e1; }
.site-section.dark h2 { color: #fff; }
.site-section.dark p { color: #b9b5ab; }
.section-head { max-width: 760px; margin-bottom: 44px; }
.site-section h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); font-weight: 800; letter-spacing: -.035em; line-height: 1.1; margin: 0; }
.site-section h2 .gs-serif { font-weight: 500; }
.section-sub { color: var(--gs-muted); font-size: 1.02rem; margin: 14px 0 0; }
.gs-mark-dark { color: #fff; background: linear-gradient(transparent 58%, #CA8A04 58%, #CA8A04 92%, transparent 92%); padding: 0 .1em; }

.steps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.step { background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 16px; padding: 26px; }
.step-n { display: inline-flex; width: 38px; height: 38px; border-radius: 10px; align-items: center; justify-content: center; background: var(--gs-ink); color: var(--gs-marker); font-weight: 800; margin-bottom: 16px; }
.step h3, .feature h3 { font-size: 1.1rem; font-weight: 800; letter-spacing: -.01em; margin: 0 0 8px; }
.step p, .feature p { color: var(--gs-ink-3); margin: 0; line-height: 1.6; font-size: .95rem; }

.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--gs-line); border: 1px solid var(--gs-line); border-radius: 16px; overflow: hidden; }
.feature { background: var(--gs-surface); padding: 28px; }
.feature i { font-size: 1.15rem; width: 44px; height: 44px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; background: var(--gs-marker-soft); margin-bottom: 16px; }

.prefetture-grid, .contact-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 56px; align-items: center; }
.prefetture-grid p, .contact-grid > div > p { font-size: 1.05rem; line-height: 1.65; margin: 18px 0 22px; }
.site-section.dark .browser-frame { border-color: #2a2a28; }

.roadmap { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.roadmap > div { border: 1px dashed var(--gs-line-strong); border-radius: 14px; padding: 20px; display: flex; flex-direction: column; gap: 6px; background: var(--gs-paper); }
.roadmap i { color: var(--gs-muted); font-size: 1.1rem; margin-bottom: 6px; }
.roadmap b { font-size: 1rem; }
.roadmap span { font-size: .88rem; color: var(--gs-muted); line-height: 1.5; }

.faq-wrap { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 48px; }
.faq details { border-bottom: 1px solid var(--gs-line); padding: 18px 0; }
.faq summary { cursor: pointer; list-style: none; font-weight: 700; font-size: 1.05rem; display: flex; justify-content: space-between; gap: 16px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-weight: 400; font-size: 1.4rem; line-height: 1; color: var(--gs-muted); }
.faq details[open] summary::after { content: "–"; }
.faq p { margin: 10px 0 0; color: var(--gs-ink-3); line-height: 1.65; }

.contact-card { background: var(--gs-surface); color: var(--gs-ink); border-radius: 18px; padding: 28px; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .5); }
.contact-card .form-label { color: var(--gs-ink); }
.hp-field { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.demo-ok { text-align: center; padding: 30px 10px; }
.demo-ok i { font-size: 2.4rem; color: var(--gs-success); margin-bottom: 12px; }
.demo-ok h3 { font-weight: 800; }
.demo-ok p { color: var(--gs-muted) !important; }

.site-footer { background: var(--gs-surface); border-top: 1px solid var(--gs-line); padding: 48px 0 24px; font-size: .9rem; }
.site-footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr 1fr; gap: 32px; }
.site-footer-grid > div { display: flex; flex-direction: column; gap: 8px; }
.site-footer-grid b { margin-bottom: 4px; }
.site-footer-grid a { color: var(--gs-ink-3); text-decoration: none; }
.site-footer-grid a:hover { color: #000; text-decoration: underline; }
.site-footer-grid p { color: var(--gs-muted); max-width: 320px; }
.footer-brand { height: 22px; width: auto; align-self: flex-start; }
.site-footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; margin-top: 36px; padding-top: 18px; border-top: 1px solid var(--gs-line); color: var(--gs-muted); font-size: .8rem; }

@media (max-width: 991.98px) {
    .site-nav { display: none; }
    .site-hero { padding: 44px 0; }
    .site-hero-grid, .prefetture-grid, .contact-grid, .faq-wrap { grid-template-columns: 1fr; gap: 32px; }
    .hero-shot { transform: none; }
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
    .stats-grid > div:nth-child(2) { border-right: 0; }
    .stats-grid > div:nth-child(-n+2) { border-bottom: 1px solid var(--gs-line); }
    .steps-grid, .feature-grid { grid-template-columns: 1fr; }
    .roadmap { grid-template-columns: repeat(2, 1fr); }
    .site-section { padding: 60px 0; }
    .site-footer-grid { grid-template-columns: 1fr 1fr; }
}
.portal-search { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.portal-search .form-select { width: auto; min-width: 170px; }
.tab-count { display: inline-block; min-width: 26px; margin-left: 4px; padding: 0 7px; border-radius: 999px; background: #efede7; color: var(--gs-ink-2); font-size: .75rem; font-weight: 700; text-align: center; }
.tab-count.open { background: var(--gs-marker); color: var(--gs-ink); }
.tabs-row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--gs-line); margin-bottom: 16px; }
.tabs-row .portal-tabs { border-bottom: 0; margin-bottom: 0; }
.year-select { display: flex; align-items: center; gap: 8px; padding-bottom: 8px; }
.year-select .form-select { width: auto; }
.portal-search select[name="anno"] { min-width: 215px; }

/* Selettore tema del portale: accoglienza e migranti in evidenza */
.tema-switch { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 10px; margin-bottom: 16px; }
.tema-opt { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 2px solid var(--gs-line); border-radius: 14px; background: var(--gs-surface); color: var(--gs-ink); text-decoration: none; transition: border-color .15s, box-shadow .15s; }
.tema-opt:hover { border-color: var(--gs-ink-3); }
.tema-opt > i { flex: none; width: 42px; height: 42px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; background: #efede7; font-size: 1.1rem; }
.tema-opt span { display: flex; flex-direction: column; min-width: 0; }
.tema-opt b { font-size: 1.02rem; font-weight: 800; }
.tema-opt small { color: var(--gs-muted); font-size: .78rem; line-height: 1.35; }
.tema-opt em { margin-left: auto; font-style: normal; font-weight: 800; font-size: 1.2rem; }
.tema-opt.accoglienza > i { background: var(--gs-marker); }
.tema-opt.active { border-color: var(--gs-ink); box-shadow: var(--gs-shadow); }
.tema-opt.accoglienza.active { background: var(--gs-ink); color: #fff; border-color: var(--gs-ink); }
.tema-opt.accoglienza.active small { color: #b9b5ab; }
.hero-accoglienza { display: inline-flex; align-items: center; }
@media (max-width: 767.98px) { .tema-switch { grid-template-columns: 1fr; } }

/* ---- Scheda gara (estrazione AI) ---- */
.scheda-sintesi { background: var(--gs-surface-2, #f7f7f5); border-radius: 12px; padding: 1rem 1.25rem; }
.scheda-alert { border: 1px solid var(--gs-border, #e5e5e0); border-left: 4px solid #adb5bd; border-radius: 10px; padding: .75rem 1rem; margin-bottom: .6rem; background: #fff; }
.scheda-alert.is-high { border-left-color: #dc3545; }
.scheda-alert.is-medium { border-left-color: #f0ad00; }
.scheda-quote { font-size: .8rem; color: #6c757d; border-left: 2px solid #e5e5e0; padding-left: .6rem; margin: .25rem 0 0; }
.scheda-quote.is-unverified { border-left-color: #f0ad00; }
.scheda-facts > div { display: grid; grid-template-columns: minmax(9rem, 40%) 1fr; gap: .75rem; padding: .45rem 0; border-bottom: 1px solid var(--gs-border, #eee); }
.scheda-facts dt { font-weight: 500; color: #6c757d; font-size: .85rem; }
.scheda-facts dd { margin: 0; }
.scheda-source { font-size: .75rem; color: #6c757d; }
.scheda-source summary { cursor: pointer; display: inline; }
.scheda-list { padding-left: 1.1rem; }
.scheda-list li { margin-bottom: .4rem; }
@media (max-width: 576px) { .scheda-facts > div { grid-template-columns: 1fr; gap: .1rem; } }

/* ---- Documenti aziendali (checklist per categoria) ---- */
.doc-row { padding: .55rem 0; border-bottom: 1px solid var(--gs-border, #eee); }
.doc-row:last-child { border-bottom: 0; }

/* Avvisi email del portale: province raggruppate per regione */
.alert-regions details { border-bottom: 1px solid #ececec; padding: .35rem 0; }
.alert-regions summary { cursor: pointer; font-weight: 600; }
.alert-provinces { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .15rem .75rem; padding: .5rem 0 .25rem 1rem; }
.alert-cta { border-left: 4px solid var(--gs-marker); }

/* Dashboard azienda: titoli su due righe al massimo, filtri compatti */
.dashboard-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dashboard-table td:first-child { max-width: 560px; }
.dashboard-filters > summary { list-style: none; }
.dashboard-filters > summary::-webkit-details-marker { display: none; }
.dashboard-filters[open] { flex-basis: 100%; }
.min-w-0 { min-width: 0; }
a.kpi-card:hover { border-color: var(--gs-ink, #111); }

/* Widget dashboard: calendario scadenze e semaforo documenti */
.deadline-week a { display: -webkit-box !important; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; white-space: normal !important; margin-bottom: .2rem; }
.deadline-week { border: 1px solid #ececec; border-radius: 8px; padding: .5rem .6rem; height: 100%; min-width: 0; }
.deadline-week.is-current { border-color: var(--gs-marker-strong, #facc15); background: var(--gs-marker-soft, #fef9c3); }
.deadline-count { font-size: 1.6rem; font-weight: 700; line-height: 1.1; margin: .15rem 0 .25rem; }
.semaforo { width: .65rem; height: .65rem; border-radius: 50%; flex-shrink: 0; display: inline-block; }
.semaforo-rosso { background: #dc2626; }
.semaforo-giallo { background: #f59e0b; }
.semaforo-verde { background: #16a34a; }

/* Requisiti della gara confrontati con la scheda azienda */
.req-summary { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.req-mark { margin-right: .25rem; }
.req-reason { margin: .1rem 0 .15rem 1.4rem; }

/* Anteprima documenti */
.doc-preview-frame { width: 100%; height: 80vh; border: 0; display: block; }
.doc-preview-image { max-width: 100%; display: block; margin: 0 auto; }
.doc-preview-body { background: #f3f3f1; min-height: 40vh; }
.doc-file-row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; padding: .35rem 0 .35rem 1.6rem; border-top: 1px dashed #ececec; }
.doc-file-row:first-of-type { border-top: 0; }

/* Caricamento a mano dei documenti di gara */
.upload-card { border: 1px dashed #cfcfca; border-radius: 10px; padding: .85rem 1rem; background: #fbfbf9; }

/* "Accedi come": barra fissa finché il super admin opera come un altro utente */
.impersonation-bar { position: sticky; top: 0; z-index: 1030; background: #ffd400; color: #111; font-size: .9rem; }

/* chat dell'assistente nel dettaglio bando */
.qa-chat { display: flex; flex-direction: column; gap: 8px; }
.qa-log { max-height: 460px; min-height: 120px; overflow-y: auto; display: flex; flex-direction: column; gap: 8px;
  padding: 8px; background: #faf9f6; border: 1px solid #ebe8e1; border-radius: 10px; }
.qa-msg { max-width: 92%; padding: 8px 11px; border-radius: 12px; font-size: .9rem; white-space: pre-wrap; line-height: 1.4; }
.qa-user { align-self: flex-end; background: #111; color: #fff; border-bottom-right-radius: 4px; }
.qa-bot { align-self: flex-start; background: #fff; border: 1px solid #e4e1da; border-bottom-left-radius: 4px; }
.qa-bot.qa-error { border-color: #f1b0b0; background: #fff6f6; }
.qa-typing { color: #777; font-style: italic; }
.qa-sources { margin: 6px 0 0; padding-left: 16px; font-size: .78rem; color: #666; white-space: normal; }
.qa-form { display: flex; gap: 6px; align-items: flex-end; }
.qa-form textarea { resize: vertical; }

/* guida contestuale e chatbot */
.guida-panel { --bs-offcanvas-width: 440px; }
.guida-content h3 { font-size: 1rem; font-weight: 700; margin-top: 1rem; }
.guida-content ul, .guida-content ol { padding-left: 1.2rem; }
.guida-content p, .guida-content li { font-size: .92rem; }
.guida-chat .qa-log { max-height: 340px; }
.guida-fab { position: fixed; right: 18px; bottom: 18px; z-index: 1040; border: 0; border-radius: 999px; padding: 10px 16px;
  background: #111; color: #fff; font-weight: 600; box-shadow: 0 6px 18px rgba(0,0,0,.18); }
.guida-fab:hover { background: #000; color: #ffd400; }
.guida-toc { position: sticky; top: 76px; }
@media (max-width: 576px) { .guida-fab { right: 12px; bottom: 12px; padding: 9px 13px; } }

/* risposte AI formattate (rich-text.js): titoli, paragrafi ed elenchi compatti */
.qa-text p { margin: 0 0 .45rem; }
.qa-text p:last-child { margin-bottom: 0; }
.qa-text .qa-h { font-weight: 700; margin: .55rem 0 .2rem; }
.qa-text .qa-h:first-child { margin-top: 0; }
.qa-text ul, .qa-text ol { margin: 0 0 .45rem; padding-left: 1.2rem; }
.qa-text li { margin-bottom: .15rem; }
.qa-text { white-space: normal; }
.qa-bot { white-space: normal; }

/* Testi legali pubblici */
.legal-page { padding: 32px 0 56px; max-width: 860px; }
.legal-nav { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-bottom: 20px; }
.legal-nav a { color: var(--gs-ink-3); text-decoration: none; }
.legal-nav a.active { color: #000; font-weight: 600; border-bottom: 2px solid #000; }
.legal-text h1 { font-size: 1.8rem; font-weight: 800; }
.legal-text h2 { font-size: 1.05rem; font-weight: 700; margin-top: 1.6rem; }
.legal-text p, .legal-text li { line-height: 1.65; }
.legal-meta { color: var(--gs-muted); font-size: .9rem; }

/* Registrazione pubblica */
.reg-page { padding: 32px 0 56px; max-width: 900px; }
.reg-title { font-size: 1.8rem; font-weight: 800; }
.reg-lead { color: var(--gs-ink-3); max-width: 720px; }
.reg-card { border: 1px solid var(--gs-line); }
.reg-steps { list-style: none; display: flex; gap: 10px; padding: 0; margin: 20px 0 24px; flex-wrap: wrap; }
.reg-steps li { display: flex; align-items: center; gap: 8px; padding: 6px 14px 6px 6px; border-radius: 999px; background: #fff; border: 1px solid var(--gs-line); color: var(--gs-muted); font-size: .9rem; }
.reg-steps li span { width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--gs-line); font-weight: 700; color: #000; }
.reg-steps li.active { color: #000; font-weight: 600; border-color: #000; }
.reg-steps li.active span { background: #fde047; }
.reg-steps li.done span { background: #000; color: #fff; }
.reg-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* Area riservata: nelle card e nelle tabelle i link non sono sottolineati (lo diventano al passaggio), meno rumore visivo */
.page-wrapper .card a:not(.btn), .page-wrapper .table a:not(.btn) { text-decoration: none; }
.page-wrapper .card a:not(.btn):hover, .page-wrapper .table a:not(.btn):hover { text-decoration: underline; text-decoration-color: var(--gs-marker-strong, #facc15); text-decoration-thickness: 3px; }
.page-wrapper .card a.text-danger:not(.btn) { color: #b91c1c; }
.fav-list li + li { border-top: 1px solid #ececec; }

/* «Risultati per… · Cerca invece…» sopra i risultati corretti */
.did-you-mean { font-size: 1.05rem; margin: .25rem 0 1rem; }
.did-you-mean b i { text-decoration: underline; text-decoration-color: var(--gs-marker-strong, #facc15); text-decoration-thickness: 3px; }
.did-you-mean a { text-decoration: underline !important; }
.semantic-locked { display: flex; align-items: center; gap: .75rem; margin: .25rem 0 1rem; padding: .6rem .9rem;
    border: 1px solid #fde68a; border-left: 4px solid var(--gs-marker-strong, #facc15); background: #fffbeb; border-radius: .5rem; }
.semantic-locked > i { font-size: 1.1rem; }
.semantic-locked .btn { white-space: nowrap; }
.semantic-locked .badge-paid { font-size: .72rem; font-weight: 600; padding: .1rem .45rem; border-radius: 1rem; background: #111; color: #facc15; }
@media (max-width: 576px) { .semantic-locked { flex-wrap: wrap; } }
