/*
    Theme Name: Biffi
    Author: Egloo
    Author URI: https://egloo.it
    Version: 1.0.0
    Text Domain: eg-biffi
    Description: A custom WordPress theme for Biffi, designed by Egloo.
    License: GNU General Public License v2 or later
    License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

@font-face {
    font-family: "Adobe Garamond Pro";
    src: url("assets/fonts/adobe-garamond-pro/adobe-garamond-pro-400.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Adobe Garamond Pro";
    src: url("assets/fonts/adobe-garamond-pro/adobe-garamond-pro-400-italic.woff2") format("woff2");
    font-weight: 400;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: "Adobe Garamond Pro";
    src: url("assets/fonts/adobe-garamond-pro/adobe-garamond-pro-600.woff2") format("woff2");
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Adobe Garamond Pro";
    src: url("assets/fonts/adobe-garamond-pro/adobe-garamond-pro-600-italic.woff2") format("woff2");
    font-weight: 600;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: "Adobe Garamond Pro";
    src: url("assets/fonts/adobe-garamond-pro/adobe-garamond-pro-700.woff2") format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Adobe Garamond Pro";
    src: url("assets/fonts/adobe-garamond-pro/adobe-garamond-pro-700-italic.woff2") format("woff2");
    font-weight: 700;
    font-style: italic;
    font-display: swap;
}

* {
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

dialog {
    margin: auto;
}

a,
input,
textarea,
select,
button,
h1,
h2,
h3,
h4,
h5,
h6 {
    font: inherit;
    color: inherit;
}

a {
    text-decoration: none;
}

img,
video,
iframe {
    display: block;
    inline-size: 100%;
    block-size: auto;
}

button,
label,
input {
    cursor: pointer;
}

input[type="reset"],
input[type="submit"],
button {
    border: none;
    background-color: transparent;
}

span:has(> svg:only-child),
svg {
    line-height: 0;
}

ul {
    list-style-type: none;
}

html {
    scroll-behavior: smooth;
    scroll-padding: 6.25rem;
    -webkit-tap-highlight-color: transparent;
}

body:has(dialog[open]) {
    overflow: hidden;
}

:focus-visible {
    outline-offset: 4px;
    outline: 0px solid var(--on-surface, currentColor);
    animation:
        focus-ring-in 0.2s forwards,
        focus-ring-out 0.2s 0.2s forwards;
}

@keyframes focus-ring-in {
    to {
        outline-width: 8px;
    }
}

@keyframes focus-ring-out {
    to {
        outline-width: 4px;
    }
}

/* ======================================== */
/* UTILS */
/* ======================================== */

nav.breadcrumbs ul {
    --_gap: 1.25rem;
    display: block;
}

nav.breadcrumbs li {
    display: inline-block;
    position: relative;
}

nav.breadcrumbs li:not(:last-child) {
    margin-inline-end: var(--_gap);
}

nav.breadcrumbs li svg {
    position: absolute;
    inset-block-start: 50%;
    inset-inline-end: calc((var(--_gap) * -1) / 2);
    translate: 50% -50%;
}

nav.breadcrumbs [aria-current] {
    color: rgb(from currentColor r g b / 0.3);
}

.rich-text > *:not(:last-child) {
    margin-block-end: 1lh;
}

.rich-text strong {
    font-weight: 700;
}

.rich-text ul {
    list-style-type: disc;
}

.rich-text ol {
    list-style-type: decimal;
}

.rich-text ul,
.rich-text ol {
    padding-inline-start: 1rem;
}

.rich-text a {
    text-decoration: underline;
}

.sr-only {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    padding: 0;
    margin: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border-width: 0;
    inset-inline-end: 0;
    inset-block-end: 0;
}

