/* Layout rules. Editable design values are centralized in theme.css. */
* {
  box-sizing:border-box;
}
html {
  font-size:clamp(var(--type-min),var(--type-fluid),var(--type-max));
  scroll-behavior:smooth;
  scroll-padding-top:78px;
}
body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font-family:var(--sans);
  font-size:var(--type-16);
  font-weight:var(--body-weight);
  font-style:var(--body-style);
  font-kerning:var(--font-kerning);
  line-height:var(--body-leading);
  -webkit-font-smoothing:antialiased;
}
body.dialog-open {
  overflow:hidden;
}
button,a {
  -webkit-tap-highlight-color:transparent;
}
button {
  font:inherit;
  color:inherit;
  cursor:pointer;
}
a {
  color:inherit;
  text-decoration:none;
}
img {
  max-width:100%;
  display:block;
}
button {
  border:0;
  background:none;
}
button:disabled {
  cursor:default;
}
[hidden] {
  display:none!important;
}
a:focus-visible,button:focus-visible,summary:focus-visible {
  outline:2px solid currentColor;
  outline-offset:7px;
}
button,a,summary {
  touch-action:manipulation;
}
::selection {
  background:var(--selection-background);
  color:var(--shade-fff);
}
h1,h2,h3,p,figure {
  margin:0;
}
h1,h2,h3 {
  font-weight:var(--body-weight);
}
p+p {
  margin-top:22px;
}
.section-width {
  max-width:var(--page-width);
  margin:auto;
}
.narrow {
  max-width:var(--reading-width);
  margin:auto;
}
.eyebrow {
  font-size:var(--type-control);
  letter-spacing:.25em;
  text-transform:uppercase;
  font-weight:var(--label-weight);
  line-height:1.6;
}
.eyebrow.small {
  font-size:var(--type-control);
  letter-spacing:.22em;
}
.editorial {
  font-family:var(--serif);
  font-style:var(--heading-style);
  font-size:var(--heading-size);
  line-height:1.03;
  letter-spacing:-.025em;
}
.signature {
  font-family:var(--script);
  font-size:var(--type-48);
  line-height:1.4;
}
.script-heading {
  font-family:var(--script);
  font-size:var(--script-heading-size);
  line-height:1.3;
}
.oval-button {
  min-width:var(--button-width);
  min-height:var(--button-height);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:24px;
  padding:16px 32px;
  border:1px solid currentColor;
  border-radius:50%;
  font-size:var(--type-control);
  font-weight:var(--label-weight);
  letter-spacing:.2em;
  text-transform:uppercase;
  transition:background .25s,color .25s,transform .25s;
}
.oval-button:hover {
  background:var(--cream);
  color:var(--ink);
  transform:translateY(-2px);
}
.oval-button.dark:hover {
  background:var(--olive);
  color:var(--cream);
}
.arrow {
  font-size:var(--type-17);
}
.text-button {
  display:inline-flex;
  align-items:center;
  gap:28px;
  border-bottom:1px solid currentColor;
  padding:8px 0;
  font-size:var(--type-control);
  letter-spacing:.16em;
  text-transform:uppercase;
  line-height:1.7;
}
.text-button:hover {
  opacity:.7;
}
.light {
  color:var(--cream);
}
.butterfly {
  width:86px;
  height:auto;
  margin:40px auto 22px;
}
.skip-link {
  position:fixed;
  top:-100px;
  left:16px;
  z-index:100;
  background:var(--cream);
  padding:12px;
}
.skip-link:focus {
  top:10px;
}
.site-header {
  height:var(--header-height);
  position:absolute;
  inset:0 0 auto;
  z-index:20;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 46px;
  color:var(--cream);
  transition:background .25s,color .25s;
  border-bottom:1px solid var(--shade-f2efdf22);
}
.site-header.scrolled {
  position:fixed;
  background:var(--header-background);
  backdrop-filter:blur(10px);
  color:var(--ink);
  height:var(--header-compact-height);
  border-bottom-color:var(--shade-59653d22);
}
.wordmark {
  font-family:var(--script);
  font-size:var(--type-30);
  line-height:1;
  min-width:70px;
}
.wordmark span {
  font-family:var(--serif);
  font-style:var(--heading-style);
  font-size:var(--type-18);
  padding:0 3px;
}
.header-links {
  display:flex;
  gap:36px;
  align-items:center;
}
.header-links a {
  font-size:var(--type-control);
  text-transform:uppercase;
  letter-spacing:.18em;
  position:relative;
}
.header-links a:after {
  content:'';
  position:absolute;
  height:1px;
  bottom:-6px;
  background:currentColor;
  left:0;
  width:0;
  transition:width .25s;
}
.header-links a:hover:after {
  width:100%;
}
.header-actions {
  display:flex;
  gap:25px;
  align-items:center;
}
.language-switch {
  display:flex;
  gap:5px;
  align-items:center;
  font-size:var(--type-control);
  letter-spacing:.07em;
}
.language-switch button {
  font-size:var(--type-control);
  min-width:30px;
  min-height:42px;
  padding:0;
  opacity:.55;
}
.language-switch button[aria-pressed=true] {
  opacity:1;
  text-decoration:underline;
  text-underline-offset:5px;
}
.menu-toggle {
  display:none;
  width:36px;
  height:44px;
  padding:10px 4px;
}
.menu-toggle span {
  display:block;
  width:25px;
  height:1px;
  background:currentColor;
  margin:7px 0;
  transition:transform .2s;
}
.hero {
  position:relative;
  height:100svh;
  min-height:var(--hero-min-height);
  max-height:var(--hero-max-height);
  background:var(--hero-color) var(--hero-image,none) var(--hero-position)/cover no-repeat;
  color:var(--cream);
  text-align:center;
  overflow:hidden;
}
.hero-shade {
  position:absolute;
  inset:0;
  background:var(--hero-overlay);
}
.hero-inner {
  position:relative;
  height:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  padding:104px 24px 28px;
}
.crest {
  position:relative;
  width:88px;
  flex-shrink:0;
}
.crest>span {
  font-family:var(--script);
  font-size:var(--type-35);
  position:absolute;
  color:var(--monogram-ink);
  top:17%;
  left:31%;
  line-height:1;
}
.crest>span span {
  position:relative;
  top:15px;
  left:-5px;
}
.hero-heading {
  margin-top:90px;
}
.hero-heading>.eyebrow {
  font-size:var(--type-control);
  letter-spacing:.3em;
  margin-bottom:10px;
  opacity:.9;
}
.hero h1 {
  overflow-wrap:anywhere;
  font-family:var(--script);
  font-size:var(--hero-name-size);
  line-height:1.25;
  white-space:normal;
  text-shadow:0 2px 24px var(--shade-18261e22);
}
.hero h1 span {
  font-size:var(--type-separator);
  margin:0 .06em;
}
.hero-subtitle {
  font-size:var(--type-copy);
  text-transform:uppercase;
  letter-spacing:.3em;
  line-height:1.6;
  margin-top:7px;
}
.hero-button {
  margin-top:auto;
  min-width:220px;
}
.scroll-hint {
  display:grid;
  place-items:center;
  height:43px;
  width:44px;
  margin-top:14px;
}
.scroll-hint span {
  height:22px;
  width:1px;
  background:var(--shade-f2efdfa8);
  position:relative;
}
.scroll-hint span:after {
  content:'';
  position:absolute;
  bottom:0;
  left:-3px;
  width:6px;
  height:6px;
  border-right:1px solid currentColor;
  border-bottom:1px solid currentColor;
  transform:rotate(45deg);
}
.paper-section {
  background:var(--paper);
}
.welcome {
  padding:var(--welcome-padding);
  text-align:center;
}
.welcome .editorial {
  margin:25px 0 30px;
}
.welcome p:not(.eyebrow):not(.signature) {
  line-height:var(--copy-leading);
}
.welcome .butterfly {
  margin-top:48px;
}
.welcome .signature {
  margin-top:5px;
}
.story {
  position:relative;
  padding:var(--story-padding);
  background:var(--story-overlay),var(--section-image,none) center/cover;
  color:var(--cream);
}
.story-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  align-items:center;
  gap:100px;
}
.album {
  max-width:var(--album-width);
  filter:drop-shadow(0 18px 25px var(--shade-0004));
  transform:rotate(-3deg);
}
.album-page {
  position:relative;
  container-type:inline-size;
  aspect-ratio:1.12;
  overflow:hidden;
  border-radius:3px;
}
.album-cover {
  position:absolute;
  width:184%;
  max-width:none;
  height:100%;
  left:-84%;
  object-fit:fill;
}
.album-monogram {
  position:absolute;
  top:7%;
  left:46%;
  font-family:var(--script);
  font-size:8cqi;
  color:var(--album-monogram-ink);
  line-height:1;
}
.album-monogram span {
  position:relative;
  top:2.9cqi;
  left:-1.2cqi;
}
.album-photo {
  position:absolute;
  left:var(--album-photo-left);
  top:var(--album-photo-top);
  width:var(--album-photo-width);
  height:var(--album-photo-height);
  padding:0;
  overflow:hidden;
  box-shadow:0 2px 3px var(--shade-0003);
}
.album-photo img {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .7s;
}
.album-photo:hover img {
  transform:scale(1.04);
}
.album-caption {
  position:absolute;
  bottom:6%;
  left:31%;
  width:43%;
  text-align:center;
  font-family:var(--script);
  font-size:4cqi;
  line-height:1.2;
  color:var(--album-caption-ink);
}
.album-caption span {
  font-family:var(--sans);
  font-size:2.6cqi;
  letter-spacing:.25em;
}
.story-copy {
  text-align:center;
}
.story-copy .editorial {
  margin:26px 0 32px;
}
.story-copy>p:not(.eyebrow) {
  font-size:var(--type-copy);
  line-height:var(--story-leading);
  color:var(--story-copy-color);
}
.story-mark {
  border-top:1px solid var(--shade-f2efdf44);
  margin-top:32px;
  padding-top:24px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:22px;
}
.story-mark>span {
  font-family:var(--serif);
  font-size:var(--type-44);
  line-height:1;
}
.story-mark>p {
  font-size:var(--type-small);
  letter-spacing:.18em;
  text-transform:uppercase;
  line-height:var(--copy-leading);
  text-align:left;
}
.photographs {
  position:relative;
  text-align:center;
  color:var(--cream);
  background:var(--gallery-overlay),var(--section-image,none) center 47%/cover;
  padding:var(--photographs-padding);
  overflow:hidden;
}
.gallery-heading {
  position:relative;
  z-index:2;
}
.gallery-heading .script-heading {
  margin-top:10px;
}
.frame-gallery {
  height:var(--gallery-height);
  position:relative;
  max-width:var(--gallery-width);
}
.ornate-frame {
  position:absolute;
  padding:0;
  filter:drop-shadow(0 15px 18px var(--shade-0007));
  transition:transform .4s;
}
.ornate-frame:hover {
  transform:translateY(-7px) rotate(0deg);
}
.frame-art {
  position:relative;
  width:100%;
  height:auto;
  z-index:1;
  pointer-events:none;
}
.framed-photo {
  position:absolute;
  z-index:2;
  object-fit:cover;
  transition:filter .3s;
}
.frame-oval {
  width:31%;
  left:2%;
  top:7%;
  transform:rotate(-10deg);
}
.frame-oval .framed-photo {
  left:var(--oval-photo-left);
  top:var(--oval-photo-top);
  width:var(--oval-photo-width);
  height:var(--oval-photo-height);
  border-radius:50%;
  object-position:50% 35%;
  clip-path:ellipse(50% 49%);
}
.frame-landscape {
  width:52%;
  left:26%;
  top:38%;
  transform:rotate(5deg);
}
.frame-landscape .framed-photo {
  left:var(--landscape-photo-left);
  top:var(--landscape-photo-top);
  width:var(--landscape-photo-width);
  height:var(--landscape-photo-height);
  object-position:50% 50%;
}
.frame-portrait {
  width:30%;
  right:0;
  top:4%;
  transform:rotate(8deg);
}
.frame-portrait .framed-photo {
  left:var(--portrait-photo-left);
  top:var(--portrait-photo-top);
  width:var(--portrait-photo-width);
  height:var(--portrait-photo-height);
  object-position:50% 40%;
  clip-path:inset(0 round 1.5%);
}
.photo-open {
  position:absolute;
  z-index:3;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  border:1px solid var(--shade-fff9);
  border-radius:50%;
  background:var(--shade-303b2866);
  opacity:0;
  transition:opacity .2s;
  color:var(--shade-fff);
  font-size:var(--type-22);
  line-height:1;
}
.ornate-frame:hover .photo-open,.ornate-frame:focus-visible .photo-open {
  opacity:1;
}
.gallery-all {
  position:relative;
  z-index:2;
  margin-top:-30px;
}
.celebration {
  height:auto;
  min-height:max(750px,42rem);
  padding:5rem 20px;
  display:grid;
  place-items:center;
  position:relative;
  overflow:hidden;
}
.celebration-photo {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 49%;
  filter:var(--celebration-filter);
}
.celebration-overlay {
  position:absolute;
  inset:0;
  background:var(--celebration-overlay);
}
.date-card {
  width:var(--date-card-width);
  min-height:var(--date-card-min-height);
  position:relative;
  text-align:center;
  filter:drop-shadow(0 12px 25px var(--shade-0002));
}
.date-paper {
  width:100%;
  height:100%;
  position:absolute;
  inset:0;
}
.date-content {
  position:relative;
  padding:var(--date-card-padding);
}
.date-content .editorial {
  font-size:var(--type-51);
  margin:19px 0 26px;
}
.date-content .editorial span {
  font-size:var(--type-30);
}
.event-date {
  font-size:var(--type-copy);
  font-weight:var(--label-weight);
  line-height:1.8;
}
.event-venue {
  display:flex;
  flex-direction:column;
  gap:3px;
  margin-top:12px;
}
.event-venue-name { font-size:var(--type-copy); font-weight:700; line-height:1.45; }
.event-venue-address { font-size:var(--type-small); line-height:1.5; opacity:.68; }
.date-bow {
  position:absolute;
  bottom:-2.5625rem;
  left:14%;
  width:74%;
  pointer-events:none;
}
.date-content .text-button {
  font-size:var(--type-control);
  letter-spacing:.08em;
  gap:8px;
  padding:3px 0;
  margin-top:8px;
}
.details {
  padding:var(--details-padding);
  text-align:center;
}
.details .editorial {
  margin:20px 0 62px;
}
.detail-columns {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:65px;
}
.detail-columns>div {
  position:relative;
  padding:0 15px;
}
.detail-number {
  display:block;
  font-family:var(--serif);
  font-size:var(--type-18);
  font-style:var(--heading-style);
  opacity:.6;
  margin-bottom:20px;
}
.detail-columns h3 {
  font-family:var(--serif);
  font-size:var(--detail-heading-size);
  font-style:var(--heading-style);
  line-height:1.15;
  margin-bottom:21px;
}
.detail-columns p {
  font-size:var(--type-copy);
  line-height:var(--copy-leading);
}
.event-schedule {
  margin-top:55px;
  display:flex;
  justify-content:center;
  gap:35px;
  flex-wrap:wrap;
}
.schedule-item time {
  font-size:var(--type-17);
  font-family:var(--serif);
}
.schedule-item p {
  font-size:var(--type-copy);
}
.rsvp {
  position:relative;
  min-height:940px;
  background:var(--rsvp-overlay),var(--section-image,none) center/cover;
  text-align:center;
  padding:var(--rsvp-padding);
  color:var(--cream);
  overflow:hidden;
}
.rsvp-title {
  position:relative;
  z-index:5;
}
.rsvp-title .script-heading {
  margin-top:7px;
}
.envelope {
  position:relative;
  width:min(var(--envelope-width),90vw);
  height:max(var(--envelope-height),var(--letter-required-height,0px));
  margin:5px auto 0;
  filter:drop-shadow(0 22px 25px var(--shade-25330b55));
}
.envelope-back {
  position:absolute;
  bottom:8%;
  width:100%;
  left:0;
  height:84%;
  object-fit:fill;
}
.letter {
  position:absolute;
  left:17%;
  width:66%;
  height:83%;
  top:2%;
  transform:rotate(-4deg);
  z-index:2;
  transition:transform .5s;
}
.envelope:hover .letter {
  transform:translateY(-10px) rotate(-3deg);
}
.letter-paper {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}
.letter-copy {
  position:relative;
  color:var(--ink);
  padding:3rem 2.125rem 0;
}
.letter-copy .editorial {
  font-size:var(--type-58);
  margin:19px 0 20px;
  line-height:.96;
}
.letter-copy>p:not(.eyebrow) {
  font-size:var(--type-caption);
  line-height:var(--body-leading);
}
.letter-button {
  font-size:var(--type-control);
  letter-spacing:.15em;
  text-transform:uppercase;
  border-bottom:1px solid currentColor;
  padding:9px 0;
  margin-top:15px;
}
.letter-button span {
  margin-left:20px;
}
.envelope-front {
  position:absolute;
  z-index:3;
  width:100%;
  bottom:7.7%;
  left:0;
  pointer-events:none;
}
.wax-seal {
  position:absolute;
  z-index:4;
  width:15%;
  left:42.5%;
  bottom:14%;
  pointer-events:none;
}
.guest-notes {
  padding:var(--notes-padding);
  background:var(--brown);
  color:var(--cream);
  text-align:center;
}
.guest-notes>.section-width {
  max-width:var(--page-width);
}
.guest-notes .editorial {
  margin:20px 0 55px;
}
.notes-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:45px;
  text-align:left;
}
.notes-grid details {
  border-top:1px solid var(--shade-f2efdf66);
  border-bottom:1px solid var(--shade-f2efdf44);
  padding:18px 0;
  height:fit-content;
}
.notes-grid summary {
  font-family:var(--serif);
  font-size:var(--type-26);
  font-style:var(--heading-style);
  line-height:1.25;
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.notes-grid summary::-webkit-details-marker {
  display:none;
}
.notes-grid summary:after {
  content:'+';
  font:1.25rem var(--serif);
  font-style:var(--body-style);
}
.notes-grid details[open] summary:after {
  content:'−';
}
.notes-grid details>div {
  padding-top:20px;
}
.notes-grid p {
  font-size:var(--type-copy);
  line-height:var(--copy-leading);
  color:var(--shade-f2efdfdc);
}
.colour-palette {
  display:flex;
  gap:8px;
  margin-top:20px;
}
.colour-palette i {
  width:22px;
  height:22px;
  border-radius:50%;
  background:var(--shade-526040);
  border:1px solid var(--shade-f2efdf44);
}
.colour-palette i:nth-child(2) {
  background:var(--shade-9b9d7c);
}
.colour-palette i:nth-child(3) {
  background:var(--shade-e0d7c4);
}
.colour-palette i:nth-child(4) {
  background:var(--shade-d9bdb3);
}
.notes-grid .palette-caption {
  font-size:var(--type-small);
  opacity:.85;
  margin-top:12px;
}
.footer {
  padding:var(--footer-padding);
  text-align:center;
  color:var(--cream);
  background:var(--footer-overlay),var(--section-image,none) center/cover;
}
.footer-inner {
  max-width:50rem;
  margin:auto;
}
.footer .oval-button {
  min-width:200px;
}
.footer .editorial {
  margin-top:105px;
  font-size:var(--type-51);
  line-height:1.15;
}
.footer p:not(.signature):not(.eyebrow) {
  font-size:var(--type-copy);
  margin-top:25px;
}
.footer .butterfly {
  filter:brightness(0) invert(.9);
  opacity:.8;
  margin-top:58px;
}
.footer .signature {
  font-size:var(--type-58);
  margin-top:8px;
}
.footer .eyebrow {
  margin-top:10px;
  opacity:.8;
}
.photo-dialog {
  border:0;
  margin:auto;
  padding:40px 80px;
  background:var(--photo-dialog-background);
  color:var(--cream);
  width:100vw;
  max-width:100vw;
  height:100dvh;
  max-height:100dvh;
  overflow:hidden;
}
.photo-dialog::backdrop {
  background:var(--photo-dialog-backdrop);
}
.photo-dialog[open] {
  display:grid;
  place-items:center;
}
.photo-dialog figure {
  display:flex;
  flex-direction:column;
  align-items:center;
  width:100%;
  height:100%;
  min-height:0;
}
.photo-dialog figure img {
  min-height:0;
  max-height:calc(100dvh - 9.5rem);
  max-width:100%;
  width:auto;
  height:100%;
  object-fit:contain;
}
.photo-dialog figure img {
  height:auto;
  max-height:calc(100dvh - 15rem);
}
.photo-dialog figcaption {
  display:flex;
  justify-content:space-between;
  gap:30px;
  width:min(780px,100%);
  margin-top:18px;
  font-size:var(--type-control);
  letter-spacing:.05em;
}
.album-viewer-head { position:absolute; z-index:4; top:18px; left:clamp(18px,5vw,58px); right:68px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.album-viewer-title { font-family:var(--serif); font-style:var(--heading-style); font-size:var(--type-26); }
.album-number { margin-left:auto; font-size:var(--type-small); letter-spacing:.12em; opacity:.75; white-space:nowrap; }
#album-mute { min-height:44px; padding:8px 13px; display:inline-flex; align-items:center; justify-content:center; gap:9px; border:1px solid var(--shade-f2efdf66); border-radius:99px; color:var(--cream); font-size:var(--type-small); letter-spacing:.08em; cursor:pointer; transition:background-color .2s ease,border-color .2s ease; }
#album-mute:hover { background:var(--shade-f2efdf22); border-color:var(--cream); }
#album-mute:focus-visible { outline:2px solid var(--cream); outline-offset:3px; }
.album-music-icon { width:17px; height:16px; display:inline-flex; align-items:center; justify-content:center; gap:2px; flex:0 0 17px; }
.album-music-icon i { display:block; width:2px; height:5px; border-radius:2px; background:currentColor; transform:scaleY(.65); }
.album-music-icon i:nth-child(2) { height:11px; }
.album-music-icon i:nth-child(3) { height:8px; }
#album-mute.is-playing .album-music-icon i { animation:album-music-wave .72s ease-in-out infinite alternate; }
#album-mute.is-playing .album-music-icon i:nth-child(2) { animation-delay:-.48s; }
#album-mute.is-playing .album-music-icon i:nth-child(3) { animation-delay:-.24s; }
@keyframes album-music-wave { from { transform:scaleY(.35); } to { transform:scaleY(1); } }
@media(prefers-reduced-motion:reduce) { #album-mute,#album-mute.is-playing .album-music-icon i { transition:none; animation:none; } }
.album-progress { position:absolute; z-index:4; top:68px; left:clamp(18px,5vw,58px); right:clamp(18px,5vw,58px); height:2px; background:var(--shade-f2efdf44); }
.album-progress:after { content:''; display:block; width:var(--progress,0%); height:100%; background:var(--cream); transition:width .25s ease; }
.album-post-controls { position:absolute; z-index:4; right:18px; top:calc(50% + 58px); display:flex; flex-direction:column; align-items:center; gap:10px; color:var(--cream); }
.album-post-controls button { width:42px; height:42px; border:1px solid var(--shade-f2efdf66); border-radius:50%; font-size:var(--type-22); }
.album-post-controls button:disabled { opacity:.3; }
.album-post-controls span { writing-mode:vertical-rl; font-size:10px; letter-spacing:.12em; opacity:.7; }
.gallery-prev:disabled,.gallery-next:disabled { opacity:.3; }
.photo-dialog figure { touch-action:pan-y; }
.photo-dialog > figure { position:relative; z-index:1; will-change:transform; }
.photo-dialog > figure,.photo-dialog > .album-swipe-preview { width:100%; height:100%; min-height:0; }
.photo-dialog > .album-swipe-preview { position:absolute; z-index:2; inset:40px 80px; display:flex; flex-direction:column; align-items:center; justify-content:center; width:auto; height:auto; pointer-events:none; will-change:transform; }
.photo-dialog > figure img,.photo-dialog > .album-swipe-preview img { min-height:0; max-height:calc(100dvh - 15rem); max-width:100%; width:auto; height:auto; object-fit:contain; }
.photo-dialog > figure figcaption,.photo-dialog > .album-swipe-preview figcaption { display:flex; justify-content:space-between; gap:30px; width:min(780px,100%); margin-top:18px; font-size:var(--type-control); letter-spacing:.05em; }
@media(max-width:700px) { .photo-dialog > .album-swipe-preview { inset:92px 12px 100px; } }
@media(max-width:700px) and (pointer:coarse) { .photo-dialog figure { touch-action:none; } }
@media(prefers-reduced-motion:reduce) { .photo-dialog > figure,.photo-dialog > .album-swipe-preview { will-change:auto; transition-duration:0ms !important; } }
@media(min-width:701px) {
  .photo-dialog[open] { padding:104px 80px 76px; }
  .album-viewer-head { top:20px; }
  .album-progress { top:82px; }
  .photo-dialog[open] figure { justify-content:center; }
  .photo-dialog > figure figcaption,.photo-dialog > .album-swipe-preview figcaption { margin-top:14px; }
}
.dialog-close {
  position:absolute;
  top:15px;
  right:20px;
  width:44px;
  height:44px;
  font-size:var(--type-35);
  line-height:1;
  z-index:5;
  font-family:Arial;
  font-weight:300;
}
@media (hover:none) and (pointer:coarse) {
  .photo-dialog .dialog-close:focus { outline:none; box-shadow:none; }
}
.gallery-prev,.gallery-next {
  position:absolute;
  top:47%;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  font-size:var(--type-25);
  line-height:1;
  border:1px solid var(--shade-f2efdf66);
  border-radius:50%;
}
.gallery-prev {
  left:15px;
}
.gallery-next {
  right:15px;
}
.gallery-prev:hover,.gallery-next:hover {
  background:var(--shade-f2efdf22);
}
.rsvp-dialog {
  border:0;
  padding:50px 50px 40px;
  background:var(--paper);
  color:var(--ink);
  width:min(31.25rem,calc(100vw - 32px));
  text-align:center;
  max-height:90dvh;
  box-shadow:0 25px 80px var(--shade-17251a44);
}
.rsvp-dialog::backdrop {
  background:var(--rsvp-dialog-backdrop);
  backdrop-filter:blur(5px);
}
.rsvp-dialog .butterfly {
  width:72px;
  margin:0 auto 26px;
}
.rsvp-dialog .editorial {
  font-size:var(--type-49);
  margin:20px 0 25px;
}
.rsvp-dialog>p:not(.eyebrow) {
  font-size:var(--type-copy);
  line-height:var(--copy-leading);
}
.rsvp-dialog .text-button {
  margin-top:27px;
}
.rsvp-dialog .oval-button {
  margin-top:25px;
}
.rsvp-dialog .dialog-close {
  color:var(--ink);
}
.rsvp-form { display:grid; gap:16px; margin-top:25px; text-align:left; }
.rsvp-form>label,.rsvp-form #rsvp-yes-fields>label { display:grid; gap:7px; font-size:var(--type-small); letter-spacing:.06em; }
.rsvp-form input:not([type=radio]):not([type=checkbox]) { width:100%; min-height:46px; padding:10px 12px; border:1px solid var(--shade-59653d33); background:var(--shade-fff9); color:var(--ink); font:inherit; }
.rsvp-form fieldset { min-width:0; margin:0; padding:12px; border:1px solid var(--shade-59653d33); }
.rsvp-form legend { padding:0 6px; font-size:var(--type-small); }
.rsvp-choice { display:flex; align-items:flex-start; gap:9px; margin:9px 0; font-size:var(--type-small); line-height:1.5; }
.rsvp-choice input { accent-color:var(--olive); margin-top:4px; }
.rsvp-event-hint,.rsvp-status { display:block; font-size:var(--type-small); line-height:1.5; opacity:.78; }
.rsvp-status.is-success { padding:18px 16px; border:1px solid var(--shade-59653d33); background:var(--shade-fff9); font-family:var(--serif); font-size:var(--type-copy); line-height:1.6; opacity:1; text-align:center; }
.rsvp-form .oval-button { justify-self:center; }
.rsvp-form button:disabled { opacity:.55; }
.rsvp-privacy { margin:0; font-size:var(--type-small); line-height:1.5; opacity:.72; text-align:center; }
.rsvp-honeypot { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
.js-enabled .reveal {
  opacity:0;
  translate:0 var(--reveal-distance);
  transition:opacity var(--reveal-duration) cubic-bezier(.2,.65,.25,1),translate var(--reveal-duration) cubic-bezier(.2,.65,.25,1);
  transition-delay:var(--reveal-delay,0ms);
}
.js-enabled .reveal.is-visible {
  opacity:1;
  translate:0 0;
}
.story-grid>.reveal:nth-child(2) { --reveal-delay:90ms; }
.celebrations-grid>.reveal:nth-child(2) { --reveal-delay:70ms; }
.celebrations-grid>.reveal:nth-child(3) { --reveal-delay:140ms; }
html[lang=vi] .script-heading {
  font-family:var(--serif);
  font-style:var(--heading-style);
  font-size:var(--translated-heading-size);
}
html[lang=vi] .hero-subtitle {
  letter-spacing:.17em;
}
html[lang=vi] .header-links {
  gap:28px;
}
@media(min-width:1600px) {
  .hero-heading {
    margin-top:110px;
  }
  .story-grid {
    max-width:var(--story-wide-width);
    gap:7.5rem;
  }
  .story {
    padding-top:140px;
    padding-bottom:140px;
  }
}
@media(max-width:1000px) {
  .site-header {
    padding:0 28px;
  }
  .header-links {
    gap:20px;
  }
  .hero {
    min-height:720px;
  }
  .hero-heading {
    margin-top:90px;
  }
  .story {
    padding:85px 34px;
  }
  .story-grid {
    gap:45px;
  }
  .story-copy .editorial {
    font-size:var(--type-48);
  }
  .story-copy>p:not(.eyebrow) {
    font-size:var(--type-copy);
  }
  .frame-gallery {
    height:580px;
  }
  .detail-columns {
    gap:25px;
  }
  .detail-columns>div {
    padding:0 4px;
  }
  .detail-columns h3 {
    font-size:var(--type-27);
  }
  .notes-grid {
    gap:25px;
  }
}
@media(max-width:700px) {
  html {
    scroll-padding-top:64px;
  }
  .hero {
    height:100svh;
    min-height:var(--hero-mobile-min-height);
    max-height:900px;
    background-position:48% center;
  }
  .hero-inner {
    padding:100px 20px 18px;
  }
  .crest {
    width:75px;
  }
  .crest>span {
    font-size:var(--type-31);
  }
  .hero-heading {
    margin-top:90px;
  }
  .hero-heading>.eyebrow {
    font-size:var(--type-small);
    margin-bottom:17px;
  }
  .hero h1 {
    overflow-wrap:anywhere;
    font-size:var(--hero-name-mobile-size);
  }
  .hero-subtitle {
    font-size:var(--type-control);
    letter-spacing:.2em;
    margin-top:15px;
  }
  .hero-button {
    min-height:54px;
    min-width:195px;
    font-size:var(--type-control);
  }
  .scroll-hint {
    margin-top:16px;
  }
  .welcome {
    padding:var(--welcome-mobile-padding);
  }
  .welcome .editorial {
    font-size:var(--type-49);
    margin-top:21px;
  }
  .welcome p:not(.eyebrow):not(.signature) {
    font-size:var(--type-copy);
  }
  .signature {
    font-size:var(--type-43);
  }
  .welcome .butterfly {
    width:76px;
  }
  .story {
    padding:var(--story-mobile-padding);
  }
  .story-grid {
    grid-template-columns:1fr;
    gap:55px;
    max-width:480px;
  }
  .album {
    width:94%;
    margin:auto;
    max-width:390px;
  }
  .story-copy {
    max-width:440px;
  }
  .story-copy .editorial {
    font-size:var(--type-49);
    margin-top:19px;
  }
  .story-copy>p:not(.eyebrow) {
    font-size:var(--type-copy);
  }
  .story-mark {
    margin-top:30px;
  }
  .photographs {
    padding:var(--photographs-mobile-padding);
  }
  .gallery-heading .eyebrow {
    font-size:var(--type-small);
    letter-spacing:.19em;
  }
  .gallery-heading .script-heading {
    font-size:var(--type-70);
  }
  .frame-gallery {
    height:calc(28vw + 692px);
    width:100%;
    max-width:500px;
    margin-top:10px;
  }
  .js-enabled .frame-gallery .reveal {
    opacity:1;
    translate:0 0;
    transition:none;
  }
  .frame-gallery .ornate-frame {
    transition:none;
  }
  .frame-oval,.frame-oval:hover {
    width:62%;
    left:50%;
    top:0;
    transform:translateX(-50%) rotate(-8deg);
  }
  .frame-portrait,.frame-portrait:hover {
    width:53%;
    left:50%;
    right:auto;
    top:470px;
    transform:translateX(-50%) rotate(7deg);
  }
  .frame-landscape,.frame-landscape:hover {
    width:90%;
    left:50%;
    top:240px;
    transform:translateX(-50%) rotate(-5deg);
  }
  .gallery-all {
    margin-top:0;
    font-size:var(--type-control);
  }
  .celebration {
    height:auto;
    min-height:670px;
    padding:5rem 20px;
  }
  .celebration-photo {
    object-position:55% center;
  }
  .date-card {
    width:min(21rem,calc(100vw - 40px));
    min-height:31.5rem;
  }
  .date-content {
    padding:64px 36px 25px;
  }
  .date-content .editorial {
    font-size:var(--type-46);
    margin:20px 0 24px;
  }
  .date-content .eyebrow {
    font-size:var(--type-small);
  }
  .date-bow {
    bottom:-35px;
  }
  .details {
    padding:var(--details-mobile-padding);
  }
  .details .editorial {
    font-size:var(--type-47);
    margin-bottom:42px;
  }
  .detail-columns {
    grid-template-columns:1fr;
    gap:32px;
    max-width:370px;
    margin:auto;
  }
  .detail-columns>div {
    border-top:1px solid var(--shade-59653d33);
    padding-top:25px;
  }
  .detail-number {
    margin-bottom:10px;
    font-size:var(--type-16);
  }
  .detail-columns h3 {
    font-size:var(--type-31);
    margin-bottom:14px;
  }
  .detail-columns p {
    font-size:var(--type-copy);
  }
  .rsvp {
    min-height:780px;
    padding:var(--rsvp-mobile-padding);
  }
  .rsvp-title .eyebrow {
    font-size:var(--type-small);
    letter-spacing:.15em;
  }
  .rsvp-title .script-heading {
    font-size:var(--type-73);
  }
  .envelope {
    width:min(27.5rem,88vw);
    height:max(var(--envelope-mobile-height),var(--letter-required-height,0px));
    margin:30px auto 0;
  }
  .envelope-back {
    height:60%;
    bottom:20%;
  }
  .letter {
    left:14%;
    width:72%;
    height:calc(100% - 13%);
    top:-4%;
  }
  .letter-copy {
    padding:clamp(30px,8vw,41px) clamp(18px,5.5vw,26px) 0;
  }
  .letter-copy .editorial {
    font-size:var(--type-52);
    margin:18px 0;
  }
  .letter-copy>p:not(.eyebrow) {
    font-size:var(--type-caption);
  }
  .letter-button {
    font-size:var(--type-control);
    letter-spacing:.1em;
    white-space:nowrap;
  }
  .envelope-front {
    height:auto;
    bottom:20%;
  }
  .wax-seal {
    bottom:29.5%;
    width:13%;
    left:43.5%;
  }
  .guest-notes {
    padding:var(--notes-mobile-padding);
  }
  .guest-notes .editorial {
    font-size:var(--type-47);
    margin-bottom:40px;
  }
  .notes-grid {
    grid-template-columns:1fr;
    gap:0;
  }
  .notes-grid details {
    border-top:0;
    padding:23px 0;
  }
  .notes-grid details:first-child {
    border-top:1px solid var(--shade-f2efdf66);
  }
  .notes-grid summary {
    font-size:var(--type-29);
  }
  .notes-grid p {
    font-size:var(--type-copy);
  }
  .footer {
    padding:var(--footer-mobile-padding);
  }
  .footer .editorial {
    font-size:var(--type-41);
    line-height:1.15;
    margin-top:72px;
  }
  .footer .oval-button {
    min-height:53px;
    min-width:185px;
    font-size:var(--type-control);
  }
  .footer .butterfly {
    margin-top:41px;
    width:72px;
  }
  .footer .signature {
    font-size:var(--type-51);
  }
  .footer .eyebrow {
    font-size:var(--type-small);
  }
  .photo-dialog {
    padding:92px 12px 100px;
  }
  .photo-dialog figure {
    justify-content:center;
  }
  .photo-dialog figure img {
    max-height:calc(100dvh - 13rem);
    height:auto;
  }
  .photo-dialog > figure img,.photo-dialog > .album-swipe-preview img {
    max-height:calc(100dvh - 13rem);
    height:auto;
  }
  .photo-dialog > figure figcaption,.photo-dialog > .album-swipe-preview figcaption {
    font-size:var(--type-control);
    gap:18px;
    padding:0 8px;
  }
  .gallery-prev,.gallery-next {
    top:auto;
    bottom:15px;
    width:45px;
    height:45px;
    font-size:var(--type-22);
  }
  .gallery-prev {
    left:calc(50% - 60px);
  }
  .gallery-next {
    right:calc(50% - 60px);
  }
  .album-viewer-head { top:12px; left:16px; right:66px; gap:8px; }
  .album-viewer-title { min-width:0; flex:1 1 auto; font-size:clamp(13px,var(--type-20),17px); line-height:1.2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  #album-mute { flex:0 0 auto; min-height:44px; padding:7px 9px; gap:7px; font-size:11px; white-space:nowrap; }
  .album-progress { top:62px; left:16px; right:16px; }
  .album-post-controls { top:auto; right:12px; bottom:74px; flex-direction:row; }
  .album-post-controls span { display:none; }
  .album-number { font-size:var(--type-small); }
  .rsvp-dialog {
    padding:45px 28px 34px;
  }
  .rsvp-dialog .editorial {
    font-size:var(--type-44);
  }
  html[lang=vi] .hero-subtitle {
    font-size:var(--type-small);
    letter-spacing:.12em;
  }
  html[lang=vi] .gallery-heading .script-heading {
    font-size:var(--type-55);
  }
  html[lang=vi] .rsvp-title .script-heading {
    font-size:var(--type-55);
  }
}
@media(max-width:390px) {
  .hero-heading {
    margin-top:80px;
  }
  .hero-subtitle {
    font-size:var(--type-small);
  }
  .frame-gallery {
    height:calc(125vw + 190px + max(0px, 100vw - 360px) + max(0px, 34.3vw - 110px) + max(0px, 360px - 100vw));
  }
  .frame-landscape {
    top:55vw;
  }
  .frame-portrait {
    top:110vw;
  }
  .date-card {
    width:min(19rem,calc(100vw - 40px));
    min-height:30.5rem;
  }
  .date-content {
    padding-top:60px;
  }
  .date-content .editorial {
    font-size:var(--type-44);
  }
  .letter-copy .editorial {
    font-size:var(--type-46);
  }
  .envelope {
    height:max(38rem,var(--letter-required-height,0px));
    width:min(25rem,88vw);
  }
  .envelope-back {
    height:60%;
    bottom:20%;
  }
  .envelope-front {
    height:auto;
    bottom:20%;
  }
  .wax-seal {
    bottom:29.5%;
  }
  .letter {
    height:calc(100% - 40%);
    top:-6%;
  }
  .rsvp {
    min-height:46.25rem;
  }
  .letter-copy {
    padding:clamp(30px,8vw,41px) clamp(18px,5.5vw,26px) 0;
  }
  .letter-copy>p:not(.eyebrow) {
    font-size:var(--type-caption);
  }
}
@media(min-width:391px) and (max-width:700px) {
  .letter {
    height:75%;
    top:-4%;
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  *,*:before,*:after {
    animation:none!important;
    transition:none!important;
  }
  .js-enabled .reveal {
    opacity:1;
    translate:0 0;
  }
  .album-progress:after { transition:none; }
}
.hero-video {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:var(--hero-video-position);
}
.crest>span {
  font-size:var(--type-28);
  left:17%;
  top:31%;
}
.crest>span span {
  top:12px;
  left:-7px;
}
.rsvp-title {
  color:var(--rsvp-title-color);
}
@media(min-width:1001px) {
  .story-copy>p:not(.eyebrow) {
    font-size:var(--type-copy);
  }
}
@media(max-width:700px) {
  .crest>span {
    font-size:var(--type-25);
    left:27%;
    top:34%;
  }
}
.crest img {
  width:100%;
  height:auto;
}
.motion-toggle {
  position:absolute;
  right:25px;
  bottom:25px;
  min-height:44px;
  padding:10px;
  font-size:var(--type-small);
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--cream);
  z-index:2;
  opacity:.8;
}
.motion-toggle:hover {
  opacity:1;
}
.motion-toggle:before {
  content:"Ⅱ";
  font-family:Arial;
  font-size:var(--type-copy);
  display:inline-block;
  width:18px;
}
.motion-toggle.is-paused:before {
  content:"▷";
}
@media(max-width:700px) {
  .motion-toggle {
    right:12px;
    bottom:12px;
    font-size:var(--type-small);
  }
}
h2 {
  text-wrap:balance;
}
@media(max-width:700px) {
  html[lang=vi] .rsvp-title .script-heading {
    font-size:var(--type-47);
    line-height:1.1;
    max-width:340px;
    margin:14px auto 0;
  }
}
@media(max-width:62.5em) {
  .site-header {
    height:var(--header-mobile-height);
    padding:0 20px;
  }
  .site-header.scrolled {
    height:61px;
  }
  .wordmark {
    font-size:var(--type-28);
    min-width:auto;
  }
  .header-actions {
    gap:16px;
  }
  .menu-toggle {
    display:block;
  }
  .header-links {
    display:none;
    position:absolute;
    top:65px;
    left:0;
    right:0;
    padding:32px 25px 38px;
    background:var(--paper);
    color:var(--ink);
    box-shadow:0 15px 25px var(--shade-17251a22);
  }
  .scrolled .header-links {
    top:60px;
  }
  .site-header.menu-open {
    background:var(--paper);
    color:var(--ink);
  }
  .menu-open .header-links {
    display:flex;
    flex-direction:column;
    gap:25px;
  }
  .header-links a {
    font-size:var(--type-caption);
  }
  .menu-open .menu-toggle span:first-child {
    transform:translateY(4px) rotate(45deg);
  }
  .menu-open .menu-toggle span:last-child {
    transform:translateY(-4px) rotate(-45deg);
  }
}
.event-time {
  font-size:var(--type-copy);
  margin-top:.25rem;
}
.empty-gallery {
  padding:4rem 1rem;
}
.date-content .text-button {
  display:block;
  width:fit-content;
  margin-left:auto;
  margin-right:auto;
}
.detail-columns {
  grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));
}
.city-details {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(24px,5vw,72px);
  text-align:left;
}
.city-detail {
  position:relative;
  padding:clamp(26px,4vw,52px);
  border:1px solid var(--shade-59653d33);
  background:linear-gradient(145deg,var(--shade-fff9),transparent 72%);
  box-shadow:0 22px 55px var(--shade-17251a0c);
}
.city-detail:before,.city-detail:after {
  content:'';
  position:absolute;
  pointer-events:none;
}
.city-detail:before { inset:8px; border:1px solid var(--shade-59653d22); }
.city-detail:after { width:42px; height:1px; background:var(--olive); top:0; left:50%; transform:translateX(-50%); }
.city-detail-heading { position:relative; text-align:center; padding-bottom:25px; border-bottom:1px solid var(--shade-59653d33); }
.city-detail-heading .detail-number { margin:0 0 12px; }
.city-detail-heading .editorial { font-size:var(--type-44); margin:0; }
.city-detail-date { margin-top:12px; font-size:var(--type-small); letter-spacing:.11em; }
.city-detail-venue { margin-top:18px; font-family:var(--serif); font-size:var(--type-26); }
.city-detail-address { margin-top:5px; font-size:var(--type-small); opacity:.7; }
.city-detail-body { display:grid; grid-template-columns:minmax(0,1fr); gap:25px; padding-top:24px; }
.detail-kicker { font-size:var(--type-small); letter-spacing:.16em; text-transform:uppercase; margin-bottom:13px; }
.detail-pending { font-size:var(--type-copy); line-height:var(--copy-leading); }
.event-schedule { margin:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; position:relative; }
.city-schedule.event-schedule-group { margin-top:0; }
.city-schedule.event-schedule-group .event-schedule { margin-top:0; }
.event-schedule:before { content:''; position:absolute; top:27px; left:16.667%; right:16.667%; height:1px; background:var(--shade-59653d44); }
.schedule-item { min-width:0; position:relative; display:flex; flex-direction:column; align-items:center; gap:8px; padding:0 10px; text-align:center; }
.schedule-icon { z-index:1; display:grid; place-items:center; width:54px; height:54px; border:1px solid var(--shade-59653d55); border-radius:50%; background:var(--paper); color:var(--olive); }
.schedule-icon img { width:36px; height:36px; object-fit:contain; }
.schedule-icon svg { width:27px; height:27px; fill:none; stroke:currentColor; stroke-width:1.35; stroke-linecap:round; stroke-linejoin:round; }
.schedule-item time { font-size:var(--type-25); font-family:var(--serif); white-space:normal; min-height:1.4em; }
.schedule-item p { font-size:var(--type-copy); line-height:var(--copy-leading); text-wrap:balance; }
.schedule-item .schedule-venue { font-family:var(--serif); font-style:var(--heading-style); margin-top:3px; }
.schedule-item .schedule-address { font-size:var(--type-small); opacity:.72; margin-top:2px; }
.extra-detail { border-top:1px solid var(--shade-59653d33); padding:24px 12px 0; }
.extra-detail h3 { font-family:var(--serif); font-size:var(--type-26); margin-bottom:12px; }
.extra-detail p { font-size:var(--type-copy); line-height:var(--copy-leading); }
@media(max-width:700px) {
  .city-details { grid-template-columns:1fr; gap:22px; }
  .city-detail { padding:30px 24px; }
  .city-detail-body { grid-template-columns:1fr; gap:24px; }
  .city-detail-heading .editorial { font-size:var(--type-37); }
  .event-schedule { grid-template-columns:1fr; gap:21px; padding-left:4px; }
  .event-schedule:before { top:27px; bottom:28px; left:26px; right:auto; width:1px; height:auto; }
  .schedule-item { display:grid; grid-template-columns:54px minmax(0,1fr); grid-template-rows:auto auto; column-gap:16px; row-gap:3px; align-items:center; padding:0; text-align:left; }
  .schedule-icon { grid-column:1; grid-row:1/3; }
  .schedule-item time { grid-column:2; grid-row:1; justify-self:start; font-size:var(--type-22); }
  .schedule-copy { grid-column:2; grid-row:2; }
  .extra-detail { padding-inline:0; }
}
.notes-grid {
  grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));
}
.hero-heading {
  max-width:100%;
}
.photo-dialog figcaption {
  flex-shrink:0;
}
.album-photo img {
  object-position:var(--photo-position,50% 50%);
}

.date-content {
  padding-bottom: var(--date-card-bottom-space);
}

/* One invitation card per configured celebration; the grid wraps naturally. */
.celebration {
  padding:var(--event-section-padding);
  align-content:center;
  gap:var(--event-heading-gap);
}
.celebration-heading {
  position:relative;
  color:var(--cream);
  text-align:center;
}
.celebration-heading .editorial {
  margin-top:1rem;
}
.celebrations-grid {
  position:relative;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--event-grid-min)),1fr));
  gap:var(--event-grid-gap);
  width:min(100%,var(--event-grid-width));
  justify-items:center;
  align-items:stretch;
}
.celebrations-grid .date-card {
  max-width:100%;
}
.date-content .editorial {
  font-size:var(--event-city-size);
  overflow-wrap:break-word;
}
.event-city,.event-pending {
  font-size:var(--type-small);
}
.event-schedule-group {
  margin-top:3.5rem;
}
.event-schedule-group > .editorial {
  font-size:var(--type-30);
}
.event-schedule-group .event-schedule {
  margin-top:1.5rem;
}
.celebration-empty {
  color:var(--cream);
  text-align:center;
}
