:root {
--color-fondo: #eef7fb;
--color-principal: #b96fb8;
--color-texto: #333333;
--color-blanco: #ffffff;
}

/* Reset básico */

*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}

html {
scroll-behavior: smooth;
}

/* Base */

body {
font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
sans-serif;
color: var(--color-texto);
background-color: var(--color-fondo);
line-height: 1.7;
position: relative;
min-height: 100vh;
z-index: 0;
font-size: 16px;
}

body::before {
content: "";
position: fixed;
inset: 0;
background-image: url("img/finca.jpeg");
background-size: cover;
background-position: center;
filter: grayscale(1) opacity(0.12) blur(6px);
z-index: -1;
}

img {
display: block;
max-width: 100%;
height: auto;
}

.hero h1,
.section h2,
.timeline-content h3,
.info-card h3,
.location-text h3,
.location-map h3 {
font-family: "Playfair Display", serif;
}

/* Header y navegación */

.site-header {
position: sticky;
top: 0;
z-index: 10;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.75rem 1.5rem;
background-color: rgba(249, 246, 242, 0.96);
backdrop-filter: blur(6px);
border-bottom: 1px solid #e4d7c9;
}

.logo span {
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
font-size: 0.85rem;
}

.main-nav {
display: flex;
align-items: center;
gap: 0.75rem;
}

.main-nav a {
text-decoration: none;
color: var(--color-texto);
font-size: 0.9rem;
}

.main-nav a:hover {
color: var(--color-principal);
}

/* Hero */

.hero {
position: relative;
min-height: 80vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 4rem 1.5rem;
background-image: url("img/finca.jpeg");
background-size: cover;
background-position: center;
color: var(--color-blanco);
}

.hero::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
to bottom,
rgba(0, 0, 0, 0.35),
rgba(0, 0, 0, 0.55)
);
}

.hero-content {
position: relative;
max-width: 600px;
}

.hero-date {
color: rgba(255, 255, 255, 0.85);
}

.hero h1 {
font-size: 2.4rem;
margin-bottom: 0.5rem;
}

.hero-names {
font-size: 1.1rem;
margin-bottom: 0.25rem;
}

.hero-place {
color: rgba(255, 255, 255, 0.8);
}

.hero-button {
display: inline-block;
padding: 0.75rem 1.5rem;
border-radius: 999px;
background-color: var(--color-principal);
color: var(--color-blanco);
text-decoration: none;
font-size: 0.95rem;
}

.hero-button:hover {
filter: brightness(0.95);
}

/* Secciones genéricas */

.section {
padding: 4rem 1.5rem;
max-width: 900px;
margin: 0 auto;
}

.section h2 {
font-size: 1.8rem;
margin-bottom: 0.75rem;
text-align: center;
}

.section p {
text-align: center;
max-width: 700px;
margin: 0.5rem auto;
}

/* Fotos */

.section-photo {
padding: 2rem 1.5rem;
}

.photo-strip {
width: 100%;
max-width: 900px;
margin: 0 auto;
border-radius: 1rem;
}

.photo-strip-double {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}

.photo-strip-double img {
width: 100%;
height: 420px;
object-fit: cover;
border-radius: 1rem;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}

@media (max-width: 640px) {
.photo-strip-double {
grid-template-columns: 1fr;
}

.photo-strip-double img {
height: auto;
}
}


/* Timeline del día */

.timeline {
margin-top: 2rem;
border-left: 2px solid rgba(0, 0, 0, 0.08);
padding-left: 1.5rem;
}

.timeline-item {
display: flex;
align-items: flex-start;
margin-bottom: 1.5rem;
gap: 0.75rem;
}

.time {
font-weight: 600;
width: 3.5rem;
flex-shrink: 0;
color: var(--color-principal);
}

.timeline-content {
background-color: rgba(255, 255, 255, 0.8);
padding: 0.75rem 1rem;
border-radius: 0.5rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.timeline-content h3 {
font-size: 1rem;
margin-bottom: 0.25rem;
}

.timeline-content p {
font-size: 0.9rem;
text-align: left;
margin: 0;
}

/* Cómo llegar */

.location-grid {
display: grid;
grid-template-columns: 1.2fr 1fr;
gap: 2rem;
margin-top: 2rem;
}

.location-text h3,
.location-map h3 {
font-size: 1.1rem;
margin-bottom: 0.25rem;
text-align: left;
}

.location-text p {
text-align: left;
margin-bottom: 1rem;
}

.map-frame {
background-color: rgba(255, 255, 255, 0.8);
border-radius: 0.75rem;
padding: 1rem;
min-height: 180px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-size: 0.9rem;
color: #666666;
}

.map-link {
display: inline-block;
margin-top: 0.75rem;
font-size: 0.9rem;
color: var(--color-principal);
text-decoration: none;
}

.map-link:hover {
text-decoration: underline;
}

/* Info práctica / tarjetas */

.info-cards {
margin-top: 2rem;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1.5rem;
max-width: 700px;
margin-left: auto;
margin-right: auto;
}

.info-card {
background-color: rgba(255, 255, 255, 0.85);
border-radius: 0.75rem;
padding: 1.25rem;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
font-size: 0.9rem;
}

.info-card h3 {
font-size: 1rem;
margin-bottom: 0.5rem;
}

.info-card p {
text-align: left;
margin: 0;
}

.info-item {
display: flex;
align-items: flex-start;
gap: 0.75rem;
}

.info-icon {
flex: 0 0 auto;
width: 38px;
height: 38px;
border-radius: 999px;
background-color: rgba(0, 0, 0, 0.04);
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--color-principal);
}