.skip-link:focus {
    position: fixed;
    inset-block-start: 1rem;
    inset-inline-start: 1rem;
    z-index: 9999;
    inline-size: fit-content;
    block-size: fit-content;
    padding: 0.75rem 1.25rem;
    overflow: visible;
    clip-path: none;
    white-space: normal;
    background-color: var(--on-surface, #000);
    color: var(--surface, #fff);
    border-radius: 0.25rem;
    outline: 2px solid transparent;
}

.img-wrapper.img-wrapper-ratio > picture,
.img-wrapper.img-wrapper-ratio {
    overflow: hidden;
    position: relative;
}

.img-wrapper.img-wrapper-ratio > picture {
    block-size: 100%;
    display: block;
}

.img-wrapper.img-wrapper-ratio > video,
.img-wrapper.img-wrapper-ratio > picture > video,
.img-wrapper.img-wrapper-ratio > picture > img,
.img-wrapper.img-wrapper-ratio > img {
    inline-size: 100%;
    block-size: 100%;
    position: absolute;
    object-fit: cover;
    inset: 0;
}

.layers {
    display: grid;
}

.layers > .layer {
    grid-column: -1/1;
    grid-row: -1/1;
}

.layers > .layer.layer-bg {
    position: relative;
}

.layers > .layer.layer-bg > .img-wrapper.img-wrapper-ratio:only-child {
    block-size: 100%;
}

.layers > .layer.layer-bg::before,
.layers > .layer.layer-bg::after {
    content: "";
    pointer-events: none;
    inset-block-start: 0;
    inset-inline-start: 0;
    inline-size: 100%;
    block-size: 100%;
    position: absolute;
}

.layers > .layer.layer-fg {
    position: relative;
    z-index: 1;
}

:root {
    --container-columns: 12;
    --container-gap: 1.25rem;
    --container-column-width: 5.5rem;
    --container-x-padding: 2rem;

    --form-gap-row: 1.875rem;
    --form-gap-col: var(--container-gap);
    --form-field-min-width: 14.375rem;
    --form-checkbox-size: 1.75rem;
    --form-checkbox-bg: #ececec;
    --form-checkbox-border: 1px solid rgb(0 0 0 / 0.5);
    --form-checkbox-checked-bg: #f172aa;
    --form-input-bg: #f4f4f4;
    --form-input-border: 2px solid rgb(0 0 0 / 0.2);
    --form-input-font-size: 1.125rem;
    --form-input-weight: 700;
    --form-input-padding-block: 1.25rem 1.1875rem;
    --form-input-padding-inline: 1.25rem;
    --form-label-weight: 700;
    --form-border-radius-input: 0.5rem;
    --form-border-radius-checkbox: 0.5rem;
    --form-border-radius-radio: 50%;
    --form-label-field-gap: 0.625rem;
    --form-icon-check: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOCAxMy43ODk1TDEyLjEzNzkgMThMMjAgMTAiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+");
    --form-icon-file: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMy4zNjIiIGhlaWdodD0iMTkuNzQ4IiB2aWV3Qm94PSIwIDAgMjMuMzYyIDE5Ljc0OCI+CiAgPGcgaWQ9IlJhZ2dydXBwYV8xNTc4IiBkYXRhLW5hbWU9IlJhZ2dydXBwYSAxNTc4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNzM4LjA4NiAtNjU0Mi41MDEpIj4KICAgIDxwYXRoIGlkPSJUcmFjY2lhdG9fMjA5MDkiIGRhdGEtbmFtZT0iVHJhY2NpYXRvIDIwOTA5IiBkPSJNMzQuMzM2LDU3LjQ1N2EuNjE2LjYxNiwwLDAsMC0uNjIyLjYyMnYyLjk2NUEyLjMyLDIuMzIsMCwwLDEsMzEuNCw2My4zNjJIMTYuMTQ4YTIuMzEyLDIuMzEyLDAsMCwxLTIuMzE3LTIuMzE3VjU4LjA3OWEuNjIyLjYyMiwwLDAsMC0xLjI0NSwwdjIuOTY1YTMuNTYzLDMuNTYzLDAsMCwwLDMuNTYzLDMuNTYzSDMxLjM4NWEzLjU2MywzLjU2MywwLDAsMCwzLjU2My0zLjU2M1Y1OC4wNzlhLjYuNiwwLDAsMC0uNjEyLS42MjJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MjYgNjQ5Ny4xNDEpIiBmaWxsPSIjYmI4ZWY4IiBzdHJva2U9IiNiYjhlZjgiIHN0cm9rZS13aWR0aD0iMSIvPgogICAgPHBhdGggaWQ9IlRyYWNjaWF0b18yMDkxMCIgZGF0YS1uYW1lPSJUcmFjY2lhdG8gMjA5MTAiIGQ9Ik0zOS43NTcsMzIuMTZhLjYxNi42MTYsMCwwLDAsLjYyMi0uNjIyVjIwLjg2MWwyLjY2NiwyLjgyN2EuNjQ1LjY0NSwwLDAsMCwuNDQ4LjIuNTY4LjU2OCwwLDAsMCwuNDI0LS4xNzQuNjI4LjYyOCwwLDAsMCwuMDI1LS44ODRsLTMuNzM3LTMuOTc0YS42NDguNjQ4LDAsMCwwLS45MSwwTDM1LjU1OCwyMi44M2EuNjI1LjYyNSwwLDEsMCwuOTA5Ljg2bDIuNjY2LTIuODI3VjMxLjUzOGEuNjE4LjYxOCwwLDAsMCwuNjI0LjYyMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcxMC4wMTYgNjUyNC4zMzIpIiBmaWxsPSIjYmI4ZWY4IiBzdHJva2U9IiNiYjhlZjgiIHN0cm9rZS13aWR0aD0iMSIvPgogIDwvZz4KPC9zdmc+Cg==");
    --form-icon-select: url("data:image/svg+xml,%3Csvg width='8' height='5' viewBox='0 0 8 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.02359 2.04426C3.41412 2.43477 4.04727 2.43476 4.43779 2.04424L6.27879 0.203241C6.54961 -0.0675785 6.98869 -0.067596 7.25953 0.203202C7.5304 0.47403 7.53042 0.91317 7.25957 1.18402L4.43781 4.00578C4.04728 4.39631 3.41412 4.39631 3.02359 4.00578L0.201758 1.18395C-0.069058 0.913131 -0.0690589 0.474051 0.201757 0.203234C0.472569 -0.0675773 0.911639 -0.0675829 1.18246 0.203222L3.02359 2.04426Z' fill='%23181818'/%3E%3C/svg%3E");
}

.container {
    inline-size: 100%;
    max-inline-size: calc((var(--container-x-padding) * 2) + ((var(--container-columns) - 1) * var(--container-gap)) + (var(--container-columns) * var(--container-column-width)));
    margin-inline: auto;
    padding-inline: var(--container-x-padding);
}
.container.container-10 {
    --container-columns: 10;
}
.container.container-8 {
    --container-columns: 8;
}
.container.container-6 {
    --container-columns: 6;
}
.container.container-5 {
    --container-columns: 5;
}
.container.container-4 {
    --container-columns: 4;
}

/* ======================================== */
/* WPCF7 */
/* ======================================== */

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration,
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    display: none;
}

input[type="checkbox"],
input[type="radio"] {
    appearance: none;
    inline-size: var(--form-checkbox-size);
    block-size: var(--form-checkbox-size);
    background-color: var(--form-checkbox-bg);
    border: var(--form-checkbox-border);
    flex-shrink: 0;
    cursor: pointer;
}

input[type="checkbox"] {
    border-radius: var(--form-border-radius-checkbox);
}

input[type="radio"] {
    border-radius: var(--form-border-radius-radio);
}

input[type="checkbox"]:checked,
input[type="radio"]:checked {
    background-color: var(--form-checkbox-checked-bg);
    background-image: var(--form-icon-check);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 100%;
}

input[type="checkbox"]:focus-visible,
input[type="radio"]:focus-visible {
    outline: 2px solid var(--on-surface);
    outline-offset: 2px;
}

input:is([type="text"], [type="number"], [type="email"], [type="tel"], [type="date"]),
select,
textarea {
    inline-size: 100%;
    padding-block: var(--form-input-padding-block);
    padding-inline: var(--form-input-padding-inline);
    border: var(--form-input-border);
    background-color: var(--form-input-bg);
    border-radius: var(--form-border-radius-input);
    font-size: var(--form-input-font-size);
    font-weight: var(--form-input-weight);
    outline: none;
}

select {
    appearance: none;
    background-image: var(--form-icon-select);
    background-repeat: no-repeat;
    background-position: calc(100% - var(--form-input-padding-inline)) center;
    padding-inline-end: calc(var(--form-input-padding-inline) + 1.5rem);
}

input::placeholder,
textarea::placeholder,
.wpcf7-styled label:has(input[type="file"]) > span:first-child {
    color: rgb(from var(--on-surface) r g b / 0.4);
}

textarea {
    display: block;
    min-block-size: 7.75rem;
    field-sizing: content;
    resize: vertical;
}

input:is([type="text"], [type="number"], [type="email"], [type="tel"], [type="date"]):focus-visible,
select:focus-visible,
textarea:focus-visible {
    border-color: black;
    outline: none;
    animation: none;
}

input:is([type="text"], [type="number"], [type="email"], [type="tel"], [type="date"]):user-invalid,
input:is([type="text"], [type="number"], [type="email"], [type="tel"], [type="date"])[aria-invalid="true"],
textarea:user-invalid,
textarea[aria-invalid="true"],
.wpcf7-styled .wpcf7-not-valid {
    border-color: #d8275e;
}

.wpcf7-styled label {
    font-size: 0.875rem;
    line-height: 1.571;
    letter-spacing: -0.01em;
    font-weight: var(--form-label-weight);
    display: flex;
    flex-direction: column;
    gap: var(--form-label-field-gap);
}

.wpcf7-styled .align-center {
    text-align: center;
}

.wpcf7-styled label:has(input[type="file"]) {
    overflow: hidden;
    display: grid;
    background-image: var(--form-icon-file);
    background-repeat: no-repeat;
    background-position: calc(100% - 1rem) center;
    background-color: rgb(from currentColor r g b / 0.1);
    border: 1px solid transparent;
    border-radius: var(--form-border-radius-input);
    padding-block: var(--form-input-padding-block);
    padding-inline: var(--form-input-padding-inline);
    cursor: pointer;
}

.wpcf7-styled label:has(input[type="file"]) > span:first-child {
    overflow: hidden;
    max-inline-size: calc(100% - 3rem);
    white-space: nowrap;
    text-overflow: ellipsis;
    display: block;
}

.wpcf7-styled label:has(input[type="file"]) input[type="file"] {
    opacity: 0;
    width: 0.1px;
    height: 0.1px;
    position: absolute;
    z-index: -1;
}

.wpcf7-styled label:has([aria-required="true"]) .label-title::after {
    content: " *";
    color: currentColor;
}

.wpcf7-styled :is([data-class="wpcf7cf_group"], form) > p {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(var(--form-field-min-width), 100%), 1fr));
    row-gap: var(--form-gap-row);
    column-gap: var(--form-gap-col);
}

