/* Development copies of Mending and Wistania. Swap in the commercial files before launch. */
@font-face {
  font-family: Mending;
  src: url("assets/fonts/Mending.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Wistania;
  src: url("assets/fonts/Wistania.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  --cream: #efefc9;
  --ink: #3b2e1c;
  --display: Mending, "Times New Roman", serif;
  --script: Wistania, cursive;
  --text: "EB Garamond", Palatino, "Palatino Linotype", serif;
  --small: "Gilda Display", "Times New Roman", serif;
  --legal: "Jost", "Helvetica Neue", sans-serif;
  --shadow: drop-shadow(0 2px 3px rgba(38, 26, 10, 0.25));
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
}

img {
  display: block;
  max-width: none;
}

a {
  color: inherit;
}

.viewport {
  overflow: hidden;
}

.sheet {
  position: relative;
}

.sheet-desktop {
  width: 1440px;
  height: 4029.4px;
}

.sheet-mobile {
  width: 390px;
  height: 4044.6px;
}

@media (min-width: 760px) {
  .mobile-view {
    display: none;
  }

  .desktop-view {
    width: min(100vw, 1440px);
    height: calc(4029.4px * min(1, 100vw / 1440px));
    margin: 0 auto;
  }

  .sheet-desktop {
    transform: scale(min(1, 100vw / 1440px));
    transform-origin: top left;
  }
}

@media (max-width: 759px) {
  .desktop-view {
    display: none;
  }

  .mobile-view {
    width: 100vw;
    height: calc(4044.6px * 100vw / 390px);
  }

  .sheet-mobile {
    transform: scale(calc(100vw / 390px));
    transform-origin: top left;
  }
}

.cord {
  position: absolute;
  pointer-events: none;
  filter: var(--shadow);
  z-index: 2;
}

.grain,
.shade,
.hero-photo,
.hero-shade,
.events-photo,
.contact-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.grain {
  background: url("assets/texture.jpg") 0 0 / 448px 448px;
  mix-blend-mode: multiply;
  opacity: 0.75;
}

.shade {
  background: rgba(0, 0, 0, 0.2);
}

/* Desktop */

.hero {
  position: relative;
  height: 900px;
  overflow: hidden;
  background: var(--cream);
}

.hero-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.6;
}

.hero-shade {
  background: rgba(59, 46, 28, 0.3);
}

.wordmark {
  position: absolute;
  z-index: 3;
  left: 10px;
  width: 1419px;
  top: 72px;
  margin: 0;
  color: var(--cream);
  font-family: var(--display);
  font-size: 250px;
  font-weight: 400;
  letter-spacing: 17px;
  line-height: normal;
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
}

.tagline {
  position: absolute;
  z-index: 3;
  left: 84px;
  top: 627px;
  margin: 0;
  color: var(--cream);
  font-family: var(--script);
  font-size: 100px;
  font-weight: 400;
  line-height: 50px;
}

.cord-stub {
  left: 710.25px;
  top: 847px;
  width: 36px;
  height: 53px;
}

.intro {
  position: relative;
  height: 560px;
  overflow: hidden;
  background: var(--cream);
}

.intro-copy,
.intro-assign,
.event-title,
.event-copy,
.design-copy,
.loc-copy,
.invite,
.credit,
.signoff,
.legal {
  position: absolute;
  z-index: 3;
  margin: 0;
}

.intro-copy {
  left: 85px;
  top: 92px;
  width: 605px;
  color: var(--ink);
  font-family: var(--text);
  font-size: 36px;
  font-weight: 400;
  line-height: 1.4;
}

.intro-assign {
  left: 68px;
  top: 430px;
  width: 640px;
  color: var(--ink);
  font-family: var(--script);
  font-size: 64px;
  line-height: 1.4;
}

.cord-intro {
  left: 697px;
  top: 0;
  width: 214px;
  height: 560px;
}

.events {
  position: relative;
  height: 1100px;
  overflow: hidden;
  background: var(--ink);
  color: var(--cream);
}

.events-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.1;
}

.cord-events {
  left: 153.22px;
  top: 0;
  width: 654px;
  height: 1100px;
}

.event-title {
  font-family: var(--display);
  font-size: 43.2px;
  font-weight: 400;
  letter-spacing: 4.32px;
  line-height: 1.05;
  text-transform: uppercase;
  white-space: nowrap;
  transform: translateX(-50%);
}

.event-title-a {
  left: 439.4px;
  top: 193px;
}

.event-title-b {
  left: 973.5px;
  top: 567px;
}

.event-copy,
.design-copy {
  font-family: var(--text);
  font-size: 21px;
  font-weight: 400;
  line-height: 33px;
  white-space: nowrap;
}

.event-copy {
  transform: translateX(-100%);
  text-align: right;
}

.event-copy.l1 { left: 739px; top: 266.36px; }
.event-copy.l2 { left: 751px; top: 299.36px; }
.event-copy.l3 { left: 733px; top: 332.36px; }
.event-copy.l4 { left: 704px; top: 365.36px; }
.event-copy.l5 { left: 671px; top: 398.36px; }
.event-copy.l6 { left: 638px; top: 431.36px; }
.event-copy.l7 { left: 612px; top: 464.36px; }

