/* ============================================================
   Bandi e contributi — "Il registro"
   Carta d'archivio fredda, inchiostro istituzionale, timbri
   datari in monospazio per le scadenze.
   ============================================================ */

:root {
    --carta: #F2F4F6;
    --scheda: #FFFFFF;
    --inchiostro: #1B2534;
    --testo-2: #5B6577;
    --blu: #234E9D;
    --blu-scuro: #17335F;
    --blu-tenue: #E8EEF9;
    --bollo: #C0392B;
    --bollo-tenue: #FBEAE7;
    --verde: #2E7D46;
    --verde-tenue: #E5F2E9;
    --ambra: #9A6A00;
    --ambra-tenue: #FBF1DA;
    --indaco: #4B3F9E;
    --indaco-tenue: #ECEAF7;
    --linea: #D9DFE7;
    --raggio: 10px;
    --font-display: "Archivo", system-ui, sans-serif;
    --font-testo: "Public Sans", system-ui, sans-serif;
    --font-mono: "IBM Plex Mono", ui-monospace, monospace;
}

body {
    background: var(--carta);
    color: var(--inchiostro);
    font-family: var(--font-testo);
    font-size: 0.95rem;
}

h1, h2, h3, .h3, .h4, .h5, .h6 {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--inchiostro);
}

a { color: var(--blu); }

/* ---- Barra di navigazione ------------------------------------ */

.navbar-bandi {
    background: var(--inchiostro);
    padding-top: .8rem;
    padding-bottom: .8rem;
}

.navbar-bandi .navbar-brand {
    font-family: var(--font-display);
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    font-size: 1rem;
    color: #fff;
}