.wpcf7-styled :is([data-class="wpcf7cf_group"], form) > p .wide {
    grid-column: 1 / -1;
}

.wpcf7-styled :is([data-class="wpcf7cf_group"], form) .wpcf7-submit {
    inline-size: 100%;
    margin-inline: auto;
    border-radius: var(--form-border-radius-input);
}

.wpcf7-styled :is([data-class="wpcf7cf_group"], form) > p br,
.wpcf7-styled :is([data-class="wpcf7cf_group"], form) .wpcf7-spinner {
    display: none;
}

.wpcf7-styled :is([data-class="wpcf7cf_group"], form) .wpcf7-not-valid-tip {
    font-size: 0.75rem;
    margin-top: 0.25rem;
}

.wpcf7-styled .wpcf7-acceptance label {
    flex-direction: row;
    align-items: flex-start;
    gap: 0.75rem;
}

.wpcf7-styled .wpcf7-acceptance label span {
    text-box: trim-both cap alphabetic;
}

.wpcf7-styled .wpcf7-acceptance label span a {
    text-decoration: underline;
}

.wpcf7-styled .wide [data-name="acceptance"] {
    display: block;
    margin-block: var(--form-gap-row);
}

.wpcf7-styled [data-name="acceptance"] .wpcf7-list-item {
    margin-inline-start: 0;
}

