/* =========================
   PADDING
   ========================= */

/* All sides */
.p-20  { padding: 20px; }
.p-40  { padding: 40px; }
.p-60  { padding: 60px; }
.p-80  { padding: 80px; }
.p-120 { padding: 120px; }
.p-160 { padding: 160px; }

/* Vertical */
.py-20  { padding-top: 20px;   padding-bottom: 20px; }
.py-40  { padding-top: 40px;   padding-bottom: 40px; }
.py-60  { padding-top: 60px;   padding-bottom: 60px; }
.py-80  { padding-top: 80px;   padding-bottom: 80px; }
.py-120 { padding-top: 120px;  padding-bottom: 120px; }
.py-160 { padding-top: 160px;  padding-bottom: 160px; }

/* Horizontal */
.px-20  { padding-left: 20px;  padding-right: 20px; }
.px-40  { padding-left: 40px;  padding-right: 40px; }
.px-60  { padding-left: 60px;  padding-right: 60px; }
.px-80  { padding-left: 80px;  padding-right: 80px; }
.px-120 { padding-left: 120px; padding-right: 120px; }
.px-160 { padding-left: 160px; padding-right: 160px; }

/* Individual sides */
.pt-20  { padding-top: 20px; }
.pt-40  { padding-top: 40px; }
.pt-60  { padding-top: 60px; }
.pt-80  { padding-top: 80px; }
.pt-120 { padding-top: 120px; }
.pt-160 { padding-top: 160px; }

.pb-20  { padding-bottom: 20px; }
.pb-40  { padding-bottom: 40px; }
.pb-60  { padding-bottom: 60px; }
.pb-80  { padding-bottom: 80px; }
.pb-120 { padding-bottom: 120px; }
.pb-160 { padding-bottom: 160px; }

.pl-20  { padding-left: 20px; }
.pl-40  { padding-left: 40px; }
.pl-60  { padding-left: 60px; }
.pl-80  { padding-left: 80px; }
.pl-120 { padding-left: 120px; }
.pl-160 { padding-left: 160px; }

.pr-20  { padding-right: 20px; }
.pr-40  { padding-right: 40px; }
.pr-60  { padding-right: 60px; }
.pr-80  { padding-right: 80px; }
.pr-120 { padding-right: 120px; }
.pr-160 { padding-right: 160px; }


/* =========================
   MARGIN
   ========================= */

/* All sides */
.m-20  { margin: 20px; }
.m-40  { margin: 40px; }
.m-60  { margin: 60px; }
.m-80  { margin: 80px; }
.m-120 { margin: 120px; }
.m-160 { margin: 160px; }

/* Vertical */
.my-20  { margin-top: 20px;   margin-bottom: 20px; }
.my-40  { margin-top: 40px;   margin-bottom: 40px; }
.my-60  { margin-top: 60px;   margin-bottom: 60px; }
.my-80  { margin-top: 80px;   margin-bottom: 80px; }
.my-120 { margin-top: 120px;  margin-bottom: 120px; }
.my-160 { margin-top: 160px;  margin-bottom: 160px; }

/* Horizontal */
.mx-20  { margin-left: 20px;  margin-right: 20px; }
.mx-40  { margin-left: 40px;  margin-right: 40px; }
.mx-60  { margin-left: 60px;  margin-right: 60px; }
.mx-80  { margin-left: 80px;  margin-right: 80px; }
.mx-120 { margin-left: 120px; margin-right: 120px; }
.mx-160 { margin-left: 160px; margin-right: 160px; }

/* Individual sides */
.mt-20  { margin-top: 20px; }
.mt-40  { margin-top: 40px; }
.mt-60  { margin-top: 60px; }
.mt-80  { margin-top: 80px; }
.mt-120 { margin-top: 120px; }
.mt-160 { margin-top: 160px; }

.mb-20  { margin-bottom: 20px; }
.mb-40  { margin-bottom: 40px; }
.mb-60  { margin-bottom: 60px; }
.mb-80  { margin-bottom: 80px; }
.mb-120 { margin-bottom: 120px; }
.mb-160 { margin-bottom: 160px; }

