/* WeInviteYou — the few rules every self-contained design shares.

   Nothing here styles a design. It only makes the integration layer work the same way
   in the builder and on the published site:
     - a section the couple has switched off stays in the document, hidden
     - an optional line with nothing in it (a time, a deadline) takes no space
     - sections added to a design reveal on scroll; each design's ext.css sets the
       distance, duration and easing so the motion matches its own
*/

[data-wiy-off],
[data-wiy-empty] {
  display: none !important;
}

.wiy-js [data-wiy-reveal] {
  opacity: 0;
  transform: translate3d(0, var(--wiy-rise, 22px), 0);
  transition:
    opacity var(--wiy-rise-d, 0.9s) var(--wiy-ease, cubic-bezier(0.22, 0.61, 0.24, 1)) var(--wiy-delay, 0s),
    transform var(--wiy-rise-d, 0.9s) var(--wiy-ease, cubic-bezier(0.22, 0.61, 0.24, 1)) var(--wiy-delay, 0s);
}

.wiy-js [data-wiy-reveal].is-in {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .wiy-js [data-wiy-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* The spam trap every RSVP form carries: present for bots, absent for people. */
.wiy-hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
}

/* Wedding data the couple wrote must wrap inside the artwork it was placed in, never
   widen the page. bridge.js scales a heading first, so an ordinary name still reads at
   the size the design drew it at; this is only the last resort for a word with no
   break in it. Nothing here changes a design's own type, colour, spacing or layout. */
[data-bind], [data-bind] *, [data-wiy-fit] {
  overflow-wrap: anywhere;
  min-width: 0;
}
