@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,700;9..144,900&display=swap');

:root {
  --forest: #173f35;
  --forest-deep: #0b2a24;
  --cream: #f5efdf;
  --paper: #fffaf0;
  --sun: #f2b84b;
  --orange: #e96842;
  --ink: #162c27;
  --muted: #68756e;
  --line: rgba(22, 44, 39, 0.15);
  --radius: 1.5rem;
  --shadow: 0 24px 70px rgba(11, 42, 36, 0.16);
  --serif: 'Fraunces', Georgia, serif;
  --sans: 'DM Sans', system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); }
body, button, input { font: 400 1rem/1.5 var(--sans); }
img { display: block; max-width: 100%; }
a { color: inherit; }
button, input { color: inherit; }
.shell { width: min(1160px, calc(100% - 2rem)); margin-inline: auto; }
.section-pad { padding-block: clamp(4.5rem, 10vw, 8rem); }
.skip-link { position: fixed; top: .5rem; left: .5rem; z-index: 99; padding: .7rem 1rem; background: white; transform: translateY(-160%); }
.skip-link:focus { transform: none; }

.eyebrow { margin: 0 0 1rem; color: var(--orange); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.eyebrow.light { color: var(--sun); }
h1, h2, h3, p { margin-top: 0; }
h1, h2 { font-family: var(--serif); letter-spacing: -.045em; line-height: .94; }
h1 { max-width: 850px; margin-bottom: 1.4rem; color: white; font-size: clamp(3.6rem, 11vw, 8.5rem); }
h1 em { color: var(--sun); font-weight: 900; }
h2 { margin-bottom: 1.5rem; font-size: clamp(2.8rem, 7vw, 5.2rem); }
h3 { line-height: 1.15; }

.hero { position: relative; min-height: min(920px, 100svh); overflow: hidden; background: var(--forest-deep); }
.hero-art { position: absolute; inset: 0; background: url('/assets/sitio-hero.webp') center 62% / cover no-repeat; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8, 34, 29, .92) 0%, rgba(8, 34, 29, .66) 48%, rgba(8, 34, 29, .12) 100%), linear-gradient(0deg, rgba(8, 34, 29, .6), transparent 38%); }
.nav { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; padding-top: 1.2rem; color: white; }
.brand { display: flex; gap: .65rem; align-items: center; font-weight: 700; text-decoration: none; }
.brand-mark { display: grid; width: 2.3rem; aspect-ratio: 1; place-items: center; border: 1px solid rgba(255,255,255,.5); border-radius: 50%; font-family: var(--serif); font-size: .8rem; }
.brand-mark.inverse { border-color: var(--line); }
.nav-cta { padding-bottom: .2rem; border-bottom: 1px solid rgba(255,255,255,.65); font-size: .88rem; font-weight: 600; text-decoration: none; }
.hero-content { position: relative; z-index: 1; display: flex; min-height: calc(min(920px, 100svh) - 5rem); flex-direction: column; justify-content: flex-end; padding: 7rem 0 2rem; }
.hero-copy { max-width: 570px; margin-bottom: 2rem; color: rgba(255,255,255,.82); font-size: clamp(1.05rem, 2vw, 1.28rem); }
.hero-actions { display: flex; flex-wrap: wrap; gap: .8rem; }
.button { display: inline-flex; min-height: 3.25rem; align-items: center; justify-content: center; gap: .7rem; padding: .82rem 1.3rem; border: 0; border-radius: 999px; font-weight: 700; text-decoration: none; cursor: pointer; transition: transform .2s, background .2s; }
.button:hover { transform: translateY(-2px); }
.button-sun { background: var(--sun); color: var(--forest-deep); }
.button-glass { border: 1px solid rgba(255,255,255,.3); background: rgba(255,255,255,.08); color: white; backdrop-filter: blur(8px); }
.button-dark { background: var(--forest-deep); color: white; }
.hero-stats { display: grid; max-width: 650px; grid-template-columns: repeat(3, 1fr); margin-top: 2.7rem; padding-top: 1.4rem; border-top: 1px solid rgba(255,255,255,.22); color: white; }
.hero-stats div { display: flex; flex-direction: column; padding-right: 1rem; }
.hero-stats strong { font-family: var(--serif); font-size: 1.7rem; }
.hero-stats span { color: rgba(255,255,255,.64); font-size: .72rem; }

