@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(/font-0.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/font-3.ttf) format('truetype');
}

:root{--wine:#501c2b;--ink:#39252a;--gold:#dcb677;--paper:#faf5ec;--line:#dacdbb;--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--sans)}a{color:inherit;text-underline-offset:4px}button,input{font:inherit}button,summary{cursor:pointer}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #af7b3c;outline-offset:4px}header{background:var(--wine);color:#fff3dd;display:flex;justify-content:space-between;align-items:center;padding:18px max(6%,calc((100vw - 1180px)/2));border-bottom:1px solid #ffffff25}.monogram{font:25px var(--serif);letter-spacing:.09em;text-decoration:none}.monogram span{font:12px var(--serif);color:var(--gold);vertical-align:middle;padding:0 3px}nav{display:flex;gap:28px}nav a{font-size:13px;text-decoration:none}nav a:hover,footer a:hover{text-decoration:underline}.cover{background:radial-gradient(ellipse at 69% 45%,#723349 0,transparent 53%),linear-gradient(115deg,#481a29,#5f2034);color:#fff0d9;position:relative}.cover-inner{max-width:1150px;margin:auto;display:grid;grid-template-columns:1.15fr 1fr;align-items:center;gap:5%;padding:54px 6% 62px}.titleblock{text-align:center}.dev{font:23px Georgia,serif;color:var(--gold);letter-spacing:.08em}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:500}h1{font-size:clamp(78px,7.7vw,128px);line-height:.85;letter-spacing:-.057em;margin:22px 0 20px}h1 em{font-size:.83em;font-weight:500;white-space:nowrap}.thread{color:var(--gold);display:flex;align-items:center;justify-content:center;gap:12px;font-size:21px}.thread span{width:44px;height:1px;background:var(--gold)}.dedication{font:21px/1.3 var(--serif);margin:14px 0}.dedication strong{font-weight:500}.coverdate{font-size:12px;letter-spacing:.055em;color:#f1dcc7}.coverdate span{padding:0 6px}.replylink,.send{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;text-decoration:none;background:#f0d6a2;color:var(--wine);border:0;padding:12px 20px;font-weight:600;font-size:14px}.replylink{margin-top:22px}.replylink:hover{background:#ffe4b2}.portrait{position:relative;width:min(100%,350px);margin:auto}.frame{padding:8px;border:1px solid #ca9f65;border-radius:50% 50% 2px 2px / 38% 38% 2px 2px}.frame img{display:block;width:100%;aspect-ratio:0.77;object-fit:cover;border-radius:inherit;object-position:center 40%}.seal{position:absolute;left:50%;bottom:-20px;transform:translateX(-50%) rotate(45deg);width:40px;height:40px;background:var(--wine);border:1px solid var(--gold);outline:3px solid var(--wine);display:grid;place-items:center}.seal i{position:absolute;width:12px;height:23px;border:1px solid var(--gold);border-radius:70%}.seal i:nth-child(2){transform:rotate(45deg)}.seal i:nth-child(3){transform:rotate(90deg)}.seal i:nth-child(4){transform:rotate(135deg)}.woven{height:13px;border-block:1px solid #d6ac74;background-color:#603345;background-image:repeating-linear-gradient(45deg,transparent 0 5px,#d0a270 5px 6px,transparent 6px 12px),repeating-linear-gradient(-45deg,transparent 0 5px,#d0a270 5px 6px,transparent 6px 12px)}.details,.response,footer{width:min(970px,88%);margin:auto}.details,.response{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding:64px 0}.eyebrow,legend,label{font:600 12px/1.5 var(--sans)}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.17em;color:#815d41;margin-bottom:9px}h2{font-size:clamp(38px,4vw,60px);line-height:1.02;letter-spacing:-.045em;color:var(--wine)}.letter>p:not(.eyebrow,.signature){margin:18px 0;max-width:345px}.signature{font:italic 29px var(--serif);color:var(--wine)}.itinerary>div+div{margin-top:22px}.itinerary h3,.confirmed h3{font-size:29px;line-height:1.1;margin:0 0 5px}.itinerary p:not(.eyebrow),.itinerary a,.letter p:not(.eyebrow,.signature),footer{font-size:14px}.itinerary .notes{border-top:1px solid var(--line);margin-top:17px;padding-top:12px}.response{border-block:1px solid var(--line);padding:44px 0}.response form{display:grid;gap:9px}input:not([type=radio]){width:100%;background:#fffaf3;color:var(--ink);border:1px solid #ad9888;border-radius:2px;min-height:44px;padding:8px 11px}fieldset{margin:7px 0;padding:0;border:0;display:flex;gap:14px;flex-wrap:wrap}legend{margin-bottom:4px}.choice{display:flex;align-items:center;gap:6px;min-height:36px;font-size:13px;font-weight:400;cursor:pointer}.choice input{width:17px;height:17px;accent-color:var(--wine)}.count{display:flex;align-items:center;gap:12px}.count input[type=number]{width:70px}.send{background:var(--wine);color:white;justify-self:start;margin-top:8px}.send:disabled{opacity:.65}.textbtn{border:0;background:none;padding:10px 0;text-decoration:underline;color:var(--wine)}.guestlist{padding:8%}.guestlist h1{font-size:60px}
@media(min-width:1250px){.cover-inner{padding-inline:50px}}@media(max-width:720px){header{padding:13px 6%}.cover-inner{gap:30px;padding:36px 5% 44px;grid-template-columns:1fr}.titleblock{order:2}.portrait{width:175px}.frame{padding:5px}.frame img{aspect-ratio:.95}.seal{width:28px;height:28px;bottom:-11px}.seal i{height:18px;width:9px}.dev{font-size:17px}h1{font-size:70px;margin:15px 0 10px}h1 br{display:none}h1 em{display:block}.dedication{font-size:20px}.coverdate{font-size:11px}.details,.response{grid-template-columns:1fr;gap:27px;padding:37px 0}.letter>p:not(.eyebrow,.signature){max-width:100%}.itinerary{border-top:1px solid var(--line);padding-top:23px}.replylink{margin-top:18px}.eyebrow{margin-bottom:5px}.response{gap:20px}.footmark{flex-shrink:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Dusk on the cover, fading to warm paper beneath the woven hem. */
header { background: #302334; }
.cover {
  isolation: isolate;
  overflow: hidden;
  background: radial-gradient(ellipse at 75% 90%, #a46c70 0%, transparent 52%),
    radial-gradient(ellipse at 0 75%, #704459, transparent 57%),
    linear-gradient(130deg, #33263b 3%, #4a334d 53%, #735061);
}
.cover::before {
  content: ""; position: absolute; z-index: -1; inset: -6%; pointer-events: none;
  background: radial-gradient(ellipse at 75% 28%, #efd3ba28, transparent 26%),
    radial-gradient(ellipse at 20% 98%, #d79baf28, transparent 48%);
}
.cover-inner { position: relative; }
.salutation { font-size: 10px; text-transform: uppercase; letter-spacing: .23em; color: #ffe8cb; }
.dev { margin-top: 19px; }
h1 { font-size: clamp(60px, 6.2vw, 90px); line-height: .96; }
h1 em { font-size: .68em; }
.coverdate { margin-top: 12px; }
.frame { box-shadow: 0 0 40px 10px #ffd9bd12, 0 20px 45px #27172626; }
.frame::before { content: ""; position: absolute; inset: -8px; border: 1px solid #e9cda04a; border-radius: inherit; pointer-events: none; }
.lights { position: absolute; inset: 0; pointer-events: none; }
.lights i { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: #fce5c2; opacity: .62; box-shadow: 0 0 8px 2px #ffdbb488; }
.lights i:nth-child(1) { top: 23%; left: 8%; }
.lights i:nth-child(2) { top: 77%; left: 15%; animation-delay: -1s; }
.lights i:nth-child(3) { top: 19%; left: 51%; animation-delay: -3s; }
.lights i:nth-child(4) { top: 67%; left: 55%; animation-delay: -2s; }
.lights i:nth-child(5) { top: 15%; left: 89%; animation-delay: -4s; }
.lights i:nth-child(6) { top: 81%; left: 94%; animation-delay: -1.5s; }
.itinerary address { font: normal 14px/1.55 var(--sans); }
.letter > p:not(.signature) { max-width: 390px; }
.response { margin-bottom: 32px; }
@media (max-width: 720px) {
  h1 { font-size: clamp(53px, 12vw, 72px); }
  .dev { margin-top: 10px; }
  .frame::before { inset: -5px; }
}
@media (prefers-reduced-motion: no-preference) {
  .cover::before { animation: dusk 5s ease-in-out both; }
  .titleblock, .portrait { animation: arrive 1.2s ease-out both; }
  .portrait { animation-delay: .12s; }
  .lights i { animation-name: shimmer; animation-duration: 4.8s; animation-timing-function: ease-in-out; animation-iteration-count: 1; }
  .replylink, .send { transition: transform .22s ease, background-color .22s ease; }
  .replylink:hover, .send:hover { transform: translateY(-2px); }
}
@keyframes dusk { from { opacity: .45; transform: translate(-1%,2%); } to { opacity: 1; transform: translate(0); } }
@keyframes arrive { from { opacity: .15; translate: 0 8px; } to { opacity: 1; translate: 0 0; } }
@keyframes shimmer { 0%,100% { opacity: .62; } 48% { opacity: .2; transform: translateY(-5px); } }

.dhaka-edges {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: url("/dhaka-weave.png") 50% 50% / 150px 100px repeat;
  opacity: .23;
  mask-image: linear-gradient(90deg, #000, transparent 17%, transparent 83%, #000);
}
.woven {
  position: relative;
  overflow: hidden;
  height: 48px;
  background: #562d3a;
  border-block: 2px solid #d6af80;
}
.woven i, .woven b {
  position: absolute;
  inset: 0;
  background: url("/dhaka-weave.png") center / 69px 46px repeat-x;
}
.woven i { clip-path: inset(0 0 50%); }
.woven b { clip-path: inset(50% 0 0); }
.woven::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 35%, #ffdfab66 49%, transparent 63%);
  transform: translateX(110%);
}
.woven.weaving i { animation: upper-weft 2.5s .2s cubic-bezier(.25,.75,.3,1) both; }
.woven.weaving b { animation: lower-weft 2.5s .2s cubic-bezier(.25,.75,.3,1) both; }
.woven.weaving::after { animation: silk-glint 1.7s 2.5s ease-in-out both; }
@keyframes upper-weft {
  from { clip-path: inset(0 50% 50%); background-position-x: calc(50% + var(--weave-offset, 0px) - 69px); }
  to { clip-path: inset(0 0 50%); background-position-x: calc(50% + var(--weave-offset, 0px)); }
}
@keyframes lower-weft {
  from { clip-path: inset(50% 50% 0); background-position-x: calc(50% + var(--weave-offset, 0px) + 69px); }
  to { clip-path: inset(50% 0 0); background-position-x: calc(50% + var(--weave-offset, 0px)); }
}
@keyframes silk-glint { from { transform: translateX(-105%); } to { transform: translateX(105%); } }
@media (max-width:720px) {
  .dhaka-edges { background-size: 96px 64px; mask-image: linear-gradient(90deg,#000,transparent 14%,transparent 86%,#000); }
  .woven { height: 36px; }
  .woven i, .woven b { background-size: 51px 34px; }
}

.border-control {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
}
.border-control:focus-visible { outline-offset: -3px; }
.border-control .woven { display: block; }
.woven i, .woven b { background-position-x: calc(50% + var(--weave-offset, 0px)); }