.info-icon svg {
width: 22px;
height: 22px;
display: block;
stroke: currentColor;
fill: none;
stroke-width: 1.6;
}

.info-icon-coach svg,
.info-icon-shoes svg {
stroke-linejoin: round;
stroke-linecap: round;
}

/* Iconos genéricos */

.icon {
width: 24px;
height: 24px;
color: var(--color-principal);
flex-shrink: 0;
}

.icon-inline {
width: 20px;
height: 20px;
vertical-align: middle;
margin-right: 0.35rem;
}

/* Tarjetas de hoteles */

.hotel-card {
overflow: hidden;
padding: 0;
}

.hotel-card img {
width: 100%;
aspect-ratio: 16 / 10;
object-fit: cover;
}

.hotel-card-body {
padding: 1.25rem;
}

.hotel-card h3 a,
.stay-links-card h3 a {
color: inherit;
text-decoration: none;
}

.hotel-card h3 a:hover,
.stay-links-card h3 a:hover {
color: var(--color-principal);
}

.stay-links {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
justify-content: center;
margin-top: 0.75rem;
}

.stay-link-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.7rem 1.2rem;
border-radius: 999px;
border: 1px solid rgba(0, 0, 0, 0.12);
text-decoration: none;
color: var(--color-texto);
background-color: rgba(255, 255, 255, 0.9);
}

.stay-link-button:hover {
border-color: var(--color-principal);
color: var(--color-principal);
}

/* Lista de regalos e IBAN */

.gift-box {
margin: 2rem auto 0;
max-width: 600px;
background-color: rgba(255, 255, 255, 0.9);
border-radius: 0.75rem;
padding: 1.5rem 1.75rem;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
font-size: 0.95rem;
}

.gift-box p {
text-align: center;
margin-bottom: 0.75rem;
}

.gift-box p:last-child {
margin-bottom: 0;
}

.iban-row {
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
margin-top: 0.5rem;
font-weight: 500;
}

#iban-text {
letter-spacing: 0.09em;
}

.copy-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.3rem;
border-radius: 999px;
border: 1px solid var(--color-principal);
background-color: transparent;
color: var(--color-principal);
cursor: pointer;
}

.copy-button:hover {
background-color: var(--color-principal);
color: var(--color-blanco);
}

.icon-copy {
width: 18px;
height: 18px;
}

.gift-detail {
 text-align: center;
 margin-top: 0.75rem;
 font-size: 0.9rem;
 line-height: 1.7;
 width: 100%;
}

/* Formulario RSVP */

.rsvp-form {
max-width: 520px;
margin: 2rem auto 0;
display: flex;
flex-direction: column;
gap: 1.25rem;
}

.form-field {
display: flex;
flex-direction: column;
gap: 0.35rem;
}

.form-field label {
font-size: 0.95rem;
font-weight: 500;
display: flex;
align-items: center;
gap: 0.5rem;
}

.form-icon {
width: 24px;
height: 24px;
border-radius: 999px;
background-color: rgba(0, 0, 0, 0.04);
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--color-principal);
}

.form-icon svg {
width: 14px;
height: 14px;
display: block;
stroke: currentColor;
fill: none;
}

.rsvp-form input,
.rsvp-form select,
.rsvp-form textarea {
border-radius: 999px;
border: 1px solid rgba(0, 0, 0, 0.12);
padding: 0.7rem 1rem;
font-size: 0.95rem;
font-family: inherit;
background-color: #fff;
}

.rsvp-form textarea {
border-radius: 1rem;
resize: vertical;
}

.rsvp-form input:focus,
.rsvp-form select:focus,
.rsvp-form textarea:focus {
outline: none;
border-color: var(--color-principal);
box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.03);
}

/* Botones */

.btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.75rem 2.5rem;
border-radius: 999px;
border: none;
font-size: 0.95rem;
font-weight: 500;
cursor: pointer;
transition:
transform 0.15s ease-out,
box-shadow 0.15s ease-out,
background 0.2s ease-out;
}

.btn-primary {
color: #ffffff;
background: linear-gradient(135deg, var(--color-principal), #c8a58f);
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.12);
}

.btn-primary:hover {
transform: translateY(-1px);
box-shadow: 0 10px 22px rgba(0, 0, 0, 0.16);
background: linear-gradient(135deg, #c8a58f, var(--color-principal));
}

.btn-primary:active {
transform: translateY(0);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.18);
}

.rsvp-form .btn.btn-primary {
align-self: center;
margin-top: 0.75rem;
min-width: 220px;
}