.navbar-bandi .navbar-brand .brand-punto { color: #8FB3F2; }

.navbar-bandi .nav-link {
    color: #C4CDDC;
    font-size: .85rem;
    font-weight: 500;
}

.navbar-bandi .nav-link:hover { color: #fff; }

/* ---- Pannello filtri ----------------------------------------- */

.pannello-filtri {
    background: var(--scheda);
    border: 1px solid var(--linea);
    border-radius: var(--raggio);
}

.pannello-filtri .form-label {
    font-family: var(--font-mono);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--testo-2);
    margin-bottom: .35rem;
}

.form-control, .form-select {
    border-color: var(--linea);
    border-radius: 8px;
    font-size: .9rem;
}

.form-control:focus, .form-select:focus, .form-check-input:focus {
    border-color: var(--blu);
    box-shadow: 0 0 0 .2rem rgba(35, 78, 157, .15);
}

.form-check-input:checked { background-color: var(--blu); border-color: var(--blu); }

/* ---- Pulsanti ------------------------------------------------- */

.btn { border-radius: 8px; font-weight: 600; }

.btn-primary {
    background: var(--blu);
    border-color: var(--blu);
}

.btn-primary:hover, .btn-primary:focus {
    background: var(--blu-scuro);
    border-color: var(--blu-scuro);
}

.btn-outline-primary { color: var(--blu); border-color: var(--blu); }
.btn-outline-primary:hover { background: var(--blu); border-color: var(--blu); }

/* ---- Schede bando --------------------------------------------- */

.card-bando {
    background: var(--scheda);
    border: 1px solid var(--linea);
    border-radius: var(--raggio);
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.card-bando:hover {
    border-color: #AEBDD6;
    box-shadow: 0 6px 18px rgba(27, 37, 52, .07);
    transform: translateY(-1px);
}

.scheda-corpo { padding: 1rem 1.15rem; }

.bando-titolo {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 1.02rem;
    line-height: 1.35;
    color: var(--inchiostro);
    text-decoration: none;
}

.bando-titolo:hover { color: var(--blu); text-decoration: underline; }

.bando-meta {
    font-size: .8rem;
    color: var(--testo-2);
    margin-top: .3rem;
}

/* ---- Timbro scadenza (elemento firma) ------------------------- */

.timbro {
    font-family: var(--font-mono);
    border: 2px solid var(--testo-2);
    box-shadow: inset 0 0 0 2px var(--scheda), inset 0 0 0 3px var(--testo-2);
    border-radius: 6px;
    color: var(--testo-2);
    width: 4.1rem;
    min-width: 4.1rem;
    padding: .45rem 0 .4rem;
    text-align: center;
    line-height: 1.1;
    align-self: flex-start;
}

.timbro-giorno { display: block; font-size: 1.25rem; font-weight: 600; }

.timbro-mese {
    display: block;
    font-size: .62rem;
    font-weight: 600;
    letter-spacing: .18em;
    text-transform: uppercase;
    margin-top: .1rem;
}

.timbro-urgente { border-color: var(--bollo); color: var(--bollo); box-shadow: inset 0 0 0 2px var(--scheda), inset 0 0 0 3px var(--bollo); background: var(--bollo-tenue); }
.timbro-prossimo { border-color: var(--ambra); color: var(--ambra); box-shadow: inset 0 0 0 2px var(--scheda), inset 0 0 0 3px var(--ambra); background: var(--ambra-tenue); }
.timbro-chiuso { opacity: .45; }
.timbro-arrivo { border-color: var(--indaco); color: var(--indaco); box-shadow: inset 0 0 0 2px var(--scheda), inset 0 0 0 3px var(--indaco); background: var(--indaco-tenue); }

.timbro-vuoto {
    border-style: dashed;
    border-width: 1px;
    box-shadow: none;
    opacity: .55;
}

/* ---- Chip informativi ----------------------------------------- */

.chip {
    display: inline-block;
    font-family: var(--font-mono);
    font-size: .64rem;
    font-weight: 600;
    letter-spacing: .07em;
    text-transform: uppercase;
    padding: .18rem .5rem;
    border-radius: 99px;
    border: 1px solid var(--linea);
    color: var(--testo-2);
    background: transparent;
}

.chip-nuovo { background: var(--verde-tenue); border-color: var(--verde); color: var(--verde); }
.chip-scadenza { background: var(--ambra-tenue); border-color: var(--ambra); color: var(--ambra); }
.chip-chiuso { background: #EDEFF3; color: var(--testo-2); }
.chip-arrivo { background: var(--indaco-tenue); border-color: var(--indaco); color: var(--indaco); }
.chip-territorio { background: var(--blu-tenue); border-color: var(--blu); color: var(--blu); }
.chip-pratica { background: var(--blu-tenue); border-color: transparent; color: var(--blu-scuro); }
.chip-importo { color: var(--inchiostro); border-color: var(--inchiostro); }

/* ---- Azioni scheda (stella, nascondi) ------------------------- */

.azioni-scheda button {
    border: 0;
    background: transparent;
    padding: 0;
    line-height: 1;
    opacity: .75;
    transition: opacity .1s ease, transform .1s ease;
}

.azioni-scheda button:hover { opacity: 1; transform: scale(1.12); }

/* ---- Ricerche salvate ----------------------------------------- */

.chip-ricerca {
    font-family: var(--font-mono);
    font-size: .72rem;
    background: var(--scheda);
    border: 1px solid var(--linea);
    border-radius: 99px;
    padding: .28rem .75rem;
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}

.chip-ricerca a { color: var(--inchiostro); text-decoration: none; font-weight: 600; }
.chip-ricerca a:hover { color: var(--blu); }
.chip-ricerca button { border: 0; background: none; padding: 0; color: var(--testo-2); font-size: .7rem; }
.chip-ricerca button:hover { color: var(--bollo); }

/* ---- Calendario scadenze -------------------------------------- */

.mese-titolo {
    font-family: var(--font-mono);
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--testo-2);
    border-bottom: 2px solid var(--inchiostro);
    padding-bottom: .45rem;
    margin-top: 2.2rem;
}

.riga-scadenza {
    background: var(--scheda);
    border: 1px solid var(--linea);
    border-radius: var(--raggio);
    padding: .7rem .9rem;
    margin-bottom: .55rem;
    display: flex;
    align-items: center;
    gap: .95rem;
}

.riga-scadenza:hover { border-color: #AEBDD6; }

/* ---- Tabelle e dettaglio -------------------------------------- */

.card { border: 1px solid var(--linea); border-radius: var(--raggio); }

.table thead th {
    font-family: var(--font-mono);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--testo-2);
}

dl.dettaglio dt {
    font-family: var(--font-mono);
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--testo-2);
    padding-top: .15rem;
}

.valore-mono { font-family: var(--font-mono); font-weight: 600; }

/* ---- Paginazione ---------------------------------------------- */

.pagination { --bs-pagination-color: var(--blu); font-family: var(--font-mono); font-size: .82rem; }
.pagination .page-item.active .page-link { background: var(--blu); border-color: var(--blu); }

/* ---- Login ---------------------------------------------------- */

.login-wordmark {
    font-family: var(--font-display);
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
    text-align: center;
    margin-bottom: .2rem;
}

.login-sotto {
    font-family: var(--font-mono);
    font-size: .68rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--testo-2);
    text-align: center;
    margin-bottom: 1.6rem;
}

/* ---- Footer ---------------------------------------------------- */

.footer-bandi {
    border-top: 1px solid var(--linea);
    background: var(--scheda);
    font-size: .78rem;
    color: var(--testo-2);
}

.footer-bandi a { color: var(--blu); }

/* ---- Accessibilità -------------------------------------------- */

:focus-visible { outline: 2px solid var(--blu); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
    .card-bando, .azioni-scheda button { transition: none; }
    .card-bando:hover { transform: none; }
}

/* ---- Mobile --------------------------------------------------- */

/* Menu collassato (hamburger sotto i 768px): voci a tutta larghezza,
   spaziate per il tocco. */
@media (max-width: 767.98px) {
    .navbar-bandi .navbar-collapse { padding-top: .4rem; }
    .navbar-bandi .nav-link { padding: .55rem 0; font-size: .95rem; }
    .navbar-bandi form { width: 100%; }
    .navbar-bandi form .nav-link { text-align: left; }
}

/* Telefoni stretti: schede più compatte, timbro ridotto, tocchi più ampi. */
@media (max-width: 575.98px) {
    body { font-size: .92rem; }
    h1.h3 { font-size: 1.35rem; }
    .scheda-corpo { padding: .8rem .85rem; gap: .7rem !important; }
    .timbro { width: 3.4rem; min-width: 3.4rem; }
    .timbro-giorno { font-size: 1.05rem; }
    .azioni-scheda button { font-size: 1.35rem; padding: .1rem .15rem; }
}
