/* --- Reset & Base Styles --- */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    --primary-color: #005a9c; /* Blu Savoia / Royal Blue */
    --secondary-color: #aec6cf; /* Blu polvere chiaro / Light Powder Blue */
    --accent-color: #e0f2f7; /* Azzurro cielo molto chiaro */
    --text-color: #333;
    --text-light: #f8f8f8;
    --bg-color: #ffffff;
    --bg-alternate: #f9f9fc; /* Leggermente diverso dal bianco */
    --border-color: #dce4e8;

    --font-heading: "Allura", cursive;
    --font-body: "Lato", sans-serif;
    /* --font-body: "Philosopher", sans-serif; */ /* Font biglietto che però non mi piace */
}

/* Letter Enclosure Styles */
.letter-enclosure {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

.letter-enclosure.hidden {
    opacity: 0;
    transform: scale(1.1);
    pointer-events: none;
}

.letter-content {
    background: #fff;
    padding: 40px;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
    text-align: center;
    position: relative;
    max-width: 90%;
    width: 400px;
    transform: rotate(-2deg);
    transition: transform 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.letter-content:hover {
    transform: rotate(0deg);
}

.letter-seal {
    width: 180px;
    height: 180px;
    cursor: pointer;
    transition: transform 0.3s ease;
    margin-top: 30px;
    position: relative;
    z-index: 1;
}

.letter-seal:hover {
    transform: scale(1.1);
}

.letter-text {
    position: relative;
    z-index: 2;
}

.letter-text h2 {
    font-size: 2.5rem;
    margin-bottom: 10px;
    color: var(--primary-color);
}

.letter-text p {
    font-size: 1.2rem;
    color: var(--text-color);
    margin-bottom: 10px;
}

.letter-text .click-hint {
    font-size: 0.9rem;
    color: #666;
    font-style: italic;
    margin-top: 20px;
}

html {
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-body);
    color: var(--text-color);
    line-height: 1.6;
    background-color: var(--bg-color);
}

.container {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 20px;
}

/* Media query per schermi con larghezza massima di 768px (tipici dispositivi mobili) */
@media (max-width: 768px) {
    .container {
        width: 95%; /* Aumenta la larghezza per sfruttare meglio lo schermo mobile */
        padding-left: 10px; /* Riduci il padding laterale su mobile se necessario */
        padding-right: 10px; /* Riduci il padding laterale su mobile se necessario */
    }
}

h1,
h2,
h3 {
    font-family: var(--font-heading);
    color: var(--primary-color);
    margin-bottom: 0.8em;
    font-weight: 600;
}

h1 {
    font-size: 3.5rem;
}
h2 {
    font-size: 2.8rem;
    text-align: center;
}
h3 {
    font-size: 2rem;
}

p {
    margin-bottom: 1em;
}

a {
    color: var(--primary-color);
    text-decoration: none;
}

a:hover {
    color: var(--secondary-color);
}

img,
iframe {
    max-width: 100%;
    height: auto;
    display: block;
}

.section-padding {
    padding: 60px 0;
}

.alternate-bg {
    background-color: var(--bg-alternate);
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
}

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

.btn {
    display: inline-block;
    background-color: var(--primary-color);
    color: var(--text-light);
    padding: 12px 25px;
    border: none;
    border-radius: 5px;
    font-family: var(--font-body);
    font-size: 1rem;
    font-weight: bold;
    cursor: pointer;
    transition:
        background-color 0.3s ease,
        transform 0.2s ease;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.btn:hover {
    background-color: #004080; /* Blu più scuro per hover */
    transform: translateY(-2px);
}

.form-message {
    margin-top: 15px;
    font-weight: bold;
    text-align: center;
}

/* --- Header & Navigation --- */
.site-header {
    background-color: var(--bg-color);
    padding: 15px 0;
    position: sticky;
    top: 0;
    z-index: 1000;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
    border-bottom: 2px solid var(--accent-color);
}

.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.logo h1 {
    margin: 0;
    font-size: 1.8rem;
    font-weight: 700;
    font-style: italic;
}

.main-nav ul {
    list-style: none;
    display: flex;
}

.main-nav li {
    margin-left: 25px;
}

.main-nav a {
    font-weight: bold;
    text-transform: uppercase;
    font-size: 0.9rem;
    padding-bottom: 5px;
    border-bottom: 2px solid transparent;
    transition: border-color 0.3s ease;
}

.main-nav a:hover,
.main-nav a.active {
    color: var(--primary-color);
    border-bottom-color: var(--secondary-color);
}

.menu-toggle {
    display: none;
    background: none;
    border: none;
    font-size: 2rem;
    color: var(--primary-color);
    cursor: pointer;
}

/* --- Hero Section (#home) --- */
.hero-section {
    background:
        linear-gradient(rgba(224, 242, 247, 0.8), rgba(255, 255, 255, 0.9)),
        url("images/cover-image.webp") no-repeat center bottom / cover; /* Placeholder per skyline */
    background-color: var(--accent-color); /* Fallback color */
    color: var(--primary-color);
    padding: 100px 0 80px; /* Più padding in alto */
    text-align: center;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: hidden; /* Per contenere l'accento skyline */
    padding-top: 80px; /* Add padding to account for fixed header */
}

/* Aggiungiamo un fallback per i browser che non supportano WebP */
@supports not (background: url("images/cover-image.webp")) {
    .hero-section {
        background:
            linear-gradient(rgba(224, 242, 247, 0.8), rgba(255, 255, 255, 0.9)),
            url("images/cover-image-clear.png") no-repeat center bottom / cover; /* Fallback PNG */
    }
}

.hero-section .couple-names {
    font-size: 4rem;
    margin-bottom: 0.2em;
    font-weight: 700;
    text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);
}

.hero-section .wedding-date {
    font-size: 1.5rem;
    font-weight: 400;
    margin-bottom: 1.5em;
    letter-spacing: 1px;
}

.hero-section .welcome-message {
    font-size: 1.2rem;
    max-width: 600px;
    margin: 0 auto;
    font-weight: 300;
}

.couple-image {
    display: block; /* Per evitare problemi di allineamento inline */
    max-width: 80%; /* Imposta una larghezza massima */
    height: auto; /* Mantiene le proporzioni */
    margin-bottom: 1em; /* Aggiunge un po' di spazio sotto l'immagine */
    margin-left: auto; /* Centra l'immagine */
    margin-right: auto; /* Centra l'immagine */
}

/* Accento Skyline (semplice bordo curvo) */
.skyline-accent {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50px; /* Altezza della curva */
    background: var(
        --bg-color
    ); /* Colore dello sfondo della sezione successiva */
    border-top-left-radius: 50% 100%; /* Crea la curva */
    border-top-right-radius: 50% 100%;
    transform: scaleX(1.5); /* Allarga la curva */
}

/* --- Details Section (#dettagli) --- */
.event-details {
    display: flex;
    justify-content: space-around;
    flex-wrap: wrap;
    gap: 30px;
    margin-bottom: 40px;
    text-align: center;
}

.event {
    background-color: var(--bg-color);
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 15px rgba(0, 90, 156, 0.1);
    border: 1px solid var(--border-color);
    flex: 1;
    min-width: 280px; /* Assicura spazio su schermi più piccoli */
    transition:
        transform 0.3s ease,
        box-shadow 0.3s ease;
}

.event:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 25px rgba(0, 90, 156, 0.15);
}

