/* Original Fel & Ink artwork from Liz Will v8, page 3. */
.stationery-crest, .footer-crest {
  width: 112px;
  height: auto;
  margin: 0 auto 24px;
  mix-blend-mode: multiply;
}
.footer-crest { width: 88px; margin: 20px auto; }
.stationery-seal { display: block; width: 64px; height: auto; margin: 0 auto 28px; mix-blend-mode: multiply; }

.crest-bloom { display: block; padding: 0; border: 0; background: transparent; appearance: none; -webkit-appearance: none; cursor: pointer; }
.crest-bloom svg { display: block; width: 100%; height: auto; overflow: visible; }
.crest-bloom .bloom-petal, .crest-bloom .bloom-small-petal {
  transform: scale(1);
  transition: transform 900ms cubic-bezier(.22, .7, .2, 1);
  transition-delay: var(--petal-delay);
}
.crest-bloom.is-blooming .bloom-petal { transform: scale(1.4, 1.62); }
.crest-bloom.is-blooming .bloom-small-petal { transform: scale(1.53, 1.88); }
.crest-bloom .bloom-monogram { transform: translateY(0) scale(1); transition: transform 1000ms cubic-bezier(.22, .7, .2, 1) 100ms; }
.crest-bloom.is-blooming .bloom-monogram { transform: translateY(-16px) scale(1.12); }
.page-header .sub { max-width: 56ch; margin-left: auto; margin-right: auto; }
.site-footer { padding-top: 36px; padding-bottom: max(32px, env(safe-area-inset-bottom)); }
.page { width: 100%; background: var(--bg); }
.site-footer { background: var(--bg); }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 110px; }
button, a, summary { -webkit-tap-highlight-color: rgba(241,163,188,.25); }
:focus-visible { outline: 2px solid var(--deep-orchid); outline-offset: 5px; }
.btn { min-height: 44px; white-space: normal; text-align: center; }
.page :is(input, select, textarea) { max-width: 100%; }
.page :is(.sg-body, .event-body, .events, .hero-copy, .map-detail) { min-width: 0; overflow-wrap: break-word; }
.page .map-toggle { min-height: 44px; font-size: 11px; white-space: normal; padding: 8px 6px; }
.page .map-toggle:focus-visible { outline: 2px solid var(--deep-orchid); outline-offset: 3px; }
.page .map-toggles { gap: 8px; grid-template-columns: repeat(auto-fit, minmax(80px, 1fr)); }
.page .map-toggles--single-row { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
.page-header .sub.travel-intro { max-width: 68ch; }
.page .map-note { letter-spacing: .1em; line-height: 1.7; }
/* Fine double rules and rounded stationery corners, without adding visual noise. */
.page .rsvp-soon { border: 1px solid var(--rule); outline: 1px solid var(--rule); outline-offset: -7px; border-radius: 48px 48px 16px 16px; }
.page .still-q { border-radius: 48px 48px 16px 16px; }
@media (max-width: 1100px) {
  .site-header-inner { padding: 16px 24px; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; }
  .site-nav { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--bg); border-bottom: 1px solid var(--rule); flex-direction: column; align-items: stretch; gap: 0; padding: 8px 24px max(20px, env(safe-area-inset-bottom)); max-height: calc(100svh - 90px); overflow-y: auto; overscroll-behavior: contain; }
  .site-nav.open { display: flex; }
  .site-nav a { min-height: 48px; padding: 14px 8px; border-bottom: 1px solid var(--rule); text-align: left; }
  .site-nav a[aria-current="page"]::after { display: none; }
  .nav-toggle { display: inline-flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px; padding: 10px; background: none; border: 1px solid var(--rule); border-radius: 50%; cursor: pointer; }
  .nav-toggle span { width: 100%; height: 1.5px; background: var(--deep-orchid); border-radius: 2px; }
}
@media (max-width: 600px) {
  .page { padding: 0 max(20px, env(safe-area-inset-left)) 64px max(20px, env(safe-area-inset-right)); }
  .site-header-inner { padding-left: max(20px, env(safe-area-inset-left)); padding-right: max(20px, env(safe-area-inset-right)); }
  .monogram .sub { font-size: 8px; letter-spacing: .12em; line-height: 1.5; }
  .monogram .sub::before { display: none; }
  .page :is(.page-header, .rsvp-header) { padding-top: 36px; padding-bottom: 32px; margin-bottom: 24px; }
  .page .page-header h1 { font-size: clamp(40px, 11vw, 60px); overflow-wrap: break-word; }
  .stationery-crest { width: 90px; margin-bottom: 20px; }
  .page .event { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 24px 0; }
  .page .event-time { white-space: normal; }
  .page .event-tag { grid-column: 1; justify-self: start; }
  .page .day { padding: 36px 0; }
  .page .day-label { text-align: center; }
  .page .day-art { margin: 20px auto 0; }
  .page .chapter-head { gap: 12px; }
  .page .chapter h2 { font-size: 32px; }
  .page .chapter .pullquote { padding: 0 8px; font-size: 24px; }
  .page .proposal-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; max-width: 340px; }
  .page .memory-grid figcaption { letter-spacing: .05em; }
  .page .q summary { grid-template-columns: minmax(0, 1fr) 28px; gap: 16px; font-size: 21px; }
  .page .still-q { padding: 32px 20px; }
  .page .rsvp-header .deadline { letter-spacing: .12em; font-size: 10px; padding: 12px 14px; }
  .page .field :is(input, textarea, select) { font-size: 16px; }
  .page .controls { flex-wrap: wrap; }
  .page .spot p { font-size: 15px; }
  .page .spot.fave::before { position: static; align-self: flex-end; margin-bottom: 8px; }
  .site-footer { padding-left: 20px; padding-right: 20px; }
  .site-footer .foot-meta { font-size: 9px; letter-spacing: .14em; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .page img:hover, .page figure:hover img { transform: none; }
  .crest-bloom.is-blooming .bloom-petal,
  .crest-bloom.is-blooming .bloom-small-petal,
  .crest-bloom.is-blooming .bloom-monogram { transform: none !important; }
}