.wpcf7-styled .wpcf7-response-output {
    padding: 1rem;
    text-wrap: balance;
    font-size: 0.875rem;
    inline-size: 100%;
    border: 1px solid transparent;
    margin-block-start: 3rem;
    border-radius: var(--form-border-radius-input);
}

.wpcf7-styled form.sent .wpcf7-response-output {
    background-color: #5ad66521;
    border-color: #5ad6659e;
}

.wpcf7-styled form.invalid .wpcf7-response-output {
    border-color: #ffb900cc;
}

.eg-pagination ul {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    align-items: center;
}

.eg-pagination .page-btn:disabled,
.eg-pagination .page-separator,
.eg-pagination .page:not(.page-current) {
    opacity: 0.4;
}

.eg-pagination :disabled {
    pointer-events: none;
}

/* ======================================== */
/* THEME */
/* ======================================== */

:root {
    --ff-primary: "Adobe Garamond Pro", serif;

    --surface: #8fd0f4;
    --on-surface: #00223e;
    --accent: #fcec0e;
}

.ff-primary {
    font-family: var(--ff-primary);
}

body {
    position: relative;
    background-image: url(assets/images/pattern.svg);
    background-color: var(--surface);
    background-repeat: repeat;
    background-size: 1440px 1439px;
    color: var(--on-surface);
}

body.home {
    padding-block-start: 1.875rem;
}

/* ======================================== */
/* HERO FRONT */
/* ======================================== */

section.hero.hero-front .container {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-block-end: 6.25rem;
}

section.hero.hero-front .title {
    margin-block: 3.75rem 5rem;
}

section.hero.hero-front .subtitle {
    text-align: center;
    font-size: 2rem;
    line-height: 1.2;
    font-weight: 700;
}

section.hero.hero-front .subtitle strong {
    color: var(--accent);
    -webkit-text-stroke-width: 2px;
    -webkit-text-stroke-color: var(--on-surface);
    paint-order: stroke fill;
}

/* ======================================== */
/* FOOTER */
/* ======================================== */

footer.egloo .container {
    display: flex;
    flex-direction: column;
    text-align: center;
    gap: 3.75rem;
    padding-block: 3.75rem;
}