.event-icon {
    font-size: 2.5rem;
    color: var(--primary-color);
    margin-bottom: 15px;
}

.event h3 {
    margin-bottom: 15px;
}
.event p {
    margin-bottom: 5px;
    font-size: 0.95rem;
}

.map-container {
    margin-top: 40px;
    text-align: center;
}

.map-container h3 {
    margin-bottom: 20px;
}

.map-container iframe {
    border-radius: 8px;
    border: 1px solid var(--border-color);
    max-width: 100%; /* Responsive */
    width: 800px; /* Max larghezza sulla mappa */
    height: 300px;
}

#osm-map {
    width: 100%;
    height: 450px; /* O l'altezza desiderata */
    border-radius: 8px;
    border: 1px solid var(--border-color);
}

/* --- Registry Section (#lista-nozze) --- */
.registry-section p {
    text-align: center;
    max-width: 700px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 30px;
}

.registry-links {
    display: flex;
    justify-content: center;
    gap: 20px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}

.registry-link {
    display: inline-flex; /* Per allineare icona e testo */
    align-items: center;
    background-color: var(--bg-color);
    color: var(--primary-color);
    padding: 15px 30px;
    border: 1px solid var(--primary-color);
    border-radius: 5px;
    font-weight: bold;
    transition:
        background-color 0.3s ease,
        color 0.3s ease;
}

