/* ============================================================
   MARIA & MARTIM — Wedding website
   Visual system extraído do convite e das ilustrações:
   verde-oliva suave, taupe quente, rosa empoeirado, marfim.
   Tipografia: Pinyon Script (nomes) · Cormorant Garamond
   (títulos/maiúsculas) · EB Garamond (texto corrido).
   ----- Para editar cores/tipos, mude as variáveis abaixo -----
   ============================================================ */

:root{
  /* —— Paleta —— */
  --ivory:        #F6F1E7;   /* base, "papel" */
  --ivory-deep:   #EFE7D8;   /* secções alternadas */
  --rose-wash:    #F3E4DE;   /* fundo rosa muito suave */
  --rose:         #D8B2A8;   /* rosa empoeirado (acento) */
  --rose-deep:    #C29488;
  --sage:         #8C9A77;   /* verde suave das ilustrações */
  --sage-soft:    #B9C2A6;
  --olive:        #5E6A45;   /* verde-oliva profundo do convite */
  --olive-deep:   #4C5639;
  --taupe:        #A8917A;   /* taupe do convite */
  --taupe-deep:   #8A7257;
  --ink:          #3B3A31;   /* texto principal, quase-preto quente */
  --ink-soft:     #6E6857;   /* texto secundário */
  --line:         #D9CFBC;   /* traços finos */

  /* acento "ativo" — equilíbrio rosa/verde do site.
     Trocar para var(--rose) torna o site mais rosado. */
  --accent:       var(--olive);
  --accent-warm:  var(--rose-deep);

  /* —— Tipografia —— */
  --f-script: "Pinyon Script", cursive;
  --f-script-display: "Allura", "Pinyon Script", cursive;  /* nomes grandes (hero/footer) — traço mais fino */
  --f-serif:  "Cormorant Garamond", Georgia, serif;
  --f-body:   "EB Garamond", Georgia, serif;
  --f-sans:   "Jost", "Helvetica Neue", Arial, sans-serif;  /* micro-tipografia / etiquetas */

  --tracking:   0.24em;   /* espaçamento das maiúsculas (sans) */
  --tracking-sm:0.16em;

  /* —— Métrica —— */
  --maxw: 1180px;
  --gutter: clamp(20px, 5vw, 64px);
  --radius: 2px;
  --shadow-soft: 0 22px 60px -32px rgba(60,58,49,.45);
  --shadow-card: 0 18px 50px -30px rgba(60,58,49,.5);

  /* —— Logótipo (monograma) ——
     SVG embebido como data-URI para a máscara CSS funcionar em qualquer
     contexto (incluindo abrir o ficheiro localmente). NÃO editar à mão.
     Para trocar o logótipo: substituir assets/images/logo.svg E regenerar
     esta linha (codificar o novo SVG em data-URI). */
  --logo:url("data:image/svg+xml,%3Csvg%20width%3D%2240%22%20height%3D%2259%22%20viewBox%3D%220%200%2040%2059%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cg%20clip-path%3D%22url%28%23clip0_4468_1426%29%22%3E%20%3Cpath%20d%3D%22M19.64%2057.94C9.09%2057.94%200.5%2045.06%200.5%2029.22C0.5%2013.38%209.09%200.5%2019.64%200.5C30.19%200.5%2038.78%2013.38%2038.78%2029.22C38.78%2045.06%2030.19%2057.94%2019.64%2057.94ZM19.64%201.16C9.45%201.16%201.16%2013.75%201.16%2029.22C1.16%2044.69%209.45%2057.29%2019.65%2057.29C29.85%2057.29%2038.14%2044.7%2038.14%2029.22C38.14%2013.74%2029.83%201.16%2019.64%201.16Z%22%20fill%3D%22%23C1A896%22%20stroke%3D%22%23C1A896%22%20stroke-miterlimit%3D%2210%22%3E%3C%2Fpath%3E%20%3Cpath%20d%3D%22M11.7501%2017.47C11.7501%2017.47%2011.6901%2017.51%2011.6601%2017.54C11.6501%2017.56%2011.6401%2017.58%2011.6301%2017.6C11.6201%2017.64%2011.6001%2017.67%2011.5901%2017.71C11.5601%2017.79%2011.5401%2017.87%2011.5201%2017.95C11.4801%2018.11%2011.4401%2018.27%2011.4201%2018.44C11.4101%2018.59%2011.4001%2018.75%2011.3901%2018.9L16.7601%2033.96H17.2601L21.9901%2019L22.7001%2016.95L23.2301%2016.9C23.2301%2018.55%2023.2301%2027.57%2023.2301%2029.75C23.4701%2029.5%2023.7001%2029.25%2023.9401%2029.01C23.9401%2025.74%2023.9401%2018.88%2023.9401%2017C24.1001%2016.76%2024.4201%2016.7%2025.0501%2016.63V16.1L22.0001%2016.08L21.9601%2016.23L17.0801%2032.13L11.7601%2017.47H11.7501Z%22%20fill%3D%22%23C1A896%22%3E%3C%2Fpath%3E%20%3Cpath%20d%3D%22M33.9901%2024.32C33.8601%2024.38%2033.7201%2024.52%2033.5901%2024.72L26.6901%2034.18C24.8501%2036.71%2023.3901%2038.49%2022.2501%2039.48C21.8501%2039.74%2021.7101%2039.56%2021.7201%2039.11C21.7201%2038.8%2021.8501%2038.28%2022.0901%2037.49C22.4401%2036.4%2022.9801%2035.03%2023.7501%2033.33C24.4301%2031.82%2025.0001%2030.79%2025.4701%2030.24C27.0101%2028.4%2028.2101%2026.71%2029.0801%2025.16C29.5201%2024.33%2029.8801%2023.56%2030.1701%2022.83C30.2301%2022.64%2030.2801%2022.53%2030.2601%2022.43C30.1901%2022.27%2030.0301%2022.34%2029.7301%2022.69C29.0301%2023.47%2028.0501%2024.84%2026.7301%2026.76C25.4501%2028.68%2024.4601%2030.22%2023.8501%2031.4C23.6501%2031.76%2023.5001%2032.03%2023.4401%2032.22L22.6601%2033.12C20.8601%2035.22%2019.2701%2036.83%2017.9101%2037.93C15.5701%2039.8%2013.3301%2041.17%2011.2201%2042.02C7.71006%2043.46%205.66006%2043.49%205.11006%2042.11C4.59006%2040.87%205.72006%2039.36%207.03006%2038.34C8.57006%2037.13%2010.3201%2036.22%2012.2901%2035.68C13.5001%2035.34%2014.6501%2035.19%2015.7701%2035.19C16.3001%2035.21%2016.8701%2035.26%2017.4101%2035.35L18.2501%2035.51L18.6201%2035.6L18.8401%2035.66C18.9101%2035.65%2018.9001%2035.61%2018.7801%2035.53C18.6201%2035.43%2018.3601%2035.35%2018.0301%2035.28C15.1701%2034.62%2012.1501%2035.15%208.94006%2036.87C7.57006%2037.62%206.48006%2038.49%205.65006%2039.48C5.10006%2040.16%204.82006%2040.78%204.81006%2041.37C4.87006%2043.55%207.36006%2043.45%209.00006%2042.99C13.7001%2041.74%2018.0901%2038.72%2022.1501%2033.96L23.0901%2032.85C22.6601%2033.89%2022.3901%2034.43%2022.3501%2034.54L21.8601%2035.8C21.6701%2036.36%2021.4901%2036.96%2021.4001%2037.64C21.1101%2039.34%2021.3101%2040.06%2021.9901%2039.84C22.2501%2039.75%2022.7501%2039.33%2023.5201%2038.56C24.0401%2038.06%2024.5801%2037.38%2025.2101%2036.59C25.4801%2036.25%2026.4201%2034.97%2028.0501%2032.73L29.9001%2030.23C28.0701%2033.45%2027.0101%2036.23%2026.6801%2038.5C26.4801%2039.8%2026.5001%2040.84%2026.7801%2041.65C27.0801%2042.52%2027.5301%2043.02%2028.2201%2043.11C28.4701%2043.12%2028.6701%2043.08%2028.8301%2043.01C28.8601%2043.01%2029.0101%2042.9%2029.1101%2042.88C29.2001%2042.82%2029.2601%2042.78%2029.3101%2042.7L29.3401%2042.66L29.2401%2042.68L29.1801%2042.73L29.0001%2042.84C28.8401%2042.91%2028.6801%2042.98%2028.5801%2043C28.1201%2043.1%2027.7401%2042.98%2027.4101%2042.6C27.1801%2042.34%2027.0201%2041.95%2026.9501%2041.45C26.7201%2039.93%2027.0501%2038.12%2027.9401%2036.01C28.5801%2034.48%2029.2501%2033.11%2030.2601%2031.39L31.4501%2029.39L32.9501%2027.04L34.3601%2024.89C34.4401%2024.77%2034.4801%2024.65%2034.4601%2024.55C34.4101%2024.32%2034.2501%2024.25%2034.0001%2024.34L33.9901%2024.32ZM25.6701%2029.67L27.9301%2026C29.2301%2023.87%2029.9301%2022.77%2030.0301%2022.75L29.9501%2023.01C29.1801%2024.74%2028.4101%2026.13%2027.6601%2027.17C26.5901%2028.63%2025.8601%2029.59%2025.4401%2030.06L25.6701%2029.66V29.67Z%22%20fill%3D%22%23C1A896%22%3E%3C%2Fpath%3E%20%3Cpath%20d%3D%22M13.0201%2033.79C12.8401%2033.77%2012.6601%2033.76%2012.4901%2033.73C12.0501%2033.66%2011.6701%2033.48%2011.3601%2033.15C11.1201%2032.89%2010.9701%2032.58%2010.8601%2032.24C10.7001%2031.72%2010.6401%2031.18%2010.6401%2030.63C10.6401%2030.13%2010.6401%2029.97%2010.6401%2029.9C10.5301%2029.92%2010.4301%2029.94%2010.3201%2029.96C10.1901%2029.98%2010.0601%2030%209.93009%2030.01C9.93009%2030.05%209.93009%2030.08%209.93009%2030.12C9.93009%2030.56%209.92009%2031.01%209.86009%2031.45C9.80009%2031.84%209.72009%2032.22%209.55009%2032.58C9.24009%2033.26%208.71009%2033.65%207.96009%2033.74C7.84009%2033.75%207.71009%2033.76%207.59009%2033.77V33.94H13.0201V33.77V33.79Z%22%20fill%3D%22%23C1A896%22%3E%3C%2Fpath%3E%20%3Cpath%20d%3D%22M9.38994%2016.84C9.59994%2017.07%209.72994%2017.34%209.81994%2017.63C9.95994%2018.09%2010.0099%2018.56%2010.0099%2019.03C10.0099%2019.93%2010.0099%2019.56%2010.0099%2019.88C10.0499%2019.87%2010.0899%2019.85%2010.1299%2019.84C10.2899%2019.79%2010.4599%2019.75%2010.6299%2019.71C10.6299%2019.65%2010.6299%2019.57%2010.6299%2019.47C10.6299%2019.08%2010.6299%2018.7%2010.6899%2018.32C10.7399%2017.98%2010.8199%2017.65%2010.9599%2017.34C11.2299%2016.75%2011.6899%2016.41%2012.3399%2016.33C12.4499%2016.32%2012.5599%2016.31%2012.6599%2016.3V16.15H7.93994V16.29C8.09994%2016.31%208.24994%2016.31%208.39994%2016.34C8.77994%2016.4%209.10994%2016.55%209.37994%2016.84H9.38994Z%22%20fill%3D%22%23C1A896%22%3E%3C%2Fpath%3E%20%3C%2Fg%3E%20%3Cdefs%3E%20%3CclipPath%20id%3D%22clip0_4468_1426%22%3E%20%3Crect%20width%3D%2239.28%22%20height%3D%2258.44%22%20fill%3D%22white%22%3E%3C%2Frect%3E%20%3C%2FclipPath%3E%20%3C%2Fdefs%3E%20%3C%2Fsvg%3E");
}