.intro { display: grid; gap: 2.5rem; }
.intro-copy { max-width: 590px; font-size: 1.08rem; }
.intro-copy > p { color: var(--muted); }
.ticker { display: flex; flex-wrap: wrap; gap: .4rem .8rem; padding-top: 1rem; color: var(--forest); font-size: .76rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.ticker i { color: var(--orange); }

.vote-section { padding-block: clamp(4.5rem, 10vw, 8rem); background: var(--forest); color: white; }
.vote-grid { display: grid; gap: 3rem; }
.vote-heading p:last-child { max-width: 540px; color: rgba(255,255,255,.65); }
.vote-form { padding: clamp(1.2rem, 4vw, 2rem); border: 1px solid rgba(255,255,255,.12); border-radius: var(--radius); background: rgba(255,255,255,.055); }
.vote-form > label, legend { display: block; margin-bottom: .55rem; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.vote-form input[type='text'] { width: 100%; margin-bottom: 1.6rem; padding: .95rem 1rem; border: 1px solid rgba(255,255,255,.2); border-radius: .8rem; outline: 0; background: rgba(255,255,255,.08); color: white; font-size: 1rem; }
.vote-form input[type='text']::placeholder { color: rgba(255,255,255,.4); }
.vote-form input[type='text']:focus { border-color: var(--sun); box-shadow: 0 0 0 3px rgba(242,184,75,.15); }
fieldset { min-width: 0; margin: 0 0 1.2rem; padding: 0; border: 0; }
.date-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
.date-card { position: relative; display: flex; min-width: 0; flex-direction: column; padding: 1rem; border: 1px solid rgba(255,255,255,.15); border-radius: 1rem; cursor: pointer; transition: border .2s, background .2s, transform .2s; }
.date-card:hover { transform: translateY(-2px); border-color: rgba(255,255,255,.4); }
.date-card:has(input:checked) { border-color: var(--sun); background: rgba(242,184,75,.12); }
.date-card input { position: absolute; opacity: 0; }
.date-check { position: absolute; top: 1rem; right: 1rem; width: 1.15rem; height: 1.15rem; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; }
.date-card:has(input:checked) .date-check { border: 4px solid var(--forest); background: var(--sun); outline: 1px solid var(--sun); }
.date-month { color: var(--sun); font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.date-card strong { margin-top: .5rem; font-family: var(--serif); font-size: clamp(1.6rem, 5vw, 2.3rem); }
.date-card small { color: rgba(255,255,255,.55); }
.date-count { width: fit-content; margin-top: 1rem; padding: .25rem .5rem; border-radius: 99px; background: rgba(0,0,0,.16); font-size: .7rem; }
.submit-button { width: 100%; justify-content: space-between; padding-inline: 1.2rem; }
.submit-button:disabled { cursor: wait; opacity: .6; }
.form-status { min-height: 1.5rem; margin: .75rem 0 0; font-size: .84rem; }
.form-status.success { color: #b8e7b1; }
.form-status.error { color: #ffb5a1; }
.guest-board { min-width: 0; }
.board-header { display: flex; align-items: end; justify-content: space-between; margin-bottom: 1.2rem; }
.board-header .eyebrow { margin-bottom: .4rem; }
.board-header h3 { margin: 0; font-family: var(--serif); font-size: 2rem; }
.total-votes { padding: .35rem .65rem; border: 1px solid rgba(255,255,255,.2); border-radius: 99px; color: rgba(255,255,255,.75); font-size: .72rem; }
.guest-list { display: grid; max-height: 340px; gap: .55rem; overflow: auto; padding-right: .2rem; }
.guest { display: grid; grid-template-columns: auto 1fr auto; gap: .75rem; align-items: center; padding: .7rem; border-bottom: 1px solid rgba(255,255,255,.1); }
.avatar { display: grid; width: 2.35rem; aspect-ratio: 1; place-items: center; border-radius: 50%; background: var(--avatar-color); color: var(--forest-deep); font-size: .72rem; font-weight: 800; }
.guest-name { min-width: 0; overflow: hidden; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.guest-date { color: var(--sun); font-size: .72rem; font-weight: 700; }
.empty-state { padding: 2rem 1rem; border: 1px dashed rgba(255,255,255,.2); border-radius: 1rem; color: rgba(255,255,255,.5); text-align: center; }

.attendance-section { padding-block: clamp(4.5rem, 10vw, 7rem); background: var(--sun); }
.attendance-grid { display: grid; gap: 1.2rem; }
.attendance-heading { margin-bottom: 1rem; }
.attendance-heading > p:last-child { max-width: 560px; color: rgba(11,42,36,.72); }
.attendance-form, .attendance-board { padding: clamp(1.2rem, 4vw, 1.8rem); border-radius: var(--radius); background: var(--paper); box-shadow: 0 16px 45px rgba(11,42,36,.1); }
.attendance-form > label { display: block; margin-bottom: .55rem; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.attendance-input-row { display: grid; gap: .7rem; }
.attendance-input-row input { width: 100%; min-width: 0; padding: .9rem 1rem; border: 1px solid var(--line); border-radius: .8rem; outline: 0; background: white; }
.attendance-input-row input:focus { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(23,63,53,.12); }
.attendance-input-row button:disabled { cursor: wait; opacity: .6; }
.form-status.success.attendance-success { color: var(--forest); }
.attendance-board-header h3 { margin: 0; font-family: var(--serif); font-size: 2rem; }
.attendance-board .total-votes { border-color: var(--line); color: var(--forest); }
.attendance-list { display: flex; flex-wrap: wrap; gap: .6rem; }
.attendee { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .6rem; align-items: center; min-width: min(100%, 190px); padding: .55rem .7rem; border: 1px solid var(--line); border-radius: 999px; background: white; }
.attendee strong { overflow: hidden; font-size: .84rem; text-overflow: ellipsis; white-space: nowrap; }
.confirmed-mark { display: grid; width: 1.25rem; aspect-ratio: 1; place-items: center; border-radius: 50%; background: var(--forest); color: white; font-size: .68rem; }
.attendance-empty { width: 100%; padding: 1.5rem; border: 1px dashed var(--line); border-radius: 1rem; color: var(--muted); text-align: center; }

.section-heading { max-width: 680px; margin-bottom: 3rem; }
.section-heading > p:last-child { max-width: 550px; color: var(--muted); }
.section-heading.compact { margin-bottom: 2rem; }
.sleep-grid { display: grid; gap: 1rem; }
.sleep-card { position: relative; min-height: 310px; padding: 1.5rem; border: 1px solid var(--line); border-radius: var(--radius); background: white; }
.sleep-card.featured { background: var(--sun); }
.sleep-card.dark { background: var(--forest-deep); color: white; }
.card-number { position: absolute; top: 1.5rem; right: 1.5rem; color: var(--muted); font-size: .7rem; }
.dark .card-number { color: rgba(255,255,255,.45); }
.card-icon { display: grid; width: 3rem; height: 3rem; place-items: center; margin-bottom: 4rem; border: 1px solid currentColor; border-radius: 50%; font-size: 1.25rem; }
.sleep-card h3 { margin-bottom: .8rem; font-family: var(--serif); font-size: 1.8rem; }
.sleep-card p { color: var(--muted); font-size: .9rem; }
.sleep-card.dark p { color: rgba(255,255,255,.6); }
.capacity { position: absolute; right: 1.5rem; bottom: 1.5rem; left: 1.5rem; padding-top: .7rem; border-top: 1px solid currentColor; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.fine-print { margin: 1rem 0 0; color: var(--muted); font-size: .68rem; }

.checklist-section { padding-block: clamp(4rem, 9vw, 7rem); background: var(--cream); }
.checklist-grid { display: grid; gap: 3rem; }
.checklist-copy > p:not(.eyebrow) { max-width: 560px; color: var(--muted); }
.checklist { margin: 2rem 0 0; padding: 0; list-style: none; }
.checklist li { display: grid; grid-template-columns: 2rem 1fr; gap: 1rem; padding: 1rem 0; border-top: 1px solid var(--line); }
.checklist li > span { color: var(--orange); font-size: .72rem; font-weight: 700; }
.checklist li div { display: flex; flex-direction: column; }
.checklist small { color: var(--muted); }
.checklist-photo { position: relative; min-height: 450px; margin: 0; overflow: hidden; border-radius: var(--radius); box-shadow: var(--shadow); }
.checklist-photo img { width: 100%; height: 100%; object-fit: cover; }
.checklist-photo figcaption { position: absolute; right: .8rem; bottom: .8rem; left: .8rem; display: flex; flex-direction: column; padding: 1rem; border-radius: .8rem; background: rgba(11,42,36,.82); color: white; backdrop-filter: blur(10px); }
.checklist-photo figcaption span { color: var(--sun); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; }

.timeline { margin: 0; padding: 0; list-style: none; }
.timeline li { display: grid; gap: .7rem; padding: 1.5rem 0; border-top: 1px solid var(--line); }
.timeline time { color: var(--orange); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.timeline h3 { margin-bottom: .4rem; font-family: var(--serif); font-size: 1.5rem; }
.timeline p { margin: 0; color: var(--muted); }

.gallery { overflow: hidden; padding-block: clamp(4rem, 9vw, 8rem); background: var(--forest-deep); color: white; }
.gallery-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 2rem; }
.gallery-heading h2 { margin: 0; }
.gallery-controls { display: flex; gap: .5rem; padding-bottom: .4rem; }
.gallery-controls button { display: grid; width: 2.8rem; aspect-ratio: 1; place-items: center; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; background: transparent; color: white; cursor: pointer; transition: background .2s, color .2s, transform .2s; }
.gallery-controls button:hover { background: var(--sun); color: var(--forest-deep); transform: translateY(-2px); }
.gallery-track { display: grid; grid-auto-columns: min(82vw, 420px); grid-auto-flow: column; gap: .9rem; overflow-x: auto; padding: 0 max(1rem, calc((100vw - 1160px) / 2)) 1.2rem; scroll-padding-inline: max(1rem, calc((100vw - 1160px) / 2)); scroll-snap-type: x mandatory; scrollbar-width: none; }
.gallery-track::-webkit-scrollbar { display: none; }
.gallery-track figure { position: relative; aspect-ratio: 4 / 3; margin: 0; overflow: hidden; border-radius: 1rem; background: #0a241f; scroll-snap-align: start; }
.gallery-track img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.gallery-track figure.gallery-contain { background: #efe5d0; }
.gallery-track figure.gallery-contain img { object-fit: contain; }
.gallery-track figure:hover img { transform: scale(1.025); }
.gallery-track figcaption { position: absolute; right: 0; bottom: 0; left: 0; display: flex; flex-direction: column; padding: 2.5rem 1rem 1rem; background: linear-gradient(transparent, rgba(5,24,20,.9)); }
.gallery-track figcaption strong { font-family: var(--serif); font-size: 1.15rem; }
.gallery-track figcaption span { color: rgba(255,255,255,.65); font-size: .72rem; }
.gallery-track figure:nth-child(3) img { object-position: center 38%; }
.gallery-track figure:nth-child(6) img, .gallery-track figure:nth-child(8) img { object-position: center 65%; }
.gallery-hint { margin-top: .6rem; margin-bottom: 0; color: rgba(255,255,255,.45); font-size: .72rem; }

.location-section { position: relative; display: grid; min-height: 560px; place-items: center; overflow: hidden; background: #d7d4bd; }
.map-pattern { position: absolute; inset: -10%; opacity: .45; background: repeating-linear-gradient(35deg, transparent 0 60px, rgba(23,63,53,.2) 61px 64px), repeating-linear-gradient(-22deg, transparent 0 100px, rgba(23,63,53,.13) 101px 104px); transform: rotate(-3deg); }
.map-pattern::after { position: absolute; top: 45%; left: 65%; width: 2rem; height: 2rem; border: .6rem solid var(--orange); border-radius: 50% 50% 50% 0; content: ''; transform: rotate(-45deg); }
.location-card { position: relative; width: min(620px, calc(100% - 2rem)); margin-block: 30px; padding: clamp(2rem, 6vw, 4rem); border-radius: var(--radius); background: var(--paper); box-shadow: var(--shadow); text-align: center; }
.location-card p:not(.eyebrow) { color: var(--muted); }
.route-facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: .6rem; margin: 1.5rem 0; text-align: left; }
.route-facts span { display: flex; flex-direction: column; padding: .8rem; border: 1px solid var(--line); border-radius: .8rem; color: var(--muted); font-size: .7rem; }
.route-facts strong { color: var(--forest); font-family: var(--serif); font-size: 1.25rem; }
.location-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; }
.button-whatsapp { background: #1f9d5a; color: white; }


footer { padding-block: 2rem; background: var(--forest-deep); color: white; }
.footer-inner { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; }
.footer-inner > div { display: flex; gap: .7rem; align-items: center; }
.footer-inner p, .footer-inner a { margin: 0; color: rgba(255,255,255,.55); font-size: .75rem; }

@media (min-width: 760px) {
  .shell { width: min(1160px, calc(100% - 4rem)); }
  .intro { grid-template-columns: 1fr 1fr; align-items: start; }
  .vote-grid { grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr); }
  .vote-heading { grid-column: 1 / -1; }
  .sleep-grid { grid-template-columns: repeat(3, 1fr); }
  .checklist-grid { grid-template-columns: 1fr .8fr; align-items: center; }
  .timeline li { grid-template-columns: 180px 1fr; gap: 2rem; }
  .attendance-input-row { grid-template-columns: 1fr auto; }
}

@media (min-width: 1020px) {
  .hero-content { padding-bottom: 3rem; }
  .vote-grid { grid-template-columns: .8fr 1fr .85fr; align-items: start; }
  .vote-heading { grid-column: auto; }
  .guest-board { padding-top: .7rem; }
  .attendance-grid { grid-template-columns: .85fr 1fr 1fr; align-items: start; }
  .attendance-heading { margin: 0; }
}

@media (max-width: 600px) {
  .hero { min-height: 790px; }
  .hero-art { background-position: 66% center; }
  .hero-shade { background: linear-gradient(0deg, rgba(8,34,29,.96) 0%, rgba(8,34,29,.7) 56%, rgba(8,34,29,.12) 100%); }
  .hero-content { min-height: 730px; }
  .hero-copy { max-width: 90%; }
  .hero-actions .button { width: 100%; }
  .hero-stats span { max-width: 80px; }
  .date-card { padding: .85rem; }
  .date-check { top: .8rem; right: .8rem; }
  .footer-inner { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; }
}