.registry-link i {
    margin-right: 10px; /* Spazio tra icona e testo */
    font-size: 1.2rem;
}

.registry-link:hover {
    background-color: var(--primary-color);
    color: var(--text-light);
}

.registry-link.primary-registry {
    background-color: var(--primary-color);
    color: white; /* Testo bianco per contrasto */
    border: 2px solid var(--accent-color-dark); /* Bordo più scuro */
    transform: scale(1.02); /* Leggero ingrandimento all'hover */
    transition: all 0.3s ease;
}

.registry-link.primary-registry:hover {
    transform: scale(1.05); /* Effetto hover più pronunciato */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.info-text {
    font-style: italic;
    font-size: 0.9rem;
    color: #555;
}

/* --- RSVP & Contact Forms --- */
.rsvp-form,
.contact-form {
    max-width: 600px;
    margin: 0 auto;
    background-color: var(--bg-color);
    padding: 30px 40px;
    border-radius: 8px;
    box-shadow: 0 4px 15px rgba(0, 90, 156, 0.08);
    border: 1px solid var(--border-color);
}

.rsvp-section p:first-of-type {
    /* Paragrafo introduttivo RSVP */
    text-align: center;
    margin-bottom: 30px;
    font-size: 1.1rem;
}

.contact-section p:first-of-type {
    /* Paragrafo introduttivo Contatti */
    text-align: center;
    margin-bottom: 30px;
    font-size: 1.1rem;
}

.form-group {
    margin-bottom: 20px;
}

.form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: bold;
    color: var(--primary-color);
}

.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="number"],
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 12px;
    border: 1px solid var(--border-color);
    border-radius: 5px;
    font-family: var(--font-body);
    font-size: 1rem;
    transition: border-color 0.3s ease;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 0 5px rgba(0, 90, 156, 0.2);
}

.form-group textarea {
    resize: vertical; /* Permette ridimensionamento verticale */
}

.form-group .meal-options label {
    display: block; /* Mette ogni checkbox su una nuova riga */
    margin-bottom: 8px;
    font-weight: normal;
    color: var(--text-color);
}
.form-group .meal-options input[type="checkbox"] {
    margin-right: 8px;
    accent-color: var(--primary-color); /* Colora il check */
}

form button[type="submit"] {
    display: block;
    width: 100%;
    margin-top: 20px;
}

/* --- Q&A Section (#qa) --- */
.qa-list {
    max-width: 750px;
    margin: 0 auto;
}

.qa-list details {
    background-color: var(--bg-color);
    border: 1px solid var(--border-color);
    border-radius: 5px;
    margin-bottom: 10px;
    overflow: hidden; /* Per bordi arrotondati corretti */
}

.qa-list summary {
    padding: 15px 20px;
    font-weight: bold;
    cursor: pointer;
    position: relative; /* Per il pseudo-elemento freccia */
    list-style: none; /* Rimuove il marcatore di default */
    color: var(--primary-color);
    transition: background-color 0.2s ease;
}

.qa-list summary:hover {
    background-color: var(--accent-color);
}

.qa-list summary::-webkit-details-marker {
    display: none; /* Rimuove marcatore in Chrome/Safari */
}

.qa-list summary::after {
    /* Crea una freccia custom */
    content: "+";
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 1.5rem;
    color: var(--primary-color);
    transition: transform 0.3s ease;
}

.qa-list details[open] summary::after {
    content: "−"; /* Cambia in meno quando aperto */
}

.qa-list details[open] summary {
    background-color: var(--accent-color);
    border-bottom: 1px solid var(--border-color);
}

.qa-list details p {
    padding: 15px 20px;
    margin: 0; /* Rimuove margini del paragrafo interno */
    border-top: 1px dashed var(--secondary-color); /* Linea separatrice */
    background: #fff; /* Sfondo leggermente diverso se necessario */
}

.qa-list details p a {
    font-weight: bold;
}

/* --- Footer --- */
.site-footer {
    background-color: var(--primary-color);
    color: var(--text-light);
    padding: 30px 0;
    margin-top: 60px; /* Spazio sopra il footer */
    border-top: 5px solid var(--secondary-color);
}

.site-footer p {
    margin-bottom: 5px;
    font-size: 0.9rem;
}

.site-footer a {
    color: var(--accent-color);
}

.site-footer a:hover {
    color: #fff;
}

