/* * General Body Styles * Applies basic styling to the entire page. */body {    margin: 0;    font-family: Arial, sans-serif;    background: #111;    color: #ffffff;}/* * Screen Carousel Container * Defines the main container for the screen carousel, including its dimensions, * background, border-radius, and shadow effects. */.ScreenCarousel-container {    position: relative;    width: 90vw;    height: 30vw;    margin: 10px auto;    overflow: hidden;    background-color: rgba(0, 0, 0, 0.5);    border-radius: 12px;    backdrop-filter: blur(6px); /* Optional: frosted glass effect */    box-shadow: 0 0 25px rgba(0, 0, 0, 0.4);    padding: 5px;}/* * Screen Carousel * Styles for the carousel element itself, ensuring it takes up 100% of its * parent's width and height. */.ScreenCarousel {    position: relative;    z-index: 1;    width: 100%;    height: 100%;}/* * Slide * Base styles for individual slides within the carousel, including flex * properties for content alignment and transition for opacity changes. */.slide {    position: absolute;    width: 100%;    height: 100%;    display: flex;    flex-wrap: wrap; /* Adapts content if space is limited */    align-items: center;    justify-content: space-between;    padding: 5px;    box-sizing: border-box;    transition: opacity 1s ease-in-out;    opacity: 0;}/* * Active Slide * Styles for the currently visible slide, setting its opacity to 1. */.slide.active {    opacity: 1;    z-index: 1;}/* * Face Image * Styles for the main image within a slide, defining its width, max-width, * height, border-radius, and flex-shrink behavior. */.face {    width: 20vw;    max-width: 20vw;    height: auto;    border-radius: 15px;    flex-shrink: 0;}/* * Ribbon Overlay * Styles for the ribbon element, positioned at the bottom of the image, * with text styling, gradient background, text shadow, and animation. */.ribbon {  text-align: center;}/* * Text Content * Styles for the text area within a slide, including flex properties for * column layout and text alignment. */.text {    flex: 1;    min-width: 20vw;    max-width: 65vw;    text-align: left; /* Aligns content horizontally */    display: flex;    flex-direction: column;    align-items: flex-start;    color: white;}/* * Text Heading 2 * Adaptive font sizing for headings within the text area. */.text h2 {    font-size: clamp(1rem, 4vw, 3.2rem); /* Adaptive title */    margin: 0;}/* * Text Paragraph * Adaptive font sizing for paragraphs (subtitles) within the text area. */.text p {    font-size: clamp(0.7rem, 1.8vw, 1.4rem); /* Adaptive subtitle */    margin: 0;}/* * Active Slide Face Animation * Animation for the face image when the slide becomes active. */.slide.active .face {    animation: slideIn 1s forwards;}/* * Active Slide Text Animation * Animation for the text content when the slide becomes active. */.slide.active .text {    animation: fadeInText 1.5s forwards;}/* * Centered Slide Content * Styles for content that should be centered within a slide. */.slide-content.centered {    width: 100%;    height: 100%;    text-align: center;    display: flex;    flex-direction: column;    justify-content: center;    align-items: center;    position: relative;    padding: 10px;    box-sizing: border-box;}/* * Slide Title * Adaptive font sizing and styling for slide titles. */.slide-title {    font-size: clamp(1rem, 4vw, 3.2rem); /* Adaptive title */    color: white;    margin-bottom: 2vw;}/* * Slide Subtitle * Adaptive font sizing and styling for slide subtitles. */.slide-subtitle {    font-size: clamp(0.7rem, 1.8vw, 1.4rem); /* Adaptive subtitle */    color: white;    margin-top: 12vw;}/* * Stacked Slide Content * Styles for content that should be stacked within a slide. */.slide-content.stack {    position: relative;    width: 100%;    height: 100%;    box-sizing: border-box;    text-align: center;    display: flex;    flex-direction: column;    justify-content: center;    align-items: center;}/* * Image Overlay * Styles for an image overlay, positioned absolutely and centered. */.image-overlay {    position: absolute;    top: 50%;    left: 50%;    transform: translate(-50%, -50%);}/* * Image within Overlay * Styles for the image inside the overlay, including width, height, * and removal of default image styles. */.image-overlay img {    width: 70%;    height: auto;    border: none;    opacity: 1;    border-radius: 0;    box-shadow: none;}/* * Slogan Section * Styles for the slogan area, ensuring it's above other elements, * with padding, width, color, and text alignment. */.Slogan {    position: relative;    z-index: 2; /* Higher than background */    backdrop-filter: none; /* Deactivates blur effect */    padding: 0 20px;    margin: auto;    width: 80%;    color: white;    text-align: center;}/* * Slogan Heading 2 * Adaptive font sizing for the slogan heading. */.Slogan h2 {    font-size: clamp(1.25rem, 4vw, 3rem);    margin-bottom: 0px;}/* * Slogan Paragraph * Adaptive font sizing for the slogan paragraph. */.Slogan p {    font-size: clamp(1rem, 4vw, 3rem);    margin: 0;}/* * Slide In Animation * Keyframe animation for elements sliding in. */@keyframes slideIn {    to {        transform: translateX(0);        opacity: 1;    }}/* * Fade In Text Animation * Keyframe animation for text fading in. */@keyframes fadeInText {    to {        opacity: 1;    }}/* * Background Overlay * Styles for the background image overlay, ensuring it covers the full width. */.background-overlay {    position: absolute;    top: 0;    left: 0;    width: 100%;    z-index: 0; /* Background */}/* * Background Overlay Image * Styles for the image within the background overlay, including object-fit, * opacity, and transition for transformations. */.background-overlay img {    width: 100%;    height: auto;    object-fit: cover;    opacity: 0.6;    transition: transform 0.3s ease;}/* * Media Query for Background Overlay Image on Small Screens (max-width: 1024px) * Enlarges the background image for better display on smartphones. */@media (max-width: 1024px) {    .background-overlay img {        transform: scale(1.5);        transform-origin: center;    }}/* * Sponsor Carousel Custom Container * Main container for the sponsor carousel, defining max-width, width, shadow, * border-radius, background, padding, and positioning. */.SponsorCarousel-custom-container {    max-width: 900px; /* Max width for SponsorCarousel container */    width: 95%; /* Makes the container responsive */    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);    border-radius: 12px; /* More rounded corners */    background-color: #ffffff;    padding: 5px;    position: relative; /* For arrow positioning */    margin: 0 auto; /* Centers the container horizontally */}/* * Sponsor Carousel Viewport * Defines the viewport for the carousel, hiding overflowing images. */.SponsorCarousel-viewport {    width: 100%;    overflow: hidden; /* Hides images that are not visible */    border-radius: 8px;    /* JS logic might be needed to center the active element in the viewport */}/* * Sponsor Carousel Track * Styles for the track that holds the carousel slides, using flexbox for * horizontal arrangement and transition for smooth scrolling. */.SponsorCarousel-track {    display: flex;    transition: transform 0.5s ease-in-out; /* Animation for scrolling */    /* Total width will be calculated via JS: (num_images * single_image_width) */    /* For a centered carousel, JS should calculate the offset for the active element */}/* * Sponsor Carousel Item Custom * Styles for each individual item in the carousel, defining its width, * padding, box-sizing, and flex properties for centering content. */.SponsorCarousel-item-custom {    flex: 0 0 calc(100% / 3); /* Each item occupies 1/3 of the viewport width */    padding: 20px; /* Space between images */    box-sizing: border-box; /* Includes padding in width calculation */    display: flex;    justify-content: center;    align-items: center;    scroll-snap-align: center; /* Helps browser center the element during scroll */}/* * Images within Sponsor Carousel Items * Styles for images inside carousel items, including fixed height, * object-fit, border-radius, shadow, and transition for selection effect. */.SponsorCarousel-item-custom img {    width: 100%;    height: 50px; /* Fixed height for images */    object-fit: contain; /* Changed from cover to contain to avoid cropping */    border-radius: 8px; /* Rounded corners for images */    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);    transition: all 0.3s ease-in-out; /* Transition for selection effect */}/* * Selected Sponsor Carousel Item Image * Styles for the central selected image, including slight enlargement and * more pronounced shadow. */.SponsorCarousel-item-custom.selected img {    transform: scale(1.30); /* Slight enlargement */    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); /* More pronounced shadow */}/* * Sponsor Carousel Custom Indicators * Styles for the carousel indicators (dots), including flexbox for spacing. */.SponsorCarousel-indicators-custom {    display: flex;    justify-content: center;    margin-top: 20px;    gap: 10px; /* Space between dots */}/* * Sponsor Carousel Indicator Buttons * Styles for individual indicator buttons, defining width, height, * border-radius, border, background, cursor, and transition. */.SponsorCarousel-indicators-custom button {    width: 8px;    height: 8px;    border-radius: 25%;    border: 1px solid #ced4da; /* Light gray border */    background-color: #e9ecef; /* Light gray for unselected dots */    cursor: pointer;    transition: background-color 0.3s ease, border-color 0.3s ease;}/* * Active Sponsor Carousel Indicator Button * Styles for the active indicator button, changing its background and * border color. */.SponsorCarousel-indicators-custom button.active {    background-color: #495057; /* Dark gray for selected dot */    border-color: #495057; /* Dark gray border for selected dot */}/* * Media Query for Slides on Small Screens (max-width: 768px) * Adjusts slide layout to a column direction and centers text. */@media (max-width: 768px) {    .slide {        flex-direction: column;        text-align: center;    }    .face {        width: 50%;        margin-bottom: 20px;    }    .text {        align-items: center;        text-align: center;    }}/* * Subscribe Button Styles * Defines the base styles for the "Iscriviti" button, including font size, * padding, background, color, text transform, letter spacing, border, * border-radius, cursor, position, overflow, transition, and shadow. */.btn-iscriviti {    display: inline-block;    font-size: clamp(1rem, 2.5vw, 1.5rem); /* Scalable text size */    padding: clamp(0.75em, 2vw, 1.25em) clamp(1.5em, 4vw, 2em); /* Proportional padding */    background-color: #1e3a8a;    color: #fff;    text-transform: uppercase;    letter-spacing: 1px;    border: none;    border-radius: clamp(8px, 5vw, 8px);    cursor: pointer;    position: relative;    overflow: hidden;    transition: background-color .3s, transform .2s, box-shadow .2s;    box-shadow: 0 4px 8px rgba(0, 0, 0, .1);}/* * Media Queries for Button and Ribbon Font Size * Adjusts font sizes for the ribbon and subscribe button based on screen width. */@media (min-width: 390px) {    .ribbon {        font-size: .8rem;    }}@media (min-width: 768px) {    .btn-iscriviti {        font-size: 1.25rem;    }    .ribbon {        font-size: 1rem;    }}@media (min-width: 1200px) {    .btn-iscriviti {        font-size: 4rem;    }    .ribbon {        font-size: 2rem;    }}/* * Glossy Stripe on Hover for Subscribe Button * Creates a glossy stripe effect that slides across the button on hover. */.btn-iscriviti::before {    content: "";    position: absolute;    top: 0;    left: -100%;    width: 100%;    height: 100%;    background: rgba(255, 255, 255, 0.2);    transform: skewX(-20deg);    transition: left 0.5s ease;}/* * Hover Effect for Subscribe Button * Changes background color, applies a slight translateY, and adjusts shadow * on hover. */.btn-iscriviti:hover {    background-color: #3b82f6; /* Medium blue */    transform: translateY(-2px);    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.15);}/* * Hover Effect for Subscribe Button - Before Pseudo-element * Makes the glossy stripe slide in on hover. */.btn-iscriviti:hover::before {    left: 100%;}/* * Active/Click States for Subscribe Button * Resets transform and adjusts shadow when the button is active (clicked). */.btn-iscriviti:active {    transform: translateY(0);    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);}/* * Form Section * Basic padding for the form section. */#formSection {    padding: 0 20px;}/* * Body Heading 2 * Adaptive font sizing and centered text for H2 elements within the body. */body h2 {    font-size: clamp(0.8rem, 3vw, 2rem);    text-align: center;}/* * Image Styles * Centers images and sets them to full width. */img {    display: block;    margin-left: auto;    margin-right: auto;    width: 100%;}/* * Form Module * Styles for the main form container, including max-width and margin. */.modulo {    max-width: 50%;    margin: 15vw auto;    font-family: Arial, sans-serif;}/* * Form Row * Styles for form rows, using flexbox for layout and gap between items. */.riga {    display: flex;    flex-wrap: wrap;    gap: 20px;    margin-bottom: 20px;}/* * Form Field * Styles for individual form fields, including flex properties for column * layout and minimum width. */.campo {    flex: 1;    min-width: 180px;    display: flex;    flex-direction: column;}/* * Full Width Form Field * Ensures a form field takes full width. */.campo.full {    width: 100%;}/* * Input and Textarea Styles * Styles for text inputs, email inputs, and text areas, including font size, * padding, border, border-radius, shadow, and full width. */input[type="text"],input[type="email"],textarea {    font-size: clamp(0.5rem, 3vw, 1.2rem);    padding: 5px;    border: 1px solid #ccc;    border-radius: 5px;    box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1);    width: 100%;}/* * Label Styles * Margin for labels. */label {    margin-bottom: 6px;}/* * Submit Input Styles * Styles for the submit button, including font size, padding, background, * color, border, border-radius, cursor, and shadow. */input[type="submit"] {    font-size: clamp(0.5rem, 3vw, 1.2rem);    padding: 5px 10px;    background-color: #0078D4;    color: white;    border: none;    border-radius: 5px;    cursor: pointer;    box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.2);}/* * Submission Section * Aligns the submit button to the right. */.invio {    display: flex;    justify-content: flex-end; /* Aligns the button to the right */}/* * Spinner * Styles for a loading spinner, creating a rotating circle animation. */.spinner {    border: 8px solid #f3f3f3;    border-top: 8px solid #3498db;    border-radius: 50%;    width: 60px;    height: 60px;    animation: spin 1s linear infinite;}/* * Spin Animation * Keyframe animation for the spinner's rotation. */@keyframes spin {    0% { transform: rotate(0deg); }    100% { transform: rotate(360deg); }}/* * Loader * Styles for the loader container, fixed to the center of the viewport. */#loader {    position: fixed;    top: 50%;    left: 50%;    transform: translate(-50%, -50%);    z-index: 9999;}/* * Registration Message * Styles for the registration message, positioned absolutely, with background, * border-radius, backdrop-filter, shadow, and z-index. */.MessaggioRegistrazione {    position: absolute;    left: 50%;    transform: translateX(-50%);    padding: 10px;    top: 60vw;    width: 90vw;    overflow: hidden;    background-color: rgba(0, 0, 0, 0.5);    border-radius: 12px;    backdrop-filter: blur(6px); /* Optional: frosted glass effect */    box-shadow: 0 0 25px rgba(0, 0, 0, 0.4);    z-index: 9999;}