footer.egloo .logo {
    max-inline-size: 19.0625rem;
    margin-inline: auto;
}

footer.egloo ul {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1.875rem;
    justify-content: safe center;
}

footer.egloo ul :is(a, .info-chip) {
    display: flex;
    align-items: center;
    gap: 0.3125rem;
    border: 3px solid currentColor;
    color: black;
    border-radius: 99999px;
    font-size: 1.25rem;
    line-height: 1;
    font-weight: 700;
    padding-block: 0.5625rem;
    padding-inline: 1.25rem 1.0625rem;
    background-color: white;
}

footer.egloo li:first-child :is(a, .info-chip) {
    background-color: #fcec0e;
}

footer.egloo li:last-child :is(a, .info-chip) {
    background-color: #f172aa;
}

footer.egloo .final-text {
    font-size: 1.125rem;
    line-height: 1.2;
    font-weight: 700;
}

footer.egloo .final-text a {
    text-decoration: underline;
}

/* ======================================== */
/* MULTISTEP FORM */
/* ======================================== */

section.multistep-form .form-wrapper {
    --surface: white;
    background-color: var(--surface);
    border-radius: 0.5rem;
    border: 3px solid black;
    box-shadow: 10px -10px 0 black;
    position: relative;
}

section.multistep-form .steps-counter {
    position: absolute;
    inset-block-start: 0;
    inset-inline-start: 50%;
    translate: -50% -50%;
    background-color: var(--accent);
    border: 3px solid black;
    padding-block: 0.75rem 0.625rem;
    padding-inline: 1.125rem;
    font-size: 1.25rem;
    line-height: 1;
    border-radius: 0.5rem;
}

section.multistep-form .steps-counter .step-label::before {
    content: " · ";
}

section.multistep-form .form-container {
    padding-block: 5.4375rem 3.75rem;
    max-inline-size: calc(45.625rem + (2 * var(--container-x-padding)));
    inline-size: 100%;
    margin-inline: auto;
    padding-inline: var(--container-x-padding);
}

section.multistep-form .form-title {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    margin-block-end: 3.125rem;
}

section.multistep-form .form-title strong {
    font-size: 3.25rem;
    line-height: 1;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #8fd0f4;
    -webkit-text-stroke-width: 5px;
    -webkit-text-stroke-color: var(--on-surface);
    paint-order: stroke fill;
    display: inline-block;
}

section.multistep-form .form-title strong:not(:only-child) {
    margin-block-start: 0.625rem;
}

section.multistep-form .form-success .form-title strong {
    color: #f172aa;
}

section.multistep-form .form-head {
    text-align: center;
    margin-block-end: 3.125rem;
}

section.multistep-form .form-head .form-title {
    margin-block-end: 0.875rem;
}

/* Margine sotto la testata, specifico per step (verifica resta 50 via .form-title). */
section.multistep-form [data-screen="form"] .form-head {
    margin-block-end: 3.75rem;
}

section.multistep-form .form-success .form-head {
    margin-block-end: 2.5rem;
}

section.multistep-form .verified-cf {
    font-size: 1.5rem;
    line-height: 1;
}

section.multistep-form .verified-cf strong {
    font-size: 2rem;
    font-weight: 700;
}

section.multistep-form .cf-change {
    display: inline-block;
    margin-block-start: 0.5rem;
    font-size: 1rem;
    line-height: 1.2;
    font-weight: 700;
    text-decoration: underline;
}

section.multistep-form .field {
    display: flex;
    flex-direction: column;
    gap: 0.4375rem;
    margin-block: 2.5rem;
}