/* --- Responsive Design --- */
@media (max-width: 768px) {
    h1 {
        font-size: 2.2rem;
    }
    h2 {
        font-size: 1.8rem;
    }
    h3 {
        font-size: 1.4rem;
    }

    .hero-section .couple-names {
        font-size: 3rem;
    }
    .hero-section .wedding-date {
        font-size: 1.2rem;
    }
    .hero-section .welcome-message {
        font-size: 1rem;
    }

    .header-content {
        position: relative; /* Per posizionare il menu */
    }

    .menu-toggle {
        display: block; /* Mostra il bottone hamburger */
    }

    .main-nav ul {
        display: none; /* Nasconde il menu desktop */
        flex-direction: column;
        position: absolute;
        top: 100%; /* Sotto l'header */
        left: 0;
        width: 100%;
        background-color: rgba(255, 255, 255, 0.98);
        box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
        border-top: 1px solid var(--border-color);
    }

    .main-nav ul.active {
        display: flex; /* Mostra il menu mobile quando attivo */
    }

    .main-nav li {
        margin: 0;
        text-align: center;
        border-bottom: 1px solid var(--border-color);
    }
    .main-nav li:last-child {
        border-bottom: none;
    }

    .main-nav a {
        display: block;
        padding: 15px;
        width: 100%;
        border-bottom: none; /* Rimuove bordo link */
    }
    .main-nav a:hover {
        background-color: var(--accent-color);
        border-bottom: none;
    }

    .event-details {
        flex-direction: column;
        align-items: center;
    }
    .event {
        width: 100%;
        max-width: 400px; /* Limita larghezza su mobile */
    }

    .registry-links {
        flex-direction: column;
        align-items: center;
    }
    .registry-link {
        width: 80%;
        justify-content: center; /* Centra testo e icona */
        text-align: center;
    }

    .rsvp-form,
    .contact-form {
        padding: 20px;
    }

    .qa-list summary::after {
        right: 15px; /* Avvicina + / - al bordo */
    }
}

/* --- Countdown Section (#countdown) --- */
.countdown-section {
    text-align: center;
    /* Puoi mantenere o modificare altri stili come il background */
}

#countdown-timer {
    display: flex;
    justify-content: center;
    gap: 20px; /* Spazio tra i segmenti del timer */
    margin-top: 30px;
}

.timer-segment {
    background-color: var(--primary-color);
    color: var(--accent-color);
    padding: 20px 30px;
    border-radius: 8px;
    box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
    min-width: 80px; /* Larghezza minima per i segmenti */
}

.timer-segment span {
    display: block;
    font-size: 2rem;
    font-weight: bold;
}

.timer-segment .label {
    font-size: 0.8rem;
    margin-top: 5px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-color-light); /* O un colore contrastante */
}

/* Adatta gli stili per schermi più piccoli se necessario */
@media (max-width: 600px) {
    #countdown-timer {
        gap: 10px;
    }

    .timer-segment {
        padding: 15px 20px;
        min-width: 60px;
    }

    .timer-segment span {
        font-size: 1.5rem;
    }
}

/* --- Gallery Section (Full Width) con Overlay Migliorato --- */
.gallery-section.full-width {
    width: 100%;
    padding-top: 30px; /* Ridotto il padding superiore */
    padding-bottom: 30px; /* Ridotto il padding inferiore */
    text-align: center;
    overflow-x: auto; /* Permette lo scorrimento orizzontale */
    white-space: nowrap; /* Impedisce alle immagini di andare a capo */
}

.gallery-container {
    max-width: none; /* Rimuove la larghezza massima per permettere lo scorrimento */
    margin: 0; /* Rimuove i margini automatici */
    padding: 0 10px; /* Ridotto il padding laterale */
}

.gallery-row {
    display: inline-flex;
    gap: 10px; /* Ridotto lo spazio tra le immagini */
    margin-top: 10px; /* Ridotto il margine superiore */
}

.gallery-item {
    width: auto; /* La larghezza si basa sul contenuto */
    height: auto; /* L'altezza si basa sul contenuto */
    overflow: hidden;
    border-radius: 8px;
    box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
    position: relative; /* Necessario per posizionare l'overlay */
    flex-shrink: 0; /* Impedisce agli elementi di ridursi troppo */
}

