:root {
    --blu: #123b63;
    --blu-scuro: #0b2945;
    --azzurro: #e8f2fa;
    --testo: #17212b;
    --bordo: #c9d4df;
    --rosso: #a51d2d;
    --verde: #176b46;
    --sfondo: #f4f6f8;
    font-family: "Segoe UI", Arial, sans-serif;
    color: var(--testo);
    background: var(--sfondo);
}
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: var(--sfondo); }
a { color: var(--blu); }
.salva-contenuto, .salta-contenuto { position: absolute; left: -10000px; }
.salta-contenuto:focus { left: 1rem; top: 1rem; background: white; padding: .75rem; z-index: 10; }
.testata { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 5vw; background: var(--blu-scuro); color: white; }
.testata nav { display: flex; gap: 1rem; }
.testata a { color: white; }
.marchio { display: block; font-size: 1.35rem; font-weight: 700; }
.sottotitolo { font-size: .85rem; opacity: .8; }
.contenitore { width: min(1180px, 92vw); margin: 2rem auto; }
.footer { padding: 2rem 5vw; color: #52606d; text-align: center; }
.pagina-accesso { display: grid; place-items: center; padding: 2rem; background: linear-gradient(145deg, var(--blu-scuro), var(--blu)); }
.pannello-accesso { width: min(440px, 100%); background: white; padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: 12px; box-shadow: 0 18px 50px rgba(0,0,0,.22); }
.pannello-accesso.largo { width: min(760px, 100%); }
.identita-portale { margin-bottom: 1.5rem; }
.campo { display: grid; gap: .4rem; margin-bottom: 1rem; }
.campo label { font-weight: 600; }
.campo input { width: 100%; min-height: 44px; padding: .65rem .75rem; border: 1px solid var(--bordo); border-radius: 6px; font: inherit; }
.campo input:focus { outline: 3px solid #8cc8f3; border-color: var(--blu); }
.campo span { color: var(--rosso); font-size: .85rem; }
.griglia-form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 1rem; }
.pulsante { border: 0; border-radius: 6px; min-height: 44px; padding: .7rem 1.25rem; font: inherit; font-weight: 700; cursor: pointer; }
.primario { background: var(--blu); color: white; }
.primario:hover { background: var(--blu-scuro); }
.messaggio { display: block; padding: .8rem; margin: 1rem 0; background: var(--azzurro); border-left: 4px solid var(--blu); }
.errore { background: #fff0f1; border-color: var(--rosso); color: #741421; }
.successo { background: #ecf8f2; border-color: var(--verde); color: #0d5234; }
.nota { font-size: .9rem; color: #52606d; }
.intestazione-pagina { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.occhiello { color: var(--blu); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; margin-bottom: .25rem; }
.intestazione-pagina h1 { margin-top: 0; }
.badge, .stato { display: inline-block; padding: .3rem .6rem; border-radius: 999px; background: var(--azzurro); color: var(--blu-scuro); font-size: .85rem; }
.stato.attivo { background: #dff4e9; color: var(--verde); }
.griglia-card { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 1rem; }
.card { background: white; border: 1px solid var(--bordo); border-radius: 10px; padding: 1.25rem; }
.card h2 { margin-top: 0; font-size: 1.15rem; }
@media (max-width: 640px) {
    .testata, .intestazione-pagina { align-items: flex-start; flex-direction: column; }
    .griglia-form { grid-template-columns: 1fr; }
    .pagina-accesso { padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
    * { scroll-behavior: auto !important; transition: none !important; }
}

.collegamento-pulsante { text-decoration: none; display: inline-flex; align-items: center; }
.barra-ricerca { display: grid; grid-template-columns: minmax(180px,1fr) auto; gap: .5rem; align-items: end; margin-bottom: 1rem; }
.barra-ricerca label { grid-column: 1 / -1; font-weight: 600; }
.barra-ricerca input { min-height: 44px; padding: .65rem .75rem; border: 1px solid var(--bordo); border-radius: 6px; }
.tabella-responsive { overflow-x: auto; background: white; border: 1px solid var(--bordo); border-radius: 8px; }
.tabella { width: 100%; border-collapse: collapse; }
.tabella th, .tabella td { padding: .75rem; border-bottom: 1px solid var(--bordo); text-align: left; vertical-align: top; }
.tabella th { background: var(--azzurro); color: var(--blu-scuro); }
.tabella td a { margin-right: .75rem; }
.paginazione { display: flex; justify-content: center; align-items: center; gap: 1rem; margin-top: 1rem; }
fieldset.campo { border: 1px solid var(--bordo); border-radius: 8px; padding: 1rem; }
fieldset.campo ul { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit,minmax(180px,1fr)); gap: .5rem; }
fieldset.campo label { font-weight: 400; margin-left: .35rem; }