section.multistep-form .field-name {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

section.multistep-form .field-label {
    font-size: 1.125rem;
    line-height: 1;
    font-weight: 700;
    text-transform: uppercase;
}

section.multistep-form .field-hint {
    font-size: 1.125rem;
    line-height: 1;
    font-weight: 600;
    opacity: 0.5;
}

section.multistep-form .btn-submit {
    display: block;
    padding-block: 1.25rem 1rem;
    border: 2px solid black;
    border-radius: 99999px;
    padding-inline: 1.25rem;
    inline-size: 100%;
    font-size: 1.5rem;
    line-height: 1;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    background-color: black;
    color: white;
    margin-block-end: 2.5rem;
    transition: background-color 0.3s ease;
}

section.multistep-form .btn-submit:where(:hover, :focus-visible) {
    background-color: #f172aa;
}

section.multistep-form .disclaimer {
    font-weight: 700;
    font-style: italic;
    font-size: 1.125rem;
    line-height: 1;
    text-align: center;
}

section.multistep-form .disclaimer::before,
section.multistep-form .field:has([required]) .field-label::after {
    content: " * ";
    color: #f172aa;
}

section.multistep-form .field:not(:has([required])) .field-label::after {
    content: " (facoltativo)";
    text-transform: none;
    font-weight: 700;
    color: #f172aa;
}

section.multistep-form .result {
    margin-block-start: 2.5rem;
}

section.multistep-form .result [data-verify-message],
section.multistep-form .result [data-register-message],
section.multistep-form .result [data-companion-message] {
    white-space: pre-line;
}

section.multistep-form .result a {
    color: #000;
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

section.multistep-form .form-section-title {
    font-size: 2rem;
    line-height: 1;
    font-weight: 700;
    color: #f172aa;
}

section.multistep-form hr {
    border: none;
    block-size: 2px;
    background-image: repeating-linear-gradient(to right, #f172aa 0 10px, transparent 10px 20px);
    margin-block: 2.5rem;
}

section.multistep-form .toggle-check {
    background-color: var(--form-input-bg);
    border: var(--form-input-border);
    padding-inline: 1.25rem;
    padding-block: 1rem;
    display: flex;
    align-items: center;
    gap: 0.625rem;
    border-radius: var(--form-border-radius-input);
    font-size: 1.125rem;
    line-height: 1;
    font-weight: 700;
}

section.multistep-form .companion-fields {
    display: flow-root;
    margin-block-start: 2.5rem;
    padding: 2.5rem;
    border-radius: 0.5rem;
    background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='1' y='1' width='calc(100%25 - 2px)' height='calc(100%25 - 2px)' rx='7' fill='none' stroke='black' stroke-opacity='0.3' stroke-width='2' stroke-dasharray='10 10'/%3E%3C/svg%3E");
}

section.multistep-form .note {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 1.25rem;
    border-radius: 0.3125rem;
    font-size: 1.125rem;
    line-height: 1.2;
    font-weight: 700;
}

section.multistep-form .note svg {
    flex-shrink: 0;
}

section.multistep-form .note.note-warning {
    background-color: #fbf791;
}

section.multistep-form .note.note-alert {
    background-color: #ffeef1;
    color: #d8275e;
}

/* Schermata "iscrizioni chiuse": il box e il testo che lo segue hanno bisogno
   di respiro, mentre .note nei form non porta margini propri. */
section.multistep-form .registrations-closed > .note {
    margin-block-end: 1.875rem;
}

section.multistep-form .registrations-closed > p {
    margin-block-end: 0;
}

section.multistep-form .note.note-success {
    background-color: #e9f8ec;
    color: #1a7f37;
    margin-block-start: 2.5rem;
}

/* Il consenso è figlio diretto del form (non della scatola .companion-fields,
   che nel form di iscrizione gli dà il respiro): qui lo spazio va messo a mano. */
section.multistep-form [data-companion-form] > .check-row {
    margin-block: 2.5rem;
}

/* Invito ad aggiungere l'accompagnatore, nella schermata di conferma. */
section.multistep-form .add-companion-cta {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.9375rem;
    text-align: center;
}

/* Qui il pulsante chiude la scatola: il margine di coda di .btn-submit, pensato
   per staccarlo dal disclaimer nei form, lascerebbe solo spazio morto. */
section.multistep-form .add-companion-cta .btn-submit {
    margin-block-start: 0.625rem;
    margin-block-end: 0;
}

section.multistep-form .form-section-head {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    margin-block-start: 2.5rem;
}

section.multistep-form .form-section-subtitle {
    font-size: 1.125rem;
    line-height: 1.2;
    font-weight: 600;
}

/* Nello step di successo: navetta centrata, gap 20 sopra la shuttle-box e
   nessun margine sotto (il padding-bottom del container fa già i suoi 60). */
section.multistep-form .form-success .form-section-head {
    text-align: center;
}

section.multistep-form .form-success .shuttle-box {
    margin-block: 1.25rem 0;
}

section.multistep-form .shuttle-box {
    margin-block: 2.5rem;
    padding: 1.25rem;
    background-color: #c7e7f9;
    border-radius: 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}

section.multistep-form .shuttle-route {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
    position: relative;
}

section.multistep-form .shuttle-stop {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.625rem;
}

section.multistep-form .stop-icon {
    inline-size: 4rem;
    block-size: 4rem;
    border-radius: 50%;
    background-color: var(--form-input-bg);
    border: 2px solid var(--on-surface);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #f172aa;
    margin-block-end: 0.625rem;
}

section.multistep-form .shuttle-stop h4,
section.multistep-form .shuttle-return h4 {
    font-size: 1.5rem;
    line-height: 1;
    font-weight: 700;
}

section.multistep-form .shuttle-stop p,
section.multistep-form .shuttle-return p {
    font-size: 1.125rem;
    line-height: 1.2;
    font-weight: 600;
}

section.multistep-form .route-arrows {
    position: absolute;
    inset-inline-start: 50%;
    inset-block-start: 2rem;
    translate: -50% -50%;
    line-height: 0;
}

section.multistep-form .btn-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    background-color: #f172aa;
    color: white;
    border: 2px solid black;
    border-radius: 99999px;
    padding-block: 0.6875rem 0.5625rem;
    padding-inline: 1.25rem;
    font-size: 0.875rem;
    line-height: 1;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    transition: background-color 0.3s ease;
}

section.multistep-form .btn-pill:where(:hover, :focus-visible) {
    background-color: var(--on-surface);
}

section.multistep-form .shuttle-box .btn-pill {
    margin-block-start: 0.625rem;
}

section.multistep-form .shuttle-note {
    text-align: center;
    font-style: italic;
    font-size: 1.125rem;
    line-height: 1;
    font-weight: 600;
}

section.multistep-form .shuttle-return {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.625rem;
    padding-block-end: 1.25rem;
}

section.multistep-form .privacy-actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
    gap: 1.25rem;
    margin-block: 2.5rem;
}

section.multistep-form .btn-pill.btn-doc {
    padding-block: 1.25rem 1.125rem;
    border-color: var(--on-surface);
    background-color: var(--form-input-bg);
    color: var(--on-surface);
    font-size: 1.5rem;
    letter-spacing: normal;
    text-transform: none;
}

section.multistep-form .btn-pill.btn-doc.btn-doc-accent {
    background-color: #f172aa;
    color: white;
}

section.multistep-form .btn-pill.btn-doc:where(:hover, :focus-visible) {
    background-color: var(--accent);
    color: var(--on-surface);
}

section.multistep-form .privacy-checks {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    margin-block-end: 2.5rem;
}

section.multistep-form .check-row {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    font-size: 1.125rem;
    line-height: 1.2;
    font-weight: 600;
}

section.multistep-form .check-row > span {
    margin-block-start: 0.3em;
}

section.multistep-form .check-row a {
    color: #f172aa;
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

section.multistep-form .check-row .req {
    color: #f172aa;
    font-weight: 700;
}

section.multistep-form .success-intro {
    font-size: 1.5rem;
    line-height: 1.25;
    font-weight: 400;
}

section.multistep-form .success-recap {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    text-align: center;
}

section.multistep-form .success-recap > div {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

section.multistep-form .success-recap p {
    font-size: 1.125rem;
    line-height: 1.2;
    font-weight: 600;
}

section.multistep-form .kit-box {
    margin-block-start: 4.0625rem;
    position: relative;
    background-color: #f172aa;
    border-radius: 0.5rem;
    padding-block: 2.875rem 1.25rem;
    padding-inline: 1.25rem;
    text-align: center;
    font-size: 1.5rem;
    line-height: 1.2;
    font-weight: 700;
}

section.multistep-form .kit-chip {
    position: absolute;
    inset-block-start: 0;
    inset-inline-start: 50%;
    translate: -50% -50%;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background-color: var(--accent);
    border: 3px solid black;
    border-radius: 99999px;
    padding-block: 0.5625rem;
    padding-inline: 1rem;
    font-size: 1.25rem;
    line-height: 1;
    font-weight: 700;
    white-space: nowrap;
}

/* ======================================== */
/* BODY DECORATIONS */
/* ======================================== */

.body-decorations {
    position: absolute;
    inset: 0;
    overflow: clip;
    pointer-events: none;
    z-index: -1;
}

.body-decorations .snake {
    position: absolute;
}

.body-decorations .snake-1 {
    inline-size: 12.625rem;
    inset-inline-start: -3.0625rem;
    inset-block-start: 9.375rem;
}

.body-decorations .snake-2 {
    inline-size: 10.5625rem;
    inset-inline-end: 3.125rem;
    inset-block-start: -3.25rem;
}

.body-decorations .snake-3 {
    inline-size: 15.125rem;
    inset-inline-end: -3.375rem;
    inset-block-start: 52.3125rem;
}

.body-decorations .snake-4 {
    inline-size: 13.625rem;
    inset-inline-start: -2.6875rem;
    inset-block-start: 74.8125rem;
}

.body-decorations .snake-5 {
    inline-size: 10.5625rem;
    inset-inline-end: -2.0625rem;
    inset-block-start: 111.6875rem;
}

/* Iscrizione — stati schermate ed errori di campo.
   .note e .companion-fields impostano display:flex/flow-root, che batterebbero
   l'attributo [hidden] di default: qui lo forziamo per nascondere davvero. */
section.multistep-form [hidden] {
    display: none !important;
}

section.multistep-form .check-row:has([aria-invalid="true"]) {
    color: #d8275e;
}

/* Stato di attesa: il solo calo di opacità non bastava a far capire che il
   pulsante stava lavorando, e sembrava bloccato. Qui si aggiunge uno spinner
   e il testo del pulsante viene sostituito da quello in data-busy-label. */
section.multistep-form .btn-submit[aria-busy="true"] {
    position: relative;
    color: transparent;
    pointer-events: none;
    background-color: #3d3d3d;
}

section.multistep-form .btn-submit[aria-busy="true"]::after {
    content: attr(data-busy-label);
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    color: white;
}

section.multistep-form .btn-submit[aria-busy="true"]::before {
    content: "";
    position: absolute;
    inset-block-start: 50%;
    inset-inline-start: 1.5rem;
    inline-size: 1.375rem;
    block-size: 1.375rem;
    margin-block-start: -0.6875rem;
    border: 3px solid rgb(255 255 255 / 0.35);
    border-block-start-color: white;
    border-radius: 50%;
    animation: eg-spin 0.7s linear infinite;
    z-index: 1;
}

@keyframes eg-spin {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    section.multistep-form .btn-submit[aria-busy="true"]::before {
        animation-duration: 2.5s;
    }
}

/* ======================================== */
/* RESPONSIVE — MOBILE / TABLET */
/* ======================================== */

@media (width <= 48rem) {
    :root {
        --container-x-padding: 1.25rem;
        --form-input-padding-block: 0.9375rem 0.875rem;
        --form-input-padding-inline: 1rem;
    }

    body.home {
        padding-block-start: 1.25rem;
    }

    /* HERO */
    section.hero.hero-front .container {
        margin-block-end: 3.75rem;
    }

    section.hero.hero-front .title {
        margin-block: 2.5rem 3rem;
    }

    section.hero.hero-front .subtitle {
        font-size: clamp(1.375rem, 5.5vw, 2rem);
    }

    /* FORM — involucro e spaziature */
    section.multistep-form .form-wrapper {
        box-shadow: 6px -6px 0 black;
    }

    section.multistep-form .form-container {
        padding-block: 3.5rem 2.25rem;
        padding-inline: 1.25rem;
    }

    section.multistep-form .steps-counter {
        font-size: 1rem;
        padding-block: 0.625rem 0.5rem;
        padding-inline: 0.875rem;
        max-inline-size: calc(100% - 2.5rem);
        text-align: center;
    }

    /* Etichetta step sempre a capo: "Passo x di 2" / "Verifica" */
    section.multistep-form .steps-counter .step-label {
        display: block;
        margin-block-start: 0.25rem;
    }

    section.multistep-form .steps-counter .step-label::before {
        content: none;
    }

    /* FORM — titoli fluidi */
    section.multistep-form .form-title {
        font-size: clamp(1.25rem, 4.5vw, 1.75rem);
        margin-block-end: 1.5rem;
    }

    section.multistep-form .form-title strong {
        font-size: clamp(1.75rem, 8vw, 2.5rem);
        -webkit-text-stroke-width: 3px;
    }

    section.multistep-form .form-section-title {
        font-size: clamp(1.375rem, 5.5vw, 1.75rem);
    }

    section.multistep-form [data-screen="form"] .form-head {
        margin-block-end: 2rem;
    }

    section.multistep-form .form-head .form-title {
        margin-block-end: 0.75rem;
    }

    /* FORM — CF verificato: mai in overflow */
    section.multistep-form .verified-cf {
        font-size: 1.25rem;
    }

    section.multistep-form .verified-cf strong {
        font-size: clamp(1.25rem, 6vw, 1.75rem);
        overflow-wrap: anywhere;
    }

    /* FORM — campi e bottoni */
    section.multistep-form .field {
        margin-block: 1.5rem;
    }

    section.multistep-form .btn-submit {
        font-size: 1.25rem;
    }

    section.multistep-form hr {
        margin-block: 1.75rem;
    }

    /* Note: icona sopra e tutto centrato */
    section.multistep-form .note {
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: 0.75rem;
    }

    section.multistep-form .companion-fields {
        padding: 1.5rem 1.25rem 1.75rem;
    }

    /* NAVETTE — le due fermate si impilano, la freccia orizzontale sparisce */
    section.multistep-form .shuttle-route {
        grid-template-columns: 1fr;
        gap: 2.5rem;
    }

    section.multistep-form .route-arrows {
        display: none;
    }

    /* Decorazioni: ridotte per non sovrastare il contenuto */
    .body-decorations .snake {
        scale: 0.42;
    }
}