.design-copy.l1 { left: 778px; top: 642.72px; }
.design-copy.l2 { left: 808px; top: 675.72px; }
.design-copy.l3 { left: 826px; top: 708.72px; }
.design-copy.l4 { left: 827px; top: 741.72px; }
.design-copy.l5 { left: 823px; top: 774.72px; }
.design-copy.l6 { left: 793px; top: 807.72px; }
.design-copy.l7 { left: 745px; top: 840.72px; }
.design-copy.l8 { left: 691px; top: 873.72px; }

.location {
  position: relative;
  height: 1078px;
  overflow: hidden;
  background: var(--cream);
}

.photo {
  position: absolute;
  z-index: 3;
  left: 622px;
  top: 68px;
  width: 746px;
  height: 900px;
  overflow: hidden;
}

.photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.loc-copy {
  left: 72px;
  bottom: 110px;
  width: 470px;
  display: flex;
  flex-direction: column;
  gap: 26px;
  color: var(--ink);
}

.loc-copy h2 {
  margin: 0;
  font-family: var(--display);
  font-size: 44px;
  font-weight: 400;
  letter-spacing: 4.4px;
  line-height: 1.1;
  text-transform: uppercase;
}

.loc-copy p {
  margin: 0;
  font-family: var(--text);
  font-size: 19px;
  font-weight: 400;
  line-height: 1.55;
}

.loc-copy p:last-child {
  line-height: 1.5;
}

.invite {
  left: 663px;
  top: 106px;
  width: 305px;
  color: var(--cream);
  font-family: var(--script);
  font-size: 70px;
  line-height: 1.1;
}