.gallery-item img {
    display: block;
    width: auto;
    height: auto;
    max-width: 300px; /* Larghezza massima desiderata */
    max-height: 400px; /* Altezza massima desiderata */
    object-fit: contain; /* Assicura che l'immagine sia interamente visibile mantenendo le proporzioni */
    transition: transform 0.3s ease-in-out;
}

.gallery-item img:hover {
    transform: scale(1.05);
}

/* Stili per l'overlay (come testo sull'immagine) */
.overlay {
    position: absolute;
    top: 50%; /* Centra verticalmente */
    left: 50%; /* Centra orizzontalmente */
    transform: translate(
        -50%,
        -50%
    ); /* Sposta l'elemento del 50% della sua larghezza e altezza */
    color: white;
    font-family: var(
        --font-heading
    ); /* Assumi che tu abbia una variabile per il font degli header */
    font-size: 2.5rem; /* Grandezza simile agli header */
    font-weight: bold;
    text-align: center;
    text-shadow:
        -1px -1px 0 #000,
        1px -1px 0 #000,
        -1px 1px 0 #000,
        1px 1px 0 #000; /* Bordo bianco stilizzato */
    padding: 5px 10px;
    border-radius: 5px;
    opacity: 0; /* Inizialmente nascosto */
    transition: opacity 0.3s ease-in-out;
    background-color: rgba(0, 0, 0, 0.4); /* Leggero sfondo per leggibilità */
}

.gallery-item:hover .overlay {
    opacity: 1; /* Mostra l'overlay sull'hover */
}

/* Adattamenti per schermi più piccoli */
@media (max-width: 900px) {
    .gallery-item img {
        max-width: 200px;
        max-height: 266px; /* Mantiene le proporzioni approssimative */
    }

    .overlay {
        font-size: 1.5rem;
    }
}

@media (max-width: 600px) {
    .gallery-item img {
        max-width: 150px;
        max-height: 200px; /* Mantiene le proporzioni approssimative */
    }

    .overlay {
        font-size: 1.2rem;
    }
}

/* Generali per la sezione Mintaka */
#mintaka-details {
    background-color: var(
        --light-bg-color
    ); /* Assicurati di avere una variabile CSS o usa un colore specifico */
    padding: 60px 20px; /* Spaziatura generale */
    color: var(--text-color); /* Colore del testo principale */
}

#mintaka-details .section-title {
    font-family: "Playfair Display", serif;
    font-size: 2.8rem;
    color: var(--primary-color); /* Esempio: un colore distintivo */
    margin-bottom: 25px;
    position: relative;
    padding-bottom: 15px;
}

#mintaka-details .section-title::after {
    content: "";
    display: block;
    width: 60px;
    height: 3px;
    background-color: var(
        --accent-color
    ); /* Un colore accentato, magari oro o rosa antico */
    margin: 10px auto 0;
    border-radius: 2px;
}

#mintaka-details .lead-text {
    font-family: "Lato", sans-serif;
    font-size: 1.15rem;
    max-width: 800px;
    margin: 0 auto 50px auto;
    line-height: 1.6;
    color: var(
        --dark-text-color
    ); /* Un colore leggermente più scuro per il testo */
}

/* Layout a griglia per le info-card */
.info-grid {
    display: grid;
    grid-template-columns: 1fr; /* Una colonna di default */
    gap: 40px; /* Spazio tra le card */
    margin-top: 40px;
    max-width: 1000px; /* Limita la larghezza per leggibilità */
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 768px) {
    /* Due colonne su schermi più grandi */
    .info-grid {
        grid-template-columns: 1fr 1fr;
    }
}
.event-info-text {
    font-family: 'Lato', sans-serif;
    font-size: 1rem; /* Dimensione base del testo */
    line-height: 1.6; /* Altezza di riga normale */
    color: var(--text-color);
    text-align: center; /* Testo centrato per maggiore pulizia */
}
/* Stile delle singole card */
.info-card {
    background-color: #fff; /* Sfondo bianco per le card */
    border-radius: 12px; /* Angoli più arrotondati */
    padding: 40px;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08); /* Ombra più morbida */
    text-align: left; /* Testo allineato a sinistra all'interno delle card */
    transition:
        transform 0.3s ease-in-out,
        box-shadow 0.3s ease-in-out;
    border-top: 5px solid var(--primary-color); /* Bordo superiore colorato */
}

.info-card:hover {
    transform: translateY(-5px); /* Leggero sollevamento all'hover */
    box-shadow: 0 12px 25px rgba(0, 0, 0, 0.12);
}