.ml-20  { margin-left: 20px; }
.ml-40  { margin-left: 40px; }
.ml-60  { margin-left: 60px; }
.ml-80  { margin-left: 80px; }
.ml-120 { margin-left: 120px; }
.ml-160 { margin-left: 160px; }

.mr-20  { margin-right: 20px; }
.mr-40  { margin-right: 40px; }
.mr-60  { margin-right: 60px; }
.mr-80  { margin-right: 80px; }
.mr-120 { margin-right: 120px; }
.mr-160 { margin-right: 160px; }

@media (min-width: 992px) {

    .m-lg-20  { margin: 20px !important; }
    .m-lg-40  { margin: 40px !important; }
    .m-lg-60  { margin: 60px !important; }
    .m-lg-80  { margin: 80px !important; }
    .m-lg-120 { margin: 120px !important; }
    .m-lg-160 { margin: 160px !important; }

    .mt-lg-20  { margin-top: 20px !important; }
    .mt-lg-40  { margin-top: 40px !important; }
    .mt-lg-60  { margin-top: 60px !important; }
    .mt-lg-80  { margin-top: 80px !important; }
    .mt-lg-120 { margin-top: 120px !important; }
    .mt-lg-160 { margin-top: 160px !important; }

    .mb-lg-20  { margin-bottom: 20px !important; }
    .mb-lg-40  { margin-bottom: 40px !important; }
    .mb-lg-60  { margin-bottom: 60px !important; }
    .mb-lg-80  { margin-bottom: 80px !important; }
    .mb-lg-120 { margin-bottom: 120px !important; }
    .mb-lg-160 { margin-bottom: 160px !important; }

    .ml-lg-20  { margin-left: 20px !important; }
    .ml-lg-40  { margin-left: 40px !important; }
    .ml-lg-60  { margin-left: 60px !important; }
    .ml-lg-80  { margin-left: 80px !important; }
    .ml-lg-120 { margin-left: 120px !important; }
    .ml-lg-160 { margin-left: 160px !important; }

    .mr-lg-20  { margin-right: 20px !important; }
    .mr-lg-40  { margin-right: 40px !important; }
    .mr-lg-60  { margin-right: 60px !important; }
    .mr-lg-80  { margin-right: 80px !important; }
    .mr-lg-120 { margin-right: 120px !important; }
    .mr-lg-160 { margin-right: 160px !important; }

    .mx-lg-20  { margin-left: 20px !important; margin-right: 20px !important; }
    .mx-lg-40  { margin-left: 40px !important; margin-right: 40px !important; }
    .mx-lg-60  { margin-left: 60px !important; margin-right: 60px !important; }
    .mx-lg-80  { margin-left: 80px !important; margin-right: 80px !important; }
    .mx-lg-120 { margin-left: 120px !important; margin-right: 120px !important; }
    .mx-lg-160 { margin-left: 160px !important; margin-right: 160px !important; }

    .my-lg-20  { margin-top: 20px !important; margin-bottom: 20px !important; }
    .my-lg-40  { margin-top: 40px !important; margin-bottom: 40px !important; }
    .my-lg-60  { margin-top: 60px !important; margin-bottom: 60px !important; }
    .my-lg-80  { margin-top: 80px !important; margin-bottom: 80px !important; }
    .my-lg-120 { margin-top: 120px !important; margin-bottom: 120px !important; }
    .my-lg-160 { margin-top: 160px !important; margin-bottom: 160px !important; }

    /* PADDING */
    .p-lg-20  { padding: 20px !important; }
    .p-lg-40  { padding: 40px !important; }
    .p-lg-60  { padding: 60px !important; }
    .p-lg-80  { padding: 80px !important; }
    .p-lg-120 { padding: 120px !important; }
    .p-lg-160 { padding: 160px !important; }

    .pt-lg-20  { padding-top: 20px !important; }
    .pt-lg-40  { padding-top: 40px !important; }
    .pt-lg-60  { padding-top: 60px !important; }
    .pt-lg-80  { padding-top: 80px !important; }
    .pt-lg-120 { padding-top: 120px !important; }
    .pt-lg-160 { padding-top: 160px !important; }

    .pb-lg-20  { padding-bottom: 20px !important; }
    .pb-lg-40  { padding-bottom: 40px !important; }
    .pb-lg-60  { padding-bottom: 60px !important; }
    .pb-lg-80  { padding-bottom: 80px !important; }
    .pb-lg-120 { padding-bottom: 120px !important; }
    .pb-lg-160 { padding-bottom: 160px !important; }

    .pl-lg-20  { padding-left: 20px !important; }
    .pl-lg-40  { padding-left: 40px !important; }
    .pl-lg-60  { padding-left: 60px !important; }
    .pl-lg-80  { padding-left: 80px !important; }
    .pl-lg-120 { padding-left: 120px !important; }
    .pl-lg-160 { padding-left: 160px !important; }

    .pr-lg-20  { padding-right: 20px !important; }
    .pr-lg-40  { padding-right: 40px !important; }
    .pr-lg-60  { padding-right: 60px !important; }
    .pr-lg-80  { padding-right: 80px !important; }
    .pr-lg-120 { padding-right: 120px !important; }
    .pr-lg-160 { padding-right: 160px !important; }

    .px-lg-20  { padding-left: 20px !important; padding-right: 20px !important; }
    .px-lg-40  { padding-left: 40px !important; padding-right: 40px !important; }
    .px-lg-60  { padding-left: 60px !important; padding-right: 60px !important; }
    .px-lg-80  { padding-left: 80px !important; padding-right: 80px !important; }
    .px-lg-120 { padding-left: 120px !important; padding-right: 120px !important; }
    .px-lg-160 { padding-left: 160px !important; padding-right: 160px !important; }

    .py-lg-20  { padding-top: 20px !important; padding-bottom: 20px !important; }
    .py-lg-40  { padding-top: 40px !important; padding-bottom: 40px !important; }
    .py-lg-60  { padding-top: 60px !important; padding-bottom: 60px !important; }
    .py-lg-80  { padding-top: 80px !important; padding-bottom: 80px !important; }
    .py-lg-120 { padding-top: 120px !important; padding-bottom: 120px !important; }
    .py-lg-160 { padding-top: 160px !important; padding-bottom: 160px !important; }
}

