/* ── display & flex ── */
.d-none{display:none!important}
.d-inline{display:inline!important}
.d-inline-block{display:inline-block!important}
.d-block{display:block!important}
.d-flex{display:flex!important}
.flex-row{flex-direction:row!important}
.flex-column{flex-direction:column!important}
.flex-wrap{flex-wrap:wrap!important}
.flex-shrink-0{flex-shrink:0!important}
.justify-content-start{justify-content:flex-start!important}
.justify-content-center{justify-content:center!important}
.justify-content-between{justify-content:space-between!important}
.justify-content-end{justify-content:flex-end!important}
.align-items-start{align-items:flex-start!important}
.align-items-center{align-items:center!important}
.align-items-end{align-items:flex-end!important}
.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}
.w-100{width:100%!important}
.ms-auto{margin-left:auto!important}.me-auto{margin-right:auto!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}
/* ── spacing scale (m/p × sides × 0..5) ── */
.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}
.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}
.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}
.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}
.my-0{margin-top:0!important;margin-bottom:0!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}
.mx-0{margin-left:0!important;margin-right:0!important}
.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}
.pt-3{padding-top:1rem!important}.pb-3{padding-bottom:1rem!important}
.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}
.px-3{padding-left:1rem!important;padding-right:1rem!important}
/* ── text ── */
.text-muted{color:var(--muted)!important}
.text-center{text-align:center!important}
.text-end{text-align:right!important}
.text-danger{color:var(--danger)!important}
.small{font-size:var(--fs-sm)!important}
.fw-medium{font-weight:500!important}
.fw-bold{font-weight:700!important}
.text-decoration-none{text-decoration:none!important}
/* ── grid (12 col, gutters via g-*) ── */
.row{display:flex;flex-wrap:wrap;margin-right:calc(-.5*var(--gx,1.5rem));margin-left:calc(-.5*var(--gx,1.5rem))}
.row>*{padding-right:calc(.5*var(--gx,1.5rem));padding-left:calc(.5*var(--gx,1.5rem));width:100%}
.g-0{--gx:0;row-gap:0}.g-2{--gx:.5rem;row-gap:.5rem}.g-3{--gx:1rem;row-gap:1rem}.g-4{--gx:1.5rem;row-gap:1.5rem}
.col-12{width:100%}
.col-6{width:50%}
@media(min-width:768px){
  .d-md-block{display:block!important}.d-md-none{display:none!important}
  .col-md-6{width:50%}
}
@media(min-width:992px){
  .col-lg-6{width:50%}.col-lg-5{width:41.6667%}.col-lg-7{width:58.3333%}.col-lg-4{width:33.3333%}.col-lg-3{width:25%}
  .d-lg-none{display:none!important}.d-lg-block{display:block!important}
}
@media(max-width:991.98px){
  .col-lg-6,.col-lg-5,.col-lg-7,.col-lg-4,.col-lg-3{width:100%}
}
/* ── accessibilita' ── */
/* Nascosto all'occhio ma non ai lettori di schermo, ne' al browser: serve a
   cio' che deve **esistere** senza doversi vedere — l'esempio e' il campo
   username accanto a una password, che i gestori di password pretendono per
   sapere a chi appartiene la credenziale. `display:none` non andrebbe: quello
   toglie l'elemento a tutti, gestori di password compresi. */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ── extra (SP2-3) ── */
.rounded-circle{border-radius:50%!important}
.fixed-top{position:fixed;top:0;right:0;left:0;z-index:var(--z-navbar)}
.h4{font-size:1.075rem!important;font-weight:600;line-height:1.25}
.fs-2{font-size:1.5rem!important}
.fs-4{font-size:1.15rem!important}
.fs-5{font-size:1.05rem!important}
.text-light{color:var(--text)!important}
.text-primary{color:var(--accent-text)!important}
.bg-dark{background:var(--surface-2)!important}
.border-primary{border-color:var(--accent)!important}
.col-sm-6{width:100%}
.col-xl-3{width:100%}
@media(min-width:576px){.col-sm-6{width:50%}}
@media(min-width:768px){.flex-md-row{flex-direction:row!important}.align-items-md-center{align-items:center!important}}
@media(min-width:1200px){.col-xl-3{width:25%}}