.info-card h3 {
    font-family: "Playfair Display", serif;
    font-size: 1.8rem;
    color: var(--primary-color);
    margin-bottom: 25px;
    position: relative;
    padding-bottom: 10px;
}

.info-card h3::after {
    content: "";
    display: block;
    width: 40px;
    height: 2px;
    background-color: var(--accent-color);
    margin-top: 10px;
    margin-left: 0; /* Allineamento a sinistra */
}

.info-card .card-intro {
    font-family: "Lato", sans-serif;
    font-size: 1rem;
    line-height: 1.5;
    margin-bottom: 30px;
    color: var(--dark-text-color);
}

/* Stile degli elementi singoli (contatti e banca) */
.contact-item,
.bank-item {
    display: flex; /* Flexbox per allineare icona e testo */
    align-items: center; /* Allineamento verticale al centro */
    margin-bottom: 25px; /* Spazio tra gli elementi */
    flex-wrap: wrap; /* Permette al contenuto di andare a capo se non c'è spazio */
}

.contact-item:last-child,
.bank-item:last-child {
    margin-bottom: 0; /* Nessun margine sotto l'ultimo elemento */
}

.icon-large {
    font-size: 1.6rem; /* Dimensione delle icone */
    color: var(--primary-color); /* Colore delle icone */
    margin-right: 15px; /* Spazio tra icona e testo */
    min-width: 30px; /* Assicura che le icone abbiano uno spazio minimo */
    text-align: center;
}

.contact-label,
.bank-label {
    font-weight: 700; /* Grassetto per le etichette */
    color: var(--heading-color); /* Colore più scuro per le etichette */
    font-family: "Lato", sans-serif;
    margin-right: 8px; /* Spazio tra etichetta e valore */
    flex-shrink: 0; /* Impedisce al label di restringersi */
}

.contact-item span,
.bank-item span,
.contact-item a {
    font-family: "Lato", sans-serif;
    font-size: 1.05rem;
    color: var(--text-color);
    line-height: 1.4;
    flex-grow: 1; /* Permette al contenuto di prendere lo spazio rimanente */
}

/* Stili specifici per link */
.email-link,
.map-link {
    color: var(--primary-color);
    text-decoration: none;
    font-weight: 600;
    transition: color 0.2s ease-in-out;
}

.email-link:hover,
.map-link:hover {
    color: var(--accent-color);
    text-decoration: underline;
}

/* Stili per l'IBAN e l'icona di copia */
.iban-copy-wrapper {
    display: flex; /* Flexbox per allineare IBAN e icona */
    align-items: center; /* Allineamento verticale */
    gap: 10px; /* Spazio tra IBAN e icona */
    flex-wrap: wrap; /* Per gestione su schermi piccoli */
    justify-content: flex-start; /* Allinea a sinistra */
}

.iban-number {
    font-family: "Playfair Display", serif;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--heading-color);
    word-break: break-all;
    flex-grow: 1; /* Permette all'IBAN di prendere lo spazio */
}

.copy-icon {
    font-size: 1.3rem; /* Dimensione dell'icona */
    color: var(--primary-color); /* Colore primario */
    cursor: pointer; /* Indica che è cliccabile */
    transition:
        color 0.2s ease-in-out,
        transform 0.2s ease-in-out;
    padding: 5px; /* Aggiunge un po' di area cliccabile */
    border-radius: 5px;
    background-color: transparent; /* Di default trasparente */
}

.copy-icon:hover {
    color: var(--accent-color); /* Cambia colore all'hover */
    transform: scale(1.1); /* Leggero ingrandimento */
    background-color: rgba(
        var(--primary-color-rgb, 160, 82, 45),
        0.1
    ); /* Sfondo leggero all'hover */
}

/* Stile per l'icona dopo la copia (quando ha la classe 'copied') */
.copy-icon.copied {
    color: #28a745; /* Verde per indicare successo */
    transform: scale(1.1);
    background-color: rgba(40, 167, 69, 0.1);
}
/* Stili per l'indirizzo e l'icona mappa */
.address-map-wrapper {
    display: flex; /* Flexbox per allineare indirizzo e icona */
    align-items: center; /* Allineamento verticale */
    gap: 10px; /* Spazio tra indirizzo e icona */
    flex-grow: 1; /* Permette al wrapper di prendere lo spazio rimanente */
    flex-wrap: wrap; /* Permette il wrap su schermi piccoli */
}