/* Footer */

.site-footer {
text-align: center;
padding: 1.5rem;
font-size: 0.8rem;
color: #7a6a5a;
}

/* Responsive */

@media (max-width: 900px) {
.info-cards {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}

@media (max-width: 768px) {
.site-header {
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
padding: 0.75rem 1rem;
}

.main-nav {
width: 100%;
flex-wrap: wrap;
justify-content: center;
}

.hero {
padding: 4rem 1.5rem 3rem;
}

.hero-button {
width: 100%;
max-width: 260px;
margin-inline: auto;
}

.section {
padding: 3rem 1.5rem;
}

.location-grid {
grid-template-columns: 1fr;
}

.location-text h3,
.location-map h3,
.location-text p {
text-align: center;
}

.timeline-item {
flex-direction: column;
align-items: flex-start;
}

.time {
width: auto;
}

.info-cards {
grid-template-columns: 1fr;
}

.rsvp-form {
max-width: 100%;
}
}

@media (max-width: 640px) {
.logo span {
font-size: 0.75rem;
}

.main-nav a {
font-size: 0.8rem;
}

.section h2 {
font-size: 1.5rem;
}
}
.map-frame {
background-color: rgba(255, 255, 255, 0.82);
border-radius: 0.75rem;
overflow: hidden;
min-height: 260px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
}

.map-frame iframe {
display: block;
width: 100%;
height: 260px;
border: 0;
}

.info-card h3 {
display: flex;
align-items: center;
gap: 0.5rem;
}

.hotel-meta {
margin-top: 0.55rem;
font-size: 0.86rem;
color: #666;
text-align: left;
}

.hotel-meta strong {
color: var(--color-texto);
}
.hotel-card {
overflow: hidden;
padding: 0;
}

.hotel-card img {
width: 100%;
aspect-ratio: 16 / 10;
object-fit: cover;
}

.hotel-card-body {
padding: 1.25rem;
}

.hotel-card h3 a,
.stay-links-card h3 a {
color: inherit;
text-decoration: none;
}

.hotel-card h3 a:hover,
.stay-links-card h3 a:hover {
color: var(--color-principal);
}

.hotel-meta {
margin-top: 0.6rem;
font-size: 0.86rem;
line-height: 1.55;
color: #666666;
text-align: left;
}

.hotel-meta strong {
color: var(--color-texto);
}

.stay-links {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
justify-content: center;
margin-top: 1rem;
}

.stay-link-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.7rem 1.2rem;
border-radius: 999px;
border: 1px solid rgba(0, 0, 0, 0.12);
text-decoration: none;
color: var(--color-texto);
background-color: rgba(255, 255, 255, 0.9);
}

.stay-link-button:hover {
border-color: var(--color-principal);
color: var(--color-principal);
}

/* =========================================
   FOTO SEPARADORA
   ========================================= */

.photo-divider {
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
  padding: 0 1.5rem;
}

.photo-divider img {
  width: 100%;
  height: auto;
  object-fit: contain;
  border-radius: 1rem;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  display: block;
}

.photo-divider.vertical img {
  max-width: 500px;
  margin: 0 auto;
}

@media (max-width: 640px) {
  .photo-divider img,
  .photo-divider.vertical img {
    max-height: 320px;
  }
}

/* =========================================
   TEXTO INTRODUCTORIO
   ========================================= */

.intro-text {
  max-width: 700px;
  margin: 0 auto;
  padding: 4rem 1.5rem 2rem;
  text-align: center;
}

.intro-text p {
  margin-bottom: 1rem;
  font-size: 1rem;
  line-height: 1.8;
  color: var(--color-texto);
}

.intro-text .intro-firma {
  font-family: "Playfair Display", serif;
  font-size: 1.2rem;
  margin-top: 1.5rem;
  color: var(--color-principal);
}

/* =========================================
   CARRUSEL
   ========================================= */

.carousel {
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
  padding: 2rem 1.5rem 4rem;
}

.carousel-track {
  display: flex;
  gap: 1rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding-bottom: 0.5rem;
  align-items: center;
}

.carousel-track::-webkit-scrollbar {
  display: none;
}

.carousel-track img {
  flex: 0 0 auto;
  width: auto;
  max-width: 600px;
  height: 380px;
  object-fit: contain;
  border-radius: 1rem;
  scroll-snap-align: center;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  background-color: rgba(0, 0, 0, 0.03);
}

.carousel-buttons {
  display: flex;
  justify-content: center;
  gap: 1rem;
  margin-top: 1.25rem;
}

.carousel-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 999px;
  border: 1px solid rgba(0, 0, 0, 0.12);
  background-color: rgba(255, 255, 255, 0.9);
  color: var(--color-texto);
  cursor: pointer;
  font-size: 1.1rem;
  transition: border-color 0.15s, color 0.15s;
}

.carousel-btn:hover {
  border-color: var(--color-principal);
  color: var(--color-principal);
}

@media (max-width: 640px) {
  .carousel-track img {
    height: 240px;
  }
}
