@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600&display=swap');
:root{--green:#203b30;--paper:#f8f5ed;--wine:#6a293d;--ink:#263c32;--clay:#b97759;--line:#d8d9cc;--muted:#646b61}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--clay);outline-offset:6px}header{height:100px;display:flex;align-items:center;justify-content:space-between;padding:0 5.5%;border-bottom:1px solid var(--line)}.monogram{font-family:'Cormorant Garamond',Georgia,serif;font-size:34px;letter-spacing:-3px;font-weight:600}.monogram span{font-style:italic;font-weight:400;margin:0 3px}.monogram-dot{color:var(--clay)}nav{display:flex;gap:36px;font-size:14px}nav a:hover,footer a:hover{color:var(--wine)}.header-date{font-size:14px;letter-spacing:2px}.hero{display:grid;grid-template-columns:1.07fr 1fr;min-height:710px}.hero-copy{padding:68px 5vw 32px 7vw;display:flex;flex-direction:column}.eyebrow{font-size:12px;font-weight:500;letter-spacing:2.1px;line-height:1.7}.hero .eyebrow{display:flex;align-items:center;gap:15px}.line{width:30px;height:1px;background:var(--clay)}.intro{font-family:'Cormorant Garamond',Georgia,serif;font-size:24px;margin:22px 0 15px}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400}h1{font-size:clamp(65px,6.8vw,105px);line-height:1.08;letter-spacing:-3px;margin-bottom:30px}.amp{color:var(--clay);font-style:italic;font-size:.84em}h2{font-size:clamp(42px,4.3vw,66px);line-height:1.08;letter-spacing:-1.8px;margin-bottom:26px}em{font-weight:400}.date{font-family:'Cormorant Garamond',Georgia,serif;font-size:27px;margin-bottom:2px}.location{font-size:12px;letter-spacing:3px;margin:0 0 26px}.button{background:var(--green);color:var(--paper);border:1px solid var(--green);display:inline-flex;gap:42px;justify-content:space-between;align-items:center;padding:15px 24px;font-size:14px;transition:background .2s}.button:hover{background:var(--wine);border-color:var(--wine)}.button span{font-size:20px}.hero-note{font-size:12px;color:var(--muted);margin:38px 0 0}.hero-photo{position:relative;min-height:710px;overflow:hidden}.hero-photo img{width:100%;height:100%;position:absolute;object-fit:cover;object-position:50% 35%}.photo-caption{position:absolute;bottom:0;left:0;right:0;padding:50px 30px 23px;color:white;background:linear-gradient(transparent,#0007);display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.8px}.ribbon{display:flex;justify-content:space-evenly;align-items:center;gap:24px;background:var(--green);color:#f5e9d6;padding:23px 30px;font-size:11px;letter-spacing:2.2px}.ribbon i{font-size:22px;color:#d6b795}.section{padding:105px 8%}.story{display:grid;grid-template-columns:1fr 1fr;gap:11%;border-bottom:1px solid var(--line);align-items:center}.story-copy{position:relative;padding-top:20px}.story-copy>p:first-of-type{font-family:'Cormorant Garamond',Georgia,serif;font-size:29px;line-height:1.4}.large-amp{position:absolute;right:15px;top:-70px;font:italic 180px 'Cormorant Garamond',serif;opacity:.055;pointer-events:none}.muted{color:var(--muted)}.signature{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:26px;color:var(--wine);margin:25px 0 0}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:32px;margin-bottom:38px}.section-heading>p{color:var(--muted);max-width:390px;margin-bottom:30px}.events{display:grid;grid-template-columns:1fr 1fr;gap:32px}.event{border:1px solid var(--line);padding:32px 36px 24px;position:relative;background:#fff6}.event-top{display:flex;align-items:center;justify-content:space-between;color:var(--wine);margin-bottom:25px}.event-number{font:italic 28px 'Cormorant Garamond',Georgia,serif}.event h3{font-size:35px;line-height:1.15;margin-bottom:20px}.event-date{font-size:19px;margin-bottom:4px}.event-time{font-size:14px;color:var(--muted);margin-bottom:28px}.event-place{min-height:139px;border-top:1px solid var(--line);padding-top:25px}.event h4{font-weight:500;font-size:16px;margin-bottom:10px}.event-place p{color:var(--muted);font-size:14px;max-width:330px}.badge{display:inline-block;font-size:12px;margin-left:5px;background:#f0e5d7;padding:1px 7px;color:#785737}.event-actions{display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--line);padding-top:20px}.event-actions a,.event-actions button{font-size:14px;border:0;background:none;color:var(--green);padding:0;text-align:left}.event-actions span{padding-left:8px}.event-actions a:hover,.event-actions button:hover{text-decoration:underline}.palette{margin-top:38px;display:flex;justify-content:space-between;align-items:center;gap:24px}.palette>p{font-size:11px;letter-spacing:1.4px;margin:0;max-width:230px}.swatches{display:flex;gap:23px}.swatches span{display:flex;align-items:center;gap:8px;font-size:12px}.swatches i{width:19px;height:19px;background:var(--swatch);border-radius:50%;display:block}.gifts{display:grid;grid-template-columns:1.05fr 1fr;gap:12%;background:#eeeade;align-items:center}.gift-intro>p:not(.eyebrow){max-width:420px;color:var(--muted)}.wishlist{border-top:1px solid #c9cbbf;padding-top:25px;margin-top:35px;max-width:420px}.wishlist h3{font-size:28px;margin-bottom:8px}.wishlist p{font-size:14px;color:var(--muted);margin:0}.bank-card{background:var(--green);color:var(--paper);padding:40px}.bank-card>.eyebrow{color:#d6c9ab;font-size:10px;letter-spacing:1.7px}.bank-card h3{font-size:36px;line-height:1.1;margin:22px 0 30px}.bank-card dl{margin:0}.bank-card dl>div{margin-bottom:20px}.bank-card dt{font-size:10px;letter-spacing:1.9px;color:#c0c8b8}.bank-card dd{margin:5px 0;font-size:17px}.bank-card .account{font-size:31px;letter-spacing:3px}.copy-button{background:#f0e7d6;border-color:#f0e7d6;color:var(--green);width:100%;gap:10px;padding:13px 18px}.copy-button:hover{color:var(--paper)}.copy-feedback{font-size:12px;color:#d0d4c8;margin:14px 0 0;min-height:20px}.closing{text-align:center;padding:90px 20px;background:var(--wine);color:#f6ebdc}.closing .eyebrow{font-size:10px;letter-spacing:2.3px}.closing>p:nth-child(2){font:400 clamp(48px,6vw,84px)/1.2 'Cormorant Garamond',Georgia,serif;margin:25px 0}.closing>span{font:italic 25px 'Cormorant Garamond',Georgia,serif;color:#e2bbba}footer{display:flex;align-items:center;justify-content:space-between;padding:28px 5.5%;gap:20px}footer p,footer>a:last-child{font-size:11px;letter-spacing:1px;margin:0}.skip{position:fixed;top:-80px;background:var(--green);color:white;padding:12px;z-index:9}.skip:focus{top:0}@media(min-width:1600px){body{max-width:1800px;margin:auto}}@media(max-width:1000px){header{height:80px}.hero{min-height:620px}.hero-copy{padding:48px 5vw 28px}.hero-photo{min-height:620px}h1{font-size:67px}.intro{font-size:21px}.hero .eyebrow{font-size:10px}.section{padding:75px 6%}.event{padding:25px}.event h3{font-size:30px}.event-place{min-height:158px}.palette{align-items:start}.swatches{flex-wrap:wrap;gap:14px}.gifts{gap:6%}.bank-card{padding:28px}.photo-caption span:last-child{display:none}}@media(max-width:700px){header{height:75px;padding:0 6%}nav{gap:18px;font-size:12px}.header-date{display:none}.monogram{font-size:30px}.hero{grid-template-columns:1fr}.hero-copy{padding:40px 7% 35px}.hero .eyebrow{font-size:10px;margin-bottom:13px}.intro{margin:12px 0;font-size:22px}h1{font-size:clamp(62px,12vw,88px);margin-bottom:24px}.hero-note{margin-top:25px}.hero-photo{min-height:0;height:115vw;max-height:670px}.hero-photo img{object-position:center 33%}.hero-bottom{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:10px}.hero-bottom .date{font-size:24px}.hero-bottom .location{grid-row:2;margin:3px 0 0;font-size:10px}.hero-bottom .button{grid-column:2;grid-row:1/3;padding:12px 16px;gap:15px;font-size:12px}.ribbon{padding:19px 20px;gap:16px;font-size:9px;letter-spacing:1.1px}.ribbon span:first-child,.ribbon i:first-of-type{display:none}.section{padding:62px 7%}.story,.gifts{grid-template-columns:1fr;gap:18px}h2{font-size:47px}.story-copy{padding-top:0}.story-copy>p:first-of-type{font-size:27px}.large-amp{top:-25px}.section-heading{display:block;margin-bottom:30px}.section-heading>p{margin:0}.events{grid-template-columns:1fr;gap:20px}.event{padding:27px}.event h3{font-size:34px}.event-place{min-height:0;margin-bottom:26px}.palette{flex-direction:column;gap:18px}.palette>p{max-width:none;font-size:10px}.swatches{gap:15px}.swatches span{font-size:11px;gap:6px}.swatches i{width:16px;height:16px}.gifts{gap:35px}.gift-intro>p:not(.eyebrow){max-width:none}.bank-card{padding:30px}.closing{padding:65px 20px}.closing .eyebrow{font-size:9px}footer{flex-wrap:wrap;justify-content:center;padding:25px;gap:15px}footer .monogram{width:100%;text-align:center}footer p,footer>a:last-child{font-size:9px}.eyebrow{font-size:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* A quiet, ceremonial entrance; all movement respects device preferences. */
@keyframes wedding-rise {
  from { opacity: 0; transform: translateY(22px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes portrait-arrive {
  from { opacity: .45; transform: scale(1.045); }
  to { opacity: 1; transform: scale(1); }
}
@media (prefers-reduced-motion: no-preference) {
  .hero-copy > * { animation: wedding-rise .9s cubic-bezier(.22,1,.36,1) both; }
  .hero-copy > :nth-child(2) { animation-delay: .1s; }
  .hero-copy > :nth-child(3) { animation-delay: .2s; }
  .hero-copy > :nth-child(4) { animation-delay: .32s; }
  .hero-copy > :nth-child(5) { animation-delay: .42s; }
  .hero-photo img { animation: portrait-arrive 1.4s cubic-bezier(.22,1,.36,1) both; }
  .photo-caption { animation: wedding-rise .9s .45s both; }
  .button { transition: background .25s, border-color .25s, transform .25s, box-shadow .25s; }
  .button span { display: inline-block; transition: transform .25s; }
  .button:active { transform: translateY(1px); }
  .event { transition: transform .35s, box-shadow .35s, border-color .35s; }
  nav a { position: relative; }
  nav a::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 100%; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .25s; }
  nav a:hover::after, nav a:focus-visible::after { transform: scaleX(1); }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .button:hover { transform: translateY(-3px); box-shadow: 0 8px 20px #203b3018; }
  .button:hover span { transform: translate(2px,-2px); }
  .event:hover { transform: translateY(-5px); box-shadow: 0 12px 28px #203b300a; border-color: #b4bba9; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