/* ============================================================
   RESET
   ============================================================ */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
body{
  margin:0;
  font-family:var(--f-body);
  background:var(--ivory);
  color:var(--ink);
  font-size:clamp(17px,1.05rem + .15vw,20px);
  line-height:1.72;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{ display:block; max-width:100%; }
button{ font-family:inherit; cursor:pointer; }
a{ color:inherit; text-decoration:none; }
::selection{ background:var(--sage-soft); color:var(--olive-deep); }

/* ============================================================
   TIPOGRAFIA UTIL
   ============================================================ */
.eyebrow{
  font-family:var(--f-sans);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:var(--tracking);
  font-size:clamp(.72rem,.7rem + .2vw,.86rem);
  color:var(--taupe-deep);
}
.caps{
  font-family:var(--f-sans);
  text-transform:uppercase;
  letter-spacing:var(--tracking-sm);
}
/* divisor com losango central */
.rule{
  display:flex; align-items:center; justify-content:center;
  gap:14px; color:var(--taupe);
}
.rule::before,.rule::after{
  content:""; height:1px; width:min(80px,16vw);
  background:linear-gradient(90deg,transparent,var(--taupe));
}
.rule::after{ background:linear-gradient(90deg,var(--taupe),transparent); }
.rule .diamond{ width:6px; height:6px; transform:rotate(45deg); background:var(--rose-deep); }

/* ============================================================
   LAYOUT
   ============================================================ */
.section{ padding:clamp(72px,11vh,140px) var(--gutter); }
.wrap{ max-width:var(--maxw); margin-inline:auto; }
.section-head{ text-align:center; max-width:720px; margin:0 auto clamp(40px,6vh,72px); }
.section-head .eyebrow{ display:block; margin-bottom:18px; }
.section-head h2{
  font-family:var(--f-serif); font-weight:500;
  font-size:clamp(2.1rem,1.4rem + 3vw,3.6rem);
  line-height:1.04; margin:0 0 22px; color:var(--ink);
}
.section-head h2 em{ font-family:var(--f-script); font-style:normal; color:var(--olive); font-size:1.32em; }
.section-head p{ color:var(--ink-soft); margin:22px auto 0; max-width:60ch; }

/* reveal on scroll */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity 1s ease, transform 1s cubic-bezier(.16,.84,.34,1); }
.reveal.in-view{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; } }

