@font-face {
  font-family: Archivo;
  src: url("/fonts/archivo-black-latin-400-normal.woff2") format("woff2");
  font-weight: 900;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: Archivo;
  src: url("/fonts/archivo-black-latin-ext-400-normal.woff2") format("woff2");
  font-weight: 900;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: DM;
  src: url("/fonts/dm-sans-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: DM;
  src: url("/fonts/dm-sans-latin-ext-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
:root {
  --ink: #181820;
  --paper: #f5f0e5;
  --orange: #fa6035;
  --violet: #b2a0ed;
  --lime: #e2f284;
  --display: Archivo, "Arial Black", sans-serif;
  --body: DM, "Helvetica Neue", Arial, sans-serif;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--body);
  font-synthesis: none;
  scroll-padding-top: 100px;
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
}
a {
  color: inherit;
  text-underline-offset: 5px;
}
button {
  font: inherit;
  color: inherit;
}
p,
h1,
h2,
dd {
  margin: 0;
}
h1,
h2 {
  font-family: var(--display);
  font-weight: 900;
  letter-spacing: -0.055em;
  line-height: 1.04;
}
p {
  line-height: 1.6;
}
button,
a {
  -webkit-tap-highlight-color: transparent;
}
a:focus-visible,
button:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 5px;
}
button:focus-visible {
  outline-offset: 1px;
}
main:focus {
  outline: none;
}
.skip-link {
  position: fixed;
  top: 10px;
  left: 16px;
  padding: 12px;
  background: var(--paper);
  z-index: 10;
  transform: translateY(-150%);
}
.skip-link:focus {
  transform: translateY(0);
}
.site-header {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 40px;
  padding: 12px 4%;
  min-height: 78px;
  background: var(--paper);
  border-bottom: 1.5px solid var(--ink);
}
.home-link {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 400;
  text-decoration: none;
  white-space: nowrap;
  font-size: 19px;
}
.brand-mark {
  font-family: var(--display);
  font-size: 34px;
  line-height: 1;
  letter-spacing: -5px;
  padding-right: 5px;
}
.header-year {
  font-size: 13px;
  margin-left: 3px;
}
.page-nav {
  display: flex;
  gap: 30px;
  margin-left: auto;
  font-size: 14px;
}
.page-nav a {
  text-decoration: none;
}
.page-nav a:hover {
  text-decoration: underline;
}
.language-switch {
  display: flex;
  align-items: center;
  gap: 3px;
  font-size: 13px;
  white-space: nowrap;
}
.language-switch[hidden] {
  display: none;
}
.language-switch button {
  border: 0;
  background: transparent;
  padding: 12px 6px;
  cursor: pointer;
  min-height: 44px;
}
.language-switch button[aria-pressed="true"] {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 6px;
}
.language-switch button:hover {
  background: #1818200c;
}
.hero {
  isolation: isolate;
  position: relative;
  overflow: hidden;
  background: var(--orange);
  border-bottom: 1.5px solid var(--ink);
}
.hero-art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -1;
}
.hero-content {
  max-width: 1600px;
  margin: auto;
  padding: 48px 4% 24px;
}
.hero h1 {
  font-size: clamp(48px, 8.6vw, 142px);
  text-align: center;
  white-space: nowrap;
}
.hero h1 span {
  letter-spacing: -0.065em;
}
.hero-middle {
  position: relative;
  height: 440px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.event-logo {
  width: 510px;
  max-width: 58%;
  height: auto;
  transform: rotate(-5deg);
}
.hero-note {
  position: absolute;
  left: 4%;
  top: 32%;
  font-family: var(--display);
  font-size: clamp(30px, 3.4vw, 54px);
  line-height: 1.02;
  letter-spacing: -0.04em;
  transform: rotate(-10deg);
}
.date-stamp {
  position: absolute;
  right: 6%;
  top: 30%;
  padding: 16px 24px 20px;
  background: var(--lime);
  font-family: var(--display);
  font-size: 67px;
  line-height: 0.95;
  transform: rotate(9deg);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
}
.date-stamp > span {
  display: block;
}
.date-dot {
  color: var(--orange);
}
.date-stamp svg {
  display: block;
  width: 75px;
  height: 18px;
  margin-top: 10px;
  stroke: var(--ink);
  stroke-width: 3;
  fill: none;
}
.hero-baseline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding-top: 21px;
  border-top: 1.5px solid var(--ink);
  font-size: 16px;
}
.hero-baseline a {
  display: flex;
  align-items: center;
  gap: 20px;
  text-decoration: none;
}
.hero-baseline a:hover {
  text-decoration: underline;
}
.hero-baseline a > span:last-child {
  font-size: 28px;
  line-height: 1;
}
.section-wrap {
  max-width: 1440px;
  margin: 0 auto;
  padding: 100px 8%;
}
.invitation {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8%;
}
h2 {
  font-size: clamp(42px, 4.5vw, 70px);
}
.invitation-copy {
  font-size: 17px;
  max-width: 530px;
}
.lead {
  font-size: 25px;
  line-height: 1.35;
  margin: 0 0 23px;
  letter-spacing: -0.025em;
}
.signature {
  margin-top: 26px;
}
.signature span {
  display: inline-block;
  margin-top: 7px;
  font-size: 22px;
  transform: rotate(-3deg);
}
.where-when {
  background: var(--lime);
  border-block: 1.5px solid var(--ink);
}
.logistics-inner {
  display: grid;
  grid-template-columns: 0.9fr 1.3fr;
  gap: 24px;
  align-items: center;
  padding-top: 52px;
  padding-bottom: 52px;
}
.venue-date > p {
  font-size: 20px;
  margin-bottom: 10px;
}
.venue-date time {
  font-family: var(--display);
  font-size: clamp(32px, 3.8vw, 60px);
  letter-spacing: -0.065em;
  white-space: nowrap;
}
.hand-arrow {
  width: 100%;
  stroke: var(--ink);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
  transform: rotate(-8deg);
}
.venue h2 {
  font-size: clamp(29px, 3vw, 44px);
  letter-spacing: -0.045em;
}
.venue p {
  font-size: 14px;
  margin-top: 14px;
}
.day {
  display: grid;
  grid-template-columns: 1fr 1.45fr;
  gap: 10%;
  padding-top: 100px;
  padding-bottom: 90px;
}
.day-intro p {
  font-size: 18px;
  max-width: 300px;
  margin-top: 25px;
}
.asterisk {
  display: block;
  font-size: 120px;
  line-height: 1.1;
  color: var(--orange);
  margin-top: 30px;
  transform: rotate(10deg);
  width: max-content;
}
.program {
  margin: 0;
}
.program > div {
  padding: 26px 0;
  border-top: 1.5px solid var(--ink);
}
.program > div:first-child {
  padding-top: 23px;
}
.program > div:last-child {
  border-bottom: 1.5px solid var(--ink);
}
.program dt {
  display: flex;
  align-items: baseline;
  gap: 24px;
  font-family: var(--display);
  font-size: clamp(22px, 2vw, 30px);
  letter-spacing: -0.04em;
  line-height: 1.2;
}
.program-number {
  font-size: 39px;
  min-width: 63px;
  letter-spacing: -0.08em;
  color: #6650a4;
}
.program dd {
  margin-top: 8px;
  padding-left: 87px;
  font-size: 16px;
  line-height: 1.5;
}
.program-note {
  font-size: 14px;
  margin-top: 22px;
}
.registration {
  background: var(--violet);
  border-block: 1.5px solid var(--ink);
}
.registration-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8%;
  align-items: center;
  padding-block: 76px;
}
.registration h2 {
  font-size: clamp(42px, 4.5vw, 69px);
}
.registration-copy > p:first-child {
  font-size: 20px;
  max-width: 350px;
}
.registration-status {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 18px;
  line-height: 1.4;
  border-block: 1.5px solid var(--ink);
  padding: 18px 0;
  margin-top: 24px;
  width: fit-content;
}
.status-dot {
  width: 10px;
  height: 10px;
  background: var(--ink);
  border-radius: 50%;
  flex-shrink: 0;
}
.registration-note {
  font-size: 14px;
  max-width: 340px;
  margin-top: 14px;
}
.site-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 34px 4%;
  font-size: 13px;
}
.site-footer a {
  text-decoration: none;
  font-family: var(--display);
  font-size: 15px;
  letter-spacing: -0.035em;
}
.site-footer a span {
  margin-left: 12px;
}
.site-footer a:hover {
  text-decoration: underline;
}
@media (min-width: 1600px) {
  .hero-art {
    object-fit: fill;
  }
}
@media (max-width: 900px) {
  .site-header {
    gap: 20px;
  }
  .page-nav {
    gap: 20px;
  }
  .hero-content {
    padding-top: 42px;
  }
  .hero-middle {
    height: 370px;
  }
  .event-logo {
    width: 440px;
  }
  .date-stamp {
    font-size: 49px;
    padding: 15px 18px;
    right: 3%;
  }
  .hero-note {
    left: 2%;
  }
  .section-wrap {
    padding-inline: 6%;
  }
  .invitation {
    gap: 6%;
    padding-block: 76px;
  }
  .lead {
    font-size: 22px;
  }
  .logistics-inner {
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    padding-block: 42px;
  }
  .hand-arrow {
    display: none;
  }
  .day {
    gap: 7%;
  }
  .program dt {
    gap: 15px;
  }
  .program dd {
    padding-left: 67px;
  }
  .program-number {
    min-width: 52px;
    font-size: 34px;
  }
  .site-footer {
    flex-wrap: wrap;
  }
  .site-footer > span {
    display: none;
  }
}
@media (max-width: 640px) {
  :root {
    scroll-padding-top: 85px;
  }
  .site-header {
    padding: 10px 5%;
    min-height: 70px;
    justify-content: space-between;
    gap: 8px;
  }
  .home-link {
    font-size: 15px;
    gap: 8px;
  }
  .brand-mark {
    font-size: 30px;
  }
  .header-year,
  .page-nav {
    display: none;
  }
  .language-switch {
    font-size: 12px;
    gap: 1px;
  }
  .language-switch button {
    padding-inline: 5px;
  }
  .hero-content {
    padding: 32px 5% 20px;
  }
  .hero h1 {
    font-size: clamp(37px, 10.4vw, 67px);
    line-height: 1.05;
    white-space: normal;
  }
  .hero h1 span {
    display: block;
    font-size: 0.88em;
    margin-top: 4px;
  }
  .hero-middle {
    height: 340px;
    align-items: flex-start;
    padding-top: 15px;
  }
  .event-logo {
    width: 330px;
    max-width: 86%;
    margin-top: 0;
  }
  .hero-note {
    font-size: 30px;
    top: auto;
    bottom: 6px;
    left: 2%;
    transform: rotate(-7deg);
  }
  .hero-note br {
    display: block;
  }
  .date-stamp {
    font-size: 32px;
    top: auto;
    bottom: 6px;
    right: 4%;
    padding: 10px 14px;
    box-shadow: 3px 3px 0 var(--ink);
  }
  .date-stamp > span {
    display: inline;
  }
  .date-stamp svg {
    width: 73px;
    height: 10px;
    margin-top: 3px;
    margin-left: auto;
  }
  .hero-art {
    object-position: 50% 45%;
    object-fit: cover;
  }
  .hero-baseline {
    display: block;
    padding-top: 17px;
    font-size: 13px;
    margin-top: 12px;
    background: var(--orange);
    box-shadow:
      0 20px var(--orange),
      20px 0 var(--orange),
      -20px 0 var(--orange);
  }
  .hero-baseline a {
    margin-top: 4px;
    justify-content: space-between;
  }
  .hero-baseline a > span:last-child {
    font-size: 25px;
  }
  .section-wrap {
    padding: 60px 6%;
  }
  .invitation,
  .day,
  .registration-inner {
    grid-template-columns: 1fr;
    gap: 30px;
  }
  h2 {
    font-size: 44px;
  }
  .lead {
    font-size: 23px;
  }
  .invitation-copy {
    font-size: 16px;
  }
  .signature {
    margin-top: 23px;
  }
  .logistics-inner {
    grid-template-columns: 1fr;
    gap: 28px;
    padding-block: 35px;
  }
  .venue-date time {
    font-size: 39px;
  }
  .venue-date > p {
    font-size: 17px;
    margin-bottom: 5px;
  }
  .venue h2 {
    font-size: 32px;
  }
  .venue h2 br {
    display: none;
  }
  .venue p {
    margin-top: 10px;
  }
  .day-intro {
    position: relative;
  }
  .day-intro h2 br {
    display: none;
  }
  .day-intro p {
    font-size: 16px;
    max-width: 78%;
    margin-top: 20px;
  }
  .asterisk {
    position: absolute;
    right: 0;
    bottom: -5px;
    font-size: 76px;
    margin: 0;
  }
  .program dt {
    font-size: 23px;
    gap: 15px;
  }
  .program-number {
    font-size: 32px;
    min-width: 48px;
  }
  .program dd {
    font-size: 15px;
    padding-left: 63px;
  }
  .program > div {
    padding-block: 22px;
  }
  .program-note {
    font-size: 13px;
  }
  .registration-inner {
    gap: 27px;
    padding-block: 55px;
  }
  .registration-copy > p:first-child {
    font-size: 19px;
  }
  .registration-status {
    font-size: 17px;
  }
  .site-footer {
    padding: 28px 6%;
    gap: 12px;
    flex-direction: column;
    align-items: flex-start;
  }
  .site-footer p {
    font-size: 12px;
  }
}
@media (max-width: 370px) {
  .home-link {
    font-size: 13px;
  }
  .hero-middle {
    height: 300px;
  }
  .hero-note {
    font-size: 26px;
  }
  .date-stamp {
    font-size: 27px;
  }
  .venue-date time {
    font-size: 34px;
  }
  .program dt {
    font-size: 21px;
  }
  h2 {
    font-size: 39px;
  }
}
@media (prefers-reduced-motion: no-preference) {
  a,
  button {
    transition: background-color 0.15s ease;
  }
}

