/* Memory Lane sales demo — invitation preview viewport/layout correction.
   Keeps the full animated invitation visible without forcing the modal taller
   than the visitor's browser window. */

.ml-best-modal {
  padding: 10px !important;
}

.ml-best-dialog {
  width: min(1220px, 100%) !important;
  height: min(880px, calc(100dvh - 20px)) !important;
  max-height: calc(100dvh - 20px) !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}

.ml-best-bar {
  position: relative !important;
  top: auto !important;
  flex: 0 0 auto !important;
  padding: 12px 18px !important;
}

.ml-best-bar h2 {
  margin-top: 3px !important;
}

.ml-best-body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(250px, 280px) !important;
  gap: 16px !important;
  align-items: stretch !important;
  padding: 14px !important;
  overflow: hidden !important;
}

.ml-best-stage {
  min-height: 0 !important;
  height: 100% !important;
  display: flex !important;
  overflow: hidden !important;
}

.ml-best-side {
  align-self: stretch !important;
  max-height: 100% !important;
  overflow: auto !important;
  padding: 18px !important;
}

.ml-best-side h3 {
  margin-top: 13px !important;
  font-size: 23px !important;
}

.ml-best-side > p {
  margin-top: 9px !important;
  font-size: 13px !important;
  line-height: 1.55 !important;
}

.ml-best-points {
  gap: 8px !important;
  margin-top: 15px !important;
}

.ml-best-note {
  margin-top: 15px !important;
  padding: 11px 12px !important;
}

/* Invitation preview itself */
.ml-invite-browser {
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}

.ml-invite-controls {
  flex: 0 0 auto !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 290px) !important;
  gap: 10px !important;
  align-items: end !important;
  padding: 10px 14px !important;
}

.ml-invite-control-label {
  margin-bottom: 5px !important;
  font-size: 9px !important;
}

.ml-invite-featured {
  display: flex !important;
  flex-wrap: nowrap !important;
  gap: 6px !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  padding: 0 0 2px !important;
  scrollbar-width: thin;
  overscroll-behavior-inline: contain;
}

.ml-invite-featured button {
  flex: 0 0 auto !important;
  min-height: 36px !important;
  padding: 0 12px !important;
  border-radius: 12px !important;
  font-size: 11px !important;
  white-space: nowrap !important;
}

.ml-invite-select {
  min-height: 38px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
}

.ml-best-stage iframe.ml-invite-frame,
.ml-invite-frame {
  flex: 1 1 0 !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  display: block !important;
  border: 0 !important;
}

/* Laptop widths should still retain the useful side-by-side preview. */
@media (max-width: 1050px) and (min-width: 821px) {
  .ml-best-body {
    grid-template-columns: minmax(0, 1fr) 250px !important;
  }

  .ml-best-side {
    order: initial !important;
  }

  .ml-invite-controls {
    grid-template-columns: minmax(0, 1fr) 230px !important;
  }
}

/* Short laptop screens need every vertical pixel for the invitation. */
@media (max-height: 820px) and (min-width: 821px) {
  .ml-best-dialog {
    height: calc(100dvh - 12px) !important;
    max-height: calc(100dvh - 12px) !important;
  }

  .ml-best-modal {
    padding: 6px !important;
  }

  .ml-best-bar {
    padding: 9px 16px !important;
  }

  .ml-best-bar p {
    font-size: 8px !important;
  }

  .ml-best-bar h2 {
    font-size: 19px !important;
  }

  .ml-best-close {
    min-height: 36px !important;
  }

  .ml-best-body {
    gap: 12px !important;
    padding: 10px !important;
  }

  .ml-invite-controls {
    padding: 8px 11px !important;
  }

  .ml-best-side {
    padding: 15px !important;
  }
}

/* Tablet/mobile: stack cleanly and allow the modal to scroll rather than crop. */
@media (max-width: 820px) {
  .ml-best-dialog {
    height: auto !important;
    max-height: calc(100dvh - 12px) !important;
    overflow: auto !important;
  }

  .ml-best-body {
    display: flex !important;
    flex-direction: column !important;
    overflow: visible !important;
  }

  .ml-best-side {
    order: -1 !important;
    max-height: none !important;
    overflow: visible !important;
  }

  .ml-best-stage {
    height: min(680px, 72dvh) !important;
    min-height: 520px !important;
  }

  .ml-invite-controls {
    grid-template-columns: 1fr !important;
  }

  .ml-invite-featured {
    display: flex !important;
    flex-wrap: nowrap !important;
  }
}

@media (max-width: 520px) {
  .ml-best-side {
    padding: 14px !important;
  }

  .ml-best-side > p,
  .ml-best-note {
    font-size: 11px !important;
  }

  .ml-best-stage {
    min-height: 500px !important;
    height: 68dvh !important;
  }
}
