/* Shared layout constraints for app screens and public pages. Do not hide overflow. */
html {
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-block: calc(var(--wedone-header-height, 90px) + 12px)
    calc(var(--wedone-nav-height, 108px) + 12px);
}
*,
*::before,
*::after {
  box-sizing: inherit;
}
body {
  min-width: 0;
}
img,
video,
canvas,
iframe {
  max-width: 100%;
}
input,
select,
textarea,
button {
  max-width: 100%;
  font: inherit;
}
input:not([type='checkbox']):not([type='radio']),
select,
textarea {
  min-width: 0;
  font-size: 1rem;
}
button,
.btn,
.button {
  white-space: normal;
  overflow-wrap: anywhere;
  min-height: 44px;
  touch-action: manipulation;
}
p,
h1,
h2,
h3,
h4,
li,
dd,
dt,
td,
th,
a,
.muted,
.pill,
.badge,
.bubble,
.eventLink {
  overflow-wrap: anywhere;
}
.pill,
.badge,
.rsvp,
.accessBadge {
  white-space: normal;
}
.main,
.topin,
.page,
.card,
.loginCard,
.modal,
.stat,
.inventoryCard,
.campaignCopy,
.listing,
.qrPage {
  min-width: 0;
}
.grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.cards,
.detailGrid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.planningGrid {
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
}
.stats,
.summaryStrip {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.calendarGrid {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
.grid > *,
.cards > *,
.detailGrid > *,
.planningGrid > *,
.stats > *,
.summaryStrip > *,
.topin > *,
.hero > *,
.pageHead > *,
.eventHead > *,
.sectionHead > *,
.status > *,
.person > *,
.taskRow > *,
.kpiLine > *,
.compose > * {
  min-width: 0;
}
.row {
  grid-template-columns: 2.75rem minmax(0, 1fr) auto;
}
.row > *,
.timeRow > * {
  min-width: 0;
}
.topin,
.pageHead,
.sectionHead,
.eventHead,
.eventCreatedNote,
.kpiLine {
  flex-wrap: wrap;
}
.topin .brand {
  flex-shrink: 1;
}
.topActions {
  margin-left: auto;
  justify-content: flex-end;
}
.topbar {
  padding-left: max(12px, env(safe-area-inset-left));
  padding-right: max(12px, env(safe-area-inset-right));
}
.bottom {
  max-width: 1240px;
  margin-inline: auto;
  padding-left: max(6px, env(safe-area-inset-left));
  padding-right: max(6px, env(safe-area-inset-right));
}
.bottom button {
  min-width: 0;
}
.bottom button span {
  max-width: 100%;
  overflow-wrap: anywhere;
}
.app {
  padding-bottom: calc(var(--wedone-nav-height, 108px) + 20px);
}
.toast {
  bottom: calc(var(--wedone-nav-height, 108px) + 14px);
  overflow-wrap: anywhere;
}
.hero .btn,
.actions > .btn,
.quickLinks > .btn {
  flex-shrink: 1;
}
.field input,
.field select,
.field textarea {
  max-width: 100%;
}
.searchTools input,
.searchTools select,
.guestTools input,
.guestTools select {
  min-width: 0;
  flex: 1 1 10rem;
}
.compose {
  flex-wrap: wrap;
}
.compose input {
  flex: 1 1 10rem;
  width: auto;
  min-width: 0;
}
.compose button {
  flex: 0 1 auto;
}
.chatBox {
  height: clamp(12rem, 45dvh, 24rem);
}
.bubble {
  max-width: 90%;
}
.eventWorkspaceNav {
  max-width: 100%;
  overscroll-behavior-inline: contain;
}
.eventWorkspaceNav a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
.inventoryGrid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr));
}
.inventoryToolbar label {
  min-width: 0;
  max-width: 100%;
  flex: 1 1 13rem;
}
.inventoryToolbar select {
  min-width: 0;
  width: 100%;
}
.inventoryNumbers {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.inventoryNumbers span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.inventoryActions > .btn {
  flex: 1 1 8rem;
}
.wdFilters {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.6fr) auto;
}
.wdFilters > * {
  min-width: 0;
}
/* Keep every data column available in a bounded, keyboard-scrollable region. */
.tableScroll {
  width: 100%;
  max-width: 100%;
  overflow: auto;
  overscroll-behavior-inline: contain;
  margin-block: 12px;
}
.tableScroll:focus-visible {
  outline: 3px solid #2563b8;
  outline-offset: 3px;
}
.guestTable th:nth-child(3),
.guestTable td:nth-child(3) {
  display: table-cell;
}
.tableScroll .guestTable {
  min-width: 42.5rem;
}
.tableScroll .estimateTable {
  min-width: 0;
  table-layout: fixed;
  width: 100%;
}
.estimateTable th:first-child {
  width: 50%;
}
.estimateTable td,
.estimateTable th {
  padding: 10px 6px;
  overflow-wrap: anywhere;
}
.modalBack {
  padding: max(12px, env(safe-area-inset-top))
    max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom))
    max(12px, env(safe-area-inset-left));
  height: var(--wedone-viewport-height, 100dvh);
  overflow: auto;
  overscroll-behavior: contain;
}
.modal {
  width: min(560px, 100%);
  max-height: calc(
    var(--wedone-viewport-height, 100dvh) - 32px - env(safe-area-inset-top) -
      env(safe-area-inset-bottom)
  );
  margin: 0;
  overflow: auto;
  min-width: 0;
}
.modalHeader h3 {
  min-width: 0;
}
.modalHeader button {
  flex-shrink: 0;
}
pre,
.codeish {
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
/* Public campaign, directory, legal and QR pages. */
.siteHead {
  flex-wrap: wrap;
}
.siteHead nav {
  min-width: 0;
}
.siteHead nav a,
footer a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.campaignHero {
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
}
.stepGrid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.stateGrid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.listings {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.stateGrid > a,
.steps article,
.listingActions {
  min-width: 0;
}
.listingActions,
.directorySwitch,
.qrActions {
  flex-wrap: wrap;
}
.qrPage {
  padding-inline: 16px;
}
.qrLink {
  max-width: 100%;
}
.qrLink img {
  width: min(65vw, 350px);
  height: auto;
}
footer {
  min-width: 0;
}
@media (max-width: 64rem) {
  .cards,
  .detailGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .loginWrap {
    grid-template-columns: minmax(0, 1fr);
    justify-items: center;
  }
  .loginCard {
    max-width: 470px;
  }
  .weddingWelcome {
    max-width: 700px;
    grid-template-rows: 220px 150px;
  }
  .campaignCopy {
    padding: 32px;
  }
}
@media (max-width: 50rem) {
  .grid,
  .planningGrid,
  .campaignHero,
  .listings {
    grid-template-columns: minmax(0, 1fr);
  }
  .campaignHero img {
    min-height: 0;
    height: 260px;
    max-height: 260px;
    grid-row: 1;
  }
  .stats,
  .summaryStrip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .stateGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .stepGrid {
    grid-template-columns: minmax(0, 1fr);
  }
  .weddingWelcome {
    grid-template-columns: 2fr 1fr 1fr;
    grid-template-rows: 150px;
  }
  .weddingWelcome .weddingWelcomeMain {
    grid-column: auto;
  }
}
@media (max-width: 45rem) {
  .wdFilters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .wdFilters .field:nth-child(3),
  .wdFilters button {
    grid-column: 1/-1;
  }
  .wdDirectoryGrid {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 38rem) {
  .cards,
  .detailGrid {
    grid-template-columns: minmax(0, 1fr);
  }
  .modal {
    padding: 16px;
  }
  .actions > .btn {
    flex: 1 1 8rem;
  }
  .row {
    grid-template-columns: 2.5rem minmax(0, 1fr);
  }
  .row > .pill {
    grid-column: 2;
  }
  .calendarHead h3 {
    font-size: 1.1rem;
  }
  .calendarHead .btn {
    padding: 8px;
    min-width: 36px;
  }
  .day {
    padding: 4px 2px;
  }
  .day small {
    font-size: 0.75rem;
  }
  .calendarGrid .dow {
    font-size: 0.75rem;
  }
  .timeRow {
    grid-template-columns: 4.5rem minmax(0, 1fr);
  }
  .page h2 {
    font-size: 1.75rem;
  }
  .topActions .btn {
    font-size: 0.875rem;
  }
  .campaignHero h1 {
    font-size: clamp(2rem, 8vw, 2.5rem);
  }
  .campaignCopy {
    padding: 26px 20px;
  }
  .inventoryNumbers span {
    padding: 7px;
  }
  .inventoryNumbers b {
    font-size: 1.125rem;
  }
}
@media (max-width: 23rem) {
  .stateGrid,
  .wdFilters,
  .stats,
  .summaryStrip {
    grid-template-columns: minmax(0, 1fr);
  }
  .wdFilters > * {
    grid-column: auto !important;
  }
  .loginWrap {
    padding: 12px;
  }
  .loginCard {
    padding: 20px;
  }
  .topin {
    gap: 6px;
  }
  .topActions {
    gap: 4px;
  }
  .topActions .btn {
    padding: 8px;
  }
  .wedoneHeaderLogo {
    width: 90px;
  }
  .bottom {
    gap: 2px;
  }
  .bottom button {
    padding-inline: 1px;
  }
  .bottom button span {
    font-size: 0.75rem;
  }
  .siteHead {
    padding-inline: 12px;
  }
  .qrPage {
    padding-inline: 16px;
  }
}
@media (max-height: 32rem) and (orientation: landscape) {
  .topbar {
    position: static;
  }
  .modalBack {
    align-items: start;
  }
  .bottom button {
    min-height: 52px;
    gap: 2px;
  }
  .bottom .menuIcon {
    width: 24px;
    height: 24px;
  }
  .loginWrap {
    align-content: start;
  }
}
@media print {
  .tableScroll {
    overflow: visible;
  }
  .tableScroll .guestTable {
    min-width: 0;
    width: 100%;
  }
  .modalBack.show {
    height: auto;
    overflow: visible;
    padding: 0;
  }
  .modal {
    max-height: none;
    overflow: visible;
    width: 100%;
  }
}

/* Keep the exit visible above long forms, documents and the on-screen keyboard. */
.modalNavigation {
  position: sticky;
  top: -24px;
  z-index: 5;
  background: white;
  padding: 12px 0;
  margin: -12px 0 16px;
  border-bottom: 1px solid var(--line);
}
.modalNavigation .btn {
  min-height: 44px;
  min-width: 80px;
  font-size: 1rem;
}
.filePreview {
  display: block;
  width: 100%;
  height: 55vh;
  height: 55dvh;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-top: 16px;
}
.filePreviewImage {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 16px auto;
}
@media (max-width: 38rem) {
  .modalNavigation {
    top: -16px;
  }
}
@media print {
  .modalNavigation {
    display: none !important;
  }
}