.address-map-wrapper address {
    font-style: normal; /* Rimuove il corsivo predefinito di address */
    flex-grow: 1; /* Permette all'indirizzo di prendere lo spazio */
    color: var(--text-color);
    font-family: "Lato", sans-serif;
    font-size: 1.05rem; /* Consistente con altri testi */
    line-height: 1.4;
}

.map-icon-link {
    display: flex; /* Assicura che l'icona sia centrata se ci fosse spazio extra */
    align-items: center;
    justify-content: center;
    flex-shrink: 0; /* Impedisce al link di restringersi */
    padding: 5px; /* Aggiunge un'area cliccabile */
    border-radius: 50%; /* Rende il contenitore circolare */
    background-color: transparent;
    transition: background-color 0.2s ease-in-out;
}

.map-icon {
    font-size: 1.4rem; /* Dimensione dell'icona mappa */
    color: var(--primary-color); /* Colore primario per l'icona */
    transition:
        color 0.2s ease-in-out,
        transform 0.2s ease-in-out;
}

.map-icon-link:hover {
    background-color: rgba(
        var(--primary-color-rgb, 160, 82, 45),
        0.1
    ); /* Sfondo leggero all'hover */
}

.map-icon-link:hover .map-icon {
    color: var(--accent-color); /* Colore accentato all'hover */
    transform: scale(1.1); /* Leggero ingrandimento all'hover */
}

/* Testo per la nota finale */
.note-text {
    font-family: "Lato", sans-serif;
    font-size: 1rem;
    margin-top: 60px;
    margin-bottom: 40px;
    font-style: italic;
    color: var(--dark-text-color);
}

/* Bottone Torna Indietro */
.go-back-btn {
    background-color: var(--primary-color);
    color: #fff;
    padding: 12px 30px;
    border-radius: 8px;
    text-decoration: none;
    font-size: 1.1rem;
    font-weight: 600;
    display: inline-flex; /* Per allineare icona e testo */
    align-items: center;
    gap: 10px; /* Spazio tra icona e testo */
    transition:
        background-color 0.3s ease-in-out,
        transform 0.3s ease-in-out;
}

.go-back-btn:hover {
    background-color: var(--accent-color);
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

/* Stili per il generatore di causali */
.causal-generator-container {
    align-items: flex-start; /* Allinea l'icona in alto se il contenuto è multiriga */
}

.causal-content {
    display: flex;
    flex-direction: column; /* Impila etichetta, causale e bottoni verticalmente */
    flex-grow: 1;
    gap: 10px; /* Spazio tra gli elementi interni */
}

.generated-causal-text {
    font-family: "Playfair Display", serif; /* Font elegante per la causale */
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--heading-color);
    word-break: break-all; /* Per evitare overflow */
    background-color: var(
        --light-accent-color
    ); /* Sfondo leggero per la causale */
    padding: 8px 12px;
    border-radius: 6px;
    border: 1px dashed var(--primary-color); /* Bordo tratteggiato per distinguere */
    text-align: center;
}

.causal-actions {
    display: flex;
    gap: 15px;
    margin-top: 15px;
    justify-content: center;
}

.causal-actions .button-small {
    background-color: var(--primary-color);
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 25px;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 8px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.causal-actions .button-small:hover {
    background-color: var(--secondary-color);
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.causal-actions .button-small:active {
    transform: translateY(0);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Main Content Fade-in Animations - Only for index page */
#main-wedding > section > *:not(picture) {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

#main-wedding > section > *.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Gallery sections need special handling - Only for index page */
#main-wedding .gallery-section .gallery-container {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

#main-wedding .gallery-section .gallery-container.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Ensure the picture element has no animation - Only for index page */
#main-wedding .hero-section picture {
    opacity: 1;
    transform: none;
    transition: none;
}

/* Header Animation - Only for index page */
.index-header .site-header {
    opacity: 0;
    transform: translateY(-20px);
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
    pointer-events: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
}

.index-header .site-header.visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
    position: sticky;
}

/* Default styles for header on other pages */
.site-header {
    background-color: var(--bg-color);
    padding: 15px 0;
    position: sticky;
    top: 0;
    z-index: 1000;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
    border-bottom: 2px solid var(--accent-color);
}

/* Adjust hero section padding for fixed header during animation */
.hero-section {
    padding-top: 80px;
}

/* Generali per la sezione dettagli del matrimonio */
#dettagli {
    padding: 60px 20px;
    background-color: var(--light-bg-color);
    text-align: center;
}