.credit {
  left: 1346px;
  top: 736px;
  width: 12px;
  height: 209px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.credit a {
  color: var(--cream);
  font-family: var(--small);
  font-size: 10px;
  letter-spacing: 1.8px;
  line-height: normal;
  opacity: 0.7;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
  transform: rotate(-90deg);
}

.cord-clip {
  position: absolute;
  z-index: 1;
  left: 0;
  top: -8px;
  width: 1440px;
  height: 968px;
  overflow: hidden;
  pointer-events: none;
}

.cord-rope {
  left: 155.47px;
  top: 8px;
  width: 615px;
  height: 440px;
}

.contact {
  position: relative;
  height: 391.4px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 55px 72px 44px;
}

.contact-bg {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.seal {
  position: relative;
  z-index: 3;
  width: 158.24px;
  height: 202.4px;
  opacity: 0.5;
  flex: none;
}

.seal img {
  position: absolute;
}

.seal-ring { left: 0; top: 0; width: 158.24px; height: 202.4px; }
.seal-ring-2 { left: 2.76px; top: 2.76px; width: 152.72px; height: 196.88px; }
.seal-ring-3 { left: 17.48px; top: 17.48px; width: 123.28px; height: 167.44px; }
.seal-fill { left: 20.7px; top: 20.7px; width: 116.84px; height: 161px; }
.seal-a { left: 60.88px; top: 80.96px; width: 36.4898px; height: 40.48px; }

.seal-ch {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(181, 181, 156, 0.9);
  font-family: var(--small);
  font-size: 8.5px;
  line-height: normal;
}

.seal-ch span {
  transform: rotate(var(--r));
}

.signoff {
  position: relative;
  z-index: 3;
  margin-top: 28px;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 0.28em;
  color: var(--cream);
  text-decoration: none;
}

.signoff-addr {
  font-family: var(--display);
  font-size: 20px;
  font-weight: 400;
  line-height: normal;
  text-decoration: underline;
  text-decoration-thickness: from-font;
  text-underline-position: from-font;
}

.signoff-at {
  font-family: var(--script);
  font-size: 48px;
  line-height: 0;
  position: relative;
  top: 0.12em;
}

.legal {
  position: relative;
  z-index: 3;
  margin-top: 18px;
  color: rgba(239, 239, 201, 0.6);
  font-family: var(--legal);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 1.98px;
  line-height: normal;
  text-align: center;
  text-transform: uppercase;
}

.cord-pool {
  left: 937px;
  top: 3516px;
  width: 325.33px;
  height: 321.33px;
  z-index: 4;
}

/* Mobile */

.m-wordmark {
  position: absolute;
  z-index: 3;
  left: 274px;
  top: 13px;
  width: 147.829px;
  /* 757px is the design box. On a shorter screen the sheet is scaled by width, so cap the box to the visible height. */
  height: min(757.292px, calc((100vh - 26px) / 100vw * 390px));
  height: min(757.292px, calc((100svh - 26px) / 100vw * 390px));
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  container-type: size;
}

.m-wordmark span {
  color: var(--cream);
  font-family: var(--display);
  /* Rotated advance is about 5.75em, including the 0.08em tracking. */
  font-size: min(133.42px, calc(100cqh / 5.82));
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: normal;
  text-transform: uppercase;
  white-space: nowrap;
  transform: rotate(-90deg);
}

.m-tapestry {
  position: absolute;
  left: -415px;
  top: 0;
  width: 1252.8px;
  height: 783px;
  overflow: hidden;
  pointer-events: none;
}

.m-tapestry img {
  position: absolute;
  width: 100%;
  height: 199.91%;
  left: -4.91%;
  top: -49.86%;
  opacity: 0.6;
}

.m-tagline {
  position: absolute;
  z-index: 3;
  left: 25px;
  top: 652px;
  margin: 0;
  color: var(--cream);
  font-family: var(--script);
  font-size: 52.323px;
  line-height: 26.161px;
}

.m-hero {
  height: 783px;
}

.m-cord-stub {
  left: 142.03px;
  top: 735px;
  width: 33px;
  height: 48px;
}

.m-intro {
  height: 512px;
}

.m-intro-copy {
  left: 24px;
  top: 110px;
  width: 286px;
  font-family: "Cormorant Garamond", var(--text);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.4;
}

.m-intro-assign {
  left: 24px;
  top: 378px;
  width: 286px;
  font-size: 36px;
}

.m-cord-intro {
  left: 134.74px;
  top: 0;
  width: 239px;
  height: 512px;
}

.m-events {
  height: 1080px;
}

.m-cord-events {
  left: 21.26px;
  top: 0;
  width: 351px;
  height: 1080px;
}

.m-event-title {
  font-size: 25.92px;
  letter-spacing: 2.592px;
}

.m-event-title-a { left: 190.64px; top: 126px; }
.m-event-title-b { left: 214.3px; top: 606px; }

.m-event-copy,
.m-design-copy {
  font-size: 17px;
  line-height: 27px;
}

.m-event-copy.l1 { left: 310px; top: 173.22px; }
.m-event-copy.l2 { left: 296px; top: 200.22px; }
.m-event-copy.l3 { left: 282px; top: 227.22px; }
.m-event-copy.l4 { left: 280px; top: 254.22px; }
.m-event-copy.l5 { left: 283px; top: 281.22px; }
.m-event-copy.l6 { left: 298px; top: 308.22px; }
.m-event-copy.l7 { left: 314px; top: 335.22px; }
.m-event-copy.l8 { left: 332px; top: 362.22px; }
.m-event-copy.l9 { left: 339px; top: 389.22px; }

.m-design-copy.l1 { left: 57px; top: 653px; }
.m-design-copy.l2 { left: 68px; top: 680px; }
.m-design-copy.l3 { left: 85px; top: 707px; }
.m-design-copy.l4 { left: 104px; top: 734px; }
.m-design-copy.l5 { left: 118px; top: 761px; }
.m-design-copy.l6 { left: 122px; top: 788px; }
.m-design-copy.l7 { left: 122px; top: 815px; }
.m-design-copy.l8 { left: 112px; top: 842px; }
.m-design-copy.l9 { left: 96px; top: 869px; }
.m-design-copy.l10 { left: 77px; top: 896px; }
.m-design-copy.l11 { left: 58px; top: 923px; }

.m-location {
  height: 1131px;
}

.m-cord-location {
  left: 15.99px;
  top: 0;
  width: 230px;
  height: 725px;
}

.m-loc-copy {
  left: 76px;
  top: 88px;
  width: 290px;
  gap: 18px;
}

.m-loc-copy h2 {
  font-size: 27.28px;
  letter-spacing: 2.728px;
}

.m-loc-copy p {
  font-size: 16px;
}

.m-photo {
  left: 24px;
  top: 603px;
  width: 342px;
  height: 440px;
}

.m-invite {
  left: 46px;
  top: 625px;
  width: 168px;
  font-size: 38.5px;
}

.m-credit {
  left: 347px;
  top: 849px;
  width: 9px;
  height: 168px;
}

.m-credit a {
  font-size: 8px;
  letter-spacing: 1.44px;
}

.m-contact {
  height: 538.6px;
  padding: 185px 24px 40px;
}

.m-seal {
  width: 151.36px;
  height: 193.6px;
}

.m-seal .seal-ch {
  font-size: 8px;
}

.m-seal .seal-ring { width: 151.36px; height: 193.6px; }
.m-seal .seal-ring-2 { left: 2.64px; top: 2.64px; width: 146.08px; height: 188.32px; }
.m-seal .seal-ring-3 { left: 16.72px; top: 16.72px; width: 117.92px; height: 160.16px; }
.m-seal .seal-fill { left: 19.8px; top: 19.8px; width: 111.76px; height: 154px; }
.m-seal .seal-a { left: 58.23px; top: 77.44px; width: 34.903px; height: 38.72px; }

.m-cord-pool {
  left: 106px;
  top: 3408.7px;
  width: 260px;
  height: 257px;
  filter: drop-shadow(0 1.6px 2.4px rgba(38, 26, 10, 0.25));
}