/* === BASE PER TUTTI I TITOLI === */
h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
    font-family: var(--heading-font-family), serif;
    font-weight: var(--heading-font-weight);
    text-transform: var(--heading-text-transform);
    line-height: var(--heading-line-height);
    letter-spacing: var(--heading-letter-spacing);
    color: var(--heading-color);
    text-decoration: none;
    font-style: normal;
    word-wrap: break-word;
    margin: 0 0 0.6em;
}

/* === DIMENSIONI (via variabili) === */
h1, .h1 { font-size: var(--heading-h1-size); }
h2, .h2 { font-size: var(--heading-h2-size); }
h3, .h3 { font-size: var(--heading-h3-size); }
h4, .h4 { font-size: var(--heading-h4-size); }
h5, .h5 { font-size: var(--heading-h5-size); }
h6, .h6 { font-size: var(--heading-h6-size); }
p {
    font-size: var(--paragraph-font-size);
    line-height: var(--paragraph-line-height);
    opacity: var(--paragraph-opacity);
}
.text-script {
    font-family: var(--font-script), serif;
}
.bg-green{
    --bs-bg-opacity:1;
    background-color: var(--bs-success);
}

.z-1 { z-index: 1 !important; }
.z-10 { z-index: 10 !important; }
.z-50 { z-index: 50 !important; }
.z-100 { z-index: 100 !important; }
.z-999 { z-index: 999 !important; }

.object-cover { object-fit: cover !important; }
.object-contain { object-fit: contain !important; }
.object-center { object-position: center !important; }

/* Base */
.vh-25 { height: 25vh !important; }
.vh-33 { height: 33vh !important; }
.vh-50 { height: 50vh !important; }
.vh-75 { height: 75vh !important; }
.vh-100 { height: 100vh !important; }

@media (max-width: 767.98px) {
    .vh-sm-25 { height: 25vh !important; }
    .vh-sm-33 { height: 33vh !important; }
    .vh-sm-50 { height: 50vh !important; }
    .vh-sm-75 { height: 75vh !important; }
    .vh-sm-100 { height: 100vh !important; }
}