#dettagli .section-title {
    font-family: 'Playfair Display', serif;
    font-size: 2.8rem;
    color: var(--primary-color);
    margin-bottom: 40px;
    position: relative;
    padding-bottom: 15px;
}

#dettagli .section-title::after {
    content: '';
    display: block;
    width: 60px;
    height: 3px;
    background-color: var(--accent-color);
    margin: 10px auto 0;
    border-radius: 2px;
}

/* Griglia per le card dei dettagli evento (Cerimonia e Ricevimento) */
.event-details-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 30px;
    max-width: 900px;
    margin: 0 auto;
}

@media (min-width: 768px) {
    .event-details-grid {
        grid-template-columns: 1fr 1fr;
    }
}

/* Stile delle singole card di dettaglio evento */
.event-detail-card {
    background-color: var(--white);
    border-radius: 10px;
    padding: 30px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
    text-align: center;
    transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.event-detail-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
}

/* Contenitore per l'icona dell'evento */
.event-icon-container {
    background-color: var(--light-accent-color);
    border-radius: 50%;
    width: 80px;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 25px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

/* Stile dell'icona all'interno del cerchio */
.event-detail-icon {
    font-size: 2.5rem;
    color: var(--primary-color);
}

/* Blocco informativo del testo dell'evento */
.event-info-block h3 {
    font-family: 'Playfair Display', serif;
    font-size: 1.8rem;
    color: var(--heading-color);
    margin-bottom: 20px;
}

/* Testo discorsivo dell'evento (Data, Ora, Luogo, Indirizzo) */
.event-info-text {
    font-family: 'Lato', sans-serif;
    font-size: 1rem;
    color: var(--text-color);
    line-height: 1.6;
}
/* --- Lightbox Styles --- */
.lightbox-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.85);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 10000; /* Increased z-index to ensure it's above everything */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    -webkit-transform: translateZ(0); /* Fix for mobile Safari */
    transform: translateZ(0);
}

.lightbox-overlay.active {
    opacity: 1;
    visibility: visible;
}

.lightbox-container {
    position: relative;
    max-width: 90%;
    max-height: 90%;
    display: flex;
    flex-direction: column;
    align-items: center;
    transform: scale(0.9);
    transition: transform 0.3s ease;
}

.lightbox-overlay.active .lightbox-container {
    transform: scale(1);
}

.lightbox-content {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.lightbox-image {
    max-width: 100%;
    max-height: 80vh;
    object-fit: contain;
    border-radius: 4px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
}

.lightbox-caption {
    color: white;
    font-family: var(--font-heading);
    font-size: 2rem;
    text-align: center;
    margin-top: 15px;
    text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8);
    padding: 10px;
}

.lightbox-close {
    position: absolute;
    top: -40px;
    right: -40px;
    background: none;
    border: none;
    color: white;
    font-size: 2rem;
    cursor: pointer;
    width: 40px;
    height: 40px;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: transform 0.2s ease;
    z-index: 2001;
}

.lightbox-close:hover {
    transform: scale(1.2);
}

/* Mobile styles for lightbox */
@media (max-width: 768px) {
    .lightbox-container {
        max-width: 95%;
        margin: 0 auto;
    }
    
    .lightbox-close {
        top: -30px;
        right: 0;
        background-color: rgba(0, 0, 0, 0.5); /* Add background for better visibility */
        border-radius: 50%;
        width: 44px; /* Larger touch target */
        height: 44px;
    }
    
    .lightbox-caption {
        font-size: 1.5rem;
        padding: 8px 15px;
        background-color: rgba(0, 0, 0, 0.5); /* Add background for better readability */
        border-radius: 4px;
        margin-top: 10px;
    }
    
    .lightbox-image {
        max-height: 60vh; /* Reduced height to ensure it fits better */
        width: auto;
        max-width: 90vw;
    }
    
    .lightbox-content {
        width: 100%;
    }
    
    /* Prevent background scrolling on mobile when lightbox is open */
    body.lightbox-open {
        overflow: hidden;
        position: fixed;
        width: 100%;
        height: 100%;
        left: 0;
        /* Don't set top: 0 as it resets scroll position */
    }
    
    /* Ensure the lightbox is centered on mobile */
    .lightbox-overlay {
        align-items: center;
        padding: 0;
    }
}