/* ============================================================
   MONOGRAMA
   ============================================================ */
.monogram{
  display:inline-block; flex:none; position:relative;
  width:var(--mono-size,58px); height:calc(var(--mono-size,58px) * 1.475);
  color:var(--taupe);
  background-color:currentColor;
  -webkit-mask:var(--logo) center/contain no-repeat;
          mask:var(--logo) center/contain no-repeat;
}
.monogram span{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* ============================================================
   BOTÕES
   ============================================================ */
.btn{
  --bg:var(--olive); --fg:var(--ivory); --bd:var(--olive);
  display:inline-flex; align-items:center; justify-content:center; gap:.6em;
  font-family:var(--f-sans); font-weight:600;
  text-transform:uppercase; letter-spacing:.16em;
  font-size:.8rem; line-height:1;
  padding:1.05em 1.9em; border-radius:var(--radius);
  background:var(--bg); color:var(--fg); border:1px solid var(--bd);
  transition:background .35s ease, color .35s ease, border-color .35s ease, transform .25s ease;
}
.btn:hover{ transform:translateY(-2px); }
.btn--solid:hover{ --bg:var(--olive-deep); --bd:var(--olive-deep); }
.btn--ghost{ --bg:transparent; --fg:var(--olive); --bd:var(--taupe); }
.btn--ghost:hover{ --bg:var(--olive); --fg:var(--ivory); --bd:var(--olive); }
.btn--rose{ --bg:var(--rose-deep); --bd:var(--rose-deep); --fg:var(--ivory); }
.btn--rose:hover{ --bg:#b07f72; --bd:#b07f72; }
.btn--block{ width:100%; }
.btn--sm{ padding:.85em 1.4em; font-size:.74rem; }

/* ============================================================
   HEADER (sticky)
   ============================================================ */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:60;
  display:flex; align-items:center; justify-content:space-between;
  padding:16px var(--gutter);
  transition:background .5s ease, padding .5s ease, box-shadow .5s ease, transform .5s ease;
  transform:translateY(-100%);
}
.site-header.show{ transform:none; background:rgba(246,241,231,.9); backdrop-filter:blur(10px); box-shadow:0 1px 0 var(--line); }
.site-header__brand{ display:flex; align-items:center; gap:12px; color:var(--olive); }
.site-header__brand .monogram{ --mono-size:30px; color:var(--taupe); }
.site-header__brand b{ font-family:var(--f-sans); font-weight:500; letter-spacing:.2em; text-transform:uppercase; font-size:.74rem; color:var(--ink); }
.site-nav{ display:flex; gap:30px; }
.site-nav a{
  font-family:var(--f-sans); text-transform:uppercase; letter-spacing:.18em;
  font-size:.72rem; color:var(--ink-soft); position:relative; padding:4px 0;
}
.site-nav a::after{ content:""; position:absolute; left:0; bottom:0; height:1px; width:100%; background:var(--rose-deep); transform:scaleX(0); transform-origin:center; transition:transform .35s ease; }
.site-nav a:hover{ color:var(--olive); }
.site-nav a:hover::after{ transform:scaleX(1); }

/* botão hambúrguer — só visível no telemóvel */
.nav-toggle{
  display:none; width:42px; height:42px; padding:0; flex:none;
  flex-direction:column; align-items:center; justify-content:center; gap:5px;
  background:transparent; border:0; color:var(--olive);
}
.nav-toggle span{ display:block; width:22px; height:1.5px; background:currentColor; border-radius:2px;
  transition:transform .3s ease, opacity .3s ease; }
.site-header.nav-open .nav-toggle span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.site-header.nav-open .nav-toggle span:nth-child(2){ opacity:0; }
.site-header.nav-open .nav-toggle span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

@media (max-width:760px){
  .nav-toggle{ display:inline-flex; }
  .site-nav{
    position:absolute; top:calc(100% - 4px); right:var(--gutter);
    flex-direction:column; gap:0; min-width:180px;
    background:rgba(246,241,231,.98); backdrop-filter:blur(10px);
    border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-card);
    padding:6px; overflow:hidden;
    opacity:0; visibility:hidden; transform:translateY(-8px);
    transition:opacity .3s ease, transform .3s ease, visibility .3s ease;
  }
  .site-header.nav-open .site-nav{ opacity:1; visibility:visible; transform:none; }
  .site-nav a{ padding:13px 16px; font-size:.78rem; }
  .site-nav a::after{ display:none; }
  .site-nav a:not(:last-child){ border-bottom:1px solid var(--line); }
}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative; min-height:100svh;
  display:grid; place-items:end center; text-align:center;
  padding:clamp(74px,9vh,116px) var(--gutter) clamp(50px,7vh,82px); overflow:hidden; isolation:isolate;
}
.hero__bg{ position:absolute; inset:0; z-index:-2; }
.hero__bg img{ width:100%; height:100%; object-fit:cover; object-position:center 32%; }
/* wash verde-oliva translúcido (multiply) — a "lavagem" pedida */
.hero__tint{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(175deg,#5b683b 0%,#5E6A45 42%,#454f29 100%);
  mix-blend-mode:multiply; opacity:.88;
}
/* scrim ligeiro só para legibilidade do texto */
.hero__scrim{
  position:absolute; inset:0; z-index:2;
  background:
    radial-gradient(78% 62% at 50% 48%, rgba(28,34,16,0), rgba(28,34,16,0) 52%, rgba(28,34,16,.42)),
    linear-gradient(180deg, rgba(34,40,20,.30) 0%, rgba(34,40,20,0) 30%, rgba(34,40,20,0) 64%, rgba(30,36,16,.45) 100%);
}
.hero__inner{ position:relative; z-index:2; color:#fff; display:flex; flex-direction:column; align-items:center; }
.hero .monogram{ --mono-size:56px; color:rgba(255,255,255,.88); margin-bottom:18px; }
.hero__eyebrow{ color:#fff; text-shadow:0 1px 20px rgba(28,32,18,.7); margin-bottom:6px; max-width:none; white-space:nowrap; }
@media (max-width:560px){
  .hero__eyebrow{ white-space:normal; max-width:26ch; }
  .hero__names{ white-space:normal; flex-wrap:wrap; font-size:clamp(3rem,13vw,4.8rem); padding-bottom:.72em; }
}
.hero__names{
  font-family:var(--f-script-display); color:#fff; font-weight:400;
  font-size:min(9.4rem, 11.5vw); white-space:nowrap;
  line-height:1.02; margin:0; padding:.06em 0 .5em; text-shadow:0 4px 34px rgba(22,26,12,.55);
  display:flex; align-items:center; justify-content:center; gap:.1em; flex-wrap:nowrap;
}
.hero__names .amp{ font-size:.5em; color:rgba(255,255,255,.9); transform:translateY(-.04em); }
.hero__meta{ margin-top:16px; display:flex; flex-direction:column; align-items:center; gap:13px; }
.hero__meta .line{ width:1px; height:30px; background:rgba(255,255,255,.6); }
.hero__date{ color:#fff; font-size:clamp(1rem,.9rem + .6vw,1.3rem); letter-spacing:var(--tracking-sm); line-height:1.5; text-shadow:0 2px 24px rgba(30,36,20,.7); }
.hero__place{ color:rgba(255,255,255,.95); letter-spacing:var(--tracking); font-size:.86rem; text-shadow:0 2px 24px rgba(30,36,20,.7); }
.hero__countdown{
  margin-top:4px; font-family:var(--f-body); font-style:italic; font-size:.92rem;
  color:rgba(255,255,255,.78); letter-spacing:.02em; text-shadow:0 2px 18px rgba(30,36,20,.6);
  opacity:0; transition:opacity 1.2s ease .3s;
}
.hero__countdown.in{ opacity:1; }
.hero__countdown b{ font-weight:500; font-style:normal; color:#fff; }
.hero__scroll{
  position:absolute; left:50%; bottom:26px; transform:translateX(-50%); z-index:2;
  color:rgba(255,255,255,.85); font-family:var(--f-sans); text-transform:uppercase;
  letter-spacing:.24em; font-size:.66rem; display:flex; flex-direction:column; align-items:center; gap:10px;
}
.hero__scroll .dot{ width:6px; height:6px; border-radius:50%; background:#fff; animation:scrollPulse 1.8s ease-in-out infinite; }
@keyframes scrollPulse{ 0%,100%{ transform:translateY(0); opacity:.4; } 50%{ transform:translateY(8px); opacity:1; } }

/* ============================================================
   INTRO (faixa de transição)
   ============================================================ */
.intro{ text-align:center; padding:clamp(70px,10vh,120px) var(--gutter); }
.intro p{ font-family:var(--f-serif); font-weight:500; font-size:clamp(1.5rem,1.1rem + 2vw,2.4rem); line-height:1.32; color:var(--ink); max-width:18ch; margin:30px auto; }
.intro p em{ font-family:var(--f-script); font-style:normal; color:var(--olive); font-size:1.28em; }

/* ============================================================
   AGENDA
   ============================================================ */
.agenda{ background:var(--ivory); --agenda-band:#E7DDC9; }
.venue{
  display:grid; grid-template-columns:1.3fr 1fr; gap:clamp(32px,5vw,78px);
  align-items:center; position:relative; padding-block:clamp(50px,8vh,98px);
}
/* banda de fundo a toda a largura (missa/festa claras · jantar mais escura) */
.venue::before{
  content:""; position:absolute; z-index:-1; top:0; bottom:0;
  left:50%; transform:translateX(-50%); width:100vw; background:var(--ivory);
}
.venue:nth-of-type(even)::before{ background:var(--agenda-band); }
.venue__media{ position:relative; grid-column:1; grid-row:1; }
.venue__body{ grid-column:2; grid-row:1; }
/* alterna o lado mantendo a ilustração sempre na coluna larga */
.venue:nth-of-type(even){ grid-template-columns:1fr 1.3fr; }
.venue:nth-of-type(even) .venue__media{ grid-column:2; }
.venue:nth-of-type(even) .venue__body{ grid-column:1; }
.venue__media .frame{
  background:var(--ivory); padding:clamp(10px,1.3vw,18px); border:1px solid var(--line);
  box-shadow:var(--shadow-soft); border-radius:var(--radius);
}
.venue__media img{ width:100%; aspect-ratio:3/2; object-fit:cover; border-radius:1px; }
.venue__eyebrow{ display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.venue__num{
  font-family:var(--f-sans); font-weight:600; font-size:.74rem; letter-spacing:.06em;
  color:var(--rose-deep); display:inline-flex; align-items:center; gap:12px;
}
.venue__num::after{ content:""; width:26px; height:1px; background:var(--taupe); display:inline-block; }
.venue__time{ font-family:var(--f-script); color:var(--olive); font-size:clamp(2.2rem,1.6rem + 2vw,3rem); line-height:1.05; margin:0 0 6px; padding-bottom:.12em; }
.venue__name{ font-family:var(--f-serif); font-weight:500; font-size:clamp(1.6rem,1.2rem + 1.6vw,2.3rem); margin:.1em 0 .35em; color:var(--ink); }
.venue__addr{ color:var(--ink-soft); font-style:italic; margin:0 0 18px; }
.venue__desc{ color:var(--ink-soft); margin:0 0 22px; max-width:46ch; }
.venue__actions{ display:flex; flex-wrap:wrap; gap:12px 18px; align-items:center; margin-bottom:6px; }
.venue__note{ flex:1 1 16ch; min-width:16ch; max-width:32ch; font-size:.8rem; font-style:italic; line-height:1.45; color:var(--ink-soft); opacity:.8; }

/* miniatura de mapa — pequena, abre no modal ao clicar */
.mapthumb{ margin-top:24px; display:flex; gap:16px; align-items:stretch; flex-wrap:wrap; }
.mapthumb__btn{
  position:relative; width:210px; height:132px; flex:none; padding:0; cursor:pointer;
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:#e7e3d6;
  box-shadow:var(--shadow-soft); color:#fff;
  transition:transform .35s ease, box-shadow .35s ease;
}
.mapthumb__btn:hover{ transform:translateY(-2px); box-shadow:var(--shadow-card); }
.mapthumb__btn iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; filter:saturate(.8) sepia(.05); pointer-events:none; }
.mapthumb__btn .ov{
  position:absolute; inset:0; display:flex; align-items:flex-end; justify-content:space-between;
  gap:8px; padding:9px 10px; background:linear-gradient(180deg, rgba(40,46,28,.04) 40%, rgba(40,46,28,.42));
}
.mapthumb__btn .pin{ width:22px; height:22px; filter:drop-shadow(0 1px 3px rgba(20,24,12,.5)); }
.mapthumb__btn .hint{
  font-family:var(--f-sans); text-transform:uppercase; letter-spacing:.12em; font-size:.58rem;
  background:rgba(40,46,28,.62); padding:.42em .7em; border-radius:100px; backdrop-filter:blur(2px);
}
.mapthumb__links{ display:flex; flex-direction:column; gap:9px; justify-content:center; }
.maplink{
  display:inline-flex; align-items:center; gap:.55em;
  font-family:var(--f-sans); text-transform:uppercase; letter-spacing:.12em; font-size:.66rem;
  color:var(--olive); border:1px solid var(--line); border-radius:100px; padding:.6em 1em;
  background:var(--ivory); transition:background .3s ease, color .3s ease, border-color .3s ease;
}
.maplink:hover{ background:var(--olive); color:var(--ivory); border-color:var(--olive); }
.maplink svg{ width:15px; height:15px; flex:none; }

@media (max-width:820px){
  .venue,
  .venue:nth-of-type(even){ grid-template-columns:1fr; }
  .venue__media,
  .venue__body,
  .venue:nth-of-type(even) .venue__media,
  .venue:nth-of-type(even) .venue__body{ grid-column:1; }
  .venue__media{ grid-row:1; }
  .venue__body{ grid-row:2; }
  .mapthumb__btn{ flex:1 1 100%; width:auto; height:150px; }
}

/* ============================================================
   PRESENTES
   ============================================================ */
.presentes{ background:var(--rose-wash); }
.gifts-grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(238px,1fr));
  gap:clamp(16px,2.4vw,30px);
}
.gift{
  background:var(--ivory); border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; display:flex; flex-direction:column;
  box-shadow:0 10px 30px -26px rgba(60,58,49,.5);
  transition:transform .5s cubic-bezier(.16,.84,.34,1), box-shadow .5s ease;
}
.gift:hover{ transform:translateY(-6px); box-shadow:var(--shadow-card); }
.gift__media{ position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--ivory-deep); }
/* camada ambiente (aparece ATRÁS no hover) */
.gift__ambient{ position:absolute; inset:0; opacity:0; transform:scale(1.08); transition:opacity .6s ease, transform 1.2s ease; }
.gift__ambient img{ width:100%; height:100%; object-fit:cover; }
.gift:hover .gift__ambient{ opacity:1; transform:scale(1); }
/* produto isolado sobre fundo neutro */
.gift__product{
  position:absolute; inset:0; display:grid; place-items:center;
  background:radial-gradient(120% 100% at 50% 35%, #fbf8f1, var(--ivory-deep));
  transition:background .6s ease;
}
.gift:hover .gift__product{ background:transparent; }
.gift__product .icon{ width:46%; max-width:120px; color:var(--taupe); transition:color .5s ease, transform .6s ease; }
.gift:hover .gift__product .icon{ color:#fff; transform:translateY(-2px) scale(1.02); filter:drop-shadow(0 8px 18px rgba(40,40,30,.35)); }
/* modo FOTO: imagem normal + imagem em hover (crossfade) */
.gift__photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:opacity .6s ease, transform 1.4s ease; }
.gift__photo--hover{ opacity:0; }
.gift:hover .gift__photo--base{ transform:scale(1.04); }
.gift:hover .gift__photo--hover{ opacity:1; transform:scale(1.04); }
/* fade-in das fotos dos presentes (lazy-img usa opacity; reposto aqui) */
.gift__photo.lazy-img{ opacity:0; }
.gift__photo.lazy-img.loaded{ opacity:1; }
.gift__photo--hover.lazy-img.loaded{ opacity:0; }
.gift:hover .gift__photo--hover.lazy-img.loaded{ opacity:1; }
.gift__tag{
  position:absolute; top:12px; left:12px; z-index:3;
  font-family:var(--f-sans); text-transform:uppercase; letter-spacing:.14em; font-size:.6rem;
  color:var(--olive); background:rgba(246,241,231,.92); border:1px solid var(--line);
  padding:.35em .7em; border-radius:100px; opacity:0; transform:translateY(-4px); transition:opacity .4s ease, transform .4s ease;
}
.gift:hover .gift__tag{ opacity:1; transform:none; }
.gift__body{ padding:18px 18px 20px; display:flex; flex-direction:column; gap:6px; flex:1; }
.gift__name{ font-family:var(--f-serif); font-weight:600; font-size:1.18rem; color:var(--ink); line-height:1.1; }
.gift__desc{ font-size:.92rem; color:var(--ink-soft); line-height:1.5; flex:1; }
.gift__foot{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:10px; }
.gift__value{ font-family:var(--f-serif); font-weight:600; color:var(--taupe-deep); letter-spacing:.04em; font-size:1.02rem; }
.gift__value small{ display:block; font-family:var(--f-sans); font-size:.58rem; text-transform:uppercase; letter-spacing:.16em; color:var(--ink-soft); font-weight:500; }
.gift .btn{ padding:.7em 1.1em; font-size:.68rem; }
.gift--wide{ grid-column:span 2; }
@media (max-width:560px){
  .gifts-grid{ grid-template-columns:repeat(2,1fr); }
  .gift--wide{ grid-column:span 2; }
  .gift__name{ font-size:1.04rem; }
  .gift__body{ padding:14px; }
  /* preço + botão lado a lado não cabem a 2 colunas → empilhar */
  .gift__foot{ flex-direction:column; align-items:stretch; gap:11px; }
  .gift__value{ display:flex; align-items:baseline; gap:.5em; }
  .gift__value small{ display:inline; }
  .gift .btn{ width:100%; padding:.85em 1em; font-size:.7rem; }
  /* o cartão largo (Lua de Mel) tem espaço para manter lado a lado */
  .gift--wide .gift__foot{ flex-direction:row; align-items:center; }
  .gift--wide .gift__value{ flex-direction:column; gap:0; }
  .gift--wide .gift__value small{ display:block; }
  .gift--wide .btn{ width:auto; }
}

/* ============================================================
   MODAL
   ============================================================ */
.modal-scrim{
  position:fixed; inset:0; z-index:100; display:grid; place-items:center;
  padding:20px; background:rgba(59,58,49,.5); backdrop-filter:blur(4px);
  opacity:0; visibility:hidden; transition:opacity .4s ease, visibility .4s ease;
}
.modal-scrim.open{ opacity:1; visibility:visible; }
.modal{
  background:var(--ivory); width:min(560px,100%); max-height:90vh; overflow:auto;
  border-radius:var(--radius); box-shadow:0 40px 100px -30px rgba(40,40,30,.6);
  border:1px solid var(--line); position:relative;
  transform:translateY(18px) scale(.98); transition:transform .45s cubic-bezier(.16,.84,.34,1);
}
.modal-scrim.open .modal{ transform:none; }
.modal__close{
  position:absolute; top:14px; right:14px; z-index:4; width:38px; height:38px;
  border-radius:50%; border:1px solid var(--line); background:var(--ivory); color:var(--ink-soft);
  display:grid; place-items:center; font-size:1.1rem; line-height:1; transition:background .3s, color .3s;
}
.modal__close:hover{ background:var(--olive); color:var(--ivory); }
.modal__head{ text-align:center; padding:clamp(30px,5vw,44px) clamp(24px,5vw,46px) 8px; }
.modal__head .monogram{ --mono-size:38px; margin:0 auto 16px; color:var(--taupe); }
.modal__head .eyebrow{ display:block; margin-bottom:10px; }
.modal__head h3{ font-family:var(--f-serif); font-weight:500; font-size:clamp(1.6rem,1.3rem + 1.4vw,2.2rem); margin:0; color:var(--ink); }
.modal__head h3 em{ font-family:var(--f-script); font-style:normal; color:var(--olive); }
.modal__body{ padding:18px clamp(24px,5vw,46px) clamp(30px,5vw,46px); }

/* dados bancários */
.bank{
  background:var(--ivory-deep); border:1px solid var(--line); border-radius:var(--radius);
  padding:18px 20px; margin:6px 0 26px;
}
.bank .eyebrow{ display:block; margin-bottom:12px; color:var(--taupe-deep); }
.bank__row{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:7px 0; border-bottom:1px dashed var(--line); }
.bank__row:last-child{ border-bottom:0; }
.bank__row .k{ font-family:var(--f-sans); text-transform:uppercase; letter-spacing:.14em; font-size:.66rem; color:var(--ink-soft); }
.bank__row .v{ font-family:var(--f-body); font-weight:600; letter-spacing:.06em; color:var(--ink); }
.bank__copy{ border:none; background:none; color:var(--olive); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; font-family:var(--f-sans); padding:0 0 0 8px; }
.bank__copy:hover{ color:var(--rose-deep); }

/* formulário */
.field{ margin-bottom:16px; }
.field label{ display:block; font-family:var(--f-sans); text-transform:uppercase; letter-spacing:.14em; font-size:.66rem; color:var(--ink-soft); margin-bottom:7px; }
.field label .opt{ text-transform:none; letter-spacing:0; font-style:italic; color:var(--taupe); font-family:var(--f-body); }
.field input,.field textarea{
  width:100%; font-family:var(--f-body); font-size:1rem; color:var(--ink);
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:.8em .95em; transition:border-color .3s ease, box-shadow .3s ease;
}
.field input:focus,.field textarea:focus{ outline:none; border-color:var(--sage); box-shadow:0 0 0 3px rgba(140,154,119,.18); }
.field textarea{ resize:vertical; min-height:84px; }
.field.invalid input,.field.invalid textarea{ border-color:var(--rose-deep); box-shadow:0 0 0 3px rgba(194,148,136,.18); }
.field .err{ color:var(--rose-deep); font-size:.78rem; font-style:italic; margin-top:5px; display:none; }
.field.invalid .err{ display:block; }
.field-amount{ position:relative; }
.field-amount .cur{ position:absolute; left:.85em; top:50%; transform:translateY(-50%); color:var(--taupe-deep); font-weight:600; pointer-events:none; }
.field-amount input{ padding-left:1.9em; font-weight:600; font-size:1.15rem; }
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:460px){ .grid-2{ grid-template-columns:1fr; } }

/* agradecimento */
.thanks{ text-align:center; padding:clamp(20px,4vw,30px) 0 6px; }
.thanks .monogram{ --mono-size:42px; margin:0 auto 18px; color:var(--rose-deep); }
.thanks h3{ font-family:var(--f-script); font-size:clamp(2.4rem,1.8rem + 3vw,3.4rem); color:var(--olive); margin:0 0 14px; line-height:1.05; padding-bottom:.16em; }
.thanks p{ color:var(--ink-soft); margin:0 auto 14px; max-width:46ch; }

/* mapa ampliado */
.modal--map{ width:min(880px,100%); }
.modal--map .modal__body{ padding:0; }
.modal--map iframe{ width:100%; height:min(64vh,520px); border:0; display:block; }
.modal--map .map-foot{ display:flex; flex-wrap:wrap; gap:10px; padding:18px clamp(20px,4vw,30px); align-items:center; }
.modal--map .map-foot h4{ font-family:var(--f-serif); font-weight:500; margin:0 auto 0 0; font-size:1.15rem; color:var(--ink); }

/* ============================================================
   FOTOGRAFIAS
   ============================================================ */
.fotos{ background:var(--ivory); text-align:center; }
.fotos__teaser{
  display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin:0 0 clamp(40px,6vh,64px);
}
.fotos__teaser figure{ position:relative; margin:0; overflow:hidden; border-radius:var(--radius); aspect-ratio:3/4; background:var(--ivory-deep); }
.fotos__teaser img{ width:100%; height:100%; object-fit:cover; filter:saturate(.62) brightness(1.04) contrast(.96); transition:filter .6s ease, transform 1.2s ease; }
.fotos__teaser figure::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(246,241,231,.12),rgba(94,106,69,.16)); }
.fotos__teaser figure:hover img{ filter:saturate(.95); transform:scale(1.05); }
.fotos__teaser figure:nth-child(1){ margin-top:24px; }
.fotos__teaser figure:nth-child(3){ margin-top:-16px; }
.fotos__teaser figure:nth-child(5){ margin-top:24px; }
@media (max-width:760px){
  .fotos__teaser{ grid-template-columns:repeat(3,1fr); }
  .fotos__teaser figure:nth-child(4),.fotos__teaser figure:nth-child(5){ display:none; }
}
.notify{
  max-width:520px; margin:0 auto; background:var(--ivory-deep);
  border:1px solid var(--line); border-radius:var(--radius); padding:clamp(26px,4vw,40px);
}
.notify .rule{ margin-bottom:18px; }
.notify form{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:22px; }
.notify input{
  font-family:var(--f-body); font-size:1rem; background:#fff;
  border:1px solid var(--line); border-radius:var(--radius); padding:.85em 1em;
}
.notify input:focus{ outline:none; border-color:var(--sage); box-shadow:0 0 0 3px rgba(140,154,119,.18); }
.notify form .btn{ grid-column:1 / -1; }
.notify .ok{ color:var(--olive); font-style:italic; margin:16px 0 0; min-height:1.4em; }
@media (max-width:480px){ .notify form{ grid-template-columns:1fr; } }

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{
  background:var(--olive); color:var(--ivory); text-align:center;
  padding:clamp(70px,10vh,120px) var(--gutter);
  position:relative; overflow:hidden;
}
.site-footer .monogram{ --mono-size:56px; color:rgba(246,241,231,.82); margin:0 auto 28px; }
.site-footer__names{ font-family:var(--f-script-display); font-weight:400; font-size:clamp(3.4rem,2.2rem + 8vw,6.4rem); line-height:1.02; padding:.04em 0 .28em; color:var(--ivory); margin:0; }
.site-footer__names .amp{ font-size:.5em; }
.site-footer__date{ margin-top:22px; letter-spacing:var(--tracking); font-size:.82rem; color:rgba(246,241,231,.9); font-family:var(--f-sans); text-transform:uppercase; }
.site-footer__place{ margin-top:6px; font-style:italic; color:rgba(246,241,231,.7); }
.site-footer .rule{ margin:34px auto 0; color:rgba(246,241,231,.5); }
.site-footer .rule::before{ background:linear-gradient(90deg,transparent,rgba(246,241,231,.5)); }
.site-footer .rule::after{ background:linear-gradient(90deg,rgba(246,241,231,.5),transparent); }
.site-footer .rule .diamond{ background:var(--rose); }
.site-footer__fine{ margin-top:30px; font-size:.74rem; letter-spacing:.1em; color:rgba(246,241,231,.55); }
/* nomes em script não quebram (não têm espaços) → reduzir no telemóvel p/ caberem */
@media (max-width:560px){
  .site-footer__names{ font-size:clamp(2.4rem,11vw,3.4rem); }
}

/* toast de cópia */
.toast{
  position:fixed; left:50%; bottom:28px; transform:translate(-50%,20px);
  background:var(--olive-deep); color:var(--ivory); padding:.8em 1.4em; border-radius:100px;
  font-family:var(--f-sans); letter-spacing:.1em; text-transform:uppercase; font-size:.7rem;
  opacity:0; visibility:hidden; transition:opacity .3s ease, transform .3s ease, visibility .3s ease; z-index:200;
  box-shadow:var(--shadow-card);
}
.toast.show{ opacity:1; visibility:visible; transform:translate(-50%,0); }

/* utilidades */
.lazy-img{ opacity:0; transition:opacity 1s ease; }
.lazy-img.loaded{ opacity:1; }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
