/* Personalizzazioni comuni: Bootstrap e i widget esistenti restano invariati. */
html { font-size: 14px; }
:root { --portal-primary: #005b9f; --portal-primary-hover: #003d6b; }
body { font-size: 1rem; color: #243746; background: #fff !important; line-height: 1.55; }
h1, h2, h3 { color: #002147; line-height: 1.25; overflow-wrap: break-word; }
h1 { font-size: 1.9rem; margin: 0 0 1.25rem; }
h2, .h2 { font-size: 1.4rem; }
h3, .h3 { font-size: 1.25rem; }
h4, .h4 { font-size: 1.1rem; }
h5, .h5 { font-size: 1rem; }
h6, .h6 { font-size: .93rem; }
.h1 { font-size: 1.9rem; }
.navbar-brand { font-size: 1.2rem; }
.btn, .form-control, .dropdown-menu, .panel-title, .pagination { font-size: 1rem; }
.btn-lg, .input-lg { font-size: 1.14rem; }
.btn-sm, .btn-xs, .input-sm { font-size: .875rem; }
p { margin-bottom: 1rem; }
a { color: var(--portal-primary); text-decoration: underline; }
a:hover { color: var(--portal-primary-hover); }
.text-primary, .btn-link, .btn-primary .badge, .navbar .badge { color: var(--portal-primary); }
a.text-primary:hover, a.text-primary:focus, .btn-link:hover, .btn-link:focus { color: var(--portal-primary-hover); }
a:focus, button:focus, input:focus, select:focus, textarea:focus, [tabindex]:not([tabindex="-1"]):focus {
    outline: 2px solid #006fc6;
    outline-offset: 2px;
}
/* Il clic non disegna cornici; il focus da tastiera rimane visibile. */
@supports selector(:focus-visible) {
    a:focus:not(:focus-visible), button:focus:not(:focus-visible),
    input:focus:not(:focus-visible), select:focus:not(:focus-visible),
    textarea:focus:not(:focus-visible), [tabindex]:focus:not(:focus-visible),
    #main-content :focus:not(:focus-visible) {
        outline: none;
    }
}
#main-content:focus { outline: none; }
.skip-link { position: fixed; top: -10rem; left: 1rem; z-index: 2000; background: #fff; padding: .75rem 1rem; border: 2px solid #002147; }
.skip-link:focus { top: .5rem; }
.navbar-inverse, .navbar-default { background: var(--portal-primary); border-color: var(--portal-primary); }
.navbar .navbar-brand, .navbar .navbar-nav > li > a, .navbar .btn-link { color: #fff; text-decoration: none; }
.navbar .navbar-brand:hover, .navbar .navbar-brand:focus,
.navbar .navbar-nav > li > a:hover, .navbar .navbar-nav > li > a:focus,
.navbar .navbar-nav > .active > a, .navbar .navbar-nav > .active > a:hover, .navbar .navbar-nav > .active > a:focus,
.navbar .navbar-nav > .open > a, .navbar .navbar-nav > .open > a:hover, .navbar .navbar-nav > .open > a:focus,
.navbar .navbar-toggle:hover, .navbar .navbar-toggle:focus,
.navbar .btn-link:hover, .navbar .btn-link:focus { background: var(--portal-primary-hover); color: #fff; }
.navbar .navbar-toggle { border-color: #fff; }
.navbar .navbar-toggle .icon-bar { background: #fff; }
.navbar .navbar-brand:focus-visible, .navbar .navbar-nav > li > a:focus-visible,
.navbar .navbar-toggle:focus-visible, .navbar .btn-primary:focus-visible, .navbar .btn-link:focus-visible {
    outline: 2px solid #fff; outline-offset: -3px;
}
.footer a:focus-visible { outline-color: #fff; }
.dropdown-menu {
    min-width: 220px; width: max-content; max-width: min(32rem, calc(100vw - 2rem));
    padding: 6px; margin-top: 6px; border: 1px solid #d7dfe8; border-radius: .5rem;
    box-shadow: 0 8px 24px rgba(0, 33, 71, .16);
}
.dropdown-menu > li > a {
    min-height: 40px; padding: 9px 12px; border-radius: .3rem; line-height: 1.4;
    color: #243746; text-decoration: none; white-space: normal; overflow-wrap: anywhere;
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { background: #edf2f7; color: var(--portal-primary-hover); text-decoration: none; }
.dropdown-menu > li > a:focus-visible { outline: 2px solid var(--portal-primary); outline-offset: -3px; }
.dropdown-menu > .active > a:focus-visible { outline-color: #fff; }
.dropdown-menu .divider, .dropdown-menu .dropdown-divider { height: 1px; margin: 6px 8px; background: #d7dfe8; }
.dropdown-menu .dropdown-header { padding: 8px 12px; color: #516579; font-weight: 600; }
.dropdown-menu .dropdown-header:empty { display: none; }
.wrap { min-height: calc(100vh - 60px); margin: 0; padding: 0; }
.wrap > .container { padding-top: 80px; padding-bottom: 2rem; }
main { min-width: 0; }
/* Mappe e marker mantengono le dimensioni calibrate dai rispettivi widget. */
main :where(img:not([usemap]):not(.mapster_el):not(.leaflet-tile):not(.leaflet-marker-icon):not(.leaflet-marker-shadow):not(.leaflet-image-layer)) {
    max-width: 100%;
    height: auto;
}
main .thumbnail img { max-height: 240px; object-fit: contain; }
.breadcrumb { background: #e8edf3; border-radius: .4rem; margin-bottom: 1.5rem; }
.panel { border-color: #d7dfe8; border-radius: .5rem; box-shadow: 0 2px 6px rgba(0,33,71,.08); }
.panel-default > .panel-heading { background: #edf2f7; color: #002147; padding: 1rem; }
.panel-body { padding: 1.25rem; }
.btn { min-height: 40px; padding: .5rem 1rem; border-radius: .35rem; font-weight: 600; text-decoration: none; white-space: normal; }
.input-group-btn > .btn { white-space: nowrap; }
.btn-primary, .panel-primary > .panel-heading, .bg-primary, .label-primary,
.pagination > .active > a, .pagination > .active > span,
.nav-pills > li.active > a, .dropdown-menu > .active > a,
.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
    background: var(--portal-primary); border-color: var(--portal-primary); color: #fff;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary.focus,
.btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle,
.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus,
.btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus,
.open > .btn-primary.dropdown-toggle:hover, .open > .btn-primary.dropdown-toggle:focus, .open > .btn-primary.dropdown-toggle.focus,
.pagination > .active > a:hover, .pagination > .active > a:focus,
.pagination > .active > span:hover, .pagination > .active > span:focus,
.nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus,
.dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus {
    background: var(--portal-primary-hover); border-color: var(--portal-primary-hover); color: #fff;
}
.btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus,
.btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus,
fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary.focus {
    background: var(--portal-primary); border-color: var(--portal-primary);
}
.panel-primary { border-color: var(--portal-primary); }
/* Il dimensionamento comune dei pulsanti non deve ingrandire le azioni compatte. */
.btn.btn-xs, .btn-group-xs > .btn {
    min-height: 28px; min-width: 28px; padding: 4px 6px; font-size: .875rem; line-height: 1.3; white-space: nowrap;
}
/* shortcut: l'affiancamento usa :has(), aggiungere classi alle colonne se servono browser legacy. */
.grid-view td:has(> a.btn-xs, > a[data-method="post"][data-confirm]) { white-space: nowrap; }
.grid-view td:has(> a.btn-xs, > a[data-method="post"][data-confirm]) > a {
    display: inline-flex; align-items: center; justify-content: center; gap: 4px; vertical-align: middle;
    min-width: 28px; min-height: 28px; padding: 4px 6px; font-size: .875rem; line-height: 1.3; white-space: nowrap;
}
.grid-view td:has(> a.btn-xs, > a[data-method="post"][data-confirm]) > a + a { margin-left: 6px; }
.btn-default { color: #002147; background: #fff; border-color: #7c8d9c; }
label { font-weight: 600; }
.form-group { margin-bottom: 1.25rem; }
.form-control { min-height: 40px; border-color: #788c9e; border-radius: .35rem; }
textarea.form-control { height: auto; }
.form-control:focus { outline: none; border-color: #005b9f; box-shadow: 0 0 0 2px rgba(0,91,159,.15); }
.help-block { font-size: .9rem; }
.has-error .help-block, .error-summary { color: #a12622; }
.error-summary { border-radius: .35rem; }
.alert { border-radius: .4rem; padding: 1rem; }
.alert-warning { color: #663c00; background: #fff4db; border-color: #d4a44b; }
.table > thead > tr > th { vertical-align: middle; background: #edf2f7; color: #002147; border-bottom: 2px solid #8ba0b3; }
.table > tbody > tr > td, .table > thead > tr > th { padding: .65rem; }
.table-striped > tbody > tr:nth-of-type(odd) { background: #f5f8fb; }
.table-responsive { border-radius: .35rem; }
/* Il caricamento resta attenuato, senza lo spinner nascosto dietro al pulsante +/−. */
.grid-view .kv-expand-detail-loading { background-image: none; }
.grid-view .kv-expand-detail-loading .btn { cursor: wait; }
.pagination > li > a, .pagination > li > span { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; min-width: 40px; color: var(--portal-primary); }
.pagination > li > a:hover, .pagination > li > a:focus { color: var(--portal-primary-hover); }
.modal-content { border-radius: .5rem; }
.modal-header { background: #edf2f7; }
.modal-title { color: #002147; }
.footer { height: auto; min-height: 60px; padding: 16px 0; background: var(--portal-primary); color: #fff; }
.footer p { margin-bottom: 0; }
.footer a { color: #fff; }
.payment-result, .payment-index { max-width: 960px; margin: 0 auto; }
.site-login { max-width: 460px; margin: 1rem auto; padding: 1.5rem; border: 1px solid #d7dfe8; border-radius: .5rem; background: #fff; }
.site-login h1, .site-login h3 { font-size: 1.6rem; margin-top: 0; margin-bottom: 1.5rem; }
.site-login > br { display: none; }
.site-login .form-horizontal .form-group { margin-left: 0; margin-right: 0; }
.site-login .form-horizontal [class*="col-"] { float: none; width: 100%; margin-left: 0; }
.site-login .form-horizontal div[class*="col-"] { padding-left: 0; padding-right: 0; }
.site-login .form-horizontal .control-label { text-align: left; padding: 0 0 5px; }
.site-login .captcha-img { margin-bottom: .75rem; }
.site-login .captcha-img img { display: block; width: 160px; height: 70px; object-fit: contain; }
.site-login .hint-block { color: #516579; font-size: .875rem; }
.site-login .help-block { margin-bottom: 0; }
.site-login .help-block:empty { display: none; }
.site-login .login-actions { margin-top: 1.5rem; margin-bottom: 0; }
@media (min-width: 768px) {
    /* Il pulsante da 40px deve rientrare nella barra da 60px senza allungarla. */
    .navbar .navbar-form { margin-top: 10px; margin-bottom: 10px; }
}
@media (max-width: 767px) {
    h1 { font-size: 1.5rem; }
    .panel-body { padding: 1rem; }
    .wrap > .container { padding-left: 1rem; padding-right: 1rem; }
    .form-control { font-size: 16px; }
    .navbar .navbar-nav .open .dropdown-menu {
        width: auto; min-width: 0; max-width: 100%; margin: 4px 0 8px; padding: 4px;
        border: 0; border-radius: .35rem; box-shadow: none; background: rgba(255, 255, 255, .08);
    }
    .navbar .navbar-nav .open .dropdown-menu > li > a { padding: 9px 12px; color: #fff; }
    .navbar .navbar-nav .open .dropdown-menu .dropdown-header { color: #fff; }
    .navbar .navbar-nav .open .dropdown-menu > li > a:hover,
    .navbar .navbar-nav .open .dropdown-menu > li > a:focus,
    .navbar .navbar-nav .open .dropdown-menu > .active > a,
    .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
    .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { background: var(--portal-primary-hover); color: #fff; }
    .navbar .navbar-nav .open .dropdown-menu > li > a:focus-visible { outline: 2px solid #fff; outline-offset: -3px; }
    .dl-horizontal dd { margin-bottom: .75rem; }
    .site-login { padding: 1.25rem; margin-top: .5rem; }
}
@media (prefers-reduced-motion: reduce) {
    .collapsing, .fade { transition: none; }
}