/* md+ */
@media (min-width: 768px) {
    .vh-md-25 { height: 25vh !important; }
    .vh-md-33 { height: 33vh !important; }
    .vh-md-50 { height: 50vh !important; }
    .vh-md-75 { height: 75vh !important; }
    .vh-md-100 { height: 100vh !important; }
}

/* lg+ */
@media (min-width: 992px) {
    .vh-lg-25 { height: 25vh !important; }
    .vh-lg-33 { height: 33vh !important; }
    .vh-lg-50 { height: 50vh !important; }
    .vh-lg-75 { height: 75vh !important; }
    .vh-lg-100 { height: 100vh !important; }
}

/* xl+ */
@media (min-width: 1200px) {
    .vh-xl-25 { height: 25vh !important; }
    .vh-xl-33 { height: 33vh !important; }
    .vh-xl-50 { height: 50vh !important; }
    .vh-xl-75 { height: 75vh !important; }
    .vh-xl-100 { height: 100vh !important; }
}

/* xxl+ */
@media (min-width: 1400px) {
    .vh-xxl-25 { height: 25vh !important; }
    .vh-xxl-33 { height: 33vh !important; }
    .vh-xxl-50 { height: 50vh !important; }
    .vh-xxl-75 { height: 75vh !important; }
    .vh-xxl-100 { height: 100vh !important; }
}


.btn-circle {
    width: 48px;
    height: 48px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    justify-content: center;
    align-items: center;
}

.btn-circle-sm {
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    justify-content: center;
    align-items: center;
}

.btn-circle-lg {
    width: 56px;
    height: 56px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    justify-content: center;
    align-items: center;
}
.font-primary {
    font-family: var(--bs-body-font-family), serif;
}
.font-secondary {
    font-family: var(--heading-font-family), serif;
}
.bg-hero {
    background-color: var(--bs-hero);
}

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;

    inset: 0;
    background: linear-gradient(
            180deg,
            rgba(0,0,0,.60) 50%,
            rgba(0,0,0,.40) 70%,
            rgba(0,0,0,.35) 100%
    );
    pointer-events: none;
}
.fs-65{
    font-size: 65px;
}
.fs-7 {
    font-size: .6rem !important;
}
/* ============================================
   Responsive Fluid Images (Bootstrap-style)
   ============================================ */

/* img-sm-fluid → fluid da sm in giù */
@media (max-width: 575.98px) {
    .img-sm-fluid {
        width: 100% !important;
        height: auto !important;
        position: static !important;
        object-fit: contain !important;
        object-position: center !important;
    }
}

/* img-md-fluid → fluid da md in giù */
@media (max-width: 767.98px) {
    .img-md-fluid {
        width: 100% !important;
        height: auto !important;
        position: static !important;
        object-fit: contain !important;
        object-position: center !important;
    }
}

/* img-lg-fluid → fluid da lg in giù */
@media (max-width: 991.98px) {
    .img-lg-fluid {
        width: 100% !important;
        height: auto !important;
        position: static !important;
        object-fit: contain !important;
        object-position: center !important;
    }
}

/* img-xl-fluid → fluid da xl in giù */
@media (max-width: 1199.98px) {
    .img-xl-fluid {
        width: 100% !important;
        height: auto !important;
        position: static !important;
        object-fit: contain !important;
        object-position: center !important;
    }
}

/* img-xxl-fluid → fluid da xxl in giù */
@media (max-width: 1399.98px) {
    .img-xxl-fluid {
        width: 100% !important;
        height: auto !important;
        position: static !important;
        object-fit: contain !important;
        object-position: center !important;
    }
}

/* Sotto LG → forza btn-sm */
@media (max-width: 991.98px) {
    .btn-lg-down-sm {
        padding: .25rem .5rem !important;
        font-size: .875rem !important;
    }
}

/* Da LG → btn-lg */
@media (min-width: 992px) {
    .btn-lg-down-sm {
        padding: .5rem 1rem !important;
        font-size: 1.25rem !important;
    }
}