.venue-address {
  margin-top: 20px;
  font-size: 15px;
  line-height: 1.6;
  font-style: normal;
}
.venue-map {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  margin-top: 4px;
  font-size: 14px;
}

/* Photo frames are deliberately part of the poster, not a separate gallery UI.
   Replace a .photo-slot with an <img class="event-photo"> when photos are chosen. */
.memories {
  padding-top: 0;
  padding-bottom: 95px;
}
.memories-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 40px;
  padding-top: 35px;
  border-top: 1.5px solid var(--ink);
}
.memories-heading h2 {
  font-size: clamp(30px, 3.4vw, 50px);
  max-width: 720px;
}
.memories-heading p {
  font-size: 15px;
  max-width: 220px;
  flex-shrink: 0;
}
.photo-collage {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  grid-template-rows: 200px 200px;
  gap: 24px 36px;
  padding: 38px 8px 0;
}
.photo-frame {
  margin: 0;
  padding: 10px 10px 0;
  background: var(--paper);
  border: 1.5px solid var(--ink);
  box-shadow: 4px 5px 0 var(--ink);
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.photo-frame figcaption {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  min-height: 40px;
  padding: 8px 2px;
  font-size: 13px;
  line-height: 1.3;
}
.photo-frame figcaption > span:last-child:not(:first-child) {
  font-size: 11px;
}
.photo-frame-main {
  grid-row: span 2;
  transform: rotate(-2deg);
}
.photo-frame-talk {
  transform: rotate(2deg);
}
.photo-frame-social {
  transform: rotate(-1deg);
}
.photo-slot,
.event-photo {
  width: 100%;
  flex: 1;
  min-height: 0;
  display: block;
  object-fit: cover;
}
.photo-slot {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background-image: repeating-linear-gradient(
    -35deg,
    transparent,
    transparent 34px,
    #1818200b 35px,
    transparent 36px
  );
  overflow: hidden;
}
.photo-slot-violet {
  background-color: var(--violet);
}
.photo-slot-lime {
  background-color: var(--lime);
}
.photo-slot-orange {
  background-color: var(--orange);
}
.photo-slot svg {
  width: 60px;
  height: 48px;
  stroke: var(--ink);
  stroke-width: 2;
  fill: none;
  stroke-linejoin: round;
  stroke-linecap: round;
}
.photo-slot > span:not(.photo-index) {
  font-size: 13px;
  text-align: center;
  padding-inline: 10px;
}
.photo-index {
  position: absolute;
  top: 10px;
  left: 12px;
  font-size: 12px;
}
.photo-frame-main .photo-slot svg {
  width: 95px;
  height: 76px;
}
.photo-frame-break {
  max-width: 310px;
  margin-top: 42px;
  transform: rotate(-4deg);
}
.photo-frame-break .photo-slot,
.photo-frame-break .event-photo {
  aspect-ratio: 4 / 3;
  flex: none;
}
@media (max-width: 900px) {
  .photo-collage {
    grid-template-rows: 170px 170px;
    gap: 20px 26px;
  }
  .memories-heading {
    gap: 20px;
  }
  .memories-heading p {
    max-width: 180px;
  }
  .photo-frame-break figcaption {
    font-size: 12px;
  }
}
@media (max-width: 640px) {
  .memories {
    padding-top: 0;
    padding-bottom: 65px;
  }
  .memories-heading {
    display: block;
    padding-top: 28px;
  }
  .memories-heading h2 {
    font-size: 33px;
  }
  .memories-heading p {
    margin-top: 14px;
    max-width: none;
    font-size: 14px;
  }
  .photo-collage {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 270px 180px;
    gap: 25px 16px;
    padding: 28px 3px 0;
  }
  .photo-frame {
    padding: 7px 7px 0;
    box-shadow: 3px 4px 0 var(--ink);
  }
  .photo-frame-main {
    grid-row: auto;
    grid-column: span 2;
  }
  .photo-frame figcaption {
    font-size: 11px;
    min-height: 37px;
    gap: 5px;
  }
  .photo-frame:not(.photo-frame-main)
    figcaption
    > span:last-child:not(:first-child) {
    display: none;
  }
  .photo-slot > span:not(.photo-index) {
    font-size: 11px;
    padding-inline: 5px;
  }
  .photo-slot svg {
    width: 45px;
    height: 36px;
  }
  .photo-index {
    top: 7px;
    left: 8px;
    font-size: 10px;
  }
  .photo-frame-break {
    max-width: 255px;
    margin: 33px auto 8px;
  }
  .day-intro p {
    max-width: 100%;
  }
}

/* First-view photos flank the logo on desktop and sit beneath it on phones. */
.hero-photo {
  position: absolute;
  width: 24%;
  height: 215px;
  top: 32px;
  z-index: 1;
}
.hero-photo-left {
  left: 1%;
  transform: rotate(-7deg);
}
.hero-photo-right {
  right: 1%;
  transform: rotate(7deg);
}
.hero-photo figcaption {
  min-height: 32px;
  font-size: 12px;
}
.hero-photo .photo-slot svg {
  width: 54px;
  height: 43px;
}
.hero .event-logo {
  position: relative;
  z-index: 2;
}
.hero .hero-note {
  top: auto;
  bottom: 32px;
  left: 4%;
  font-size: clamp(28px, 3vw, 44px);
}
.hero .date-stamp {
  top: auto;
  bottom: 18px;
  right: 6%;
  font-size: 48px;
  z-index: 2;
}
@media (max-width: 1000px) and (min-width: 641px) {
  .hero-photo {
    width: 24%;
    height: 165px;
    top: 22px;
  }
  .hero .event-logo {
    max-width: 46%;
  }
  .hero .hero-note {
    font-size: 29px;
    bottom: 32px;
  }
  .hero .date-stamp {
    font-size: 35px;
    bottom: 21px;
    padding: 11px 16px;
  }
  .hero-photo .photo-slot > span {
    font-size: 11px;
  }
}
@media (max-width: 640px) {
  .hero-middle {
    height: 460px;
    padding-top: 8px;
  }
  .hero .event-logo {
    width: 265px;
    max-width: 76%;
  }
  .hero-photo {
    width: 43%;
    height: 142px;
    top: 230px;
    padding: 6px 6px 0;
  }
  .hero-photo-left {
    left: 1%;
    transform: rotate(-6deg);
  }
  .hero-photo-right {
    right: 1%;
    transform: rotate(6deg);
  }
  .hero-photo figcaption {
    min-height: 28px;
    padding: 6px 1px;
    font-size: 10px;
  }
  .hero-photo .photo-slot svg {
    width: 39px;
    height: 31px;
  }
  .hero-photo .photo-slot {
    gap: 6px;
  }
  .hero .hero-note {
    bottom: 0;
    left: 2%;
    font-size: 27px;
  }
  .hero .date-stamp {
    bottom: 0;
    right: 4%;
    font-size: 30px;
    padding: 10px 14px;
  }
}
@media (max-width: 370px) {
  .hero-middle {
    height: 420px;
  }
  .hero-photo {
    top: 202px;
    height: 130px;
  }
  .hero .hero-note {
    font-size: 25px;
  }
  .hero .date-stamp {
    font-size: 27px;
  }
}

.photo-window {
  position: relative;
  flex: 1;
  width: 100%;
  min-height: 0;
  overflow: hidden;
  background: #d7cebc;
}
.photo-window .event-photo {
  position: absolute;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
}
.photo-window[data-photo-id="photo-07"] .event-photo {
  object-position: 50% 30%;
}
.photo-window[data-photo-id="photo-06"] {
  background: var(--paper);
}
.photo-frame-break .photo-window {
  aspect-ratio: 4 / 3;
  flex: none;
}
.photo-incoming {
  opacity: 0;
  transition: opacity 700ms ease;
}
.photo-incoming.photo-visible {
  opacity: 1;
}
.photo-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 40px;
  padding: 7px 12px;
  border: 1.5px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
  font-size: 12px;
  cursor: pointer;
  white-space: nowrap;
}
.photo-toggle[hidden] {
  display: none;
}
.photo-toggle:hover {
  background: var(--lime);
}
.photo-toggle svg {
  width: 14px;
  height: 14px;
  stroke: currentColor;
  stroke-width: 2;
  fill: none;
}
.photo-toggle .play-symbol {
  display: none;
}
.photo-toggle[data-paused="true"] .play-symbol {
  display: block;
}
.photo-toggle[data-paused="true"] .pause-symbol {
  display: none;
}
.memories-actions {
  display: flex;
  flex-direction: column-reverse;
  align-items: flex-start;
  gap: 12px;
}
.hero-baseline .photo-toggle {
  order: 1;
}
.hero-baseline > a {
  order: 2;
}
@media (max-width: 640px) {
  .hero-baseline {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 12px;
    align-items: center;
  }
  .hero-baseline > p {
    flex-basis: 100%;
  }
  .hero-baseline > a {
    flex: 1;
    font-size: 12px;
    margin: 0;
    gap: 5px;
  }
  .hero-baseline .photo-toggle {
    font-size: 11px;
    padding-inline: 8px;
  }
  .memories-actions {
    margin-top: 14px;
    gap: 10px;
  }
  .memories-actions p {
    margin: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .photo-incoming {
    transition: none;
  }
}

/* The photo bleeds into the section edges; a violet seam and orange spark
   connect it to the poster artwork without framing it as another print. */
.where-when {
  overflow: hidden;
}
.logistics-inner {
  max-width: none;
  padding: 0;
  grid-template-columns: 44% 56%;
  gap: 0;
  align-items: stretch;
}
.venue-details {
  padding: 60px 42px 60px max(6%, calc((100vw - 1210px) / 2));
}
.venue-date {
  margin-bottom: 32px;
}
.venue-date time {
  font-size: clamp(32px, 3.3vw, 49px);
}
.venue-photo-panel {
  position: relative;
  min-width: 0;
  min-height: 510px;
}
.venue-scene {
  position: absolute;
  inset: 0;
  background: var(--violet);
  clip-path: polygon(9% 0, 100% 0, 100% 100%, 0 100%);
}
.venue-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 55%;
  border: 0;
  clip-path: polygon(12% 0, 100% 0, 100% 100%, 3% 100%);
}
.venue-spark {
  position: absolute;
  z-index: 1;
  top: 32px;
  left: 5%;
  width: 92px;
  height: 92px;
  fill: var(--orange);
  stroke: var(--ink);
  stroke-width: 1.5;
  transform: rotate(10deg);
  pointer-events: none;
}
@media (max-width: 1100px) and (min-width: 901px) {
  .venue-details {
    padding-left: 10%;
    padding-right: 20px;
  }
  .venue-date time {
    font-size: 36px;
  }
}
@media (max-width: 900px) {
  .logistics-inner {
    grid-template-columns: 1fr;
  }
  .venue-details {
    padding: 42px 6% 44px;
  }
  .venue-date time {
    font-size: 39px;
  }
  .venue-photo-panel {
    min-height: 0;
    aspect-ratio: 16 / 9;
  }
  .venue-scene {
    clip-path: polygon(0 7%, 100% 0, 100% 100%, 0 100%);
  }
  .venue-image {
    clip-path: polygon(0 11%, 100% 4%, 100% 100%, 0 100%);
    object-position: 50% 58%;
  }
  .venue-spark {
    top: -23px;
    left: auto;
    right: 6%;
    width: 80px;
    height: 80px;
    transform: rotate(-8deg);
  }
}
@media (max-width: 640px) {
  .venue-details {
    padding: 35px 6% 40px;
  }
  .venue-date {
    margin-bottom: 28px;
  }
  .venue-photo-panel {
    aspect-ratio: 3 / 2;
  }
  .venue-spark {
    top: -20px;
    width: 64px;
    height: 64px;
  }
}
@media (max-width: 370px) {
  .venue-date time {
    font-size: 34px;
  }
}

/* On phones the ellipse photo passes behind the reunion note. */
@media (max-width: 640px) {
  .hero .hero-note {
    color: var(--paper);
    -webkit-text-stroke: 0.7px var(--ink);
    paint-order: stroke fill;
    text-shadow: 2px 2px 0 var(--ink);
  }
}

/* Keep all three language names available on narrow phones. */
@media (max-width: 380px) {
  :root {
    scroll-padding-top: 125px;
  }
  .site-header {
    flex-wrap: wrap;
    gap: 0;
  }
  .language-switch {
    flex-basis: 100%;
    justify-content: flex-end;
  }
  :lang(sv) .hero .hero-note {
    font-size: 21px;
  }
}
/* Written-out Swedish dates may wrap instead of crossing the photo seam. */
:lang(sv) .venue-date time {
  white-space: normal;
}
